(modifiĂ© le 9 mai 2023 à 10:45)

J'ai découvert ntfy en début 2023 grâce à une vidéo de DCJona proposée par YouTube. Et j'ai trouvé ntfy (prononcez notify) tellement bien que j'ai souhaité l'intégrer à mon système domotique (domoticz).

J'ai trouvé ntfy tellement bien pensé et ouvert que j'ai décidé d'écrire un script bash que je vous propose aujourd'hui. C'est grâce à ce script que Domoticz va envoyer des notifications via ntfy.

Exemple simple : j'ai créé un système de notification sur mobile dès que le prix d'un produit baisse.

Ntfy est l'élément qui manquait cruellement à Domoticz : un système de notification qui fonctionne gratuitement.

Je vous mets aujourd'hui mon script à disposition, après la validation de plusieurs personnes sur twitter (merci à elles!).

ntfy : comment ça marche ?

ntfy est un logiciel libre permet de recevoir des notifications push sur Android, iOS et dans un navigateur web de votre choix et gratuitement (et il le restera selon son créateur). Notez que l'application est aussi dispo sur le store libre F-Droid.

ntfy fonctionne comme un broker MQTT. Il faut s'abonner à un topic pour recevoir les notifications associées. Pour ceux à qui ça ne parle pas dites-vous c'est le même principe que yopmail, toutes les adresses emails existent déjà vous n'avez rien à créer. Ici les adresses emails sont des topics.

Un topic est un nom de votre choix, que vous ajouterez derrière l'URL de l'instance ntfy :

Ici le nom du topic est "blogmotion_test"

Combien coûte ntfy ?

Il existe des abonnements payants mais pour ĂŞtre honnĂŞte la version gratuite est largement suffisante pour mes besoins :

J'utilise l'offre gratuite et je suis bien loin d'utiliser la quota des 500 notifications par jour.

J'utilise ntfy.sh ou je crée ma propre instance ?

2 possibilités existent pour utiliser ntfy :

Vous pouvez tout à fait débuter avec l'instance publique pour jouer avec avant de migrer vers une instance privée. L'inconvénient principal est que tout ce que vous envoyez sera public. N'envoyez aucune donnée personnelle et/ou confidentielle.

Et si j'utilise un nom de topic déjà existant, de quelqu'un d'autre ? et bien comme avec yopmail vous verrez le contenu de l'autre personne, et vous ne vous sentirez pas vraiment chez vous 🙂 Même si vous utilisez un nom de topic très long il reste une probabilité que quelqu'un tombe dessus.

De mon côté je vous conseille de faire un sha256 d'un fichier avec un contenu aléatoire puis d'ajouter un suffixe à la valeur du condensat. Ainsi il sera peu probable que quelqu'un tombe sur votre topic. Cependant, rien n'empêche l'interception du message vers le serveur ntfy.

Je le répète donc encore une fois : n'utilisez pas l'instance publique si vous faites transiter des infos personnelles...

S'abonner dans l'application mobile

L'application Android est particulièrement bien faite et efficace! Elle dispose de tout ce qu'il faut et elle est très réactive.

 

Pour s'abonner Ă  un topic il suffit de saisir son nom, et c'est parti.

(Je n'ai pas testé la version iPhone)

Présentation du script ntfy-ng (bash) 👇

J'ai développé 2 versions du script :

Pourquoi 2 versions ?

j'étais parti sur la version classique avec un seul fichier mais en discutant avec mes différents testeurs ils m'ont fait remonté ce besoin. La version avec un fichier de configuration (with-conf) permet plus de modularité car vous pouvez avoir un fichier de configuration par application en fonction de vos besoins. Par exemple : un fichier de conf pour domoticz, un pour vos scripts persos, etc.

Des exemples d'utilisation sont présents en commentaire dans chaque version du script :

ntfy-ng.sh "Voici un message"
ntfy-ng.sh --message "Voici un message"
ntfy-ng.sh --topic "topic_name" --message "Voici un message"
ntfy-ng.sh --topic "topic_name" --message "Voici un message" --tags chart_with_downwards_trend,money_mouth_face --prio 5

Et pour la version avec fichier de conf :

ntfy-ng-withconf.sh "Hello World"
ntfy-ng-withconf.sh --message "Hello World"
ntfy-ng-withconf.sh --topic "nom_du_topic" --message "Voici un message"
ntfy-ng-withconf.sh --topic "nom_du_topic" --message "Voici un message" --tags chart_with_downwards_trend,money_mouth_face --prio 5
ntfy-ng-withconf.sh --config "custom.cfg" --topic "nom_du_topic" --message "Voici un message" --tags chart_with_downwards_trend,money_mouth_face --prio 5

Les 2 versions du script font la même chose, dans la version withconf vous avez un fichier de configuration pour définir vos variables (ntfy.cfg par défaut) et dans l'autre c'est directement dans le script bash en variables classiques.

Intégration à Domoticz

ntfy est nativement intégré à Home Assistant mais pas à Domoticz, voyons comment y remédier.

Une fois que vous avez copié la version ntfy-ng.sh dans le répertoire contenant vos scripts (ex: /home/pi) rendez le script exécutable :

chmod +x /home/pi/ntfy-*.sh

Dans le menu Configuration > Paramètres > Notification > HTTP personnalisé/Action

# TO : nom du topic (au choix)

# URL / Action :

script:///home/pi/ntfy.sh #TO "#MESSAGE"

POST Content-Type: application/json

Et c'est tout, vérifiez à l'aide du bouton "tester" que la notification arrive bien (sur votre smartphone ou en navigateur web) :

Pour recevoir une notification d'un capteur activez "http" dans la partie notification de votre capteur, avec un message au choix (les émoji sont supportés) :

Vous pouvez aussi préciser l'appel du script en dur dans le champ "action" mais il faudra le faire sur chaque capteur... pas pratique.

Conclusion

J'espère que la découverte de ntfy vous donnera plein d'idée de scripts et de notification, cela ne se limite pas seulement à la domotique. Pour utiliser le système depuis plusieurs mois cela fonctionne vraiment bien et les notifications arrivent toujours en instantané (quand ça n'est pas le cas c'est plutôt lié au mode optimisation de batterie du tel).

Merci aux différents twittos pour leur tests et remontées 👍

Auteur : Mr Xhark

Fondateur du blog et passionné par les nouvelles techno, suivez-moi sur twitter