📡 Manuel d'utilisation — Plugin ntfybridge
Le plugin ntfybridge connecte Jeedom à ntfy, une application de notifications open-source disponible sur iOS, Android et Web.
La communication est bidirectionnelle :
- Jeedom → Téléphone : alertes, rapports, photos, fichiers
- Téléphone → Jeedom : questions, commandes, confirmations
Pourquoi ntfybridge ?
La plupart des solutions de notification domotique sont à sens unique : la box envoie une alerte, point final. Pour agir, il faut ouvrir l'app, naviguer, chercher le bon bouton.
ntfybridge inverse la logique. Votre domotique devient une conversation : vous posez une question, Jeedom répond. Vous donnez un ordre, Jeedom demande confirmation. Le tout depuis une simple notification — sans ouvrir Jeedom.
En mode embarqué, ntfy devient aussi une messagerie privée entre les membres du foyer. Chaque utilisateur dispose de son propre accès contrôlé par le panel intégré — pas besoin de WhatsApp, Telegram ou autre service tiers pour se prévenir que le portail est ouvert ou que le dîner est prêt.
Et quand tout plante — Apache en panne, Jeedom inaccessible — le mode secours prend le relais. Le démon tourne indépendamment : un ping ou emergency depuis ntfy suffit pour diagnostiquer et relancer les services, sans SSH ni accès web.
Tout reste chez vous : ntfy est embarqué, aucun cloud obligatoire, aucun quota, vos données ne transitent par aucun serveur tiers.
🚀 Démarrage rapide — 9 étapes
Parcours minimal pour avoir un Jeedom joignable par notification depuis votre téléphone, sans créer d'équipement.
| # | Étape | Détail |
|---|---|---|
| 1 | Installer le plugin | Market Jeedom ou GitHub → activer le plugin |
| 2 | Installer les dépendances | Bouton Relancer — installe Node.js ≥ 22 et le binaire ntfy automatiquement |
| 3 | Configurer le serveur ntfy | Mode embarqué : définir l'identifiant admin et le mot de passe → voir détails ↓ |
| 4 | Démarrer le démon | Bouton Relancer — le serveur ntfy démarre avec le démon |
| 5 | Ouvrir les ports sur la box Internet | Rediriger les ports 80 (HTTP) et 443 (HTTPS) vers l'IP de votre Jeedom |
| 6 | Tester le reverse proxy | Lancer l'assistant intégré, suivre les 5 étapes → voir reverse proxy ↓ |
| 7 | Créer un utilisateur ntfy | Panel utilisateurs : ajouter un compte avec droits sur le topic secours → voir panel ↓ |
| 8 | Installer l'app ntfy | Télécharger sur iOS / Android, ajouter le serveur, s'authentifier → voir app ↓ |
| 9 | Configurer les topics secours et tester le ping | Modale Secours : renseigner le topic action et réponse, activer ping, envoyer ping depuis l'app → voir secours ↓ |
En 9 étapes, votre Jeedom est joignable de n'importe où par notification — même si l'interface web est en panne.
🖥️ Configurer le serveur ntfy
Plugins → Gestion des plugins → ntfybridge → Configuration
- ⭐ Mode embarqué (recommandé)
- Mode externe
Le serveur ntfy est intégré au plugin — tout est automatique.
| Paramètre | Description |
|---|---|
| Port ntfy | Auto-détecté au premier démarrage. Boutons Tester et Auto-détecter disponibles |
| Identifiant admin | Compte administrateur ntfy, généré à l'installation (défaut : ntfyadmin) |
| Interface d'écoute | Localhost (recommandé, derrière reverse proxy) ou LAN (toutes les interfaces) |
| URL publique | À renseigner uniquement pour un accès depuis Internet (ex: https://ntfy.mondomaine.fr) |
Pour exposer ntfy sur Internet : renseigner l'URL publique puis cliquer sur Assistant reverse proxy. L'assistant génère la configuration en 5 étapes pour Apache, Nginx, NPM, Traefik ou Cloudflare.
- Sauvegarder la configuration → le port est auto-détecté
- Démarrer le démon → le serveur ntfy démarre automatiquement
- (Optionnel) Lancer l'assistant reverse proxy pour l'accès externe
Le plugin se connecte à un serveur ntfy existant (ntfy.sh, auto-hébergé…).
| Paramètre | Description |
|---|---|
| URL du serveur | URL complète : https://ntfy.sh ou https://ntfy.monserveur.fr |
| Nom d'utilisateur | Compte ntfy ayant accès en lecture/écriture aux topics |
| Mot de passe | Mot de passe du compte ntfy |
Cliquer sur Tester la connexion pour valider les identifiants.
En mode externe, la gestion des utilisateurs et des permissions n'est pas disponible dans Jeedom. Vous devez les configurer directement sur votre serveur ntfy.
👥 Gérer les utilisateurs (panel)
Plugins → ntfybridge → Panel
Le panel de gestion des utilisateurs est disponible uniquement en mode embarqué. En mode externe, gérez les utilisateurs directement sur votre serveur ntfy.
Le panel affiche un tableau croisé Topics x Utilisateurs permettant de gérer finement les droits d'accès.
Ajouter un utilisateur
- Cliquer sur Ajouter un utilisateur
- Saisir un nom d'utilisateur et un mot de passe (minimum 8 caractères)
- Cliquer sur Créer
Gérer les permissions
Pour chaque combinaison utilisateur/topic, choisir le niveau d'accès :
| Permission | Description |
|---|---|
| read-write | L'utilisateur peut publier et recevoir les messages sur ce topic |
| read-only | L'utilisateur peut uniquement recevoir les messages |
| deny-all | Accès interdit à ce topic |
Chaque modification est appliquée immédiatement sur le serveur ntfy.
Supprimer un utilisateur
Cliquer sur l'icône de suppression dans la colonne de l'utilisateur. La suppression est définitive.
📱 Installer et configurer l'app ntfy
Télécharger l'app
| Plateforme | Lien |
|---|---|
| iOS | App Store |
| Android | Google Play ou F-Droid |
| Web | Accéder à l'URL de votre serveur ntfy dans un navigateur |
S'abonner à un topic
- Ouvrir l'app ntfy
- Appuyer sur + (ajouter un abonnement)
- Configurer selon votre mode :
- ⭐ Mode embarqué
- Mode externe
- Avec sous-domaine : saisir l'URL complète
https://ntfy.votredomaine.fr/votre_topic - En local / VPN : saisir
http://IP_JEEDOM:PORT_NTFY/votre_topic - Si authentification : renseigner le nom d'utilisateur et le mot de passe créés dans le panel
- ntfy.sh : saisir uniquement le nom du topic (ex:
maison_cmd) - Auto-hébergé : saisir l'URL complète
https://ntfy.monserveur.fr/votre_topic - Si authentification : renseigner vos identifiants ntfy
L'URL d'abonnement est affichée dans la section Abonnement de chaque équipement ntfybridge — vous pouvez la copier directement.
✨ Ce que vous pouvez faire
- 🏠 Jeedom → Téléphone
- 📱 Téléphone → Jeedom
Jeedom vous contacte, vous informe, vous alerte.
- 🔔 Alerte si une fenêtre est ouverte sous la pluie
- 🌡️ Notification si la température du garage descend sous 5 °C
- 📸 Photo de caméra quand le portail s'ouvre
- 🚨 Alerte urgente avec icône et son personnalisé
- 📋 Rapport quotidien de l'état de la maison
- ⏰ Message différé — "Rappel dans 30 minutes"
- 🗂️ Profils d'envoi nommés : urgent, discret, rapport…
Vous interrogez ou pilotez Jeedom par message.
- 💬
température salon→ Jeedom répond avec la valeur en temps réel - 💡
éteins tout→ Jeedom éteint toutes les lumières - 🔒
état alarme→ Jeedom répond armé ou désarmé - ✅ "Confirmer l'ouverture du portail ?" avec boutons Oui ✓ / Non ✗
- 🩺
ping→ Jeedom répond avec son état de santé
🔀 Modes de configuration
Mode embarqué + sous-domaine HTTPS — installation all-in-one, données chez vous, toutes les fonctionnalités (push iOS natif, boutons de confirmation, icônes, fichiers joints).
- ⭐ Embarqué + sous-domaine
- Embarqué local / VPN
- Externe — ntfy.sh
- Externe — auto-hébergé
ntfy est inclus dans le plugin et exposé via reverse proxy sur un sous-domaine.
Atouts :
- All-in-one, rien à installer séparément
- Toutes les fonctionnalités : push iOS natif, boutons Oui/Non, icônes, fichiers
- Données chez vous, contrôle total des utilisateurs ntfy
- Assistant reverse proxy intégré (5 étapes guidées)
Contraintes :
- Nécessite un nom de domaine (ex:
ntfy.mondomaine.fr) - Nécessite un reverse proxy (Apache, Nginx, NPM, Traefik, Cloudflare…) — voir configuration →
ntfy est inclus, accessible uniquement sur le réseau local ou via VPN.
Atouts :
- Zéro configuration réseau externe
- Aucun port ouvert sur Internet — très sécurisé
Contraintes :
- Boutons Oui/Non non fonctionnels hors réseau local
- Push iOS natif indisponible sans HTTPS public
Le plugin se connecte au service public ntfy.sh.
Atouts : Aucun serveur à gérer, HTTPS inclus, push iOS fonctionnel.
Contraintes : Quota 250 messages/jour, topics semi-publics, dépendance externe.
Le plugin se connecte à votre propre serveur ntfy (VPS, NAS…).
Atouts : Données chez vous, aucun quota, toutes les fonctionnalités si HTTPS.
Contraintes : Serveur à maintenir, panel utilisateurs désactivé dans Jeedom.
📦 Installation
1️⃣ Installer le plugin
Plugins → Gestion des plugins → Market → ntfybridge → Installer
Activer le plugin après installation.
Node.js (≥ 22) et le binaire ntfy sont installés automatiquement. Aucune intervention manuelle.
2️⃣ Créer un équipement
- Plugins → ntfybridge → Ajouter
- Nommer, activer
- Configurer les topics :
- Topic d'écoute : Jeedom reçoit les messages sur ce topic (ex:
maison_cmd) - Topic de réponse : Jeedom envoie ses réponses sur ce topic (ex:
maison_reply)
- Topic d'écoute : Jeedom reçoit les messages sur ce topic (ex:
- Sauvegarder — les commandes sont créées automatiquement
Le topic est l'équivalent d'un mot de passe. Choisir un nom difficile à deviner.
S'abonner dans l'app ntfy en copiant l'URL affichée dans la section Abonnement de l'équipement.
🗂️ Configuration de l'équipement
Chaque équipement ntfybridge dispose de quatre onglets.
⚙️ Onglet Équipement
📡 Topics
| Champ | Rôle |
|---|---|
| Topic d'écoute | Topic ntfy sur lequel Jeedom reçoit les messages entrants (SSE). Ex: maison_cmd |
| Topic de réponse | Topic ntfy sur lequel Jeedom envoie ses réponses automatiques et confirmations. Ex: maison_reply |
Les deux topics peuvent être identiques si vous n'avez qu'un seul topic pour tout. Séparer les topics permet cependant de s'abonner uniquement aux réponses sans recevoir ses propres commandes en écho.
🔧 Valeurs par défaut
Ces valeurs s'appliquent à chaque envoi si aucune surcharge n'est définie par commande cache ou paramètre inline.
| Paramètre | Description |
|---|---|
| Priorité | Niveau de notification : 1=min (silencieux) · 2=low · 3=défaut · 4=high · 5=urgent (son fort) |
| Tags | Emojis affichés dans la notification, séparés par virgule (ex: loudspeaker,bell) |
| Markdown | Active le rendu gras, italique, listes dans le corps du message |
| Icône | URL d'une image affichée comme icône (Android uniquement) |
| Délai | Envoi différé : 30m, 9am, 2026-01-01T09:00… |
| Cache ntfy | Mise en cache côté serveur ntfy (yes/no). Vide = comportement serveur |
| Firebase | Activation du push Firebase (yes/no). Vide = comportement serveur |
🔒 Sécurité
| Paramètre | Description |
|---|---|
| Utilisateurs autorisés | Liste des utilisateurs ntfy autorisés à envoyer des commandes, séparés par virgule. Vide = tous |
| Mots interdits | Mots dont la présence dans le message bloque tout traitement (ex: delete,rm,sudo) |
| Timeout confirmation | Délai d'expiration d'une demande de confirmation Oui/Non, en secondes (défaut : 60 s) |
🔕 Mode silencieux
| Option | Description |
|---|---|
| Mode silencieux global | Bloque tous les envois et réponses automatiques |
| Désactiver les envois sortants | Bloque définitivement la commande send_message |
| Désactiver les réponses automatiques | Ignore les règles Réponses et Actions pour les messages entrants |
| En mode silencieux | Comportement : bloquer complètement ou passer en priorité 1 (min, silencieux) |
| Plages horaires | Périodes de silence automatique (ex: 22:00 → 08:00) |
Désactiver les envois sortants est utile par exemple pour un équipement dédié uniquement à la réception de commandes, sans jamais envoyer de notification sur le topic d'écoute.
💬 Onglet Réponses
Définit ce que Jeedom répond quand il reçoit un message correspondant à des mots-clés.
📋 Colonnes de la règle
| Champ | Description |
|---|---|
| Nom | Libellé de la règle (affiché dans le select Déclencher réponse) |
| Mots-clés | Termes déclencheurs, séparés par virgule. Ex: température salon, temp salon |
| Mode | Contient : le mot-clé peut être dans un mot plus long · Mot exact : doit être un mot séparé (évite les faux positifs) |
| Réponse | Texte envoyé, avec références {#id_commande#} pour insérer des valeurs en temps réel |
| Titre | Titre de la notification ntfy (optionnel) |
| Priorité | Priorité de la réponse (1–5) |
| Tags | Emojis ntfy pour la réponse |
| Image URL | URL d'une image attachée à la réponse |
🔗 Références de commandes dans la réponse
Cliquer sur + pour ouvrir le sélecteur de commandes Jeedom et insérer {#id#} à la position du curseur.
Salon : {#364#} °C — Humidité : {#365#} % — CO₂ : {#366#} ppm
Plusieurs commandes peuvent être combinées dans le même template. Les valeurs sont lues en parallèle au moment de l'envoi.
Chaque règle peut envoyer la réponse sur un topic différent du topic de réponse par défaut de l'équipement (champ Topic de réponse optionnel par règle).
⚡ Onglet Actions
Définit ce que Jeedom exécute quand il reçoit un message correspondant à des mots-clés.
📋 Champs de la règle
| Champ | Description |
|---|---|
| Nom | Libellé de la règle (affiché dans le select Déclencher action) |
| Mots-clés | Termes déclencheurs, séparés par virgule |
| Mode | Contient ou Mot exact (voir Onglet Réponses) |
| Action | Commande ou scénario Jeedom à exécuter (sélecteur standard Jeedom) |
| Confirmation | Si activé : envoie une notification avec boutons Oui ✓ / Non ✗ avant d'exécuter |
| Texte de confirmation | Message affiché avec les boutons (ex: Ouvrir le portail ?) |
| Texte succès | Message envoyé après exécution réussie |
| Texte annulation | Message envoyé si l'utilisateur clique Non |
| Priorité / Tags | Paramètres ntfy de la notification de confirmation |
✅ Confirmation Oui / Non
Quand la confirmation est activée, Jeedom génère un token sécurisé (128 bits, usage unique) et envoie une notification ntfy avec deux boutons HTTP.
- Oui ✓ → Jeedom exécute l'action et envoie le texte succès
- Non ✗ → Jeedom envoie le texte annulation et supprime le token
Le token expire automatiquement après le timeout configuré (onglet Équipement → Sécurité).
Les boutons ntfy s'affichent dans le détail du message (tap sur la notification), pas en bandeau sur l'écran verrouillé. Les boutons nécessitent que l'URL externe Jeedom soit accessible depuis Internet.
Si vous ne souhaitez pas recevoir les messages de confirmation/succès/annulation sur le topic de réponse, laisser les champs Texte succès et Texte annulation vides, et désactiver la confirmation. Seule l'exécution de l'action aura lieu, sans retour ntfy.
🎛️ Onglet Commandes
Les commandes sont créées automatiquement à la sauvegarde de l'équipement. Aucune action manuelle requise.
📤 Commandes d'envoi
| Commande | Type | Rôle |
|---|---|---|
| Envoyer message | Action / message | Déclenche l'envoi réel. Titre + corps. |
| Priorité | Action / slider (1–5) | Définit la priorité du prochain envoi (stocké en cache) |
| Tags | Action / string | Définit les tags du prochain envoi |
| URL | Action / string | Définit l'URL de clic du prochain envoi |
| Image | Action / string | Définit l'URL d'image attachée |
| Fichier | Action / string | Chemin d'un fichier local à envoyer en pièce jointe (PUT binaire) |
| Topic | Action / string | Surcharge ponctuelle du topic d'envoi |
| Markdown | Action / slider (0/1) | Active ou désactive le rendu Markdown |
| Icône | Action / string | URL d'icône pour la notification |
| Délai | Action / string | Envoi différé (30m, 9am…) |
| Cache ntfy | Action / string | Surcharge du cache ntfy (yes/no) |
| Firebase | Action / string | Surcharge Firebase (yes/no) |
🔁 Commandes de déclenchement
| Commande | Type | Rôle |
|---|---|---|
| Déclencher réponse | Action / select | Exécute une règle Réponse depuis un scénario Jeedom |
| Déclencher action | Action / select | Exécute une règle Action depuis un scénario Jeedom |
Les commandes de cache (Priorité, Tags, Icône…) doivent être appelées avant Envoyer message dans le scénario. La commande Envoyer message lit les caches, envoie la notification, puis réinitialise tous les caches.
Bloc action :
1. [Maison][ntfybridge] Priorité → 5
2. [Maison][ntfybridge] Tags → warning,fire
3. [Maison][ntfybridge] Envoyer message
Titre : Alarme
Message : Mouvement détecté zone A
📤 Envoyer des notifications
La commande send_message
Dans un scénario Jeedom :
Action → Message → [équipement ntfybridge] Envoyer message
Titre : Alarme
Message : Mouvement détecté zone A
⚙️ Options d'envoi
Appeler les commandes de cache avant send_message, ou utiliser les paramètres inline directement dans le message :
| Option | Commande cache | Inline | Valeurs |
|---|---|---|---|
| Priorité | send_priority (1–5) | [priority=5] | 1=min · 2=low · 3=défaut · 4=high · 5=urgent |
| Tags | send_tags | [tags=warning,bell] | emojis ntfy séparés par virgule |
| Icône | send_icon | [icon=https://...] | URL image (Android uniquement) |
| Markdown | send_markdown (0/1) | [md=1] | gras, italique, listes |
| Délai | send_delay | [delay=30m] | 30m, 9am, 2026-01-01T09:00 |
| Fichier | send_file | [file=/chemin] | chemin absolu sur le serveur |
| Topic | send_topic | [topic=alertes] | surcharge ponctuelle |
| URL clic | send_url | [url=https://...] | URL ouverte au tap |
Exemple complet avec inline :
[priority=5][tags=warning,fire][title=Alerte] Mouvement détecté zone A
| Fonctionnalité | Android | iOS | Web |
|---|---|---|---|
| Icônes personnalisées | ✅ | ❌ | ✅ |
| Markdown | ✅ | ⚠️ partiel |