Forum dédié aux bricolages d'objets connectés IOT et leurs communications avec DomoticZ :
- Remplacement de firmware des prises, modules relais ...
- Fabrication à base d'ESP8266, de NodeMCU, de Weemos et consorts ...
Toutes les lignes de logs ne correspondent pas à ton script.
Une qui nous intéresse est :
billyken a écrit : 11 nov. 2022, 22:10
2022-11-11 21:48:00.525 Error: dzVents: Error: (3.1.8) WebRelay 1.0: ...ents\generated_scripts/Test Entree Carte RJ45 Garage.lua:34: attempt to concatenate a nil value (global 'ipWeb')
Elle indique que la variable ipWeb est vide.
Elle est utilisée à la ligne local url = "http://"..ipWeb..":"..port.."/98"
Or la définition est local ipWebRelay = "192.168.1.4"
Neutrino a fait une petite erreur que tu peux corriger en faisant du débogage
if item.isTimer then
local url = "http://"..ipWebRelay..":"..port.."/98"
domoticz.log('Requesting data from relay', domoticz.LOG_DEBUG)
domoticz.openURL({url = url, method = 'GET', callback = scriptName}).afterSec(7)
voici le nouveau log
j'ai modifier l'entrée 8 et il recupere bien la bonne info mais il reste un probleme on dirait
Tu n'es pas obligé de créer autant de matériels Dummy. Un seul suffit à créer l'ensemble des dispositifs.
oui effectivement j'avais pas percuter comme ca je surcharge pour rien du coup je devrais crée un seul materiel et apres crée les 8 capteur virtuel en partant de celui ci
if (not response.ok) or (response.trigger ~= scriptName) then
domoticz.log('Last http response was not what expected. Trigger: '..response.trigger, domoticz.LOG_ERROR)
domoticz.log(response.data, domoticz.LOG_ERROR)
return
end
2022-11-12 11:02:00.524 Status: dzVents: Info: WebRelay 1.0: ------ Start internal script: Test Entree Carte RJ45 Garage:, trigger: "every 1 minutes"
2022-11-12 11:02:00.524 Status: dzVents: Debug: WebRelay 1.0: Requesting data from relay
2022-11-12 11:02:00.524 Status: dzVents: Debug: WebRelay 1.0: OpenURL: url = http://192.168.1.4:8080/98
2022-11-12 11:02:00.524 Status: dzVents: Debug: WebRelay 1.0: OpenURL: method = GET
2022-11-12 11:02:00.524 Status: dzVents: Debug: WebRelay 1.0: OpenURL: post data = nil
2022-11-12 11:02:00.524 Status: dzVents: Debug: WebRelay 1.0: OpenURL: headers = nil
2022-11-12 11:02:00.524 Status: dzVents: Debug: WebRelay 1.0: OpenURL: callback = WebRelay
2022-11-12 11:02:00.524 Status: dzVents: Info: WebRelay 1.0: ------ Finished Test Entree Carte RJ45 Garage
2022-11-12 11:02:07.740 Status: dzVents: Info: Handling httpResponse-events for: "WebRelay"
2022-11-12 11:02:07.740 Status: dzVents: Info: WebRelay 1.0: ------ Start internal script: Test Entree Carte RJ45 Garage: HTTPResponse: "WebRelay"
2022-11-12 11:02:07.741 Status: dzVents: Info: WebRelay 1.0: ------ Finished Test Entree Carte RJ45 Garage
2022-11-12 11:02:07.688 Error: Error opening url: http://192.168.1.4:8080/98
2022-11-12 11:02:07.740 Error: dzVents: Error: (3.1.8) WebRelay 1.0: HTTP/1.1 response: 18 ==>> Transferred a partial file
2022-11-12 11:02:07.741 Error: dzVents: Error: (3.1.8) WebRelay 1.0: An error occurred when calling event handler Test Entree Carte RJ45 Garage
2022-11-12 11:02:07.741 Error: dzVents: Error: (3.1.8) WebRelay 1.0: ...ents\generated_scripts/Test Entree Carte RJ45 Garage.lua:51: attempt to concatenate a nil value (global 'In')
tout a l'heure il arrivait a lire la suite de 0 et 1 et lorsque que je changer l'état de lentrée 8 par exemple on passer le srcipt voyait bien 1000000011111110 ou 1000000011111111 mais plus en supprimant la partie que tu ma demander
local scriptName = 'WebRelay'
local scriptVersion = '1.0'
local ipWebRelay = "192.168.1.4"
local port = "8080"
-- Dummy à créer :
local In = {"Entrée 1","Entrée 2","Entrée 3","Entrée 4","Entrée 5","Entrée 6","Entrée 7","Entrée 8"}
return {
active = true,
logging = {
level = domoticz.LOG_DEBUG, -- Uncomment to override the dzVents global logging setting
marker = scriptName..' '..scriptVersion
},
on = {
timer = {'every 1 minutes'},
httpResponses = {
scriptName,
},
},
execute = function(domoticz, item)
if item.isTimer then
local url = "http://"..ipWebRelay..":"..port.."/98"
domoticz.log('Requesting data from relay', domoticz.LOG_DEBUG)
domoticz.openURL({url = url, method = 'GET', callback = scriptName}).afterSec(7)
end
if not item.isHTTPResponse then return end
local response = item
if response.trigger == scriptName then
domoticz.log(response.data, domoticz.LOG_DEBUG)
for i = 1, 8 do
if string.sub(response.data,i+8,i+8)=="0" then
domoticz.devices(In[i]).switchOff()
else
domoticz.devices(In[i]).switchOn()
end
end
end
end
}