Eviter de prendre 2 fois en compte une commande

Programmation de la Vera

Eviter de prendre 2 fois en compte une commande

Messagede warp » 04 AoĂ» 2014, 10:16

Bonjour,

j'ai une installation avec des volets roulants et des modules Aeon Labs.
J'ai créé une scene qui permet de les descendre tous en même temps sur appui d'un bouton de télécommande.

Par la suite j'ai amélioré cette scène avec du code luup pour permettre d'arrêter la descente si j'appuie une seconde fois.
Tout va bien, je peux descendre les volets, les arrêter, relancer la descente....grâce à la commande call_timer.

Jusqu'au moment où ma copine utilise la télécommande et les volets descendent mais s'arrêtent instantanément.
Elle appuie de nouveau : les volets descendent et s'arrêtent de nouveau instantanément.
Au troisième essai les volets descendent bien jusqu'au bout.

Je pense que le problème vient du fait qu'elle appuie tout juste un peu trop longtemps, et le code est exécuté une seconde fois,
donc elle envoit la commande pour les arrĂŞter.
Mon idée serait d'empêcher quoi que ce soit pendant 200 millisecondes, un peu comme on évite un rebond en electronique.
Le problème est que la commande call_timer n'autorise que des délais par secondes entières, je serais plutôt parti sur 200ms.

.......sinon si quelqu'un a une toute autre idée, pourquoi pas.

Merci.
warp
Membre un peu timide !
 
Messages: 5
Inscription: 17 Nov 2011, 14:20

Re: Eviter de prendre 2 fois en compte une commande

Messagede lmet » 02 Sep 2014, 15:27

Bonjour,
Tu as une fonction sleep voir ici . La durée est en millisecondes.
lmet
Domotique : RPI 3 raspbian stretch, clef Z-wave Aeon Labs, application Domoticz v4.9700
EverSpring : ST814, AN158-6
Fibaro : FGR-221,FGS-221, FGS-211,FGD-211,FGK-103, FGRM-221, FGRM-222, FGMS-001, FGFS-101
iPad Air 2 : Imperihome
Caméras : FosCam FI9805W
Sécurité : Nest Protect
Energie : AEO_HEM2 d'AEON LABS, onduleur APC Back-UPS ES 700
Autres : Pc Windows 10 Pro 64 bits, IPX 800 v3, Netatmo station météo, NAS Synology DS214, TV Sony KDL-50W755c
Avatar de l’utilisateur
lmet
Dieu de domotique
 
Messages: 1091
Inscription: 14 AoĂ» 2011, 18:54
Localisation: Val d'Oise

Re: Eviter de prendre 2 fois en compte une commande

Messagede bozo-merlin » 09 Sep 2014, 14:22

Le sleep ça mais en pause tout le luup, à proscrire

donne ton code qu'on trouve d'ou l'erreur peut venir
VeraLite 1.5.622
Fibaro FGR221 - FGS221 - FGD211 - ByPass - FGK10x - FGWP101
Everspring ST814 - AN157 - AN158 - SM103
Aeon Labs DSB05
Vision ZM1702
Zwave>Me 05443
Eurotronnics StellaZ

PCduino - MyVERA SQL HighChart
RaspberryPi - Domoticz ZstickS2 1wire WeatherUnderground - RaspBMC
IPX800v3
Eaton 1200
bozo-merlin
Dieu de domotique
 
Messages: 587
Inscription: 25 Nov 2012, 14:45
Localisation: NPdC

Re: Eviter de prendre 2 fois en compte une commande

Messagede Okimi » 28 DĂ©c 2014, 08:12

Bonjour

Je remonte ce post car j'ai pratiquement le même problème à gérer.

J'active mon alarme avec un tag RFID sur mon Karotz sous OpenKarotz 2.20
Or parfois le lapin a le hoquet. La commande est lancée 2 fois de suite.
Dans le cas de l'alarme, une désactivation est ordonnée juste après l'activation (c'est même beaucoup plus embêtant dans l'autre sens).

Je voudrais donc rajouter une condition (un délai de non exécution ?) sur mes scènes activation et désactivation alarme mais je ne vois pas trop comment faire.
Si la gestion des millisecondes est trop complexe, je peux déjà essayer avec 1 ou 2 secondes de délai.

Merci pour votre aide

Cdt
Okimi
Jeedom v1.212 sur VM debian8 avec interfaçage VERA, IPX800, WES et Karotz.
Zwave :
VERALITE (UI5 v1.5.622 fr) et VERA EDGE (UI7 v1.7.4000)
Z-URC550, Minimote, Z-Stick S2 et S5, 4in1, DSC13, SP814, ST814, SM103, SF812, ST812, SE812, AN157-6, AN158-6, DUWI 05436, FGR-221, FGS-221, Prises Neo Cool Cam
Filaire :
IPX800v4 (4.00.35) +3 X4VR +2 X8R +2 X24D + 1 XTHL ext.
IPX800v3 (3.05.62) +3 X880 +2 X400
Teracom TCW121b et TCW180b, Serveur WES (v0.7G5), Karotz (OpenKarotz 2.22), NAS Synology DS1512+ et DS211 (DSM 6.2-23824 U4), Raspberry Pi (v1, v2 et v3), Banana Pi M1+
Caméras : Hikvision DS-2CD2532F-IS (3MP), DS-2CD2542F-IS (4MP), DS-2CD2185FWD-IS (8MP) - Dahua SD22204T-GN (2MP PTZ) - Dlink DCS-2210 et DCS-2121 - Zavio F1100 - Bluestork BS-CAM PTZ
Serveurs de virtualisation basse conso sous Proxmox VE 5.3 viewtopic.php?f=18&t=19434
Beelink Gemini X45 Premium (J4105 4c/4t@1.5Ghz + 6Go RAM + SSD 128Go)
Jetway NF9A-Q67 + i5-3470T (2c/4t@2.9Ghz + 8Go RAM + SSD 180Go)
Okimi
Dieu de domotique
 
Messages: 717
Inscription: 20 Jan 2012, 10:11

Re: Eviter de prendre 2 fois en compte une commande

Messagede lobo » 15 Jan 2015, 19:57

Bonjour, j'avais aussi le même problème avec le karotz, je l'ai resolu en creant une variable qui definit si la scene peut s'executer ou non
Voivci mon code:
Code: Tout sélectionner
-- on récupère l’état de la variable "delai" stockée dans un virtual container
local delay = luup.variable_get("urn:upnp-org:serviceId:VContainer1","Variable1", id_variables)

if(delay=="off") then
        -- on change le delai sur "on"
   luup.variable_set("urn:upnp-org:serviceId:VContainer1","Variable1","on",id_variables)
        -- on rĂ©cupère l’état de la variable "alarme" stockĂ©e dans un virtual container
   local statusAlarme = luup.variable_get("urn:upnp-org:serviceId:VContainer1","Variable3", id_variables)

    if (statusAlarme == "0") then
   -- activation de l'alarme
   luup.call_action("urn:micasaverde-com:serviceId:HomeAutomationGateway1","RunScene",{ SceneNum="3" }, 0)
    else
   -- dĂ©sactivation de l'alarme
         luup.call_action("urn:micasaverde-com:serviceId:HomeAutomationGateway1","RunScene",{ SceneNum="4" }, 0)   
    end
    -- on reset la variable delai dans 8 sec, pour accepter Ă  nouveau l'execution de la scene
    luup.call_delay( 'resetDelay', 8)
end

function resetDelay()
-- on autorise Ă  nouveau l'excution de la scene en remettant la variable delai  Ă  "off"
  luup.variable_set("urn:upnp-org:serviceId:VContainer1","Variable1","off",id_variables)
  -- on fait dire a karotz "ready" pour indiquer qu'il accepte a nouveau le tag
  luup.inet.wget("http://192.168.1.111/cgi-bin/sound?id=ready")
end


mais ça ne résout pas le problème de wrap étant donnée que la durée minimum pour un call_delay est de 1 seconde
lobo
Membre un peu timide !
 
Messages: 9
Inscription: 09 Juil 2013, 08:32

Re: Eviter de prendre 2 fois en compte une commande

Messagede Okimi » 16 Jan 2015, 09:02

Bonjour

Merci Lobo pour ton partage.
C'est exactement ce que je cherchais.

Bonne idée le "Ready" sur le Karotz.
Jeedom v1.212 sur VM debian8 avec interfaçage VERA, IPX800, WES et Karotz.
Zwave :
VERALITE (UI5 v1.5.622 fr) et VERA EDGE (UI7 v1.7.4000)
Z-URC550, Minimote, Z-Stick S2 et S5, 4in1, DSC13, SP814, ST814, SM103, SF812, ST812, SE812, AN157-6, AN158-6, DUWI 05436, FGR-221, FGS-221, Prises Neo Cool Cam
Filaire :
IPX800v4 (4.00.35) +3 X4VR +2 X8R +2 X24D + 1 XTHL ext.
IPX800v3 (3.05.62) +3 X880 +2 X400
Teracom TCW121b et TCW180b, Serveur WES (v0.7G5), Karotz (OpenKarotz 2.22), NAS Synology DS1512+ et DS211 (DSM 6.2-23824 U4), Raspberry Pi (v1, v2 et v3), Banana Pi M1+
Caméras : Hikvision DS-2CD2532F-IS (3MP), DS-2CD2542F-IS (4MP), DS-2CD2185FWD-IS (8MP) - Dahua SD22204T-GN (2MP PTZ) - Dlink DCS-2210 et DCS-2121 - Zavio F1100 - Bluestork BS-CAM PTZ
Serveurs de virtualisation basse conso sous Proxmox VE 5.3 viewtopic.php?f=18&t=19434
Beelink Gemini X45 Premium (J4105 4c/4t@1.5Ghz + 6Go RAM + SSD 128Go)
Jetway NF9A-Q67 + i5-3470T (2c/4t@2.9Ghz + 8Go RAM + SSD 180Go)
Okimi
Dieu de domotique
 
Messages: 717
Inscription: 20 Jan 2012, 10:11

Re: Eviter de prendre 2 fois en compte une commande

Messagede fatal25 » 17 FĂ©v 2016, 23:13

bozo-merlin a écrit:Le sleep ça mais en pause tout le luup, à proscrire


On a une fonction qui fonctionne parfaitement bien, autant s'en servir... donc utilises un sleep 500 par exple Ă  la fin de ton code luup et ce sera parfait.

Pour info, la commande sleep est à proscrire sur des longues périodes répétitives. Par exple, utiliser un sleep 10000 toutes les minutes.
Créateur du SmartVT (virtual thermostat); Repris et amélioré par Antor.
Créateur du VR dimmable pour IPX800v3 / Veralite.

Si vous aimez le travail fourni pour vous faciliter la vie, faites un don svp.
https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=2K6F9KCEZYTG6&lc=FR&item_name=fatal25&item_number=domotique&currency_code=EUR&bn=PP%2dDonationsBF%3abtn_donateCC_LG%2egif%3aNonHosted
fatal25
Dieu de domotique
 
Messages: 1274
Inscription: 12 Mar 2012, 16:08


Retourner vers Programmation

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités

Copyright © 2011 - Touteladomotique.com - Tous droits rĂ©servĂ©s
Les blogs partenaires : Abavala, Domo-Blog, Domotique34, Maison et Domotique