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

Diagramme (source : [Domochip/sms2mqtt] (https://github.com/Domochip/sms2mqtt))

Schéma infra

Dans mon cas voila comment ca se présente :

graph TB C[Home Assistant] --> A[Raspberry Pi 4] E[Docker SMS2MQTT] --> D[Autre serveur] B[MQTT Broker] --> E B --> C

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