Seite 2 von 5

Re: HowTo - Anwesenheitserkennung mit Bluetooth

Verfasst: 8. Feb 2020 14:03
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,

Re: HowTo - Anwesenheitserkennung mit Bluetooth

Verfasst: 9. Feb 2020 14:08
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

Re: HowTo - Anwesenheitserkennung mit Bluetooth

Verfasst: 10. Feb 2020 01:44
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

Re: HowTo - Anwesenheitserkennung mit Bluetooth

Verfasst: 10. Feb 2020 01:48
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 :)

Re: HowTo - Anwesenheitserkennung mit Bluetooth

Verfasst: 10. Feb 2020 22:08
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... ;-)

Re: HowTo - Anwesenheitserkennung mit Bluetooth

Verfasst: 14. Feb 2020 20:54
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.

Re: HowTo - Anwesenheitserkennung mit Bluetooth

Verfasst: 15. Feb 2020 13:12
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

Re: HowTo - Anwesenheitserkennung mit Bluetooth

Verfasst: 15. Feb 2020 18:39
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...

Re: HowTo - Anwesenheitserkennung mit Bluetooth

Verfasst: 15. Feb 2020 19:13
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 ?

Re: HowTo - Anwesenheitserkennung mit Bluetooth

Verfasst: 15. Feb 2020 20:18
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.