HowTo - Anwesenheitserkennung mit Bluetooth

Für welche Projekte verwendet Ihr OpenHAB? Was habt Ihr automatisiert? Stellt eure Projekte hier vor.

Moderatoren: Cyrelian, seppy

Benutzeravatar
Steinspiel
Beiträge: 394
Registriert: 28. Dez 2019 08:49
Answers: 2

Re: HowTo - Anwesenheitserkennung mit Bluetooth

Beitrag von Steinspiel »

Moin,
Tomzk hat geschrieben: 7. Feb 2020 17:57 ich bin gerade dabei Variante 2 per Mqtt zum laufen zu bekommen.
[...]
Hast Du den schon Variante 1 zum laufen bekommen?
Ich frage weil es bei mir immer noch nicht läuft und ich für jeden Hinweis dankbar wäre.

schönes WE,
bis dann, Steinspiel

Tomzk
Beiträge: 55
Registriert: 5. Nov 2019 11:04

Re: HowTo - Anwesenheitserkennung mit Bluetooth

Beitrag von Tomzk »

Steinspiel hat geschrieben: 8. Feb 2020 14:03
Hast Du den schon Variante 1 zum laufen bekommen?

schönes WE,
Hallo Steinspiel,

nein habe Variante 1 nicht ausprobiert, da ich lieber die Variante mit MQTT bevorzuge.

Gruß
Tom

eiGelbGeek
Beiträge: 226
Registriert: 11. Aug 2019 06:39
Answers: 4

Re: HowTo - Anwesenheitserkennung mit Bluetooth

Beitrag von eiGelbGeek »

Tomzk hat geschrieben: 7. Feb 2020 17:57
Was muss ich tuen, wenn mein MQTT Broker ein Benutzer/Passwort hat (nutze Mosquitto). Sehe im bash keine Möglichkeit dies zu ergänzen oder ist es egal?
Nein ist natürlich nicht egal ;-)

MQTT Script mit Username und Passwort (habe es nicht getestet, sollte aber stimmen :mrgreen: )

MAN Page -> https://mosquitto.org/man/mosquitto_pub-1.html

Code: Alles auswählen

#!/bin/bash

########################################
# MQTT presence detection using G-Tags #
#                          version 0.2 #
#              copyright by eiGelbGeek #
########################################

#configuration
mqtt_broker_ip="192.168.10.15"
mqtt_broker_port="1883"
mqtt_username="USERNAME"
mqtt_password="PASSWORD"
mqtt_topic="/geeknet/presence/"
openhab_items=("GTag_1" "GTag_2" "GTag_3")
gtag_ids=("78:8F:88:99:89:6D" "78:8F:80:99:8D:88" "78:28:88:99:C8:38")

#From here changes can lead to loss of function!
filename=/tmp/bluetooth_devices.$$
hcitool lescan > $filename & sleep 10
pkill --signal SIGINT hcitool
sleep 1

for ((i=0;i<${#gtag_ids[@]};++i)); do
  searchresult=$(grep -c ${gtag_ids[i]} $filename)
  if [ $searchresult -gt 0 ]; then
      mosquitto_pub -h $mqtt_broker_ip -p $mqtt_broker_port -u $mqtt_username -P $mqtt_password -t $mqtt_topic${openhab_items[i]}/status -m ON
  else
      mosquitto_pub -h $mqtt_broker_ip -p $mqtt_broker_port -u $mqtt_username -P $mqtt_password -t $mqtt_topic${openhab_items[i]}/status -m OFF
  fi
done
rm $filename

eiGelbGeek
Beiträge: 226
Registriert: 11. Aug 2019 06:39
Answers: 4

Re: HowTo - Anwesenheitserkennung mit Bluetooth

Beitrag von eiGelbGeek »

Steinspiel hat geschrieben: 8. Feb 2020 14:03
Ich frage weil es bei mir immer noch nicht läuft und ich für jeden Hinweis dankbar wäre.
Habe gerade leider wenig Zeit, melde mich aber noch :)

Benutzeravatar
Steinspiel
Beiträge: 394
Registriert: 28. Dez 2019 08:49
Answers: 2

Re: HowTo - Anwesenheitserkennung mit Bluetooth

Beitrag von Steinspiel »

Moin,
eiGelbGeek hat geschrieben: 10. Feb 2020 01:48 Habe gerade leider wenig Zeit, melde mich aber noch :)
Alles klar, gut das Du mich nicht vergessen hast... :)
Meld Dich wenn`s passt. Meine G-Tags und ich, wir üben uns in Geduld... ;-)
bis dann, Steinspiel

Benutzeravatar
peter-pan
Beiträge: 2564
Registriert: 28. Nov 2018 12:03
Answers: 25
Wohnort: Schwäbisch Gmünd

Re: HowTo - Anwesenheitserkennung mit Bluetooth

Beitrag von peter-pan »

Hallo Kevin,

habe heute, einen G-Tag bekommen und dein Projekt "Anwesenheitserkennng" in der MQTT-Version auf meinem Test-System umgesetzt. Hat auch soweit alle gut geklappt, musste nicht mal "jq" und "bluez" installieren, war alles schon in der aktuellen Version vorhanden. Die MQTT-Clients hatte ich schon von einem vorigen Projekt (auch von dir) installiert.
Den Cron-Job muss ich noch einrichten, aber das ist gleich erledigt. Während der Testphase lasse ich die Anwesenheitserkennung nur mal auf der Testmaschine laufen. Ich kann ja die Werte (wenn ich will ;) ) auch über MQTT im Produktionsrechner abgreifen.

Von dem G-Tag bin ich allerdings etwas entäuscht, das mag an der "Topologie" meines Hauses liegen, aber wenn der G-Tag im Kinderzimmer liegt und mein RasPi ist im Arbeitszimmer (Entfernung etwa 10 Meter) ist keine Erkennung mehr möglich.
Was ich aber dafür noch herausgefunden habe ist, dass mein "Popel-Fitness-Tracker" (ist aber wasserdicht. Trage ihn auch beim Schwimmen im Meer und unter der Dusche - ist dicht) überall erkannt wird, auch da wo der G-Tag schon nicht mehr sichtbar ist.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.1.1 openhabian

eiGelbGeek
Beiträge: 226
Registriert: 11. Aug 2019 06:39
Answers: 4

Re: HowTo - Anwesenheitserkennung mit Bluetooth

Beitrag von eiGelbGeek »

peter-pan hat geschrieben: 14. Feb 2020 20:54 Was ich aber dafür noch herausgefunden habe ist, dass mein "Popel-Fitness-Tracker" (ist aber wasserdicht.
Wenn der Tracker die ganze Zeit via Bluetooth erreichbar ist, kannst du diesen auch für die Anwesendheitserkennung nutzen :D Dem Script ist es egal nach welchen BT Gerät er sucht :)

Zur Reichweite kann ich garnicht viel sagen... ich habe in der Wohnung 2 RPi's die mit den Script suchen und im Keller 2 RPi Zero die danach suchen ... habe bis jetzt keinerlei Probleme festgestellt. Allerdings habe ich in der openhab Rule auch ne Sicherheit eingebaut .... es wird erst nach paar Minuten auf Abwensend geschaltet... nicht sofort beim ersten nicht erkennen des Tags.

Sprich der GTag triggert bei mir ein Item mit Expire Binding und schaltet erst auf Abwennd wenn das Expire abläuft.

Müsste so aussehen, wenn ich es richtig zusammen kopiert habe ;-) Bei mir ist es noch etwas komplexer, weil ich ja mit 4 RPi's tracke :mrgreen:

Code: Alles auswählen

//Gruppen
Group:Switch:AND(OFF,ON) gPresence

//Items
Switch Presence "Jemand Anwesend?"
Switch Presence_Timer "Timer für Präsenzerkennung" { expire="10m,command=OFF" }
Switch GTag_1 "GTag_1" (gPresence) { channel="mqtt:topic:presence:GTag_1" }

//RULES
rule "Presence update"
when
  Item gPresence received update
then
  if(gPresence.state == ON && Presence.state != ON){
    Presence.sendCommand(ON)
  }
  else if(gPresence.state == OFF && Presence.state != OFF && Presence_Timer.state != ON){
    Presence_Timer.sendCommand(ON)
  }
end

rule "Presence Off"
when
  Item Presence_Timer received command OFF
then
  Presence.sendCommand(OFF)
end

rule "Presence"
when
  Item Presence changed
then
  if (Presence.state == ON){
    sendTelegram("gBot", "Jemand ist zu Hause\n" + (now.toString("HH:mm")) +" Uhr")
  }
  else {
    if(Presence.state == OFF){
      sendTelegram("gBot", "Niemand zu Hause\n" + (now.toString("HH:mm")) +" Uhr")
    }
  }
end

rule "Presence GTag 1"
when
  Item GTag_1 changed
then
  if (GTag_1.state == ON){
    if (Presence_Timer.state == ON) Presence_Timer.postUpdate(OFF)
  }
end

Benutzeravatar
Steinspiel
Beiträge: 394
Registriert: 28. Dez 2019 08:49
Answers: 2

Re: HowTo - Anwesenheitserkennung mit Bluetooth

Beitrag von Steinspiel »

Moin,

Ich bin bei meinem Problem mit den G-Tags die ich per REST API eingerichtet habe immer noch nicht weiter gekommen.
Ich denke mal als erstes sollte das G-Tag Item im LogViewer sichbar sein, was es noch nicht ist weil ich mich bisher noch gar nicht damit auskenne bzw. nicht weiß wo ich anfangen soll nach Fehlern zu suchen.
eiGelbGeek hat geschrieben: 2. Feb 2020 04:38 Irgendwo muss bei dir noch ein Fehler sein, wenn im Openhab Log nichts auftaucht...
Frag mal den Zustand von GTag_1 in der RestAPI ab... ich vermute mal das dieser NULL ist?
Kannst Du mir sagen wie?

schönen Abend noch...
bis dann, Steinspiel

Benutzeravatar
peter-pan
Beiträge: 2564
Registriert: 28. Nov 2018 12:03
Answers: 25
Wohnort: Schwäbisch Gmünd

Re: HowTo - Anwesenheitserkennung mit Bluetooth

Beitrag von peter-pan »

eiGelbGeek hat geschrieben: 15. Feb 2020 13:12 Sprich der GTag triggert bei mir ein Item mit Expire Binding und schaltet erst auf Abwennd wenn das Expire abläuft.
...ok, hab die Logik verstanden(noch nicht im Detail), aber Expire, will ich mir nicht mehr unbedingt hochladen (OH1). Hab zwar auch 3 Pis, aber 2 davon "nur temporär" (Test und Office-Anwendung-Spielerei). Momentan läuft die Bluetooth-Erkennung über den Test-Pi, vielleicht ist das Bluetooth auf dem Pi4 ja besser. Am Standort kann ich auch noch ein bisschen experimentieren. Auf jeden Fall werd ich meinen Tracker mit einbeziehen.

aber noch eine Frage; Wenn ich mit dem "hiscan"-Tool scanne, bekomme ich auch Adressen, die mir nichts sagen, aber meistens auch doppelt kommen:

Code: Alles auswählen

2E:7E:F9:5E:3C:78 (unknown)
37:27:66:49:F2:D8 (unknown)
4B:4D:FD:99:7D:4C (unknown)
4B:4D:FD:99:7D:4C (unknown)
4C:A1:C1:32:80:4A (unknown)
4C:A1:C1:32:80:4A (unknown)
6E:D7:75:8B:3B:BE (unknown)
6E:D7:75:8B:3B:BE (unknown)
7C:2F:80:C3:9F:18 (unknown)
7C:2F:80:C3:9F:18 Gigaset G-tag
C8:B2:1E:A6:1F:6B (unknown)
C8:B2:1E:A6:1F:6B BF700
F4:F9:51:BE:47:74 (unknown)
F4:F9:51:BE:47:74 (unknown)
FF:F2:9E:2B:B5:5F (unknown)
FF:F2:9E:2B:B5:5F V10
Kann ich herausfinden, welches Gerät dahinter steckt ?
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.1.1 openhabian

Benutzeravatar
peter-pan
Beiträge: 2564
Registriert: 28. Nov 2018 12:03
Answers: 25
Wohnort: Schwäbisch Gmünd

Re: HowTo - Anwesenheitserkennung mit Bluetooth

Beitrag von peter-pan »

Steinspiel hat geschrieben: 15. Feb 2020 18:39 Ich bin bei meinem Problem mit den G-Tags die ich per REST API eingerichtet habe immer noch nicht weiter gekommen.
Also ich weiss nicht, ob man per REST Api etwas einrichten kann. :?:
Frage ist bei dir das REST Api installiert (PaperUI) ?
restapi.jpg
Wenn du nun REST-Api eingerichtet hast, dann solltest du es auch in deiner WEB-Ui sehen:
restapi1.jpg
Wenn du nun die/das REST Api aufrufst und deine Werte eingibst - so:
restapi2.jpg
Dann solltest du eigentlich alle Infos haben.

Aber ehrich gesagt, ich finde die MQTT-Variante eleganter ;) . Das ist natürlichg Geschmackssache.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.1.1 openhabian

Antworten