script time et commandArray ['updateDevice'] incompatible ?

Posez ici vos questions d'utilisation, de configuration de DomoticZ, de bugs, de conseils sur le logiciel lui même dans son utilisation et son paramétrage.
Des forums spécifiques sont ouverts ci-dessous pour regrouper les différents sujets.
alexbi
Messages : 123
Inscription : 29 nov. 2015, 16:36

script time et commandArray ['updateDevice'] incompatible ?

Message par alexbi »

bonjour

j'ai une erreur dans mes logs :

2016-01-16 15:53:02.610 EventSystem: Sending SetPoint to device....
2016-01-16 15:53:12.609 Error: EventSystem: Warning!, lua script consignes thermostats has been running for more than 10 seconds
2016-01-16 15:53:02.611 (Dummy) Thermostat (consigne salon)
2016-01-16 15:53:12.639 EventSystem: Script event triggered: consignes thermostats


j'ai fais un script time comme ca :

Code : Tout sélectionner

commandArray = {}
if uservariables['consigne salon'] == 20.4 then
    commandArray[1]={['UpdateDevice']='118|0|20.4'}
    
    elseif uservariables['consigne salon'] == 19.0 then
    commandArray[2]={['UpdateDevice']='118|0|19.0'}

    elseif uservariables['consigne salon'] == 18.0 then
    commandArray[3]={['UpdateDevice']='118|0|18.0'}

    elseif uservariables['consigne salon'] == 16.5 then
    commandArray[4]={['UpdateDevice']='118|0|16.5'}
    
    elseif uservariables['consigne salon'] == 14.5 then
    commandArray[5]={['UpdateDevice']='118|0|14.5'}
    
end
return commandArray
avec celui la j'ai une erreur 'running for more than 10 seconds' (je sais que si le script met plus de 10 secondes a s'effectuer alors il y a ce message)


et en faisant ca (via script_uservariable et plus script_time) je n'ai plus d'erreur :

Code : Tout sélectionner

commandArray = {}

if (uservariables_lastupdate['consigne salon']) then
    if uservariables['consigne salon'] == 20.4 then
    commandArray[1]={['UpdateDevice']='118|0|20.4'}
    
    elseif uservariables['consigne salon'] == 19.0 then
    commandArray[2]={['UpdateDevice']='118|0|19.0'}

    elseif uservariables['consigne salon'] == 18.0 then
    commandArray[3]={['UpdateDevice']='118|0|18.0'}

    elseif uservariables['consigne salon'] == 16.5 then
    commandArray[4]={['UpdateDevice']='118|0|16.5'}
    
    elseif uservariables['consigne salon'] == 14.5 then
    commandArray[5]={['UpdateDevice']='118|0|14.5'}
    
end
end

return commandArray

DONC questions :

mon script est mal écrit dans la forme donc prend trop de temps a s'effectuer ?
mon script et bien mais il ne faut pas utiliser d'updatdevice dans les script_time?
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: script time et commandArray ['updateDevice'] incompatible ?

Message par vil1driver »

oui encore une histoire avec domoticz qui me gonffle....

tout est fait à la va que je te pousse et est laissé en état :/
des jours je me demande si je ne préfèrerais pas un logiciel moins évolué mais sans faille..
ça ressemble de plus en plus à une usine à gaz sur le point d'exploser..
plus ça va plus ça m'énerve... bref

pour palier au problème, utilises la commande json à la place des commandArray

exemple ici

Code : Tout sélectionner

local url = '192.168.22.100:8080'		-- user:pass@ip:port de domoticz,
commandArray['OpenURL']=url..'/json.htm?type=command&param=udevice&idx=118&nvalue=0&svalue=19.5'
mais utiliser un script variable est de toute manière plus intéressant car il se lance comme un script device, donc au moment où ta variable est mise à jour.. c'est donc plus réactif
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
alexbi
Messages : 123
Inscription : 29 nov. 2015, 16:36

Re: script time et commandArray ['updateDevice'] incompatible ?

Message par alexbi »

ok ...

j'adore les bugs car tu va chercher pendant 3 jours ce que tu as pas bien fait et en faite ba non c'est juste un bug !

je vais chercher du coté json (que je ne connais pas du tout mais bon ...)
rimram31
Messages : 659
Inscription : 04 oct. 2015, 11:22
Localisation : Toulouse

Re: script time et commandArray ['updateDevice'] incompatible ?

Message par rimram31 »

Il y a un petit truc qui me gène quand même dans ton script c'est que tu renseignes commandArray[1], 2, 3, 4, 5 ... et que dans tous les cas tu ne remplis qu'une seule valeur: if/elseif ... ta "consigne salon" ne peut prendre au mieux qu'une seule valeur a la fois donc tu dois pouvoir utiliser chaque fois commandArray[1] = ... Après, a voir quelle est la logique exacte de dz sur cette syntaxe (que je comprends liste donc 1..n)
Raspberry Pi 2 + carte RF pi "maison" + Domoticz
Sonde Oregon + Aliexpress - Prises Chacon (3500W) - 1wire DS18B20
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: script time et commandArray ['updateDevice'] incompatible ?

Message par vil1driver »

pas faux ;)

array tableau ;) tu vois bien.. soit on ajoute une nouvelle ligne soit on écrase celle qui porte déjà le même nom..

aussi dans un script variable mieux vaut utiliser uservariablechanged['device'] plutôt que uservariables_lastupdate['device']
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
rimram31
Messages : 659
Inscription : 04 oct. 2015, 11:22
Localisation : Toulouse

Re: script time et commandArray ['updateDevice'] incompatible ?

Message par rimram31 »

vil1driver a écrit :...array tableau ;) tu vois bien..
Toujours pas compris pourquoi LUA appelle ça un tableau m'enfin ... et la façon dont dz tord commandArray laisse un peu perplexe ;) Dommage que dz ne donne pas un accès plus dynamique a ses données/objets, j'ai regardé mais rapidement (je parle du code).
Raspberry Pi 2 + carte RF pi "maison" + Domoticz
Sonde Oregon + Aliexpress - Prises Chacon (3500W) - 1wire DS18B20
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: script time et commandArray ['updateDevice'] incompatible ?

Message par vil1driver »

c'est le mot array qui te dérange ? vrai que ça ne veut pas dire tableau ;)

Code : Tout sélectionner

commandArray = {
{['ma lampe']='On'},
{['string']='actionstring'},
{['string']='actionstring'},
{['string']='actionstring'}
}

return commandArray
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
alexbi
Messages : 123
Inscription : 29 nov. 2015, 16:36

Re: script time et commandArray ['updateDevice'] incompatible ?

Message par alexbi »

bizarre quand je met en script_variable.lua lors duc hangement de ma variable (que j'ai mis en decimal) rien ne se passe alors qu'en script_time cela fonctionne

local url = '192.168.2.62:8084' -- user:pass@ip:port de domoticz,

Code : Tout sélectionner

commandArray = {}
if (uservariables_lastupdate['consigne salon']) then 
	if (uservariables['consigne salon'] == 20.4) then
    commandArray[1]={['OpenURL']=url..'/json.htm?type=command&param=udevice&idx=118&nvalue=0&svalue=20.4'}
    print ('consigne salon variable1.1')
 
	elseif (uservariables['consigne salon'] == 19.0) then
    commandArray[2]={['OpenURL']=url..'/json.htm?type=command&param=udevice&idx=118&nvalue=0&svalue=19'}

	elseif (uservariables['consigne salon'] == 18.0) then
    commandArray[3]={['OpenURL']=url..'/json.htm?type=command&param=udevice&idx=118&nvalue=0&svalue=18.0'}

	elseif (uservariables['consigne salon'] == 16.5) then
    commandArray[4]={['OpenURL']=url..'/json.htm?type=command&param=udevice&idx=118&nvalue=0&svalue=16.5'}
 
	elseif (uservariables['consigne salon'] == 14.5) then
    commandArray[5]={['OpenURL']=url..'/json.htm?type=command&param=udevice&idx=118&nvalue=0&svalue=14.5'}
    
end
end

return commandArray
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: script time et commandArray ['updateDevice'] incompatible ?

Message par vil1driver »

T'as zapé nos derniers messages..

N'utilises pas lastupdate..
Et les [1] [2] ne sont pas utiles..
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
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: script time et commandArray ['updateDevice'] incompatible ?

Message par vil1driver »

Essai ce code

Code : Tout sélectionner

-- script_variable_ConsigneSalon.lua

local url = '192.168.2.62:8084' -- user:pass@ip:port de domoticz

commandArray = {}

if (uservariablechanged['consigne salon']) then 
   
    commandArray['OpenURL']=url..'/json.htm?type=command&param=udevice&idx=118&nvalue=0&svalue='.. uservariables['consigne salon'] 
    
 end   
 
  print ('consigne salon: '..uservariables['consigne salon'] )
 

return commandArray


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
Répondre