DzVents : Incrémentation d'une variable ne se fait pas

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 <\>.
Doudy
Messages : 457
Inscription : 07 mai 2016, 17:23

DzVents : Incrémentation d'une variable ne se fait pas

Message par Doudy »

Hello,
Ceci est un programme de test et n'est pas finalisé !
La variable "alertCount" reste sur "1", elle ne s'incrémente pas :?
Capture.PNG
Capture.PNG (20.29 Kio) Consulté 494 fois
Voici mon script :

Code : Tout sélectionner

--[[
check-ouverture-porte-garage - 04/06/2023
voir https://easydomoticz.com/forum/viewtopic.php?t=8643
From the domoticz examples online: http://www.domoticz.com/wiki/Event_script_examples

Send a warning when the garage door has been open for more than 30 minutes
]]

return {
	active = true,
	on = {
		--timer = {'every 5 minutes'}
		timer = {'every minute'}
	},

	execute = function(domoticz, device)
		local alertCount = 0
		domoticz.log(alertCount)
		local check_porte = domoticz.devices(628)
		local etat_porte = domoticz.devices(412)
		
		domoticz.log(' [-------------- START check-ouverture-porte-garage--------------] ')
		if (check_porte.active) then
			if (etat_porte.active) and (etat_porte.lastUpdate.minutesAgo >30 and alertCount < 3) then
				domoticz.log(' [-------------- START etat-porte-garage 1--------------] ')
				--domoticz.notify('Porte Garage', 'Porte Garage Ouverte depuis plus de 30 minutes...')
				alertCount = alertCount + 1
				domoticz.log ('Avertissement1 : ' .. alertCount)
				domoticz.log(' [-------------- STOP etat-porte-garage 1---------------] ')
			else
				timer = {'every 15 minutes'}
				domoticz.log(' [-------------- START etat-porte-garage--------------] ')
				--domoticz.notify('Porte Garage', 'Porte Garage Ouverte depuis plus de 45 minutes...')
				alertCount = alertCount + 1
				domoticz.log ('Avertissement2 : ' .. alertCount)
				domoticz.log(' [-------------- STOP etat-porte-garage---------------] ')
			end
		end
		domoticz.log(' [-------------- STOP check-ouverture-porte-garage---------------] ')
	end
}
Ma question : Pourquoi alertCount reste à 1 et ne s'incrémente pas ?
;)
Dernière modification par Doudy le 17 juin 2023, 13:13, modifié 2 fois.
RaspberryPi - RFLink - Zwave - WH2600
Domoticz : 2020.2 | Dashticz : V3.12 Master | dzvents : 3.0.2 | Python : 3.7.3
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: DzVents : Incrémentation d'une variable ne se fait pas

Message par Keros »

En hébergeant les images à l'extérieur du forum, il y a de fort risques qu'elles ne soient plus disponibles dans quelque temps comme ici, ou encore . Le mieux est de directement coller les logs dans le texte du message et le mettant entre les balises quote ou s'il y en a beaucoup code).

Les variables d'un script sont perdues à chaque fin d'exécution d'un script. Pour "garder en mémoire" une valeur, tu peux soit utiliser une userviariable ou les persistant data de DzVents.

Surtout, qu'au départ de ton script, tu remets ta variable 0. Donc 0+1 égal toujours 1.
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Neutrino
Messages : 2662
Inscription : 10 juil. 2015, 15:42
Localisation : Les Herbiers(85)

Re: DzVents : Incrémentation d'une variable ne se fait pas

Message par Neutrino »

tu incrémentes une variable locale.
Elle est réinitialisée à chaque éxecution du script.
Regarde du coté des Persistent Data : https://www.domoticz.com/wiki/DzVents:_ ... stent_data
Ma maison à plein d'IP ! :mrgreen:
SAV Bonjour. Vous avez vidé le cache ?
Doudy
Messages : 457
Inscription : 07 mai 2016, 17:23

Re: DzVents : Incrémentation d'une variable ne se fait pas

Message par Doudy »

Hello,

En utilisant "Persistant data" cela fonctionne parfaitement.
Merci

;)
RaspberryPi - RFLink - Zwave - WH2600
Domoticz : 2020.2 | Dashticz : V3.12 Master | dzvents : 3.0.2 | Python : 3.7.3
Répondre