Jusqu a maintenant je me suis debrouillé seul en prenant des bouts de scripts, des idees ou des solutions a droite a gauche mais là je bloque severe
Je commande mes volets via un sonoff touch 2 voies flashé en espurna avec mqtt pr la communication avec domoticz (v2020.2) du coup j ai 3 dummy, un pour chaque voie du sonoff (montee/descente) et un pour le volet dans domoticz.
Je commande en tout ca via un scenario, jusqu ici pas de souci tout fonctionne avec un petit blocky qui dit d ouvrir ou de fermer le volet lors du changment d etat de l inter virtuel du volet. Par contre si je passe par le sonoff (ce qui arrive souvent le matin pour mieux voir a la lumiere du jour) domoticz recoit bien l info via mqtt mais ne change pas le status du volet. J ai essayé de definir ca en plus en blocky mais ca finit toujours en une boucle infernale.
Du coup je me suis dit de faire une temp sur le changment d etat mais ca ne fonctionne pas et je ne comprends pas du tout pourquoi, je suis en nul en programmation, je n en ai jamais fait...
Voici le bout de code
Code : Tout sélectionner
local Host = '192.168.2.25:8080' -- user:pass@ip:port de domoticz
local volet = 'Volet bureau'
local virt_volet_btn = '365' --idx bouton viruel Domoticz pour le volet du bureau
local phys_volet_bureau_on = 'Volet bureau on' --idx 363
local phys_volet_bureau_off = 'Volet bureau off' --idx 364
commandArray = {}
if devicechanged[phys_volet_bureau_off] or devicechanged[phys_volet_bureau_on] or devicechanged[volet]==closed or devicechanged[volet]==open then
-- print (uservariables['volet_bureau_premiere_passe'])
if uservariables['volet_bureau_premiere_passe'] == 0 then
-- Mise à jour de l'état du bouton virtuel
if (devicechanged[ phys_volet_bureau_off ]) then
print 'AAAAA'
commandArray['OpenURL'] = Host..'/json.htm?type=command¶m=switchlight&virt_volet_btn='..virt_volet_btn..'&switchcmd=Off'
elseif (devicechanged[phys_volet_bureau_on]) then
print 'BBBBB'
commandArray['OpenURL'] = Host..'/json.htm?type=command¶m=switchlight&virt_volet_btn='..virt_volet_btn..'&switchcmd=On'
elseif (devicechanged[ volet ]) == closed then
print 'CCCCC'
commandArray [phys_volet_bureau_off] = on
elseif (devicechanged[ volet ]) == open then
print 'DDDDD'
commandArray [phys_volet_bureau_off] = on
end
commandArray['Variable:volet_bureau_premiere_passe'] = tostring(1)
else
commandArray['Variable:volet_bureau_premiere_passe'] = tostring(0)
end
end
-- print (commandArray)
return commandArrayQuand j active le script cela ne fonctionne pas et dans le log j ai CCCCC qui s affiche alors que l etat de mon dummy ne bouge pas, ne change pas, je comprends rien???
Et j ai des tas d iteration alors que l etat des boutons de ce script ne change pas, le script est un device nommé comme il faut je crois.2020-09-21 18:10:08.088 Status: LUA: CCCCC
2020-09-21 18:10:08.092 Status: EventSystem: Script event triggered: script_device_volet_bureau
2020-09-21 18:10:08.238 Status: EventSystem: Script event triggered: script_device_volet_bureau
2020-09-21 18:10:08.373 Status: LUA: CCCCC
2020-09-21 18:10:08.374 Status: EventSystem: Script event triggered: script_device_volet_bureau
2020-09-21 18:10:08.534 Status: EventSystem: Script event triggered: script_device_volet_bureau
2020-09-21 18:10:08.652 Status: LUA: CCCCC
2020-09-21 18:10:08.654 Status: EventSystem: Script event triggered: script_device_volet_bureau
2020-09-21 18:10:08.771 Status: EventSystem: Script event triggered: script_device_volet_bureau
2020-09-21 18:10:08.901 Status: LUA: CCCCC
2020-09-21 18:10:08.902 Status: EventSystem: Script event triggered: script_device_volet_bureau
2020-09-21 18:10:17.475 Status: EventSystem: Script event triggered: script_device_volet_bureau
2020-09-21 18:10:27.455 Status: LUA: CCCCC
2020-09-21 18:10:27.456 Status: EventSystem: Script event triggered: script_device_volet_bureau
2020-09-21 18:10:37.497 Status: EventSystem: Script event triggered: script_device_volet_bureau
2020-09-21 18:10:47.467 Status: LUA: CCCCC
2020-09-21 18:10:47.468 Status: EventSystem: Script event triggered: script_device_volet_bureau
Si une ame charitable comprends mes explications et peut m aider ce serait sympa, soit en utilisant mon bout de code ou en faisant autrement peut importe.
Ce que je voudrais au final c est lorsque j ouvre mon volet en local, via le bouton materiel du sonoff cela change mon inter virtuel de volet dans domoticz et lorsque j utilise mon inter virtuel de volet dans domoticz que celui agisse sur le sonoff.
Merci par avance
edit: j ai egalement essayé avec on/off au lieu de open/closed pour le volet virtuel