[Gelöst] Presence auf Ubuntu server mit Local-Bluethooth Einstellung.

Begonnen von Pusemukel, 11 November 2018, 20:37:30

Vorheriges Thema - Nächstes Thema

Pusemukel

Nabend ,

Kurze Frage, ich bin vor Kurzen mit meiner FHEM Instanz umgezogen auf einen V-Server mit Ubuntu 18.
Soweit klappte das auch ganz gut nur hatte ich Probleme mit dem Presence Modul,
scheinbar war es FHEM nicht möglich nach Bluetooth Geräten zu scannen.

(Wenn ich als Benutzer FHEM den Befehl ausführe, bekomme ich die Fehlermeldung das ich keine Berechtigung dafür habe.)

Ich habe jetzt über die Funktion "function" und einem Skript meine Anwesenheit  in FHEM erfasst.
aber eigentlich würde ich gern wieder über Bluetooth-lokal gehen.

Gibt es da einen "einfachen" weg ohne FHEM Boot rechte zu geben ?

amenomade

Zitatscheinbar war es FHEM nicht möglich nach Bluetooth Geräten zu scannen.
Wie hast Du das festgestellt?
ZitatWenn ich als Benutzer FHEM den Befehl ausführe
Welchen Befehl?
ZitatIch habe jetzt über die Funktion "function"
Was ist das?
Zitatohne FHEM Boot rechte zu geben ?
Was meinst Du mit "Boot rechte"?

Konkrete Inputs wäre nicht schlecht.
Bitte hier lesen: https://forum.fhem.de/index.php/topic,71806.0.html

Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Pusemukel

Nábend

oh man... ja da hast du natürlich recht , sorry für die etwas unkonkrete Anfrage.
hier noch mal die Ausführliche Variante.

scheinbar war es FHEM nicht möglich nach Bluetooth Geräten zu scannen, wenn ich also mit
"sudo -u fhem hcitool lescan" versuche zu scannen bekomme ich ein "Set scan parameters failed: Operation not permitted"
Was ich als -> Nutzer fhem darf das nicht interpretiere.
Wenn ich den befehl "sudo hcitool lescan" als  Benutzer ausführe klappt es wunderbar.

Da dies so nicht klappen wollte habe ich in Anlehnung an : https://haus-automatisierung.com/hardware/fhem/2016/08/02/fhem-tutorial-reihe-part-15-anwesenheit-mit-bluetooth-le-tag-ermitteln.html

das Presence  modul von Fhem nicht wie ich eigentlich wollte über Local-Bluetooth sondern mit function eingerichtet.
Wie Oben im Link zu finden nutze ich hierfür ein kleines Skript (siehe oben) hierüber funktioniert es nun .

der eigentliche Grund warum ich den local-Bluetooth nutzen möchte is das ich gern auch den Batteriestatus meine G-Tags auslesen möchte .
Auf der anderen Seite möchte ich eigentlich nicht das FHEM dauerhaft als root auf dem Server läuft.

Anbei noch das Define meines G-Tags:

defmod Anwensenheit_XX_Black_GTAG PRESENCE function {`sudo /opt/fhem/lescan.sh XX:2F:XX:8F:XX:48`}
attr Anwensenheit_XX_Black_GTAG userattr room_map structexclude
attr Anwensenheit_XX_Black_GTAG event-on-change-reading state
attr Anwensenheit_XX_Black_GTAG group Anwesenheit
attr Anwensenheit_XX_Black_GTAG icon bluetooth
attr Anwensenheit_XX_Black_GTAG room Anwesenheit
attr Anwensenheit_XX_Black_GTAG sortby 10


Auszug aus meiner Log Datei:
2018.11.03 18:56:42 5: PRESENCE (Anwensenheit_XX_Black_GTAG_LAN) - executing: hcitool name 7C:2F:80:8F:08:48
2018.11.03 18:56:47 4: PRESENCE (Anwensenheit_XX_Black_GTAG_LAN) - hcitool returned:
2018.11.03 18:56:47 5: PRESENCE (Anwensenheit_XX_Black_GTAG_LAN) - blocking scan result: Anwensenheit_XX_Black_GTAG_LAN|0|absent
2018.11.03 18:56:47 4: PRESENCE (Anwensenheit_XX_Black_GTAG_LAN) - rescheduling next check in 60 seconds
2018.11.03 18:57:03 5: PRESENCE (Anwensenheit_XX_Black_GTAG) - stopping timer
2018.11.03 18:57:03 5: PRESENCE (Anwensenheit_XX_Black_GTAG) - starting blocking call for mode local-bluetooth
2018.11.03 18:57:03 5: PRESENCE (Anwensenheit_XX_Black_GTAG) - starting bluetooth scan: Anwensenheit_XX_Black_GTAG|XX:2F:XX:8F:XX:48|0|
2018.11.03 18:57:03 5: PRESENCE (Anwensenheit_XX_Black_GTAG) - found standard variant of ps command, using "ax" as parameter
2018.11.03 18:57:03 4: PRESENCE (Anwensenheit_XX_Black_GTAG) - executing: which hcitool
2018.11.03 18:57:03 4: PRESENCE (Anwensenheit_XX_Black_GTAG) - 'which hcitool' returns: /usr/bin/hcitool


Deutet für mich auch darauf hin das der Nutzer fhem keine Berechtigung hat...



PatrickR

#3
Hi!

Operation not permitted ist leider irreführend und ein Dauerproblem, das u. a. auftritt, wenn man hcitool lescan mehrfach nacheinander aufruft. Mit den Rechten des aufrufenden Nutzers hat es nichts zu tun. Der simple Ansatz, wie ihn auch Matthias Kleine benutzt, provoziert aber genau diese häufigen Aufrufe. In Teilen kann man sich mit mehrfachen Resets des Bluetooth-Geräts behelfen, aber der stabilste und in meinen Augen sauberste Ansatz ist, hcitool lescan nur einmal aufzurufen. Und die Lösung - ich bin da nicht ganz objektiv - ist lepresenced (nicht presenced):

https://wiki.fhem.de/wiki/PRESENCE#.C3.9Cberwachung_durch_verteilte_Agenten_in_der_Wohnung_.28presenced.2Flepresenced.2Fcollectord.29

Es gibt auch ein DEB-Paket :)

Grüße
Patrick
lepresenced - Tracking von Bluetooth-LE-Tags (Gigaset G-Tag) mittels PRESENCE

"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning." - Rich Cook

binford6000

Zitat..., aber der stabilste und in meinen Augen sauberste Ansatz ist, hcitool lescan nur einmal aufzurufen. Und die Lösung - ich bin da nicht ganz objektiv - ist lepresenced (nicht presenced):
Sehe ich auch so. Und läuft seit 2,5 Jahren stabil :)

VG Sebastian

Pusemukel

Nabend,

kann ich irgendwie nach gucken welche Variante installiert ist ?!
bzw ob diese korrekt  installiert ist ?

ich würde eigentlich sagen das ich lepresenced installiert ist, und damit funktionierte es eben nicht .
die Wiki Seite kenne ich und bin mir fast sicher das ich auch das  "lepresenced-0.83-3.deb" installiert habe. (Nach Variante 1)

Weiter oben war die Rede vom FHEM modul "PRESENCE", eventuell gab es da ein Missverständnis.
Gruß

PatrickR

dpkg -l | grep lepresenced
Wenn es installiert ist und läuft dann das PRESENCE-Modul auf lan-bluetooth (Port 5333) umstellen.


Von unterwegs gesendet.
lepresenced - Tracking von Bluetooth-LE-Tags (Gigaset G-Tag) mittels PRESENCE

"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning." - Rich Cook

binford6000

Und nachsehen ob lepresenced auch läuft:
ps aux | grep lepresenced
Es sollte dann sowas zu sehen sein:
root       572  1.6  0.8  35484  8588 ?        Ssl  Okt14 764:24 /usr/bin/perl /usr/sbin/lepresenced --device hci0 --listenaddress 0.0.0.0 --listenport 5333 --loglevel LOG_WARNING
Mit PRESENCE:
defmod ble_device PRESENCE lan-bluetooth AA:BB:CC:98:AC:0F 10.3.3.236:5333 15 40
VG Sebastian

Pusemukel

hmm.. tja so läuft es jetzt.  :o ;D

Was mich wundert, warum ich die "lan-bluetooth"  Einstellung des presenced Moduls nutzen muss.
ist irgendwie unlogisch oder nicht ?
Man sollte ja meinen das Local-Bluetooth die richtige Einstellung für lokale bluetooth Dongel ist.
(Steht ja auch so im Kopf des Wiki Beitrages)
Zitat
    - local-bluetooth - Das Überwachen via Bluetooth Checks, die vom FHEM Server direkt durchgeführt werden (angeschlossener Bluetooth-Stick und die Software bluez voraussgesetzt)
    - lan-bluetooth - Das Überwachen von Bluetoothgeräten, über Netzwerk. Auf einer oder mehreren Maschinen im Netzwerk (z.B. Raspberry Pi) läuft ein Presence-Daemon, der nach Bluetooth-Geräten sucht. Um mehrere Presence-Daemon mit FHEM zu verbinden, gibt es den Collector-Daemon, der sich zu allen Presence-Damons im Netzwerk verbindet und das Ergebnis von allen zusammenfasst.

    function - Das Überwachen mithilfe einer selbst geschrieben Perl-Funktion, die den Anwesenheitsstatus zurück gibt (0 oder 1)
    shell-script - Das Überwachen mithilfe eines selbst geschriebenen Shell-Programms/Skript, das eine 0 oder 1 ausgibt, um den Anwesenheitsstatus mitzuteilen

Wenn ich allerdings voraussetze das ich für "le" Variante die "lan-bluetooth" Einstellung setzen muss macht der Wiki Beitrag
ganz anders Sinn.

Super ! Danke   

PatrickR

Zitat von: PusemukelWas mich wundert, warum ich die "lan-bluetooth"  Einstellung des presenced Moduls nutzen muss.
ist irgendwie unlogisch oder nicht ?
Ist es!

local-bluetooth kann kein Bluetooth-LE, wie Du es für die G-Tags brauchst. Daher kam irgendwann so ein verrückter lepresenced-Entwickler um die Ecke und hat das Netztwerkprotokoll gekapert und so Bluetooth LE für das PRESENCE-Modul nutzbar gemacht.

Ich gebe aber zu, dass das PRESENCE-Ökosystem mit PRESENCE-Modul, collectord, presenced und lepresenced gerade am Anfang etwas verwirrend ist.

Patrick


Von unterwegs gesendet.
lepresenced - Tracking von Bluetooth-LE-Tags (Gigaset G-Tag) mittels PRESENCE

"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning." - Rich Cook