Anwesenheitserkennung Bluetooth PebbleBee

Begonnen von tomster, 06 November 2014, 10:01:16

Vorheriges Thema - Nächstes Thema

Ellert

#585
Zitat von: stoxx am 07 Juni 2016, 13:36:49
@Ellert:
Das habe ich schon öfter mal in verschiedenen Foren gelesen..
Vielleicht hilft Dir das weiter:
http://stackoverflow.com/questions/24853597/ble-gatttool-cannot-connect-even-though-device-is-discoverable-with-hcitool-lesc
Ist aber ungetestet.. Bei mir (Raspberry mit Jessie und aktuellem FHEM) lief das bei den GTags von Anfang an ohne Probleme.
vg stoxx

Mit Jessie klappt es bei mir auch sofort, unter Wheezy klappt es bei mir so:

Ich bin der Anleitung gefolgt: http://stackoverflow.com/questions/24853597/ble-gatttool-cannot-connect-even-though-device-is-discoverable-with-hcitool-lesc
dann habe ich gatttool kopiert und ausführbar gemacht, nochmal bluetooth installiert:

cd bluez-5.40
sudo cp attrib/gatttool /usr/local/bin
sudo chmod +x /usr/local/bin/gatttool
sudo apt-get install bluetooth


Danke für den Hinweis.

Das Script liefert allerdings einen Fehler weil gatttool einen kleinen Buchstaben zurück gibt "5e"bei
pi@RaspiTest ~ $ echo "ibase=16; 5e" | bc
(standard_in) 1: syntax error

und somit wird auch das Reading nicht gesetzt. Mit
stringZ=$(echo "$stringZ" | tr a-f A-F)
wird die Klein- in Grossschreibung umgewandelt und der Fehler verschwindet.




Wie ist der, aus dem G-Tag gelesene Wert zu interpretieren, z.B. als 0x5e/0xff *100%?


The Spirit

#586
hab das lepresenced script am laufen
leider bekomme ich immer ein absent, obwohl der g-tag direkt neben dem pi liegt.
was mache ich da falsch?
kann das was mit dem port  zu tun haben?
bzw. wie kann ich testen ob das script das tut was es soll ohne fhem?
Danke
THZ 304 Eco Baujahr 2015

stoxx

@Ellert:
Ist denn bc installiert? Ansonsten lass bc doch einfach mal weg und teste, was dann rauskommt.. bc ist ja nur dafür da, den hex wert in einen decimal-wert umzuwandeln..
also teste doch mal das script:

#!/bin/bash
stringZ=$(sudo gatttool -b <<MACADRESSE>> --char-read --handle=0x001b)
stringZ=${stringZ:33:2}
perl /opt/fhem/fhem.pl 7072 "setreading GTag Batterie $stringZ"

vg stoxx
Raspberry mit CUL, FS20, FHT, HMS, BLE, Z-Wave, Zigbee ..

PatrickR

@Spirit: Setze mal den Log Level auf LOG_INFO und schau ins Syslog.


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

Ellert

Zitat von: stoxx am 08 Juni 2016, 21:59:10
@Ellert:
Ist denn bc installiert? Ansonsten lass bc doch einfach mal weg und teste, was dann rauskommt.. bc ist ja nur dafür da, den hex wert in einen decimal-wert umzuwandeln..
also teste doch mal das script:

#!/bin/bash
stringZ=$(sudo gatttool -b <<MACADRESSE>> --char-read --handle=0x001b)
stringZ=${stringZ:33:2}
perl /opt/fhem/fhem.pl 7072 "setreading GTag Batterie $stringZ"

vg stoxx

Ja, bc ist installiert.
gatttool liefert den Hex-Wert "5e" in Kleinbuchstaben
bc benötigt den Wert in Grossbuchstaben.
Daher habe ich die Umwandlung in Grossbuchstaben ins Script eingebaut: stringZ=$(echo "$stringZ" | tr a-f A-F)
Ich gehe mal davon aus, dass der Batteriezustand "FF" 100% bedeutet, dann wandle ich den Hex-Wert mit bc gleich in einen %-Wert um mit: decimal=$(echo "ibase=16; ($stringZ * 64 / FF)" | bc)

Damit funktioniert alles.


stoxx

Zitat
Ich gehe mal davon aus, dass der Batteriezustand "FF" 100% bedeutet..
Bei mir liefert gatttool momentan 64, und das ist umgerechnet 100. Wenn es bei die 5e liefert, wären das doch 94 ...? Ich verstehe dann nicht, wie du auf FF kommst..
Raspberry mit CUL, FS20, FHT, HMS, BLE, Z-Wave, Zigbee ..

HoTi

#591
Zitat von: pv_is am 29 Mai 2016, 17:24:07

Testen mit:
sudo ./lepresenced --loglevel LOG_EMERG -d

Den absent und present Mode kann man einfach testen, in dem man den Gtag mit Alufolie einwickelt.

Falls notwendig, PID herausbekommen und Daemon manuell stoppen:

ps -ef | grep lepresenced
sudo kill <pid>


Starten dann wieder wie oben!

Hallo zusammen,

bei mir hat es jetzt tagelang funktioniert bis ich einen neuen GTAG hinzufügen wollte. Da ich die MAC Adresse nicht kannte habe ich alles gestopt und mit den hcitool abgefrag.

Leider läuft seit dem nicht mehr, auch ein neustart des Cub hat nichts gebracht.

Beim ausführen von sudo ./lepresenced --loglevel LOG_EMERG -d
bekomme ich folgendes -bash: .lepresenced: /usr/bin/perl^M: bad interpreter: No such file or directory

Was mache ich da falsch?

*EDIT*
Tja für alle die das vielicht auch haben. Es sollte schon das Unix Format haben... nicht windoof
Viele Grüße aus  Oberbayern
Tim (RettungsTim)

Ellert

Zitat von: stoxx am 09 Juni 2016, 09:39:24
Bei mir liefert gatttool momentan 64, und das ist umgerechnet 100. Wenn es bei die 5e liefert, wären das doch 94 ...? Ich verstehe dann nicht, wie du auf FF kommst..

Ja, die Frage für mich ist, was sagt der von gatttool zurückgelieferte Wert aus?
Ist der Wert der direkte Batteriestatus in %.
Oder bedeutet FF=255=100%, weil die maximal darstellbare Hex-Zahl FF ist?

Auf diese Interpretation bin ich gekommen, weil meine G-Tags 4-5 Monate laufen und 5e und 64 zurückliefern. Soweit ich weiss ist die Batterielaufzeit mit bis zu einem Jahr angegeben. Damit wären dann Werte von 37% bzw. 39% (94*100/255 , 100*100/255) realistischer als 94% oder 100%. Aber sicher bin ich mir nicht.

Gibt es eine Schnittstellenbeschreibung, wo die handle-Adressen beschrieben sind?


stoxx

Zitat
Gibt es eine Schnittstellenbeschreibung, wo die handle-Adressen beschrieben sind?

Der Wert ist der Batterie- Ladestand in Prozent - hier der Link:

https://developer.bluetooth.org/gatt/services/Pages/ServiceViewer.aspx?u=org.bluetooth.service.battery_service.xml

Ich glaube einfach, dass die Batterien beim GTag super lange halten.. Meine 4 GTags stehen alle aktuell bei 100%, sind aber noch keine 3 Wochen alt..

vg stoxx
Raspberry mit CUL, FS20, FHT, HMS, BLE, Z-Wave, Zigbee ..

Ellert

Zitat von: stoxx am 09 Juni 2016, 18:02:42
Der Wert ist der Batterie- Ladestand in Prozent - hier der Link:

https://developer.bluetooth.org/gatt/services/Pages/ServiceViewer.aspx?u=org.bluetooth.service.battery_service.xml

Ich glaube einfach, dass die Batterien beim GTag super lange halten.. Meine 4 GTags stehen alle aktuell bei 100%, sind aber noch keine 3 Wochen alt..

vg stoxx
Ja, danke, dann werde ich nicht mehr zweifeln ;)

stoxx

Hier nochmal der aktuelle Code für das Batterie-Level Skript für Gigaset G-Tags (die Großschreibung für bc berücksichtigt - danke Ellert für den Hinweis):

#!/bin/bash
stringZ=$(sudo gatttool -b <<MAC-Adresse>> --char-read --handle=0x001b)
stringZ=${stringZ:33:2}
stringZ=$(echo "$stringZ" | tr a-f A-F)
decimal=$(echo "ibase=16; $stringZ" | bc)
perl /opt/fhem/fhem.pl 7072 "setreading <<TagName>> Batterie $decimal"


<<MAC-Adresse>> = MAC des jeweiligen G-Tags
<<TagName>> = Device-Name des G-Tags

vg stoxx
Raspberry mit CUL, FS20, FHT, HMS, BLE, Z-Wave, Zigbee ..

justme1968

hallo zusammen,

ich habe eben etwas gespielt und aus allen möglichen bluetooth quelltexten eine lescan version zusammen kopiert die zusätzlich noch den rssi melden kann. vielleicht findet sich ja jemand der das ganze in den lepresenced und das PRESENCE modul einbaut :)

ich glaube die todos wären:
- im lepresenced das lescan binary aufrufen statt hcitool lescan
  mit dem eingenen quelltext haben wir auch das buffern im griff und könnten auf stdbuf verzichten
- das parsen anpassen
- die rssi werte mittels oder anders nachbearbeiten. sonst schwanken sie sehr stark
  vielleicht wären auch konfigurierbare schwellwerte gut. eventuell direkt im lescan binary
- die rssi werte an PRESENCE übetragen

bei meinem g-tag kommt der name nur ab und zu mit. wenn man darauf ganz verzichten kann: im quelltext in zeile 108 den type auf 0x00 ändern. eventuell ist dann der scann effizienter.


zum testen:
- die nötige bluetooth developer lib installieren:sudo apt-get install libbluetooth-dev

- kompilieren mit:gcc -o lescan lescan.c -lbluetooth

- laufen lassen mit: sudo ./lescan

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

PatrickR

Mahlzeit!

Hat zufällig jemand Lust und Zeit, das DEB-Paket zu testen? Bei mir sieht es unter raspbian jessie gut aus (allerdings nicht das Standard-Image sondern rasbian-ua-netinst). Der Log-level steht dort standardmäßig auf LOG_WARNING, was wirklich sehr überschaubar ist.

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

Mumpitz

Zitat von: stoxx am 09 Juni 2016, 18:50:09
Hier nochmal der aktuelle Code für das Batterie-Level Skript für Gigaset G-Tags (die Großschreibung für bc berücksichtigt - danke Ellert für den Hinweis):

#!/bin/bash
stringZ=$(sudo gatttool -b <<MAC-Adresse>> --char-read --handle=0x001b)
stringZ=${stringZ:33:2}
stringZ=$(echo "$stringZ" | tr a-f A-F)
decimal=$(echo "ibase=16; $stringZ" | bc)
perl /opt/fhem/fhem.pl 7072 "setreading <<TagName>> Batterie $decimal"


<<MAC-Adresse>> = MAC des jeweiligen G-Tags
<<TagName>> = Device-Name des G-Tags

vg stoxx

Besten Dank für Deine Arbeit! Auf diese Möglichkeit warte ich schon eine Weile!

Merci

justme1968

es gibt hier: https://forum.fhem.de/index.php/topic,54482.0.html einen neuen thread um die rssi auswertung weiter zu diskutieren.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968