babaorhum a écrit : 30 mars 2022, 23:53
Bizarrement, lorsque je presse la touche choisie sur ma télécommande, la lampe bascule et 1 seconde plus tard rebascule à nouveau Au bout d'un certain nombre d'appui sur la touche, la lampe reste dans l'état demandé sans en changer.
(...)
Quelqu'un aurait-il déjà fait face à ce phénomène ?
J'ai eu cela avec le switch intégré au Qubino Smart-Meter intégré en tête de mon tableau electrique. En plus des mesures de conso, il intègre en effet un switch pour commander un relais de puissance externe filaire (+possibilité de l'accoler à un module 4 relais commandé en IR, que je n'utilise pas).
Et là, pareil: Commutation on... passe off dans les 1 ou 2s qui suivent. Après qq tests manuels, il est vite apparu aussi que sur un tel on/off, re-commuter on donnait le plus souvent un état stable à on.
Ayant remarqué dans les logs que ce comportement était accompagne d'un timeout (alors que la commande est reçue, sinon il n'y aurait pas le passage on initial), j'avais d'abord essayé de bidouiller les timeout open-zwave. Sans succès.
Histoire de savoir si c'est domoticz qui renvoyait l'ordre inverse presque immédiatement ou si c'est le switch qui le faisait tout seul, j'avais fait un petit script device Lua de debug qui logait les commandes envoyées. Il est apparu que c'est du côté domoticz/open-zwave que l'ordre inverse non venait.
Un ticket ouvert chez Qubino à ce sujet avait eu pour réponse que le module était parfois assez long à renvoyer l'ack(nowledge) de la commande initiale (ce qui allait dans le sens de mon observation: Commande recue car bascule switch mais timeout faute de ack) et que c'est open-zwave qui renvoyait l'ordre inverse automatiquement pour rendre cohérent l'état supposé côté switch et côté controleur.
Ils avaient ouvert eux-mêmes un ticket OZW afin de pouvoir contourner ce comportement pour des matériels un peu longs à retourner leur état, resté lettre morte.
En désespoir de cause, j'avais reproduit par script le comportement/timmings qui faisaient "tomber en marche", ce qui donna ceci:
~/domoticz/scripts/lua $ more script_device_SmartMeterHack.lua
Code : Tout sélectionner
-- Duplicate user Smart-Meter relay switch command after a few
-- seconds to cope with immediate spurious invalidating command on
-- device state change...
--
-- For hereunder tunables, take care not to set duplicate < spurious
-- to avoid making a switching loop + short duplicate times lead to
-- several retries (<= 3s).
--
-- A (string) user variable timeSmartMeterRelay must be created to 'nil'
-- before copying this script under domoticz/scripts/lua
--
-- Changelog:
-- 20/04/2017, YL, 1st version.
spuriousCmdDelaySec=1
timeDuplicateCmdSec='5'
SmartMeterSwitch='Relais Smart-Meter HP/HC Actif'
timeLastCmd='timeSmartMeterRelay'
commandArray = {}
if (devicechanged[SmartMeterSwitch]) then
devState = devicechanged[SmartMeterSwitch]
t1 = os.time()
t0 = uservariables[timeLastCmd]
-- 1st time init for user variable...
if (t0 == 'nil') then
t0 = t1
end
tDiff = os.difftime(t1, t0)
-- Debug :
print(SmartMeterSwitch..' = '..devState)
print('t1 : '..t1..' / t0 : '..t0.. ' ; Diff = '..tDiff)
-- Do we have the immediate change state spurious (buggy device?) invalidating current command ?
if (tDiff <= spuriousCmdDelaySec) then
if (devState == 'On') then
commandArray[SmartMeterSwitch] = 'Off AFTER '..timeDuplicateCmdSec
end
if (devState == 'Off') then
commandArray[SmartMeterSwitch] = 'On AFTER '..timeDuplicateCmdSec
end
end
commandArray['Variable:'..timeLastCmd] = tostring(t1)
end
return commandArray
Comme indiqué en commentaire: Si on se prends un ordre inverse du précédent dans la seconde, on renvoie l'ordre initial après 5s. Valeurs de temps à adapter au besoin à son matériel.
Il faudra aussi mettre le bon nom de switch niveau variable SmartMeterSwitch et avoir créé au préalable une variable utilisateur de type chaine de caractère (même si elle contient une valeur de temps en secondes, côté lua sous domoticz on ne sait gérer ainsi que des chaines) nommée dans mon cas timeSmartMeterRelay.
Sinon, renvoyer le relais au vendeur et prendre un équivalent d'une autre marque s'il est encore temps...