Page 1 sur 1

Besoin d'aide script Lua

Publié : 28 janv. 2021, 15:13
par chacal62
bonjour à tous ,
J'aurai besoin d'un peu d'aide pour optimiser un script.
actuellement lors de mon départ du domicile. via la géolocalisation j'active un. interrupteur qui déclenche un script , afin d'éteindre les lumières allumées.
Pour se faire j'utilise un tableau , puis. avec la boucle for pairs do , je lance la commande Off sur toutes les lumières .
Ce que. je. souhaiterai faire c'est n'envoyer que la commande Off uniquement aux lumières On.
mon. code actuel:

Code : Tout sélectionner

commandArray = {}

local debug= 'oui'
time=os.date("*t")
local chacal = 'Chacal'
-- eclairage 
lumiere= {};
lumiere[1] = {devices='Eclairage Cuisine'}
lumiere[2] = {devices='Eclairage Salon'}
lumiere[3] = {devices='Eclairage Salle de Bain'}
lumiere[4] = {devices='Eclairage Escalier'}
lumiere[5] = {devices='Eclairage Facade'}
--Gestion depart
--extinction eclairage

if (time.hour < 6 and devicechanged[chacal] == 'Off') then
        for i,v in pairs(lumiere) do
                commandArray[v.devices] = 'Off'
                end
        if debug  == 'oui' then
                print ('Script Présence : ########### Fermeture  des Eclairages allumées ###########')
        end

end
return commandArray
merci d'avance pour votre aide

Re: Besoin d'aide script Lua

Publié : 28 janv. 2021, 18:39
par Keros
Il te suffit de mettre une condition If dans ta boucle. Voir la documentation : https://www.domoticz.com/wiki/LUA_commands

Re: Besoin d'aide script Lua

Publié : 28 janv. 2021, 18:57
par chacal62
top , merci je n'avais pas pensé comme ça , je me compliquais la vie .
le code :

Code : Tout sélectionner

if (time.hour < 6 and devicechanged[chacal] == 'Off') then 
        for i,v in pairs(lumiere) do
                if (otherdevices[v.devices] == 'On')  then
                        commandArray[v.devices] = 'Off'
                end
        end
merci

Re: Besoin d'aide script Lua

Publié : 28 janv. 2021, 20:49
par Chrominator
Note que c'est très bien des points de vue de la programmation et intellectuel ;

Mais de mon expérience, au moins avec la version 2020.2, si tu actionnes Off un switch qui est déjà Off, DZ ne fait rien (alors qu'il le devrait d'après moi) et on ne trouve aucune trace de ceci dans le log.
Idem pour un état On qu'on remettrait On.

Pourtant ce serait utile de pouvoir répéter l'action, notamment quand l'ordre s'est perdu (interférences, parasites) avec les technologies sans fil qui ne permettent pas de retour d'état (DI-O, Chacon, 433 MHz en général).

Re: Besoin d'aide script Lua

Publié : 28 janv. 2021, 21:02
par Keros
Une formule pour répéter l'action serait d'envoyer une requête HTTP à l'API mais c'est plus lourd.

Re: Besoin d'aide script Lua

Publié : 28 janv. 2021, 22:37
par Chrominator
Je parle bien de ça, et ça n'a aucun effet.
Envoie

Code : Tout sélectionner

http://<ip dz>:<port>/json.htm?type=command&param=switchlight&idx=<idx>&switchcmd=On
sur un switch déjà On, déjà il ne changera pas d'état et il n'y aura rien de plus dans le log.

Re: Besoin d'aide script Lua

Publié : 28 janv. 2021, 22:45
par Keros
Ah merde, l'API n'est pas si bête et discipliné :lol:

Re: Besoin d'aide script Lua

Publié : 29 janv. 2021, 10:24
par chacal62
Chrominator a écrit : 28 janv. 2021, 22:37 Je parle bien de ça, et ça n'a aucun effet.
Envoie

Code : Tout sélectionner

http://<ip dz>:<port>/json.htm?type=command&param=switchlight&idx=<idx>&switchcmd=On
sur un switch déjà On, déjà il ne changera pas d'état et il n'y aura rien de plus dans le log.
oui c'est ce qui pose problème avec l'appli maison , si pas actualisée , les commandes avec Siri via HomeKit ne fonctionnent pas.
Chrominator a écrit : 28 janv. 2021, 20:49 Note que c'est très bien des points de vue de la programmation et intellectuel ;

Mais de mon expérience, au moins avec la version 2020.2, si tu actionnes Off un switch qui est déjà Off, DZ ne fait rien (alors qu'il le devrait d'après moi) et on ne trouve aucune trace de ceci dans le log.
Idem pour un état On qu'on remettrait On.

Pourtant ce serait utile de pouvoir répéter l'action, notamment quand l'ordre s'est perdu (interférences, parasites) avec les technologies sans fil qui ne permettent pas de retour d'état (DI-O, Chacon, 433 MHz en général).
dans le log ,on voit bien la commande Off qui est. envoyée, c'est ce qui m'embêtait dans mon post.