Page 1 sur 1

Effet bizzare

Publié : 30 mars 2022, 23:53
par babaorhum
Bonsoir à tous,

J'ai une interrogation qui me viens suite à mise en place d'une scène qui commute de ON vers OFF et vice versa une lampe quand on presse le bouton d'un télécommande.

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.

J'avoue que je me pose des questions.
Quelqu'un aurait-il déjà fait face à ce phénomène ?

Re: Effet bizzare

Publié : 31 mars 2022, 00:28
par balajol
Bonsoir,
Un rebond au niveau du contact de la télécommande qui est interprété comme 2 Pressions ?
La même chose avec un script et une tempo d'1 s sur chaque changement d'état Procure le même effet ?
Cdt
Bertrand

Re: Effet bizzare

Publié : 31 mars 2022, 08:15
par lost
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...

Re: Effet bizzare

Publié : 31 mars 2022, 22:04
par babaorhum
Merci Bertrand,
je pensais moi aussi à un rebond du contact.

Au plaisir.


Hello Lost,
cela me semble bien compliqué pour éviter un effet de rebond.
Merci pour cette réponse en tout cas, je vais creuser le sujet

Au plaisir.

Re: Effet bizzare

Publié : 01 avr. 2022, 08:09
par lost
babaorhum a écrit : 31 mars 2022, 22:04 cela me semble bien compliqué pour éviter un effet de rebond.
Si c'est vraiment un effet rebond, ce qui parait assez improbable car je n'imagine pas un tel dispositif oublier de les filtrer d'une part (c'est quand même le b-a-ba) mais, ici, vu les délais de transmission radio cela parait encore plus improbable de tomber dans ce type de problème (vu du récepteur).

Ceci dit, un bout de script device de debug qui, après filtrage sur les noms, affiche les actions prises en compte côté telco et relais devrait te permettre de confirmer sans ambiguïté de quel côté se trouve le problème en lisant les logs, après quelques appuis.

Sans rien écrire, tu as essayé de commander ta lampe en direct, en ajoutant simplement le switch attaché au relais qui la commande niveau dispositifs (quitte à le remettre en inutilisé si jamais d'usage direct via la page web de domoticz)?

C'est un essai simple si tu ne le sens pas d'écrire un bout de Lua.