Vorstellung meiner Anwesenheitserkennung mit Bluetooth

Begonnen von Markus Bloch, 27 Januar 2013, 13:39:33

Vorheriges Thema - Nächstes Thema

MartinMuc

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
Cubietruck mit CUL und HM USB

MartinMuc

Und sorry für die Tippfehler, mein ipad ärgert mich ab und an....
Cubietruck mit CUL und HM USB

punker

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!
LG

Dieter

The truth is out there!

Markus Bloch


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
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

punker

Ja, tut mir leid, aber bei mir absolut keine Änderung zu vorher!
State immer noch absent!
Egal ob Bluetooth an oder aus!
LG

Dieter

The truth is out there!

MartinMuc

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.

Cubietruck mit CUL und HM USB

Lars

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
FHEM Hauptsystem auf ESXi VM | dblog | 3 rPi für Nebensysteme | 2 Beaglebone Black Test- / Integrationssystem

Markus Bloch

@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
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

MartinMuc

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

Cubietruck mit CUL und HM USB

Lars

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/

Gruß
Lars
FHEM Hauptsystem auf ESXi VM | dblog | 3 rPi für Nebensysteme | 2 Beaglebone Black Test- / Integrationssystem

MartinMuc

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");

Cubietruck mit CUL und HM USB

Markus Bloch

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 ;-)
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

MartinMuc

Zusammen bekommen wir es schon komplett rund und flexibel ;)

Ich werde es jedenfalls ausführlich testen und helfen wo ich kann...
Cubietruck mit CUL und HM USB

Markus Bloch

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
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

Markus Bloch

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
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)