FHEM Forum

FHEM => Automatisierung => Thema gestartet von: Markus Bloch am 27 Januar 2013, 13:39:33

Titel: Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: Markus Bloch am 27 Januar 2013, 13:39:33
Hallo zusammen,

schon vor längerer Zeit hatte ich mich auf die Suche begeben, nach einer Anwesenheitserkennungslösung. Sowohl in der alten Mailing-Liste, als auch hier im Forum wurde darüber immer wieder diskutiert. Viele hatten dies mit Hilfe von Ping-Tests via WLAN mit ihren Handys realisiert. Das kam für mich leider nicht in Frage, da jedes iPhone im Standby die WLAN Verbindung beendet und somit nicht mehr erreichbar währe. Android Handys lassen ihr WLAN ja bekanntlicherweise an (wobei sich das wirklich extrem auf den Akku auswirkt).

Ein Arbeitskollege von mir, welcher bei Siemens den Bluetooth-Standard mitentwickelte, brachte mich auf die Idee es doch mit Bluetooth-Paging zu versuchen. Dabei werden öffentliche Informationen von einem Bluetooth-Device abgefragt (Name, Hersteller, Bluetooth-Version, unterstützten Features). Diese Informationen sind für jedes Gerät abfragbar welches Bluetooth aktiviert hat (unabhängig ob sichtbar oder nicht).

Dies kann man unter Linux mittels "hcitool info <bluetooth-addresse>" abfragen. So lässt sich auch herausfinden, ob ein Device in Reichweite ist, oder nicht. Denn wenn der Name ermittelt werden kann, ist ein Device logischerweise in Reichweite. Wenn nicht, dann ist es nicht anwesend.

Aufgrund der Tatsache, dass ich mein Handy stets dabei habe, liese sich so eine einfache Anwesenheitserkennung bauen, ohne manuelle Interaktion.

Daraus sind nun 2 Perl-Programme und 1 FHEM Modul entstanden, was ich euch hier vorstellen möchte.

presenced - Das Herz des ganzen, was ein oder mehrere Devices auf Anwesenheit prüft

Dieser Daemon macht nix anderes, als auf dem Port 5111 TCP zu lauschen und auf Kommandos zu warten. Sobald ein Kommando eintrifft (Bluetooth Addresse und ein Check Interval in Sekunden) beginnt dieser dieses Device zyklisch zu prüfen. Dabei wird einfach der Befehl "hcitool info <Bluetooth-Addresse>" aufgerufen und geschauht, ob der Name ermittelt werden kann.

Wenn der Name ermittelt werden konnte, wird der Status "present" (anwesend) mit dem Namen des Devices zurück an den Client geschickt. Anderenfalls ist der Status "absent" (abwesend).

Es können dabei mehrere Clients gleichzeitig jeweils 1 Gerät überwachen. Dass bedeutet, Client 1 möchte Device1 aller 20 Sekunden überwacht haben, Client 2 möchte Device2 aller 40 Sekunden überwacht haben, usw.

Clients sind hierbei entweder das Modul PRESENCE oder der collector-Daemon.

collectord - Mehrere Räume (presenced-Instanzen) zu einem gesamten Ergebniss zusammenfassen

Nun hat man ja nicht umbedingt nur einen Raum in der Wohnung. Bluetooth-Funk funktioniert üblicherweise nur in einem Raum und geht nicht durch die Zimmerwände. Um aber dennoch die gesamte Wohnung erfassen zu können, kann man mehrere presence-Daemons in jedem Zimmer laufen lassen.

Hierführ bietes sich das Rasbperry Pi mit einem mini-Bluetooth-USB-Stick an (und evtl. einem Mini-WLAN-Stick). In jedem Raum steh ein Raspberry mit Bluetooth und einer presenced-Instanz. Der collectord verbindet sich dabei zu allen konfigurierten presenced-Instanzen und koordiniert die Prüfung eines oder mehreren Devices in der Wohnung. Dabei wird eine Konfigurationsdatei benötigt, welche alle presenced-Instanzen den Räumen zuordnet. Dies sieht dabei so aus.


# room definition
# ===============
#
#[room-name]              # name of the room
#address=192.168.0.10     # ip-address or hostname
#port=5111                # tcp port which should be used (5111 is default)
#presence_timeout=120     # timeout in seconds for each check when devices are present
#absence_timeout=20       # timeout in seconds for each check when devices are absent

[living room]
address=192.168.0.11
port=5111
presence_timeout=180
absence_timeout=20


Es können dabei beliebig viele Räume definiert werden.

Der collectord sammelt dabei die Ergebnisse aller konfigurierten presenced-Instanzen ein und kumuliert diese zu einem Ergebnis (abwesend oder anwesend in Raum XY)

Der collectord lauscht abweichend auf Port 5222 TCP und wird nur durch das PRESENCE Modul angesprochen.

73_PRESENCE.pm - FHEM Modul zur Integration der Anwesenheitserkennung in FHEM

Das Modul PRESENCE stellt die Schnittstelle zu presenced/collectord dar. Es kann sowohl direkt mit einem presenced verbunden werden oder mit einem collectord (für die Abfrage mehrere presenced-Instanzen).

Eine Definition sieht wie folgt aus:


define iPhone PRESENCE <IP-Adresse:Port> <Bluetooth-Adresse> [ <Timeout in Sekunden> ]


Das Modul verbindet sich zur angegebenen IP+Port und fordert dort die Überwachung der gegebenen Bluetooth-Adresse an. Optional kann ein Timeout in Sekunden angegeben werden. Dies ist defaultmäßig 30 Sekunden.

Das Timeout hat jenachdem mit was man sich verbindet unterschiedliche Bedeutungen:



(siehe Anhang / see attachement)




(siehe Anhang / see attachement)


Ich habe auf diese Weise bereits seit mehreren Monaten eine zuverlässige Anwesenheitserkennung im Einsatz, welche z.B. nach 15 Minuten dauerhafter Abwesenheit sämtliches Licht, Fernsehen und Musik auschaltet und abends, sobald die Jalousien herunterfahren bei Anwesenheit auch direkt das Licht anmachen.

Für Fragen stehe ich gerne zur Verfügung.

Viele Grüße

Markus Bloch
Titel: Aw: Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: Icebear am 27 Januar 2013, 15:36:49
Hallo,

den selben ansatz hatte ich auch :) habs allerdings "einfacher" mit nem shell script geloest.

Ich habe bei der ganzen Sache ein Problem. Das Device muss Sichtbar sein !

Ich moechte das ganze aber auch bei unsichtbaren Devices.

Der versuch das ganze auf gepaireten Devices zu machen schlug leider fehl. Es funktionierte immer eine Zeit lang und danach war essig ...

root@IcebearLinux:~# cat searchhandy
#!/bin/sh
if [ `hcitool name B8:D9:CE:64:A5:07 | grep Icehandy` ]
then
echo "Handy IceHandy gefunden"
else
echo "Handy IceHandy nicht gefunden"
fi

if [ `hcitool name  B8:D9:CE:64:A5:13 | grep Melle` ]
then
echo "Handy Melle gefunden"
else
echo "Handy Melle nicht gefunden"
fi

das ist die Shell Datei.

Danach aus den Codesnippets den Schnipsel der das ganze per Ping macht geaendert und das wars.

Wie gesagt. Wenn du ne idee hast warum das nur ne zeit lang funzte und danach nicht mehr nur raus damit:)

Grüsse aus dem schönen Wesel. Icebear.
Titel: Aw: Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: Markus Bloch am 27 Januar 2013, 15:44:55
Hallo Icebear,

ich hab mit meiner Lösung aktuell 2 Handys in der Überwachung. Ein iPhone 4S und ein HTC Desire HD.

Beim iPhone ist es generell so, dass das Handy mit irgendeinem Gerät gekoppelt sein muss (ich habs mit meinem Laptop gekoppelt). Erst dadurch bleibt der Bluetooth-Empfänger dauerhaft an und wartet auf Funk-Kommandos (graues Bluetoothsymbol oben rechts). Das Gerät ist aber nicht sichtbar.

Beim Desire HD muss ich nur das Bluetooth-Device einschalten. Dieses bleibt dauerhaft an und reagiert auf Anfragen, ist allerdings nicht sichtbar.

Vielleicht hilft dir das.

Viele Grüße

Markus
Titel: Aw: Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: Markus Bloch am 27 Januar 2013, 15:48:30
desweiteren solltest du sicherstellen, dass unter keinen Umständen 2x ein "hcitool name ....." gleichzeitig läuft. Damit hatte ich am Anfang Probleme, da man ja auf ein serielles Device nicht parrallel zugreifen kann.

Das hatte mein Bluetooth-Device gerne mal zum Absturz gebracht und in diesem Fall den Namen nicht mehr angezeigt.

Alternativ mal mit hcitool info <bt-address> testen, was er sonst noch so zu deinen devices ermitteln kann.

Viele Grüße

Markus
Titel: Aw: Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: Icebear am 27 Januar 2013, 15:56:56
Hi,

hmm das gleichzeitige aufrufen könnte es sein da ich minütlich das ganze aufgerufen habe.

Könnte also sein, wenn FHem gerade was anderes zu tun hatte es länger als ne minute gedauert hat und somit das ganze 2 mal lief.

Ich sollte es script mal aendern das doppelte aufrufe nicht funzen (und ein anwesend zurueck geben) damit die huette nicht durch nen fehler kalt wird :)

Desweiteren muss ich das ganze noch anpassen, das geprueft wird das jemand "laenger" nicht da ist. muss mal schauen wie. Sinn des ganzen ist das wenn jemand von uns z.b. das handy neustartet oder sonst was passiert das man kurz nicht "angepingt" werden kann nicht sofort die Wohnung verrueckt spielt :) denke ne schwelle von 10 Minuten nicht erreichbar sollte reichen ..

Vielleicht auch als tip fuer deine anwendung ..
Titel: Aw: Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: Markus Bloch am 27 Januar 2013, 16:04:42
Da hast du recht, ich hab bei mir folgendes gemacht und mir in dem Fall einen watchdog definiert, der erst nach 15 Minuten dauerhafter Abwesenheit die Wohnung abschaltet

define watchdog_Anwesenheit watchdog iPhone:absent 00:15 iPhone:present { fhem "set Gesamte_Wohnung off";; fhem "setstate watchdog_Anwesenheit defined";;}
attr watchdog_Anwesenheit regexp1WontReactivate 1


Evtl. kannst du das auch so lösen.
Titel: Aw: Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: Markus Bloch am 27 Januar 2013, 16:06:28
Diese Verzögerung habe ich mit Absicht nicht ins Modul eingebaut, da ich das System später dafür nutzen möchte um beim sofortigen Betreten und verlassen eines Raumes z.B. das Licht auszuschalten usw.

Da währe diese Verzögerung fatal. Ich denke mit dem watchdog kann man da gut leben.
Titel: Aw: Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: MartinMuc am 27 Januar 2013, 17:26:49
Sehr schön schon mal ein Dank von mir.

 das werd ich doch glatt mal testen :) morgen kommt mein raspy dann gehts los, nachdem meine nslu letztes Jahr den geist aufgegeben hat. Jetzt brauch ich nur noch nen passenen bluetooth stick :)
Titel: Aw: Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: ilmtuelp0815 am 27 Januar 2013, 20:02:10
Hi Markus!
Prima Einsatz! Die Vorstellung des Moduls dürfte aber die Nutzer von FRITZ!Boxen und anderen LINUX-Derivaten als Debian in Probleme bringen wenn sie dieses Modul nutzen wollen oder?
Vielleicht kannst du darauf noch einmal genauer eingehen.
Titel: Aw: Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: Markus Bloch am 27 Januar 2013, 22:46:10
Hi,

nein, die Sachen laufen auf allen Systemen. Es wird nur eine Standard-Perl-Umgebung voraussgesetzt.

Angehangen habe ich mal die beiden Perl-Skripte, sowie die Beispiel-Konfiguration.

Ruf beide Programme einfach mal mit --help auf, dann kommt die Usage.

Jenachdem müsste man für die entsprechenden Systeme Init- oder Upstart Skripte schreiben.

Viele Grüße

Markus
Titel: Aw: Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: punker am 28 Januar 2013, 20:10:40
Hi Markus,

hab mal versucht das bei mir einzusetzen, funzt auch soweit, dass in Telnet eingegeben
hcitool name 00:24:BA:8F:11:27 einwandfrei funzt!
Es wird der Name des Handys ausgegeben!

Hab deine Dateien in FHEM installiert, aber da steht immer nur DISCONNECTED!
Eingebunden hab ichs so:
define Milestone PRESENCE 00:24:BA:8F:11:27 60

Sollte doch so gehen oder schnall ich was nicht?
Titel: Aw: Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: Markus Bloch am 28 Januar 2013, 23:34:27
Hallo punker,

ich sehe gerade das ich in den Bildern etwas Mist gemalt habe.

Die Definition erfolgt folgendermaßen:

define iPhone PRESENCE <IP-Adresse:Port> <Bluetooth-Adresse> [ <Timeout in Sekunden> ]

Da aus architekturtechnischen Gründen von FHEM das ausführen des hcitool-Befehls nicht direkt aus FHEM heraus erfolgen kann, gibt es einen presence-Daemon. Dieser stellt die Anwesenheitserkennung für FHEM zur Verfügung.

Bitte lade dir den presenced direkt aus meinem letzten Post herunter (am besten nach /usr/sbin/und starte ihn mit

presenced -v


Sobald du diesen Befehl ausführst, kann sich dein PRESENCE Device Milestone zu 127.0.0.1:5111 verbinden. Also am besten in deiner fhem.cfg folgendes angeben:

define Milestone PRESENCE 127.0.0.1:5111 00:24:BA:8F:11:27 60
Titel: Aw: Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: punker am 29 Januar 2013, 09:56:43
Hi Markus,

Danke für deine Hilfe!

Leider funzt es trotz allem nicht richtig!

Als erstes kommt beim definieren schon diese Fehlermeldung:
wrong syntax: define <name> PRESENCE ip[:port] <bluetooth-address> [ <timeout> ]
nachdem ich die Timeout-Angabe weggelassen hab ließ sich das Gerät definieren! (Halt mit dem 30sek. Standard-Timeout)

Habe jetzt herausgefunden, dass die Änderung des Status offenbar erkannt wird, weil sich unter den Readings die state-Zeit ändert,
wenn ich am Handy Bluetooth ein - oder ausschalte!
Nur steht immer das Wort absent da! Scheint also mehr ein optisches Problem zu sein!
Leider erkennt man das im Floorplan nicht, weil ja immer absent da steht!
Titel: Aw: Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: Markus Bloch am 29 Januar 2013, 18:16:30
Hi,

ja da hattest du recht. Ich benutze das Timeout aktuell nicht ;-)

Anbei die geänderten Versionen für das PRESENCE Modul und den presenced.

Damit sollte es funktionieren.

Viele Grüße

Markus
Titel: Aw: Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: punker am 29 Januar 2013, 19:54:47
Danke für die neuen Versionen!

Aber was ist anders?

FHEM zeigt nach wie vor das Handy als absent, egal ob Bluetooth an oder aus ist!
Titel: Aw: Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: MartinMuc am 29 Januar 2013, 20:01:07
Also bei mir funktionier alles Super, habe es heute eingerichtet.

danke nochmal Markus fürs bereitstellen, ich wollte mir sowas schon fast selber basteln.

@punker läuft der presencd ? Was hast du in der fhem. cfg drin?

Bei mir ist es so eingetragen und funktioniert

[define iPhone PRESENCE 127.0.0.1:5111 xx:xx:xx:xx:xx:xx

define watchdog_Anwesenheit watchdog iPhone:absent 00:15 iPhone:present { fhem "set Gesamte_Wohnung off";; fhem "setstate watchdog_Anwesenheit defined";;}
attr watchdog_Anwesenheit regexp1WontReactivate 1


Ich hab das mal unverändert rein, nachdem mein CUL erst morgen kommt hab ich noch keine funktionalität daimter, aber statuswechsel klappe
Titel: Aw: Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: MartinMuc am 29 Januar 2013, 20:03:27
Und sorry für die Tippfehler, mein ipad ärgert mich ab und an....
Titel: Aw: Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: punker am 29 Januar 2013, 20:10:58
der Dämon läuft natürlich (gestartet mit /usr/sbin/presenced -d)!

Das Gerät in FHEM definiert mit:
define Milestone PRESENCE 127.0.0.1:5111 00:24:BA:8F:11:27

Ich hab ja oben geschrieben, dass offensichtlich erkannt wird wenn ich Bluetooth ein - oder ausschalte!
Logeintrag:

2013.01.29 19:43:39 1: 127.0.0.1:5111 disconnected, waiting to reappear
2013.01.29 19:46:47 1: 127.0.0.1:5111 reappeared (Milestone)

aber in den Readings steht bei STATE immer absent!
Titel: Aw: Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: Markus Bloch am 29 Januar 2013, 21:13:34

Danke für die neuen Versionen!

Aber was ist anders?


Das ich die Fehler die du gesagt hast (der Fehler bei der Angabe des Timeouts im PRESENCE Modul, und das sich der State nicht ändert) gefixet habe,

dazu wahren ein paar kleine Code-Änderungen in der 73_PRESENCE.pm notwendig und im presenced. Installier doch einfach mal die beiden neuen Versionen und probier es aus.

Viele Grüße

Markus
Titel: Aw: Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: punker am 29 Januar 2013, 21:55:50
Ja, tut mir leid, aber bei mir absolut keine Änderung zu vorher!
State immer noch absent!
Egal ob Bluetooth an oder aus!
Titel: Aw: Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: MartinMuc am 29 Januar 2013, 22:05:13
Ich hab jetzt auch das selbe Problem wie punker, bei der erst Einrichtung hatte es noch geklappt und ich hatte regelmässig Events  
Jetzt sieht es folgendermassen aus :

==> /opt/fhem/log/fhem-2013-01.log <==
2013.01.29 22:01:00 1: 127.0.0.1:5111 reappeared (iPhone)

==> /var/log/presenced.log <==
2013-01-29 22:01:00 - new connection from 127.0.0.1
2013-01-29 22:01:00 - received new command from 127.0.0.1: xx:xx:xx:xx:xx:xx|10
2013-01-29 22:01:00 - created thread 1 for processing device xx:xx:xx:xx:xx:xx within 10 seconds for peer 127.0.0.1

fhem> PRESENCE iPhone DISCONNECTED
PRESENCE iPhone CONNECTED
PRESENCE iPhone command_accepted: yes
PRESENCE iPhone absent


Ich habe zum testen extra auf 10 Sekunden gestellt und den abwesend hat er erkannt aber den anwesend Status danach nicht mehr. Es läuft jezt schon 5 Minuten ohne weiteren abruf des Status.

Ich habe auch die neuesten Komponenten installiert vorhin.

Titel: Aw: Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: Lars am 29 Januar 2013, 22:10:55
Hallo Markus,
vielen Dank für diesen tollen Beitrag. Ich werde in den kommenden Tagen ebenfalls deine Programme ausprobieren. Die Nutzung von BT halte ich im Vergleich zu WLAN ebenfalls für effizienter. Einzig mit der Reichweite habe ich ein ernsthaftes Problem. Klar ließe sich in mehreren Räumen ein presenced-pi installieren. Je nach Größe des Wohnbereichs kann das aber auch selbst beim rPi relevant in die (Strom-)Kosten gehen.
Zudem kommen Bereiche wie Garten, Garage und co.
Wie ist das denn bei Bluetooth 4.0 Hardware? Beim iPhone wird das ja ab dem 4S unterstützt. Reicht dann ein BT 4.0 USB Dongle aus um die höhere Reichweite zu nutzen?

Gruß
Lars
Titel: Aw: Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: Markus Bloch am 29 Januar 2013, 22:35:09
@MartinMux und punk:

Ich habe es bei mir gerade extra nochmal getestet. Ich habe mich manuell zum presenced auf port 5111 Verbunden (telnet 127.0.0.1 511) und dort die Bluetooth-Adresse gefolgt von einer Pipe und dem Timeout angegeben:


0C:77:1A:XX:XX:XX|5


wurde sofort als iPhone identifiziert. Eure Beschreibung klingt für mich arg nach einem Tippfehler bei der Bluetooth-Addresse in der FHEM-Definition. Probiert mal bitte wirklich 1-zu-1 die Adresse direkt auf der Shell aus (Copy & Paste):

hcitool name XX:XX:XX:XX:XX:XX

Der presenced macht nämlich genau das und schaut, ob ein Ergebnis zurück kommt (Der Name des Devices). Dies könnt ihr auch in Zeile 312 des Source Codes von presenced (die Version aus dem letzten Post) sehen.

Wenn bei dem manuellen hcitool Befehl keine Ausgabe kommt, konnte das Device nicht abgefragt werden.


@Lars

Da hast du wohl recht. Ich habe bei mir aktuell 2 Raspberrys im Einsatz. Ich bin leider noch nicht unter den glücklichen ein Haus zu besitzen ;-)

Mit Bluetooth 4.0 habe ich mich noch nicht ausreichend beschäftigt. Da gibts auch extra eine Ortungsfunktion auf Basis der Triangulierung eines Bluetooth-Devices in der Wohnung. Theoretisch sollte ein BT Stick ausreichen. Ich persönlich habe auch einen im Einsatz und habe manchmal eben genau diesen Effekt, dass mein iPhone auch durch mehrere Wände damit abgefragt werden kann, aber das ist nur relativ selten.

Viele Grüße

Markus
Titel: Aw: Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: MartinMuc am 29 Januar 2013, 22:37:38
So ich hab mir ein paar Debug ausgaben eingebaut Der presenced liefert korrekte Daten

2013-01-29 22:33:02 - hcitool start
2013-01-29 22:33:02 - hcitool end
2013-01-29 22:33:02 - Rückgabe present;MartinD
2013-01-29 22:33:32 - hcitool start
2013-01-29 22:33:34 - hcitool end
2013-01-29 22:33:34 - Rückgabe present;MartinD
2013-01-29 22:34:04 - hcitool start
2013-01-29 22:34:09 - hcitool end
2013-01-29 22:34:09 - Rückgabe absence


Bei FHEM kommt aber nur die absence Rückgabe an

PRESENCE iPhone command_accepted: yes
PRESENCE iPhone absent
PRESENCE iPhone absent
PRESENCE iPhone absent

Problem ist meiner Meinung nach diese Abfrage hier :

 elsif($buf =~ /present;(.+?);(.+?)$/)


Da diese einen Raum erwartet der aber nicht mitgeliefert wird

Titel: Aw: Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: Lars am 29 Januar 2013, 22:39:58
Markus, wenn man einmal Blut geleckt hat... Habe mir gerade einen BT USB Dongle bestellt der Linux Treiber hat, BT 4.0 LE unterstützt und zu dem es eine bestätigte Lauffähigkeit auf einem rPi gibt. Leider nur aus den USA, Versand dauert dann wohl etwas.
Ich werde berichten.

Für alle die es interessiert, hier der Link:
http://www.ioncannon.net/linux/1570/bluetooth-4-0-le-on-raspberry-pi-with-bluez-5-x/ (//www.ioncannon.net/linux/1570/bluetooth-4-0-le-on-raspberry-pi-with-bluez-5-x/)

Gruß
Lars
Titel: Aw: Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: MartinMuc am 29 Januar 2013, 22:45:24
Ok also das Problem ist wenn man lokal arbeitet, das aus presencd kein Raum mitgeliefert wird :


in der 73_presence.pm habe ich jetzt testweise die Zeile
elsif($buf =~ /present;(.+?);(.+?)$/)

in

elsif($buf =~ /present;(.+?)$/)

geändert und schon funktioniert alles wie es soll.

Die korrekte Variante wäre aber wohl in presenced die Zeile

    $write_handle->send("present;$return\n");

in

   $write_handle->send("present;$return;raumname\n");

Titel: Aw: Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: Markus Bloch am 29 Januar 2013, 22:45:36
Vielen Dank für den Hinweis, ich bin soeben drann das ordentlich zu korrigieren, so das es sowohl für presenced als auch für collectord funktioniert.

Das Modul ist noch nicht wirklich ausgereift und hat bisher das nötigste nur.

Neues File gibts gleich ;-)
Titel: Aw: Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: MartinMuc am 29 Januar 2013, 22:50:08
Zusammen bekommen wir es schon komplett rund und flexibel ;)

Ich werde es jedenfalls ausführlich testen und helfen wo ich kann...
Titel: Aw: Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: Markus Bloch am 29 Januar 2013, 22:51:00
Zitat von: Lars schrieb am Di, 29 Januar 2013 22:39Markus, wenn man einmal Blut geleckt hat... Habe mir gerade einen BT USB Dongle bestellt der Linux Treiber hat, BT 4.0 LE unterstützt und zu dem es eine bestätigte Lauffähigkeit auf einem rPi gibt. Leider nur aus den USA, Versand dauert dann wohl etwas.
Ich werde berichten.

Für alle die es interessiert, hier der Link:
http://www.ioncannon.net/linux/1570/bluetooth-4-0-le-on-raspberry-pi-with-bluez-5-x/

Gruß
Lars
Du machst dirs ja kompliziert. :-D Ich bin einfach zum nächsten Satan gegangen und hab mir einen Mini USB-Dongle für Bluetooth geholt. Sowas in der Art: http://www.amazon.de/Hama-Version-4-0-Bluetooth-USB-Adapter-inkl/dp/B0090VYEZ2/ref=sr_1_1?ie=UTF8&qid=1359496211&sr=8-1

Funktioniert super.

Viele Grüße

Markus
Titel: Aw: Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: Markus Bloch am 29 Januar 2013, 22:59:50
Zitat von: MartinMuc schrieb am Di, 29 Januar 2013 22:50Zusammen bekommen wir es schon komplett rund und flexibel ;)

Ich werde es jedenfalls ausführlich testen und helfen wo ich kann...

Vielen Dank, so jetzt aber, aller guten Dinge sind 3, hier jetzt der 3. Anlauf.

Der Interesse halber sieht der Block nun so aus:


 elsif($buf =~ /present;(.+?)$/)
    {
        readingsBulkUpdate($hash, "state", "present");
        readingsBulkUpdate($hash, "device_name", $1);

        if($1 =~ /^(.*);(.+)$/)
        {
            readingsBulkUpdate($hash, "room", $2);
            readingsBulkUpdate($hash, "device_name", $1);
        }
        else
        {
            readingsBulkUpdate($hash, "device_name", $1);
        }


    }



Hintergrund des ganzen: Wenn man das PRESENCE Modul mit dem collectord verwendet (was ich aktuell ausschlieslich mache) gibt der collectord bei der present-Meldung noch hinten drann den Raum mit wo er das Device gefunden hat. Das macht der presenced so an sich natürlich nicht, da es sich hier ja eh nur um eine Instanz handelt.

Nun muss es aber klappen.

Viele Grüße

Markus
Titel: Aw: Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: Lars am 29 Januar 2013, 23:01:10
Markus, und damit geht 4.0 Low Energy? :-)
Hach, manchmal wenn man im Rausch ist kann man einfach nicht stoppen...
Titel: Aw: Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: Markus Bloch am 29 Januar 2013, 23:03:19
Zitat von: Lars schrieb am Di, 29 Januar 2013 23:01Markus, und damit geht 4.0 Low Energy? :-)
Hach, manchmal wenn man im Rausch ist kann man einfach nicht stoppen...

Zumindest steht in der Produktbeschreibung "besonders niedriger Energieverbrauch". Aber das ist ja auch nix halbes und nix ganzes ;-)
Titel: Aw: Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: punker am 29 Januar 2013, 23:06:18
Zitat von: MartinMuc schrieb am Di, 29 Januar 2013 22:45Ok also das Problem ist wenn man lokal arbeitet, das aus presencd kein Raum mitgeliefert wird :


in der 73_presence.pm habe ich jetzt testweise die Zeile
elsif($buf =~ /present;(.+?);(.+?)$/)

in

elsif($buf =~ /present;(.+?)$/)

geändert und schon funktioniert alles wie es soll.

Genau das wars!!!
Jetzt funzt es so wies soll!

Vielen Dank!
Titel: Aw: Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: punker am 29 Januar 2013, 23:13:33
@Markus Bloch

Hab jetzt dein 3.Modul getestet und nu funzt es so wie es soll!

Danke
Titel: Aw: Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: Markus Bloch am 29 Januar 2013, 23:19:03
Zitat von: punker schrieb am Di, 29 Januar 2013 23:13@Markus Bloch

Hab jetzt dein 3.Modul getestet und nu funzt es so wie es soll!

Danke


So sollte es sein, das freut mich :-)

Viele Grüße

Markus
Titel: Aw: Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: Markus Bloch am 29 Januar 2013, 23:30:18
Zitat von: MartinMuc schrieb am Di, 29 Januar 2013 20:01Also bei mir funktionier alles Super, habe es heute eingerichtet.

danke nochmal Markus fürs bereitstellen, ich wollte mir sowas schon fast selber basteln.

@punker läuft der presencd ? Was hast du in der fhem. cfg drin?

Bei mir ist es so eingetragen und funktioniert

[define iPhone PRESENCE 127.0.0.1:5111 xx:xx:xx:xx:xx:xx

define watchdog_Anwesenheit watchdog iPhone:absent 00:15 iPhone:present { fhem "set Gesamte_Wohnung off";; fhem "setstate watchdog_Anwesenheit defined";;}
attr watchdog_Anwesenheit regexp1WontReactivate 1


Ich hab das mal unverändert rein, nachdem mein CUL erst morgen kommt hab ich noch keine funktionalität daimter, aber statuswechsel klappe

Hallo Martin,

bitte beachte, dass der Befehl "set Gesamte_Wohnung off" bei dir nicht zwangsweise funktioniert. Ich habe bei mir ein structure Objekt angelegt welches Gesamte_Wohnung heist und alle Stecker und Lichter in der Wohnung mit einmal zu schalten. Evtl. hast du mehr geräte oder ein ähnliches Structure Objekt was nur anders heist.

Nicht das du dich dann wunderst, warum der watchdog nicht funktioniert ;-)

Viele Grüße

Markus
Titel: Aw: Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: MartinMuc am 29 Januar 2013, 23:32:41
Hi Markus,

Ist klar ;) wie gesagt morgen word das bischen was ich aktuell da habe eingerichtet, sollte Hermes den CUL bringen ;) Da wird dann alles angepaßt..

Jetzt ist es nur darum gegangen den bluetooth stick ans laufen zu bringen :)
Titel: Aw: Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: justme1968 am 01 Februar 2013, 15:09:53
hallo markus,

mein dongle ist eben gekommen und der erste versuch mit dem presenced schaut schon sehr gut aus. wirklich klasse. auch wenn ich noch schnell eine andere perl version wegen der threads installieren und die kernel module für meine synology diskstation kompilieren musste. :)

hast du eigentlich mal probiert ob sich mit den rssi oder lq werten etwas machen läßt?  vielleicht kann man da ja auch schon ein wenig triangulieren oder zumindest die anwesenheit genauer auf einen raum einschränken. wenn ich das paaren hin bekomme versuche ich es mal.

gruss
  andre
Titel: Aw: Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: Markus Bloch am 01 Februar 2013, 16:01:18
Hi Andre,

das hört sich doch super an. Um den RSSI Wert ermitteln zu können muss man sich mit dem Bluetooth-Device direkt verbinden. Dann kann man den Empfangspegel messen. Dies mach ich aktuell nicht.

Doch selbst wenn man die RSSI Werte hat ist die Frage wie man die Orstangabe in der Wohnung durchführt (in Meter,...) und wie man definiert wo jedes Raspberry mit presenced in der Wohnung genau steht.

Um dein Device zu pairen, versuch mal auf der Konsole:

echo "0000" | bluez-simple-agent hci0 00:12:A1:90:39:A9

Viele Grüße

Markus
Titel: Aw: Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: justme1968 am 01 Februar 2013, 17:13:25
hallo markus,

den simple agent hab ich noch nicht zum laufen bekommen. inzwischen habe ich aber rausgefunden das das pairen nicht nötig ist um die rssi wert zu ermitteln. ein hcitool cc xx:xx:xx:xx:xx:xx und direkt danach ein hcitool rssi xx:xx:xx:xx:xx:xx gibt den wert zurück. ich denke ich werde damit noch ein wenig experimentieren um mit einem schwellwert für die signalstärke die erkennung wirklich auf ein Zimmer zu beschränken. mein haus ist in holzständer bauweise und blutooth kommt deutlich weiter als nur ein Zimmer :).

noch zwei fragen:
- hat es einen grund das du info verwendest und nicht nur name. das sollte noch einen tick schneller gehen.
- presenced ist mir inzwischen zwei mal hängen geblieben. erst nach einem 'hciconfig hci0 down' und 'hciconfig hci0 up' gingen die anfragen wieder. ist dir das schon mal passiert ?

gruss
  andre
Titel: Aw: Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: Markus Bloch am 01 Februar 2013, 17:18:21
Hallo Andre,

in der aktuellen Fassung (die letzte Version die ich hier mal geposttet hatte) wird die Abfrage via "hcitool name" XX:XX:XX:XX:XX:XX" durchgeführt.

Inwiefern ist presenced hängen geblieben? Woran hast du das erkannt? In dem Falle, dass der hcitool Befehl länger brauch, bleibt dabei eben nur ein Thread stehen, solange bis der Befehl etwas zurückgibt, das ganze Programm sollte das aber nicht beeinflussen, da es durch Threads entkoppelt ist.

Einen solchen Fall hatte ich aber selber noch nicht gehabt.

Viele Grüße

Markus
Titel: Aw: Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: justme1968 am 01 Februar 2013, 18:01:10
hallo markus,

stimmt. ich hatte noch eine ältere version.

weder die manuelle telnetverbindung hat noch reagiert noch ließ sich der daemon mit ctr-c beenden. ich verfolge mal ob das wieder passiert.

und noch was: das fhem modul setzt den device namen immer zwei mal. beim überfliegen würde ich denken die zeile 174 ist überflüssig. der name wird ja im if und im else gesetzt.

gruss
  andre
Titel: Aw: Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: Markus Bloch am 01 Februar 2013, 18:28:45
Zitat von: justme1968 schrieb am Fr, 01 Februar 2013 18:01und noch was: das fhem modul setzt den device namen immer zwei mal. beim überfliegen würde ich denken die zeile 174 ist überflüssig. der name wird ja im if und im else gesetzt.

Vielen Dank für den Hinweis, hab ich geändert. Das Resultat erhältst du in den kommenden Tagen mit dem initialen Release innerhalb von FHEM.

Viele Grüße

Markus
Titel: Aw: Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: Markus Bloch am 01 Februar 2013, 20:24:26
Hallo zusammen,

ich hab soeben das Modul 73_PRESENCE.pm ins SVN eingecheckt. Ab morgen ist es via "update"-Befehl verfügbar. Allerdings hat sich hier die Definition ein wenig verändert.

Aktuell sind folgende Defines möglich


# Anwesenheitserkennung via PING
define <name> PRESENCE lan-ping 192.168.0.3 30              


# Anwesenheitserkennung via lokale Bluetooth Abfrage via "hcitool name XX:XX:XX:XX:XX:XX"
define <name> PRESENCE local-bluetooth A4:F6:BD:C9:20:15 30


# Anwesenheitserkennung via Bluetooth Abfrage durch presenced im Netzwerk (via "hcitool name XX:XX:XX:XX:XX:XX")
define <name> PRESENCE lan-bluetooth A4:F6:BD:C9:20:15 192.168.0.5:5111 30


# Anwesenheitserkennung via Bluetooth Abfrage durch collectord von mehreren presenced Instanzen im Netzwerk (via "hcitool name XX:XX:XX:XX:XX:XX")
define <name> PRESENCE lan-bluetooth A4:F6:BD:C9:20:15 192.168.0.3:5222 30



Bitte passt eure Definitionen nach dem update entsprechend an. Alle Varianten habe ich getestet und verifiziert.

Viele Grüße und viel Spaß

Markus
Titel: Aw: Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: justme1968 am 01 Februar 2013, 20:41:41
hallo markus,

beim überdenken der neuen syntax ist mir aufgefallen das es so nicht wirklich möglich ist ein gerät bzw eine person über unterschiedliche wege zu überwachen. wie schon angesprochen würde ich gerne mein iphone wenn es im haus ist ganz allgemein per wlan überwachen und wenn es in einem bestimmten zimmer ist per bluetooth.

ich weiss es ist kurz vor knapp... aber ich denke es wäre sinnvoll die syntax noch mal zu überdenken und einen weg zu finden einem gerät mehrere überwachungsmethoden zuzuweisen.

gruss
  andre
Titel: Aw: Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: Markus Bloch am 01 Februar 2013, 21:00:11
Hallo Andre,

tut mir leid, aber das währen jetzt zu große Änderungen, als das ich das bis morgen schaffen würde.

Allerdings würde ich in deinem Falle eh vorschlagen 2 Definitionen zu machen.


# von deinem FHEM Server aus via PING in der ganzen Wohnung
define <name> PRESENCE lan-ping 192.168.0.3 30  


define <name>_Arbeitszimmer PRESENCE lan-bluetooth A4:F6:BD:C9:20:15 192.168.0.5:5111 30
attr <name> room Arbeitszimmer


Ist auch einfacher dies vom Code her zu verarbeiten. Denn durch die Vermischung von Wohnung und Arbeitszimmer musst du ja einmal angeben dass, die Anwesenheit im Arbeitszimmer vor der Anwesenheit in der Wohnung gilt, damit du das ja quasi auch unterscheiden kannst. Generell bin ich kein Fan von langen Einzeilern in der Konfiguration. Du hast 2 Zeilen und kannst es einfacher mit notify's verarbeiten. etc.

Tut mir leid, aber dadurch würde das Modul sehr viel komplexer in der Definition werden, was ich gerne vermeiden möchte. Auch wenn man das über Attribute machen würde, währe das genauso unübersichtlich.

Ich hoffe du verstehst das.

Viele Grüße

Markus
Titel: Aw: Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: justme1968 am 01 Februar 2013, 21:58:36
hallo markus,

natürlich verstehe ich das. es ist dein modul.

aber das argument mir den langen einzeilern greift nicht. die komplexität wird nur woanders hin verlagert. und manches wird sehr schwer lösbar. die probleme fangen schon an das die geräte ja unterschiedlichen heißen und dann im notiy oder an jeder stelle an der der status abgefragt wird verknüpft werden müßen. das ist wenn es mehr als ein gerät ist und mehr als ein oder zwei präsenz arten sehr sehr viel schlechter handhabbar als eine lange konfigurationszeile. bei zwei oder drei geräte mal zwei oder drei stockwerke mit bluetooth und jeweils ein mal wlan ist die eine lange Zeile nichts mehr gegenüber der komplexität das hinterher wieder unter einen hut zu bekommen.

eine möglichkeit wäre eine structure aber da kann ich nur den status auswerten und zusammenfassen. den raum nicht.

der raum macht übrigens noch ein anderes problem. das reading wird nicht gelöscht oder zurückgesetzt. d.h. ich muss nicht nur den anwesend/abwesend status auswerten sondern noch den zeitpunkt der einzelen readings und dann noch mit dem zeitpunkt des readings für den raum vergleichen. und das an jeder stelle.

aber genug der vielen worte. dein modul ist ja erst mal so eingecheckt. es wäre aber schön die offenen punkte nicht einfach zu vergessen sondern in einer späteren version wieder aufzugreifen.

gruss
  andre
Titel: Aw: Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: Markus Bloch am 01 Februar 2013, 22:20:38
Hallo Andre,

werd ich mir im Hinterkopf bewahren.

Als kleiner Tip:

für solche großen Setups wo mehrere Stockwerke usw. vorhanden sind, ist der collectord ja gedacht. Dort kannst du dann sämtliche Räume definieren in denen ein Raspberry Pi oder ähnliches mit einem laufenden presenced steht (Modus: lan-bluetooth). Dieser aggregiert dann alles zusammen zu einem Ergebnis und sagt dir in welchen Raum (evtl. ink. Stockwerksbezeichnung) sich dein Gerät aufhält.

Was man machen könnte ist, das man unter den vorhanden Modi's mehrere koppeln kann, allerdings ist es FHEM-architekturbedingt, das nur eine Verbindung zu einem presenced oder collectord aufgenommen werden kann. D.h. man könnte mehrere LAN-Pings durchführen (um evtl. mehrere Personen zusammenzufassen), genauso könnte man auch mehrere lokale Bluetooth-Pings durchführen (um evtl. mehrere Personen zusammenzufassen).

Aber es ist nicht möglich mehrere einzelne presenced Verbindungen aufzubauen, daher habe ich den collectord geschrieben. Mit dem kann man dann mehrere Räume einzeln überwachen und zu einem Ergebnis zusammenführen.

Viele Grüße

Markus
Titel: Aw: Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: MartinMuc am 02 Februar 2013, 12:41:05
funktioniert klasse in den lokalen Versionen :) Danke Markus
Titel: Aw: Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: Markus Bloch am 02 Februar 2013, 13:41:48
Vielen Dank.

Ich hab soeben den Wiki Artikel Anwesenheitserkennung (//www.fhemwiki.de/wiki/Anwesenheitserkennung) verfasst.

Evtl. wollt ihr hier die ein oder anderen Sachen ergänzen.

Viele Grüße

Markus
Titel: Aw: Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: IROC_KNX am 02 Februar 2013, 20:07:38
Hallo Markus,

die Abwesenheitserkennung funktioniert wunderbar.
Ich habe hierzu allerdings noch zwei Fragen.
1. MUSS ich bei define Handy immer die IP Adresse angeben, oder funktioniert das auch mit der MAC Adresse des Handys?

2. Ich möchte gern, dass zwei oder drei Handys überwacht werden.
   Kann ich diese in die Befehlzeile irgendwie aufnehmen (durch Komma getrennt etc.)
   oder muss ich den kompletten watchdog Befehl mehrmals darstellen/schreiben?

Gruß
Fabi
Titel: Aw: Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: MartinMuc am 02 Februar 2013, 20:10:04
macadresse geht nicht aber du kannst, wenn es dein Router unterstüzt den Namen des Handys nehmen.

Mein iPhone heist z.B iPhone. Und ich habe statt der ip adresse nur iPhone drin stehen, das geht mit meiner Fritzbox super

Titel: Aw: Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: IROC_KNX am 02 Februar 2013, 20:30:03
Gute Idee mit der Namensvergebung.
Jetzt benötige ich nur noch einen Tip für meine zweite Frage
Titel: Aw: Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: Markus Bloch am 02 Februar 2013, 21:36:01
Zitat von: IROC_KNX schrieb am Sa, 02 Februar 2013 20:07Hallo Markus,

2. Ich möchte gern, dass zwei oder drei Handys überwacht werden.
   Kann ich diese in die Befehlzeile irgendwie aufnehmen (durch Komma getrennt etc.)
   oder muss ich den kompletten watchdog Befehl mehrmals darstellen/schreiben?

Hallo Fabi,

aktuell musst du den Befehl mehrmals darstellen, es ist bisher noch nicht möglich mehrere Devices anzugeben.

Viele Grüße

Markus
Titel: Aw: Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: Lars am 20 Februar 2013, 21:14:02
Hallo Markus,
der BT4.0 Stick ist angekommen und nach einem ersten Vergleichstest zwischen iPhone 4S und iPhone 5 gehe ich davon aus, dass die von Dir genutzte Mimik mit hcitool name auch im LE Modus funktioniert. Mit dem iPhone 5 bekomme ich eine deutlich höhere Reichweite.
Leider funktioniert das PRESENCE Modul bei mir aber noch nicht. Ich habe es per updatefhem installiert. Bluez 5.2 ist ebenfalls installiert, auf der Konsole kann ich hcitool ohne Fehler nutzen. Ich habe ein Gerät per local-bluetooth definiert. Beim Start von FHEM wird folgendes ins Log geschrieben:

>>2013.02.20 20:44:39 2: PRESENCE: error while processing device lsc - no hcitool                               binary found. Please check that the bluez-package is properly installed


Wenn ich das richtig sehe wird dieser Fehlermeldung nur ausgegeben, wenn "which hcitool" nichts findet.
Wenn ich diesen Befehl auf der Komandozeile ausführe erhalte ich den korrekten Pfad zum binary.

>>/usr/local/bin/hcitool

Any ideas?

Gruß
Lars
Titel: Aw: Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: Lars am 20 Februar 2013, 22:57:58
Weitere Erkenntnis: Weder qx, noch "Backticks" liefert mir einen Output. Der Befehl wird zwar ausgeführt, die Rückgabe des Befehls ist aber immer "". Scheint also ein Problem von meiner Perl Installation oder dem rPi zu sein.
Merkwürdiger Fehler.
Titel: Aw: Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: Markus Bloch am 20 Februar 2013, 23:06:36
Hallo Lars,

konnte ich bei mir ebenfalls nachstellen. Ich hab die hcitool Erkennung etwas geändert. Bitte führ morgen ein update durch und starte FHEM einmal neu. Dann sollte es laufen.

Viele Grüße

Markus
Titel: Aw: Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: Lars am 20 Februar 2013, 23:45:23
Hallo Markus,

danke für Deine schnelle Reaktion. Hast du auch den Aufruf vom hcitool geändert? Wenn ich die Erkennung umgehe scheitert das Programm ein paar Zeilen später ebenfalls. ;-)

Gruß
Lars
Titel: Aw: Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: Markus Bloch am 21 Februar 2013, 00:01:43
Hallo Lars,

wo genau scheitert es denn? Hast du eine Fehlermeldung im Log?

Gruß
Markus
Titel: Aw: Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: Lars am 21 Februar 2013, 00:21:48
$devname = qx(hcitool name $device);

$devname ist immer leer. Erst dachte ich, dass qx() einfach nur nicht den Output returniert. Mittlerweile bin ich mir da nicht so sicher. Habe schon absolute Pfade verwendet um die Umgebungsvariablen auszuschließen...
Titel: Aw: Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: Lars am 21 Februar 2013, 13:18:04
Hi Markus,
Update durchgeführt, nach dem Restart wird folgendes ausgegeben:
2013.02.21 13:16:32 0: Server started with 210 defined entities (version Fhem 5.3 (DEVELOPMENT), $Id: fhem.pl 2752 2013-02-17 13:55:05Z rudolfkoenig $, pid 11197)
2013.02.21 13:16:32 3: PRESENCE (lsc): 'which hcitool' returns:
2013.02.21 13:16:36 3: PRESENCE_ProcessLocalScan: lsc|0|error|no hcitool binary found. Please check that the bluez-package is properly installed
2013.02.21 13:16:36 3: PRESENCE: error while processing device lsc - no hcitool binary found. Please check that the bluez-package is properly installed


Gruß
Lars
Titel: Aw: Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: Markus Bloch am 21 Februar 2013, 13:38:07
Hi Lars,

hasst du FHEM zufällig unter einen eigenen Usernamen laufen? Denn die Bluetooth-Erkennung funktioniert nur, wenn FHEM unter root läuft. Laut dem log, hat "which hcitool" kein Ergebnis geliefert, was bedeutet, dass der User das Binary nicht zur Verfügung hat bzw. nicht root-Rechte hat.

Viele Grüße

Markus
Titel: Aw: Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: Lars am 21 Februar 2013, 15:10:00
jepp, FHEM läuft unter dem User fhem.
Mit diesem User kann ich jedoch auf der Kommandozeile beide Befehle erfolgreich ausführen.
Ich schau mal wie es aussieht, wenn ich fhem unter root Rechten laufen lasse. So prall wäre die Lösung aber nicht... ;-)

Gruß
Lars
Titel: Aw: Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: Markus Bloch am 21 Februar 2013, 16:11:17
Hallo Lars,

wenn du als User FHEM den Befehl auf der Shell manuell ausführen kannst, ist es möglich, dass es mit FHEM nicht funktioniert, da hier der Pfad "/usr/local/bin" nicht in der PATH-Variable standardmäßig drinn steht. Hier könnte man folgendes Versuchen:

Erzeugen eines Symlinks, welcher hcitool unter /usr/bin bereitstellt.
# ln -s /usr/local/bin/hcitool /usr/bin/hcitool

Dann sollte es auch klappen.

Viele Grüße

Markus
Titel: Aw: Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: Lars am 22 Februar 2013, 00:23:40
Hi Markus,
genau das war es. Vielen Dank für Deine Hilfe!
Ich bastel gerade noch an einer Toleranz Mimik damit nicht bei jeder fehlgeschlagener Erkennung von einer Abwesenheit ausgegangen wird.
In einem Dummy wird meinen Status übernommen und erst wenn x-Mal PRESENCE einen anderen Status erkannt hat wird der Dummy nachgezogen. Vielleicht auch eine Idee für Dein Modul?
Der BT 4.0 Stick aus den USA funktioniert übrigens prima mit dem iPhone 5. :-)

Gruß
Lars
Titel: Aw: Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: Markus Bloch am 24 Februar 2013, 16:25:59
Hallo Lars,

genau für diesen Fall gibt es ja den watchdog in FHEM. Ein Beispiel findest du im Wiki-Artikel zu Anwesenheitserkennung:

http://www.fhemwiki.de/wiki/Anwesenheitserkennung#Abschalten_aller_Verbraucher_.28Licht.2C_Musikanlage.29_beim_Verlassen_der_Wohnung (//www.fhemwiki.de/wiki/Anwesenheitserkennung#Abschalten_aller_Verbraucher_.28Licht.2C_Musikanlage.29_beim_Verlassen_der_Wohnung)

Viele Grüße

Markus
Titel: Antw:Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: Markus am 09 Februar 2014, 19:21:53
Ich hab mir zwei Raspberry Gekauft und möchte Anwesenheitserkennung über LAN Bluetooth Realisieren leider hab ich problemme dabei den colector zu Installieren.


pi@Agent-Bad ~ $ sudo update-rc.d presenced defaults
update-rc.d: using dependency based boot sequencing
update-rc.d: error: unable to read /etc/init.d/presenced


pi@Agent-Bad ~ $ sudo update-rc.d collectord defaults
update-rc.d: using dependency based boot sequencing
update-rc.d: error: unable to read /etc/init.d/collectord



und für die init.d bekomme ich keine Schreibrechte:-(
ich verwende putty und winSCP
die Lokale Bluetooth Erkennung Funktioniert
meine .cfg schaut so aus

define Markus_Handy PRESENCE local-bluetooth E8:99:C4:FF:A7:1B 10 10
attr Markus_Handy devStateIcon present:power-green absent:power-red
attr Markus_Handy room Anwesend
define Markus_Handy_Bad PRESENCE lan-bluetooth E8:99:C4:FF:A7:1B 192.168.1.17:5111
attr Markus_Handy_Bad room Anwesend

define Markus dummy
attr Markus event-on-change-reading .*
attr Markus group Personen
attr Markus room Anwesend
define FileLog_Markus FileLog ./log/Markus-%Y.log Markus
attr FileLog_Markus logtype text
attr FileLog_Markus room Logs


define Markus_Daheim notify Markus_Handy:present {\
fhem ( "set Markus present ;; delete Markus_Weg ;; define Markus_Weg at +00:04:00 set Markus absent")}

define streamradio StreamRadio /opt/fhem/cfg/WebStreams.txt
attr streamradio room Multimedia
attr streamradio telnetport 7072
attr streamradio volume_command amixer cset numid=1 -- %s%%


define Agent_Bad PRESENCE lan-bluetooth 00:15:83:15:A3:10
attr Agent_Bad room Anwesend


Gruß Markus
Titel: Antw:Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: Markus Bloch am 10 Februar 2014, 23:08:22
Hallo Markus,

wie genau hast du denn collectord und presenced installiert?

Hast du die deb-Pakete verwendet?

Gruß
Markus ;-)
Titel: Antw:Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: Markus am 11 Februar 2014, 13:15:28
Ich hab ihn Putty diese Befehle nach einandereingegeben

sudo wget http://svn.code.sf.net/p/fhem/code/trunk/fhem/contrib/PRESENCE/deb/presenced-rpi-1.3.deb
sudo wget http://svn.code.sf.net/p/fhem/code/trunk/fhem/contrib/PRESENCE/deb/collectord-1.4.deb

pi@Agent-Bad ~ $ sudo wget http://svn.code.sf.net/p/fhem/code/trunk/fhem/contrib/PRESENCE/deb/presenced-rpi-1.3.deb
--2014-02-11 13:00:56--  http://svn.code.sf.net/p/fhem/code/trunk/fhem/contrib/PRESENCE/deb/presenced-rpi-1.3.deb
Resolving svn.code.sf.net (svn.code.sf.net)... 216.34.181.157
Connecting to svn.code.sf.net (svn.code.sf.net)|216.34.181.157|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 6278 (6.1K) [application/octet-stream]
Saving to: `presenced-rpi-1.3.deb.1'

100%[======================================>] 6,278       --.-K/s   in 0s

2014-02-11 13:00:56 (29.5 MB/s) - `presenced-rpi-1.3.deb.1' saved [6278/6278]

pi@Agent-Bad ~ $ sudo wget http://svn.code.sf.net/p/fhem/code/trunk/fhem/contrib/PRESENCE/deb/collectord-1.4.deb
--2014-02-11 13:01:21--  http://svn.code.sf.net/p/fhem/code/trunk/fhem/contrib/PRESENCE/deb/collectord-1.4.deb
Resolving svn.code.sf.net (svn.code.sf.net)... 216.34.181.157
Connecting to svn.code.sf.net (svn.code.sf.net)|216.34.181.157|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 9274 (9.1K) [application/octet-stream]
Saving to: `collectord-1.4.deb.3'

100%[======================================>] 9,274       --.-K/s   in 0.001s

2014-02-11 13:01:21 (12.5 MB/s) - `collectord-1.4.deb.3' saved [9274/9274]

pi@Agent-Bad ~ $


dann hab ich unter winSCP nach dem colektor unter /var/run/collectord.pid) gesucht hier ist er aber nicht vorhanden.

dann hab ich noch diese Befehle eingegeben aber auch ohne Erfolg.

sudo update-rc.d presenced defaults
sudo update-rc.d collectord defaults

pi@Agent-Bad ~ $ sudo update-rc.d presenced defaults
update-rc.d: using dependency based boot sequencing
update-rc.d: error: unable to read /etc/init.d/presenced


pi@Agent-Bad ~ $ sudo update-rc.d collectord defaults
update-rc.d: using dependency based boot sequencing
update-rc.d: error: unable to read /etc/init.d/collectord


das Ganze habe ich auf dem Raspberry unter standard Benutzernahmen pi gemacht

Gruß Markus
Titel: Antw:Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: Markus Bloch am 11 Februar 2014, 16:06:06
Hallo Markus,

du hast die .deb-Pakete heruntergeladen. Das ist soweit richtig.

Allerdings musst du die auch installieren, bevor du diese benutzen kannst.

also:

pi@Agent-Bad ~ $ sudo dpkg -i presenced-rpi-1.3.deb

und

pi@Agent-Bad ~ $ sudo dpkg -i collectord-1.4.deb

Dann werden die Dienste jeweils installiert und gestartet.

Die entsprechenden Logfiles werden dann unter /var/log/ erzeugt.

Viele Grüße

Markus
Titel: Antw:Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: Markus am 13 Februar 2014, 01:43:23
Danke Markus das war´s

Allerdings hatte ich noch ein Problem beim Update.

sudo update-rc.d presenced defaults

sudo update-rc.d collectord defaults


Fehler:nsserv: warning: script 'mathkernel' missing LSB tags and overrides

Hier die Lösung...

sudo nano /etc/init.d/mathkernel

unter
#!/bin/sh

ergänzen:

### BEGIN INIT INFO
# Provides:          mathkernel
# Required-Start:    $local_fs
# Required-Stop:     $local_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: mathkernel
### END INIT INFO


Speichern
und dann klappt auch das Update

sudo update-rc.d presenced defaults

sudo update-rc.d collectord defaults


Gruß Markus
Titel: Antw:Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: Markus am 20 Februar 2014, 01:24:22
Hallo Markus

Ich hab da noch ein Problem.
Wenn mein Handy länger absent ist bleibt es auch Absent erst wenn ich den raspberry neu starte Funktioniert es wieder,
bis zum nächsten längeren Absent.

Mit meiner Freisprech Einrichtung verbindet sich das Handy allerdings sofort

Gruß Markus

edit:
Bluetooth ist auch auf der Konsole über PuTTY nicht verfügbar

sudo /etc/init.d/bluetooth restart
sudo service bluetooth restart

aktivieren Bluetooth auch nicht
nur
sudo restart

aktiviert Bluetooth wieder

Hat dazu jemand eine Idee?  :'(
Titel: Antw:Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: Markus Bloch am 16 März 2014, 14:52:56
Hallo Markus,

ein solches Phänomen ist mir nicht bekannt.  Was ich mit der Zeit festgestellt habe, ist, dass der Bluetooth-Daemon so nach ca. 1,5 Monate durchgängiger Anwesenheitserkennung die arbeit einstellt und nix mehr macht. Da hat bei mir aber immer ein /etc/init.d/bluetooth restart geholfen, weshalb ich das via crontab einmal im Monat automatisch durchführen lasse.

wie sieht denn die Ausgabe auf der Konsole aus, wenn du "hcitool name [Bluetooth-Adresse]" ausführst?

Danke
Gruß
Markus
Titel: Antw:Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: Markus am 20 März 2014, 12:29:15
Danke für deine Geduld...
Hier die Ausgabe der Konsole, und nach Restart Funktionierte es wieder einwandfrei...


Gruss Markus

pi@Agent-Bad ~ $ hcitool name E8:99:C4:FF:A7:1B
Device is not available.
pi@Agent-Bad ~ $ hcitool name E8:99:C4:FF:A7:1B
Device is not available.
pi@Agent-Bad ~ $ sudo /etc/init.d/bluetooth restart
[ ok ] Stopping bluetooth: rfcomm /usr/sbin/bluetoothd.
[ ok ] Starting bluetooth: bluetoothd rfcomm.
pi@Agent-Bad ~ $ hcitool name E8:99:C4:FF:A7:1B
Device is not available.
pi@Agent-Bad ~ $ hcitool name E8:99:C4:FF:A7:1B
Device is not available.
pi@Agent-Bad ~ $ hcitool scan
Device is not available: No such device
pi@Agent-Bad ~ $ sudo service bluetooth restart
[ ok ] Stopping bluetooth: rfcomm /usr/sbin/bluetoothd.
[ ok ] Starting bluetooth: bluetoothd rfcomm.
pi@Agent-Bad ~ $ hcitool name E8:99:C4:FF:A7:1B
Device is not available.
pi@Agent-Bad ~ $ hcitool name E8:99:C4:FF:A7:1B
Device is not available.
pi@Agent-Bad ~ $ hcitool name E8:99:C4:FF:A7:1B
Device is not available.
pi@Agent-Bad ~ $ hcitool name E8:99:C4:FF:A7:1B
Device is not available.
pi@Agent-Bad ~ $ hcitool scan
Device is not available: No such device
pi@Agent-Bad ~ $ hcitool name E8:99:C4:FF:A7:1B
Device is not available.
Titel: Antw:Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: FHEM_Seb am 04 März 2015, 21:00:53
Hallo Markus,

erstmal vielen dank für Deine Beschreibung, welche schon mal sehr nützlich ist.

Ich brauche allerdings vorerst nochmal Hilfe bei der Hard- und Software Konfiguration:

Ich habe FHEM auf einem RPI laufen. Um die Anwesenheitserkennung mittels Bluetooth zu realisieren habe ich einen Bluetooth Stick an den RPI angeschlossen. Die Anwesenheitserkennung mittels local-bluetooth funktioniert einwandfrei!

Jetzt habe ich mir einen zweiten RPI zugelegt und möchte mittels presenced und collectored beide RPIs mit Bluetooth abfragen!

Nun zur Frage:
Muss auf dem zweiten RPI, der nur der Bluetoothabfrage dient auch FHEM installiert werden oder reicht es aus, dort das presenced Modul zu installieren??
Und:
Auf meinem ersten RPI, worauf auch FHEM läuft, muss da nur das collectored Modul installiert werden oder auch das presenced Modul??

Vielen Dank für Deine Hilfe.

Gruß Sebastian
Titel: Antw:Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: skynet am 16 August 2015, 15:15:26
Hallo,

ich habe heute die BT-Erkennung aktiviert und auch das obige Problem in den Logs gesehen ...

"- error while processing check: no hcitool binary found. Please check that the bluez-package is properly installed"

FHEM läuft bei mir unter dem User PI.
Daher habe ich den Symlink wie oben "# ln -s /usr/local/bin/hcitool /usr/bin/hcitool" gesetzt.

Fehler ist aber noch der gleiche.
Fehlt mir noch was ?

Gruss
Mario

**

Hat sich erledigt - Eine Paketquelle war weg - Daher fehlte tatsächlich das hcitool :-(
Titel: Antw:Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: dieterschmidt1 am 16 August 2015, 17:59:00
Hallo Markus,
bin auch neu hier.
Wenn ich sudo update-rc.d collectord defaults starte...
Dann bekomme ich folgende Fehlermeldung:
update-rc.d: using dependency based boot sequencing
update-rc.d: warning: default start runlevel arguments (2 3 4 5) do not match collectord Default-Start values (2 3 5)

Habe raspberry pi 2 mit normalen 2015-05-05-raspbian-wheezy installiert. Habe dann
sudo apt-get -f install && sudo apt-get -y install perl libdevice-serialport-perl libio-socket-ssl-perl libwww-perl libxml-simple-perl

Dann noch...
sudo wget http://svn.code.sf.net/p/fhem/code/trunk/fhem/contrib/PRESENCE/deb/collectord-1.4.deb
sudo dpkg -i collectord-1.4.deb

Irgendeine Idee was ich falsche mache?
Gruß
Dieter
Titel: Antw:Vorstellung meiner Anwesenheitserkennung mit Bluetooth
Beitrag von: dieterschmidt1 am 17 August 2015, 13:30:14
Hallo,
hat sich erledigt.
Dieter