[V4][Intégration] Z-wave

Bonsoir,

comme vu lors du call de dimanche, il n’y a actuellement personne sur l’intégration du z-wave qui malheureusement n’est pas complète.

je propose donc déjà de faire le point sur tout ce qui manque actuellement pour que gladys puisse fonctionné correctement avec un réseau z-wave. (je ne sais pas si je peux modifier ce post au fur et a mesure pour y ajouter les différents éléments remonté?) et de les catégorisé (front/back, important, etc…)

j’ai relancé l’instance que j’avais faite pour mette à jour avant de poster ce que j’ai trouvé.
Je précise que je ne me suis pas du tout plongé dans le code encore ^^ donc je ne sais pas ce qui est déjà implémenté en back et juste pas utilisé en front

avant de lister les éléments j’ai eu un cas un peut… :

  • j’appelle mes module lumières « lumière » et je les met dans une pièce du coup dans la liste j’avais 10 objet lumière différents sans possibilité de les distingué (sauf le salon ou j’ai 2 lumière donc 1 qui est nommé lumière tv :smiley: ), peut être faire un nom composer pour l’affichage du type #room-#name

et 1 point que je n’ai pas vu me semble t’il, pas de log consultable depuis l’interface?

aller revenons en au z-wave, les points que j’ai remarqué :

back : (je ne sais pas si c’est déjà implémenté ou non mais ne pouvant pas les modifier depuis le front on dira que non)

  • ajout support des champs params des équipements (affichage, modification), la plupart des equipements z-wave sont configurable, par exemple mes détecteur de mouvement on une led, je peut l’activer ou non selon mes envie.
  • ajout support des commandes des équipements (ce sont les valeurs que l’ont peut modifier, allumer une lumière, définir l’intensité, etc…) actuellement on ne peut pas en ajouter manuellement, dans mon cas mes module dimmer ne sont que on/off sur gladys par exemple, pas de possibilité d’ajouter l’intensité
  • de manière globale rajouter des retours d’état (websocket). Ne pas savoir ce qu’il se passe quand on demande de se connecter a l’usb sans rafraichir la page c’est pas top :wink:
  • les actions globale au controller usb : réparation du réseau, etc…

front : (selon moi faut tout refaire pour être plus lisible)

  • la page appareils a beaucoup trop d’infos par exemple, je n’ai que 10 équipements et je dois déjà faire défiler pendant 5min, de plus comme c’est logiquement le point d’entré dans le service, les bouton d’appairage doivent être ici, une règle d’or en front c’est que plus de 3 click ca fait chier tout le monde :wink: .


    4 equipements sur la page c’est trop peut !

  • refonte de la page configuration pour la rendre spécifique a 1 seul équipement (pas vu d’utilisation de modal? c’est voulu?) qui permettra justement de modifier les commandes/paramètres du module en question (plus de liens dans le menu)

  • la page réseaux : y’a déjà une discussion la dessus, effectivement elle est à refaire (le graph est illisible, jeedom, par exemple (c’est ce que j’utilise), a deux mode d’affichage, un graph 2d et non 3d légèrement plus fin que celui la ce qui le rend plus lisible mais sans être exceptionnel non plus, et un tableau pour le nombres de saut entre les équipements)

  • la page paramètres : peut être ajouter ici les action du controller usb (heal, reset, etc…)

  • de façon globale : ca manque de description, y’a un bouton régler on sait pas trop ce que ca fait (sans doute le heal du network?), un bouton supprimé pour l’exclusion, ca c’est du détail mais c’est aussi ce qui fait la diff pour les users si ils comprennent tout de suite ce qui se passe c’est mieux.

    rien d’autre ici, et on attend, attend, pour rien l’alerte ne disparait tout simplement pas tant qu’on rafraichi pas la page ^^

  • mes équipements (mini dimmer qubino) sont dans la catégorie prise? du coup pour faire mon test j’ai du mettre allumer/éteindre des prises, je ne sais pas d’où ca peut venir, les équipements étaient déjà sur l’usb je n’ai fait que les incorporé dans gladys, et je n’ai pas trouvé ou c’était modifiable (j’ai quand même refait connecter dans gladys mais ca n’as rien changé)

  • dashboard : j’ai des soucis de toggle sur mes équipements :
    — ca va bien marché les 1-2 première fois puis le toggle ne sera tout simplement plus fonctionnel
    — régulièrement le switch perd le state, j’ai une lumière éteinte et j’appuie pour l’allumer le switch va passer actif un bref instant puis revenir en inactif alors que la lumière aura bien été allumé, du coup le click suivant ne fait rien (bah oui il demande d’allumer une lumière déjà allumé)
    c’est spécifique aux équipements z-wave ou c’est plus général? ou c’est moi qui fait de la merde :stuck_out_tongue: ?, ici aussi aucun retour donc pas moyen de savoir ou ca bloque.

  • scène : ca a l’air de fonctionné correctement j’ai pu faire une guirlande de noël avec les lumière de mon couloir :smiley:

Voila, si vous avez des points a rajouter, des éléments a complété/corrigé, ou simplement des conseil sur certain points, n’hésité pas a participé !

j’essaierai de faire un feuille de route de tout ce qu’il y a a faire car y’a pas mal de boulot.

Bonne soirée a tous !

2 Likes

Hello

non , si tu dois consulter un log c’est qu’il y’a un problème. Les feedbacks doivent se faire dans l’UI.

ça c’est bizarre car j’ai encore tester toute à l’heure, j’ai eu le feedback sans devoir refresh.

Je suis pas forcément d’accord, l’appairage c’est du pure zwave
La page que tu montre c’est l’ajout des device à Gladys.

Oui c’est voulu, faut vraiment que ça se justifie ( les modales sur mobiles … )


Jette un oeil sur Github , il y’a actuellement 10 issues zwave

Je laisse les autres compléter.

Bon courage :wink:

oui le feedback doit être dans l’ui ça y’a pas de discussion la dessus mais avoir une page log qui afficherai tous les events traité par gladys c’est sympas, après c’etait pour savoir car justement j’ai des soucis de mon coté et que j’ai aucun moyen de savoir d’ou ils viennent (est ce que les commandes sont bien traité par gladys, ou le front n’arrive pas a les envoyé, mon équipement qui foire peut être, etc… jeedom a une page de log qui remonte chaque event, ca sert rarement, mais ca sert)

c’est peut être de mon coté le soucis alors, j’ai bien l’alerte connexion a l’usb qui s’affiche mais aucun feedback après (ne serait ce qu’une animation pour montré que ca tourne ^^), je referais un test.

c’est le premier onglet dans le service z-wave, j’en ai déduis que c’était spécifique au service, c’est pas le cas?
si c’est pas le cas alors ce liens ne doit pas être la non?
Et si c’est le cas, elle fait quand même doublons avec la page configuration actuellement, on a aucune info de plus ici.

je ferai des maquettes des pages quand j’aurai du temps qu’on puisse aussi discuté la dessus, j’aime bien avoir des maquettes pour organiser mes idées ( ca aide pour les use case aussi :stuck_out_tongue: )

Oui ça aide à la compréhension :slight_smile:

Ce que je voulais dire c’est que c’est sur cet onglet que tu as les devices gérés par Gladys.
Du coup l’inclusion/exclusion/heal étant spécifique au zwave doit être à part.

Mais tout ça se débat, j’ai pas autant de devices que toi, j’ai aussi moins d’attentes ( je penses pas investir plus car je trouve la techno chère). J’ai juste un dimmer qubino pour volet qui ne fonctionne pas complètement aujourd’hui avec Gladys.

Merci @wazalop pour ce topic, c’est une bonne idée de répertorier tout ce qui manque sur le Z-Wave.

Une bonne source d’inspiration aussi, il y a toutes les issues liées au Z-Wave sur GitHub:

Je plussoie les réponses de @VonOx !

@VonOx l’a déjà fait mais je remets une couche: dans Gladys 4 l’objectif est de concevoir un produit simple, et ouvert à tous, et on le conçoit au mieux qu’on peut avec les mêmes pratiques de développements qu’un produit grand public. Est-ce que sur ton téléphone ton app spotify te permet de voir ses propres logs ? Word ? Notes ? SMS ? Google Maps ? Aucune app ne le permet.

Si il manque des informations dans l’UI (retour d’information lorsqu’une commande est en erreur ? etc…), c’est que le frontend n’est pas assez riche, et qu’il manque des informations.

On oublie tout ce qui peut se faire dans d’autres projets open-source, ce ne sont pas nos inspirations, au contraire :slight_smile:

Effectivement, le frontend Gladys est utilisable autant sur web que sur mobile (c’est une PWA), et sur mobile une modal ce n’est pas un pattern courant ni pratique.

Tu remarqueras, c’est pareil pour les tableaux, on les évite car ce n’est pas responsive.

Yes, 100% d’accord là dessus c’est quelque chose qu’on veut changer ! Et surtout se débarrasser de cette lib « vis » qui pèse une tonne.

ça doit être spécifique au Z-wave, je n’ai jamais vu ça sur les autres équipements.

De manière générale, je suis d’accord qu’il y a un problème général de stabilité au Z-Wave, problème qui est principalement dû à la techno qu’on utilise en dessous: Open-Zwave, via la lib node-open-zwave-shared.

Si jamais tu as le temps, il y a une lib qui est entrain de percer et qui je crois a même déjà été adopté par Home Assistant, c’est GitHub - zwave-js/node-zwave-js: Z-Wave driver written entirely in JavaScript/TypeScript. La lib est en pur JS, et du coup ça apporte une bien meilleure stabilité générale comparé à Open-Zwave en C++ qui crash par moment. Après la lib est jeune, pas sûr que tout soit géré, et surtout pas sûr que la lib soit maintenue sur le long terme autant qu’open-zwave qui est là depuis long temps, mais bon ça vaut le coup de tester je pense !

En tout cas belle initiative, tiens nous au courant de tes découvertes !

Si jamais tu as besoin d’aide, je peux essayer de me rendre disponible.

J’ai quelques périphériques Z-wave (LED, wallplug et ouverture de porte) sous la main.

Je n’ai pas encore installé l’environnement de dev et je ne connais pas le nodejs, mais je devrais pouvoir retomber sur mes pieds.

1 Like

Je reposte ici :

J’ai été contacté par Qubino, et ils ont testé en profondeur notre intégration Z-Wave.

Sans surprise, ils ont eu des problèmes avec les périphériques Qubino (on le savait déjà), mais ce qui est intéressant c’est qu’ils nous donnent des pistes pour trouver le problème, notamment ils parlent de ZWaveJS qui selon eux est nettement moins buggé qu’Open-ZWave.

C’est un très bon retour !

1 Like

C’est sympa de leur part d’avoir fait un retour, si tu peux mettre à dispo leurs fichiers qu’on puisse voir ce qu’ils ont remarqué :wink:

bah pour le moment j’essaie surtout de faire le point globale de l’intégration zwave afin de pouvoir définir les points et priorité de dev, si t’as envie de filer un coup de main (code ou non) y’a pas de problèmes ! ( y compris si c’est pour fixer l’actuel car a mon avis y’aura pas mal de temps avant d’avoir quelques chose d’opérationnel ^^ )

Je reviendrais sans doute ce week-end avec des maquettes si j’ai le temps de les faires, ca permettra de voir ce qu’il faut pour que l’intégration soit opérationnelle :face_with_monocle:

C’est dans le post :slight_smile:

Top ! Merci pour ton implication :slight_smile: hâte de voir ça :stuck_out_tongue:

oups pas vue que c’était un lien vers un autre post :relaxed: ( pas l’habitude de ces forums :stuck_out_tongue: )

Bonjour a vous tous,

J’ai passé une partie de la matinée sur les maquettes,
ce que j’en ai tiré comme infos c’est :

  • j’ai clairement pas assez de connaissance sur le sujet j’ai sans doute oublié des choses :kissing_closed_eyes: donc n’hésité pas a complété !
  • il faut au minimum 4 pages (liste des devices, network, settings et 1 page spécifique au device)
  • il faut pouvoir :
    – inclure des devices (sécurisé ou non)
    – exclure des devices
    – actions spécifique a la gateway (reset config, heal network, etc…)
    – actions spécifique a un device (setValue, setSetting, etc…)
    – pouvoir modifier certaines infos de base des modules (mes dîmer sont reconnu comme prise actuellement, c’est pas top faudrait pouvoir le modifier)
    – gérer les associations des devices
    – configurer l’usb de la gateway comme actuellement (a voir si on peut pas facilité ca en faisant une détection auto?)

ca me semble êtres les éléments principaux pour que l’intégration z-wave soit utilisable.

aller hop voici les differentes maquettes :


la page de configuration de la gateway, on a le status actuel de celle-ci, et les options de celle-ci (port usb et autres si il y en a d’autre), de plus on a accès aux actions spécifique a la Gateway


la page network, avec un graphique allégé du réseau et interactif, selon le device sélectionné on affiche les informations network de celui ci.
on a aussi un tableau de saut, j’ai lu quelque part que le z-wave ne permet pas plus de 3 saut dans son maillage, ce tableau permettrai de se rendre compte si certain device ont trop de saut ou non de façon simple.


la page de liste des devices avec une présentation épuré afin de pouvoir en afficher un nombre conséquent sans avoir a trop faire défiler la page.
un click sur une des carte nous envoi sur la page spécifique du device


Les infos générale du device, cette page sert de hub pour un device, on a sont nom, sa room, ses infos constructeur (utile pour reporté des problèmes !), ses infos de type (modifiable pour éviter les problèmes de dîmer considéré comme prise?), et pourquoi pas une petite fenêtre avec le statuts du device)
on aura aussi ici les differentes actions spécifique au device ainsi que des actions plus propre a gladys (reporter un problème, etc…)


la page device-settings est sans doute la plus importante, elle permet de configurer son device.
Pour facilité les choses on peut imaginer mettre en place un système de copy (copier la conf d’un module dans celui ci ou inversement, les bouton en haut a droite :wink: )
comment intégré ces settings dans gladys? Si on les met en deviceFeature, comment les différencier des commandes?
de plus la gestion de la modification n’est pas si simple, chaque valeur n’est pas éditable, certaines sont des liste de valeurs, bref plein de cas a gérer, et surtout d’où viennent les differentes valeurs des champs?(le device nous les communique ou c’est quelque part dans un fichier config externe spécifique a chaque device?)


la page association permettra de géré les associations entre device, je me suis inspiré de jeedom mais le principal est de pouvoir ajouter/supprimer des devices dans les groupes d’association d’un device.
On peut aussi voir les devices qui ont associer ce device (a voir si c’est vraiment utile?)


la page commandes, alors la je suis pas sur, les commandes correspondent aux éléments que le device peut affiché sur le Dashboard ou qui peuvent être utilisé dans les scènes. jeedom semble laissé libre cours a sa modification, et il doit sans doute parser la valeur de la commande pour effectué les actions correspondante, pour un utilisateur standard c’est compliqué a comprendre, mais il ne devrait jamais devoir y aller, l’avantage c’est que si le device n’est pas correctement géré, bah en faisant quelques recherche on peut le configuré correctement

Bon ce sont de simple maquette faites en quelques heures, mais ca permet de se rendre compte des problématiques qu’il y as.
le FAB en bas, c’est je pense une bonne solution, ca évite de mettre les boutons comme sur la maquette settings, on peut imaginé changer les actions selon la page, ce qui réduit la charge des dites pages, ou alors comme la ne l’utiliser que comme raccourci des actions les plus importante.

Voila, si vous avez des question ou voyer qu’il manque des choses n’hésité pas.

j’ai utiliser drawio pour les maquettes si ca intéresse quelqu’un je mettrai le fichier en ligne.

Bon week-end a tous !

Salut @wazalop !

Bravo pour ton impressionnant travail de recherche :slight_smile:

Maintenant à partir de ce travail de recherche, il vaudrait voir comment on pourrait rendre tout ça user friendly et plus proche de la philosophie de la v4 :slight_smile:

Là encore, à mon avis il faut vraiment oublier tout ce qui peut se faire dans la concurrence et voir comment on pourrait rendre le Z-Wave simple, sans pour autant sacrifier trop de fonctionnalités.

Très belle recherche !
Concernant ce point :

Ça se rapproche de ce qui est évoqué ici je pense. Il faudrait trouver une solution globale pour gladys.

Pour l’onglet network, je suis tombé sur ce graphe. C’est en javascript. Je trouve sympa le côté regroupement suivant les pièces (à voir si c’est celles déclarées dans HA). Il permet aussi de voir facilement les sauts. Mais quid de la compatibilité ?!

Pour l’onget Devices, ce que tu proposes détonnes un peu avec le reste des protocoles. Est-ce qu’on ne pourrait pas plutôt imaginer une box compact pour les devices où l’on verrait apparaître juste le nom et la pièce en éditable. Et que si l’on veut plus d’information, soit en cliquant sur « Editer » ou sur une flèche pour agrandir, on verrait apparaitre les informations comme les fonctionnalités.

Pour moi, ces infos correspondent à ce qu’on pourrait trouver côté dashboard ou côté scènes.

En parallèle du Zigbee2Mqtt, je suis tombé sur Zwave2Mqtt. Mais ça se base sur Open-Zwave, mais j’ai vu dans la discussion qu’une migration vers node-zwave était en réflexion

zwavejs2mqtt pour l’alternative à OZW ( je l’utilise )

Les mêmes qui font la lib

1 Like

Effectivement c’est sûrement mieux! Surtout si elle est validée par qubino

Salut,

Personnellement je suis pas trop d’accord sur ce point :stuck_out_tongue: . La concurrence est un bon point de repère pour se situé d’un point de vue fonctionnalités, t’imagine samsung sortir un téléphone qui n’aurais pas youtube? Apres oui il faut rendre ca plus simple pour l’utilisateur :wink:

Effectivement ca semble être le même genre de problème

Ce sont de simple maquette sans autre utilité que de lister les besoins pour un zwave fonctionnelle, l’agencement et autre placement et totalement a revoir oui :wink:

Ouais c’est ce que je pense aussi, la question été plutôt sur le fait de rendre ces donnée éditable comme sur jeedom ou non. Dans la plupart des cas on n’aura pas besoin de les modifier (le seul cas ou c’est utile c’est si le device n’est pas reconnu, on peut du coup forcer les commandes a la main), par contre je pense qu’il faut quand même a minima une liste pour les configurer (la gestion de l’historisation entre autre, pouvoir ou non historiser ses températures selon le module c’est sympa, j’ai pas besoin de voir l’historique des températures du wc par exemple :wink: alors que celles du salon oui ) et avoir les informations de ce qui est fonctionnel (si on a un module qui est censé retourné 6 valeur mais qu’on as que 5 commandes le module n’est sans doute pas complétement supporté, etc…)

Je teste zwave-js (c’est le plus simple a installé :stuck_out_tongue: ) pour voir ce que ca donne, voir les infos des devices et les differentes interactions possible entres les éléments, et surtout me faire la main sur un network zwave

Sinon j’ai reçu mon bois du coup j’aurai pas trop de temps dans les semaines qui viennent faut que je finisse mes travaux ^^. J’essayerai de comprendre le fonctionnement de zwave-js et de faire un mvp de test pour les fonctionnalités (un simple server express histoire de pouvoir lancer des commandes, juste pour voir comment ca s’enchaine) dans les semaines qui viennent selon ce que j’aurai comme temps ca sera plus ou moins évolué ^^

Je passerai régulièrement sur le forum si jamais y’a des questions, idées, coup de main, etc… :wink: donc n’hésité pas !

Bonne soirée a tous !

2 Likes

Ca va me laisser le temps de configurer un environnement de dev et de me plonger dans le js/node-js. Bon courage pour tes travaux !

Bon je viens un peu aux nouvelles,

J’ai eu le temps de regarder un peut comment gérer le zwave, rien de concret encore, mais des interrogations pour les devs :wink:

le style de code de l’an 2000 c’est voulu et obligatoire? (je taquine ^^, mais vraiment pas de class es6? J’ai pourtant vu des fonctions fléchée qui traine !)
j’avoue pas être fan des méthode contextualisé qui sont exporté toute seule dans leur coins (une méthode avec un this ne doit pas être importable selon moi :stuck_out_tongue: , rien que le coté de devoir deviner a quoi correspond le this, c’est prise de tête ), mais bon si c’est obligatoire pour gladys je m’en accommoderai :sob:

les accès a la base se font tous par le system d’event c’est bien ca? j’ai beau chercher je ne trouve aucun event du type DEVICE.NEW ? aucun service n’enregistre de nouveau device ou j’ai raté quelque chose sur les events? :face_with_monocle:

J’ai cru voir aussi des commandes de gladys vers les services du type : service.device.setValue(), il y as donc des règles bien spécifique a respecté sur l’organisation des differentes partie du service, y’a un index quelque part ou faut faire chaque fichiers pour vérifier? (je vais devoir le faire donc si il faut je peux m’occupé de lister les différents cas si ca n’existe pas encore, et peut etre faire pareil avec les différents events, que l’ont puisse savoir facilement ce que fait un event)

bon ca sera tout pour le coté code gladys :stuck_out_tongue: passons au zwave en lui même.

j’ai réussit a récupéré les infos de ma clé zwave ca ma permit de voir le format des data.
donc vous confirmé que DeviceFeature correspond aux actions/data qu’un device permet (une intérupteur a une feature binary on/off, la ou un senseur aura une feature Temperature), pour le zwave, il faut définir les commandClass qui correspondent a ce type pour qu’a l’ajout d’un device on puisse trier les differentes commandClass selon leur type (feature/param).
par contre pour les paramètres et autres informations de base, on est obligé de récupéré les valeurs d’informations de chaque params a chaque affichage de ceux ci? en zwave, certain params sont des liste de choix par exemple, ou encore les descriptions des params (j’ai pas regardé comment été stocker ces metadata si c’est en cache dans ce cas ca vaut pas le coup de les mettre en base, mais si ca fait une requête au device ou au system de fichiers ca rajoute des accès lourd en plus de la bdd)

Je vais continuer mes recherches et je reviendrais vers vous si j’ai d’autre questions :stuck_out_tongue:

Bonne soirée a tous

J’ai intégré partiellement ZwaveJs2mqtt dans mon Gladys local (une vingtaine de type de device sur 34 devices). Etant actuellement sur Jeedom, j’ai du d’abord migrer vers ZwaveJS avant de débuter les développements sur Gladys et ce afin de ne pas perturber mon installation (j’ai tout de même des soucis de latence). Ne maitrisant pas confortablement Gladys, j’ai principalement des soucis dans le front et de conversion de features (commandClass BINARY_SWITCH OK).

Malheureusement, c’est bien le temps libre qui manque…

2 Likes