Aller au contenu

Notifications Home Assistant

Aperçu

  1. Connectez-vous à votre instance Home Assistant et ouvrez votre page Profil.
  2. Faites défiler tout en bas et cliquez sur Create Token sous Long-Lived Access Tokens.
  3. Donnez-lui un nom (par exemple Apprise) et copiez le jeton généré : vous ne pourrez plus l’afficher ensuite.

Deux modes de fonctionnement existent selon que vous incluez ou non une cible de service dans l’URL.

Lorsqu’aucune cible de service n’est fournie, Apprise publie une notification persistante sur le tableau de bord Home Assistant.

hassio://{host}/{access_token}
hassios://{host}/{access_token}
hassio://{host}:{port}/{access_token}

Par défaut, une nouvelle notification unique est créée à chaque envoi. Pour remplacer la notification précédente à la place (utile pour des mises à jour d’état), fixez un identifiant via ?nid= :

hassio://{host}/{access_token}?nid=myid

Ajoutez une ou plusieurs cibles de service après le jeton d’accès pour appeler directement n’importe quel service Home Assistant. Cela prend en charge les notifications push de l’application mobile, le TTS, les lecteurs média et tout autre domaine de service HA.

Chaque segment cible suit cette grammaire :

FormeExempleRemarques
servicemobile_app_phoneDomaine par défaut : notify
domain.servicemedia_player.living_roomDomaine explicite
service:targetmobile_app_phone:user1Sous-cible unique
service:t1,t2,t3notify_group:alice,bobSous-cibles séparées par virgule ou espace
domain.service:t1,t2tts.google_say:en-USDomaine + sous-cibles

Plusieurs cibles de premier niveau sont séparées par / dans l’URL :

hassio://{host}/{access_token}/{service}
hassio://{host}/{access_token}/{domain}.{service}
hassio://{host}/{access_token}/{domain}.{service}:{target}
hassio://{host}/{access_token}/{domain}.{service}:{t1},{t2}
hassio://{host}/{access_token}/{service1}/{domain}.{service2}:{target}

Le domaine par défaut est notify lorsqu’aucun domaine n’est précisé ; ainsi, hassio://host/token/mobile_app_phone est équivalent à hassio://host/token/notify.mobile_app_phone.

Si votre instance Home Assistant est servie sous un sous-chemin (par exemple derrière un reverse proxy sur /ha), fournissez-le avec ?prefix= :

hassio://{host}/{access_token}/{service}?prefix=/ha
VariableRequisDescription
hostOuiLe nom d’hôte ou l’adresse IP de votre instance Home Assistant.
access_tokenOuiLe Long-Lived Access Token généré depuis votre page de profil.
portNonPort de connexion. Par défaut : 8123 pour hassio:// et 443 pour hassios://.
serviceNonUne ou plusieurs entrées [domain.]service[:target]. Omettez entièrement ce champ pour utiliser le mode Notification Persistante.
nidNonUn Notification ID fixe, uniquement pour les notifications persistantes. Lorsqu’il est défini, chaque nouveau message remplace le précédent.
prefixNonUn préfixe de chemin URL ajouté à tous les appels API. Requis lorsque Home Assistant est servi sous un sous-chemin (par exemple ?prefix=/ha).
batchNonDéfinissez yes pour regrouper jusqu’à 10 cibles de service dans un seul appel API. La valeur par défaut est no.
toNonAlias pour les cibles de service. Équivalent à l’ajout de cibles dans le chemin URL.
VariableDescription
overflowCe paramètre peut être défini sur split, truncate ou upstream. Il détermine la manière dont Apprise remet le message que vous lui transmettez. Par défaut, il vaut upstream.
👉 upstream : ne fait aucune modification et transmet le message exactement tel qu’il a été reçu au service.
👉 truncate : veille à ce que le message tienne dans la limite amont documentée par le service. Si plus d’informations sont fournies que la limite définie, l’excédent est tronqué.
👉 split : similaire à truncate, sauf que si le message dépasse la limite amont documentée par le service, il est découpé en plusieurs morceaux plus petits puis envoyés séquentiellement.
formatCe paramètre peut être défini sur text, html ou markdown. Certains services prennent en charge plusieurs formats de publication du contenu. La valeur par défaut varie selon le service choisi et peut correspondre à l’un de ces trois formats. Vous pouvez facultativement forcer cette option pour vous écarter du comportement par défaut. Si le service ne prend pas en charge plusieurs formats de transmission, ce champ est ignoré.
verifyLes requêtes externes vers des emplacements sécurisés, par exemple via https, utilisent des certificats. Par défaut, Apprise vérifie la validité de ces certificats ; si ce n’est pas le cas, aucune notification n’est envoyée à la source. Dans certains cas, un utilisateur ne dispose pas d’une autorité de certification pour valider la clé ou fait simplement confiance à la source ; dans ce cas, vous pouvez définir ce drapeau sur no. Par défaut, il vaut yes.
ctoSignifie Socket Connect Timeout. Il s’agit du nombre de secondes pendant lesquelles Requests attend que votre client établisse une connexion avec une machine distante, ce qui correspond à l’appel connect() sur la socket. La valeur par défaut est de 4.0 secondes.
rtoSignifie Socket Read Timeout. Il s’agit du nombre de secondes pendant lesquelles le client attend que le serveur envoie une réponse. La valeur par défaut est de 4.0 secondes.
emojisActive la prise en charge des emojis, par exemple :+1: qui sera traduit en 👍. Par défaut, cette option vaut no.
Remarque : selon la configuration côté serveur, l’administrateur peut désactiver globalement la prise en charge des emojis ; mais par défaut, ce n’est pas le cas.
tzIdentifie le fuseau horaire de la base IANA que vous souhaitez utiliser. Par défaut, celui-ci est détecté à partir de la configuration du serveur qui exécute Apprise. Vous pouvez le définir sur des valeurs comme America/Toronto, ou sur tout autre fuseau correctement formaté correspondant à votre région.

Envoyer une notification persistante (crée une nouvelle entrée dans le tableau de bord HA à chaque appel) :

Fenêtre de terminal
apprise -vv -t "Alert" -b "Mouvement detecte" \
'hassio://myserver.local/4b4f2918fd-dk5f-8f91f'

Envoyer une notification persistante qui remplace toujours la précédente (utile pour des mises à jour d’état récurrentes) :

Fenêtre de terminal
apprise -vv -t "Statut" -b "All systems nominal" \
'hassio://myserver.local/4b4f2918fd-dk5f-8f91f?nid=apprise'

Envoyer vers un service de notification de l’application mobile :

Fenêtre de terminal
apprise -vv -t "Alert" -b "Quelqu'un a sonne a la porte" \
'hassio://myserver.local/4b4f2918fd-dk5f-8f91f/notify.mobile_app_myphone'

Envoyer vers plusieurs services dans une seule URL :

Fenêtre de terminal
apprise -vv -t "Alert" -b "La porte du garage est restee ouverte" \
'hassio://myserver.local/4b4f2918fd-dk5f-8f91f/notify.mobile_app_phone1/notify.mobile_app_phone2'

Envoyer via une connexion sécurisée (hassios:// → HTTPS sur le port 443) :

Fenêtre de terminal
apprise -vv -t "Test" -b "Secure message" \
'hassios://my.secure.server/4b4f2918fd-dk5f-8f91f/notify.mobile_app_myphone'

Utiliser ?to= lors de la construction programmatique des URL :

Fenêtre de terminal
apprise -vv -t "Test" -b "Hello" \
'hassio://myserver.local/4b4f2918fd-dk5f-8f91f?to=notify.mobile_app_myphone'
  • 401 Unauthorized — Votre jeton est invalide ou a expiré. Générez-en un nouveau depuis la page de profil Home Assistant.
  • 400 Bad Request — Une cible de service inexistante a été fournie, ou la charge utile contenait des paramètres non pris en charge pour ce domaine de service. Vérifiez le domaine et le nom du service dans votre instance HA.
  • Certificat auto-signé — Ajoutez ?verify=no pour ignorer la vérification SSL : hassios://myserver/{token}?verify=no
Questions ou commentaires ?

Documentation

Vous avez repéré une faute de frappe ou une erreur ? Signalez-la ou proposez une correction .

Problèmes Techniques

Vous rencontrez un problème avec le code ? Ouvrez un ticket sur GitHub :

Conçu avec amour depuis le Canada