Introduction
Vous avez désormais un dashboad (voir article), mais comme vous n’allez pas passer votre vie à le surveiller pour identifier si les valeurs évoluent dans une direction qui n’est pas souhaitée, il est possible de mettre en place des alertes et ainsi être prévenu par mail (ou par SMS si vous avez une passerelle mail vers SMS… un sujet à venir ?)
Dans cet article nous allons créer une alarme lorsque la température sera située sous 15°C et au-dessus de 30°C et la désactiver lorsqu’elle est située entre 15°C et 30°C.
Il faudra bien évidemment adapter les seuils à votre contexte.
(Cet exemple peut tout à fait être utilisé pour l’humidité, en adaptant encore une fois les seuils)
Rules chains & types de nœuds
-
Filter Script node.

Avec un script, ce nœud va vérifier si la température est entre les seuils définis, et retournera False si c’est le cas et True si elle est en dehors des seuils.
-
Transform Script node.

Ce nœud servira à stocker la température dans les métadonnées du message.
-
Create alarm node.

Ce nœud crée une alarme si la température n’est pas dans l’intervalle souhaitée.
-
To Email node.

Ce nœud formate l’e-mail depuis un modèle existant.
-
Send Email node.

Ce nœud envoie l’e-mail créé avec les paramètres SMTP de ThingsBoard.
-
Clear alarm node.

Ce nœud désactive l’alarme (si elle existe) si la température revient dans l’intervalle souhaitée.
-
Rule Chain node.
Ce nœud transfère les messages reçus par ThingsBoard vers la chaîne créée ci-dessous.

Création d’une nouvelle rule chain
Allez dans Rules Chain, puis “Add Rule Chain” (en haut à droite).
Lui donner un nom et l’ajouter :

La sélectionner et l’ouvrir pour l’éditer :

Nous allons ensuite ajouter les différents nœuds :
-
Ajoutez un script de filtre et connectez-le au premier nœud Input. Cette étape évalue si la température est dans les seuils souhaités, avec le script suivant :
return msg.temperature < 15 || msg.temperature > 30;Le script retourne un booléen :
- True si la valeur est en dehors des seuils,
- False si la valeur est dans les seuils.
Renseigner un nom (ici “Under Threshold”), et le script :

-
Ajoutez un script de transformation et connectez-le au nœud précédent avec une relation True. Cette étape stocke la valeur de la température dans des métadonnées afin d’être réutilisée plus tard dans la rule chain, avec le script suivant :
metadata.temperature = msg.temperature; return {msg: msg, metadata: metadata, msgType: msgType};Renseigner un nom (ici “Add temperature to metadata”), et le script :

-
Ajoutez la création de l’alarme et connectez-le au nœud précédent avec une relation Success. Cette étape va effectivement ouvrir une nouvelle alarme dans Thingsboard lorsque les valeurs seront en dehors des seuils.
var details = {}; if (metadata.prevAlarmDetails) { details = JSON.parse(metadata.prevAlarmDetails); } return details;Renseigner un nom (ici “Create alarm”), le script et paramétrer l’alarme (type, sévérité & propagation) :

-
Ajoutez la création de l’e-mail, et connectez-le au nœud précédent avec une relation Created. Cette étape va formater l’e-mail (en se basant sur un modèle) qui sera envoyé à l’étape suivante. Renseigner les champs suivants :
- Name : “Temp Alarms Created Email”
- From Template : l’adresse e-mail émettrice des alarmes (voir plus bas la configuration)
- To Template : l’adresse e-mail destinataire des alarmes
- Subject Template :
Device ${deviceType} temperature alarm - Body Template :
Device ${deviceName} has temperature out of range: ${temperature} °C.
-
Ajoutez l’envoi de l’e-mail, et connectez-le au nœud précédent avec une relation Success. Cette étape va effectivement envoyer l’e-mail créé précédemment. Renseigner un nom (ici “Gandi SMTP”), et laisser la case cochée pour utiliser les paramètres mail système.

(Vous pouvez également configurer un serveur SMTP spécifique pour cette alarme en décochant la case Use system SMTP settings)
-
Enfin ajoutez la désactivation de l’alarme, et connectez-la au nœud du script filtre du début avec une relation False. Cette étape va désactiver l’alarme si la valeur de la température revient dans les seuils.
var details = {}; if (metadata.prevAlarmDetails) { details = JSON.parse(metadata.prevAlarmDetails); } return details;Renseigner un nom (ici “Clear Alarm”), le script et le type (identique à la création) :

Et sauvegarder cette nouvelle rule chain (boutton “Apply changes” en bas à droite).
Vous devriez avoir la rule chain suivante :

Modification de la root rule chain
Revenez sur la liste des rules chain et ouvrir la Root Rule Chain.
-
Ajoutez un nœud de type rule chain, et connectez-le au nœud sauvegardant la télémétrie, avec une relation Success. Cette étape transfère la télémétrie reçue dans Thingsboard vers la rule chain créée précédemment.
Renseigner un nom (ici “SHT-30 - Temp - Create & Clear Alarms”), et sélectionner la rule chain dans le menu déroulant :

Vous devriez avoir la root rule chain suivante :

Configuration globale SMTP
Connectez-vous en tant que sysadmin à votre Thingsboard.
Allez dans System Settings>Mail Server, et paramétrer en fonction de votre serveur SMTP (Gandi dans l’exemple ci-dessous) :
