Lier des dispositifs avec Blockly dans Domoticz

Dans Centrale by Belkeen4 Commentaires

Vous souhaitez qu’un dispositif s’allume et s’éteigne en même temps qu’un autre ? On vous explique comment lier des dispositifs simplement en Blockly.

C’est un langage de programmation créé par les équipes de Google. Il a l’avantage d’être totalement graphique et pré-structuré, et donc plus facile à appréhender pour les néophytes.

Pour ce qui est de l’intégration de l’outil Blockly dans Domoticz, c’est plutôt efficace. On récupère facilement l’ensemble des dispositifs créés dans le système et les différents statuts qu’ils peuvent avoir.

On pourra détailler plus précisement les fonctionnalités dans des articles plus “poussés”.

Création du code

Cahier des charges

Reprenons l’idée de base de notre article :

  • On allume un dispositif, dans mon cas une ampoule pilotée par un Sonoff RF.
  • On souhaite qu’une autre autre ampoule s’allume et s’éteigne automatiquement en même temps que mon premier dispositif. Dans mon cas, c’est un lampe sur pied pilotée par un Sonoff S20.

En fait, à vrai dire, mon exemple est la guirlande lumineuse de mon fils et son plafonnier. Je souhaite qu’elle s’allume et s’éteigne, seule, dès que j’allume ou éteins le plafonnier.

L’interface Blockly

Premièrement, il faut que votre dispositif soit déjà intégré dans Domoticz. On pourra ensuite attaquer le “codage” dans Blockly.

Allons dans “Réglages” > “Plus d’options” > “Evènements”. Une interface va ensuite s’afficher un grand cadre blanc au centre.

Interface Blockly Domoticz

L’écran se divise en 3 zones :

  • A gauche : les éléments utilisables pour créer votre “code”
  • Au centre : la zone de “dessin”, où vous allez glisser les éléments
  • A droite : Toutes les actions pour charger vos codes ou les sauvegarder.
Le code pour lier des dispositifs

Comme beaucoup de codes ou de logique d’événement informatique, notre code se structure comme il suit :

Si (un déclencheur arrive) alors (je fais ça) 
Sinon Si (un autre déclencheur arrive) alors (je fais autre chose)

Si on reprend l’exemple que nous utilisons :

Si (la plafonnier s'allume) alors (j'allume la guirlande)
Sinon Si (le plafonnier s'éteint) alors (j'éteins la girlande)

Traduisons donc cela en Blockly. Commençons par la structure Si … Alors … Sinon Si … Alors dans le menu “Control” :

Blockly If Do Advanced

En cliquant, sur le petit bouton bleu, on va pouvoir ajouter la structure “Else If” :

Blockly If Do Advanced Custom lier des dispositifs

Ensuite la structure logique qui permet de tester l’allumage du plafonnier, elle se trouve dans “Logic”, ainsi que la valeur “On” pour l’allumage du Device, ainsi que les actions à effectuer :

Blockly lier des dispositifs

Il ne vous reste plus qu’à donner un nom à votre Blockly dans la partie droite de l’écran, de l’enregistrer et de vous assurer qu’il est bien activé.

Voilà, vous pouvez faire votre test, allumez votre premier dispositif et regarder ce que fait le second.

Normalement vous n’aurez aucun problème pour piloter les modules que nous avons déjà intégrés :

Commentaires

  1. Merci pour ce tuto, je débute!
    J’ai créé un Blockly que j’ai nommé CmdEclairageExt.
    Je ne le vois nullepart d’apres ce que j’ai lu il serait stocké dans la BdD de Domoticz.
    Dans ce cas comment on assigne le CmdEclairage Ext à une “Action On” ?
    J’ai essayé “script:///usr/bin/sh/volume1/@appstore/domoticz/var/scripts/sh/CmdEclairageExt.sh” mais ça ne fonctionne pas
    A l’aide …

    1. Author

      Bonjour Boggiz.

      J’essaie de lire entre les lignes et j’imagine que tu souhaites pouvoir déclencher le code blockly comme si c’était un interrupteur. C’est pas forcement l’idée.
      Si tu peux me détailler ce que tu souhaites faire dans ton Blockly, je pourrais peut-être te guider sur comment faire ce que tu souhaites.
      Sinon, si c’est vraiment ce que tu souhaites, tu peux créer un interrupteur virtuel (Dummy), et mettre dans ton code Blockly, comme élément déclencheur du reste de ton code.
      Donc un truc qui ressemble à : If [Dummy] = On Do {Le reste de ton code}.

      J’espère que j’ai été clair dans mes explications. N’hésite pas si besoin !

      1. Bonsoir Belkeen,

        Tout d’abord merci pour votre réponse.
        Voila ce qu’est censé faire ce petit blockly “CmdEclairageExt”:

        “Nuit” est un inter virtuel OFF le jour et ON la nuit

        IF detecteur mouvement = ON AND Nuit = ON
        DO Eclairage Ext = 0N FOR 00:00 minutes

        C’est tout !

        Mon probleme est quel chemin indiquer dans l’evenement ON de ma lampe “Eclairage Ext” ?

        Avec “SQL Lite” je vois “CmdEclairageExt” dans la table EventMaster dla base Domoticz.db mais comment expliquer a la lampe comment trouver et executer ce code ?

        J’espere m’etre mieux expliqué

        1. Author

          Je comprends mieux ce que tu souhaites faire. Mais, je ne comprends toujours ce que tu appelles le chemin. C’est le chemin que tu configures dans l’interrupteur “Eclairage Ext” ?
          Si c’est le cas, Blockly ne te sera d’aucune utilité, il faut que ton interrupteur virtuel fonctionne “stand alone” et donc quand tu cliques dessus que ton éclairage extérieur s’allume.

          Si ce n’est pas ça, et tout est déjà configuré, dans l’algo que tu as rédigé, il manque le “set” :

          IF detecteur mouvement = ON AND Nuit = ON
          DO SET Eclairage Ext = 0N FOR 00:00 minutes

          Sinon, la valeur ne sera pas changée.

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.