Page 1 sur 2

script time et commandArray ['updateDevice'] incompatible ?

Publié : 16 janv. 2016, 16:08
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?

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

Publié : 16 janv. 2016, 16:16
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

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

Publié : 16 janv. 2016, 17:47
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 ...)

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

Publié : 16 janv. 2016, 21:14
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)

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

Publié : 16 janv. 2016, 21:20
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']

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

Publié : 16 janv. 2016, 21:42
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).

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

Publié : 16 janv. 2016, 22:03
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

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

Publié : 16 janv. 2016, 23:08
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

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

Publié : 16 janv. 2016, 23:24
par vil1driver
T'as zapé nos derniers messages..

N'utilises pas lastupdate..
Et les [1] [2] ne sont pas utiles..

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

Publié : 16 janv. 2016, 23:34
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