Page 1 sur 2

command array syntaxe switch

Publié : 19 nov. 2018, 21:17
par jeyf
bonjour a tous ..

je me met doucement aux scripts lua sous domoticz
j'ai recupéré et modifie un script pour le wifinffo que j'ai modifié pour le tempo et ca marche super bien voir post sur ce forum

j'ai voulu ajouté un switch a enclancher id82 sur domoticz en fonction de la couleur du jour mais je n'arrive pas a trouver la bonne syntaxe pour mettre le switch a on ou off ...

Code : Tout sélectionner

 
    local param1 = colorIdx ..'|0|' .. coulJ .. ' / Demain : ' .. coulD
    local param2 = compteurtempoIdx ..'|0|' .. CPlein .. ';' .. CCreux .. ';0;0;' .. papp .. ';0'
    local param3 = intensitetriIdx ..'|0|' .. iinst1 .. ';' .. iinst2 .. ';' .. iinst3
    
   if (coulD=="ROUGE")
  then local param4 = alertetempoIdx ..'|0|' ..'On'
     else param4 = alertetempoIdx ..'|0|' ..'Off'
  end


-- construction des url (mise à jour de Domoticz par json, non utilisé)
    --url1 =  domoURL .. urlParams .. teleinfoIdx .. '&nvalue=0&svalue=' .. CPlein .. ';' .. CCreux .. ';0;0;' .. papp .. ';0;'
    --url2 =  domoURL .. urlParams .. colorIdx .. '&nvalue=0&svalue=' .. coulJ .. '%20%2F%20Demain%20' .. coulD

-- mise à jour des objets
    -- commandArray['UpdateDevice']='idx|nValue|sValue' -- for updating Dummy devices e.g. '96|0|Hello World'
    -- http://www.domoticz.com/wiki/LUA_commands
    table.insert (commandArray, { ['UpdateDevice'] = param1 } )
    table.insert (commandArray, { ['UpdateDevice'] = param2 } )
    table.insert (commandArray, { ['UpdateDevice'] = param3 } )
    table.insert (commandArray, { ['UpdateDevice'] = param4 } )
    
il s'agit notement de cette partie :

if (coulD=="ROUGE")
then local param4 = alertetempoIdx ..'|0|' ..'On'
else param4 = alertetempoIdx ..'|0|' ..'Off'
end

si une ame charitable peut m'aider a trouver mon erreur je seche un peu

Re: command array syntaxe switch

Publié : 19 nov. 2018, 22:17
par thier
si c'est pour un switch c'est commandArray['alertetempoIdx']='On' et commandArray['alertetempoIdx']='Off'

Re: command array syntaxe switch

Publié : 19 nov. 2018, 22:25
par jeyf
jusque la j'ai bon alors c'est bien ce qu'il me semblait

c'est donc la syntaxe de

param4 = alertetempoIdx ..'|0|' ..'On'

que je ne dois pas ecrire correctement mais je ne vois pas
a qui correspondent les ..'|0|' .. ???

Re: command array syntaxe switch

Publié : 19 nov. 2018, 22:49
par thier
C'est une syntaxe pour écrire dans un widget texte:
alertetempoIdx est l'idx de ton widget texte.
0 c'est la couleur pour écrire.
'On' c'est ce que tu veux écrire.
tu mets des .. qui indique que ce qui les suit ou précède doit être une variable.
En gros ta syntaxe ne fonctionnera pas pour un texte ni pour un switch.
Avec ce que je t'ai dis regarde tes lignes au dessus qui mettent à jour des textes avec des variables.

Re: command array syntaxe switch

Publié : 20 nov. 2018, 10:21
par jeyf
bon merci a vous j'ai trouvé j'avais aussi un beug dans mon test je pouvais pas changer le param4 avec le test j'ai donc crée param4 et param5 correspondant à on ou off et selon le test voulu j'ai utilisé dans un cas param 4 et dans l'autre param5

Code : Tout sélectionner

 local param4 = alertetempoIdx ..'|1'
 local param5 = alertetempoIdx ..'|0'
    

end

    table.insert (commandArray, { ['UpdateDevice'] = param1 } )
    table.insert (commandArray, { ['UpdateDevice'] = param2 } )
    table.insert (commandArray, { ['UpdateDevice'] = param3 } )
    
 if (coulD == "ROUGE")
    then 
   table.insert (commandArray, { ['UpdateDevice'] = param4 } ) 
 else 
   table.insert (commandArray, { ['UpdateDevice'] = param5 } )
    end

merci a vous

Re: command array syntaxe switch

Publié : 20 nov. 2018, 14:37
par jeyf
j'ai juste un ptit soucis encore

sur le switch dans domoticz j'ai configuré une alerte prowl quand le switch passe a 'on'

lorsque je clique avec la souris sur le switch l'alerte fonctionne mais quand c'est le script qui passe le switch a 'on' l'alerte ne se lance pas

Re: command array syntaxe switch

Publié : 20 nov. 2018, 18:20
par thier
lorsque je clique avec la souris sur le switch l'alerte fonctionne mais quand c'est le script qui passe le switch a 'on' l'alerte ne se lance pas -> es-tu certain que ton script s'exécute?
Pour le savoir met des prints dont tu retrouveras la trace dans les logs de domoticz. ça donnerait

Code : Tout sélectionner

if (coulD == "ROUGE")
    then 
    print('coulD est rouge')
   table.insert (commandArray, { ['UpdateDevice'] = param4 } ) 
 else 
     print('coulD est rouge')
   table.insert (commandArray, { ['UpdateDevice'] = param5 } )
    end
Si tes prints s'écrivent dans les logs c'est que tes commandes table.insert (commandArray, { ['UpdateDevice'] = param5 } ) ne vont pas.
As-tu déjà regardé les logs pour voir s'il y a des messages d'erreur?

Re: command array syntaxe switch

Publié : 20 nov. 2018, 20:42
par jeyf
oui ca m'a bien aidé d'ailleurs avec des prints...
le script s'execute bien puisque le switch change bien d'état tout seul selon les besoin ...
cependant son changement d'état via le script ne lui fait pas lancer la notification paramétrée...
alors que quand c'est moi qui change manuellement le switch la la notification s'execute...

Re: command array syntaxe switch

Publié : 20 nov. 2018, 21:03
par thier
Ces commandes param4 = alertetempoIdx ..'|1' sont censé faire quoi? Je ne connais pas.

Re: command array syntaxe switch

Publié : 20 nov. 2018, 21:38
par jeyf
c'est ce qui m'a permis de mettre l'interrupteur allumé donc a l'etat 1 et 0 pour eteint
ca renvoie dans le log quand je fais un print du param4 : 83|1

cela correspond à la syntaxe suivante :
commandArray['UpdateDevice']='idx|nValue|sValue'

je suppose donc que l'etat 'on' correspond a nValue =1

je ne sais pas ce que représente sValue ..

en tous cas ca me permet bien d'allumer ou d'eteindre le swich

mais si celui ci est allumé ainsi , il ne lance pas la notification alors que si il est allumé quand je clique manuellement dessus la ca lance la notification