Dans cet article, je vous propose une solution relativement économique, basée sur un module à base d’ESP32-SIM800L et ESPHome, pour pouvoir envoyer et recevoir des SMS avec Home Assistant, déclencher des actions sur réception d’un SMS et même lancer un appel sur le téléphone, ce sans connexion Internet.
Salut,
Super tuto, merci pour le partage, je vais certainement m’en inspirer vous remplacer mon système d’alerte sms actuel qui me pose régulièrement des problèmes.
As tu tenter de le connecter en USB directement à home assistant pour ce passer du WIFI ?
Si ça fonctionne, ça permettrait de ce passer du WIFI !
Quelle version as tu sélectionné ?
- CP2104 V1.4 Version
- CH9102 V1.4 Version
- CH340K V1.5 Version
Je serai bien tenté de tester un module USB comme celui ci-dessous afin de le raccorder directement à home assistant et ainsi éviter les éventuels déconnexions wifi mais malheureusement le module est un SIM 800C et non L, je doute que ce soit similaire. Sans compter les 2.5 A en crête qui me freine un peu si je souhaite utiliser une rallonge USB pour l’éloigner de mon coffret électrique.
A la base je pensais partir sur une carte avec RJ45 + SIM800 mais j’en ai une actuellement une qui me pose quelque souci notamment en cas de reboot, si le réseau est HS alors elle boot pas, ou bien elle est souvent déconnecté de HA et est pourtant bien en ligne dans l’addon et est accessible via le webserveur, bref pas top.
Merci
Merci
Bonne question sur la puce. La mienne est la ch9102f, achetée en fait sur banggood, mais j’ignore les différences entre les différentes puces.
Du coup, j’ai rajouté le lien banggood dans mon post en plus de Aliexpress.
En tout cas, le système est fiable et je n’ai pas de déconnexions alors que c’est en service depuis plusieurs semaines. Aucun pb au reboot. Avoir une carte avec un ESP32 et le module SIM800L, et l’utilisation de ESPHome semble robuste.
Non je n’ai pas essayé connecté à HA en USB. Même connecté je pensais que la communication se faisait toujours en wifi et que seule le flashage se faisait en USB (?). Le point est intéressant en tout cas et je suis preneur de retours d’expérience.
J’ai rajouté dans mon post ma fonction de test : on envoie Test et le système répond Test ok. Cela permet de tester que tout fonctionne bien (avant de partir en congés par exemple).
Merci pour le retour, de ce que j’ai pu lire la différence entre les différentes puce ce situe au niveau de la vitesse de communication interne.
Dans le cas présent je ne pense pas qu’il y ai d’incidences, on est pas à quelques micro secondes
Concernant la connexion USB, d’après mes test avec un ESP32 DEV KIT, la communication USB est fonctionnel en direct avec HA et l’addon, et elle prend bien le dessus sur le WIFI.
A testé avec cette carte mais il n’y a pas de raison que ça ne fonctionne pas.
Bon je viens de faire un test simple : flashé le module avec un mauvais mot de passe wifi puis branché le module en USB sur mon odroid qui héberge HA. Il n’ai plus reconnu. Dans les logs il recherche l’adresse IP du module et ne le trouve pas, et met connexion failed. A creuser…
Arf, merci pour le test. Du coup j’ai un doute sur ce que j’ai dit, je vais refaire des tests avec mon esp dev en USB. A moins que je m’emmêle, ce qui est sûr c’est que j’avais réussi à le flasher en USB directement avec l’Addon de HA.
Oui effectivement, on peut flasher et lire les logs. Quand on accède aux log, il demande wireless ou via un des ports USB du host. Par contre, l’API ne semble pas accessible.
ESPHOME n’est-il pas par « construction » seulement en wifi (voire ethernet avec certains modules)?
Il faudrait faire du code arduino pour être en USB. Une autre paire de manche
J’ai la même compréhension : sauf erreur de ma part, ESPHome établi un dialogue avec une API native spécifique à eux implémentée sur le ESP32 lors du flashage et qui parle sur le port 6053 et l’adresse IP allouée (protocole réseau).
Via USB, on a une liaison série à 115.200 bauds sur le port COM ouvert et qui ne permet que de lire les logs et flasher les binaires. Effectivement, avec une implémentation traditionnelle en C avec arduino IDE par exemple, il est tout à fait possible de faire transiter des ordres via USB avec une communication duplex en série. Mais c’est un autre projet…
Merci pour vos précisions, désolé d’avoir induit en erreur…
Mais non, c’était pertinent au contraire. Le forum est justement la pour se poser des questions, partager et tous avancer. @golfvert a réagit et j’ai aussi testé et creusé, puis partagé ma compréhension
ouff . Sinon, pour une solution USB j’ai trouvé ça , mais ce n’est pas top d’après les retour sur le forum anglais
Du coup, @Argonaute , je pense tester prochainement ton tuto, reste à me décider si je prend la carte complète ou bien que le module SIM800L que j’adjoint sur un ESP RJ45, à méditer car ce dernier me pose quelques souci parfois
Merci @Argonaute pour ce tuto que je vais suivre à la lettre dans les prochains jours. La carte est commandé et j’ai hâte de pouvoir tester ça. Ca me fera un premier pas dans ESPHome en plus
ca m’intéresse aussi j’attends vos retour et les pros des tuto video
Bonjour,
Petit retour après réception et installation du module LILYGO TTGO t-call ESP32 SIM800L (CH9102 V1.4).
Installation :
Installation d’ESPHOME sans problème particulier via ESPFlasher pour ma part.
Par contre j’ai du supprimer les textos et les contacts de la carte SIM (Opérateur Free) sinon la connexion au réseau mobile n’aboutissait pas (j’ai trouvé l’astuce sur le forum anglais de HA).
Amélioration proposé concernant le boitier :
- Le module ESP pouvant recevoir une batterie, il serait intéressant de l’adapter (plus profond), dans mon cas je suis sur onduleur donc pas besoins mais ça peut servir à d’autre
Le code :
Petit ajout pour récupérer :
- La puissance du signal WIFI
- La durée de disponibilité de l’ESP (Uptime)
sensor:
# Puissance du Signal WIFI de l'ESP
- platform: wifi_signal
name: "ESP SMS (Puissance WIFI)"
update_interval: 60s
id: esp_sms_puissance_wifi
# Durée de disponibilité de l'ESP
- platform: uptime
name: "ESP SMS (Uptime en seconde)"
id: uptime_en_seconde
# Heure
time:
- platform: homeassistant
id: homeassistant_time
text_sensor:
- platform: template
name: "Esp SMS (Uptime)"
lambda: |-
int seconds = (id(uptime_en_seconde).state);
int days = seconds / (24 * 3600);
seconds = seconds % (24 * 3600);
int hours = seconds / 3600;
seconds = seconds % 3600;
int minutes = seconds / 60;
seconds = seconds % 60;
return { (String(days) +" Jours, " + String(hours) +" h, " + String(minutes) +" m, "+ String(seconds) +" s").c_str() };
icon: mdi:clock-start
update_interval: 113s
Automatismes :
Deux automatismes pour être informé du statut de la connexion de l’ESP à HA :
- Réception d’une notification lorsque l’ESP est hors ligne :
alias: SMS - ESP SMS Hors Ligne
description: ''
trigger:
- platform: state
entity_id: binary_sensor.esp_sms_statut
to: 'off'
condition: []
action:
- service: notify.telegram
data:
message: |
ESP SMS Hors Ligne depuis {{ now().strftime("%H:%M") }}.
Alerte SMS HS !
mode: single
- Réception d’une notification + un SMS lorsque l’ESP est en ligne :
(Cela permet de s’assurer que les SMS passent bien après la reconnexion)
alias: SMS - ESP SMS En Ligne
description: ''
trigger:
- platform: state
entity_id: binary_sensor.esp_sms_statut
to: 'on'
condition: []
action:
- service: notify.telegram
data:
message: |
ESP SMS en Ligne depuis {{ now().strftime("%H:%M") }}.
L'Alerte SMS sera OK après réception du SMS : Alerte SMS OK
- delay:
hours: 0
minutes: 1
seconds: 0
milliseconds: 0
- service: esphome.esp_sms_send_sms
data:
recipient: '0611111111'
message: Alerte SMS OK
- delay:
hours: 0
minutes: 0
seconds: 3
milliseconds: 0
- service: esphome.esp_sms_send_sms
data:
recipient: '0622222222'
message: Alerte SMS OK
mode: single
J’ai mis un délai de 1 minute avant l’envoi du premier SMS ce qui permet au module de se connecter au réseau téléphonique, sinon ça passe pas.
J’ai mis un délai de 3 secondes entre l’envoi des SMS car sinon le premier SMS ne passe pas.
Points négatifs concernant ce module :
-
Pas possible de connaitre le niveau du signal mobile
( A première vue ce serait réalisable (j’ai vu passer quelques truc pour Arduino) mais dans notre cas le composant SIM800L de ESPHOME serait à modifier ;( -
Pas possible se savoir si on est bien connecté au réseau téléphonique
(Des SMS peuvent se perdre sans savoir pourquoi) -
Les appels ne servent pas à grand chose en l’état (pas de levé de doute possible).
Par contre, j’ai vu des montages avec un micro et un Haut parleur, peut être que c’est seulement ce qu’il manque pour que les communication fonctionnent, à tester
- LilyGo-T-Call-SIM800/doc/SIM800C_AXP192.MD at master · Xinyuan-LilyGO/LilyGo-T-Call-SIM800 · GitHub
- GitHub - Xinyuan-LilyGO/LilyGo-T-Call-SIM800
Ici, ça parle de commande AT afin de faire d’activer le haut parleur et le Micro
Le boitier :
Concernant le modèle 3D du boitier, il est tip top, merci
Pour ma part j’ai eu juste un léger décalage de l’entraxe de 1/2 mm entre les vis les plus opposés mais c’est passé en insistant un peu
Ci-dessous deux petites photos du boitier imprimé :
Bon bidouillage !!!
Et merci encore @Argonaute
Excellent et je suis très heureux de savoir que cela a pu aider. Merci également pour les propositions d’améliorations. C’est très motivant d’avoir un tel retour
Effectivement il est dommage de ne pas pouvoir avoir la force du signal gsm et valider la bonne connexion. Seul la lecture du log ESPHome en mode debug ou l’envoie d’un sms de test avec retour permettent de vérifier que le signal GSM est bon.
Je n’ai moi pas ce pb de délai par contre.
Très intéressant de pouvoir recevoir des appels et c’est à tester. J’utilise moi le fait d’appeler et faire sonner le téléphone pour des alertes, avec un sms pour connaitre connaitre le sujet. La possibilité d’envoyer un message vocal est dans les évolutions prévues de l’intégration.
Pour le boitier, j’ai bien noté l’écart et vérifierai. Il faudrait aussi avoir un système de clip du couvercle. Pour info, j’ai dessiné le couvercle pour pouvoir y coller l’antenne et je ne sais pas si tu l’as utilisé.
Quel opérateur a tu pris ? J’avais SymaMobile mais c’était une catastrophe (envoie lent des sms et services down 2 fois en 4 semaines). J’ai du passer chez Free et plus de pb.
De rien, c’est normal de faire un retour, je me serai pas lancé sur ce type de produit sans ce post.
Oui oui, j’ai bien collé l’antenne à l’emplacement prévu, j’en avait déduis que c’était fait pour
Pour le délai, j’envoi deux textos a deux destinataires différents, peut être c’est pour cela que ça.
Sinon, je suis chez Free (2€).
PS: Bonne nouvelle, je viens de tester de raccorder un micro sur les bornes mic + et mic - et bingo !!!
La voix fonctionne donc, je peux entendre et il n’y à pas de bruit de fond par contre le son est très faible, certainement que le micro n’est pas adapté ou bien qu’il faut augmenter ça via les commande AT.
A suivre
Bonjour à vous,
Merci pour ce tuto que j’ai suivis hier soir sans problème. lI faut quand même rappelé, pour les gens, que le flash se fait en mettant le pin 0 sur le GND pour activer le flash de la mémoire de l’esp.
Maintenant je suis un peu perdu car je ne sais pas ou rajouter les infos pour le signal wifi et les automations ne marchent pas. Aurais je loupé un truc? D’autant que je ne vois pas ou config les numéros de tel pour la réception des SMS.
J’ai le centre de notification de Matmartigan, sous nodered, mais je n’arrive pas a le faire fonctionner. Auriez vous une idée?
Merci pour tous !
Arrives tu a envoyer des sms (appel manuel du service) et a en recevoir ? As tu bien un signal sur l’esp32 (logs esphome) ?
Quand tu dis que les automatisations ne fonctionnent pas : que disent les logs des automatisations ?