Bloqué par Blockly, besoin d'aide Lua

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 <\>.
PatriceN
Messages : 65
Inscription : 26 nov. 2017, 18:53

Bloqué par Blockly, besoin d'aide Lua

Message par PatriceN »

Bonjour,

Pas très attiré ni doué pour les lignes de code, je gère mes événements en Blockly, mais on est vite limité...

Voici mon problème :

Je souhaite démarrer mon miroir chauffant (pour qu'il soit désembué quand on sort de la douche, c'est super pratique !) quand le point de rosée est supérieur à la température de la pièce mitoyenne et qu'il y a quelqu'un dans la pièce (si ça bouge ou que la lumière est allumée).

En Blockly, ça donne ça, et ça fonctionne :
Capture.PNG
Capture.PNG (27.41 Kio) Consulté 4468 fois
Le problème est que je voudrais anticiper/optimiser en démarrant le miroir chauffant lorsque le point de rosée est supérieur à la température de la pièce voisine -3°C. C'est là que adieu Blockly qui ne gère pas les fonctions mathématiques de base, j'ai besoin de programmer ça autrement.

Je me suis déjà un peu perdu dans les ComandArray et devicename, mais je n'arrive à rien de concret...

Quelqu'un pourrait-il m'aider à démarrer en programmation Lua ou dzVents sur ce problème particulier ?

Merci!
Patrice
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: Bloqué par Blockly, besoin d'aide Lua

Message par Keros »

Bonjour Patrice,

Regarde dans ma signature, j'ai mis quelques informations concernant la programmation : il y a quelques conseils pour commencer.

Si tu as des questions, n'hésites pas ;)
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
boum
Messages : 233
Inscription : 18 janv. 2019, 11:34
Localisation : France

Re: Bloqué par Blockly, besoin d'aide Lua

Message par boum »

Je persiste à penser que dzVents est plus accessible que les scripts Lua classiques pour se lancer dans la programmation. Après, c'est évident, il y a une question de goût indéniable et l'accès aux différentes ressources et informations pour se former.

La référence pour dzVents, c'est https://www.domoticz.com/wiki/DzVents:_ ... _scripting
C'est en anglais, mais c'est à jour et contient la majeure partie des informations. Il y a des articles sur EasyDomoticz, mais certains ne sont pas à jours car basés sur des versions anciennes de dzVents.

Voilà une base de départ, pour se faire une idée de se qui est faisable :

Code : Tout sélectionner

return {
    on = {
        devices = {
            'SdB Motion sensor',
            'SdB Lux',
            -- peut-être ajouter d'autres déclencheurs
        },
    },

    logging =
    {
        level = domoticz.LOG_DEBUG,
        -- level = domoticz.LOG_ERROR,
        marker = 'MiroirSdB',
    },

    execute = function(domoticz, item)
        domoticz.log('Device ' .. item.name .. ' was changed.', domoticz.LOG_DEBUG)

        local lux    = domoticz.devices('SdB Lux').lux
        local motion = domoticz.devices('SdB Motion sensor').state
        local dew    = domoticz.devices('SdB').dewPoint
        local temp   = domotic.devices('Couloir').temperature
        domoticz.log('Etat actuel : lux = ' .. lux .. ', motion =' .. motion .. ', dew = ' ..  dew .. '°, temp = ' .. temp .. ' ° ', domoticz.LOG_DEBUG)

        local seuil = temperature - 3
        if ((lux > 20) or (motion == 'On')) then
            domoticz.log('Test température', domoticz.LOG_DEBUG)
            if (dew > seuil) then
                domoticz.log('Allumage du miroir chauffant', domoticz.LOG_DEBUG)
                local miroir = domoticz.devices('Miroir chauffant')
                miroir.cancelQueuedCommands()
                miroir.switchOn().checkFirst()
                miroir.switchOff().afterMin(10)
                -- on s'arrête là
                return
            end
        end

        -- condition d'extinction
        if (dew < seuil) then
            domoticz.log('Arrêt du miroir chauffant', domoticz.LOG_DEBUG)
            domoticz.devices('Miroir chauffant').switchOff().checkFirst()
        end

    end
}
Il y a probablement des erreurs dans ce code et rien n'a été testé… :mrgreen:

Tous les conseils de Keros concernant le débogage et la programmation restent valides et pertinents.
Bon courage !
Domoticz v2022.2 sur linux-mint / Z-Wave-JS / RFXCom / Zigbee2MQTT
PatriceN
Messages : 65
Inscription : 26 nov. 2017, 18:53

Re: Bloqué par Blockly, besoin d'aide Lua

Message par PatriceN »

Trop fort!!

Je crois bien que ça a fonctionné du 1er coup !
Merci à vous 2, je vais lire et pratiquer (pas comme le karaté ;) ) !
Le fait d'avoir un parallèle entre un Blockly que je connais et un exemple de script fonctionnel est génial pour que je puisse comparer et comprendre.

Patrice
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: Bloqué par Blockly, besoin d'aide Lua

Message par Keros »

PatriceN a écrit : 14 juil. 2020, 17:56 Merci à vous 2, je vais lire et pratiquer (pas comme le karaté ;) ) !
:lol:

Tu as quelques infos sur le Dzvents là : https://easydomoticz.com/scripts-plus-f ... cz-dzvents

Bonne découverte !!
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
Répondre