Gladys et Imperihome


#42

OK ! Ceci explique donc cela !

Pas vraiment… La logique me dirait que cela est prévu pour remplacer les 2 types de boutons possibles sur les volets (bouton poussoir ou bouton stable/bistable) afin de na pas poser de problème lors de l’intégration dans une installation. Mais je ne vois pas vraiment en quoi cela changerait quoi que ce soit de se tromper de type puisque les 2 envoient 0 ou 1…

Edit : A moins que pour que pulseable n’oblige l’utilisateur à garder le doigt sur l’icône pour actionner et que l’ordre 0 soit envoyé quand le doigt n’appuie plus sur l’icône ? Je n’ai malheureusement pas la possibilité de tester ça sur mes volets puisque chez moi, c’est montée ou descente, pas de poussoir…


#43

Je pense en effet que je vais mettre non-poussoir.
Il faudra regarder comment est géré le tri-state.
Je vais mettre une version à jour afin de tester ça.


#44

Si tu veux d’autres testeurs, j’en suis évidemment :wink:


#45

Bon,
ça y est je suis en train de mettre le devShutter en place.

edit: tu peux recharger pour tester


#46

Alors, j’ai rechargé, et malheureusement, ça n esemble pas fonctionner, ou alors j’ai raté un truc…

Je créé un device avec devshutter en type et l’icone associé ne semble bouge pas lorsque je change l’état. Et ce que je mette des valeurs min/max à 0/100 ou 0/2…

Lorsque je créé un Device, les valeurs entrées dans les champs protocol et service ont elle une incidence quelque part ? (ne sachant que mettre, actuellement, je mets “virtuel”)


#47

alors il faut mettre 0/100.
sinon, as-tu regardé les logs?


#48

Donc on est d’accord :

  • pour le devicetype : identifier= ce que je veux, min=0, max=100, unité=%, tag=DevShutter et type=level
  • mais pour le device, identifier= ce que je veux, mais dans protocole et service, je dois mettre quoi ?

Les logs me renvoient ceci quand j’essaie de modifier depuis impreihome ou que je modifie la valeur directement depusi les périphériques :

0|gladys   | val:40
0|gladys   | Unhandled rejection Error: virtuel does not exist or does not have an exec function
0|gladys   |     at /home/pi/gladys/api/core/devicetype/deviceType.exec.js:54:39
0|gladys   |     at tryCatcher (/home/pi/gladys/node_modules/bluebird/js/release/util.js:16:23)
0|gladys   |     at Promise._settlePromiseFromHandler (/home/pi/gladys/node_modules/bluebird/js/release/promise.js:512:31)
0|gladys   |     at Promise._settlePromise (/home/pi/gladys/node_modules/bluebird/js/release/promise.js:569:18)
0|gladys   |     at Promise._settlePromise0 (/home/pi/gladys/node_modules/bluebird/js/release/promise.js:614:10)
0|gladys   |     at Promise._settlePromises (/home/pi/gladys/node_modules/bluebird/js/release/promise.js:693:18)
0|gladys   |     at Promise._fulfill (/home/pi/gladys/node_modules/bluebird/js/release/promise.js:638:18)
0|gladys   |     at /home/pi/gladys/node_modules/bluebird/js/release/nodeback.js:42:21
0|gladys   |     at /home/pi/gladys/node_modules/sails-mysql/lib/connections/spawn.js:120:16
0|gladys   |     at Object.poolfully [as releaseConnection] (/home/pi/gladys/node_modules/sails-mysql/lib/connections/release.js:28:12)
0|gladys   |     at Query._callback (/home/pi/gladys/node_modules/sails-mysql/lib/connections/spawn.js:105:35)
0|gladys   |     at Query.Sequence.end (/home/pi/gladys/node_modules/mysql/lib/protocol/sequences/Sequence.js:96:24)
0|gladys   |     at Query._handleFinalResultPacket (/home/pi/gladys/node_modules/mysql/lib/protocol/sequences/Query.js:144:8)
0|gladys   |     at Query.EofPacket (/home/pi/gladys/node_modules/mysql/lib/protocol/sequences/Query.js:128:8)
0|gladys   |     at Protocol._parsePacket (/home/pi/gladys/node_modules/mysql/lib/protocol/Protocol.js:280:23)
0|gladys   |     at Parser.write (/home/pi/gladys/node_modules/mysql/lib/protocol/Parser.js:73:12)
0|gladys   |     at Protocol.write (/home/pi/gladys/node_modules/mysql/lib/protocol/Protocol.js:39:16)
0|gladys   |     at Socket.<anonymous> (/home/pi/gladys/node_modules/mysql/lib/Connection.js:96:28)
0|gladys   |     at emitOne (events.js:116:13)
0|gladys   |     at Socket.emit (events.js:211:7)
0|gladys   |     at addChunk (_stream_readable.js:263:12)
0|gladys   |     at readableAddChunk (_stream_readable.js:250:11)
0|gladys   |     at Socket.Readable.push (_stream_readable.js:208:10)
0|gladys   |     at TCP.onread (net.js:594:20)

#49

ben là ça dépend de ton dévice. c’est du fake ou un vrai device?


#50

Un fake.

Mon but est d’avoir un device virtuel à pour gérer plusieurs choses.

Ex : Etat 0% si fenêtre fermée, état 50% si oscillobattant, 100% si ouverte. (se sont les détecteurs d’ouverture qui feront changer l’état du device en fonction de leur état respectif)


#51

ok.
le problème c’est que actuellement il n’existe pas de fake device. donc ton erreur est normale car il cherche le protocole correspondant à ton device mais il n’y en a pas.
ce que tu peux faire c’est mettre la mème chose que pour un device 433MHz(si tu as, sinon un autre).
De cette façon, il changera d’état et tu n’a plus qu’a faire un scénario sur changement de valeur.


#52

Sinon, sur mon github, j’ai un fake module (une modif de celui de @MathieuA) qui te permet d’avoir de vrai fake device, avec un vrai fake-service.


#53

Donc il me faut un device physique correspondant à un devshutter, c’est ça ?

Ah, ça ça m’intéresse ! As tu un lien histoire que je regarde comment ça se passe ?


#54

#55

la solution de @piznel est pas mal je pense.
sinon, non tu n’a pas besoin d’un vrai device.
si tu as du 433MHz sur ta gladys par exemple, tu peux juste remplir les infos du device de la même façon et mettre un identifier bidon


#56

Merci @piznel !

Une fois le module installé, il faut mettre des truc spécifique dans les valeurs protocoles, services, etc lors de la création d’un fake module ou on met ce qu’on veut ?


#57

Heu, je crois que j’ai mis fake-module pour le service …


#58

Oh yeah !!!

Merci @piznel !! Ton module fonctionne à merveille :ok_hand: (service = gladys-fake-module) et permet de jouer avec des devices virtuels !!!
Il faut ABSOLUMENT que tu fasses en sorte qu’il apparaisse dans le store de modules dans Gladys !

Associé au module d’@isokar il permet d’obtenir des icônes à 3 états dans Imperihome !

Merci les gars !!! Vous êtes des champions !! :clap:

Bon, maintenant, il ne me reste plus qu’à chercher comment tourner le scenario pour que lorsqu’un capteur d’ouverture est ouvert, 3 secondes se passent avant de contrôler l’état d’un 2ème capteur et en fonction du résultat, une valeur au device virtuel.soit donnée…
Je sens que je vais me gratter la tête un moment ! :thinking:


#59

Là, tu n’as pas le choix : un script avec setTimeout.
et heureux que ce petit truc à la con serve !


#60
  • Va me permettre de n’avoir qu’un seul icone par fenêtre dans Imperihome au lieu de 2 !
    => Donc gain en visibilité !
  • Va également me permettre d’avoir un icône m’affichant la couleur du jour et du lendemain (EDF/Tempo) !
    => Donc plus d’informations dans Impérihome (alors qu’avant, j’avais besoin d’aller chercher l’info ailleurs)

Donc pas si con que ça ! Loin de là !!

Yep, j’utilise déjà setTimeout pour temporiser 3 prises, mais je pense que je vais galérer pour les conditions…

Va “juste” falloir que je regarde les documentations de Gladys pour savoir comment récupérer le dernier état connu d’un device puis changer l’état d’un autre device en fonction du résultat.
J’ai une vague idée de comment ça va s’organise, mais puisqu’il était impossible de gérer les icônes 3 états avant aujourd’hui, je n’avais pas pris le temps de me pencher sur la question avant :wink:


#61

Si tu as besoin d’aide, n’hésites pas :slight_smile: