Besoin d'aide script 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 <\>.
chacal62
Messages : 63
Inscription : 14 juin 2015, 20:47

Besoin d'aide script Lua

Message 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
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: Besoin d'aide script Lua

Message par Keros »

Il te suffit de mettre une condition If dans ta boucle. Voir la documentation : https://www.domoticz.com/wiki/LUA_commands
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
chacal62
Messages : 63
Inscription : 14 juin 2015, 20:47

Re: Besoin d'aide script Lua

Message 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
Chrominator
Messages : 1042
Inscription : 19 déc. 2015, 07:29
Localisation : France

Re: Besoin d'aide script Lua

Message 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).
Un bon frein vaut mieux que deux sparadraps.

Ubuntu 24.04.3 LTS - Domoticz 2025.1 (build 16782)
Pentium G3220T 2.6GHz - 4Go DDR3
RFXtrx433 USB Ver Pro1/1043
Z-Stick GEN5 Version: 1.6-1136-g07ea22bb
Rtl433 RTL-SDR receiver
RFLink Gateway
Zigbee SLZB-06
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: Besoin d'aide script Lua

Message par Keros »

Une formule pour répéter l'action serait d'envoyer une requête HTTP à l'API mais c'est plus lourd.
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
Chrominator
Messages : 1042
Inscription : 19 déc. 2015, 07:29
Localisation : France

Re: Besoin d'aide script Lua

Message 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.
Un bon frein vaut mieux que deux sparadraps.

Ubuntu 24.04.3 LTS - Domoticz 2025.1 (build 16782)
Pentium G3220T 2.6GHz - 4Go DDR3
RFXtrx433 USB Ver Pro1/1043
Z-Stick GEN5 Version: 1.6-1136-g07ea22bb
Rtl433 RTL-SDR receiver
RFLink Gateway
Zigbee SLZB-06
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: Besoin d'aide script Lua

Message par Keros »

Ah merde, l'API n'est pas si bête et discipliné :lol:
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
chacal62
Messages : 63
Inscription : 14 juin 2015, 20:47

Re: Besoin d'aide script Lua

Message 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.
Dernière modification par Keros le 29 janv. 2021, 12:35, modifié 1 fois.
Raison : Merci de regrouper les messages en un seul
Répondre