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