[RESOLU]Erreur Script Alerte-batteries-faibles-en-lua de papoo sous W10

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
balajol
Messages : 864
Inscription : 13 nov. 2015, 18:54
Localisation : 62

[RESOLU]Erreur Script Alerte-batteries-faibles-en-lua de papoo sous W10

Message par balajol »

Bonsoir,
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:
Erreur_Niv_Batteries.JPG
Erreur_Niv_Batteries.JPG (17.67 Kio) Consulté 1993 fois
Je pense que cela est du à la syntaxe de curl :oops: lignes 70 et 90

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
2024.6 PC Windows10 ; 2ème DEBIAN 10;DANFOSS LC13, Topp; Senseurs univ FIBARO FGBS001, Flood Sensor, ZMNHBD1 Flush 2 Relays ; FIBARO FGS222-FGS212;RFXCOM-RFXtrx433 USB 433.92MHz , Prises Phénix, Prises et Eclairage DI-O, SOMFY RTS,Sonoff ..
balajol
Messages : 864
Inscription : 13 nov. 2015, 18:54
Localisation : 62

Re: [RESOLU]Erreur Script Alerte-batteries-faibles-en-lua de papoo sous W10

Message par balajol »

Bonsoir,
Bon, pour ceux qui auraient le même Problème ;)
Je suis passé récemment sous Windows 10, sous seven j'avais téléchargé Curl pour mes scripts.
Sous W10 il existe une version intégrée sous : C:/Windows/System32/curl.exe
J'ai du également mettre le lien directement aux lignes 70 et 90 pour ne plus avoir l'erreur ci-dessus.
Le script est Maintenant Fonctionnel :)
Cdt
Bertrand
2024.6 PC Windows10 ; 2ème DEBIAN 10;DANFOSS LC13, Topp; Senseurs univ FIBARO FGBS001, Flood Sensor, ZMNHBD1 Flush 2 Relays ; FIBARO FGS222-FGS212;RFXCOM-RFXtrx433 USB 433.92MHz , Prises Phénix, Prises et Eclairage DI-O, SOMFY RTS,Sonoff ..
Répondre