Anwesenheitserkennung Bluetooth PebbleBee

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

Vorheriges Thema - Nächstes Thema

gero

Leider hat das hcitool lescan eine andere Verhaltensweise als hcitool name:
- es läuft ewig, muß also von außen unterbrochen werden
- der output läßt sich nicht  per grep direkt filtern

Das hcitool name in Zeile 781 muß daher durch ein etwas umständliches Konstrukt ersetzt werden:

z.B:
hcitool lescan > /tmp/res.txt & sleep 5;pkill --signal SIGINT hcitool; sleep 1;grep -v unknown /tmp/res.txt | grep -m1 $device | cut -d" " -f2-

Ich kann aber nicht sagen, ob das PRESENCE-Modul dann wirklich funktioniert, da ich es nicht in Betrieb habe.
Desweiteren können Probleme auftreten, falls fhem nicht mit root-Rechten läuft, weil hcitool lescan diese benötigt.
In diesem Fall sollte man die obige Zeile in ein Script packen und das Script mit sudo aufrufen.

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

Mitch

FHEM im Proxmox Container

IncMrG

Hallo,

ich dachte, ich tue mir mal was Gutes und habe mir Pebble Bee Hornets bestellt.
Was ich auf der Seite aber nicht sehen konnte, Hornet und Dragon sind noch im Beta-Stadium.
Lieferzeit noch mindestens 1 - 2 Monate  >:(
Stornierung nicht möglich! Sie bräuchten das Geld um Ihre Produkte zu verbessern??
Ich finde das ohne Worte.....
FHEM auf RPi mit Raspbian, CUL-SCC868, ASUS BT400, ASUS N10

tomster

Da geb ich Dir Recht. Allerdings ist mir die QI-Lademöglichkeit die Wartezeit wert.
Auch wenn ich, hätte ich die Lieferzeit vorher gekannt, wohl erst in 1-2 Monaten bestellt hätte...

Mitch

#49
Für alle, die das auch integrieren wollen, ich habe jetzt mal einen Script geschrieben, den man mit dem PRESENCE Modul benutzen kann:

#!/bin/bash
hcitool lescan > /tmp/res.txt & sleep 10
pkill --signal SIGINT hcitool
sleep 1
device=$(grep -c 00:00:00:00:00:00 /tmp/res.txt)
if [ $device -gt 0 ]; then
        echo "1"
else
        echo "0"
fi


Im Script muss 00:00:00:00:00:00 gegen die gesuchte Adresse getauscht werden.

Den Script am besten nach /opt/fhem/ speichern.

Als nächstes ein PRESENCE Device anlegen:

define BluetoothTag PRESENCE shellscript "/opt/fhem/lescan.sh"
FHEM im Proxmox Container

Steffen

Zitat von: Mitch am 20 November 2014, 13:23:50
Für alle, die das auch integrieren wollen, ich habe jetzt mal einen Script geschrieben, den man mit dem PRESENCE Modul benutzen kann:

#!/bin/bash
hcitool lescan > /tmp/res.txt & sleep 10
pkill --signal SIGINT hcitool
sleep 1
device=$(grep -c 00:00:00:00:00:00 /tmp/res.txt)
if [ $device -gt 0 ]; then
        echo "1"
else
        echo "0"
fi


Im Script muss 00:00:00:00:00:00 gegen die gesuchte Adresse getauscht werden.

Den Script am besten nach /opt/fhem/ speichern.

Als nächstes ein PRESENCE Device anlegen:

define BluetoothTag PRESENCE shellscript "/opt/fhem/lescan.sh"

So richtig will das bei mir nicht, wenn ich "lescan.sh" über shell ausführe bekomme ich eine "1" und in fhem ein Present doch kurze zeit später bekomme ich ein absent und dieser Status bleibt dann so.
Wenn ich wieder zum Testen über shell ausführe das gleiche spiel, wenn ich über fhem comando zeile "/opt/fhem/lescan.sh" eingebe bleibt es auch auf absent.
Kann es an vielleicht an den rechten liegen?

Mfg Steffen

Mitch

#51
Welchen Tag hast Du?
Wie oft meldet dieser sich?

Der Script schaut 10 Sekunden nach. Wenn dein Tag aber nu jede Minute sendet, kann es sein, dass er nicht gefunden wird.

Bei mir mit zwei PebbleBees funktioniert das ohne Probleme.

Nur nochmal zur Sicherheit:
1. sudo nano lescan.sh -> Inhalt von hier reinkopieren - richtige MAC Adresse!!
2. sudo chmod +x lescan.sh
3. sudo cp lescan.sh /opt/fhem/
4. device in fhem anlegen

Mit den Rechten könnte es auch zusammen hängen, weil hcitool als root ausgeführt werden muss.
Läuft dein hem als root?
FHEM im Proxmox Container

Mitch

Mir ist gerade noch ein Denkfehler aufgefallen.
Das File mit den Adressen muss ja jedes Mal noch gelöscht werden:
#!/bin/bash
hcitool lescan > /tmp/res.txt & sleep 10
pkill --signal SIGINT hcitool
sleep 1
markus=$(grep -c 0E:0A:14:09:7E:11 /tmp/res.txt)
if [ $markus -gt 0 ]; then
        echo 1
else
        echo 0
fi
rm /tmp/res.txt


Komischer Weise habe ich jetzt auch das Problem, dass PRESENCE immer absent ausgibt, obwohl der Script 1 liefert??

2014.11.20 17:05:05 5: PRESENCE (Pebble.Markus) - blocking scan result: Pebble.Markus|1|absent
2014.11.20 17:05:05 5: PRESENCE (Pebble.Markus) - script output: 0
2014.11.20 17:04:54 5: PRESENCE (Pebble.Markus) - execute local shell script: Pebble.Markus|/opt/fhem/lescan_markus.sh|1
2014.11.20 17:04:54 5: PRESENCE (Pebble.Markus) - starting blocking call for mode shellscript
2014.11.20 17:04:54 5: PRESENCE (Pebble.Markus) - starting local scan
2014.11.20 17:04:25 4: PRESENCE (Pebble.Markus) - rescheduling next check in 300 seconds
FHEM im Proxmox Container

Steffen

Hallo!

Geht mir genau so, war ja zwischen durch wenn ich wenigstens das Script ausgeführt hatte Present aber das geht jetzt auf einmal auch nicht mehr!

Mfg Steffen

gero

Ich kenne das PRESENCE Modul nicht und kann gerade nicht reinschauen. Aber kann es sein, dass das Modul den Rückgabewert des Scriptes auswertet? Dann ersetzt mal euer echo durch ein exit.
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

Hallo!

Ich kenne das Modul auch nicht aber hatte jetzt mal 1 und 0 im Script vertauscht und nun habe ich "present", ich teste mal gleich was passiert wenn der tag aus ist...

Mfg Steffen

DerBodo

Das Problem wird sein, dass das results File leer ist. Weil Presence das Script warscheinlich mit dem user FHEM Aufruft, welcher keine root rechte für das HCITOOL LESCAN hat.


Mitch

Genau das ist das Problem.

Ich weis aber nicht, wie ich das ändern kann. Habe bereist fhem zur Gruppe sudo hinzu gefügt.
Alles Befehle im Script werden mit sudo aufgerufen.

Alles ohne Erfolg.
Wie kann ich denn den Script als sudo/root aus fhem ausführen?
FHEM im Proxmox Container

Mitch

Ich werde noch verrückt, habe jetzt noch in die /etc/sudoers folgendes eingetragen:
fhem    ALL = NOPASSWD: /opt/fhem/lescan_markus.sh

Auch kein Erfolg  :'(
FHEM im Proxmox Container

Steffen

Zitat von: Mitch am 20 November 2014, 22:03:52
Ich werde noch verrückt, habe jetzt noch in die /etc/sudoers folgendes eingetragen:
fhem    ALL = NOPASSWD: /opt/fhem/lescan_markus.sh


Auch kein Erfolg  :'(

Ich fummel auch schon die ganze Zeit, wenn man im script:
su fhem hcitool lescan > /tmp/res.txt & sleep 10 einsetzt kommt "0",
das bedeutet ja der befehl mit su fhem kann nicht txt öffnen/beschreiben/lesen, das müsste man ändern können dann hätten wir es glaube ich.
Habe jetzt auch noch keine Ahnung wie ???

Mfg Steffen