Aller au contenu
jojo

Virtual Devices - Variables

Recommended Posts




De nombreuses personnes de la communauté continuent de se poser des questions par rapport aux variables, Virtual Devices, …


 


Berale24 a écrit un tuto récapitulatif très instructif à  ce sujet : Mode Block - Un Peu De Tout.


Je propose ici une variante, qui permet d'utiliser les scènes avec Google Calendar : cfr tuto de Pinou : Google Calendar Vers Hc2/hcl


Pour plus d'info concernant les commandes GET dans les Virtual Device : Requêtes Http /get Sur Hcl


 


Description du besoin / de la fonctionnalité


  1. On a une variable avec (deux) valeurs possibles. Exple : Vacances = Oui/Non
  2. On affiche dans une Virtual Device la valeur actuelle de la variable
  3. On peut modifier la valeur de la variable via la Virtual Device OU via le calendrier Google
  4. Tout ceci fonctionne pour HCL et HC2, ainsi que depuis des smartphone (testé avec Androà¯d, je suppose que iOS le peut également)

 


Création de la variable


Panels -> Variables Panel


Créer la variable Vacances avec deux valeurs possibles Oui et Non


 


Création de la Virtual Device


Toutes les Virtual Devices que j'ai créées pour afficher / modifier la valeur de mes variables, je les ai associées à  une pièce Variables dans la section Section Virtuelle


post-1320-0-62322000-1420240689_thumb.jpg


post-1320-0-66835400-1420240690_thumb.jpg


J'ai commencé toutes mes Virtual Devices associées à  des variables par Var_


Champ IP Address : entrez l'IP de votre box adorée. Le port est 80.


Laissez l'icône par défaut des Virtual Devices. Elle sera remplacée automatiquement (voir la suite) par l'icône représentative de la valeur de la variable. Ainsi, si vous voyez cette icône, c'est que la box n'a pas complètement terminé son redémarrage.


 


Dans les paramètres avancés, créez autant de boutons que de valeurs possibles de la variable.


Pour chaque bouton, donnez-lui un ID représentatif de la fonction du bouton / de la valeur de la variable associée. (l'ID ne peut pas avoir d'espace ou de _)


post-1320-0-37708400-1420240692_thumb.jpg


La commande pour chaque bouton est :


GET<space>/api/sceneControl?id=<id>&action=start HTTP/1.10x0D0x0AHost:<IP><space>0x0D0x0AAuthorization:<space>Basic<space><user:pwd inBase64><space>0x0D0x0A0x0D0x0A


 


NB1 : remplacer <space> par 1 espace,<id> par l'ID de la scène qui mettra à  jour la variable (voir la suite), <IP> par l'IP de votre Box


NB2 : la syntaxe doit être SCRUPULEUSEMENT respectée, sous peine de non fonctionnement


NB3 : cette syntaxe a été validée pour HCL v 3.593, elle peut différer pour les autres versions du firmware de la HCL ou pour la HC2.


NB4: Base64 encoder : https://www.base64encode.org/



 


A chaque boutons, nous avons associé une icône représentative de la valeur de la variable.


Donc ici, lorsqu'on appuiera sur le bouton Oui, la scène (id = 153, chez moi) démarrera, scène qui mettra la variable Vacances à  Oui et la Virtual Device affichera l'icône associée.


 


Scènes de mise à  jour de la variable


Il faut créer 1 scène par valeur possible de la  variable (ou par bouton de la Virtual Device).


Mes scènes commencent par le nom de la variable, puis sa valeur. Elles sont assignées à  la pièce représentative de la variable (ici une pièce virtuelle Vacances).


C'est l'ID de ces scènes qui est référencé dans la Virtual Device.


C'est ici que mon approche est différente de celle de Berale24, car les scènes créées pourraient également être appelées par le script de Pinou en fonction du Calendrier Google.


post-1320-0-30014000-1420240694_thumb.jpg


post-1320-0-23236200-1420240696_thumb.jpg


 


post-1320-0-23236200-1420240696_thumb.jpg


post-1320-0-18411400-1420240697_thumb.jpg


 


Scènes de mise à  jour de la Virtual Device


Il faut créer 1 scène par valeur possible de la  variable (ou par bouton de la Virtual Device).


Mes scènes commencent par Var_ puis le nom de la variable, puis sa valeur. Elles sont assignées à  la pièce virtuelle Variables.


Il faut cocher "Active Scene" et "Start when Home Center 2 starts"


post-1320-0-99889500-1420240697_thumb.jpg


Cette scène tourne "en continu" pour vérifier la valeur de la variable et mettre à  jour la Virtual Device en conséquence. (indispensable que cela se fasse automatiquement après un restart de la Box ou une sauvegarde de a Virtual Device)


post-1320-0-90600200-1420240698_thumb.jpg


 


post-1320-0-72730600-1420240710_thumb.jpg


post-1320-0-51130200-1420240713_thumb.jpg


 


Et je vous jure que tout cela est très WAF : même mon épouse l'utilise, et n'a rien trouvé à  redire …




post-1320-0-54419200-1420240695_thumb.jpg

  • Like 1
  • Upvote 7

Partager ce message


Lien à poster
Partager sur d’autres sites

Très bon tuto qui fait une bonne piqure de rappel ou permet de montrer aux nouveaux les fonctions de la HCL, merci à  toi d'avoir pris le temps de faire une belle mise en page

Afin de rendre ce tuto parfait, il serait bien de rappeler le lien de avoir son mdp en base 64.

 

Avis personnel sur la question:

 

- on doit pouvoir mettre à  jour une variable directement depuis le Virtual Device en put avec un truc comme ça (je dois avoir une légère erreur dans le code, car celui la ne marche pas)

PUT http://127.0.0.1:11111/api/globalVariables HTTP/1.10x0D0x0A0x0D0x0A
Content-Length: 27
{"name":"TEST","value":"1"}

Cela permettrait de diminuer le nombre de scène.

 

Bref c'est juste pour dire d'avoir les différentes possibilités. Ta solution marche au poil et tout tourne rond!

La communauté te remercie!

Partager ce message


Lien à poster
Partager sur d’autres sites

 

Très bon tuto qui fait une bonne piqure de rappel ou permet de montrer aux nouveaux les fonctions de la HCL, merci à  toi d'avoir pris le temps de faire une belle mise en page

Afin de rendre ce tuto parfait, il serait bien de rappeler le lien de avoir son mdp en base 64.

 

Avis personnel sur la question:

 

- on doit pouvoir mettre à  jour une variable directement depuis le Virtual Device en put avec un truc comme ça (je dois avoir une légère erreur dans le code, car celui la ne marche pas)

PUT http://127.0.0.1:11111/api/globalVariables HTTP/1.10x0D0x0A0x0D0x0A
Content-Length: 27
{"name":"TEST","value":"1"}

Cela permettrait de diminuer le nombre de scène.

 

Bref c'est juste pour dire d'avoir les différentes possibilités. Ta solution marche au poil et tout tourne rond!

La communauté te remercie!

 

Master BT,

Par rapport à  ta "remarque" concernant le PUT directement depuis la Virtual Device (histoire de réduire le nombre de scènes), j'ai fait référence au tuto du Berale24.

Comme décrit, cette alternative permet également d'utiliser Google Calendar.

 

Je rajouté le lien vers le convertisseur en base64

Partager ce message


Lien à poster
Partager sur d’autres sites

Effectivement, j'étais passé à  coté de son tuto, merci de me l'avoir fait remarquer.

Très bon boulot, je bookmark  :60:

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci Jojo pour ce très bon sujet.

Les commandes GET et PUT commencent àbien s'éclaircirent, ce qui était loin d'être le cas il y a quelques mois quand j'ai commencé sur la HCL.

Partager ce message


Lien à poster
Partager sur d’autres sites

merci pour ce tuto, qui permet de comprendre un peu mieux comment ca marche

tu peux poster les icônes en meme temps ?

Partager ce message


Lien à poster
Partager sur d’autres sites

J'avais bien regardé avant mais sauf erreur de ma part ils n'y sont pas.

 

edit : c'est dimanche matin et je suis pas réveillé ...

Partager ce message


Lien à poster
Partager sur d’autres sites

Sakkhho,

Je n'ai aucun talent graphique, alors toutes mes icônes je les ai pompées de notre forum préféré.

Beaucoup se trouvent dans la gallerie (cfr MasterBT).

D'autres se trouvent dans ce sujet : http://www.domotique-fibaro.fr/index.php/topic/1588-banque-icones-hc2-et-hcl/page-14?hl=%20banque%20%20icones

Partager ce message


Lien à poster
Partager sur d’autres sites

@jojo

 

merci pour ce tuto que je viens de suivre pas à  pas mais je ne vois pas à  quel moment  tu indiques le ou les modules que tu veux commander ?

 

Pour ma part, je veux faire le test avec un wall plug qui allume une lampe ou qui l'éteint (pour commencer)

 

Où dois je mettre l'iD du WP ?

 

merci

Partager ce message


Lien à poster
Partager sur d’autres sites

Ce tuto sert plutôt à  mettre à  jour une variable avec un virtual device, exemple si tu veux avoir une sorte de retour d'état sur un device non Z-Wave, ou une Variable Rythme de Vie

 

Exemple:

Bouton 3 position

Semaine, Week end, Vacance.

Quand tu cliquera dessus, tu pourra "dire" la box dans quelle rythme de vie tu es.

 

Ou bien tu as un appareil qui n'est pas en Z-wave mais tu veux que la HCx soit au courant de l'état de ce device,

tu te débrouille donc pour mettre à  jour ta variable Etat_VoletCuisine (par exemple).

 

 

Mais pour commander un WP, ne t'embête pas à  passer par la.

C'est un module reconnu par la box, elle connait l'état du device, et tu peut le commander directement ou via une scène si nécessaire.

Partager ce message


Lien à poster
Partager sur d’autres sites

Pour le wp c'est juste àtitre d exemple. L exercice du jour consistant àcréer un bouton pour couper ou allumer plusieurs modules d un coup.

Partager ce message


Lien à poster
Partager sur d’autres sites

Ah donc, le mieux c'est que tu crée une scène par exemple avec ce que tu veux allumer ou éteindre, et tu pointe la scène avec ton virtual device.

Donc plutôt dans ce tuto la:

http://www.domotique-fibaro.fr/index.php/topic/2675-requ%C3%AAtes-http-get-sur-hcl/

Partager ce message


Lien à poster
Partager sur d’autres sites

ok merci  :60:

 

je viens de faire mon premier virtual device B)

c'est presque la fête !!!

1* entre le moment ou je déclenche via le VD et le moment où la lampe s'allume, c'est super long !!!

 

2* j'ai des déclenchements intempestifs !!! c'est la vrai boite de nuit ici <<<<<<faut faire qq chose, c'est pas WAF du tout  :(

je post je que j'ai fais, si vous avez une idée, il doit manquer qq chose (il y a bien sur une autre scène pour arrêter la lampe)

 

merci

post-2014-0-72058500-1421492073_thumb.pngpost-2014-0-12901500-1421492091_thumb.png

 

 

EDIT déclenchement toutes les minutes sur une durée de 6 secondes environ

Partager ce message


Lien à poster
Partager sur d’autres sites

ah et une autre question : 

 

comment intégrer à  ce VD, plusieurs modules, par exemple, la totalité de mes lampes ?

 

est-ce possible ?

Partager ce message


Lien à poster
Partager sur d’autres sites

1ére leçon: 

Toujours faire les test dans son coin pour éviter d’énerver madame, sinon tu pars avec un gros handicap (j'en sais quelque chose.. S.a.r.a.h. pendant un temps coupé la Télé de madame et j'ai perdu beaucoup de points :D)

 

Pour ta scène, il ne faut pas cocher scène active si tu veux pas qu'elle s'active toute seul (selon les conditions que tu as mis avant le Alors, ou met une autre condition bidon), car la tu as réglé pour qu'elle s'allume tout le temps.

 

 

Pour ton virtual device, tu peut très faire un truc comme ça:

 

1er bouton: 

Arrête tout (et donc une scène qui fait cela)

 

2éme bouton:

Allume que la lampe 1 et 2 (et donc une scène qui fait cela)

 

3éme bouton:

Allume toutes les lamps, (et donc une scène qui fait cela)

 

Et ainsi de suite, pour commencer c'est effectivement un bon exercice.

 

 

Hésites pas à  consulter les tuto pour les scènes:

http://www.domotique-fibaro.fr/index.php/topic/53-cr%C3%A9er-une-sc%C3%A8ne-simple-en-mode-bloc/

http://www.domotique-fibaro.fr/index.php/topic/557-exemples-de-sc%C3%A8nes-mode-bloc/

Partager ce message


Lien à poster
Partager sur d’autres sites

en complément aux recommandations de MasterBT :

dans tes Virtual Devices (VD) tu ne faits que des démarrage de scène : donc tu démarres une scène qui allume tes lampes, tu démarres une autre scène qui arrête tes lampes. C'est tout àfait différent que si tu arrêtes la première scène (celle qui démarre les lampes).

En fait arrêter une scène, n'est utile que si une scène dure longtemps, c'est àdire qu'après son démarrage, il y a des actions àeffecter avec un certain délais

Partager ce message


Lien à poster
Partager sur d’autres sites

ok donc un virtual device commande obligatoirement une scène et non un module.

 

Et bien, ça ne marche plus chez moi 

j'ai enlevé scène active <<<< rien

j'ai mis une autre condition bidon <<<<rien non plus

 

j'ai redémarré la box <<<< toujours rien 

 

Pourtant j'ai commencé avec du simple 

Partager ce message


Lien à poster
Partager sur d’autres sites

Je penses qu'il faut reprendre la base,

 

A la base le virtual device à  était mis en place pour communiquer avec les appareil non Z-wave ou non reconnu par la box domotique, en gros pour balancer des requête url à  ce qui est possible de contrôler de cette manière (Hue, Ipx800, autre box domotique, etc...) mais on peut également faire pointer le module virtuel vers la HCL elle même afin de lui envoyer des ordres quand on à  pas de script LUA par exemple (HC2).

 

Dans ton cas,

Au début tu veux allumer ou arrêter plusieurs lampes. Donc pour y arriver on créer une scène pour arrêter toutes les lampes et une scène pour allumer toutes les lampes.

 

Il faut construire les scènes de la façon suivantes:

[Une condition par exemple de jour de la semaine,]
[ alors ]
[Allumer lampe 1]
[Et]
[Allumer lampe 2]

et une autre scène avec Stop au lieu de annuler.

Dans ces 2 scènes tu décoche le [scene active] afin que la box domotique ne passe pas son temps à  regarder les conditions afin de lancer la scène. En gros ta scène ne sera lancer que quand tu l’appellera et non avec sa condition et débutera directement à  la ligne [alors]

 

Ensuite tu fais un virtual device avec 2 boutons.

Le 1er doit pointer la scène allumer les lampes

et le 2éme Arrêter les lampes.

Partager ce message


Lien à poster
Partager sur d’autres sites

certes.......

 

les scènes fonctionnent bien seules = j'allume et j'éteins

 

En revanche, elles ne fonctionnent pas via le virtual device, c'est comme ci il ne commandait rien (je n'ai rien changé par rapport à  mes screenshot sauf  scene active qui est décoché

Partager ce message


Lien à poster
Partager sur d’autres sites

as-tu bien spécifié l'IP de ta box dans l'écran général de ta VD ?

Partager ce message


Lien à poster
Partager sur d’autres sites

@jojo, oui avec le port 80

j'ai beau tout démonter et tout refaire, nada ... :13:

 

comprends pas

c'est bien ça qu'il faut mettre avec GET  ?

 

GET http://192.168.0.16/api/sceneControl?id=50&action=start  HTTP/1.10x0D0x0AHost:192.168.0.16:80 0x0D0x0AAuthorization: Basic <id:pw> 0x0D0x0A0x0D0x0A

 

(<id:pw>  id et pw sont codés en base64)

Partager ce message


Lien à poster
Partager sur d’autres sites

 

La commande pour chaque bouton est :

GET<space>/api/sceneControl?id=<id>&action=start HTTP/1.10x0D0x0AHost:<IP><space>0x0D0x0AAuthorization:<space>Basic<space><user:pwd inBase64><space>0x0D0x0A0x0D0x0A

 

NON, le début de ton GET n'est pas bon, lis bien ce que j'avais écris au début

Partager ce message


Lien à poster
Partager sur d’autres sites

donc tu dois laisser tomber dans ton GET le http://IP => tout le brol avant /api/sceneControl...

Partager ce message


Lien à poster
Partager sur d’autres sites

×