SI X activé PENDANT Y seconde ALORS >impossible ?

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 <\>.
patrice
Messages : 1720
Inscription : 22 sept. 2014, 21:51

Re: SI X activé PENDANT Y seconde ALORS >impossible ?

Message par patrice »

alexbi a écrit :ok merci donc c'est normale

ba dis donc on s'en rend pas conte mais il a du boulot domoticz j’imagine si on fait 20 scripts dans le genre ...
Oui en effet et c'est pour ca que tout script bien élevé doit commencer par un test if (devicechanged['Lumière']) then
si tu debutes tu peux lire des trucs du blog à ce sujet
http://easydomoticz.com/point-scripts-lua/
http://easydomoticz.com/mon-premier-scr ... ondations/

http://easydomoticz.com/mon-premier-scr ... en-oeuvre/
sans oublier l'incontournable wiki officiel
https://www.domoticz.com/wiki/Domoticz_Wiki_Manual
mais il n'y a pas un vraie site ou on peu retrouver l'ensemble des commandes que l'on peux utiliser en LUA car je ne vois que des site avec des exemples !
comme le langage c'est du Lua tu as des tutos Lua qui trainent sur le web
il y a quelques commandes spécifiques Domoticz mais finalement assez peu
par exemple sur la forme du script je trouve rien. SI on met un "if" on doit le finir par un "end" (c'est ce que j'ai compris) mais je vois des exemples avec plusieurs "end" a la fin. Je voulais aussi mettre une condition "if" avant le "t1 = os.time()" pour ne pas faire travailler la machine si ma lumiere de SDB n'est pas allumer ... Mais je n'ai pas réussi... peut être impossible ?
Ben typiquement il est inutile de tester l'heure pour savoir si la lumière de la salle de bain est allumée , il vaut mieux tester si la lumière est allumée tout court non ?

Code : Tout sélectionner

 if (otherdevices['Lumiere'] == 'On' then
Allez bon courage !
Raspberry pi 3, Dongle RfxCom et Zigate +, plugin de pipiche, Volets Roulants profalux, contrôle d'éclairage, détecteurs de présence, alarme incendie, pilotage livebox ...
Objectif : WAF > 1
alexbi
Messages : 123
Inscription : 29 nov. 2015, 16:36

Re: SI X activé PENDANT Y seconde ALORS >impossible ?

Message par alexbi »

super

merci pour ton retour j'ai fais quelque test et le script fonctionne bien en mettant une condition avant le "time" donc je n'ai plus de calcul de 'difference" sauf quand me lumiere est allumée

cool !

apres j'ai un commandArray = {} qui traine au milieu du script je vais essayer de l'enlever pour voir
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: SI X activé PENDANT Y seconde ALORS >impossible ?

Message par vil1driver »

alexbi a écrit :(...) j'ai un commandArray = {} qui traine au milieu du script je vais essayer de l'enlever pour voir
:D

c'est indispensable, si tu l'enlèves tu vas vite t'en rendre compte
d'ailleurs si tu fais ton curieux (ce qui est également indispensable)... tu verras qu'il y en à 1 dans tous les scripts
c'est la commande qui créer les tableau des actions à réaliser par le script

on crée le tableau

Code : Tout sélectionner

commandArray = {}
on le remplis selon son besoin

Code : Tout sélectionner

 commandArray['Switch']='On'
 commandArray['Scene:Livingroom']='On'
 commandArray['Group:Kitchen']='Inactive'
 commandArray['Keyfob']='Group On'
 commandArray['DimmableDevice']='Set Level 50'
 commandArray['SendNotification']='subject#body#0'
 commandArray['SendEmail']='subject#body#your@email.com'
 commandArray['OpenURL']='www.yourdomain.com/api/movecamtopreset.cgi' 
 commandArray['Blinds']='On RANDOM 30'
 commandArray['Porch Light']='On FOR 2'
 commandArray['Variable:MyVar']='Some value'
 commandArray['Variable:MyVar']='Some value AFTER 3'
 
puis à la fin on lance l'exécution

Code : Tout sélectionner

return commandArray
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
alexbi
Messages : 123
Inscription : 29 nov. 2015, 16:36

Re: SI X activé PENDANT Y seconde ALORS >impossible ?

Message par alexbi »

A ok merci pour tes explications

Donc le commandArray lance la lecture des infos et le return commandarray exécuté tout ce qui est vrai (je me comprends ... Je suis peut-être le seul lol)

Le commandArray ={} dont je parle c'est un deuxième commandArray={} qui est au milieu.

Par contre c'est a moitié vrai ce que tu dis car le t1=os time il est au début est il n'y a rien devant ...
Répondre