Problème état interrupteur via 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 <\>.
Reichmess
Messages : 6
Inscription : 23 juin 2019, 18:21

Problème état interrupteur via LUA

Message par Reichmess »

Bonjour

J'essaie de commander un climatiseur (vue la chaleur qui règne en ce moment...) via un script LUA

extrait du script, la commande :
if (temperature > (consigne + hysteresis)) then
print('Allumage du climatiseur')
commandArray[Climatiseur]='On'


fonctionne.

Mais si je souhaite controler l'état du switch 'Climatiseur' avec la commande :
if (temperature > (consigne + hysteresis) and otherdevices['Climatiseur'] =='Off') then
print('Allumage du climatiseur')
commandArray[Climatiseur]='On'


ça ne fonctionne pas.

Est ce que quelqu'un pourrait m'aider ?

D'avance merci.
Dernière modification par Reichmess le 23 juin 2019, 21:11, modifié 1 fois.
papoo
Messages : 2029
Inscription : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

Re: Problème état interrupteur via LUA

Message par papoo »

il y a t'il plusieurs commandArray dans ton script?
il faut incrémenter chaque commandArray sinon seul le premier fonctionnera

le code avec incrémentation à répéter pour chaque commandArray

Code : Tout sélectionner

commandArray[#commandArray+1]={['Climatiseur'] = 'On'}
domoticz beta/RaspBerry PI3 stretch
https://pon.fr github
Reichmess
Messages : 6
Inscription : 23 juin 2019, 18:21

Re: Problème état interrupteur via LUA

Message par Reichmess »

Bonjour

Merci pour cette réponse.

Je crois qu'il vaut mieux mettre à dispo le script complet :

-------------
-- VARIABLES--
--------------

local sonde = 'Temperature salon'
local hysteresis = 2
local Climatiseur = 'Clim Salon'
local consigne = 22

--------------
--- SCRIPT ---
--------------

commandArray = {}


if (devicechanged[sonde]) then
local temperature = devicechanged[string.format('%s_Temperature', sonde)] --Temperature relevée dans le salon
print (temperature)
if (temperature > (consigne + hysteresis) and otherdevices['Climatiseur'] =='Off') then
print('Allumage du climatiseur')
commandArray[Climatiseur]='On'


elseif (temperature <= (consigne - hysteresis) and otherdevices['Climatiseur'] =='On') then
print('Arret du climatiseur')
commandArray[Climatiseur]='Off'
end
end

return commandArray


Le coupable est 'otherdevices['Climatiseur'] =='Off' ou 'otherdevices['Climatiseur'] =='On'
Si je retire ce test, ça fonctionne mais la commande vers le climatiseur a lieu à chaque exécution du script.

J'ai remplacé les commandes du climatiseur par commandArray[#commandArray+1]={['Climatiseur'] = 'On'} sans modification du résultat.
papoo
Messages : 2029
Inscription : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

Re: Problème état interrupteur via LUA

Message par papoo »

Essai directement avec l’idx du device des fois qu’il y ai un pb sur le nom
domoticz beta/RaspBerry PI3 stretch
https://pon.fr github
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Problème état interrupteur via LUA

Message par vil1driver »

Salut,

Tu écris

Climatiseur

Et

'Climatiseur'

Essaie sans les ' et ça devrait aller.
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
Reichmess
Messages : 6
Inscription : 23 juin 2019, 18:21

Re: Problème état interrupteur via LUA

Message par Reichmess »

Bonjour

Désolé pour ma réponse tardive.

Le remplacement de 'Climatiseur' par Climatiseur a résolu le problème.

Merci à tous pour votre aide.

Cordialement
Répondre