avec des commandes comme :
HA7net Serveur Ethernet 1-wire Haute Performance
http://192.168.1.54/1Wire/Search.html" qui retourne dans une page html la liste des capteurs connectés sur tout le réseau.
http://192.168.1.54/1Wire/ReadTemperatu ... 073B028828 qui retourne dans une page HTML la temperature du capteur.
et plus mais bon voila la présentation.
J'ai fait ou plutot copié (merci papoo le genial) un bout de code pour relever dans une premier essai la temperature d'un capteur.
mais je n'arrive pas a la passer dans le device comme papoo le fait si bien, comprend pas que ca ne marche, ou est que je me trompe ?
Pourtant en log, les valeurs apparaissent bien, malgré un formatage succint comme "23,5"
voila le code , si quelq'un a une idée, je suis preneur.
Faut ajouter que je suis nul en lua.
Code : Tout sélectionner
--[[
name : script_time_phase_lunaire.lua
auteur : Homerci
version : 1.01
Mise à jour : 01/08/2016
date : 15/07/2016
Principe :
Ce script inspiré du script de Papoo du 26/06/2016 sur les phases Lunaire
a pour but de remonter les informations du Boitier HA7NET qui gere facilement le réseau
de capteurs de temperature 1WIRE
en interrogeant ce boitier de cette façon:
Example: http://ha7.net ou 192.168.1.xxx/1Wire/ReadTemperature.html?Address_Array=9D00080027AF4A10,73000000B0E22E28 sur domoticz
Les informations disponibles : numero ID (unique de la sonde DS18B20, le taux de résolution
(9 ou 12), Code erreur de la page (0 = tout est Ok sinon réponse fausse)
]]--
-- ========================================================================
-- Variables à éditer
-- ========================================================================
local wir_salon = 26 -- renseigner l'id du device (temperature) Temp. du salon associé si souhaité, sinon nil
-- local wir_id_salon = 700000073B028828 ID de la sonde DS18B20 du salon
local wir_Sortie_eauchaude = 25 -- renseigner l'id du device(pourcentage) Sortie ECS Eau chaude associé si souhaité, sinon nil
-- 13000005966DC628 -- ID de la sonde DS18B20 sortie Eau Chaude ECS
-- local dz_distance = nil -- renseigner l'id du device (texte) distance Lune - Terre associé si souhaité, sinon nil
-- local dz_age = nil -- renseigner l'id du device (texte) Age de la Lune associé si souhaité, sinon nil
-- local dz_eclipse = nil -- renseigner l'id du device (texte) prochaine éclipse lunaire associé si souhaité, sinon nil
-- local dz_trajectoire = nil -- renseigner l'id du device (texte) Trajectoire associé si souhaité, sinon nil
-- local dz_constellation = nil -- renseigner l'id du device (texte) Constellation associé si souhaité, sinon nil
-- local dz_perigee = nil -- renseigner l'id du device (texte) Prochain périgée lunaire associé si souhaité, sinon nil
-- local dz_apogee = nil -- renseigner l'id du device (texte) Prochain apogée lunaire associé si souhaité, sinon nil
-- local dz_noeud = nil -- renseigner l'id du device (texte) Prochain noeud lunaire associé si souhaité, sinon nil
local debugging = true -- true pour voir les logs dans la console log Dz ou false pour ne pas les voir
-- ========================================================================
-- Fin Variables à éditer
-- ========================================================================
local indexArray=0
--========================================================================
--Fonctions
--========================================================================
function voir_les_logs (s)
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
--========================================================================
commandArray = {}
time = os.date("*t")
-- 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 éxecutions 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%1 == 0 then -- Toutes les 5 minutes
print('--- --- --- Script_time_Ha7net_Temperature.Lua --- --- ---')
local fname ="Ha7net_Releve_DS18b20.xml"
-- os.execute("wget -q -O " .. fname .. " http://www.calendrier-lunaire.net/")
os.execute("wget -q -O " .. fname .. " http://192.168.1.54/1Wire/ReadTemperature.html?Address_Array=700000073B028828,13000005966DC628" ) -- Si fichier existant le remplace
local f = io.open(fname, "r")
if f == nil then
print("Error opening file '" .. fname .. "'.")
os.exit(1)
end
local testHtml = f:read("*all")
f:close()
for instance in testHtml:gmatch("<body>(.-)</body>") do
-- print(instance)
-- local salon=instance:match('<strong>Nom de la phase : </strong>(.-)</li>')
local salon=instance:match('700000073B028828"></td><td colspan=1><INPUT CLASS="HA7Value" NAME="Temperature_0" ID="Temperature_0" TYPE="text" VALUE="(.-)"></td><td colspan=1><INPUT CLASS="HA7Value"')
-- local visibilite=instance:match('<strong>Visibilité : </strong>(.-)</li>')
local ecs_chaud=instance:match('13000005966DC628"></td><td colspan=1><INPUT CLASS="HA7Value" NAME="Temperature_1" ID="Temperature_1" TYPE="text" VALUE="(.-)"></td><td colspan=1><INPUT CLASS="HA7Value"')
-- print(ecs_chaud)
-- local distance=instance:match('Terre : </strong>(.-)</li>')
-- local age=instance:match('<strong>Age de la Lune : </strong> (.-)</li>')
-- local eclipse=instance:match('lunaire: </strong> (.-)</a></li>')
-- local trajectoire=instance:match('Trajectoire : </strong>(.-)<img')
-- local constellation=instance:match('</span>Constellation : </strong>(.-)<img')
-- local perigee=instance:match('Prochain périgée lunaire : </strong>(.-)<img')
-- local apogee=instance:match('Prochain apogée lunaire : </strong>(.-)<img')
-- local noeud=instance:match('Prochain noeud lunaire : </strong>(.-)<img')
voir_les_logs("--- --- --- Temp. du Salon : "..salon,debugging)
if wir_salon ~= nil and Salon ~= nil then -- Mise à jour du devise Salon si il existe
commandArray[indexArray] = {['updateDevice'] = wir_salon..'|0|'.. salon}
-- commandArray[indexArray] = {['domoticz_updateDevice'] = tostring(salon)}
indexArray=indexArray+1
end
voir_les_logs("--- --- --- ECS Sortie Eau chaude du ballon : "..ecs_chaud,debugging)
if wir_Sortie_eauchaude ~= nil and ecs_sortie_eauchaude ~= nil then -- Mise à jour du devise visibilité si il existe
-- ecs_chaud = string.gsub (ecs_chaud, " %%", "") -- supprime le caractere % afin de ne recuperer que la valeur
-- commandArray[indexArray] = {['UpdateDevice'] = wir_Sortie_eauchaude..'|0|'.. ecs_chaud}
-- domoticz_updateDevice(14068,'',ecs_chaud .. ";)
indexArray=indexArray+1
end
end -- for
end -- if time
return commandArray- xx