Automatisation volet roulant - Problème sur calcul d'une valeur moyenne

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 <\>.
Anthony72
Messages : 13
Inscription : 05 mai 2018, 15:22

Automatisation volet roulant - Problème sur calcul d'une valeur moyenne

Message par Anthony72 »

Bonjour.

Je suis en train de réaliser un script en DzVent pour l'automatisation de mes volets roulants.

Pour le principe de fonctionnement, je voudrais que mes volets se ferment à 30% lorsque ma façade est en plein soleil et se rouvrent lorsqu'il n'y à plus de soleil. Afin que mes volets ne se rouvrent pas à chaque fois qu'un petit nuage passe, je souhaiterais utiliser un niveau niveau d'éclairement moyen sur 15 minutes.

Avec ce script, je suis parvenu à récupérer le niveau d'éclairement extérieur à l'aide d'une sonde SERVODAN raccordée sur un module fibaro RGBW :

Code : Tout sélectionner

return {
	on = {
		active = true,
		timer = {'every minute'},
		devices = {
			'Capteur 0-10V - Entrée n°1',
			'Luminosité extérieure',
		},
        data = {
            Lum_table = { history = true, maxMinutes = 15 }
        }
	},

	execute = function(domoticz, switch, timer)
        	    
		-- Mise à jour du capteur virtuel
		Lum_ext=domoticz.devices('Capteur 0-10V - Entrée n°1').level
		domoticz.devices('Luminosité extérieure').updateLux(Lum_ext*600)
		
		-- Calcul de la moyenne
		domoticz.data.Lum_table.add(Lum_ext) -- Ajout des valeurs à la table
		Lum_moy = domoticz.data.Lum_table.avg() -- Calcul de la valeur moyenne
		
        end
La récupération de la valeur du module RGBW et la mise a jour du capteur virtuel se font sans problème. Mon problème est sur la ligne : domoticz.data.Lum_table.add(Lum_ext)

J'ai le message d'erreur suivant :

Code : Tout sélectionner

2018-05-05 15:21:00.711 dzVents: Error (2.4.5): An error occured when calling event handler Gestion volets roulants
2018-05-05 15:21:00.711 dzVents: Error (2.4.5): ...ts/dzVents/generated_scripts/Gestion volets roulants.lua:32: attempt to index field 'data' (a nil value) 
A priori, je ne parviens pas à mettre la valeur de Lum_moy dans la table. Je n'arrive pas à comprendre le sens de cette erreur, peut-être un problème de format ?

Quelqu'un aurait une idée ?
papoo
Messages : 2029
Inscription : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

Re: Automatisation volet roulant - Problème sur calcul d'une valeur moyenne

Message par papoo »

Anthony72 a écrit :
Avec ce script, je suis parvenu à récupérer le niveau d'éclairement extérieur à l'aide d'une sonde SERVODAN raccordée sur un module fibaro RGBW :
Bonjour Anthony72
pourrais tu nous apporter des détails sur cette sonde SERVODAN ainsi que son raccordement sur mobile fibaro stp?

pour le script dzvents :
à priori il faut déclarer le device dont on veut mémoriser les données
Lum_table est bien un device?

Code : Tout sélectionner

			local switch = domoticz.devices(USAGE_DEVICES[device.name])
			local history = domoticz.data[device.name]
			
			history.add(device)
			print (history.avg())
            
            if (switch.active and history.avg() == 0) then
			 	switch.switchOff()
			end
https://www.domoticz.com/forum/viewtopi ... 86#p160764
domoticz beta/RaspBerry PI3 stretch
https://pon.fr github
Anthony72
Messages : 13
Inscription : 05 mai 2018, 15:22

Re: Automatisation volet roulant - Problème sur calcul d'une valeur moyenne

Message par Anthony72 »

Bonsoir Papoo.

Merci pour ton retour.

Ma sonde SERVODAN est une sonde de luminosité 0-10V que j'ai raccordée sur l'entrée n°1 du module fibaro RGBW :

Image

Dans le paramètre 14, j'ai mis la valeur -30584 pour avoir les 4 entrées en 0-10V. J'ai ensuite créé un dimmer avec mon entrée n°1 qui varie entre 0% (0V) et 100% (10V) :

Image

Je récupère cette valeur grâce à : domoticz.devices('Capteur 0-10V - Entrée n°1').level
Je multiplie cette valeur par 600 (car ma sonde mesure entre 0 et 60 000 lux) puis je mets cette valeur dans un capteur de luminosité virtuel :

Image

Mon problème doit être là, Lum_table est une variable et non un device. Ça doit être pour ça qu'il ne veut pas y ajouter de valeurs. Je vais essayer de comprendre et d'adapter le bout de script que tu m'as mis.
papoo
Messages : 2029
Inscription : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

Re: Automatisation volet roulant - Problème sur calcul d'une valeur moyenne

Message par papoo »

Cette sonde ne doit pas être livrée seule, je ne l'ai pas trouvée sur leur site.
je suis à la recherche d'un système fiable pour mesurer la luminosité extérieure pour moi aussi fermer les volets au dessus d'un certain seuil.
domoticz beta/RaspBerry PI3 stretch
https://pon.fr github
papoo
Messages : 2029
Inscription : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

Re: Automatisation volet roulant - Problème sur calcul d'une valeur moyenne

Message par papoo »

Merci
domoticz beta/RaspBerry PI3 stretch
https://pon.fr github
papoo
Messages : 2029
Inscription : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

Re: Automatisation volet roulant - Problème sur calcul d'une valeur moyenne

Message par papoo »

essai en remplaçant

Code : Tout sélectionner

data = {
            Lum_table = { history = true, maxMinutes = 15 }
        }
par

Code : Tout sélectionner

data = {
            ['Capteur 0-10V - Entrée n°1'] = { history = true, maxMinutes = 15 }
        }
ou

Code : Tout sélectionner

data = {
            ['Luminosité extérieure'] = { history = true, maxMinutes = 15 }
        }
domoticz beta/RaspBerry PI3 stretch
https://pon.fr github
Anthony72
Messages : 13
Inscription : 05 mai 2018, 15:22

Re: Automatisation volet roulant - Problème sur calcul d'une valeur moyenne

Message par Anthony72 »

Merci Papoo, j'ai essayé de faire la moyenne sur 'Luminosité extérieur'. J'ai essayé d'adapter le script que tu m'as mis, mais ça dépasse mes compétences. J'en suis arrivé là :

Code : Tout sélectionner

local switch = domoticz.devices('Luminosité extérieure')
local history = domoticz.data
history.add(devices)
Lum_moy = history.avg()
Je pense que la première ligne est ok.
La deuxième ne me met pas d'erreur mais je ne sais pas si elle est bonne, je n'en comprend pas vraiment son sens.
Par contre, j'ai une erreur sur la 3ème. Je pense qu'il faut mettre quelque chose à la place de device, mais je ne vois pas quoi.

Toute aide est la bienvenue :D
papoo
Messages : 2029
Inscription : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

Re: Automatisation volet roulant - Problème sur calcul d'une valeur moyenne

Message par papoo »

pour moi il faut modifier
local history = domoticz.data
par
local history = domoticz.data['Luminosité extérieure']
Dernière modification par papoo le 07 mai 2018, 22:54, modifié 1 fois.
domoticz beta/RaspBerry PI3 stretch
https://pon.fr github
Anthony72
Messages : 13
Inscription : 05 mai 2018, 15:22

Re: Automatisation volet roulant - Problème sur calcul d'une valeur moyenne

Message par Anthony72 »

J'ai le même message :

Code : Tout sélectionner

 2018-05-07 22:48:00.527 dzVents: Error (2.4.5): An error occured when calling event handler Gestion volets roulants
2018-05-07 22:48:00.527 dzVents: Error (2.4.5): ...ts/dzVents/generated_scripts/Gestion volets roulants.lua:36: attempt to index local 'history' (a nil value) 
Répondre