Script blocky pour les nuls

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 <\>.
starpom
Messages : 9
Inscription : 25 déc. 2017, 14:06

Script blocky pour les nuls

Message par starpom »

Bonjour a tous,

J'aurais besoin de vos éclaircissements a propos de mes scripts Blocky.
Je souhaite automatiser l'allumage de ma lampe d'entrée selon la luminosité mesurée pendant une certaine plage horaire. Je voudrai pouvoir activer ou désactiver la gestion automatique. En plus de cela, je voudrai que la lampe s'allume en dehors de la plage horaire sur base d'un détecteur de mouvement.

Comme matos, j'ai un intérupteur zwave et un multisensor 6 (detecteur de mouvement et luxmètre)

Je précise que je débute en domotique et que je découvre presque tout. J'ai tous configurer comme il faut et ca fonctionne en manuel. L'étape suivante est donc la partie en Blocky (je n'y connais rien en lua, python,...)

J'ai donc fait mon premier script tout bête et ca fonctionne :
script fonctionne pas 2.PNG
script fonctionne pas 2.PNG (88.47 Kio) Consulté 7861 fois
J'ai ensuite créer un intérupteur virtuel pour enclencher ou non la gestion automatique de ma lampe. L'idée étant que si l'intérupteur est off, le script ne s'exécute pas. Mais étrangement, ca ne marche pas du tout, alors que j'ai le changement par rapport au script précédent est minime.
script fonctionne pas.PNG
script fonctionne pas.PNG (42.17 Kio) Consulté 7861 fois
pourriez vous éclairer ma lanterne ?

J'ai également essayer un script plus complexe qui ne marche pas non plus.
script fonctionne.PNG
script fonctionne.PNG (34.95 Kio) Consulté 7861 fois
Merci d'avance pour votre aide
Dernière modification par starpom le 10 janv. 2018, 17:01, modifié 1 fois.
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Script blocky pour les nuls

Message par vil1driver »

Salut,

https://www.google.fr/search?q=if+elseif
elseif, comme son nom l'indique, est une combinaison de if et de else. Comme l'expression else, il permet d'exécuter une instruction après un if dans le cas où le "premier" if est évalué comme FALSE. Mais, à la différence de l'expression else, il n'exécutera l'instruction que si l'expression conditionnelle elseif est évaluée comme TRUE
Dans ton dernier exemple.
Si on est dans la plage horaire on éteint la lampe
Si on est pas dans la page horaire alors on va regarder la luminosité et éventuellement allumer ou éteindre.

C'est le fonctionnement souhaité ?
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
starpom
Messages : 9
Inscription : 25 déc. 2017, 14:06

Re: Script blocky pour les nuls

Message par starpom »

Sorry mais je vois que je me suis planté dans mon message et que les images ne sont pas dans le bon ordre.
Je viens de le modifier, maintenant c'est ok.

C'est bien le fonctionnement voulu. Dans la plage horaire, les lampes sont OFF, en dehors, c'est on ou off en fonction de la luminosité.

J'espère que c'est plus clair
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Script blocky pour les nuls

Message par vil1driver »

Ahh blocky et les if imbriqués :?

Mets toi à lua
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
starpom
Messages : 9
Inscription : 25 déc. 2017, 14:06

Re: Script blocky pour les nuls

Message par starpom »

Bonjour,

J'ai modifié mon script pour qu'il n'y ai plus de if imbriqué, ca marche nickel.
script fonctionne 2.PNG
script fonctionne 2.PNG (55.31 Kio) Consulté 7807 fois
Cependant, je me suis rendu comtpe d'une faiblesse dans mon système. Je m'explique : Lorsque l'interrupteur virtuel est ON, le script fonctionne en permance, ce qui veux dire que pour une raison ou une autre, en pleine nuit par exemple, je veux allumer ma lampe manuellement via l'interupteur physique, le script l'éteindra automatiquement a moins d'aller dans Domoticz switcher l'interrupteur virtuel en OFF, ce qui n'est pas très pratique.

Je voudrai créer un autre script qui switcherait en OFF l'interrupteur virtuel en cas de changement d'état de l'interrupteur physique. Est ce possible ?
Phebus06
Messages : 213
Inscription : 26 janv. 2017, 09:25

Re: Script blocky pour les nuls

Message par Phebus06 »

ou laisser ton script tel quel et plutôt mettre dans ton interrupteur physique sous domoticz dans action on d'éteindre ton interrupteur virtuel. Soit en json, soit en refaisant un petit blocky...
Si j'ai bien compris ta demande lol
starpom
Messages : 9
Inscription : 25 déc. 2017, 14:06

Re: Script blocky pour les nuls

Message par starpom »

C'est exactement ce que je veux faire.

Si le fait en blocky (sorry je suis débutant total et lua, json,etc c'est du chinois pour moi) que dois je mettre dans la condition du if ?

Petite question en passant, si je fais ce que tu proposes, lorsque le script initial allumera ou éteindra la lampe, est ce que cela ne va pas aussi mettre en OFF l'interrupteur virtuel ?
Phebus06
Messages : 213
Inscription : 26 janv. 2017, 09:25

Re: Script blocky pour les nuls

Message par Phebus06 »

Re...

Suivant ton interrupteur physique (enfin surtout le module domotique) soit tu peux dissocier l'action On allume la lumière et l'action j'appuie sur le bouton (clic on) du coup dans un autre script blocky tu mets un truc comme ça :
Si interrupteur=clic On (ou autre désignation)
set Automatisation=Off
set lampe entrée=On
Else if interrupteur=clic Off
set lampe entrée=Off
set Automatisation=On

Soit tu ne peux pas et il te faudra condamner l'interrupteur actuel qui ne sert à rien physiquement et en mettre un autre domotique par onde. Moi j'ai des boutons xiaomi :)
starpom
Messages : 9
Inscription : 25 déc. 2017, 14:06

Re: Script blocky pour les nuls

Message par starpom »

C'est bien ce que je craignais. Je ne peux pas dissocier l'interrupteur de l'actionneur. (j'ai un FGS-222 de chez Fibaro)

Je vais investiguer ta piste.

Merci
Répondre