Une fois n’est pas coutume, voici un script dont je ne suis pas l’auteur, mais que j’ai légèrement modifié et francisé pour faciliter sa compréhension.
Il est issue du wiki domoticz
Il a pour but de tester chaque jour si les niveaux de batteries des équipements actifs ne sont pas en dessous
du seuil mini « SeuilBatterie ». Il permet aussi un résumé hebdomadaire de l’ensemble des seuils batteries (optionnel)
Un mode debbugging vous permet d’afficher dans la console dz le bon déroulement du script. Une fois le débogage réalisé pensez à mettre la variable debugging à false afin de ne pas surcharger vos logs.
--[[ Script Originel https://www.domoticz.com/wiki/Battery_level_check Check battery level for all used devices Modifié par papoo MAJ : 08/03/2017 Principe : Ce script a pour but de tester chaque jour si les niveaux de batteries des équipements actifs ne sont pas en dessous du seuil mini "SeuilBatterie". Il permet aussi un résumé hebdomadaire de l'ensemble des seuils batteries (optionnel) ]]-- -------------------------------------------- ------------ Variables à éditer ------------ -------------------------------------------- local nom_script = "Verification du niveau des batteries" local version = "1.00" local debugging = false -- true pour voir les logs dans la console log Dz ou false pour ne pas les voir local SeuilBatterie = 15 -- seuil en dessous duquel la batterie figurera dans le rapport journalier local ResumSemaine = true -- true ou false, active ou désactive le résumé hebdomadaire local ResumJour= 1 -- dimanche est 1, jour du résumé hebdomadaire local EmailTo = "adresse1@gmail.com;adresse2@gmail.com" -- adresse mail, séparées par un ; si plusieurs (sans espace) local HeureRapport = 19 -- heure pour la génération du rapport local MinuteRapport = 10 -- minute pour la génération du rapport local Domoticz = "127.0.0.1" -- adresse domoticz local DomoticzPort = "8080" -- port domoticz local system = "linux" -- Systeme d'exploitation sur lequel est éxécuté ce script : linux, windows, synology pour le chemin vers JSON.LUA -------------------------------------------- ----------- Fin variables à éditer --------- -------------------------------------------- local Message = '' -------------------------------------------- ---------------- Fonctions ----------------- -------------------------------------------- function voir_les_logs (s, debugging) if (debugging) then if s ~= nil then print ("".. s .."") else print ("aucune valeur affichable") end end end -------------------------------------------- -------------- Fin Fonctions --------------- -------------------------------------------- --json = (loadfile "/home/pi/domoticz/scripts/lua/JSON.lua")() -- linux --json = (loadfile "C:\\Domoticz\\scripts\\lua\\json.lua")() -- windows if system == "windows" then json = (loadfile "c:\\Domoticz\\scripts\\lua\\json.lua")() -- For Windows elseif system == "synology" then json = (loadfile "/volume1/@appstore/domoticz/var/scripts/lua/JSON.lua")() -- For Synology else json = (loadfile "/home/pi/domoticz/scripts/lua/JSON.lua")() -- For Linux end commandArray = {} local time = os.date("*t") -- Résumé hebdomadaire de l'ensemble des appareils comportant une batterie if ResumSemaine == true and time.wday == ResumJour and time.hour == HeureRapport and time.min == MinuteRapport then voir_les_logs("=========== ".. nom_script .." (v".. version ..") ===========",debugging) -- Recuperation de la liste des èquipements comportant une batterie handle = io.popen("curl 'http://" .. Domoticz .. ":" .. DomoticzPort .. "/json.htm?type=devices&order=name'") devicesJson = handle:read('*all') handle:close() devices = json:decode(devicesJson) for i,device in ipairs(devices.result) do if device.BatteryLevel <= 100 and device.Used == 1 then Message = Message .. ' niveau batterie ' .. device.Name .. ' : ' .. device.BatteryLevel .. '%
' voir_les_logs('--- --- --- Niveau batterie ' .. device.Name .. ' : ' .. device.BatteryLevel .. '%',debugging) end end commandArray['SendEmail']='Niveaux Batteries Domoticz#'.. Message .. '#' .. EmailTo voir_les_logs("========= Fin ".. nom_script .." (v".. version ..") =========",debugging) -- Résumé journalier des batteries faibles elseif time.hour == HeureRapport and time.min == MinuteRapport then voir_les_logs("=========== ".. nom_script .." (v".. version ..") ===========",debugging) -- Get a list of all devices handle = io.popen("curl 'http://" .. Domoticz .. ":" .. DomoticzPort .. "/json.htm?type=devices&order=name'") devicesJson = handle:read('*all') handle:close() devices = json:decode(devicesJson) BatterieFaible = true for i,device in ipairs(devices.result) do if device.BatteryLevel < SeuilBatterie and device.Used == 1 then Message = Message .. ' niveau batterie ' .. device.Name .. ' : ' .. device.BatteryLevel .. '%
' voir_les_logs('--- --- --- Niveau batterie ' .. device.Name .. ' : ' .. device.BatteryLevel .. '%',debugging) end end if (BatterieFaible) then commandArray['SendEmail']='Niveaux Batteries Domoticz#'.. Message .. '#' .. EmailTo end -- mail seulement si une ou plusieurs batteries sont en dessous du seuil voir_les_logs("========= Fin ".. nom_script .." (v".. version ..") =========",debugging) end return commandArray