[V4] Dev service RFlink

Salut

J’ai un arduino avec émission réception en 433
Si je eux aider c’est avec plaisir !

C’est gentil de vouloir aider par contre pour utiliser le Rflink , il faut un Arduino Mega car c’est un gros programme, si tu en as 1 tu peux déjà installer le service et continuer a me parler en message privés

@pierre-gilles est ce que tu saurais comment corriger cette erreur :

[email protected] postinstall /home/circleci/gladys-test
node ./cli/install_service_dependencies.js

internal/modules/cjs/loader.js:985
  throw err;
  ^

Error: Cannot find module '/home/circleci/gladys-test/cli/install_service_dependencies.js'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:982:15)
    at Function.Module._load (internal/modules/cjs/loader.js:864:27)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:74:12)
    at internal/main/run_main_module.js:18:47 {
  code: 'MODULE_NOT_FOUND',
  requireStack: []
}
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] postinstall: `node ./cli/install_service_dependencies.js`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the [email protected] postinstall script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/circleci/.npm/_logs/2020-03-23T09_43_26_526Z-debug.log

J’ai cette erreur dans le test push coverage sur github

Bonjour à tous,

J’ai publié des images :whale: sur DockerHub pour celles et ceux qui souhaitent tester l’intégration rflink.
Je les mettrai à jour une à deux fois par jour :wink:

1 Like

C’est vraiment énorme ça merci @peb !!! :bowing_man: :bowing_man: :bowing_man: :bowing_man:

Je t’avoue que j’ai du mal à voir ce qui ne va pas d’ici (sans faire la review complète des 200 fichiers), tu as fais des modifications liés à CircleCI ?

Hey!
Merci pour ce travail @joeypic .
J’ai un rflink qui fonctionne avec GladysV3 (Chacon et Milight). J’ai testé avec l’image de @peb (Merci à lui)

Je ne suis pas expert donc j’ai probablement fait de travers la plupart des trucs, voici où j’en suis :

Dans mon docker-compose j’ai partagé l’USB :
devices:
- /dev/ttyAMA0:/dev/ttyAMA0
- /dev/ttyACM0:/dev/ttyA

Ensuite pour ce qui est de la configuration je ne vois pas trop si c’est fonctionnel :
1/ J’ai de base le message Rflink Gateway connected with success. que je change le connecteur USB ou pas ou que je clique sur Connect cela ne change rien (ni dans les logs)
2/ Si je disconnect … le message change par contre je n’arrive plus à me connecter
3/ L’apparairage MiLight me donne l’erreur suivante : https://pastebin.com/D5e0ytvV

Idéalement, j’ai tenté de faire fonctionner la branche rflink via les sources mais j’ai un soucis avec les libellés de l’interface. (j’ai clone la v4 de gladys et j’ai pull ta branche par dessus, j’ai un conflit avec l’i18n que j’ai du péter j’imagine que c’est pour ça que les label n’apparaissent pas).
EDIT : j’ai corrigé mon problème de label, du coup l’instance de dev à partir des sources a le même comportement que l’image docker (mais au moins je pourrais faire des modifications)

Si quelqu’un a des astuces ou me dire ce que je peut mettre comme config pour tester, je suis preneur.
Si je progresse, je vous tiens au courant.

Voici ma prise, une ZAP.
1fc648ea-7429-4896-a5c8-f9c2dadc62a9 (2)
Pour la contrôler avec RFlink :
Je crée un device avec

  • model : “Tristate”
    Puis j’ajoute une feature “Switch” :
  • Je lui donne un nom (d’ailleurs à quoi sert ce nom, où est-ce que je le retrouve ?)
  • ID : 0312
  • Channel : 1
  • Minimum Value : 0 ?
  • Maximum value : 1 ?
    Je sauvegarde et quand j’appuis sur le bouton dans Gladys, on ou off, rien ne se passe. :sob:
    J’ai loupé un truc ? Mal configuré ?

Petite précision : pour l’instant j’ai juste les petits émetteurs/récepteurs chinois connecté à un arduino mega. Ils fonctionnaient fort bien sous Gladys 3 avec un arduino nano.
Je les changerai dès que j’aurai reçu le matos du nodo shop.

Non je ne sais meme pas vraiment ce que c’est Circle CI , je n’ai modifié que les fichiers :

  • Constant.js
  • Les fichier du service
  • app.jsx
  • les fichier i18n

Pour ton premier problème c’est vraiment étrange , sur ma config les messages fonctionnent parfaitement , pour l’instant il faut que tu reboot gladys apres avoir cliqué sur connect.

Je suis en train de rédiger une doc pour le service

C’est corrigé , j’avais oublié d’ajouter une valeur dans les constantes :wink:
je vais demander de l’aide a @isokar car il me semble que c’est lui qui avait dev le module pour la v3 et j’ai du mal avec le Milight.

Je pense que tu te trompe d’ID (sur la plupart des prises vendue j’arrive pas a savoir laquelle c’est)

Si tu as une télécommande avec ta prise , ne créer pas de device (debut de la doc)
Tu appuie juste sur le bouton de cette prise et le device apparait !

Si ça ne marche pas regarde déjà si la led de ton Arduino Mega clignote quand tu essayes d’allumer ta prise dans Gladys.

Merci pour tous vos retours :grin: , ça occupe un peut mes vacances de coronavirus :mask: et si vous avez des d’autre question hésitez pas

1 Like

Ah de la doc ! :smiley: Pourrais-tu ajouter un lien vers la doc (même si celle-ci n’est pas finie) dans la page de paramétrage de l’intégration ?

Hmmm… la LED n’a pas l’air de s’allumer quand j’utilise la télécommande, je vais enquêter sur le sujet dans la journée.

J’ai la LED TX qui s’allume quand j’appuie sur la télécommande. :raised_hands:
Mais rien ne s’ajoute dans Gladys

Histoire d’être sûr du branchement :

Direction VCC DATA GND
Réception D16/TX2 D19/RX1 GND
Émission D15/RX3 D14/TX3 GND

A priori rien dans les logs Gladys ou depuis le la console de debug

Je viens de changer le code pour rendre les tests plus faciles . La console donnera plus d’infos sur les erreurs normalement

maintenant regarde la console quand tu appui sur ta télécommande et envoi moi ce que tu as

Je viens de mettre l’image à jour et ça marche Wouhouuuu :star_struck: J’ai réussi à connecter 3 prises, je ferai des tests plus approfondis demain :wink:

Alors à chaud, voici les problèmes que je peux te remonter :

  • Parfois après quelques minutes d’inactivité, quand j’actualise la page /dashboard/integration/device/rflink/device j’ai une page blanche
  • Quand je supprime un device, il reste en place (ne disparait pas de l’ihm) jusqu’à ce que j’actualise la page
    EDIT :
  • Quand je veux renseigner une nouvelle prise, j’appuie sur ON puis OFF et il me crée bien la prise comme il faut. Cependant, après avoir appuyé sur ON, il crée déjà un device, en général de type RingBell. C’est peut-être lié à la mauvaise qualité du recepteur 433Mhz « chinois »

Génial :grin:

Ces deux problèmes sembles être liés a Gladys car je les ai sur tous les services , la page blanche c’est un problème d’authentification (token invalid ou un truc comme ça).

J’ai aussi l’impression de devoir souvent refresh la page pour voir les modifs (sur toutes les pages de services)

@pierre-gilles C’est des problèmes normaux?

Je pense que si tu utilise les récepteurs les moins chez tu va probablement avoir des soucis de temps en temps . Sur le blog de rflink , ils conseillent d’utiliser des récepteurs super-hétérodynes type RXB6. Ca coûte 1 ou 2 € plus chez mais depuis que j’en ai un je reçois tous les messages même a 50m.

Je vais quand même regarder le code pour les Ringbell , de toute façon avec le coronavirus , tu va pas avoir de récepteur avant 2 mois :mask: .

C’est ce que je me disais aussi

Yup, c’est pour ça que j’ai fait une commande du circuit imprimé rflink, je devrai le recevoir la semaine prochaine et je pourrais retester avec.

J’ai réussi à connecter mes 7 prises Zap, le On/Off marche bien. :+1:
J’ai également un détecteur d’ouverture Chacon, je vais voir s’il est reconnu, et je te tiens au courant

Je suis en train de réfléchir a une fonction utile et j’aimerai votre avis:

Est ce que vous pensez que c’est une bonne idée d’ajouter un bouton pour blacklister un device (ce device ne peux plus s’ajouter tout seul a votre liste de device )?

Ca peut être utile si par exemple votre voisin ouvre son portail tout le temps et qu’il apparait dans glayds



Autre demande d’avis :

Pour certains device chinois en 433mhz on ne peut pas détecter si c’est un juste un capteur ou si c’est un objet qui peut recevoir des commandes
Ducoup ça me donne une question pour tout le monde :

Est ce que vous préferez que par défaut , ces devices soient considérer comme des capteurs ou des actionneurs (peuvent recevoir des commandes) ? sachant que l’on peu changer ça après

En gros vous préferez vous retrouvez dans certains cas avec des capteurs dont on peut changer qui on un bouton permettant de changer leur état sans editer le device ou plutot des actionneurs dont vous ne pouvez pas changer l’état sans éditer le device

Je pense qu’il faudrait séparer en 3 catégories les devices :

  • Les nouveaux : ils ont été découverts depuis le dernier accès à la page, ou tout simplement ceux qio ne sont pas encore affecté à une pièce.
  • Les paramétrés et fonctionnels
  • La liste noire

On pourrait voir 2 organisations possibles : soit une page unique avec les 3 catégories séparées, soit 3 pages dans le menu de gauche.

Par défaut, je pense qu’il faudrait qu’ils soient considéré comme des capteurs, c’est pour moi le cas le plus “neutre”. Idéalement il faudrait une info-bulle en haut de la page précisant que certains appareils peuvent être mal reconnu et donc oui, proposer le bouton de changement d’état, uniquement sur ces devices (en tout cas de manière visible).

Mmm non c’est pas normal ^^

Tout devrait fonctionner… Si tu as plus d’informations, ça m’intéresse :slight_smile: Il faut fixer ça.

Effectivement, dans Gladys 4, la directive c’est que les devices ne doivent être jamais ajouté automatiquement: c’est toujours le choix de l’utilisateur, et ce choix doit être fait dans l’UI.

Tu peux voir comment font les autres services comme Philips Hue par exemple:

  1. Le service détecte automatiquement des devices, il les stocke dans une liste de devices en RAM.

  2. Lorsque l’utilisateur arrive sur la page du service, il voit que de nouveaux périphériques ont été détecté, et il a le choix de les ajouter à Gladys, ou non.

  3. Lorsque l’utilisateur clique sur “créer” le device, c’est l’UI qui envoie la requête au backend de créer le device. Ainsi, l’utilisateur a un retour visuel si quelque chose se passe mal. (un device existe déjà avec ce nom par exemple)

Dans Gladys 4, on évite tout ce qui est en arrière plan et qui pourrait mal se passer, car si une erreur intervient, l’utilisateur n’a aucun retour. (Et non, “regarder les logs”, n’est pas une solution, dans la v4 on considère que l’utilisateur n’a pas a regarder les logs, comme tout produit)

J’ai l’impression que ça vient des dépendances mais je sais pas lesquelles j’ai résolu le problème en bidouillant les versions de react-compat et d’autre modules

C’est bon , c’est ajouté!

J’ai trouvé, c’est un bug du à la façon dont les services sont traduit dans le front, c’est super con.

En gros, dans certains services (genre le z-wave, un des premiers services que j’ai développé), j’utilise le fichier JSON qui contient la liste des intégrations comme source de traduction, et je fais souvent:

<ZwavePage integration={integrationConfig[props.user.language].zwave}>
      <NetworkTab {...props} />
 </ZwavePage>

Hors, si le props.user.language n’est pas défini, ça pète.

On va arrêter de faire ça pour l’i18, et utiliser partout la lib d’i18n qui gère tout ça tout seul, et virer les traductions des fichiers device.en.json.

J’ai créé une issue github pour référencer le développement: