Hauptmenü

FHEM Docker Lelepresenced

Begonnen von David-Lee, 30 März 2021, 20:22:24

Vorheriges Thema - Nächstes Thema

David-Lee

Guten Abend,

ich habe auf meinen Rpi4 das neuste offizielle Betriebssystem installiert.
Das FHEM Image läuft in einen Docker Container und jetzt möchte ich das mein Bluetooth Tag im Presence Modul erkannt wird.

Wenn ich das dazu benötigte lepresenced-0.93-1.deb im Container installiere dann scheitert die Installation mit folgender Fehlermeldung:

root@raspberrypi:/opt/fhem# sudo dpkg -i lepresenced-0.93-1.deb
(Reading database ... 40811 files and directories currently installed.)
Preparing to unpack lepresenced-0.93-1.deb ...
Unpacking lepresenced (0.93-1) over (0.93-1) ...
Setting up lepresenced (0.93-1) ...
/var/lib/dpkg/info/lepresenced.postinst: 2: /var/lib/dpkg/info/lepresenced.postinst: systemctl: not found
/var/lib/dpkg/info/lepresenced.postinst: 3: /var/lib/dpkg/info/lepresenced.postinst: systemctl: not found
dpkg: error processing package lepresenced (--install):
installed lepresenced package post-installation script subprocess returned error exit status 127
Errors were encountered while processing:
lepresenced


Hat jemand das schon zum laufen bekommen und wenn ja, wie ist der richtige Weg?

Vielen lieben Dank

Grüße

David-Lee

Otto123

#1
Hi,

geht meines Wissens nur extern und nicht im Container. BT Devices sind im Container mWn nicht verfügbar.

Aber eigentlich kein Problem. Eine Datei auf dem Host - dazu braucht man keinen Container.
Hier meine Kurznotiz
#### BT Workaround
mkdir scripts
cd scripts
wget https://svn.fhem.de/fhem/trunk/fhem/contrib/PRESENCE/presenced
chmod +x presenced
chgrp -cR dialout presenced

sudo systemctl edit --force --full precenced

#####
[Unit]
Description=FHEM Home presenced Daemon
Wants=network.target
After=network.target
#Requires=postgresql.service
#After=postgresql.service
#Requires=mysql.service
#After=mysql.service

[Service]
Type=forking
#User=fhem
Group=dialout
WorkingDirectory=/home/pi/scripts
ExecStart=/usr/bin/perl presenced -d
Restart=always

[Install]
WantedBy=multi-user.target
####
sudo systemctl enable precenced
sudo systemctl start precenced


Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

David-Lee

Vielen lieben Dank für deine Antwort

Ich habe das umgesetzt so wie Du das geschrieben hast und da zeigte mir FHEM disconnected an.
Dann habe ich das ganze mal mit lepresenced gemacht und auch da zeigt mir FHEM im Docker disconnected an.

Den folgenden Befehl habe ich in .cfg eingetragen

define MeinGtAG PRESENCE lan-bluetooth 7C:2F:80:C2:79:EA 127.0.0.1:5333    120

Hättest Du vielleicht eine Lösung?

Otto123

Also eine Def in FHEM sähe eigentlich so aus:
defmod BT_iPhone PRESENCE lan-bluetooth aa:bb:cc:11:33C:44 192.168.100.119:5111


Die IP ist die Echte des Docker Host
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

kadettilac89

Zitat von: Otto123 am 30 März 2021, 21:28:33
geht meines Wissens nur extern und nicht im Container. BT Devices sind im Container mWn nicht verfügbar.

geht im privileged modus. Der Service auf dem Host ist aber der bessere weg.

Zitat von: Otto123 am 31 März 2021, 19:30:18
Also eine Def in FHEM sähe eigentlich so aus:
defmod BT_iPhone PRESENCE lan-bluetooth aa:bb:cc:11:33C:44 192.168.100.119:5111



Die IP ist die Echte des Docker Host

lepresenced läuft auf port 5333
presenced auf 5111

Docker host kannst über den Alias in der /etc/hosts ansprechen. gateway.docker.internal oder host.docker.internal. Das hat den Vorteil, dass es auch funktioniert wenn der Docker-Host aus welchen Gründen auch immer eine andere IP bekommt.


172.18.0.1      gateway.docker.internal
172.18.0.1      host.docker.internal


Somit wäre deine Def.

define MeinGtAG PRESENCE lan-bluetooth 7C:2F:80:C2:79:EA host.docker.internal:5333    120

Wenn das nicht funktioniert musst erstmal am Host prüfen ob dort dein Bluetooth erkannt wird, oder der Bluetooth-Stack durch andere Prozesse geblockt wird. Das Problem hatte / habe ich auf meinem NUC.

Wernieman

Der privileged modus hat einen entscheidenen Nachteil, man hat vollen Zugriff auf die host resourcen. Über dev z.B. auch root-Zugriff aufs RAM ... mit allen Vor/Nachteil.

Deshalbb ist es nicht "der bessere" Weg, sondern eigentlich der "einzig richtige". Sogar im Docker-Wiki wird davor gewarnt ....
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Otto123

#6
mein presenced (war auch mein Beispiel - ja David-Lee ging es um lepresenced, ist aber analog. Ich wollte für mich konsistent bleiben) läuft aber auf dem Host und der hat eine IP im Netz.
ZitatDas hat den Vorteil, dass es auch funktioniert wenn der Docker-Host aus welchen Gründen auch immer eine andere IP bekommt.
Es ist Wurscht ob Docker auf dem gleichen Host läuft: Ich würde da immer die IP oder den Hostnamen angeben. Meines Wissens registriert sich docker nicht im DNS und damit ist dieser Name gateway.docker.internal host.docker.internal) im Netzwerk unbekannt. Ich halte diese Angabe in dem Zusammenhang für irreführend!
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

kadettilac89

Zitat von: Otto123 am 01 April 2021, 18:48:22
Meines Wissens registriert sich docker nicht im DNS und damit ist dieser Name gateway.docker.internal host.docker.internal) im Netzwerk unbekannt. Ich halte diese Angabe in dem Zusammenhang für irreführend!
Der Name muss auch nicht im (WAN)Netzwerk bekannt sein, nur im Docker Container und da ist der Alias gesetzt. Ich gehe damit direkt über das Docker Netz auf den Host, läuft seit Anfang an. Du gehst den Weg über das WAN-Netz und von da an den Host zurück.

https://github.com/fhem/fhem-docker#connect-to-docker-host-from-within-container


If you would like to connect to a service that is running on your Docker host itself or to a container that is running in host network mode, you may use the following DNS alias names that are automatically being added to /etc/hosts during container bootup:

gateway.docker.internal
host.docker.internal

Otto123

#8
Also von WAN kann keine Rede sein. (Bezeichnet man das Netzwerk außerhalb von Docker als WAN?  :-\)
Aber da ich empfehle den Dienst auf dem (einen) Host zu installieren - weiß ich nicht ob das presenced / lepresenced Port auch auf der Docker Adresse erreichbar ist. Und ich würde diese in dem Fall nicht verwenden.
Im privileged Modus mag das richtig sein, aber den wollte ich nicht empfehlen - ich finde den für diese Anwendung auch nicht zielführend.

Kann aber sein, dass es funktioniert. Allerdings nur wenn auf dem Host auch wirklich die (le)presenced Installation gelaufen ist. Muss ich mal drüber nachdenken ...  :-[ ;) ob das wirklich Vorteile hat.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

kadettilac89

Zitat von: Otto123 am 01 April 2021, 20:23:48
Also von WAN kann keine Rede sein.
Aber da ich empfehle den Dienst auf dem (einen) Host zu installieren - weiß ich nicht ob das presenced / lepresenced Port auch auf der Docker Adresse erreichbar ist. Und ich würde diese in dem Fall nicht verwenden.
Im privileged Modus mag das richtig sein, aber den wollte ich nicht empfehlen - ich finde den für diese Anwendung auch nicht zielführend.
ich hab keinen privileged modus, der wurde nur der Vollständigkeit halber erwähnt. Wurde von mir auch nicht empfohlen.

Bei mir läuft presenced auf dem HOst, im Container läuft Fhem und ich habe die Config gepostet die ich laufen habe, und auch schon mehrfach hier empfohlen habe. Für mich war und ist es zielführend da es so problemlos läuft.

David-Lee

so ich habe das Raspi OS neuinstalliert, aber ich bekomme es einfach nicht installiert.

Diese Fehlermeldung erhalte ich wenn ich den daemon starten möchte:

pi@raspberrypi:~ $ sudo systemctl start lepresenced
Job for lepresenced.service failed because the control process exited with error code.
See "systemctl status lepresenced.service" and "journalctl -xe" for details.


Im Journal steht das:
The unit lepresenced.service has entered the 'failed' state with result 'exit-code'.
Apr 02 05:28:48 raspberrypi systemd[1]: Failed to start FHEM Home lepresenced Daemon.
-- Subject: A start job for unit lepresenced.service has failed
-- Defined-By: systemd


Nach diesen Schritten habe ich es gemacht:
#### BT Workaround
mkdir scripts
cd scripts
wget https://svn.fhem.de/fhem/trunk/fhem/contrib/PRESENCE/lepresenced
chmod +x lepresenced
chgrp -cR dialout lepresenced

sudo systemctl edit --force --full lepresenced

#####
[Unit]
Description=FHEM Home lepresenced Daemon
Wants=network.target
After=network.target
#Requires=postgresql.service
#After=postgresql.service
#Requires=mysql.service
#After=mysql.service

[Service]
Type=forking
#User=fhem
Group=dialout
WorkingDirectory=/home/pi/scripts
ExecStart=/usr/bin/perl lepresenced -d
Restart=always

[Install]
WantedBy=multi-user.target
####
sudo systemctl enable lepresenced
sudo systemctl start lepresenced


Woran könnte es liegen?




kadettilac89

#11
Das ist lt. Wiki die Variante 3 der Installation. Hast du das Folgende gemacht ...


Skript erstmalig starten:

sudo ./lepresenced --loglevel LOG_EMERG -d
Kommt beim Starten des Skript eine Fehlermeldung, müssen die Abhängigkeiten aufgelöst werden.
...

vermutlich fehlt dir ...
sudo apt-get install libnet-server-*


Bekommst du dabei Fehlermeldungen?

Wernieman

Und einfach mal die üblichen Verdächtigen prüfen
/var/log/syslog
/var/log/kern.log
etc ....
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Otto123

Klingt logisch - warum hab ich mir das nicht aufgeschrieben? Kommt das auch mit einer anderen Installation?
Ich sehe schon ich muss das alles nochmal in Ruhe durchgehen - mit den ganzen Hinweisen :)
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

kadettilac89

Zitat von: Otto123 am 02 April 2021, 10:02:29
Klingt logisch - warum hab ich mir das nicht aufgeschrieben? Kommt das auch mit einer anderen Installation?
Ich sehe schon ich muss das alles nochmal in Ruhe durchgehen - mit den ganzen Hinweisen :)
Vermutlich hast du die Module in deiner Anleitung vorher installiert, oder wurde als Abhängigkeit irgendwo mitgenommen. Dann kommt der Fehler nicht mehr hoch und ist für dein Setup nicht nötig.