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 <\>.
Cela fait un moment que je cherche à récupérer des données contenues sur une page WEB le plus simplement possible. Je suis débutant en programmation. J'ai bien trouvé des exemples, mais c'est toujours soit assez compliqué...
J'ai un boitier sur le réseau en 192.168.0.7 qui me fournit une page web contenant la production solaire.
Je ne peux pas modifier ces pages, je ne peux que les consulter.
J'aimerais récupérer par exemple avec un script lua toutes les minutes la donnée de puissance (ici 606 W)
Cela fait un moment que je cherche à récupérer des données contenues sur une page WEB le plus simplement possible. Je suis débutant en programmation. J'ai bien trouvé des exemples, mais c'est toujours soit assez compliqué...
J'ai un boitier sur le réseau en 192.168.0.7 qui me fournit une page web contenant la production solaire.
Je ne peux pas modifier ces pages, je ne peux que les consulter.
J'aimerais récupérer par exemple avec un script lua toutes les minutes la donnée de puissance (ici 606 W)
--[[
name : script_time_AltenergyPowerControl.lua
auteur : papoo
Mise à jour : 20/05/2018
date : 20/05/2018
Principe :
20/05/2018
]]--
--------------------------------------------
------------ Variables à éditer ------------
--------------------------------------------
local debugging = true -- true pour voir les logs dans la console log Dz ou false pour ne pas les voir
local script_actif = true -- active (true) ou désactive (false) ce script simplement
local delai = 1 -- délai d'exécution de ce script en minutes de 1 à 59
local adresse = "http://192.168.1.25/test3.html"
--------------------------------------------
----------- Fin variables à éditer ---------
--------------------------------------------
local nom_script = 'Altenergy Power Control'
local version = '0.1'
--------------------------------------------
---------------- Fonctions -----------------
--------------------------------------------
function voir_les_logs (s, debugging) -- nécessite la variable local debugging
if (debugging) then
if s ~= nil then
print (s)
else
print ("aucune valeur affichable")
end
end
end -- usage voir_les_logs("=========== ".. nom_script .." (v".. version ..") ===========",debugging)
--------------------------------------------
-------------- Fin Fonctions ---------------
--------------------------------------------
commandArray = {}
time = os.date("*t")
if script_actif == true then
--if (time.hour == 00 and time.min == 20) then -- tout les matins à 00h20
--if (time.min == 20 and ((time.hour == 7) or (time.hour == 13) or (time.hour == 18))) then -- 3 exécutions du script par jour à 7H20, 13h20 et 18H20
-- if time.hour % 2 == 0 then -- toutes les deux heures
-- if (time.hour%1 == 0 and time.min == 10) then -- Toutes les heures et 10 minutes
-- if time.min% 2 == 0 then
if ((time.min-1) % delai) == 0 then -- toutes les xx minutes en commençant par xx:01. xx définissable via la variable delai
voir_les_logs("=========== ".. nom_script .." (v".. version ..") ===========",debugging)
if adresse ~= '' then voir_les_logs('--- --- --- Adresse : '..adresse..' --- --- --',debugging) end
local rid = assert(io.popen("/usr/bin/curl -m5 ".. adresse))
local testhtml = rid:read('*all')
rid:close()
for instance in testhtml:gmatch("<body>(.-)</body>") do
div, LifetimeGeneration=instance:match('Lifetime generation(.-)<td>(.-)kWh </td>')
div1, LastSystemPower=instance:match('Last System Power(.-)<td>(.-)W </td>')
div2, GenerationofCurrentDay=instance:match('Generation of Current Day(.-)<td>(.-)kWh </td>')
end
if LifetimeGeneration ~= nil then
voir_les_logs("--- --- --- Lifetime Generation : ".. LifetimeGeneration.."kWh --- --- --",debugging)
else
voir_les_logs('--- --- --- Lifetime Generation est vide --- --- --',debugging)
end
if LastSystemPower ~= nil then
voir_les_logs("--- --- --- Last System Power : ".. LastSystemPower.."W --- --- --",debugging)
else
voir_les_logs('--- --- --- LastSystemPower est vide --- --- --',debugging)
end
if GenerationofCurrentDay ~= nil then
voir_les_logs("--- --- --- Generation of Current Day : ".. GenerationofCurrentDay.."kWh --- --- --",debugging)
else
voir_les_logs('--- --- --- GenerationofCurrentDay est vide --- --- --',debugging)
end
voir_les_logs("========= Fin ".. nom_script .." (v".. version ..") =========",debugging)
end -- if time
end
return commandArray
Comment je récupère les valeurs ? y a-t-il un "dummy" qui va bien ?
j'ai ajouté "local ECU1_device = 720 "
et j'ai mis un "compteur électrique" mais il y a rien
Effectivement il n’y a que la remontée d’info dans les logs
Pour tester le fonctionnement
Maintenant, en t’inspirant des scripts de cette section, tu va vite trouver comment faire un update device
--[[
name : script_time_AltenergyPowerControl.lua
auteur : papoo
Mise à jour : 20/05/2018
date : 20/05/2018
Principe :
20/05/2018
]]--
--------------------------------------------
------------ Variables à éditer ------------
--------------------------------------------
local nom_script = "ECUSolaire"
local debugging = true -- true pour voir les logs dans la console log Dz ou false pour ne pas les voir
local script_actif = true -- active (true) ou désactive (false) ce script simplement
local delai = 1 -- délai d'exécution de ce script en minutes de 1 à 59
local ECU_device = 721 -- renseigner l'id du device texte associé (dummy - text) P1 compteur intelligent
local adresse = "http://192.168.0.6/index.php/home"
--------------------------------------------
----------- Fin variables à éditer ---------
--------------------------------------------
local nom_script = 'Altenergy Power Control'
local version = '0.3'
--------------------------------------------
---------------- Fonctions -----------------
--------------------------------------------
function voir_les_logs (s, debugging) -- nécessite la variable local debugging
if (debugging) then
if s ~= nil then
print (s)
else
print ("aucune valeur affichable")
end
end
end -- usage voir_les_logs("=========== ".. nom_script .." (v".. version ..") ===========",debugging)
--------------------------------------------
-------------- Fin Fonctions ---------------
--------------------------------------------
commandArray = {}
time = os.date("*t")
if script_actif == true then
--if (time.hour == 00 and time.min == 20) then -- tout les matins à 00h20
--if (time.min == 20 and ((time.hour == 7) or (time.hour == 13) or (time.hour == 18))) then -- 3 exécutions du script par jour à 7H20, 13h20 et 18H20
--if time.hour % 2 == 0 then -- toutes les deux heures
--if (time.hour%1 == 0 and time.min == 10) then -- Toutes les heures et 10 minutes
--if time.min% 2 == 0 then
if ((time.min-1) % delai) == 0 then -- toutes les xx minutes en commençant par xx:01. xx définissable via la variable delai
voir_les_logs("=========== ".. nom_script .." (v".. version ..") ===========",debugging)
if adresse ~= '' then voir_les_logs('--- --- --- Adresse : '..adresse..' --- --- --',debugging) end
local rid = assert(io.popen("/usr/bin/curl -m5 ".. adresse))
local testhtml = rid:read('*all')
rid:close()
for instance in testhtml:gmatch("<body>(.-)</body>") do
div, LifetimeGeneration=instance:match('Lifetime generation(.-)<td>(.-)kWh </td>')
div1, LastSystemPower=instance:match('Last System Power(.-)<td>(.-)W </td>')
div2, GenerationofCurrentDay=instance:match('Generation of Current Day(.-)<td>(.-)kWh </td>')
end
if LifetimeGeneration ~= nil then
voir_les_logs("--- --- --- Lifetime Generation : ".. LifetimeGeneration.."kWh --- --- --",debugging)
else
voir_les_logs('--- --- --- Lifetime Generation est vide --- --- --',debugging)
end
if LastSystemPower ~= nil then
voir_les_logs("--- --- --- Last System Power : ".. LastSystemPower.."W --- --- --",debugging)
else
voir_les_logs('--- --- --- LastSystemPower est vide --- --- --',debugging)
end
if GenerationofCurrentDay ~= nil then
voir_les_logs("--- --- --- Generation of Current Day : ".. GenerationofCurrentDay.."kWh --- --- --",debugging)
else
voir_les_logs('--- --- --- GenerationofCurrentDay est vide --- --- --',debugging)
end
commandArray['UpdateDevice'] = ECU_device.."|0|"..LifetimeGeneration..";0;0;0;"..LastSystemPower..";0"
voir_les_logs("========= Fin ".. nom_script .." (v".. version ..") =========",debugging)
end -- if time
end
return commandArray