🎯 ObjectifMettre un formulaire simple sur Lovelace pour : choisir un destinataire (Papa, Maman, …), saisir un message, cliquer sur Envoyer, avoir une confirmation d’envoi et vider le champ. Optionnel : afficher l’état et l’historique des SMS grâce au capteur créé par l’intégration. ✅ PrérequisAvoir un ou plusieurs comptes Free Mobile avec l’option “Notifications par SMS” activée (identifiant + clé API). Installer l’intégration personnalisée Free Mobile SMS XA : via HACS → Dépôts personnalisés → https://github.com/XAV59213/freesmsxa → catégorie Intégration ; redémarrer HA ; Paramètres → Appareils & services → Ajouter une intégration → Free Mobile SMS XA ; saisir username + access_token ; un SMS de test valide les identifiants. Vérifier que des services notify.* ont été créés (ex. notify.papa_sms, notify.maman_sms) dans Outils de développement → Services. 🧱 Étape 1 — Créer 2 EntréesParamètres → Appareils & services → Entrée → + Créer Entrée 1 Liste (input_select) Nom : Destinataire App (ou Destinataire SMS) Options (une par ligne) : sans le notify. papa
maman
ect..→ entité : input_select.destinataire_app 2 Texte (input_text) Nom : Message SMS (facultatif) Longueur max : 160 → entité : input_text.message_sms 🧠 Étape 2 — Le script d’envoiLe script ci-dessous : choisit le bon service notify.<sélection>, annule si le message est vide, crée une notification de succès, efface le message après envoi. Automatisations & scènes → Scripts → Nouveau → Éditeur YAML : alias: Envoyer message ciblé (App mobile)
mode: restart
sequence:
- variables:
dest: "{{ states('input_select.destinataire_app') }}"
msg: "{{ states('input_text.message_sms') }}"
- choose:
- conditions:
- condition: template
value_template: "{{ msg | trim == '' }}"
sequence:
- data:
title: Envoi annulé
message: Aucun message à envoyer. Merci de saisir un texte.
action: persistent_notification.create
- stop: Message vide
- choose:
- conditions:
- condition: template
value_template: "{{ dest == 'Maman' }}"
sequence:
- target:
entity_id: notify.maman
data:
message: "{{ msg }}"
action: notify.send_message
- conditions:
- condition: template
value_template: "{{ dest == 'Papa' }}"
sequence:
- target:
entity_id: notify.papa
data:
message: "{{ msg }}"
action: notify.send_message
- conditions:
- condition: template
value_template: "{{ dest == 'Naomie' }}"
sequence:
- target:
entity_id: notify.naomie
data:
message: "{{ msg }}"
action: notify.send_message
- conditions:
- condition: template
value_template: "{{ dest == 'Xavier' }}"
sequence:
- target:
entity_id: notify.xavier
data:
message: "{{ msg }}"
action: notify.send_message
- conditions:
- condition: template
value_template: "{{ dest == 'Anais' }}"
sequence:
- target:
entity_id:
- notify.anais
data:
message: "{{ msg }}"
action: notify.send_message
- conditions:
- condition: template
value_template: "{{ dest == 'TOUS LE MONDE !' }}"
sequence:
- target:
entity_id:
- notify.maman
- notify.papa
- notify.xavier
- notify.naomie
- notify.anais
data:
message: "{{ msg }}"
action: notify.send_message
default:
- data:
title: Envoi annulé
message: Destinataire « {{ dest }} » inconnu. Vérifie ton sélecteur.
action: persistent_notification.create
- stop: Destinataire inconnu
- data:
title: Message envoyé
message: "Envoyé à « {{ dest }} » : {{ msg }}"
action: persistent_notification.create
- target:
entity_id: input_text.message_sms
data:
value: ""
action: input_text.set_value
description: ""
Variante si vous préférez utiliser explicitement le service de l’intégration : remplacez l’étape 2 par : - service: freesmsxa.send_sms
data:
target: "notify.{{ dest }}"
message: "{{ msg }}"
🧩 Étape 3 — La carte Lovelace (dashboard)Tableau de bord → Modifier → + Ajouter une carte → Carte YAML : type: vertical-stack
cards:
- type: entities
title: Envoyer un message SMS
state_color: true
entities:
- entity: input_select.destinataire_app
name: Destinataire
- entity: input_text.message_sms
name: Message
- type: button
name: Envoyer
icon: mdi:send
tap_action:
action: call-service
service: script.turn_on
target:
entity_id: script.envoyer_message_cible_app_mobile # <-- adapte avec l'ID exact de ton script 🔎 (Optionnel) Carte “État + Historique des SMS”Si vous avez configuré le capteur créé par l’intégration (nom ressemblant à <Alias> - SMS), vous pouvez afficher : le compteur d’envois, le dernier envoi, l’historique (10 derniers) depuis l’attribut sms_log. Adaptez sensor.TON_CAPTEUR à votre entité réelle (voir États). type: vertical-stack
cards:
- type: entity
entity: sensor.TON_CAPTEUR
name: Maman SMS - État
state_color: true
unit: sms
attribute: sms_count
- type: markdown
title: Historique des derniers SMS
content: >
{% set log = state_attr('sensor.TON_CAPTEUR', 'sms_log') %}
{% if log %}
{% for item in log %}
• **{{ item['time'] | as_datetime | as_local | strftime('%d/%m %H:%M:%S') }}** : {{ item['message'] }}
{% endfor %}
{% else %}
Aucun SMS envoyé.
{% endif %}
🧰 Dépannage (FAQ)“Notify service not found” → Dans Outils de développement → Services, notez les noms exacts notify.*. → Les options de input_select.destinataire_app doivent être sans notify. (ex. papa_sms, pas notify.papa_sms). → Le script reconstruit notify.{{ dest }}. Rien ne se passe en cliquant sur “Envoyer” → Vérifiez que la carte appelle bien script.turn_on et l’entity_id du script est correct (voir États). Le champ ne se vide pas → Vérifiez que input_text.message_sms existe, et l’étape input_text.set_value est bien en fin de script. Pas de capteur / pas d’historique → Ajoutez l’intégration et la ligne Free Mobile ; le capteur est créé par l’intégration lors de la config. → L’historique s’alimente après vos premiers envois. 🔐 Remarques sécurité & vie privéeLes clés Free Mobile sont stockées dans la config de l’intégration et ne s’affichent pas en clair dans le device registry. Pensez à limiter l’accès à cette carte Lovelace (utilisateurs/onglets) si nécessaire. 📦 RéférencesIntégration Free Mobile SMS XA (obligatoire) : https://github.com/XAV59213/freesmsxa Home Assistant — Helpers (Aides), Scripts, Lovelace. 🏁 ConclusionEn quelques minutes, vous avez : un formulaire Destinataire + Message + Bouton Envoyer, un envoi 100 % SMS via l’intégration Free Mobile SMS XA, une confirmation d’envoi et un champ réinitialisé, et, si vous voulez, un suivi de l’historique des SMS.