Envoyer des SMS avec Home Assistant
Introduction
Dans cet article, nous allons explorer comment envoyer des SMS depuis Home Assistant en utilisant SMS2MQTT. Nous passerons en revue l’installation de SMS2MQTT, son intégration à Home Assistant et la configuration de l’automatisation pour envoyer des SMS en cas d’événements spécifiques.
Présentation de SMS2MQTT
SMS2MQTT est un projet open-source créé par Domochip qui permet d’envoyer et de recevoir des SMS via un modem GSM et MQTT. Il peut être intégré à Home Assistant pour envoyer des notifications par SMS en cas d’événements spécifiques.
Le projet est disponible sur GitHub à l’adresse suivante : https://github.com/Domochip/sms2mqtt
Pourquoi opter pour les SMS ?
Les SMS présentent des atouts comparés aux services de messagerie tels que Telegram, notamment en cas de coupure d’électricité ou de connexion internet.
Ils offrent une indépendance vis-à-vis d’internet, assurant des notifications même en cas de problème réseau. De plus, ils sont compatibles avec tous les téléphones mobiles, sans nécessiter d’application pour la réception.
En somme, les SMS complètent parfaitement nos solutions de notification. Pour ma part, ils ne remplacent pas les notifications Telegram, mais servent plutôt à recevoir des alertes importantes en cas de problèmes électriques ou de réseau.
Installation de SMS2MQTT
Pour installer SMS2MQTT, suivez les étapes décrites dans le fichier README du projet sur GitHub (tout est bien expliqué).
Prérequis
Vous avez besoin d’un dongle GSM compatible avec Gammu : https://wammu.eu/phones/
Architecture
Schéma fonctionel
(source : [Domochip/sms2mqtt] (https://github.com/Domochip/sms2mqtt))
Schéma infra
Dans mon cas voila comment ca se présente :
Dans ce schéma, le Raspberry Pi 4 (A) héberge à la fois le MQTT Broker (B) et Home Assistant (C).
Le service SMS2MQTT (E) est installé dans un conteneur Docker sur un autre serveur (D).
Le service SMS2MQTT envoie des données au MQTT Broker, qui les transfère ensuite à Home Assistant.
J’ai choisis d’utiliser Docker-Compose :
version: '3'
services:
sms2mqtt:
container_name: sms2mqtt
image: domochip/sms2mqtt
devices:
- /dev/serial/by-id/usb-HUAWEI_HUAWEI_Mobile-if00-port0:/dev/mobile
environment:
- PIN=1234
- HOST=10.0.0.2
- PORT=1883
- PREFIX=sms2mqtt
- CLIENTID=sms2mqttclid
- USER=mqtt_username
- PASSWORD=mqtt_password
restart: always
Assurez-vous de spécifier les informations correctes pour votre modem GSM, votre carte SIM et votre broker MQTT.
Intégration dans Home Assistant
Une fois SMS2MQTT configuré, vous pouvez l’utiliser depuis Home Assistant en utilisant le protocole MQTT.
Voici un exemple d’automatisation qui envoie un SMS lorsqu’un événement spécifique se produit :
alias: edf_ko
description: ""
trigger:
- platform: state
entity_id:
- binary_sensor.edf
from: "off"
to: "on"
action:
- service: mqtt.publish
data_template:
topic: sms2mqtt/send
payload_template: >
{% set payload = {"number":"+33600000000", "text":"❌ Power outage⚡"} %} {{ payload|to_json }}
Dans cet exemple, nous avons une automatisation qui envoie un SMS lorsque le capteur binary_sensor.edf passe de l’état “off” à “on”. L’action de l’automatisation utilise le service mqtt.publish pour envoyer un message MQTT au topic sms2mqtt/send.
Le payload du message MQTT contient le numéro de téléphone et le texte du SMS à envoyer.
–> N’oubliez pas de remplacer +33600000000 par le numéro de téléphone auquel vous souhaitez envoyer le SMS.
Debug
ADD 12/09/2023
Dans mon cas, j’ai rencontré un problème avec SMS2MQTT après quelques semaines d’utilisation, l’erreur était :
message = {"datetime":str(sms[0]['DateTime']), "number":sms[0]['Number'], "text":decodedsms['Entries'][0]['Buffer']}
J’ai découvert que le problème était dû à un SMS reçu problématique.
Voici la solution que j’ai trouvée pour résoudre le problème :
Lister les dossiers SMS disponibles avec la commande gammu getsmsfolders. Supprimer tous les SMS du dossier “Inbox” de la mémoire SIM avec la commande
gammu deleteallsms 1.
Supprimer tous les SMS du dossier “Outbox” de la mémoire SIM avec la commande
gammu deleteallsms 2.
Après avoir suivi ces étapes, le problème a été résolu.
En cas de problème, n’hésitez pas à consulter les issues sur le dépôt GitHub de SMS2MQTT et à poser des questions à la communauté si nécessaire.
Conclusion
En résumé, SMS2MQTT est un excellent outil pour intégrer l’envoi et la réception de SMS à Home Assistant et d’autre solution qui utilise MQTT. Il permet de créer des automatisations personnalisées pour envoyer des notifications par SMS en cas d’événements spécifiques, améliorant ainsi la réactivité et la personnalisation de votre système domotique.
Si vous voulez plus d’information sur l’infrastructure vous pouvez voir mon repo à ce sujet : https://github.com/ravindrajob/InfraAtHome