Page 1 sur 1
DzVents
Publié : 03 juin 2021, 17:38
par lecanard38
Bonjour à tous,
Je recherche une âme charitable pour m'aider récupérer une valeur d'un device dans un paramètre utilisateur.
J'ai fais ça mais j'ai un msg d'erreur :
Code : Tout sélectionner
return {
on = {
devices = {},
timer = {'every 1 minutes'},
},
execute = function(dz)
P59min= domoticz.devices['Salon'].Temp
end
}
Mon device est Salon et j'aimerais enregistrer sa valeur dans une variable utilisateur existante P59min.
Message d'erreur :
domoticz/scripts/dzVents/generated_scripts/Script #2.lua:8: attempt to index a nil value (global 'domoticz')
J'y connais rien en DZvents et j'ai beau lire et chercher je ne trouve pas de tutos qui puissent m'aider.
Re: DzVents
Publié : 03 juin 2021, 19:00
par boum
Il n'y a pas de magie. Si tu ne définis pas domoticz comme paramètre (
dz ≠ domoticz), il ne sera pas reconnu.
Code : Tout sélectionner
return {
on = {
devices = { 'Salon' },
},
execute = function(domoticz, item)
local temp = item.temperature
domoticz.variables('P59min').set(temp)
end
}
Re: DzVents
Publié : 04 juin 2021, 09:31
par lecanard38
Merci boum pour ton retour. En effet, ça fonctionne ! Juste un problème car la valeur retournée doit être type string je suppose et donc j'ai une erreur dans les log. J'ai du passer la déclaration de la variable en string. Bizarre pour une valeur de température.
J'aurais une autre question. Je voudrais récupérer la valeur d'un autre device mais ça ne marche pas.
code initial qui fonctionne avec la température:
Code : Tout sélectionner
return {
on = {
devices = { 'Salon' },
timer = {'every 1 minutes'},
},
execute = function(domoticz, item)
local temp = item.temperature
domoticz.variables('P59min').set(temp)
end
}
Je veux récupérer le device "Enphase kWh Production"
Celui que j'essaye de faire fonctionner (j'ai juste changé 2 lignes) :
Code : Tout sélectionner
return {
on = {
devices = { 'Enphase kWh Production' },
timer = {'every 1 minutes'},
},
execute = function(domoticz, item)
local temp = item.General
domoticz.variables('P59min').set(temp)
end
}
Bonne journée
Re: DzVents
Publié : 04 juin 2021, 10:01
par boum
Jamais utilisé ce type de dispositif, mais a priori General n'existe pas. Il faut sûrement utiliser une des propriétés suivantes :
https://www.domoticz.com/wiki/DzVents:_ ... mart_meter
Aussi, d'avoir rajouté le déclencheur timer fait que dans la fonction, item ne marchera pas pareil. Il pointe sur le déclencheur et ce ne sera donc pas le dispositif. Dans ce cas il faudra utiliser domoticz.devices('bla').
Si la variable est une string, la conversion à effectuer est domoticz.variables('coin').set(tostring(valeur)).
Re: DzVents
Publié : 04 juin 2021, 14:03
par lecanard38
Voici ce que j'ai mis comme code :
Code : Tout sélectionner
return {
on = {
--devices = { 'Salon' },
devices = { 'Enphase kWh Production' },
timer = {'every 1 minutes'},
},
execute = function(domoticz, timer)
--local temp = item.temperature
--local temp = item.KWh
local temp = domoticz.devices('Enphase kWh Production').kWh
domoticz.variables('P59min').set(temp)
end
}
Ca à l'air de marcher, voici le log domoticz
2021-06-04 14:01:39.780 Status: dzVents: Info: Handling events for: "Enphase kWh Production", value: "2549.000;815262.000"
2021-06-04 14:01:39.780 Status: dzVents: Info: ------ Start internal script: Script #2: Device: "Enphase kWh Production (Envoy)", Index: 7752
2021-06-04 14:01:39.781 Status: dzVents: Info: ------ Finished Script #2
2021-06-04 14:01:39.782 Status: EventSystem: Script event triggered: /home/pi/domoticz/dzVents/runtime/dzVents.lua
2021-06-04 14:01:39.786 Status: Set UserVariable P59min =
Le device est bien reconnu par contre P59min ne se renseigne pas.
Re: DzVents
Publié : 04 juin 2021, 14:09
par lecanard38
Je me répond à moi-même.
Il fallait mettre WHtotal à la place de KWh