Page 2 sur 4

Re: Besoin d'aide Script Blockly > Lua

Publié : 09 sept. 2019, 16:39
par boum
C'est exactement ça.

Re: Besoin d'aide Script Blockly > Lua

Publié : 09 sept. 2019, 16:58
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'}
   },

Re: Besoin d'aide Script Blockly > Lua

Publié : 09 sept. 2019, 17:20
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
}

Re: Besoin d'aide Script Blockly > Lua

Publié : 09 sept. 2019, 17:24
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'}
   },

Re: Besoin d'aide Script Blockly > Lua

Publié : 10 sept. 2019, 14:36
par boum
C'est quoi la différence avec le précédent que tu as posté ?

Re: Besoin d'aide Script Blockly > Lua

Publié : 10 sept. 2019, 14:41
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'} }

Re: Besoin d'aide Script Blockly > Lua

Publié : 10 sept. 2019, 15:01
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).

Re: Besoin d'aide Script Blockly > Lua

Publié : 10 sept. 2019, 19:28
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.

Re: Besoin d'aide Script Blockly > Lua

Publié : 10 sept. 2019, 19:31
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....

Re: Besoin d'aide Script Blockly > Lua

Publié : 10 sept. 2019, 19:40
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.