Expérience Blocky

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 <\>.
Rpx
Messages : 136
Inscription : 07 mars 2018, 00:01

Expérience Blocky

Message par Rpx »

Salut à toutes et tous,

Le système Domoticz que j'utilise est le suivant :

Centrale RaspberryPi Raspbian Jessie avec Domoticz 4.97 .
Passerelle 1 Usb RFLink 433Mhz .
Passerelle 2 Usb MySensors 2.4Ghz nRF24L01 .
Passerelle 3 Ethernet W5100 MySensors 2.4Ghz nRF24L01 .
Passerelle 4 Ethernet W5100 MySensors 2.4Ghz nRF24L01 .
Quelques Sondes 433Mhz Oregon, Xiron ...
Une dizaine de sondes MySensors de fabrication maison 2.4Ghz nRF24L01.
Ces sondes sont réparties sur les passerelles 2, 3 et 4, qui ont chacune un canal radio propre.

N'étant pas programmeur, je n'ai jusqu'à présent jamais touché à Blocky, LUA, ou DzEvent. Je me suis limité à ajuster les programmes fournis sur le site MySensors pour mes sondes.

Comme je cherche à faire une régulation chaudière je pense à créer un Élément Virtuel pour faire office de thermostat.
J'ai des sondes de température sur batterie, mais elles n'émettent pas souvent, réveil toutes les deux minutes et émission sur changement de valeur ou forcée après vingt-huit ou trente minutes s'il n'y a pas de changement de valeur.
Si ma sonde (Sonde 10 sur alimentation secteur, pas de veille) veut interroger une sonde de température il n'y a aucune chance qu'elle réponde car elle sera sûrement en veille.
D'où l'idée d'éléments ou variables Domoticz accessibles en permanence à la sonde 10.

J'ai donc créé un élément virtuel consigne thermostat avec une valeur de 19.5°C et un autre interrupteur virtuel Thermostat Marche/Arrêt.
Il faut mettre à jour ces éléments à chaque variation de température, puis passer la valeur ou l'état à la sonde 10, mais là c'est du MySensors et je ne sais pas encore faire. On verra après.

Essayons avec Blocky:
Je crée un ensemble de blocs comme celui-ci.
Au passage, quand on n'a jamais manipulé, ce n'est pas si simple. Mais grâce au forum, on finit par y arriver...
Blocky qui ne marche pas.
Blocky qui ne marche pas.
Blocky.png (61.91 Kio) Consulté 817 fois
Et ... ça ne fonctionne pas.
Log1
Log1
Log_Blocky_1.png (7.14 Kio) Consulté 817 fois
Log2
Log2
Log_Blocky_2.png (5.48 Kio) Consulté 817 fois
À chaque fois, on a les deux cas dans les Logs, comme si les conditions étaient toujours vraies.
J'ai joué avec les blocs pour faire une dizaines de versions, mais sans succès.

Je me suis dit que je loupais quelque chose, j'ai donc passé en revue au rayon "Script" tout ce qui parlait de Blocky, et après quelques heures j'ai vu un article qui affirmait que Blocky n'aimait pas les "Si condition Alors" multiples ! Et qu'il fallait faire plusieurs programmes avec un seul "Si".


Je refais deux programmes.
Thermostat Marche
Thermostat Marche
Thermostat_Marche.png (19.79 Kio) Consulté 817 fois
Thermostat Arrêt
Thermostat Arrêt
Thermostat_Arret.png (19.72 Kio) Consulté 817 fois
Et là, çà fonctionne !!!

Je me dis que c'est à cause de ma vieille version, et que çà a été corrigé depuis.
Je dois donc migrer vers Buster et une version récente de Domoticz, mais comment ? Il n'y a plus que les sources sur le site Domoticz.


Cordialement.
Rpx.
boum
Messages : 233
Inscription : 18 janv. 2019, 11:34
Localisation : France

Re: Expérience Blocky

Message par boum »

Non, c'est normal. C'est une limitation de blocky dans domoticz. Seul le if de premier niveau est géré. Je ne sais plus où c'est documenté, mais ça revient fréquemment sur les forums ici et l'anglophone.

Donc si tu as un bloc if imbriqué, il faut l'extraire et dupliquer les tests avec des tests booléens ET. Ou passer en scripts lua classic ou dzVents.
Domoticz v2022.2 sur linux-mint / Z-Wave-JS / RFXCom / Zigbee2MQTT
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: Expérience Blocky

Message par Keros »

Tu peux essayer un bloc if avec un engrenage bleu pour ton premier niveau ?

Je déplace ton sujet dans la section dédiée aux scripts.
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
gaston
Messages : 155
Inscription : 16 avr. 2019, 20:30

Re: Expérience Blocky

Message par gaston »

Elo,

En effet, c'est un problème d"IF", il faut modifier le IF pour qu'il soit sous cette forme:

blocky.VR.png
blocky.VR.png (54.13 Kio) Consulté 799 fois

Il faut utiliser le IF avec l’engrenage, cliquer dessus et faire glisser le ELSE IF de gauche sous le IF de droite:

elseif.png
elseif.png (9.05 Kio) Consulté 799 fois
Rpx
Messages : 136
Inscription : 07 mars 2018, 00:01

Re: Expérience Blocky

Message par Rpx »

Salut à toutes et tous,

@boum,
D'accord, c'est peut être connu, mais j'ai un peu galéré avant de m'en rendre compte. Et c'est en codant que l'on devient codeur, enfin je suppose. Bon, j'aurais pu demander sur le forum avant, mais je crois que si l'on veut être aidé, il faut travailler le sujet, histoire de poser des questions pertinentes. Enfin, il y a la satisfaction de trouver une solution efficace.

@Keros,
Non, après essai çà ne va pas.

@gaston,
J'ai modifié le blocky à la manière gaston, et là, çà marche bien.
Je n'avais pas compris que l'on pouvait sur le premier "Si" ajouter des "Alors Si" plusieurs fois.
Le premier "Si" ne sert qu'a afficher les valeurs de consigne et réelle dans le log.
Blocky type gaston.
Blocky type gaston.
Blocky_Fonctionnel_Type_Gaston.png (62.78 Kio) Consulté 728 fois
Merci à tous.


Cordialement.
Rpx.
Répondre