Page 1 sur 1
Blocky - Pb action qui boucle
Publié : 17 janv. 2017, 20:30
par dartflag
Bonjour,
je suis débutant dans les scripts. Et impossible de trouver l'astuce ayant quand même cherché avant de poster ma question.
J'ai installé un keypad dans l'entrée chez moi. Quand je pars, je passe le keypad devant le lecteur et il m'active la camera et baisse le chauffage.
Mais pour le retour c'est plus compliqué. Je souhaiterai lancer des actions différentes si c'est le jour ou la nuit.
1- Si je reviens de jour, je désactive la camera, et active le chauffage
2- Si je reviens de nuit, je désactive la camera, active le chauffage et allume les lumières .
voici mon blocky, mais ça boucle.C'est certainement normal, puisque, les conditions sont remplissais comment en sortir? je ne sais comment tester le changement d'état du keypad, off->on ou on->off, et non pas l'état courant.
Quand je vais me coucher et que j'éteins les lumières, le script me les rallume, car les états sont remplis.

- Capture d’écran.png (53.86 Kio) Consulté 7799 fois
je vous remercie de votre aide.
Fred
Re: Blocky - Pb action qui boucle
Publié : 17 janv. 2017, 21:54
par vil1driver
Salut,
Peut être choisir un type device au lieu de time ?
Re: Blocky - Pb action qui boucle
Publié : 17 janv. 2017, 23:04
par dartflag
Salut Vil,
mais j'ai déjà un type device=keypad? et je suis bien obligé de d'utiliser le type time pour savoir si je suis le jour ou la nuit?
Fred
Re: Blocky - Pb action qui boucle
Publié : 17 janv. 2017, 23:40
par jay
Ola,
C'est une question de logique. Ton événement ici n'est pas activé que et seulement que quand l'état de ton keypad change. Du coup l'événement est appelé toutes les x secondes et comme tes conditions dans les if sont remplies ba ca fait ce tu demandes de faire même si tu as eteint la lumière à la main ^^
Le problème c'est que je penses que tu es à la limite avec blocky et le script lua/bash pour ce que tu souhaites faire.
Moi j'aurais fais un script et je l'aurais mis dans les paramètres Action on et off de ton keypad. Comme ca ton script n'est exécute que quand la valeur du keypad change. Tu pourras eteindre ta lumière sans qu'elle se rallume.
Blocky c'est bien quand tu veux qqchose qui verifie tout le temps ou dans une condition simple genre tous les jours à 11h00 ou si tu mets à ON ta télé, ba tu mets a ON la freebox.
Re: Blocky - Pb action qui boucle
Publié : 18 janv. 2017, 03:53
par vil1driver
Le type de script indique comment il se lance..
Soit toutes les minutes (time)
Soit sur la maj du périphérique (device)
Tout à fait possible de savoir si on est la nuit dans un type device.
Re: Blocky - Pb action qui boucle
Publié : 18 janv. 2017, 21:01
par dartflag
bonsoir,
et bien j'ai suivi vos conseils, j'ai laissé tombé le blocky et j'ai fait du LUA. j'ai fait le script suivi, a tester si cela fonctionne bien.
merci pour les tuyaux
Code : Tout sélectionner
-- script_device_keypad.lua
time = os.date("*t")
commandArray = {}
if (devicechanged['KeyPad'] == 'On')
then
print('KeyPad: On')
print('Away')
commandArray['Camera']='On'
commandArray['Nest - Absent']='On'
elseif (devicechanged['KeyPad'] == 'Off')
then
if ((60 * time.hour + time.min) > (timeofday['SunriseInMinutes'])) and ((60 * time.hour + time.min) < (timeofday['SunsetInMinutes']))
then
print('KeyPad: Off')
print('Home jour')
commandArray['Camera']='Off'
commandArray['Nest - Absent']='Off'
elseif ((60 * time.hour + time.min) > (timeofday['SunsetInMinutes'])) or ((60 * time.hour + time.min) < (timeofday['SunriseInMinutes']))
then
print('KeyPad: Off')
print('Home nuit')
commandArray['Camera']='Off'
commandArray['Nest - Absent']='Off'
commandArray['Lumiere 2']='On'
commandArray['Lumiere 3']='On'
end
end
return commandArray
bon il y a certainement plus court et plus simple, mais je débute
Fred
Re: Blocky - Pb action qui boucle
Publié : 19 janv. 2017, 14:58
par vil1driver
joli script
te voila maintenant du bon côté de la force
oui tu peux simplifier un point, mais c'est bien d'avoir étudié le côté "compliqué" en premier lieu,
ça permet de comprendre et ouvre une autre possibilité : différer avant ou après les heures de lever/coucher du soleil en ajoutant/retranchant quelques minutes à la comparaison..
donc, ceci
Code : Tout sélectionner
((60 * time.hour + time.min) > (timeofday['SunriseInMinutes'])) and ((60 * time.hour + time.min) < (timeofday['SunsetInMinutes']))
peut être remplacé par ceci
et ceci
Code : Tout sélectionner
((60 * time.hour + time.min) > (timeofday['SunsetInMinutes'])) or ((60 * time.hour + time.min) < (timeofday['SunriseInMinutes']))
peut être remplacé par ceci
Re: Blocky - Pb action qui boucle
Publié : 21 janv. 2017, 21:10
par dartflag
merci Vil
j'ai fait les petites adaptations que tu m'as données et ça fonctionne au poil.