Anwesenheitserkennung Bluetooth PebbleBee

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

Vorheriges Thema - Nächstes Thema

gero

Funktioniert es denn, wenn ihr fhem als root ausführt?
Odroid C1 - CULV3-868, JeeLink
16 x TX 29 DTH
MAX!: 15x Heizkörperthermostat+, 2x Wandthermostat, 14x Fenserkontakt, 1x Ecotaster
FS20 S4A, FS20IRF, BSB-Heizungssteuerung über Atmega2560
Z-Wave: ZME_UZB1, Fibaro Wall Plug + Motion Sensor

gero

So, jetzt hatte ich endlich mal Zeit das Ganze auszuprobieren.

Hier das Shellscript:

#!/bin/bash
USAGE="Usage:\n\t$0 <hciX> <bdaddr> <scantime>"
TMPFILE=/tmp/res.txt

HCITOOL="/usr/bin/hcitool"
HCICONFIG="/usr/sbin/hciconfig"


if [ $# -ne 3 ]; then
echo -e "$USAGE";
exit 1
fi

DEV=$1
REMOTE=$2
SCANTIME=$3

DEVPRESENT=`$HCITOOL dev | grep $DEV`
if [ -z "$DEVPRESENT" ]; then
$HCICONFIG $DEV down &>/dev/null
sleep 1
$HCICONFIG $DEV up &>/dev/null
sleep 1

DEVPRESENT=`$HCITOOL dev | grep $DEV`

if [ -z "$DEVPRESENT" ]; then
echo "device $DEV not present"
exit 1
fi
fi

$HCITOOL lescan > $TMPFILE & sleep $SCANTIME
pkill --signal SIGINT hcitool
sleep 1
BINDA=$(grep -c $REMOTE /tmp/res.txt)
if [ $BINDA -gt 0 ]; then
        echo 1
else
        echo 0
fi
rm $TMPFILE


Die Pfade für hcitool und hciconfig müssen angepasst werden, falls sie bei euch anders sein sollten.
Das geht mit Sicherheit noch eleganter, aber es funktioniert.

Hier die Definition des PRESENCE devices:
define mypres PRESENCE shellscript "/opt/fhem/lescan.sh hci0 XX:XX:XX:XX:XX:XX 5" 30
Die Timings müßt ihr natürlich nach euren Wünschen anpassen. XX:XX:XX:XX:XX:XX muß durch die Bluetoothadresse eures Tags ersetzt werden.

WICHTIG:
Da hcitool lescan und hciconfig root Rechte benötigen, ist es das einfachste für beide das suid Bit zu setzen.

sudo chmod u+s `which hcitool`
sudo chmod u+s `which hciconfig`


Gruß,
Gero
Odroid C1 - CULV3-868, JeeLink
16 x TX 29 DTH
MAX!: 15x Heizkörperthermostat+, 2x Wandthermostat, 14x Fenserkontakt, 1x Ecotaster
FS20 S4A, FS20IRF, BSB-Heizungssteuerung über Atmega2560
Z-Wave: ZME_UZB1, Fibaro Wall Plug + Motion Sensor

Steffen

Zitat von: gero am 21 November 2014, 08:04:51
So, jetzt hatte ich endlich mal Zeit das Ganze auszuprobieren.

Hier das Shellscript:

#!/bin/bash
USAGE="Usage:\n\t$0 <hciX> <bdaddr> <scantime>"
TMPFILE=/tmp/res.txt

HCITOOL="/usr/bin/hcitool"
HCICONFIG="/usr/sbin/hciconfig"


if [ $# -ne 3 ]; then
echo -e "$USAGE";
exit 1
fi

DEV=$1
REMOTE=$2
SCANTIME=$3

DEVPRESENT=`$HCITOOL dev | grep $DEV`
if [ -z "$DEVPRESENT" ]; then
$HCICONFIG $DEV down &>/dev/null
sleep 1
$HCICONFIG $DEV up &>/dev/null
sleep 1

DEVPRESENT=`$HCITOOL dev | grep $DEV`

if [ -z "$DEVPRESENT" ]; then
echo "device $DEV not present"
exit 1
fi
fi

$HCITOOL lescan > $TMPFILE & sleep $SCANTIME
pkill --signal SIGINT hcitool
sleep 1
BINDA=$(grep -c $REMOTE /tmp/res.txt)
if [ $BINDA -gt 0 ]; then
        echo 1
else
        echo 0
fi
rm $TMPFILE


Die Pfade für hcitool und hciconfig müssen angepasst werden, falls sie bei euch anders sein sollten.
Das geht mit Sicherheit noch eleganter, aber es funktioniert.

Hier die Definition des PRESENCE devices:
define mypres PRESENCE shellscript "/opt/fhem/lescan.sh hci0 XX:XX:XX:XX:XX:XX 5" 30
Die Timings müßt ihr natürlich nach euren Wünschen anpassen. XX:XX:XX:XX:XX:XX muß durch die Bluetoothadresse eures Tags ersetzt werden.

WICHTIG:
Da hcitool lescan und hciconfig root Rechte benötigen, ist es das einfachste für beide das suid Bit zu setzen.

sudo chmod u+s `which hcitool`
sudo chmod u+s `which hciconfig`


Gruß,
Gero

Guten Morgen!

Also vielen dank für deine Mühe, zu einem kann ich sagen das es bei mir funktioniert und ich ein "Present" erhalte,
doch kommen zwischen durch einige "absent"!?

Mfg Steffen

Mitch

Mittlerweile habe ich es wohl hinbekommen.
Problem war, dass der Aufruf von hcitool mit sudo auch das sudo Passwort wollte.
Dies umgehe ich, indem ich in der sudoers das deaktiviere.
FHEM im Proxmox Container

gero

Zitat von: Steffen am 21 November 2014, 08:54:02
Guten Morgen!

Also vielen dank für deine Mühe, zu einem kann ich sagen das es bei mir funktioniert und ich ein "Present" erhalte,
doch kommen zwischen durch einige "absent"!?

Mfg Steffen
Das Script ist noch nicht ganz ausgereift.
Falls z.B. die Datei /tmp/res.txt fehlt (warum auch immer), wird ein absent gemeldet. Außerdem kommt es zu einem absent, falls beim Starten des Scripts eine andere hcitool lescan Instanz schon läuft.
Sobald ich Zeit habe, kann ich eine robustere Version des Scriptes posten.

Gruß,
Gero
Odroid C1 - CULV3-868, JeeLink
16 x TX 29 DTH
MAX!: 15x Heizkörperthermostat+, 2x Wandthermostat, 14x Fenserkontakt, 1x Ecotaster
FS20 S4A, FS20IRF, BSB-Heizungssteuerung über Atmega2560
Z-Wave: ZME_UZB1, Fibaro Wall Plug + Motion Sensor

Steffen

Zitat von: Mitch am 21 November 2014, 09:18:38
Mittlerweile habe ich es wohl hinbekommen.
Problem war, dass der Aufruf von hcitool mit sudo auch das sudo Passwort wollte.
Dies umgehe ich, indem ich in der sudoers das deaktiviere.

Könntest du bitte deine einträge in "sudoers" hier nochmal posten, würde gerne das auch Testen?!

Mfg Steffen

Mitch

Klar:


# Members of the admin group may gain root privileges
%dialout ALL=(ALL) ALL

#includedir /etc/sudoers.d
fhem    ALL = NOPASSWD:ALL


Weis jetzt nicht, welcher der zwei Einträge der richtige ist, habe beide gleichzeitig eingetragen und bin einfach froh, dass es jetzt geht.

Gerade nochmal getestet und habe den Tag ausserhalb der Reichweite gebracht = absent
dann zurück = present
FHEM im Proxmox Container

gero

Anbei noch eine etwas robustere Version vom lescan Script.

Gruß,
Gero
Odroid C1 - CULV3-868, JeeLink
16 x TX 29 DTH
MAX!: 15x Heizkörperthermostat+, 2x Wandthermostat, 14x Fenserkontakt, 1x Ecotaster
FS20 S4A, FS20IRF, BSB-Heizungssteuerung über Atmega2560
Z-Wave: ZME_UZB1, Fibaro Wall Plug + Motion Sensor

Steffen

Zitat von: Mitch am 21 November 2014, 10:09:22
Klar:


# Members of the admin group may gain root privileges
%dialout ALL=(ALL) ALL

#includedir /etc/sudoers.d
fhem    ALL = NOPASSWD:ALL


Weis jetzt nicht, welcher der zwei Einträge der richtige ist, habe beide gleichzeitig eingetragen und bin einfach froh, dass es jetzt geht.

Gerade nochmal getestet und habe den Tag ausserhalb der Reichweite gebracht = absent
dann zurück = present

Ja genau das ist es, danke @Mitch läuft seit paar stunden sauber durch kein zufälliges "absent" mehr!

@Mitch wenn ich richtig gelesen habe dann hast du ja die Pebblebee bestellt, ist bei diesen auch möglich die über Handy zu Orten mit einer App?
Ich frage weil bei meinen Kensington klappt jetzt zwar die Presence abfrage aber wenn ich sie über Handy mit der App verbinde(wird in der App Registriert), dann stellt sich sofort ein "absent" ein und das bleibt auch so wenn ich die App schließe.
Auch wenn ich die Dienste beende bleibt es "absent", erst wenn ich in der App den Tag wieder entferne und deinstalliere kommt ein "present".

Kenn jemand eine App für Android die sowas kann, würde gerne beides benutzen weil meine Frau sucht immer ihr Auto im Parkhaus und glaubt mir "immer"! ;)

Mfg Steffen

Mitch

 Ist beim PebbleBee auch so.

Wenn die App sich mit dem Tag verbundet, schickt er keinen Broadcast mehr.

Macht aber nichts, wenn ich die App wirklich mal benutze, schliesse ich sie danach sowieso konplett und damit wird der Tag wieder "freigegeben".
FHEM im Proxmox Container

Steffen

Zitat von: Mitch am 21 November 2014, 19:09:43
Ist beim PebbleBee auch so.

Wenn die App sich mit dem Tag verbundet, schickt er keinen Broadcast mehr.

Macht aber nichts, wenn ich die App wirklich mal benutze, schliesse ich sie danach sowieso konplett und damit wird der Tag wieder "freigegeben".

Ja das ist eigentlich auch meine frage gewesen, denn bei meiner App bleibt es auch "absent" selbst wenn ich die App komplett schließe oder sogar das Handy neu starte, erst wenn ich den Tag aus der App deinstalliere/entferne wird er wieder "freigeben" und dann müsste ich jedes mal den Tag dann neu registrieren(kleinen key am Tag lange gedrückt halten)!

Also wenn ich dich richtig verstanden habe, dann die kurz Fassung: App an "absent" > App aus(ohne Deinstallation in App) "present"?

Mfg Steffen

Mitch

Ja genau, so ist es bei mir auf dem iPhone mit den PebbleBees.
FHEM im Proxmox Container

Mitch

Zitat von: gero am 21 November 2014, 11:17:31
Anbei noch eine etwas robustere Version vom lescan Script.

Gruß,
Gero

Danke Gero.
Werde ich am WE mal testen.
FHEM im Proxmox Container

Steffen

Zitat von: Mitch am 21 November 2014, 20:00:58
Ja genau, so ist es bei mir auf dem iPhone mit den PebbleBees.

danke, werde dann auch gleich mal bestellen!

@Gero werde morgen auch zum Testen kommen und dann gleich berichten!

Mitch

@Gero: hab jetzt doch mal schnell getestet. Sieht sehr gut aus!
Allerdings hat dein Script genau den gleichen Fehler, den ich gerade bei meinem festgestellt habe: wenn schon ein hcitool lescan läuft, kann der zweite nicht auch noch ausgeführt werden. Es kommt dann ERROR im state vom Presence Modul.

Problem ist, dass ich ja sogar fünf Tags scannen möchte.

Ich lasse jetzt übers WE mal Deinen Script laufen und werde dann meine Erfahrungen posten.
FHEM im Proxmox Container