Besoin d'aide Script Blockly > Lua

Posez ici vos questions d'utilisation, de configuration de DomoticZ, de bugs, de conseils sur le logiciel lui même dans son utilisation et son paramétrage.
Des forums spécifiques sont ouverts ci-dessous pour regrouper les différents sujets.
boum
Messages : 233
Inscription : 18 janv. 2019, 11:34
Localisation : France

Re: Besoin d'aide Script Blockly > Lua

Message par boum »

C'est exactement ça.
Domoticz v2022.2 sur linux-mint / Z-Wave-JS / RFXCom / Zigbee2MQTT
morninggoal
Messages : 33
Inscription : 06 sept. 2019, 12:13

Re: Besoin d'aide Script Blockly > Lua

Message par morninggoal »

Ok merci...
Dernière question: comment interpreter le = dans le on entre 'mouvement' et la plage horaire
devices = { ['Mouvement'] = {'at 06:00-12:00'} }
Je peux faire ça a la place?

Code : Tout sélectionner

return {
   on = {
      devices =  'Mouvement' 
      time= {'at 06:00-12:00'}
   },
boum
Messages : 233
Inscription : 18 janv. 2019, 11:34
Localisation : France

Re: Besoin d'aide Script Blockly > Lua

Message par boum »

Le premier veut dire, activation du script sur changement du dispositif 'Mouvement' entre 6h et midi.
Le second veut dire, activation du script sur changement d'état de 'Mouvement' *et* toutes les minutes entre 6h et 12h (et à l'exécution item est différent, soit item.isDevice == true, soit item.isTimer == true et ce n'est pas le capteur de mouvement).

L'écriture est un raccourci, ça peut se remplacer par une condition dans le script :

Code : Tout sélectionner

return 
{
    on = { devices = { 'Mouvement' }},
    
    execute = function(dz, item)
        -- ...
        
        if dz.time.matchesRule('at 06:00-12:00') then
            -- on est dans le créneau 6h-12h
            -- reste du script dans ce cas-là
            -- ...
        end
    end
}
Domoticz v2022.2 sur linux-mint / Z-Wave-JS / RFXCom / Zigbee2MQTT
morninggoal
Messages : 33
Inscription : 06 sept. 2019, 12:13

Re: Besoin d'aide Script Blockly > Lua

Message par morninggoal »

Merci pour ta patience et tes explications!
du coup ca marche aussi ça?

Code : Tout sélectionner

return {
   on = {
      devices =  'Mouvement' 
      timer= {'at 06:00-12:00'}
   },
boum
Messages : 233
Inscription : 18 janv. 2019, 11:34
Localisation : France

Re: Besoin d'aide Script Blockly > Lua

Message par boum »

C'est quoi la différence avec le précédent que tu as posté ?
Domoticz v2022.2 sur linux-mint / Z-Wave-JS / RFXCom / Zigbee2MQTT
morninggoal
Messages : 33
Inscription : 06 sept. 2019, 12:13

Re: Besoin d'aide Script Blockly > Lua

Message par morninggoal »

Il n'y en a pas, je voulais que tu me confirme que cela est identique à:

Code : Tout sélectionner

devices = { ['Mouvement'] = {'at 06:00-12:00'} }
boum
Messages : 233
Inscription : 18 janv. 2019, 11:34
Localisation : France

Re: Besoin d'aide Script Blockly > Lua

Message par boum »

Non, ce sont deux conditions de déclenchement totalement différentes.
morninggoal a écrit : 09 sept. 2019, 16:58

Code : Tout sélectionner

devices = { ['Mouvement'] = {'at 06:00-12:00'} }
Je peux faire ça a la place?

Code : Tout sélectionner

return {
   on = {
      devices =  'Mouvement' 
      time= {'at 06:00-12:00'}
   },
boum a écrit : 09 sept. 2019, 17:20 Le premier veut dire, activation du script sur changement du dispositif 'Mouvement' entre 6h et midi.
Le second veut dire, activation du script sur changement d'état de 'Mouvement' *et* toutes les minutes entre 6h et 12h (et à l'exécution item est différent, soit item.isDevice == true, soit item.isTimer == true et ce n'est pas le capteur de mouvement).
Domoticz v2022.2 sur linux-mint / Z-Wave-JS / RFXCom / Zigbee2MQTT
denis_brasseur
Messages : 898
Inscription : 24 déc. 2018, 17:05
Localisation : (26)

Re: Besoin d'aide Script Blockly > Lua

Message par denis_brasseur »

Pour passer de blockly à lua, et sans remettre en cause l'utilisation de dzVents, mais juste pour aider à la compréhension, je passerais par l'intermédiaire de script LUA.

Les limites ne sont pas les mêmes entre LUA et dzVents, pour un script blockly simple comme le tiens, je passerais par une phase transitoire via un script lua, qui t'aidera ensuite a appréhender puis passer vers du dzVents.

Pour ton script blockly initial, ça peux donner quelque chose comme ceci :
--script de type Time, depuis Réglages => Plus d'options => Evénement ou directement depuis /home/pi/domoticz/scripts/lua par exemple.

Code : Tout sélectionner

heure = string.sub(os.date("%X"), 1, 5)-- retourne l'heure actuelle ex: "12:45"
commandArray = {}
if (otherdevices['Absence'] == 'Closed' and heure > '06:00' and time < '12:00' and otherdevices['Volet_salon'] == 'Closed' and otherdevices['Mouvement'] == 'On') then
	commandArray[#commandArray+1] = {['volet_salle_a_manger_1'] = 'Off'} --on bascule volet_salle_a_manger_1 en Off
	commandArray[#commandArray+1] = {['volet_salle_a_manger_2'] = 'Off'} --on bascule volet_salle_a_manger_2 en Off
	commandArray[#commandArray+1] = {['volet_cuisine'] = 'Off'} --on bascule volet_cuisine en Off
	commandArray[#commandArray+1] = {['volet_salon'] = 'Off'} --on bascule volet_salon en Off
end
return commandArray
Plutôt simple non ?
J’insiste, je ne dénigre pas le dzVents, mais autant passer par des étapes simple et compréhensible afin de bien aborder les langages de programmation.
Dernière modification par denis_brasseur le 10 sept. 2019, 19:32, modifié 1 fois.
Pi3 + DD PiDrive - RFXtrx433 - AEON Labs ZW090
morninggoal
Messages : 33
Inscription : 06 sept. 2019, 12:13

Re: Besoin d'aide Script Blockly > Lua

Message par morninggoal »

Effectivement je me rends compte que j'ai besoin de cette étape intermediaire... J'ai pour l'instant à mon actif qu'un seul script lua qui sert à allumer/eteindre une ampoule avec un detecteur de porte....
denis_brasseur
Messages : 898
Inscription : 24 déc. 2018, 17:05
Localisation : (26)

Re: Besoin d'aide Script Blockly > Lua

Message par denis_brasseur »

Quelques règles de base :
Etat du device 'Absence'

Code : Tout sélectionner

if otherdevices['Absence'] == 'Closed' then
 --mon code
 end
Etat du device 'Mouvement'

Code : Tout sélectionner

if otherdevices['Mouvement'] == 'Closed' then
  --mon code
 end
  
Changement de l'état de' Mouvement' à 'Closed'

Code : Tout sélectionner

if (devicechanged['Mouvement'] == 'Closed') then
 --mon code
 end
Etat de l'heure

Code : Tout sélectionner

if heure > '06:00' and time < '12:00' then
 --mon code
 end
Surtout bien veiller au type de script de type Time ou Device par exemple.
Dernière modification par denis_brasseur le 10 sept. 2019, 19:55, modifié 2 fois.
Pi3 + DD PiDrive - RFXtrx433 - AEON Labs ZW090
Répondre