Boucle for qui ne fonctionne 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 <\>.
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: Boucle for qui ne fonctionne pas

Message par Keros »

Oui pardon, le temps "système" est donné en secondes.

Par contre, tu risques d'avoir des soucis si tu compares les valeurs avec des secondes. Si tu branches manuellement ta pompe à 20h00min5s, le script s'exécutera toutes les minutes puis, à 20h10min00, il va comparer à la valeur calculée +600 : le delta de 5s risque de poser des soucis. Il faudrait arriver à comparer que des minutes pleines. Ce tuto peut peut-être t'aider à transformer l'os.time+600 en chaine 2022-09-01 etc

Ça commence à vraiment devenir une usine à gaz... Il doit y avoir plus simple.
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
david86
Messages : 224
Inscription : 06 avr. 2018, 08:22

Re: Boucle for qui ne fonctionne pas

Message par david86 »

Oui pour un truc si simple, ça prend des proportions.... mince alors.

Tu disais qu'en DzEvent ça passerait mieux ? Plus simple, je ne connais pas encore ce langage.
Raspberry Pi 3, Domoticz, RFXComm, contrôle RTS, contrôle SPOT PISCINE ;-), 2 inter Chacon 1000W, 2 inter CHACON 3000W, AEON Stick ZWAVE, 1 wall plug
1 WEMOS avec capteur pression
Boitier sonde + LED en cours...
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: Boucle for qui ne fonctionne pas

Message par Keros »

Je t'ai mis la condition en DzVents deux posts avant.

Le DzVents est basé sur du LUA. Ce sont les instructions d'échange et la gestion des trigger avec DomoticZ qui sont différentes entre les deux langages.
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
david86
Messages : 224
Inscription : 06 avr. 2018, 08:22

Re: Boucle for qui ne fonctionne pas

Message par david86 »

Ouaip ouaip, j’ai retrouvé ça. A y regarder et comprendre le fonctionnement 😀
Raspberry Pi 3, Domoticz, RFXComm, contrôle RTS, contrôle SPOT PISCINE ;-), 2 inter Chacon 1000W, 2 inter CHACON 3000W, AEON Stick ZWAVE, 1 wall plug
1 WEMOS avec capteur pression
Boitier sonde + LED en cours...
david86
Messages : 224
Inscription : 06 avr. 2018, 08:22

Re: Boucle for qui ne fonctionne pas

Message par david86 »

Bonjour,
Je me renseigne sur dzvents, ben c'est pas trop évident je trouve lol.
J'ai commencé par des trucs simple du genre si bouton1 == on alors afficher dans les log "blabla" ou encore si bouton1 == on alors bouton2==on après 10 secondes... Ça va.
J'arrive à m'envoyer des notifications, uniquement par pushover, telegram et mail échec... alors qu'en lua les 3 fonctionnent, là je n'ai pas que le pushover.
Et puis là ou je boucle, c'est les capteurs, lire une valeur et surtout l'afficher dans les log, du genre si bouton == on, afficher valeur de ma sonde pH...

Je ne sais pas comment déclarer ma sonde par rapport au script, pas dans les déclencheurs sinon dès que ma sonde envoie une valeur de pH le script s’exécute alors que je ne veux que ce soit que sur ma condition bouton1.
Où et comment déclare-t-on un capteur ? Comment l'appelle-t-on dans le script stp ?

Ca fait 2 heures que je suis sur le wiki, ce matin j'ai regardé une vidéo d'un anglais sur YT et le dzvents ben je bloque total là...

merci
Raspberry Pi 3, Domoticz, RFXComm, contrôle RTS, contrôle SPOT PISCINE ;-), 2 inter Chacon 1000W, 2 inter CHACON 3000W, AEON Stick ZWAVE, 1 wall plug
1 WEMOS avec capteur pression
Boitier sonde + LED en cours...
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: Boucle for qui ne fonctionne pas

Message par Keros »

Mets-nous ton code, on pourra t'aider plus précisément.
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
david86
Messages : 224
Inscription : 06 avr. 2018, 08:22

Re: Boucle for qui ne fonctionne pas

Message par david86 »

Le voici, mais pour le moment celui-ci est plus une ébauche pour me familiariser avec le dzvents.

Code : Tout sélectionner

return {
	on = {
		devices = {
			'Inter-test', --mon inter virtuel
			'Pression-pompe' -- le nom de mon capteur de pression qui est virtuel
		}
	},
	execute = function(domoticz, inter)
	    if (inter.state == 'On') then
	        p = domoticz.devices['Pression-pompe'].value 
	        --local p = Pression-pompe.value
	        --timer.switchOn().afterSec(2)
	        domoticz.log("La pression de la piscine est de : "..p)
           	-- domoticz.email('Hey', 'The group is on', 'xxxxxx.xxxxxx@gmail.com')
        --else
           -- print(inter.lastUpdate.secondsAgo)
        --domoticz.notify('Piscine', 'La pression est de '..p, domoticz.PRIORITY_NORMAL,domoticz.SOUND_DEFAULT, "" , domoticz.NSS_PUSHOVER)
        --domoticz.notify('telegram', 'The room is on fire', domoticz.PRIORITY_EMERGENCY,domoticz.SOUND_DEFAULT, "" , domoticz.NSS_TELEGRAM)
        end

	end
}
Raspberry Pi 3, Domoticz, RFXComm, contrôle RTS, contrôle SPOT PISCINE ;-), 2 inter Chacon 1000W, 2 inter CHACON 3000W, AEON Stick ZWAVE, 1 wall plug
1 WEMOS avec capteur pression
Boitier sonde + LED en cours...
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: Boucle for qui ne fonctionne pas

Message par Keros »

Dans la partie devices = { } tu as indiqué 'Pression-pompe', cela signifie que quand le widget 'Pression-pompe' sera mis à jour, le script sera exécuté. C'est souhaité ?

Le DzVents utilise différentes infos que le LUA : la condition pour un interrupteur est if inter.active then ou if not inter.active then

Petit conseil : conserve le terme item dans execute = function(domoticz, item). Ainsi, dans tous tes scripts, tu auras la même variable qui sera le déclencheur. Tu risques de faire des copier-coller des bouts de code et tu retrouver avec des erreurs car tu as oublié de remplacer le nom.
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
david86
Messages : 224
Inscription : 06 avr. 2018, 08:22

Re: Boucle for qui ne fonctionne pas

Message par david86 »

oui j'ai bien remarqué qu'en mettant presion pompe dans les devices ça exécutait le script, et ça fait un tas de ligne dans les log qui ne sont pas souhaités en effet.
Je ne vois pas comment faire pour mettre, selon mon inter-test en déclencheur de faire afficher la valeur de mon capteur pression pompe ?
Ce bout de code ne me fait rien :

Code : Tout sélectionner

p = domoticz.devices['Pression-pompe'].value 
domoticz.log("La pression de la piscine est de : "..p)
Raspberry Pi 3, Domoticz, RFXComm, contrôle RTS, contrôle SPOT PISCINE ;-), 2 inter Chacon 1000W, 2 inter CHACON 3000W, AEON Stick ZWAVE, 1 wall plug
1 WEMOS avec capteur pression
Boitier sonde + LED en cours...
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: Boucle for qui ne fonctionne pas

Message par Keros »

"Ce bout de code ne fait rien", mais cela ne signifie pas forcément qu'il n'est pas bon. Il n'est peut-être pas exécuté.
Tu as vérifié que la condition au-dessus fonctionne ?
Tu peux même enlever la condition et voir ce que ça donne.
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
Répondre