DzVents

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 <\>.
lecanard38
Messages : 34
Inscription : 26 avr. 2019, 16:20

DzVents

Message 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.
Dernière modification par Keros le 03 juin 2021, 19:58, modifié 1 fois.
Raison : Ajout des balise [code] pour plus de lisibilité
boum
Messages : 233
Inscription : 18 janv. 2019, 11:34
Localisation : France

Re: DzVents

Message 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
}
Domoticz v2022.2 sur linux-mint / Z-Wave-JS / RFXCom / Zigbee2MQTT
lecanard38
Messages : 34
Inscription : 26 avr. 2019, 16:20

Re: DzVents

Message 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
Pièces jointes
SnipImage.JPG
SnipImage.JPG (31.53 Kio) Consulté 2986 fois
boum
Messages : 233
Inscription : 18 janv. 2019, 11:34
Localisation : France

Re: DzVents

Message 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)).
Domoticz v2022.2 sur linux-mint / Z-Wave-JS / RFXCom / Zigbee2MQTT
lecanard38
Messages : 34
Inscription : 26 avr. 2019, 16:20

Re: DzVents

Message 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.
lecanard38
Messages : 34
Inscription : 26 avr. 2019, 16:20

Re: DzVents

Message par lecanard38 »

Je me répond à moi-même.
Il fallait mettre WHtotal à la place de KWh
Répondre