Deconz-rest-plugin: Tingkatkan Dukungan Tanpa Kepala di Linux (Ketergantungan GUI)

Dibuat pada 30 Sep 2020  ·  4Komentar  ·  Sumber: dresden-elektronik/deconz-rest-plugin

Jenis permintaan fitur

Saya menjalankan server otomatisasi rumah (sebenarnya mesin Linux yang sama yang saya gunakan sebagai NAS) yang ingin saya sambungkan dengan ConnBee saya untuk membaca sensor.

Saya merasa sangat aneh bahwa deconz hanya memiliki satu biner dengan Qt di antara dependensinya. Saya tahu bahwa itu dapat dijalankan dalam mode tanpa kepala melalui deconz.service , tetapi paket itu sendiri menarik begitu banyak paket terkait X11 (dan Wayland) yang bodoh untuk sistem (server) tanpa kepala.

Keterangan

Solusi yang saya sarankan untuk ini adalah dengan membagi deconz menjadi beberapa binari (atau bahkan paket) sehingga Anda dapat menjalankannya sebagai daemon tanpa menginstal semua dependensi untuk GUI.

Saya tidak yakin berapa banyak QtNetwork dan sejenisnya yang Anda gunakan di jalur kode biner tanpa kepala, jadi jangan ragu untuk membuang saran saya jika operasi tanpa kepala masih membutuhkan banyak.

Alternatif yang dipertimbangkan

Satu-satunya alternatif (yang saat ini saya ambil) adalah menyiapkan wadah Debian/Ubuntu yang memiliki semua paket X11, hanya untuk menjalankan deconz . Itu cukup berlebihan di mata saya, tetapi setidaknya itu membuat 'sistem host' (NAS) tetap minimal.

konteks tambahan

Saya ingin menggunakan bagian ini untuk berterima kasih atas semua pekerjaan dan upaya yang Anda lakukan untuk proyek terkait Zigbee Anda! Saya sangat menghargai bahwa Anda telah memilih gaya pengembangan terbuka yang memungkinkan sinergi dengan komunitas.

Feature Request

Komentar yang paling membantu

Saya sangat setuju bahwa GUI dan bagian tanpa kepala perlu dipisahkan menjadi dua paket. Ini sebenarnya sudah merupakan proses internal yang berlangsung cukup lama. deCONZ pada tahun-tahun awalnya tidak dikembangkan dengan pemikiran tanpa kepala dan sekarang memiliki banyak kelas yang saling bercampur yang tidak dapat dipisahkan dengan mudah. Refactoring ini terjadi tetapi dengan kecepatan lambat tanpa ETA.

Qt sendiri akan tetap sebagai ketergantungan, tetapi bagian terkait X11/Wayland tidak akan diperlukan untuk pengaturan tanpa kepala.

Satu tujuan jangka panjang adalah untuk mengekspos bagian node GUI melalui REST-API sehingga bahkan untuk instalasi tanpa kepala, klien jarak jauh dapat menampilkan node interaktif, dengan semua fitur GUI deCONZ, misalnya di browser.

Alternatif yang disarankan sebenarnya adalah satu-satunya solusi untuk menjaga sistem host X11 gratis hingga versi tanpa kepala yang ramping tiba.

Semua 4 komentar

@manup

Saya sangat setuju bahwa GUI dan bagian tanpa kepala perlu dipisahkan menjadi dua paket. Ini sebenarnya sudah merupakan proses internal yang berlangsung cukup lama. deCONZ pada tahun-tahun awalnya tidak dikembangkan dengan pemikiran tanpa kepala dan sekarang memiliki banyak kelas yang saling bercampur yang tidak dapat dipisahkan dengan mudah. Refactoring ini terjadi tetapi dengan kecepatan lambat tanpa ETA.

Qt sendiri akan tetap sebagai ketergantungan, tetapi bagian terkait X11/Wayland tidak akan diperlukan untuk pengaturan tanpa kepala.

Satu tujuan jangka panjang adalah untuk mengekspos bagian node GUI melalui REST-API sehingga bahkan untuk instalasi tanpa kepala, klien jarak jauh dapat menampilkan node interaktif, dengan semua fitur GUI deCONZ, misalnya di browser.

Alternatif yang disarankan sebenarnya adalah satu-satunya solusi untuk menjaga sistem host X11 gratis hingga versi tanpa kepala yang ramping tiba.

Saya tahu ini sedikit di luar topik di sini, tetapi saya ingin memberikan laporan singkat tentang upaya saya untuk mengatasi ketergantungan GUI ini menggunakan containerization.

Saya menyadari fakta bahwa ada gambar Docker resmi yang tersedia, tetapi sejujurnya saya lebih suka LXC atau wadah systemd-nspawn biasa daripada Docker dan sudah memiliki wadah LXC lain di NAS saya, jadi saya mencoba melakukannya. Bagaimanapun, teknologi ini bergantung pada mekanisme isolasi dalam kernel yang sama sehingga mereka harus memberikan hasil yang sebanding - atau setidaknya begitulah menurut saya.

Saya menyiapkan wadah Ubuntu 18.04 dan secara ketat mengikuti Panduan Pemasangan ConnBee mengenai pemasangan deCONZ. Kemudian saya harus melompati beberapa rintangan untuk menjalankan aplikasi:

  • meneruskan perangkat USB ke wadah LXC ( lxc.cgroup.devices.allow dan lxc.mount.entry untuk node perangkat)
  • sinkronkan GID sehingga aturan udev dari host membuat perangkat dapat diakses oleh grup plugdev di dalam wadah
  • hapus kemampuan dari unit systemd karena saya tidak ingin biner memilikinya (dalam konfigurasi saya mereka tidak diperlukan) dan LXC memblokirnya (dapat diperbaiki menggunakan lxc.cap.keep )

(OT: Saya melihat ruang untuk perbaikan terkait pengemasan di sana. Daripada mengandalkan UID 1000 hard-coded, akan jauh lebih baik untuk membuat pengguna khusus selama instalasi paket, lebih disukai dengan UID<1000 dan direktori home-nya di bawah /var/lib agar sesuai dengan cara banyak daemon lain disiapkan. Dengan senang hati akan mengirim permintaan tarik untuk itu.)

Aplikasi kemudian tampaknya berfungsi, yaitu tidak mengeluarkan kesalahan apa pun dan saya dapat mengatur konfigurasi gateway dasar di Aplikasi Phoscon. Namun, semua yang terkait dengan perangkat keras ConnBee yang sebenarnya tidak berfungsi. Phoscon menunjukkan versi perangkat tetapi bukan versi firmware dan semua properti ZigBee (saluran dll.) di-nolkan. Saya tidak dapat mengikat sensor apa pun.

Jadi saya akhirnya mem-flash Raspberry Pi 3 yang tersisa dengan gambar _stable_ resmi. Dengan itu, semuanya sekarang berfungsi dengan baik dan semua sensor saya terintegrasi dalam dasbor Grafana yang bagus.

(OT: Gambar Pi memiliki gangguannya sendiri, misalnya dalam konfigurasi defaultnya ia mencoba untuk memulai hostapd dalam loop tak berujung yang menghasilkan sekitar 700 MiB log dalam satu minggu (kartu SD buruk!) dan satu ton beban yang tidak perlu. Saya akan dengan senang hati mengirim permintaan tarik untuk meningkatkan pengaturan (kebetulan saya membuat gambar untuk perangkat yang disematkan sebagai pekerjaan siang hari saya), tetapi belum menemukan repo yang sesuai.)

Satu tujuan jangka panjang adalah untuk mengekspos bagian node GUI melalui REST-API sehingga bahkan untuk instalasi tanpa kepala, klien jarak jauh dapat menampilkan node interaktif, dengan semua fitur GUI deCONZ, misalnya di browser.

Itu akan menjadi mimpi yang menjadi kenyataan

Apakah halaman ini membantu?
0 / 5 - 0 peringkat