[Article] SMS et appels avec HA sans internet

Excellent, la carte semble effectivement 4G. Cela règlerait le point et assurerait de la pérennité de la solution.
Bon il faut un beta tester maintenant… Tu vas la tester ? :innocent::blush:

Alors ca me dérange pas de tester mais manque de temps. Après je l’ai pas trouvé sur le site de ESP Home. A votre avis comme il se ressemble cela fonctionner simplement en suivant ce tuto ?

Bon, j’ai un peu cherché : il n’a jamais été testé et n’est manifestement pas supporté par ESPHome pour l’instant. Je n’est rien trouvé qui laisserait penser que les sdk des 2 seraient les mêmes. Donc je dirait qu’il y a peu de chances et qu’il faut attendre sa prise en charge.
A suivre…

J’avais aussi fait des recherches il y a un moment mais rien trouvé personnes ne l’utilise sur HA :frowning: comme tu dit à suivre.

Bonjour,
Certains ont-ils essayé d’utiliser la carte Sim800L externe branchée à un esp32 classique ?
Je me pose la question sur comment l’alimenter car d’après la doc elle fonctionne entre 3,6 et 4,3V avec des pics à plus de 2A, ce qui signifierait une alim dédiée ou un circuit d’adaptation.

Bonjour,
Pour ceux chez qui la carte sim Free ne fonctionne pas, sachez qu’actuellement Cdiscount propose un forfait Appels/SMS/MMS illimités + 3Go France & 3 Go Europe/DOM sans engagement à 3€/mois
Voir ici

1 « J'aime »

Bonsoir Argonautes,
Un tout grand merci pour le partage de ton blog sur les SMS et appels avec ESPHome que j’ai réussi à faire fonctionner grâce à toi :slight_smile:
J’ai juste une question, est il possible d’utiliser un appel comme Trigger ?
Ex: mon père appelle et le portail s’ouvre. ( Il est trop « ancien » pour utiliser les SMS :wink:
D’avance merci pour ton aide.
François.

Merci pour ton retour et content de savoir que tu as réussi.

Oui c’est possible. Dans mon tuto, j’utilise dans mon code sous ESPHome on_sms_received pour capter la réception d’un SMS et mettre les infos émetteur et message dans des sensors text.

Tu dois t’inspirer de ce code et utiliser cette fois un trigger on_incoming_call sous ESPHome

Voir pour cela la doc :

Créer un sensor text sous ESPHome pour y stocker le no de l’appelant. Il sera renseigné quand quelqu’un appelle, comme je l’ai fait pour le SMS.

Il faut aussi créer sous ESPHome un service qui remet a vide ce numero de l’appelant (ou pourquoi pas no de l’appelant avec ok derrière).

Comme pour le SMS, tu pourra ensuite créer une automatisation sous HA qui se déclenche lors d’un appel (le numero appelant devient celui de ton père) et ouvrira le portail.
Puis ensuite l’automatisation devra appeler le service ESPHome qui remet a vide le no de l’appelant pour permettre un déclenchement la prochaine fois,

Comme toujours, il y aurait d’autres moyens de coder cela, mais ce code s’inspire du code du SMS.

1 « J'aime »

Bonjour à tous, je viens de me prendre un ESP32 lilygo A7670, avec le module sim 4G, toujours pas de nouvelles concernant sa compatibilité avec EspHome ?

Re bonjour tout le monde, j’ai réussi !
Bon il y a surement des lignes inutiles, mais ça fonctionne ! Mon papa est ravi :grin:

voici le code :

esphome:
  name: esp-sim800

esp32:
  board: esp-wrover-kit
  framework:
    type: arduino

logger:
  level: info
  
ota:

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password


# Home Assistant API
api:
  services:
  - service: send_sms
    variables:
      recipient: string
      message: string
    then:
    - sim800l.send_sms:
        recipient: !lambda 'return recipient;'
        message: !lambda 'return message;'
    - lambda: id(esp_sim800_sms_message).publish_state(message);

  - service: dial
    variables:
      recipient: string
    then:
    - sim800l.dial:
        recipient: !lambda 'return recipient;'

  - service: connect
    then:
        - sim800l.connect
  
  - service: disconnect
    then:
        - sim800l.disconnect

  # Retourne le dernier message reçus au dernier expéditeut en y ajoutant OK
  - service: reply_sms_ok
    then:
    - text_sensor.template.publish:
        id: esp_sim800_sms_message
        state: !lambda |-
          return id(esp_sim800_sms_message).state + " OK";
    - sim800l.send_sms:
        recipient: !lambda "return id(esp_sim800_sms_expediteur).state;"
        message: !lambda "return id(esp_sim800_sms_message).state;"
  
  # Change le dernier numéro reçu en y ajoutant OK
  - service: change_id_call_ok
    then:
    - text_sensor.template.publish:
        id: caller_id_text_sensor
        state: !lambda |-
          return id(caller_id_text_sensor).state + " OK";

        
uart:
  baud_rate: 9600
  tx_pin: 27
  rx_pin: 26

switch:
  - platform: gpio
    id: "key_pin"
    pin: 4
    restore_mode: ALWAYS_OFF
  - platform: gpio
    id: "reset_pin"
    pin: 5
    restore_mode: ALWAYS_ON
  - platform: gpio
    id: "power_pin"
    pin: 23
    restore_mode: ALWAYS_ON

# Bouton de redémarrage
button:
  - platform: restart
    id: esp_sim800_restart
    name: "ESP-SIM800 Redémarrage"

sim800l:
  on_sms_received:
    - lambda: |-
        id(esp_sim800_sms_expediteur).publish_state(sender);
        id(esp_sim800_sms_message).publish_state(message);        
    - logger.log:
        format: "Received '%s' from %s"
        args: [ 'message.c_str()', 'sender.c_str()' ]
  on_incoming_call:
  - logger.log:
      format: "Incoming call from '%s'"
      args: ["caller_id.c_str()"]
  - lambda: |-
      id(caller_id_text_sensor).publish_state(caller_id);
  - sim800l.disconnect
  - homeassistant.event:
      event: esphome.incoming_call_event
      data:
        payload: !lambda 'return id(caller_id_text_sensor).state;'
  on_call_connected:
    - logger.log:
        format: Call connected
  on_call_disconnected:
    - logger.log:
        format: Call disconnected

text_sensor:
  - platform: template
    id: esp_sim800_sms_expediteur
    name: "Sms Expediteur"
  - platform: template
    id: esp_sim800_sms_message
    name: "Sms Message"
  - platform: template
    id: caller_id_text_sensor
    name: "Caller ID"

sensor:
  - platform: sim800l
    rssi:
      name: "ESP sim800 signal"

binary_sensor:
  - platform: sim800l
    registered:
      name: "ESP sim800 status"

Encore un tout grand merci Argonaute !

1 « J'aime »

Oh, trop génial, bravo !! Un beau cas d’utilisation, pour le coup pas banal.
Et merci pour le partage :+1::blush:

Bonjour,

Merci pour ce thread très complet et qui fonctionne bien pour moi !
Peut-on faire un retour à la ligne dans le message SMS pour afficher plusieurs informations sur des lignes différentes ?
Dans l’état, l’API renvoie une erreur si on utilise un template contenant un retour à la ligne.

Merci et content que tu ai réussi !
Je n’ai pas essayé et compliqué de le faire a court terme, mais il faudrait tester un \n dans la chaine de caractères du message.

2 « J'aime »

Je n’avais même pas tenté, mais un \n permet bien de faire un retour à la ligne. Merci !

1 « J'aime »

Je continue à enrichir mes alertes SMS en utilisant NodeRED. Je vois bien qu’il y a un problème d’encodage car les caractères accentués ou autres apostrophes passent mal. Quel est finalement l’encodage attendu du texte du message ? Je n’arrive pas à le trouver dans le doc.

Je n’ai rien vu sur l’encodage. Je crains que ce soit du simple ASCI et qu’unicode UTF8 ou autre encodage ISO ne soient pas supportés (?)
Dommage de ne pas utiliser les automatisations HA pour cela, c’est vraiment mieux intégré et pas de payload a gérer.

Bonsoir
j’ai mis en place esphome sur une carte lilygo tcall (avec une sim interne)
je suis bloqué quand la carte boot j’ai toujours le message : not register
pouvez vous m’aider ?
merci

Cela semble être un problème de réseau 2g.
Tu as désactivé le code pin ? Tu as bien du réseau 2g chez toi ? Quel est l’opérateur ?

oui le code pin est retiré
je suis chez Free
comment savoir si j’ai un reseau 2G ?
il n’existe pas une carte qui fait du SMS en 3G ou 4G?
merci

A ma connaissance, non, pas de cartes 3g/4g, mais je n’ai pas cherché récemment et les choses bougent vites. Après on parle ici d’envoyer juste des sms.
Pour la carte Free, c’est ici (onglet voix) : Free mobile - Carte de couverture réseau mobile