J'utilise quelques capteurs sans fil alimentés par une pile lithium ou par des accus rechargeables comme dans mes sondes de température et d'humidité 433MHz (banggood). Depuis que j'ai mis des piles rechargeables Eneloop l'autonomie est de 4 à 6 mois, et je suis toujours satisfait de ces sondes.
Mais comment se rendre compte que les piles sont vides et doivent être remplacées ?
C'est ce que je vous propose de voir aujourd'hui : recevoir une notification email quand une sonde ne communique plus avec Domoticz.
Quel intérêt ?
Il faut se rendre compte assez rapidement d'un capteur/sonde qui ne communique plus pour éviter d'avoir des trous dans les courbes, mais pas que. Si vous avez des scénarios / scripts liés à ces sondes vous risquez d'avoir des petites surprises, sans parler du WAF qui va en prendre un coup ^^
Autre intérêt : être notifié des sondes/capteurs qui ont du mal à communiquer avec Domoticz : trop de distance, obstacles, etc.
La solution
Il existe de nombreuses façon de parvenir au résultat. J'ai opté pour un script dzVents (lua) directement dans Domoticz.
Menu Configuration > Plus d'options >
Créer un nouveau script en cliquant sur le "+" > dzVents > device
Effacez le contenu par défaut, donnez-lui un nom :
Puis collez le contenu du script ▶️ pingSondes.lua (raw)
Ce script s'exécute toutes les 6 heures (paramétrable dans la section "timer") et va parcourir la dernière date de communication de chaque sonde déclarée dans le tableau "devicesToCheck" :
Si la dernière communication est plus ancienne que le seuil en minutes alors il vous envoie un email pour vous prévenir
Vous devez saisir le nom de vos sondes à la place des 2 exemples "Temperature Salon" et "Detecteur porte entree".
Attention : Si vous collez insérez directement le code dans un fichier dans /home/pi/domoticz/scripts/lua il ne sera pas éditable dans l'interface web de Domoticz.
Adaptable
La notification est faite par email car je considère que cela n'a rien d'urgent.
Mais vous pouvez tout à fait utiliser une autre méthode configurée dans Domoticz : sms, push, etc. et adapter le code dzVents.
ℹ️ Besoin d'aide ?
❌ Si le script ne fonctionne pas, vérifiez qu'il est bien sur "on" dans l'éditeur LUA (en haut à gauche).
❌ Si vous obtenez cette erreur :
pingSondes.lua:xx: attempt to compare nil with number
Vérifiez le nom de votre sonde, il doit être identique au nom dans le menu Configuration > Dispositifs (la casse n'est pas importante). Privilégiez des noms courts sans accent.
❌ Si vous ne recevez par la notification, vérifiez la configuration dans le menu :
Configuration > Paramètres > Email
Chez SFR j'utilise smtp.numericable.fr sur le port 25, sans identifiant ni mot de passe, avec un email d'expéditeur d'un domaine inexistant (pour éviter des blocages liés à SPF). Ce SMTP miserable marche encore et il est plus tolérant que celui de SFR 😉
Conclusion
En complément je vous conseille de jeter un oeil sur check dead devices by desc.lua ou dzBasic qui permettent de faire sensiblement la même chose à partir du champ description.
Je n'ai rien inventé et je suis allé au plus simple dans le code, ça fait le job. N'hésitez pas à partager vos améliorations 🙂
complément : documentation dzVents
Auteur : Mr Xhark
Fondateur du blog et passionné par les nouvelles techno, suivez-moi sur twitter
8 commentaires
Merci pour le tips !
Depuis le temps que je voulais le faire
Il ne reste plus qu'a me motiver à faire des recherche pour signaler quand ... Domoticz complet ne répond plus, si jamais tu avais l'intention d'en parler prochainement 🙂
Par contre j'ai ça en boucle : 2021-05-21 21:16:58.740 ...omoticz/scripts/dzVents/generated_scripts/ping sonde.lua:11: '}' expected (to close '{' at line 6) near '{'
Une idée ? J'ai essayé en enlevant un espace, le { ça ne fonctionne pas non plus..
@lolo: peux-tu envoyer ton script sur pastebin ? comme ça je dirais que y'a un problème d'accolade ou de parenthèse mal positionnée
Bonjour Xhark et merci pour le script.
Celui-ci ne fonctionne pas chez moi.
J’ai modifié la partie « devicesToCheck » avec mes sondes Banggood :
local devicesToCheck = {
-- liste des sondes a verifier
-- name: insensible à la casse, seuil: en minutes
{ ['name'] = 'Palier', ['seuil'] = 30 },
{ ['name'] = 'Cuisine', ['seuil'] = 30 },
{ ['name'] = 'Chambre parents', ['seuil'] = 30 },
{ ['name'] = 'Congélateur sous-sol', ['seuil'] = 30 },
{ ['name'] = 'Cave à vin', ['seuil'] = 30 },
{ ['name'] = 'Température extérieure', ['seuil'] = 30 }
}
return {
Le timer est sur 1 heure et mon émail est renseigné à la place de 'votre@email.com'
Les notifications paramétrées sur les température fonctionnent parfaitement par réception de message sur mon émail.
Pourquoi cela ne fonctionne t’il pas alors qu’une de mes sonde est restée 24 heures sans communiquer.
Cordialement.
Eric
Bonjour Xhark,
Après de nouvelles vérifications, le script fonctionne.
Lors de sa création je n'avais pas mis "device".
Merci encore.
Eric
@Eric: Super, merci pour ton retour, "device" est important car c'est le déclencheur
Bonjour,
Je suis en train d'adapter votre script à mon installation, seulement je ne peut utiliser que la notification par Telegram et je bute la dessus, auriez vous une idée de transformation du script pour que ça marche?
Merci d'avance
@Michel91: Bonjour, tu peux essayer avec :
https://dev.to/nathannosudo/bash-script-to-send-a-message-in-telegram-from-your-terminal-20c7