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.
rimram31
Messages : 659
Inscription : 04 oct. 2015, 11:22
Localisation : Toulouse

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

Message par rimram31 »

vil1driver a écrit :c'est le mot array qui te dérange ? vrai que ça ne veut pas dire tableau ;)
:D non ce qui me dérange c'est que LUA n'a pas de vrais tableaux mais des map ou dictionnaires qui servent de tableau a défaut. Et ensuite que domoticz met a peu près tout dans une entrée de commandArray, un nom de peripherique, un nom de commande, un indice 1, 2, 3 ... J'ai jeté un oeil au source EventSystem.cpp (main) disons qu'on est loin de l'etat de l'art sur ce type de design. Mais bon, on va pas le dire trop fort et on remercie les dev. ;)

Désolé du HS
Raspberry Pi 2 + carte RF pi "maison" + Domoticz
Sonde Oregon + Aliexpress - Prises Chacon (3500W) - 1wire DS18B20
alexbi
Messages : 123
Inscription : 29 nov. 2015, 16:36

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

Message par alexbi »

bon j'ai enfin réussi !!

je fais un petit retour des problèmes rencontrés :

mon script chauffage (enfin un bout):

Code : Tout sélectionner

if (temperature <= (consigne_1 - hysteresis) and otherdevices[vacances] == 'Off' and fenetres_fermees and otherdevices[presence] == 'On' and MF_OFF and otherdevices[radiateur] == 'Off') 
			or (MF_ON and otherdevices[radiateur] == 'Off' and temperature <= (consigne_1 - hysteresis))then
             print('Allumage du chauffage dans le salon consigne_1')
             commandArray[radiateur]='On'
             --commandArray[5]={['UpdateDevice']='118|0|20.4'}
            -- commandArray['Variable:consigne_salon'] = '20.4'
            commandArray['OpenURL']=url..'/json.htm?type=command&param=updateuservariable&idx=31&vname=consigne_salon&vtype=1&vvalue=20.4'
pour commencer après plusieurs tests, le json n'aime pas pas les espaces... et moi j'avais comme variable 'consigne salon' que j'ai remplacé par 'consigne_salon' sinon ça fonctionne pas (et la on va me répondre fallait mettre des '' ?)

(pour info : pour le vtype de json 0=entier, 1=décimal, 2= chaine , ...)

le json sur cette commande fonctionne bien, la variable est bien mise a jour et le changement de la variable peut être utilisé par un script_variable. Normale on va me dire ... ba non parce que

commandArray['Variable:consigne_salon'] = '20.4' change la variable MAIS le script variable ne reconnait pas le changement d'état de la variable si quelqu'un a une explication je veux bien l’écouter pcq ça m'a bien pris la tête !

pour résumer cette première partie mon chauffage s'enclenche quand consigne = 20.4 et envoie un changement de variable via json valeur 20.4

puis

pour la deuxième partie un script_variable qui détecte un changement de variable et va envoyer la variable vers un device virtuel de température avec la valeur de consigne_salon

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

Merci a ceux qui m'ont aidé

PS: vil1driver, j'adore comment tu as condensé mon premier script (de noob) en 4 lignes (..uservariables['consigne_salon'], je ne connaissais pas )
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

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

Message par vil1driver »

Salut,

Json ou plutôt les url aiment bien les espaces mais encodés ;) %20

Le script variable ne voit la mise a jour d'une variable que si elle à été modifié par une requête json (ou à la main)

Encore la rigueur des devs de domoticz certainement ;)
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 :...Encore la rigueur des devs de domoticz certainement ;)
Ca pourrait pas poser des soucis de réentrance ? D'ailleurs la question se pose dans le cas d'un appel http/json, par exemple un script device modifie une variable qui entraine l'appel du script variable qui lui-même modifie un device ? -> appels infinis, time out ?
Raspberry Pi 2 + carte RF pi "maison" + Domoticz
Sonde Oregon + Aliexpress - Prises Chacon (3500W) - 1wire DS18B20
alexbi
Messages : 123
Inscription : 29 nov. 2015, 16:36

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

Message par alexbi »

je ne sais pas si c'est de ca dont vous parliez mais il y a un nouvel article

http://easydomoticz.com/les-tables-domoticz/
Répondre