Je tente d'adapter le script de papoo (Je le remercie de son partage) .
Sous windows, en version 2020.1 certains dispositifs Z-wave type Flood Sensor de Fibaro affichent un bandeau Jaune Batterie faible alors qu'ils sont alimentés en externe.. Je vais donc désactiver le contrôle intégré pour éviter des alarmes piles.
J'ai le message d'erreur suivant sur le script: Je pense que cela est du à la syntaxe de curl
Si papoo ou une personne à l'aise avec le Lua peut m'aiguiller
Merci par avance
Cdt
Bertrand
Code : Tout sélectionner
--[[
Script Originel https://www.domoticz.com/wiki/Battery_level_check https://pon.fr/alerte-batteries-faibles-en-lua/
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 = true -- 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 = "xxxxxx@free.fr;xxxxx@gmail.com" -- adresse mail, séparées par un ; si plusieurs (sans espace)
local HeureRapport = 18 -- heure pour la génération du rapport
local MinuteRapport = 57 -- minute pour la génération du rapport
local Domoticz = "127.0.0.1" -- adresse domoticz
local DomoticzPort = "8080" -- port domoticz
local system = "windows" -- Systeme d'exploitation sur lequel est éxécuté ce script : linux, windows, synology pour le chemin vers JSON.LUA
--------------------------------------------
----------- Fin variables à éditer ---------
--------------------------------------------
local Message = 'test batterie Faible'
--------------------------------------------
---------------- Fonctions -----------------
--------------------------------------------
function voir_les_logs (s, debugging)
if (debugging) then
if s ~= nil then
print ("<font color='#f3031d'>".. s .."</font>")
else
print ("<font color='#f3031d'>aucune valeur affichable</font>")
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:/Program Files (x86)/Domoticz/scripts/lua/JSON.lua")() -- 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
curl = 'C:/curl-7.50.3-win32-mingw/bin/curl.exe '
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 .. '%<br>'
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 .. '%<br>'
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