Comment recevoir des SMS avec sms2mqtt

Bonjour,

J’ai bien réussi à configurer sms2mqtt dans un conteneur docker avec une clé USB basée sur un SIM800C et je parviens à envoyer des SMS par des entités comme je le souhaitais, y compris des caractères accentués, chose que je ne parviens pas à faire malgré de nombreux essais avec l’application minicom (linux) qui n’accepte que des caractères ASCII.

Mais je ne vois pas comment gérer les SMS reçus sur ce dongle. Peut-on me détailler avec précision comment procéder ?

Merci d’avance.

Bonsoir,

ce n’est pas une question HA.
Faudrait voir avec les devs de cette solution…

Merci AlexHass pour ta réponse ; j’avais déjà vu cette page que j’ai sûrement utilisée pour créer le docker qui fonctionne. J’avais aussi repéré sms2mqtt/received qui est le pendant de ce que j’utilise pour l’envoi (topic: sms2mqtt/send) mais je ne vois pas comment l’implémenter. J’ai peu d’expérience avec HA, en fait.

Ah ben faut le dire si tu veux avoir ça dans HA, ce n’était pas précisé :wink:
Autre chose que tu n’as pas précisé c’est que veux tu en faire ce ces SMS…?

Tu peux créer une automatisation si tu veux qu’un SMS puisse donner un ordre à HA avec le Trigger MQTT :

Tu aussi peux créer un sensor MQTT, mais ce ne serait pas super utile…

Donc un peu plus d’infos sur la raison pour laquelle tu veux des SMS dans HA serait assez utile…

Je veux transférer ce message sur un autre N°.
Je suis en train de voir les automatisations mais je sèche pour retrouver le contenu du message et le transférer vers l’action à configurer.

Pour être plus précis, si je prends la page GitHub - Domochip/sms2mqtt: Gateway to send/receive SMS through MQTT using an USB GSM dongle (gammu)
comment exploiter dans HA ce qu’il explique avec " A confirmation is sent back through MQTT to topic sms2mqtt/sent :
{"result":"success", "datetime":"2021-01-23 13:00:00", "number":"+33612345678", "text":"This is a test message"}"

ou bien encore avec " Received SMS are published to topic sms2mqtt/received like this :
{"datetime":"2021-01-23 13:30:00", "number":"+31415926535", "text":"Hi, Be the Pi with you"}"

Après de nombreuses heures à chercher et tester différents codes, j’ai fini par faire fonctionner les transferts de SMS depuis mon module SIM800C vers un autre numéro de mobile.
Voici le code de l’automation qui fonctionne :

alias: SMS_arrive_sur_0612345678
description: Un SMS vient d'être reçu sur le N° 06.12.34.56.78
trigger:
  - platform: mqtt
    topic: sms2mqtt/received
action:
  - service: input_text.set_value
    target:
      entity_id: input_text.sms_recu
    data:
      value: "{{ trigger.payload_json['text'] }}"
  - service: input_text.set_value
    target:
      entity_id: input_text.numero_sms
    data:
      value: "{{ trigger.payload_json['number'] }}"
  - service: mqtt.publish
    data:
      qos: "1"
      retain: false
      topic: sms2mqtt/send
      payload_template: >
        {% set payload = {"number":"069876543", "text":"{{
        states('input_text.sms_recu') }} envoyé par {{
        states('input_text.numero_sms') }}" } %} {{ payload|to_json }}

À présent, je bute sur un problème depuis des heures : récupérer des valeurs d’un message mqtt.
Début de l’automatisation :

alias: signal sms
description: afficher la qualité de réception du réseau 2G
trigger:
  - platform: mqtt
    topic: sms2mqtt/signal
    alias: Lorsque la qualité du signal a changé

Selon le site GitHub - Domochip/sms2mqtt: Gateway to send/receive SMS through MQTT using an USB GSM dongle (gammu), la charge utile de cet évènement est :
{"SignalStrength": -71, "SignalPercent": 63, "BitErrorRate": -1}
Comment récupérer dans une entrée, les valeurs de SignalStrength et SignalPercent ?

Je cherchais des complications alors que la réponse était sous mes yeux.
Voici le code de l’automation me permettant de récupérer la force du signal 2G :

alias: signal sms
description: afficher la qualité de réception du réseau 2G
trigger:
  - platform: mqtt
    topic: sms2mqtt/signal
    alias: Lorsque la qualité du signal a changé
condition: []
action:
  - service: input_number.set_value
    target:
      entity_id: input_number.signal_sms
    data:
      value: "{{ trigger.payload_json['SignalPercent'] }}"
  - service: input_number.set_value
    target:
      entity_id: input_number.signal_sms_db
    data:
      value: "{{ trigger.payload_json['SignalStrength'] }}"
mode: single

Et voici le résultat dans Lovelace :

image

Je n’ai pas une très bonne réception mais c’est bien suffisant pour du SMS. Il s’agit du réseau Free avec un forfait à 2 € par mois. Les autres fournisseurs ne font pas mieux en matière de qualité de réseau…