Lua et Chauffage Vanne DANFOSS

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 <\>.
Euton
Messages : 137
Inscription : 18 sept. 2019, 09:33

Lua et Chauffage Vanne DANFOSS

Message par Euton »

Bonjour,

J'ai commencé à vouloir gérer avec un périphérique virtuel de type "selector" avec 5 possibilités : Auto, Confort, Eco, Absent et Ete.
Dans la case "action" je pointe sur un scipt LUA mais je ne suis pas un spécialiste de la programmation dont voici le code :

Code : Tout sélectionner

commandArray = {}
if (devicechanged['Mode chauffage'] == 'Auto') then
oss = "curl 'http://Mon IP:8080/json.htm?type=command&param=enabletimer&idx=12'&"
os.execute(oss)
oss = "curl 'http://Mon IP:8080/json.htm?type=command&param=enabletimer&idx=13'&"
os.execute(oss)
oss = "curl 'http://Mon IP:8080:/json.htm?type=command&param=enabletimer&idx=14'&"
os.execute(oss)
oss = "curl 'http://Mon IP:8080/json.htm?type=command&param=enabletimer&idx=15'&"
os.execute(oss)
oss = "curl 'http://Mon IP:8080/json.htm?type=command&param=enabletimer&idx=8'&"
os.execute(oss)
oss = "curl 'http://Mon IP:8080/json.htm?type=command&param=enabletimer&idx=9'&"
os.execute(oss)
oss = "curl 'http://Mon IP:8080/json.htm?type=command&param=enabletimer&idx=10'&"
os.execute(oss)
oss = "curl 'http://Mon IP:8080/json.htm?type=command&param=enabletimer&idx=11'&"
os.execute(oss)

oss = "curl 'http://Mon IP:8080/json.htm?type=command&param=setsetpoint&idx=37&setpoint=19'&"
os.execute(oss)
oss = "curl 'http://Mon IP:8080/json.htm?type=command&param=setsetpoint&idx=40&setpoint=18'&"
os.execute(oss)
oss = "curl 'http://Mon IP:8080/json.htm?type=command&param=setsetpoint&idx=74&setpoint=25'&"
os.execute(oss)
oss = "curl 'http://Mon IP:8080/json.htm?type=command&param=setsetpoint&idx=43&setpoint=19'&"
os.execute(oss)

elseif (devicechanged['Mode chauffage'] == 'Confort') then
oss = "curl 'http://Mon IP:8080/json.htm?type=command&param=disabletimer&idx=12'&"
os.execute(oss)
oss = "curl 'http://Mon IP:8080/json.htm?type=command&param=disabletimer&idx=13'&"
os.execute(oss)
oss = "curl 'http://Mon IP:8080/json.htm?type=command&param=disabletimer&idx=14'&"
os.execute(oss)
oss = "curl 'http://Mon IP:8080/json.htm?type=command&param=disabletimer&idx=15'&"
os.execute(oss)
oss = "curl 'http://Mon IP:8080/json.htm?type=command&param=disabletimer&idx=8'&"
os.execute(oss)
oss = "curl 'http://Mon IP:8080/json.htm?type=command&param=disabletimer&idx=9'&"
os.execute(oss)
oss = "curl 'http://Mon IP:8080/json.htm?type=command&param=disabletimer&idx=10'&"
os.execute(oss)
oss = "curl 'http://Mon IP:8080/json.htm?type=command&param=disabletimer&idx=11'&"
os.execute(oss)

oss = "curl 'http://Mon IP:8080/json.htm?type=command&param=setsetpoint&idx=37&setpoint=21'&"
os.execute(oss)
oss = "curl 'http://Mon IP:8080/json.htm?type=command&param=setsetpoint&idx=40&setpoint=21'&"
os.execute(oss)
oss = "curl 'http://Mon IP:8080json.htm?type=command&param=setsetpoint&idx=74&setpoint=25'&"
os.execute(oss)
oss = "curl 'http://Mon IP:8080/json.htm?type=command&param=setsetpoint&idx=43&setpoint=19'&"
os.execute(oss)


elseif (devicechanged['Mode chauffage'] == 'Eco') then
oss = "curl 'http://Mon IP:8080/json.htm?type=command&param=disabletimer&idx=12'&"
os.execute(oss)
oss = "curl 'http://Mon IP:8080/json.htm?type=command&param=disabletimer&idx=13'&"
os.execute(oss)
oss = "curl 'http://Mon IP:8080/json.htm?type=command&param=disabletimer&idx=14'&"
os.execute(oss)
oss = "curl 'http://Mon IP:8080/json.htm?type=command&param=disabletimer&idx=15'&"
os.execute(oss)
oss = "curl 'http://Mon IP:8080/json.htm?type=command&param=disabletimer&idx=8'&"
os.execute(oss)
oss = "curl 'http://Mon IP:8080/json.htm?type=command&param=disabletimer&idx=9'&"
os.execute(oss)
oss = "curl 'http://Mon IP:8080/json.htm?type=command&param=disabletimer&idx=10'&"
os.execute(oss)
oss = "curl 'http://Mon IP:8080/json.htm?type=command&param=disabletimer&idx=11'&"
os.execute(oss)

oss = "curl 'http://Mon IP:8080/json.htm?type=command&param=setsetpoint&idx=37&setpoint=14'&"
os.execute(oss)
oss = "curl 'http://Mon IP:8080/json.htm?type=command&param=setsetpoint&idx=40&setpoint=14'&"
os.execute(oss)
oss = "curl 'http://Mon IP:8080/json.htm?type=command&param=setsetpoint&idx=74&setpoint=14'&"
os.execute(oss)
oss = "curl 'http://Mon IP:8080/json.htm?type=command&param=setsetpoint&idx=43&setpoint=14'&"
os.execute(oss)


elseif (devicechanged['Mode chauffage'] == 'Absent') then
oss = "curl 'http://Mon IP:8080/json.htm?type=command&param=disabletimer&idx=12'&"
os.execute(oss)
oss = "curl 'http://Mon IP:8080/json.htm?type=command&param=disabletimer&idx=13'&"
os.execute(oss)
oss = "curl 'http://Mon IP:8080/json.htm?type=command&param=disabletimer&idx=14'&"
os.execute(oss)
oss = "curl 'http://Mon IP:8080/json.htm?type=command&param=disabletimer&idx=15'&"
os.execute(oss)
oss = "curl 'http://Mon IP:8080/json.htm?type=command&param=disabletimer&idx=8'&"
os.execute(oss)
oss = "curl 'http://Mon IP:8080/json.htm?type=command&param=disabletimer&idx=9'&"
os.execute(oss)
oss = "curl 'http://Mon IP:8080/json.htm?type=command&param=disabletimer&idx=10'&"
os.execute(oss)
oss = "curl 'http://Mon IP:8080/json.htm?type=command&param=disabletimer&idx=11'&"
os.execute(oss)

oss = "curl 'http://Mon IP:8080/json.htm?type=command&param=setsetpoint&idx=37&setpoint=10'&"
os.execute(oss)
oss = "curl 'http://Mon IP:8080/json.htm?type=command&param=setsetpoint&idx=40&setpoint=10'&"
os.execute(oss)
oss = "curl 'http://Mon IP:8080/json.htm?type=command&param=setsetpoint&idx=74&setpoint=10'&"
os.execute(oss)
oss = "curl 'http://Mon IP:8080/json.htm?type=command&param=setsetpoint&idx=43&setpoint=10'&"
os.execute(oss)

elseif (devicechanged['Mode chauffage'] == 'Ete') then
oss = "curl 'http://Mon IP:8080/json.htm?type=command&param=disabletimer&idx=12'&"
os.execute(oss)
oss = "curl 'http://Mon IP:8080/json.htm?type=command&param=disabletimer&idx=13'&"
os.execute(oss)
oss = "curl 'http://Mon IP:8080/json.htm?type=command&param=disabletimer&idx=14'&"
os.execute(oss)
oss = "curl 'http://Mon IP:8080/json.htm?type=command&param=disabletimer&idx=15'&"
os.execute(oss)
oss = "curl 'http://Mon IP:8080/json.htm?type=command&param=disabletimer&idx=8'&"
os.execute(oss)
oss = "curl 'http://Mon IP:8080/json.htm?type=command&param=disabletimer&idx=9'&"
os.execute(oss)
oss = "curl 'http://Mon IP:8080/json.htm?type=command&param=disabletimer&idx=10'&"
os.execute(oss)
oss = "curl 'http://Mon IP:8080/json.htm?type=command&param=disabletimer&idx=11'&"
os.execute(oss)

oss = "curl 'http://Mon IP:8080/json.htm?type=command&param=setsetpoint&idx=37&setpoint=28'&"
os.execute(oss)
oss = "curl 'http://Mon IP:8080/json.htm?type=command&param=setsetpoint&idx=40&setpoint=28'&"
os.execute(oss)
oss = "curl 'http://Mon IP:8080/json.htm?type=command&param=setsetpoint&idx=74&setpoint=28'&"
os.execute(oss)
oss = "curl 'http://Mon IP:8080/json.htm?type=command&param=setsetpoint&idx=43&setpoint=28'&"
os.execute(oss)

end
return commandArray
J’obtiens des erreurs dans les logs. Pourriez vous m'aider ?
Merci d'avance pour votre aide
Dernière modification par Euton le 19 sept. 2019, 12:31, modifié 1 fois.
Domoticz version : 2024.7 (build 16178)
dzVents Version: 3.1.8
Python version : 3.11.2

Raspberry Pi OS : v12 (Bookworm)

Avec Domoticz depuis 28/11/2015
lmet
Messages : 252
Inscription : 30 juin 2017, 18:16
Localisation : Val d'Oise
Contact :

Re: Lua et Chauffage Vanne DANFOSS

Message par lmet »

Salut,
Tu gères le chauffage d'un immeuble ?
mais je ne suis pas un spécialiste de la programmation
Je confirme ;)
Beaucoup de commandes sont redondantes et sont lancées en tâche de fond (&), il y a une raison ?
Ton script est bien de type "Device" ?
Sinon quels sont les messages d'erreur ?
Peut-être en dire un peu plus ...
Domoticz : V4.10717
Zigate : V4.11230 plugin:4.5.4 firmware:031a
Mon petit blog domotique
denis_brasseur
Messages : 898
Inscription : 24 déc. 2018, 17:05
Localisation : (26)

Re: Lua et Chauffage Vanne DANFOSS

Message par denis_brasseur »

C'est vrai que sans log, cela va être difficile de t'aider.
Et utilise la balise </> pour poster ton code et gagner en lisibilité.
Et quelques explications seraient les bienvenues.
Pi3 + DD PiDrive - RFXtrx433 - AEON Labs ZW090
Euton
Messages : 137
Inscription : 18 sept. 2019, 09:33

Re: Lua et Chauffage Vanne DANFOSS

Message par Euton »

Merci à tous de vos réponses

Bonjour lmet, denis_brasseur,

Non je ne gère pas un immeuble, j'ai 4 vannes en tout, 3 pour les chambres et 1 salle de bain.
Pour les commandes en taches de fond, ce n'est pas volontaire car je ne sais pas comment faire autrement.
Le nom de mon fichier est : script_device_chauffage.lua mis dans .../scripts/lua

Log lors d'un changement d'état :
2019-09-19 10:28:58.676 Error: Error executing script command (/home/pi/domoticz/scripts/lua/script_device_chauffage.lua). returned: 32256

Donc quand j'utilise les commandes, les setpoint de mes radiateurs sont bien pris en compte.

Merci
Euton
Domoticz version : 2024.7 (build 16178)
dzVents Version: 3.1.8
Python version : 3.11.2

Raspberry Pi OS : v12 (Bookworm)

Avec Domoticz depuis 28/11/2015
denis_brasseur
Messages : 898
Inscription : 24 déc. 2018, 17:05
Localisation : (26)

Re: Lua et Chauffage Vanne DANFOSS

Message par denis_brasseur »

Tu a essayé cette syntaxe ?

Code : Tout sélectionner

  os.execute(curl............  
Pi3 + DD PiDrive - RFXtrx433 - AEON Labs ZW090
Euton
Messages : 137
Inscription : 18 sept. 2019, 09:33

Re: Lua et Chauffage Vanne DANFOSS

Message par Euton »

Re-bonjour denis_brasseur,

je l'ai remplacé @ip par "mon ip".

j'ai suivi tes recommandations et voila ce que j'ai dans les logs :
2019-09-19 12:11:12.660 Status: User: Admin initiated a switch command (75/Mode chauffage/Set Level)
2019-09-19 12:11:12.896 Status: Executing script: /home/pi/domoticz/scripts/lua/script_device_chauffage.lua
2019-09-19 12:11:12.921 Error: Error executing script command (/home/pi/domoticz/scripts/lua/script_device_chauffage.lua). returned: 32256
2019-09-19 12:11:12.922 Error: EventSystem: in /home/pi/domoticz/scripts/lua/script_device_chauffage.lua: /home/pi/domoticz/scripts/lua/script_device_chauffage.lua:19: attempt to call global 'curl' (a nil value)

Code : Tout sélectionner

commandArray = {}
if (devicechanged['Mode chauffage'] == 'Auto') then
os.execute(curl 'http://mon ip:8080/json.htm?type=command&param=enabletimer&idx=12')
os.execute(curl 'http://mon ip:8080/json.htm?type=command&param=enabletimer&idx=13')
os.execute(curl 'http://mon ip:8080/json.htm?type=command&param=enabletimer&idx=14')
os.execute(curl 'http://mon ip:8080/json.htm?type=command&param=enabletimer&idx=15')
os.execute(curl 'http://mon ip:8080/json.htm?type=command&param=enabletimer&idx=18')
os.execute(curl 'http://mon ip:8080/json.htm?type=command&param=enabletimer&idx=9')
os.execute(curl 'http://mon ip:8080/json.htm?type=command&param=enabletimer&idx=10')
os.execute(curl 'http://mon ip:8080/json.htm?type=command&param=enabletimer&idx=11')

os.execute(curl 'http://mon ip:8080/json.htm?type=command&param=setsetpoint&idx=37&setpoint=19')
os.execute(curl 'http://mon ip:8080/json.htm?type=command&param=setsetpoint&idx=40&setpoint=18')
os.execute(curl 'http://mon ip:8080/json.htm?type=command&param=setsetpoint&idx=74&setpoint=25')
os.execute(curl 'http://mon ip:8080/json.htm?type=command&param=setsetpoint&idx=43&setpoint=19')


elseif (devicechanged['Mode chauffage'] == 'Confort') then
...
end
return commandArray
D'après ce que je comprends le problème viendrait de cette commande

Code : Tout sélectionner

os.execute(curl 'http://mon ip:8080/json.htm?type=command&param=enabletimer&idx=12')
Merci
Euton
Domoticz version : 2024.7 (build 16178)
dzVents Version: 3.1.8
Python version : 3.11.2

Raspberry Pi OS : v12 (Bookworm)

Avec Domoticz depuis 28/11/2015
lmet
Messages : 252
Inscription : 30 juin 2017, 18:16
Localisation : Val d'Oise
Contact :

Re: Lua et Chauffage Vanne DANFOSS

Message par lmet »

Salut,

Voici un petit bout de code qui fonctionne chez-moi.
Cela va, en fonction de la ligne que tu dé-commentes, activer ou désactiver les timers.

Code : Tout sélectionner

local mon_ip = "127.0.0.1:8080"
commandArray = {}

if (devicechanged['Mode chauffage'] == 'Confort']) then
    local timer_id = {"8","9","10","11","12","13","14","15"}
    for i,v in ipairs (timer_id) do
        cmd_timer    = "curl " .. '"' .. mon_ip .. "/json.htm?type=command&param=enabletimer&idx=" .. v ..'"'
        -- cmd_timer    = "curl " .. '"' .. mon_ip .. "/json.htm?type=command&param=disabletimer&idx=" .. v ..'"'
        print ("Commande envoyée : " .. cmd_timer)
        ret = os.execute (cmd_timer)
    end
end    
return commandArray
Nb : J'utilise l'éditeur intégré.
Domoticz : V4.10717
Zigate : V4.11230 plugin:4.5.4 firmware:031a
Mon petit blog domotique
Euton
Messages : 137
Inscription : 18 sept. 2019, 09:33

Re: Lua et Chauffage Vanne DANFOSS

Message par Euton »

re bonjour,

ce code il faut le mettre en LUA ou DzVents ?

Ok pour l'editeur intégré j'avais oublié, par contre il me dit qu'il y a un problème au niveau de

Code : Tout sélectionner

 ret = os.execute (cmd_timer) 
avec une croix rouge "unexpected identifier Local near "="

merci d'avance
Euton
Domoticz version : 2024.7 (build 16178)
dzVents Version: 3.1.8
Python version : 3.11.2

Raspberry Pi OS : v12 (Bookworm)

Avec Domoticz depuis 28/11/2015
lmet
Messages : 252
Inscription : 30 juin 2017, 18:16
Localisation : Val d'Oise
Contact :

Re: Lua et Chauffage Vanne DANFOSS

Message par lmet »

Oui, c'est du lua script de type "device"
Je vois une coquille dans le code précédent à remplacer par le code ci-dessous

Code : Tout sélectionner

if (devicechanged['Mode chauffage'] == 'Confort') then
P.S Il faut adapter le tableau en fonction de tes idx
Domoticz : V4.10717
Zigate : V4.11230 plugin:4.5.4 firmware:031a
Mon petit blog domotique
Euton
Messages : 137
Inscription : 18 sept. 2019, 09:33

Re: Lua et Chauffage Vanne DANFOSS

Message par Euton »

bonsoir,

le je suis perdu et voici ce que j'ai programmé :

Code : Tout sélectionner

local mon_ip = "X.X.X.X:8080"
commandArray = {}
if (devicechanged['Mode chauffage'] == 'Auto') then
	Local timer_id = ("12","13","14","15","18","9","10","11")
	for i,v in ipairs (timer_id) do
	    cmd_timer = "curl " .. '"' .. mon_ip .. "json.htm?type=command&param=enabletimer&idx=" .. v .. '"'
	    print ("commande envoyée : " ..cmd_timer)
	    ret = os.execute (cmd_timer)
	end

os.execute(curl 'http://X.X.X.X:8080/json.htm?type=command&param=setsetpoint&idx=37&setpoint=19')
os.execute(curl 'http://X.X.X.X:8080/json.htm?type=command&param=setsetpoint&idx=40&setpoint=18')
os.execute(curl 'http://X.X.X.X:8080/json.htm?type=command&param=setsetpoint&idx=74&setpoint=25')
os.execute(curl 'http://X.X.X.X:8080/json.htm?type=command&param=setsetpoint&idx=43&setpoint=19')

elseif (devicechanged['Mode chauffage'] == 'Confort') then
.........
Voici les logs
2019-09-19 20:07:21.814 Error: EventSystem: in script_device_chauffage: [string "local mon_ip = "x.x.x.x:8080" ..."]:5: syntax error near 'timer_id'


Merci d'avance de me dire ce qu'il ne va pas
Dernière modification par Euton le 22 sept. 2019, 13:35, modifié 1 fois.
Domoticz version : 2024.7 (build 16178)
dzVents Version: 3.1.8
Python version : 3.11.2

Raspberry Pi OS : v12 (Bookworm)

Avec Domoticz depuis 28/11/2015
Répondre