#Niagara
Ntfy_Notify v2 : notifications push ntfy depuis une station Niagara 4
Un ProgramObject qui envoie une notification push vers un serveur ntfy (ntfy.sh ou auto-hébergé) sur front d'un booléen ou changement de message, sans jamais bloquer la station : file d'attente, thread dédié, nouveaux essais.
- date
- 23 octobre 2026
- testé avec
- Niagara 4 · ntfy.sh ou serveur ntfy auto-hébergé
- licence
- MIT
- tags
- #ntfy,#notification,#programobject,#alarme,#http

Ce que ça fait
Il envoie une notification push vers un serveur ntfy (POST JSON). Le scan (toutes les Scan_Period secondes) ne fait que détecter les événements et les met dans une file en mémoire. Un thread dédié (Ntfy_<nom du composant>) vide la file et fait les envois HTTP : même si ntfy ne répond pas, le Clock de la station n’est jamais bloqué.

Glisse le .bog dans ta station, renseigne Topic, compile. Si N4 te sort « Program is not signed », c’est par ici.
Les entrées
- Connexion :
Ntfy_Server(défauthttps://ntfy.sh, sans le topic),Topic,Access_Token(optionnel). - Contenu :
Title,Message(front montant ou message surveillé),Message_Off(retour à la normale, vide = rien),ValueetValue_Decimals,Priority(1 à 5),Tags,Click_Url(https://ajouté s’il manque),Markdown. - Déclenchement :
Mode_Change,Trigger,Force(envoi de test). - Réglages :
Scan_Period(à chaud),Confirm_Delay(anti-rebond),Min_Interval(seul le dernier état part),Startup_Delay(défaut 30 s),Send_On_Startup,Max_Queue(défaut 20, le plus ancien saute),Enable_Debug_Logs.
Variables dans Title, Message, Message_Off et Click_Url : {time}, {date}, {station}, {state} (ON/OFF), {value}.
Les sorties
Notifier_Okpasse àfalsedès qu’un envoi échoue et revient àtrueau premier succès : lie-le à un point avec alarme.Last_Http_Code(-1 = erreur réseau ou de config),Last_Execution,Error_Message.Sent_Count,Fail_Count(échecs consécutifs),Dropped_Count,Queue_Size.
Les deux modes
- Trigger (
Mode_Change = false) : front montant deTrigger→Message; front descendant →Message_Offs’il n’est pas vide. UnTriggeren défaut, hors ligne, périmé ou sans valeur garde l’état précédent. - Change (
Mode_Change = true) :Messagepart quand il n’est pas vide et diffère du précédent. La comparaison se fait sur le texte brut, avant les variables : un{time}ou un{value}qui bouge ne déclenche rien.
Force envoie un test tout de suite, même pendant le Startup_Delay, relance la file, puis repasse seul à false. Au démarrage, rien ne part pendant Startup_Delay, puis l’état courant devient la référence : pas de notification parasite au redémarrage.
Erreurs et nouveaux essais
- Erreur réseau, HTTP 3xx/408/429/5xx ou erreur de config : nouvel essai après 5 s, 30 s, 2 min, puis toutes les 10 min.
- Autres 4xx (400, 401, 403, 413…) : message abandonné, compté dans
Dropped_Count. - Détectés d’office : topic vide, URL sans
http(s),http://ntfy.sh, topic collé dans l’URL. Les redirections ne sont pas suivies, et le détail renvoyé par ntfy est affiché (ex.unauthorized). - Messages coupés vers 3,9 Ko (au-delà de 4 Ko, ntfy en fait une pièce jointe).
Les limites
- La file est en mémoire : les messages en attente sont perdus au Stop ou au redémarrage de la station.
- Une impulsion de
Triggerplus courte queScan_Periodn’est pas vue. - En mode Change, un changement de
Valueseul ne déclenche rien : la valeur est lue au moment de l’envoi. - Pas de retour à la ligne pour l’instant (champ Niagara sur une ligne) : le Markdown se limite au gras, à l’italique, au code et aux liens.
- Sur ntfy.sh public, un topic court se devine : prends un nom long et aléatoire, ou un token.