Environnement de developpement

bonjour,
je suis en train de m installer un environnement de dev pour participer aux tests voir codage de l appli gladys.
j installe cet environnement sur un poste autre que mon serveur gladys,
l environnement est sur pc portable sous w11, 8go de ram et 500 go de hd.
je suis bien sous WSL2 avec ubuntu 20.04 (bien qu ayant Kali et debian aussi), j ai vsc sous w11 et aussi ubuntu20.04,et j ai docker desktop windows, je suis la procedure d install decrite dans la doc .
je l install donc sous ma home directory sous ubuntu.
mais quelques choses me paraissent etrange :
- j ai un repertoire openzwave directement sous ma directory

  • et le dossier gladys est dans ce dossier openzwave…
  • install server ok, mais demarrage semble bouclé sur check calendar et sur mon navigateur pour l adresse localhost:1443 j ai un message : “error cannot get”
    -en visualisant le log de demarrage du serveur npm start je constate de nombreuse erreur de demarrage service , bluetooth,…
    -install frontend : ok , visualisation navigateur ok mais pb sur integration appareil…

pour info ce pc est outil de dev et embarque d autres environnement de dev : delphi, wamp,sqlite,arduino,Rstudio, eclipse,iis,python…

Je ne suis pas sur Windows (MacOS pour moi), donc je ne serais pas d’une très grande aide, après :

ça me parait déjà très bizarre.

A voir chaque erreur au cas par cas, après c’est normalement pas un problème si toutes les intégrations ne fonctionnent pas.

Tu as plus de détails ?

Bah tu as du cloner le repo Gladys dans le dossier openzwave

@pierre-gilles @VonOx

j ai repris l environnement de dev sous wsl: il y avait un pb de conflit , j avais 2 instances de ubuntu20.04 suite à maj Microsoft qui etait en cours.
donc apparemment mon arbo sous wsl emble ok.

einstein@SYNAPSAT7:~/gladys$ ls -l
total 272
-rw-r--r--  1 einstein einstein 130489 Mar 15 11:45 CHANGELOG.md
-rw-r--r--  1 einstein einstein  10941 Mar 15 11:45 LICENSE
-rw-r--r--  1 einstein einstein   8875 Mar 15 11:45 README.md
-rw-r--r--  1 einstein einstein    254 Mar 15 11:45 SECURITY.md
-rw-r--r--  1 einstein einstein    145 Mar 15 11:45 codecov.yml
drwxr-xr-x  2 einstein einstein   4096 Mar 15 11:45 docker
drwxr-xr-x  7 einstein einstein   4096 Mar 15 14:39 front
-rw-r--r--  1 einstein einstein  33549 Mar 15 11:45 insomnia.json
-rw-r--r--  1 einstein einstein  59242 Mar 15 11:45 package-lock.json
-rw-r--r--  1 einstein einstein   1722 Mar 15 11:45 package.json
drwxr-xr-x 13 einstein einstein   4096 Mar 15 14:28 server

mais coté demarrage serveur npm start il y a pb :

2022-03-15T14:33:45+0100 <debug> bluetooth.start.js:14 (BluetoothManager.start) Bluetooth: Listening Bluetooth events
2022-03-15T14:33:45+0100 <error> index.js:15 (process.<anonymous>) unhandledRejection catched: Promise {
  <rejected> Error: EAFNOSUPPORT, Address family not supported by protocol
      at new Hci (/home/einstein/gladys/server/services/bluetooth/node_modules/@abandonware/noble/lib/hci-socket/hci.js:74:18)
      at new NobleBindings (/home/einstein/gladys/server/services/bluetooth/node_modules/@abandonware/noble/lib/hci-socket/bindings.js:25:15)
      at Object.<anonymous> (/home/einstein/gladys/server/services/bluetooth/node_modules/@abandonware/noble/lib/hci-socket/bindings.js:546:18)
      at Module._compile (internal/modules/cjs/loader.js:1085:14)
      at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)
      at Module.load (internal/modules/cjs/loader.js:950:32)
      at Function.Module._load (internal/modules/cjs/loader.js:790:12)
      at Module.require (internal/modules/cjs/loader.js:974:19)
      at require (internal/modules/cjs/helpers.js:101:18)
      at module.exports (/home/einstein/gladys/server/services/bluetooth/node_modules/@abandonware/noble/lib/resolve-bindings.js:13:12)
      at Object.<anonymous> (/home/einstein/gladys/server/services/bluetooth/node_modules/@abandonware/noble/index.js:2:49)
      at Module._compile (internal/modules/cjs/loader.js:1085:14)
      at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)
      at Module.load (internal/modules/cjs/loader.js:950:32)
      at Function.Module._load (internal/modules/cjs/loader.js:790:12)
      at Module.require (internal/modules/cjs/loader.js:974:19)
      at require (internal/modules/cjs/helpers.js:101:18)
      at BluetoothManager.start (/home/einstein/gladys/server/services/bluetooth/lib/commands/bluetooth.start.js:16:20)
      at Object.start (/home/einstein/gladys/server/services/bluetooth/index.js:16:22)
      at Service.start (/home/einstein/gladys/server/lib/service/service.start.js:33:21) {
    errno: 97,
    code: 'EAFNOSUPPORT',
    syscall: 'socket'
  }
}
2022-03-15T14:33:45+0100 <error> index.js:16 (process.<anonymous>) Error: EAFNOSUPPORT, Address family not supported by protocol
    at new Hci (/home/einstein/gladys/server/services/bluetooth/node_modules/@abandonware/noble/lib/hci-socket/hci.js:74:18)
    at new NobleBindings (/home/einstein/gladys/server/services/bluetooth/node_modules/@abandonware/noble/lib/hci-socket/bindings.js:25:15)
    at Object.<anonymous> (/home/einstein/gladys/server/services/bluetooth/node_modules/@abandonware/noble/lib/hci-socket/bindings.js:546:18)
    at Module._compile (internal/modules/cjs/loader.js:1085:14)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)
    at Module.load (internal/modules/cjs/loader.js:950:32)
    at Function.Module._load (internal/modules/cjs/loader.js:790:12)
    at Module.require (internal/modules/cjs/loader.js:974:19)
    at require (internal/modules/cjs/helpers.js:101:18)
    at module.exports (/home/einstein/gladys/server/services/bluetooth/node_modules/@abandonware/noble/lib/resolve-bindings.js:13:12)
    at Object.<anonymous> (/home/einstein/gladys/server/services/bluetooth/node_modules/@abandonware/noble/index.js:2:49)
    at Module._compile (internal/modules/cjs/loader.js:1085:14)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)
    at Module.load (internal/modules/cjs/loader.js:950:32)
    at Function.Module._load (internal/modules/cjs/loader.js:790:12)
    at Module.require (internal/modules/cjs/loader.js:974:19)
    at require (internal/modules/cjs/helpers.js:101:18)
    at BluetoothManager.start (/home/einstein/gladys/server/services/bluetooth/lib/commands/bluetooth.start.js:16:20)
    at Object.start (/home/einstein/gladys/server/services/bluetooth/index.js:16:22)
    at Service.start (/home/einstein/gladys/server/lib/service/service.start.js:33:21) {
  errno: 97,
  code: 'EAFNOSUPPORT',
  syscall: 'socket'
}
2022-03-15T14:33:46+0100 <info> index.js:14 (Object.start) starting GoogleActions service
2022-03-15T14:33:46+0100 <log> index.js:16 (Object.start) Starting Zigbee2mqtt service
2022-03-15T14:33:46+0100 <warn> service.start.js:44 (Service.start) Unable to start service zigbee2mqtt PlatformNotCompatible [Error]: SYSTEM_NOT_RUNNING_DOCKER
    at Zigbee2mqttManager.init (/home/einstein/gladys/server/services/zigbee2mqtt/lib/init.js:15:11)
    at async Object.start (/home/einstein/gladys/server/services/zigbee2mqtt/index.js:17:5)
    at async Service.start (/home/einstein/gladys/server/lib/service/service.start.js:33:7)
2022-03-15T14:33:46+0100 <info> index.js:18 (Object.start) Starting TP-Link service
2022-03-15T14:33:47+0100 <info> index.js:17 (Object.start) Starting eWeLink service

et quand je fait sur le nav : localhost:1443 j ai : “cannot Get /”
pour le client il demarre bien, mais menu integation : ne trouve pas mqtt donc zigbee, mais pas non plus le bluetooth alors que le portable en est doté…
il y a docker desktop sur windows mais ne vois rien par rapport a docker dans wsl/ubuntu est ce normal ?

Ce “problème” me parait normal, je pense pas que le bluetooth soit dispo dans WSL (j’y connais rien en windows, mais j’ai les mêmes messages quand je lance Gladys dans une VM)

A part si tu veux développer sur l’intégration Bluetooth, c’est pas forcément gênant, sauf si ça fait carrément crasher Gladys, mais j’ai pas l’impression que ce soit le cas ici ?

C’est http://localhost:1444/ pour le frontend, pas 1443

Exact j’ai ça aussi en natif Linux ( laptop avec Bluetooth non compatible) et effectivement ça gène pas le démarrage.

Je supprime mon précédent message pour pas embrouiller la discussion. ( j’avais pas fait gaffe au Bluetooth)

le pb est bien sur le serveur : localhost:1443 comme mentionner sur l aide en ligne et j ai “cannot get”
sur le front end en 1444 j ai l ecran classique de gladys mais menu integration bof…

Ce n’est pas un problème, le serveur n’expose pas de route sur le “/”

donc un laptop windows11 avec wsl on peut pas faire de dev ou test sur gladys selon vous ?

Si on peut très bien :slight_smile:

J’avoue que je n’arrive pas à comprendre ce qui ne vas pas chez toi, tout va bien de ce que tu me dis.

quelle genre de dev ou test peut on faire si on ne peut utiliser ni le bluetooth ni mqtt cela reduit le panel des possibles. faire des dev ou test sur une plateforme incomplète, il risque d y avoir des trous dans la maille,

Si j’utilise régulièrement l’env wsl, par contre niveau réseau c’est un peu chiant parfois.

Pour contourner windows je lance un serverx sur windows et un browser dans wsl.

Ceux pour lequel tu as le matos, on va pas forcer tout le monde a acheter un dongle Bluetooth, si ?

Et je rajouterai, quel est ton objectif avec l’environnement de dev ? Car c’est pas vraiment fait pour tester ( pour ça on a les images docker)

Tu peux utiliser le MQTT avec un serveur mosquitto custom lancé en local , après pour la partie “lancer un container via Docker”, effectivement je pense pas que ça marche sous WSL.

Tu peux développer l’interface Gladys (ça reste le plus gros du travail, bosser sur l’interface), mais effectivement la partie “matériel physique” ça sera pas idéal.

Gladys reste un logiciel destiné à un environnement Linux, donc développer sur un autre environnement sera forcément différent et incomplet. Pour le testing en réel, effectivement pas le choix il faut être sur Linux.

Après d’expérience, 90% de tout développement se fait largement sans avoir un environnement complet ( bosser sur l’interface, les routes d’API, les tests unitaires, etc… ya pas besoin d’avoir le matériel qui marche )

Pour ma part, je développe Gladys principalement sur MacOS, et je fais mes tests en réel sur Linux. Soit dans une machine virtuelle pour tout ce qui est Zigbee2mqtt/MQTT, soit sur un Pi quand il faut tester avec du matos.

j ai plusieurs piste de dev mais 2 en premiers:
1/ j ai un poulailler à 50m de ma maison que je voudrais domotiser, il y a le courant mais pas le wifi…l idée c est gerer eclairage, ouverture trappe du poulailler et camera; j ai des camera wifi et ethernet de recup (sans logiciel) l idée serait d hybrider cpl et wifi ou rf pour gerer cela via gladys.
2/recuperer les données de ma station meteo directement en local sans passer par l api wunderground(dependre d un tier sans garantie mpour mes propres données me gene)
3/ et je ne parle pas de la domotisation de mon jardin (arrosage,…), de ma mini eolienne…

sur l aspect linux je te rejoint, je suis tres open source, mais pour eviter des hebergements “hybride” malgré mes 17 pc (seulement 3 sous w, reste sous des distro<> de linux, je n ai helas qu un laptop w11 de dispo actuellement pour faire des dev informatiques d ou la solution wsl pour avoir malgré tout un linux.
mais si mes preoccupations d informaticien retraité (+ de 40 ans d experience informatique a differents niveaux) vous semblent trop utopiques et perturbantes et pas en adequations avec votre vision de gladys, je peux continuer dans mon coin.

La plupart des développeurs Gladys ne développent pas sous Linux à mon avis (Certain sur Mac, certain sur WSL), donc ça n’a rien d’utopique ce setup.

Après il faut être conscient des limites, et avoir un environnement de test Linux pour les tests en réels.

Mais de ce que je lis de ton message :

Je ne vois rien qui ne se ferait pas sous WSL :slight_smile:

Pierre-gilles,
tu me rassures en disant cela !
mais je reste sceptique, en regardant l onglet integration du client, hormis MQTT,Zigbee et Bluetooth, je ne vois que des noms de marques de modules “propriétaires”, hors vu mon idée de faire en diy avec des capteurs 'récupérés, et des objets à base d’arduino,rf,cpl,… j etais convaincu que le passage mqtt,zigbee,bt et meme “nodered” etait quasi indispensable pour interfacer cela avec Gladys.
d autant que dans ces projets notamment jardin il y a gestion d un drone et d un robot (genre rover martien) et apres il y aura mon labo et mon atelier…
mais dans un premier temps pour me faire la main je vais me pencher sur mes volets qui sont automatisé en rf 433mhz(marque inconnue)
jouables ou pas selon toi ?

et la je dois dire qu en visualisant votre diffusion sur guilhem et ses pann pv cela me donne des idées

Tout est possible :slight_smile:

Par contre, en lisant ce que tu me dis, je n’arrive pas trop à comprendre pourquoi tu aurais besoin d’un environnement de développement ^^

Si tu veux juste envoyer des nouvelles données à ton instance Gladys de 433Mhz, d’arduino, etc… utilise juste l’intégration MQTT ou Node-RED