Deconz-rest-plugin: AmĂ©liorer la prise en charge sans tĂȘte sur Linux (dĂ©pendances de l'interface graphique)

CrĂ©Ă© le 30 sept. 2020  Â·  4Commentaires  Â·  Source: dresden-elektronik/deconz-rest-plugin

Type de demande de fonctionnalité

J'utilise un serveur domotique (en fait la mĂȘme machine Linux que j'utilise comme NAS) auquel j'aimerais connecter mon ConnBee pour lire des capteurs.

Je trouve trĂšs Ă©trange que deconz n'ait qu'un seul binaire avec Qt parmi ses dĂ©pendances. Je sais qu'il peut ĂȘtre exĂ©cutĂ© en mode sans tĂȘte via deconz.service , mais le package lui-mĂȘme extrait de nombreux packages liĂ©s Ă  X11 (et Wayland), ce qui est stupide pour un systĂšme sans tĂȘte (serveur).

La description

Ma solution suggĂ©rĂ©e serait de diviser deconz en plusieurs fichiers binaires (ou mĂȘme packages) afin que vous puissiez le faire fonctionner en tant que dĂ©mon sans installer toutes les dĂ©pendances de l'interface graphique.

Je ne suis pas sĂ»r de la quantitĂ© de QtNetwork et autres que vous utilisez dans le chemin de code sans tĂȘte du binaire, alors n'hĂ©sitez pas Ă  rejeter ma suggestion si le fonctionnement sans tĂȘte en nĂ©cessite encore beaucoup.

Alternatives envisagées

La seule alternative (que je prends actuellement) consiste à configurer un conteneur Debian/Ubuntu contenant tous les packages X11, uniquement pour exécuter deconz . C'est assez exagéré à mes yeux, mais au moins, cela minimise le "systÚme hÎte" (NAS).

Contexte supplémentaire

J'aimerais utiliser cette section pour vous remercier pour tout le travail et les efforts que vous avez consacrés à vos projets liés à Zigbee ! J'apprécie vraiment que vous ayez choisi un style de développement ouvert qui permet des synergies avec la communauté.

Feature Request

Commentaire le plus utile

Je suis absolument d'accord que l'interface graphique et les parties sans tĂȘte doivent ĂȘtre sĂ©parĂ©es en deux packages. Il s'agit en fait dĂ©jĂ  d'un processus en cours en interne depuis un certain temps. deCONZ dans ses premiĂšres annĂ©es n'a pas Ă©tĂ© dĂ©veloppĂ© avec un esprit sans tĂȘte et a maintenant de nombreuses classes entremĂȘlĂ©es qui ne peuvent pas ĂȘtre sĂ©parĂ©es facilement. Cette refactorisation se produit mais Ă  un rythme lent sans ETA.

Qt lui-mĂȘme restera une dĂ©pendance, mais les parties liĂ©es Ă  X11/Wayland ne seront pas nĂ©cessaires pour une configuration sans tĂȘte.

Un objectif Ă  long terme est d'exposer les parties du nƓud GUI via REST-API afin que mĂȘme pour les installations sans tĂȘte, un client distant puisse afficher des nƓuds interactifs, avec toutes les fonctionnalitĂ©s de deCONZ GUI, par exemple dans un navigateur.

L'alternative suggĂ©rĂ©e est en fait la seule solution de contournement pour garder le systĂšme hĂŽte X11 libre jusqu'Ă  l'arrivĂ©e de la version slim sans tĂȘte.

Tous les 4 commentaires

@manup

Je suis absolument d'accord que l'interface graphique et les parties sans tĂȘte doivent ĂȘtre sĂ©parĂ©es en deux packages. Il s'agit en fait dĂ©jĂ  d'un processus en cours en interne depuis un certain temps. deCONZ dans ses premiĂšres annĂ©es n'a pas Ă©tĂ© dĂ©veloppĂ© avec un esprit sans tĂȘte et a maintenant de nombreuses classes entremĂȘlĂ©es qui ne peuvent pas ĂȘtre sĂ©parĂ©es facilement. Cette refactorisation se produit mais Ă  un rythme lent sans ETA.

Qt lui-mĂȘme restera une dĂ©pendance, mais les parties liĂ©es Ă  X11/Wayland ne seront pas nĂ©cessaires pour une configuration sans tĂȘte.

Un objectif Ă  long terme est d'exposer les parties du nƓud GUI via REST-API afin que mĂȘme pour les installations sans tĂȘte, un client distant puisse afficher des nƓuds interactifs, avec toutes les fonctionnalitĂ©s de deCONZ GUI, par exemple dans un navigateur.

L'alternative suggĂ©rĂ©e est en fait la seule solution de contournement pour garder le systĂšme hĂŽte X11 libre jusqu'Ă  l'arrivĂ©e de la version slim sans tĂȘte.

Je sais que c'est un peu hors sujet ici, mais j'aimerais faire un bref rapport sur mes tentatives de contourner cette dépendance de l'interface graphique en utilisant la conteneurisation.

Je suis conscient du fait qu'il existe une image Docker officielle disponible, mais pour ĂȘtre honnĂȘte, je prĂ©fĂšre les conteneurs LXC ou plain systemd-nspawn Ă  Docker et j'avais dĂ©jĂ  d'autres conteneurs LXC sur mon NAS, j'ai donc essayĂ© d'y aller. AprĂšs tout, ces technologies reposent sur les mĂȘmes mĂ©canismes d'isolation dans le noyau, elles devraient donc donner des rĂ©sultats comparables - du moins, je le pensais.

J'ai configuré un conteneur Ubuntu 18.04 et suivi strictement le guide d'installation ConnBee concernant l'installation de deCONZ. Ensuite, j'ai dû sauter plusieurs étapes pour que l'application fonctionne :

  • transfĂ©rer le pĂ©riphĂ©rique USB vers le conteneur LXC ( lxc.cgroup.devices.allow et lxc.mount.entry pour le nƓud de pĂ©riphĂ©rique)
  • synchroniser les GID afin que les rĂšgles udev de l'hĂŽte rendent l'appareil accessible au groupe plugdev Ă  l'intĂ©rieur du conteneur
  • supprimez les capacitĂ©s de l'unitĂ© systemd car je ne voulais pas que le binaire les ait (dans ma configuration, elles ne sont pas nĂ©cessaires de toute façon) et LXC les a bloquĂ©es (rĂ©parable en utilisant lxc.cap.keep )

(OT : Je vois des améliorations à apporter en ce qui concerne l'empaquetage. Au lieu de s'appuyer sur l'UID 1000 codé en dur, il serait bien préférable d'avoir un utilisateur dédié créé lors de l'installation du paquet, de préférence avec l'UID<1000 et son répertoire d'accueil en dessous /var/lib pour correspondre à la façon dont de nombreux autres démons sont configurés. Serait heureux d'envoyer des demandes d'extraction pour cela.)

L'application a alors semblé fonctionner, c'est-à-dire qu'elle n'a pas craché d'erreur et j'ai pu configurer la configuration de base de la passerelle dans l'application Phoscon. Cependant, tout ce qui concernait le matériel ConnBee réel ne fonctionnait pas. Phoscon a montré la version de l'appareil mais pas la version du firmware et toutes les propriétés ZigBee (canal, etc.) ont été mises à zéro. Je n'ai pu lier aucun capteur.

J'ai donc fini par flasher un Raspberry Pi 3 restant avec l'image _stable_ officielle. Avec cela, tout fonctionne maintenant bien et j'ai intégré tous mes capteurs dans un joli tableau de bord Grafana.

(OT : L'image Pi a ses propres problÚmes, par exemple, dans sa configuration par défaut, elle a essayé de démarrer hostapd dans une boucle sans fin qui a produit environ 700 Mio de journaux en une seule semaine (mauvaise carte SD !) Et une tonne de charge inutile. Je serais heureux d'envoyer des demandes d'extraction pour améliorer la configuration (il se trouve que je fais des images pour les appareils intégrés dans le cadre de mon travail de jour), mais je n'ai pas trouvé de référentiel approprié.)

Un objectif Ă  long terme est d'exposer les parties du nƓud GUI via REST-API afin que mĂȘme pour les installations sans tĂȘte, un client distant puisse afficher des nƓuds interactifs, avec toutes les fonctionnalitĂ©s de deCONZ GUI, par exemple dans un navigateur.

Ce serait un rĂȘve devenu rĂ©alitĂ©

Cette page vous a été utile?
0 / 5 - 0 notes