Page 2 sur 5

Re: Boucle for qui ne fonctionne pas

Publié : 01 sept. 2022, 23:28
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.

Re: Boucle for qui ne fonctionne pas

Publié : 02 sept. 2022, 14:47
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.

Re: Boucle for qui ne fonctionne pas

Publié : 02 sept. 2022, 17:44
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.

Re: Boucle for qui ne fonctionne pas

Publié : 02 sept. 2022, 17:52
par david86
Ouaip ouaip, j’ai retrouvé ça. A y regarder et comprendre le fonctionnement 😀

Re: Boucle for qui ne fonctionne pas

Publié : 04 sept. 2022, 17:05
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

Re: Boucle for qui ne fonctionne pas

Publié : 04 sept. 2022, 17:11
par Keros
Mets-nous ton code, on pourra t'aider plus précisément.

Re: Boucle for qui ne fonctionne pas

Publié : 04 sept. 2022, 20:28
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
}

Re: Boucle for qui ne fonctionne pas

Publié : 04 sept. 2022, 20:41
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.

Re: Boucle for qui ne fonctionne pas

Publié : 04 sept. 2022, 20:44
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)

Re: Boucle for qui ne fonctionne pas

Publié : 04 sept. 2022, 20:57
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.