Page 1 sur 1
On/Off de base : j'y arrive pas :(
Publié : 20 juil. 2019, 17:23
par smotx
Salutation,
des fois j'ai l'impression d'être stupide.
J'ai une prise connectée Meross
J'ai un bouton Xiaomi switch carré
Je souhaite faire un truc tout bête mais j'y arrive pas.
Si je fait un 'click' sur le bouton et que la prise est Off je veux qu'elle passe 'On'
Si je fais un 'click' sur le bouton et que la prise est On je veux qu'elle passe 'Off'
Je ne souhaite pas faire 1 click pour allumer, 2 clicks pour éteindre (çà j'y arrive facilement).
Par avance merci de votre aide.
Re: On/Off de base : j'y arrive pas :(
Publié : 20 juil. 2019, 21:21
par papoo
en dzvents je ferai un truc du genre
Code : Tout sélectionner
local scriptName = 'CheckFirst'
local scriptVersion = ' 0.1'
local inter = "S1"
local lampe = "L1"
return {
active = true,
on = {
devices = {inter}
},
logging = { level = domoticz.LOG_DEBUG, -- Seulement un niveau peut être actif; commenter les autres
-- level = domoticz.LOG_INFO, -- Only one level can be active; comment others
-- level = domoticz.LOG_ERROR,
-- level = domoticz.LOG_MODULE_EXEC_INFO,
marker = scriptName..' v'..scriptVersion
},
execute = function(domoticz, item)
local function logWrite(str,level) -- Support function for shorthand debug log statements
domoticz.log(tostring(str),level or domoticz.LOG_DEBUG)
end
if (item.name == inter) then
logWrite("l\'interrupteur "..inter.." vient d\'être manœuvré")
domoticz.devices(lampe).toggleSwitch()
logWrite("la lampe "..lampe.." vient de changer d\'état")
end
end
}
Re: On/Off de base : j'y arrive pas :(
Publié : 20 juil. 2019, 23:27
par smotx
Merci pour la piste, sur le principe tout devrait fonctionner et pourtant non.
Sans modifier ton code, voici la version finale :
Code : Tout sélectionner
local scriptName = 'CheckFirst'
local scriptVersion = ' 0.1'
local inter = "S1"
local lampe = "L1"
return {
active = true,
on = {
devices = {'Xiaomi Square Wireless Switch 3(PC)'}
},
logging = { level = domoticz.LOG_DEBUG, -- Seulement un niveau peut être actif; $
-- level = domoticz.LOG_INFO, -- Only one level can be active; comment$
-- level = domoticz.LOG_ERROR,
-- level = domoticz.LOG_MODULE_EXEC_INFO,
marker = scriptName..' v'..scriptVersion
},
execute = function(domoticz, item)
local function logWrite(str,level) -- Support function for shorthand debug log statements
domoticz.log(tostring(str),level or domoticz.LOG_DEBUG)
end
if (item.name == 'Xiaomi Square Wireless Switch 3(PC)') then
logWrite("l\'interrupteur "..inter.." vient d\'être manœuvré")
domoticz.devices(344).toggleSwitch()
logWrite("la lampe "..lampe.." vient de changer d\'état")
end
end
}
Quand j'active la pression sur le bouton, le fichier de log renvoit tout correctement :
Code : Tout sélectionner
2019-07-20 23:15:49.894 Status: dzVents: Info: Handling events for: "Xiaomi Square Wireless Switch 3(PC)", value: ""
2019-07-20 23:15:49.895 Status: dzVents: Info: CheckFirst v 0.1: ------ Start internal script: SwitchxiaoZevent: Device: "Xiaomi Square Wireless Switch 3(PC seb) (Xiaomi Gate)", Index: 246
2019-07-20 23:15:49.895 Status: dzVents: Debug: CheckFirst v 0.1: l'interrupteur S1 vient d'être manœuvré
2019-07-20 23:15:49.897 Status: dzVents: Debug: CheckFirst v 0.1: Processing device-adapter for Ecran MM (M3): Switch device adapter
2019-07-20 23:15:49.897 Status: dzVents: Debug: CheckFirst v 0.1: Constructed timed-command: On
2019-07-20 23:15:49.898 Status: dzVents: Debug: CheckFirst v 0.1: la lampe L1 vient de changer d'état
2019-07-20 23:15:49.898 Status: dzVents: Info: CheckFirst v 0.1: ------ Finished SwitchxiaoZevent
2019-07-20 23:15:49.901 Status: EventSystem: Script event triggered: /home/pi/domoticz/dzVents/runtime/dzVents.lua
Mais pour autant le prise ne change pas de mode

pourtant il affiche bien le nom de la prise 'Ecran MM (M3)'...
Re: On/Off de base : j'y arrive pas :(
Publié : 21 juil. 2019, 00:29
par smotx
J'ai tenté un truc du genre :
Code : Tout sélectionner
return {
active = true,
on = { devices = { 246 }},
execute = function(dz, item )
if (item.state == 'Click') then
dz.device(344).toggleSwitch()
domoticz.notify('Test OK', domoticz.PRIORITY_LOW)
end
end
}
non plus...
Re: On/Off de base : j'y arrive pas :(
Publié : 21 juil. 2019, 09:27
par papoo
les variables en début de script sont la pour simplifier sa personnalisation
ce qui aurait donné
Code : Tout sélectionner
local scriptName = 'toggle'
local scriptVersion = ' 0.1'
local inter = "Xiaomi Square Wireless Switch 3(PC)"
local lampe = "344"
return {
active = true,
on = {
devices = {inter}
},
logging = { level = domoticz.LOG_DEBUG, -- Seulement un niveau peut être actif; commenter les autres
-- level = domoticz.LOG_INFO, -- Only one level can be active; comment others
-- level = domoticz.LOG_ERROR,
-- level = domoticz.LOG_MODULE_EXEC_INFO,
marker = scriptName..' v'..scriptVersion
},
execute = function(domoticz, item)
local function logWrite(str,level) -- Support function for shorthand debug log statements
domoticz.log(tostring(str),level or domoticz.LOG_DEBUG)
end
if (item.name == inter) then
logWrite("l\'interrupteur "..inter.." vient d\'être manœuvré")
domoticz.devices(lampe).toggleSwitch()
logWrite("la lampe "..lampe.." vient de changer d\'état")
end
end
}
mais les noms de devices à rallonge avec des parenthèses sont le plus sur moyen de ne pas réussir à faire fonctionner les scripts (erreurs de saisies, caractères incompatibles...)
essai en renseignant dans un premier temps l'idx plutôt que le nom de ton interrupteur.
le script fonctionne, je l'avais testé avant de te le proposer
Re: On/Off de base : j'y arrive pas :(
Publié : 21 juil. 2019, 10:07
par smotx
C'est encore moins bien, j'ai carrément plus rien cette fois, meme pas les log de confirmation dans le fichier log.
je presse le bouton, je vois que le presse dans la log mais cela ne déclenche rien.
Re: On/Off de base : j'y arrive pas :(
Publié : 21 juil. 2019, 10:15
par papoo
difficile de t'aider sans données
mets nous au moins ton script modifié que l'on puisse voir si il y a des erreurs
Re: On/Off de base : j'y arrive pas :(
Publié : 21 juil. 2019, 10:22
par smotx
Alors, ca fonctionne mais avec un mix des 2 ....
Lol.
J'avais changer les noms sur tes conseils mais avec ta dernière version si ne se passait rien, vu qu'avec l'ancienne version, ça ne passait pas mais que j'avais les retour dans le log, j'ai pris la première version et j'ai mis le nouveau nom du switch et là ça passe....
Je ne sais pas pourquoi ta dernière version passe pas avec les IDX partout.
Mais en tout cas
merci, après si tu veux que j’essaie une autre avec les IDX, je suis disponible pour tester, il est vrai que ca serait plus pratique.
Voici donc celle qui fonctionne :
Code : Tout sélectionner
local scriptName = 'CheckFirst'
local scriptVersion = ' 0.1'
local inter = "Ecran PC"
local lampe = "Ecran PC"
return {
active = true,
on = {
devices = {'SwitchPCSeb'}
},
logging = { level = domoticz.LOG_DEBUG, -- Seulement un$
-- level = domoticz.LOG_INFO, -- Only one lev$
-- level = domoticz.LOG_ERROR,
-- level = domoticz.LOG_MODULE_EXEC_INFO,
marker = scriptName..' v'..scriptVersion
},
execute = function(domoticz, item)
local function logWrite(str,level) -- Support function for shorthand debug log statements
domoticz.log(tostring(str),level or domoticz.LOG_DEBUG)
end
if (item.name == 'SwitchPC') then
logWrite("l\'interrupteur "..inter.." vient d\'être manœuvré")
domoticz.devices(344).toggleSwitch()
logWrite("la prise "..lampe.." vient de changer d\'état")
end
end
}