restauration d'un device dans son Ă©tat initial

Programmation de la Vera

restauration d'un device dans son Ă©tat initial

Messagede jaco » 14 FĂ©v 2013, 14:58

Bonjour, je viens d'acquérir une veralite reçue hier et déjà je fais mes premiers pas en scripting lua.

Derrière le titre un peu pompeux de mon sujet se cache un problème tout simple, j'explique concrètement:

1/ Je souhaite dans une première scène "dimModify" récupérer le % de dim initial d'une ampoule (get) et d'une façon ou d'une autre sauvegarder cette donnée quelque part (je n'ai aucune idée de la façon de procéder en lua, je ne sais faire ni le get ni la sauvegarde de la donnée). Pour la petite histoire cette première scène sur la veralite est exécutée par appui d'un bouton "on" de ma télécommande (remotec ZURC550). Mais ça je sais faire sur ce point précis.

2/ Cette première scène "dimModify" change ensuite le % de dim de l'ampoule en question pour le passer à 30% par exemple.

3/ Une deuxième scène "dimRestore" (associée à un bonton off de ma télécommande mais ça je sais faire, donc :) ) restaure l'ampoule dans son % de dim initial (set) sauvegardé précédemment (et ça je ne sais pas faire, ni la récupération de la donnée ni le set).

J'ai commencé à chercher un peu et il me semble avoir compris que lua implémente déjà cela très bien directement quand il s'agit de restaurer un état immédiatement (?) précédent mais comment, j'en sais rien. Pas encore trouvé cela non plus. A noter que ma question est un tout petit peu plus large puisqu'il s'agit d'un état précédent quelconque (pas forcément le dernier avant modification donc). Cela dit cela m'intéresse au plus haut point également, presque plus encore !

VoilĂ , si quelqu'un peut m'aider ou me filer de bonnes pistes, je lui en serai Ă©ternellement reconnaissant cela va sans dire :mrgreen:

.
RETOUR EXPERIENCE PRODUITS (01/2013 Ă  aujourd'hui)
433MHz: Astrell: qques Telcos et plugs on/off (pour dépanner)
Z-Wave:
ContrĂ´leurs - Micasaverde: VeraLite, Remotec: ZURC-550 (zombie) + ZRC-100, Aeon Labs: DSA22 + Z-Stick S2
Emetteurs - Aeon Labs: DSB05, Fibaro: FGK + FGMS (récents)
RĂ©cepteurs - Fibaro: Wallplug FGWPE, Everspring (marque de merde): AN157 (tous morts) + AN158 + AD142 (tous morts), QEES: Reto shell, Aeon Labs: DSC08 + DSC13
Ampoules - Domitech: ZBULB (récents), Aeon Labs: ZW098 (récents)
Infrarouge:
USBUIRT, AIM: IR606Q, Ebode (marque de merde): PM28 (tous morts) + EXLED3 (tous morts)
Divers:
Raspberry Pi: modèle B, Cubieboard: version 2, Monster Cable: switch hdmi
Disques durs externes: Seagate (de 1 Ă  2 To), Freecom (300 Go)
Wiko: Cink Peax
Ampoules led dimmables: Philips (eq 40W Ă  eq 100W), Vision El (eq 60W), Osram (eq 75W)
Ampoules fluo dimmables: quelques marques testées dont Osram et Ikea (toutes inutilisables)
Internet: Orange Livebox
jaco
Dieu de domotique
 
Messages: 423
Inscription: 20 Jan 2013, 00:09
Localisation: Tours

Re: restauration d'un device dans son Ă©tat initial

Messagede milillicuti » 14 FĂ©v 2013, 15:19

Question : pour quoi faire ?
Communication et publicité. Mais aussi quelques articles sur la domotique !
Communication & publicité - Domotique : http://www.milillicuti.com
Avatar de l’utilisateur
milillicuti
Dieu de domotique
 
Messages: 1435
Inscription: 16 DĂ©c 2008, 13:40

Re: restauration d'un device dans son Ă©tat initial

Messagede jaco » 14 FĂ©v 2013, 15:35

milillicuti a Ă©crit:Question : pour quoi faire ?


Je crée une ambiance particulière dans une pièce (j'ai pas mal de lampes) mettons une ambiance cinoche un peu sombre donc. Ponctuellement, j'ai besoin de lire un truc, donc d'allumer un spot à pleine puissance que je souhaite ensuite remettre dans son état précédent.

Si tu veux tout savoir, voilà l'idée. :) Cela dit ça pourrait être un volet ou n'importe quoi d'autre qu'une lampe.
RETOUR EXPERIENCE PRODUITS (01/2013 Ă  aujourd'hui)
433MHz: Astrell: qques Telcos et plugs on/off (pour dépanner)
Z-Wave:
ContrĂ´leurs - Micasaverde: VeraLite, Remotec: ZURC-550 (zombie) + ZRC-100, Aeon Labs: DSA22 + Z-Stick S2
Emetteurs - Aeon Labs: DSB05, Fibaro: FGK + FGMS (récents)
RĂ©cepteurs - Fibaro: Wallplug FGWPE, Everspring (marque de merde): AN157 (tous morts) + AN158 + AD142 (tous morts), QEES: Reto shell, Aeon Labs: DSC08 + DSC13
Ampoules - Domitech: ZBULB (récents), Aeon Labs: ZW098 (récents)
Infrarouge:
USBUIRT, AIM: IR606Q, Ebode (marque de merde): PM28 (tous morts) + EXLED3 (tous morts)
Divers:
Raspberry Pi: modèle B, Cubieboard: version 2, Monster Cable: switch hdmi
Disques durs externes: Seagate (de 1 Ă  2 To), Freecom (300 Go)
Wiko: Cink Peax
Ampoules led dimmables: Philips (eq 40W Ă  eq 100W), Vision El (eq 60W), Osram (eq 75W)
Ampoules fluo dimmables: quelques marques testées dont Osram et Ikea (toutes inutilisables)
Internet: Orange Livebox
jaco
Dieu de domotique
 
Messages: 423
Inscription: 20 Jan 2013, 00:09
Localisation: Tours

Re: restauration d'un device dans son Ă©tat initial

Messagede milillicuti » 14 FĂ©v 2013, 15:59

Si tu veux stocker un Ă©tat, il te faudra un variable container.

En fait ton idée est : une scène pour lire un livre, une scène pour regarder la tv, et un bouton qui allume toujours à fond (sans allumer à l'état précédent, le cas échéant) ?
Communication et publicité. Mais aussi quelques articles sur la domotique !
Communication & publicité - Domotique : http://www.milillicuti.com
Avatar de l’utilisateur
milillicuti
Dieu de domotique
 
Messages: 1435
Inscription: 16 DĂ©c 2008, 13:40

Re: restauration d'un device dans son Ă©tat initial

Messagede jaco » 16 FĂ©v 2013, 03:25

Ca y est j'ai trouvé. Le seul point sur lequel je bloquais encore jusqu'à ce soir, c'était que je pensais que toute variable déclarée dans le code luup associé à une scène était forcément locale et sa valeur forcément perdue à chaque ré-exécution.

En fait, c'est tout l'inverse, elles sont par défaut globales au niveau de la vera toute entière !

Ca donne donc un truc comme ça de base:

D'une part, un premier bouton "spot plafonnier 100%"
Code: Tout sélectionner
-- déclarations
local lul_arguments = {}
previousDim = luup.variable_get("urn:upnp-org:serviceId:Dimming1", "LoadLevelTarget", 5)

-- execution
lul_arguments["newLoadlevelTarget"] = 100
lul_resultcode, lul_resultstring, lul_job, lul_returnarguments = luup.call_action("urn:upnp-org:serviceId:Dimming1", "SetLoadLevelTarget", lul_arguments, 5)



D'autre part, "spot plafonnier restauré"
Code: Tout sélectionner
-- déclarations
local lul_arguments = {}

-- execution
lul_arguments["newLoadlevelTarget"] = previousDim
lul_resultcode, lul_resultstring, lul_job, lul_returnarguments = luup.call_action("urn:upnp-org:serviceId:Dimming1", "SetLoadLevelTarget", lul_arguments, 5)


Ensuite il suffit de rajouter une condition sur le get de LoadLevelTarget pour s'économiser un bouton de la télécommande.
Ainsi un premier appui sur le bouton ON pousse la lampe à 100%, un deuxième la rétablit à son % de gradation précédent.

C'est tellement bête comme chou, que je pense pouvoir systématiser le même genre de code pour la plupart de mes scènes.

Pour une configuration "dïner" lampe A (100%) + lampe B (80%) + lampe C (80%), un premier appui sur le bouton de la telco l'initalise, un deuxième baisse tout d'un cran, un troisième encore d'un cran, un quatrième remet tout à sa valeur initiale.

Idem pour une autre configuration "soirée film" lampe A (50%) + lampe B (30%) + lampe C (30%) + lampe D (on) + lampe E (on) + télé (on)

etc etc etc

Il suffit de mémoriser le nombre d'appuis sur un même bouton dans une variable globale et c'est plié.
Je vais m'économiser pas mal de boutons comme ça, rationnaliser mes ambiances tout en simpifiant l'usage de tout ça :)

--------------------------------------

Par contre j'aurais aimé faire apparaître les variables en question dans l'onglet "Avancé" de la config de chaque module. Mais je ne pige pas encore comment ça marche.

Quelqu'un peut m'expliquer ce qu'il faut mettre dans le champ "Nouveau service" ? Ca ressemble au nom d'une callback mais si c'est bien cela je ne sais pas oĂą il faut mettre son code ni ce qu'il faut mettre dans le champ exactement ?!

Par ailleurs, est-ce qu'il existe une façon de se connecter à la vera en mode console puisque c'est du linux, on gagnerait peut-être en visibilité des choses ?
RETOUR EXPERIENCE PRODUITS (01/2013 Ă  aujourd'hui)
433MHz: Astrell: qques Telcos et plugs on/off (pour dépanner)
Z-Wave:
ContrĂ´leurs - Micasaverde: VeraLite, Remotec: ZURC-550 (zombie) + ZRC-100, Aeon Labs: DSA22 + Z-Stick S2
Emetteurs - Aeon Labs: DSB05, Fibaro: FGK + FGMS (récents)
RĂ©cepteurs - Fibaro: Wallplug FGWPE, Everspring (marque de merde): AN157 (tous morts) + AN158 + AD142 (tous morts), QEES: Reto shell, Aeon Labs: DSC08 + DSC13
Ampoules - Domitech: ZBULB (récents), Aeon Labs: ZW098 (récents)
Infrarouge:
USBUIRT, AIM: IR606Q, Ebode (marque de merde): PM28 (tous morts) + EXLED3 (tous morts)
Divers:
Raspberry Pi: modèle B, Cubieboard: version 2, Monster Cable: switch hdmi
Disques durs externes: Seagate (de 1 Ă  2 To), Freecom (300 Go)
Wiko: Cink Peax
Ampoules led dimmables: Philips (eq 40W Ă  eq 100W), Vision El (eq 60W), Osram (eq 75W)
Ampoules fluo dimmables: quelques marques testées dont Osram et Ikea (toutes inutilisables)
Internet: Orange Livebox
jaco
Dieu de domotique
 
Messages: 423
Inscription: 20 Jan 2013, 00:09
Localisation: Tours


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