Page 1 sur 1
Device Texte : Mise à jour en LUA
Publié : 01 juin 2020, 13:04
par didi
bonjour
j'ai un device Texte qui s'appelle TOTO avec idx = 38 que je veux mettre à jour en mettant le texte "bravo" dans le device .
J'utilise en LUA la commande :
commandArray[textDeviceIdx] = { ['UpdateDevice'] = textDeviceIdx..'|0|'..'some text' }
et en remplaçant :
CommandeArray[TOTO] = {['UpdateDevice'] = TOTO..'|0|'..'bravo' }
Domoticz me donne une erreur dans les logs...
Où est l'erreur?
merci
Re: Device Texte : Mise à jour en LUA
Publié : 01 juin 2020, 13:41
par Neutrino
['UpdateDevice'] ne fonctionne qu'avec un IDX
Re: Device Texte : Mise à jour en LUA
Publié : 01 juin 2020, 14:34
par didi
je fais ceci :
commandArray['UpdateDevice'] = '38|0|Bravo'
et le device Texte dont l'IDX = 38 contient 'Bravo' .
est-ce correct de faire comme çà?
y a-t-il d'autres syntaxes plus complètes et plus intelligentes?
merci
Re: Device Texte : Mise à jour en LUA
Publié : 01 juin 2020, 14:39
par denis_brasseur
commandArray ne prend pas de e et un c minuscule
Et ne s'écrit pas avec le nom, mais comme ceci (par exemple)
Re: Device Texte : Mise à jour en LUA
Publié : 01 juin 2020, 15:39
par Neutrino
Quelques exemples valides :
Code : Tout sélectionner
commandArray['Switch']='On'
commandArray['Scene:Livingroom']='On' -- remember, Scene cannot be turned Off!
commandArray['Group:Kitchen']='Inactive'
commandArray['Keyfob']='Group On'
commandArray['DimmableDevice']='Set Level 50'
commandArray['Selector']='Set Level: 50'
commandArray['SendNotification']='subject#body#0'
commandArray['SendEmail']='subject#body#your@email.com'
commandArray['OpenURL']='www.yourdomain.com/api/movecamtopreset.cgi'
commandArray['Blinds']='On RANDOM 30'
commandArray['Porch Light']='On FOR 2'
commandArray['Variable:MyVar']='Some value'
commandArray['Variable:MyVar']='Some value AFTER 3'
commandArray[textDeviceIdx] = { ['UpdateDevice'] = textDeviceIdx..'|0|'..'some text' }
commandArray[tempDeviceIdx] = { ['UpdateDevice'] = tempDeviceIdx..'|0|'..temp }
commandArray[tempHumDevIdx] = { ['UpdateDevice'] = tempHumDevIdx..'|0|'.. temp ..';'.. hum ..';'.. hum_stat }
Source / bible :
https://www.domoticz.com/wiki/Events
Re: Device Texte : Mise à jour en LUA
Publié : 01 juin 2020, 19:54
par didi
donc
si j'utilises : commandArray[textDeviceIdx] = { ['UpdateDevice'] = textDeviceIdx..'|0|'..'some text' }
et que mon device Texte s'appelle TOTO d'idx 38 , et je veux mettre le texte 'Bravo' dedans,
est-ce qu'il faut faire ceci :
commandArray[TOTO] = { ['UpdateDevice'] = TOTO..'|0|'..'Bravo' }
ou cela :
commandArray[38] = { ['UpdateDevice'] = 38..'|0|'..'Bravo' }
??
merci
Re: Device Texte : Mise à jour en LUA
Publié : 01 juin 2020, 20:03
par vil1driver
Salut,
Sur ce coup là je trouve le wiki un peu limite
La meilleure syntaxe est celle ci (dixit Denis)
Code : Tout sélectionner
commandArray[#commandArray+1] = { ['UpdateDevice'] = 38..'|0|'..'Bravo' }
A privilégier lorsque l'on veut agir plusieurs fois sur le même dispositif dans un même script.
Ex
On
Off after 10
Dans ton cas ceci suffit
Ou
Code : Tout sélectionner
local msg = 'bravo'
commandArray['UpdateDevice'] = 38..'|0|'..msg
Re: Device Texte : Mise à jour en LUA
Publié : 03 juin 2020, 13:42
par Wolfen38
J'essaie aussi de faire quelques choses du genre, je récupère les prévisions de pluie, et je veux les envoyer dans un widget
J'ai ce bout de code :
Code : Tout sélectionner
rain = jsonValeur.daily[1].rain
rain2 = jsonValeur.daily[2].rain
if rain ~= nil then
commandArray['Variable:Pluie-jour'] = tostring(rain)
else
commandArray['Variable:Pluie-jour'] = '0'
end
if rain2 ~= nil then
commandArray['Variable:Pluie-lendemain'] = tostring(rain2)
else
commandArray['Variable:Pluie-lendemain'] = '0'
end
Pluiejour = uservariables['Pluie-jour']
Pluielendemain = uservariables['Pluie-lendemain']
commandArray[#commandArray+1] = { ['UpdateDevice'] = 397..'|0|'..Pluiejour }
commandArray[#commandArray+1] = { ['UpdateDevice'] = 398..'|0|'..Pluielendemain }
Mais je recois cette erreur :
Code : Tout sélectionner
2020-06-03 13:41:00.478 Error: EventSystem: in /home/pi/domoticz/scripts/lua/script_time_meteo.lua: /home/pi/domoticz/scripts/lua/script_time_meteo.lua:74: malformed number near '397..'
Re: Device Texte : Mise à jour en LUA
Publié : 03 juin 2020, 15:33
par Wolfen38
Bon, apparemment, ca fonctionne avec le numero d'idx entre ', pas 38.. mais '38'..
Re: Device Texte : Mise à jour en LUA
Publié : 03 juin 2020, 17:36
par denis_brasseur
Code : Tout sélectionner
commandArray[#commandArray+1] = { ['UpdateDevice'] = '397|0|'..Pluiejour }
Effectivement, l'idx doit être placé entre les quotes.
Code : Tout sélectionner
commandArray[#commandArray+1] = { ['UpdateDevice'] = 'idx|0|valeur a afficher'}
A moins d'envoyer l'idx dans une variable
Code : Tout sélectionner
commandArray[#commandArray+1] = { ['UpdateDevice'] = idx..'|0|'..Pluiejour }