Bonjour
Si cela peut intéresser certains et pour rendre la monnaie de la pièce pour l’aide précieuse que j’ai reçue, voici ma maigre contribution :
Besoin : recevoir sur mon smartphone en temps réel des évènements de HA sans toutefois exposer mon HA sur Internet. Pour cela je dispose d’un serveur Linux hébergé chez IONOS qui me coûte 3x rien et qui me servira de relai pour les notifications (serveur qui recoit les publications de mon HA et mon smartphone va s’abonner au serveur).
L’élément central est le logiciel opensource ntfy qui permet de publier/s’abonner à des sujets.
J’installe le serveur ntfy sur mon serveur Linux (documentation d’installation est sur le github du développeur) ou ici lien direct
Ensuite il faut installer l’application ntfy sur son smartphone et s’abonner à un sujet (topic) par exemple « ha ».
Côté HA j’ai créé un simple script :
#!/bin/bash
curl -u MONLOGIN:MONMOTDEPASSE -d "Test 1 depuis HA" ADRESSE_IP_SRV_LINUX/ha
Qui est déclaré dans ma configuration :
shell_command:
ntfy: '/bin/bash /config/script/ntfy.sh'
Ce script est ensuite appelé via un service. Je reçois ainsi directement mes notifications en temps réel sur mon smartphone.
Il faut aussi créer un utilisateur pour éviter que n’importe qui puisse publier ou s’abonner. Pour l’authentification sur le serveur ntfy :
ntfy user add MONLOGIN
promp> MONMOTDEPASSE
ntfy access everyone ha deny
ntfy access MONLOGIN ha rw
Le fichier de configuration sur le serveur se trouve dans /etc/ntfy/server.yml. La seule chose que j’ai configurée (en plus des commandes de création du compte)
auth-file: "/var/lib/ntfy/user.db"
auth-default-access: "deny-all"
et bien sûr ouvrir les ports du firewall si nécessaire
Pour débugger l’abonnement aux sujets, depuis le serveur Linux on fait quelques tests préalables :
Dans un terminal, on s’abonne au sujet « ha » :
root@debian:~# curl -u "MONLOGIN:MONMOTDEPASSE" -s "http://MONADRESSEIPLINUX/ha/json"
{"id":"3uZn0HVaUq8Q","time":1692710585,"event":"open","topic":"ha"}
{"id":"4SPTt1fzmsQX","time":1692710610,"expires":1692753810,"event":"message","topic":"ha","message":"Bonjour le test"}
Dans un autre terminal on publie un test :
root@debian:/etc/ntfy# curl -u MONLOGIN:MONMOTDEPASSE -d "Bonjour le test" IPSERVEURLINUX/ha
{"id":"4SPTt1fzmsQX","time":1692710610,"expires":1692753810,"event":"message","topic":"ha","message":"Bonjour le test"}
En espérant que cela aide…