Bonjour ![]()
C’est mon premier message sur ce forum, j’espère ne pas faire trop d’erreurs.
Contexte
Je me permets de vous partager l’expérience que j’ai eu lors de mon changement de solution domotique vers Home Assistant. Une fonction me manquait beaucoup, les SMS.
Un ami que je ne nommerai pas! (@carmelo42
) m’a poussé et aidé pour ce changement et m’a averti de l’arrêt du système SMS intégré dans HA. Zut… Je viens juste d’arriver… Et j’en ai besoin!
JPI mon ami
Dans mon ancienne solution, je pouvais utiliser JPI, il fonctionne très bien. J’ai donc adapté son usage. Je vais essayer de vous retranscrire les étapes du mieux que je peux.
Je passe sur la partie installation de JPI sur Android. Débrouillez vous comme des grands
.
JPI - Conguration Broker MQTT
Dans JPI, on peut utiliser un broker MQTT, cela peut servir aussi à contrôler JPI.
Voici une capture d’écran de la configuration de base pour accéder à MQTT:
Il faut aller dans, Configuration > Réglages de base > Broker MQTT
C’est fou non? C’est logique !
Attention, n’oubliez pas que votre utilisateur mqtt doit avoir les droit d’accès aux topics que vous allez créer, je dis cela car je me suis fait avoir à mon propre jeu des ACL.
JPI - Réception des SMS
Maintenant, nous allons jouer avec les scénarios.
Encore une petite capture d’écran, ça fait toujours plaisir:
Rendez-vous dans Évènements / Scénarios > Téléphonie > SMS Entrant .
Alors là, je n’ai peut-être pas compris, mais la seule solution que j’ai trouvé c’est de désactiver tous les scénarios sauf celui nommé justement: Scénario par défaut et désactiver toutes les actions présentes. Et ajouter une action par le biais du bouton + comme sur la capture d’écran ci-dessous.
Dans la nouvelle fenêtre, allez sur le mode manuel, cela me parait plus aisé, tout du moins pour moi, et voici ce que j’y est mis.
Rapide explication.
Dès qu’un SMS arrive, il est envoyé dans le topic: JPI/sms/reception/temp avec comme message au format json ce que vous voyez sur la capture d’écran, c’est à dire le numéro du correspondant ainsi que son message tout simplement.
Mais pourquoi il a mis cela dans un topic nommé temp? Attends public! Je vais t’expliquer plus tard.
JPI - Envoi des SMS
Maintenant qu’on s’est occupé de la réception des SMS, on va configurer l’envoie des SMS dans JPI.
Capture d’écran pour bien visualiser.
Nous allons dans Évènements / Scénarios > Broker MQTT > Message MQTT reçu.
Pour configurer, je vous propose de cliquer sur importer et de mettre le code suivant:
{
"event": "MQTTMESSAGEARRIVED_EVENT",
"key": "JPI/sms/envoi",
"data": [
{
"jsonAction": "json=%7BMESSAGE%7D"
},
{
"publish": "topic=JPI%2Fresult&message=%7BRETURN%7D"
}
]
}
Ce qui va créer un nouveau scénario nommé JPI/sms/envoi car le nom du scénario est le nom du topic qui va gérer les envois.
L’explication de ce scénario est que dès qu’un message arrive sur le topic JPI/sms/envoi, JPI va faire comme jsonAction lire le message et le résultat de l’action ou plutôt son état, si il y a réussite ou échec, sera publier sur le topic JPI/result pour avoir un retour.
C’est bon du côté JPI. Maintenant nous allons faire un tour du côté de Home Assistant pour la suite. Aller, on change de salle! Tout le monde y va, merci.
Home Assistant - Création du première automatisme pour réécriture
C’est là que cela peut paraitre bizarre et que je vais expliquer la présent du topic .../temp
Au début j’avais fait un topic JPI/SMS/reception et tous les SMS arrivaient dessus. Et mes automatismes HA étaient en lecture sur ce topic, sauf que dès qu’un SMS arrivait, j’avais presque une vingtaine d’automatismes qui se déclenchaient. Je suis néophyte dans l’univers de HA, mais ça me parait lourd d’avoir autant de déclenchements d’un seul coup à chaque fois.
J’ai donc voulu recréer un système qui crée un « sous-topic » dédié à chaque numéro de téléphone de correspondant. Et nouvel embuche, on ne peut pas créer de topic avec un + dans le nom. J’ai donc adapter et voici l’automatisme que je vous propose pour réécrire le SMS reçu dans un topic dédié au numéro de téléphone sans le + .
alias: SMS - Reecriture MQTT topic
description: ""
triggers:
- trigger: mqtt
topic: JPI/sms/reception/temp
conditions: []
actions:
- action: mqtt.publish
metadata: {}
data:
topic: JPI/sms/reception/{{ trigger.payload_json['number'] | replace('+', '')}}
payload: >-
{ "number": "{{ trigger.payload_json['number'] }}", "message": "{{
trigger.payload_json['message'] }}" }
mode: single
Il va donc lire le SMS, prendre le numéro et publier dans le topic JPI/sms/reception/33612345678 le même SMS que reçu dans JPI/sms/reception/temp, par exemple le contenu sera en json:
{ "number": "+33612345678", "message": "Bonjour" }
J’espère que c’est clur pour vous.
Home Assistant - Automatisme pour action et réponse en SMS.
Maintenant que nous avons le super pouvoir de lire des SMS dans HA, on voudrait pouvoir insulter son interlocteur en automatique, n’est-ce pas?
J’ai donc créé un autre automatisme en exemple:
alias: Réception SMS - Dons
description: ""
triggers:
- trigger: mqtt
topic: JPI/sms/reception/33612345678
id: mqtt_sms
conditions: []
actions:
- choose:
- conditions:
- condition: trigger
id:
- mqtt_sms
- condition: template
value_template: "{{ trigger.payload_json['number'] == phone_number }}"
- condition: template
value_template: "{{ trigger.payload_json['message'] == sms_password }}"
sequence:
- action: script.turn_on
metadata: {}
data: {}
target:
entity_id:
- script.envoyer_argent_@FredGB
enabled: true
- action: mqtt.publish
metadata: {}
data:
retain: false
topic: JPI/sms/envoi
payload: >-
{ "action": "sendSms", "number": "{{
trigger.payload_json['number'] }}", "message": "Merci {{ name }}
pour ce don, recommence dès demain!" }
variables:
name: Généreux donateur
phone_number: "+33612345678"
sms_password: donner-argent
mode: single
Je pense que la plupart d’entre-vous comprendront vite ce petit scénario (humour dans le scénario, je précise).
J’explique la partie envoi du SMS.
Dès que HA aura valider les conditions, j’ai mis une variable sms_password pour éviter des déconvenues de type spam. Et que les actions de votre choix sont effectuées. HA va publier sur le topic JPI/sms/envoi un message au format json, dont le contenu commence par "action": "sendSms" ce qui est très important car cela va indique à JPI qu’il doit envoyer un SMS. Et la suite du json c’est pour indiquer qui est le destinataire du SMS, en l’occurence, je récupère le numéro de l’expéditeur qui attend un réponse et je lui renvoi un message personnalisé.
Attention dans "action": "sendSms" à bien respecter majuscules et minuscules, j’ai perdu beaucoup de temps sur des erreurs dans JPI car je mettais sendSMS ce qui est une belle boulette.
Pour la réponse personnalisée, vous pouvez aussi faire des fantaisies avec une réponse aléatoire. Dans le genre:
- action: mqtt.publish
metadata: {}
data:
retain: false
topic: JPI/sms/envoi
payload: >-
{ "action": "sendSms", "number": "{{
trigger.payload_json['number'] }}", "message": "{{ welcome_msg |
random }}" }
variables:
name: Fred
phone_number: "+33612345678"
sms_password: bonjour
welcome_msg:
- @FredGB est meveilleux
- @FredGB est intelligent
- @FredGB est fort
- @FredGB est beau
- @FredGB est très c**
Fini!
Et voilà, un système de réception et d’envoi SMS avec JPI pour Home Assistant.
J’aimerai à l’avenir pouvoir coupler cela à un IA pour interpréter mes SMS et comprendre l’action que je veux faire et générer une réponse aléatoire aussi avec un prompt.
J’espère que cette petite contribution pourra aider.
Je viens de débuter avec Home Assistant, cela me plait beaucoup. Encore beaucoup de choses à explorer.
Merci pour votre lecture. Et si vous pensez que j’ai fait une erreur dans ma démarche ne tapez pas trop fort sur ma tête.
N’oubliez pas le pouce bleu, l’abonnement et le don. Vidéo au format écrit sponsorisée par un fournisseur de VPN ![]()
Bonne journée!




