Index de l'article

Création de Règles

J'ai fait le choix d'utiliser le codage manuel pour sa souplesse et sa puissance.

Première tentative

Créons une gestion de "scènes" pour gérer l'éclairage dans le salon (qui pour le moment se limite à ma bête ampoule rgb) :

  • Créer un item de type string dans Paper UI qui servira de trigger.
  • Dans HabPanel, créer un widget de type sélection avec comme valeurs Eteint, TV et Lecture.
  • créer un fichier .rules dans le dossier dédié d'OpenHab2.x
  • programmer !

Code

rule "Salon scenes"  // Définition du nom de la règle
when // Zone de définition du trigger
    Item sSceneSalon changed // Détection de changement de valeur
then
    // Ici se trouve le code exécuté lorsque le trigger est déclenché
    // J'utilise un switch case tout con pour définir quelle scene a été choisie
    switch sSceneSalon.state {
        case "Eteint" : {
            logDebug("ruletest", "Cas Eteint") // un peu de logging pour debug                 // pour chaque élément dans le groupe lampe blanches du salon,
// si l'élément est un variateur et si sa valeur est plus grande que 0, on lui envoie la commande 0
// par contre, si ce n'est pas un dimmer, on envoie la commande OFF
                gEclairageBlancSalon.members.forEach[b|
                        if (b instanceof DimmerItem && b.state > 0) { b.sendCommand(0) }
                        else { b.sendCommand(OFF) }
                ]
                gEclairageCouleurSalon.members.forEach[c|c.sendCommand(0)]
                logDebug("ruletest", "Eteint exécuté")
        }
        case "TV" : {
                logDebug("ruletest", "Cas TV")
                gEclairageBlancSalon.members.forEach[b|
                        if (b instanceof DimmerItem) { b.sendCommand(5) }
                        else { b.sendCommand(OFF) }
                ]
                gEclairageCouleurSalon.members.forEach[c|c.sendCommand(10)]
        }
        [...]
    logDebug("ruletest", "Salon switch case OK")
end

Globalement, toutes les scènes auront exactement la même construction. Seules les valeurs envoyées varieront.

Evidemment, vu le peu de matos installé actuellement, la système de scènes n'est pas vraiment utile. Mais au moins, j'ai une structure de base que je pourrai étoffer par la suite.

Comme par exemple, ajouter la gestion de la température des ampoules blanches en fonction des heures de lever et coucher du soleil ou activer automatiquement la scène TV dans le salon quand on active l'activité "regarder la tv" sur le hub Harmony et que le soleil est déclinant/couché.