Notification push icônes créées par juicy_fish – Flaticon
jeedom notification manager : En domotique il est important de bien gérer les notifications.
Je vais vous expliquer la solution que j’utilise pour gérer mes notifications à l’aide de Telegram,
Introduction :
Pourquoi faire un centre de notifications plutôt que de mettre dans chaque scénario la commande pour Telegram?
Tout simplement pour une question pratique dans le long terme.
Quand les scénarios deviennent nombreux et complexes, il est plus simple de choisir la centralisation de certaines fonctions, la notification en est un bon exemple.
Par exemple prenons le cas d’une notification pour l’externalisation de la sauvegarde.
Quand le transfert de la sauvegarde vers l’extérieur est fini , je reçois sur mon Telegram :
» 7h34 – Le Nettoyage et le transfert de la sauvegarde ont été faits. — Déclenchés par : Externalisation_Sauvegarde «
Regardons sous le capot de jeedom notification:
Scenario 1 : jeedom notification manager
N’ayez pas peur on va détailler par étapes le scénario jeedom notification manager.
0 – Bloc commentaire
Le bloc commentaire est très utile pour noter une explication de ce que fait le scénario et si il a des particularités.
Dans celui là en plus de l’explication on retrouve l’information pour son lancement avec les Tags pris en compte. Ex: Tags –> QUI=XX OPT=vocal CKI= »la variable définie dans le scénario qui appelle ce scénario {ScenarioKIXX} » MSG= »Phrase »
Explication des Tags :
QUI : La personne qui doit recevoir la notification ( Monsieur ou Madame ou Tout le monde )
OPT : Permet de passer des options aux notifications ( vocal ou urgent ou 0 )
- VOCAL : signifiera à notre scénario de faire dire la notification sur le google home du salon en plus de Telegram
- URGENT : permettra à notre scénario de nous alerter même la nuit (on y reviendra plus bas)
- O : indique pas d’options
CKI : Ce tag permet de savoir quel est le scénario qui a fait appel à a la notification ( très utile pour le « débugage ») obtenue par un Bloc code dans le scénario en question. (on y reviendra plus bas )
MSG : Le message envoyé à la notification.
1 – Premier Bloc SI
variable(EtatHome) == « Nuit » ET #OPT# != « Urgent »
- variable(EtatHome): Cette variable est attribuée par différents scénarios ou modes pour la gestion de la maison
- #OPT# : fourni via le tag OPT lors de l’appel à notre scenario.
Donc dans notre scénario : à son démarrage on teste l’état de la maison et l’option envoyée en Tag. Si le test est vrai on sort sinon on passe a la suite.
En français cela donne:
Si la maison est en mode nuit (tout le monde dort et on ne doit pas être dérangé ) ET que le Tag OPT est différent de « Urgent », alors on ne fait rien. Avec la commande STOP on sort du scénario.
2 – Deuxième Bloc SI
MSG# != « 0 » et #CKI# != « Jarvis »
- #MSG# : Fourni via le tag MSG lors de l’appel à notre scénario
- #CKI# : Fourni via le tag MSG lors de l’appel à notre scénario
Si notre test d’avant est Faux on arrive donc à celui-là.
Ici on teste si le Tag MSG est différent de 0 et si le scénario qui a déclenché notre scénario n’est pas « Jarvis » (on y reviendra dans un autre article )
En français cela donne:
Si le message à envoyer existe et qu’il n’a pas été demandé par « Jarvis », alors je sauvegarde mon message dans une variable et je copie mon message dans une variable pour le faire dire par le Google Home si besoin.
- Variable –> bak-Phrase : Utilisé dans un virtuel pour afficher sur le dashboard ou un design le dernier message envoyé pour notification.
- Valeur –> formatTime(#time#) – #MSG# : Permet de rajouter l’heure avant notre message sous la forme « 12h00 – Mon message »
- Variable –> PhraseTTS : Utilisé si besoin pour faire dire notre message à Google Home ou Alexa ou tout autre système dit TTS
- Valeur –> #MSG# : Copie notre message dans la variable.
3 – Les 3 prochains Bloc SI
#QUI# = « Monsieur » ou #QUI# = « Madame » ou #QUI# = « tous »
- #QUI# Fourni via le tag QUI lors de l’appel à notre scénario.
Ici on teste Si #QUI# = « Monsieur » ou » Madame » ou « Tous » suivant la réponse cela nous permet de savoir a qui envoyé la notification. Cela nous permet de choisir et personnaliser les notifications.
- Le « Message » est écrit sous la forme: formatTime(#time#) – #MSG# — Déclenché par : #CKI# ce qui nous permet de recevoir le message suivant :
« 7h34 – Le Nettoyage et le transfert de la sauvegarde ont été faits. — Déclenché par : Externalisation_Sauvegarde »
4 – Le sixième Bloc SI
#OPT# = 0 ou #OPT# = « Urgent »
- #OPT# Fourni via le tag QUI lors de l’appel a notre scénario
En français cela donne:
Si le tag OPT contient la valeur 0 ( c’est à dire pas d’option ) OU si le tag OPT contient la valeur « Urgent » alors je ne fais rien.
Sinon: Si le tag OPT contient la valeur « vocal » Alors je fais dire à (Google Home, Alexa, TTS) le Message enregistré dans la variable « PhraseTTS » à l’étape 2
5 – Dernier Bloc, Bloc Action
- Variable –> Phrase, ScenarioKI et PhraseTTS : Mise à Zéro de la variable pour être certain de ne pas renvoyer une ancienne « notif ».
Scénario 2 : Externalisation de la Sauvegarde
0 – Bloc Code
$scenario->setData(« ScenarioKI54 »,$scenario->getName());
Ce bout de code sert uniquement à récupérer dans une variable ici appelée « ScenarioKI54 » le nom du scénario afin de passer cette information dans le Tag KI
Pour éviter que chaque scénario envoie ou modifie l’information chaque scénario a une variable différente.. Le choix est très simple la variable s’appelle ‘ScenarioKI54 » l’id du scénario est 54.
1 – Bloc Action
- La première commande et celle de backup.
- La deuxième commande est celle de nettoyage du backup.
- Variable –> Phrase : Phrase envoyée au centre de notification.
- Scénario –> Gestion des notifications : On lance le scénario « Gestion des notifications » avec en TAG « QUI=monsieur OPT=0 CKI=variable(ScenarioKI54) MSG=variable(Phrase)«
En français cela donne:
Lance le scénario « Gestion des notifications » avec comme paramètres #QUI# envoie sur le telegram de monsieur, en utilisant aucune option #OPT#=0, avec l’information « nom du scénario actuel « Externalisation des sauvegardes » à l’aide de #CKI# =variable(ScenarioKI54), la phrase suivante #MSG# « Le Nettoyage et le transfert de la sauvegarde a été faite »
Conclusion pour jeedom notification manager
Maintenant il vous suffit pour utiliser jeedom notification manager dans chaque scénario de:
- rajouter le bloc code en personnalisant la variable associé
- ajouter l’action scénario –> gestion des notifications et ne pas oublier les TAG c’est très important.
On peut imaginer à terme dans jeedom notification manager de tester si internet fonctionne
Si internet fonctionne on envoie comme d’habitude..
Si internet ne fonctionne pas on envoie par SMS
A vous d’imaginer la suite ou les améliorations
et surtout venez en parler