PRESENCE Modul in Verbindung mit Minew D15 iBeacon klappt nicht

Begonnen von t1me2die, 18 September 2018, 22:03:41

Vorheriges Thema - Nächstes Thema

t1me2die

Moin liebes Forum,

ich habe einen iBeacon (Minew D15).
Wollte anhand dieses iBeacon versuchen die Anwesenheit zu ermitteln.

Dazu habe ich diesen wie folgt definiert:

Internals:
   ADDRESS    AC:23:3F:26:4A:83
   CFGFN     
   DEF        local-bluetooth AC:23:3F:26:4A:83 10 60
   INTERVAL_NORMAL 10
   INTERVAL_PRESENT 60
   MODE       local-bluetooth
   NAME       iBeacon_Mathze
   NOTIFYDEV  global
   NR         874
   NTFY_ORDER 50-iBeacon_Mathze
   STATE      absent
   TYPE       PRESENCE
   READINGS:
     2018-09-18 20:48:30   model           local-bluetooth
     2018-09-18 21:59:16   presence        absent
     2018-09-18 21:59:16   state           absent
   helper:
     ABSENT_COUNT 9
     RUNNING_PID:
       abortFn    PRESENCE_ProcessAbortedScan
       arg        iBeacon_Mathze|AC:23:3F:26:4A:83|0|
       bc_pid     883
       finishFn   PRESENCE_ProcessLocalScan
       fn         PRESENCE_DoLocalBluetoothScan
       pid        8263
       telnet     telnetForBlockingFn_1537296112_127.0.0.1_51448
       timeout    60
       abortArg:
Attributes:
   DbLogExclude .*
   absenceThreshold 10
   room       GPS


Leider bleibt dieser durchgehend auf absent.

Also habe ich mich per SSH auf meine VM geschaltet und das Bluetooth Tool mal gestartet.
Hier taucht der iBeacon im Sekundenrhytmus auf.


root@debian-jessie-final:~# sudo hcitool lescan
LE Scan ...
AC:23:3F:26:4A:83 (unknown)
AC:23:3F:26:4A:83 (unknown)
....


Ich hätte nun erwartet, dass das Device auf "present" springen würde, ist leider nicht so.

Was mache ich falsch?
Oder kann das gar nicht funktionieren?

Gruß
Mathze

binford6000

Zitatroot@debian-jessie-final:~# sudo hcitool lescan
LE Scan ...
AC:23:3F:26:4A:83 (unknown)
AC:23:3F:26:4A:83 (unknown)
....

Moin Mathze,
du brauchst lepresenced. Schau mal im Wiki: https://wiki.fhem.de/wiki/PRESENCE

defmod iBeacon_Mathze PRESENCE lan-bluetooth AC:23:3F:26:4A:83 w.x.y.z:5333 15 40

VG Sebastian


t1me2die


t1me2die

#3
Nun habe ich aber das Problem, dass auf einmal alle Bluetooth Geräte auf "timeout" stehen.

Kurz nach einem Neustart funktioniert es augenscheinlich für 30-45Sekunden.

Ich musste für lepresenced noch folgende Sachen installieren:

wget https://svn.fhem.de/trac/export/HEAD/trunk/fhem/contrib/PRESENCE/deb/lepresenced-0.83-3.deb
sudo dpkg -i lepresenced-0.83-3.deb
sudo apt-get -f install


Ein
service lepresenced status
sagt auch, dass der Service active (running) ist.

Ein
sudo hcitool lescan
geht ca. 10Sekunden gut, danach erscheint:
Disable scan failed: Input/output error

Nach einem

hciconfig hci0 down
hciconfig hci0 up
service bluetooth restart


Funktioniert ein:

sudo hcitool lescan

wieder.

Nach einem

shutdown restart

Startete FHEM neu und zu Beginn wurden aus den "timeout" kurz ein "present".
Nach ca. 45Sekunden wurde dann aber aus dem "present" wieder ein "timeout"

Und via SSH kam wieder der Fehler von oben

sudo hcitool lescan
Set scan parameters failed: Input/output error


Gruß
Mathze

binford6000

Disable scan failed: Input/output error
Normal, weil lepresenced läuft.
Mit

sudo hciconfig hci0 down
sudo hciconfig hci0 up

und gestopptem lepresenced gehts wieder:

pi@ioserver:~ $ sudo hcitool lescan
Set scan parameters failed: Input/output error
pi@ioserver:~ $ sudo hcitool dev
Devices:
        hci0    B8:27:EB:D1:70:35
pi@ioserver:~ $ sudo hciconfig hci0 down
pi@ioserver:~ $ sudo hciconfig hci0 up
pi@ioserver:~ $ sudo hcitool lescan
LE Scan ...
C4:7C:8D:65:B4:CE (unknown)
C4:7C:8D:65:B4:CE Flower care
C4:7C:8D:65:B4:A1 (unknown)
C4:7C:8D:65:B4:A1 Flower care
^Cpi@ioserver:~ $ ^C
pi@ioserver:~ $

Mein gtag fehlt natürlich weil im Büro  ;)
VG Sebastian


t1me2die

Moin Sebastian,

das habe ich noch nicht ganz verstanden.

Wenn "lepresenced" läuft, dann kann "presenced" nicht laufen, korrekt?
Also beide zeitgleich können nicht laufen.

Da ich zuhause aber mit local-bluetooth meine Handy's abfrage, habe ich dann nun ja ein Problem?
Entweder ich nutze "lepresenced" für meine iBeacons oder ich nutze "presenced" für meine Smartphones.

Habe ich das so richtig verstanden?

Gruß
Mathze

binford6000

ZitatMoin Sebastian,

das habe ich noch nicht ganz verstanden.

Wenn "lepresenced" läuft, dann kann "presenced" nicht laufen, korrekt?
Also beide zeitgleich können nicht laufen.

Da ich zuhause aber mit local-bluetooth meine Handy's abfrage, habe ich dann nun ja ein Problem?
Entweder ich nutze "lepresenced" für meine iBeacons oder ich nutze "presenced" für meine Smartphones.

Habe ich das so richtig verstanden?

Gruß
Mathze

Ich denke ja, da beide auf das gleiche BT-Device zugreifen.
Du könntest einen zweiten BT-Dongle verwenden und lepresenced auf hci1 umstellen.
sub parse_options() {
  my $device                      = "hci1";
  my $daemonize                   = 0;
  my $listen_address              = "0.0.0.0";
  my $listen_port                 = "5333";
  my $log_target                  = "syslog";
  my $log_level                   = "LOG_INFO";
  my $debug                       = 0;
  my $legacy_mode                 = 0;
  my $rssi_threshold              = DEFAULT_RSSI_THRESHOLD;
 

VG Sebastian

binford6000

ZitatDa ich zuhause aber mit local-bluetooth meine Handy's abfrage, habe ich dann nun ja ein Problem?
Ich hab meine iOS-Geräte auch als PRESENCE Geräte am Start, allerdings via
function {checkFritzMACpresent("FritzBox","C4:61:8B:7E:34:94")} 60 60
Eine Kombination aus Fritzbox device und MyUtils Funktion.
VG Sebastian

t1me2die

#8
Zitat von: binford6000 am 19 September 2018, 10:58:15
Ich denke ja, da beide auf das gleiche BT-Device zugreifen.
Du könntest einen zweiten BT-Dongle verwenden und lepresenced auf hci1 umstellen.
sub parse_options() {
  my $device                      = "hci1";
  my $daemonize                   = 0;
  my $listen_address              = "0.0.0.0";
  my $listen_port                 = "5333";
  my $log_target                  = "syslog";
  my $log_level                   = "LOG_INFO";
  my $debug                       = 0;
  my $legacy_mode                 = 0;
  my $rssi_threshold              = DEFAULT_RSSI_THRESHOLD;
 

VG Sebastian

Moin Sebastian, nun habe ich es wohl "etwas" verstanden.

per
sudo hcitool dev
Sehe ich den USB Bluetooth Dongle:
hci0 00:1A:7D:DA:71:13

Ich habe zuhause noch einen zweiten Bluetooth USB Dongle, wenn ich diesen anschließe, sollte dort wahrscheinlich noch ein weiteres Device mit "hci1" hinzukommen.

Mir stellt sich noch die Frage, wie ich "hci0" und "hci1" dann erkläre, dass der eine sich um "presenced" und der andere um "lepresenced" kümmern soll?!

Augenscheinlich bewirkt man dies mit:

attr iBeacon_Mathze bluetoothHciDevice hci1


Muss ich bei meinen anderen Bluetooth Geräten, die via "presenced" erfasst werden dann hci0 setzen oder reicht es, wenn ich lediglich die Beacon's mit dem richtigen HCI-Gerät "verknüpfe"?

attr PRESENCE_rr_Mathze bluetoothHciDevice hci0


Deine sub parse_options()  setzt die jeweiligen Attribute, jedoch ist mir nicht klar, wie und wann du diese Routine ausrufst?

Sodass ich in FHEM nachher "local-bluetooth" und "lan-bluetooth" nutzen kann?

Gruß
Mathze

mark79

Zitat von: t1me2die am 19 September 2018, 11:41:17
Mir stellt sich noch die Frage, wie ich "hci0" und "hci1" dann erkläre, dass der eine sich um "presenced" und der andere um "lepresenced" kümmern soll?!

Wenn du das lepresenced als Debian Paket installiert hast, kannst du das in der /etc/default/lepresenced einstellen:
#Bluetooth device to use for scanning.
BLUETOOTH_DEVICE="hci0"


Danach ein systemctl restart lepresenced oder ein reboot und lepresenced sollte dann das andere hci Interface verwenden.
Rock64 4GB mit Debian Strech, FHEM im LXC, Sonoff Switches/Touch, HM Thermostate, HMUART/Zigbee2MQTT@MapleCUN, ESP RGBWW Wifi Controller, ESP8266 Door Sensor/Briefkastenwächter, BT CSL Stick, BT iTags, Alexa, FireTV, RPi2 mit Kodi, Xiaomi Vacuum v1/Smarthome Komponenten

binford6000

ZitatIch habe zuhause noch einen zweiten Bluetooth USB Dongle, wenn ich diesen anschließe, sollte dort wahrscheinlich noch ein weiteres Device mit "hci1" hinzukommen.
Korrekt.
Dann kanst Du einen für lepresenced nutzen und den anderen für local-bluetooth.
ZitatDeine sub parse_options()  setzt die jeweiligen Attribute, jedoch ist mir nicht klar, wie und wann du diese Routine ausrufst?
Sorry, das war ein Auszug aus lepresenced selbst.
Wie mark79 schreibt, bitte in /etc/default/lepresenced ändern und lepresenced neu starten.
VG Sebastian

t1me2die

Ich kriege es leider noch immer nicht hin und bin mal wieder am verzweifeln.

Was ich bisher getan habe:
Zweiten USB Bluetooth Stick angeschloßen:


root@debian-jessie-final:~# sudo hcitool dev
Devices:
        hci1    00:1A:7D:DA:71:14
        hci0    00:1A:7D:DA:71:13
root@debian-jessie-final:~#


Unter /etc/default/lepresenced habe ich die Anpassung vorgenommen:

#
# Default settings for /etc/init.d/lepresenced
#

#Bluetooth device to use for scanning.
BLUETOOTH_DEVICE="hci1"

#Address to listen for incoming connections. For local connections use 127.0.0.1.
#LISTEN_ADDRESS="127.0.0.1"

#Port to listen for incoming connections.
#LISTEN_PORT="5333"

#Syslog level. LOG_EMERG disables logging.
#SYSLOG_LEVEL="LOG_WARNING"

#Additional command line options
#MISC_OPTIONS=""


Danach habe ich folgendes gemacht:

root@debian-jessie-final:~# systemctl restart lepresenced
root@debian-jessie-final:~# sudo hciconfig hci0 down
root@debian-jessie-final:~# sudo hciconfig hci1 down
root@debian-jessie-final:~# sudo hciconfig hci1 up
root@debian-jessie-final:~# sudo hciconfig hci0 up


Nun habe ich geschaut, ob die beiden Dienste laufen:

root@debian-jessie-final:~# service lepresenced status
● lepresenced.service - lepresenced
   Loaded: loaded (/lib/systemd/system/lepresenced.service; enabled; vendor pres
   Active: active (running) since Wed 2018-09-19 20:13:58 CEST; 1min 36s ago
  Process: 18224 ExecStartPre=/bin/sleep 10 (code=exited, status=0/SUCCESS)
Main PID: 18373 (lepresenced)
    Tasks: 5 (limit: 4915)
   CGroup: /system.slice/lepresenced.service
           ├─18373 /usr/bin/perl /usr/sbin/lepresenced --device hci1 --listenadd
           ├─18390 hcitool -i hci1 lescan --duplicates
           └─18392 hcidump -i hci1

Sep 19 20:13:48 debian-jessie-final systemd[1]: Starting lepresenced...
Sep 19 20:13:58 debian-jessie-final systemd[1]: Started lepresenced.
lines 1-13/13 (END)^C
root@debian-jessie-final:~# service presenced status
● presenced.service - presence daemon to check device presence via bluetooth for
   Loaded: loaded (/lib/systemd/system/presenced.service; enabled; vendor preset
   Active: active (running) since Wed 2018-09-19 20:57:28 CEST; 41min left
     Docs: http://commandref.fhem.de/#PRESENCE
           https://wiki.fhem.de/wiki/PRESENCE#.C3.9Cberwachung_durch_verteilte_A
Main PID: 453 (presenced)
    Tasks: 1 (limit: 4915)
   CGroup: /system.slice/presenced.service
           └─453 /usr/bin/perl /usr/bin/presenced -v -n -p 5111

Sep 19 20:57:28 debian-jessie-final systemd[1]: Started presence daemon to check
Sep 19 20:57:31 debian-jessie-final presenced[453]: [21B blob data]
Sep 19 20:57:31 debian-jessie-final presenced[453]: [31B blob data]



lepresenced läuft auch auf hci1, wie gewünscht.

Auf meinem iBeacon habe ich folgendes Attribut gesetzt:

attr iBeacon_Mathze bluetoothHciDevice hci1


Ein List vom iBeacon zeigt, dass er nun auch absent ist:

Internals:
   ADDRESS    AC:23:3F:26:4A:83
   CHANGED   
   DEF        lan-bluetooth AC:23:3F:26:4A:83 127.0.0.1:5333 10 60
   DeviceName 127.0.0.1:5333
   FD         27
   INTERVAL_NORMAL 10
   INTERVAL_PRESENT 60
   MODE       lan-bluetooth
   NAME       iBeacon_Mathze
   NOTIFYDEV  global
   NR         780
   NTFY_ORDER 50-iBeacon_Mathze
   PARTIAL   
   STATE      absent
   TYPE       PRESENCE
   READINGS:
     2018-09-19 20:11:19   command_accepted yes
     2018-09-19 20:17:14   daemon          lepresenced V0.83
     2018-09-19 20:05:22   device_name     (unknown)
     2018-09-19 20:17:14   model           lan-lepresenced
     2018-09-19 20:17:14   presence        absent
     2018-09-19 20:17:14   rssi            unreachable
     2018-09-19 20:17:14   state           absent
   helper:
     ABSENT_COUNT 9
     CURRENT_TIMEOUT normal
Attributes:
   DbLogExclude .*
   absenceThreshold 10
   bluetoothHciDevice hci1
   event-on-change-reading presence,state
   room       GPS


Wobei dieser unter lescan auftaucht:

root@debian-jessie-final:~# sudo hcitool lescan
LE Scan ...
AC:23:3F:26:4A:83 (unknown)


Meine Bluetooth Devices stehen weiterhin auf "timeout"...

Gruß
Mathze

binford6000

#12
Hmmm..
Mein gtag hat kein bluetoothHciDevice Attribut...


Historie löschen
Internals:
   ADDRESS    7C:2F:80:XX:XX:XX
   DEF        lan-bluetooth 7C:2F:80:98:AC:0F 10.3.3.236:5333 15 40
   DeviceName 10.3.3.236:5333
   FD         11
   INTERVAL_NORMAL 15
   INTERVAL_PRESENT 40
   MODE       lan-bluetooth
   NAME       Sebastian.gtag2.PRE
   NOTIFYDEV  global
   NR         288
   NTFY_ORDER 50-Sebastian.gtag2.PRE
   PARTIAL   
   STATE      absent
   TYPE       PRESENCE
   READINGS:
     2018-09-18 01:31:19   battery         22
     2018-09-19 11:13:16   command_accepted yes
     2018-09-19 22:14:13   daemon          lepresenced V0.9
     2018-09-19 06:30:51   device_name     Gigaset G-tag
     2018-09-19 22:14:13   model           lan-lepresenced
     2018-09-19 22:14:13   presence        absent
     2018-09-19 22:14:13   rssi            unreachable
     2018-09-19 22:14:13   state           absent
   helper:
     ABSENT_COUNT 3
     CURRENT_TIMEOUT normal
     DISABLED   0
Attributes:
   absenceThreshold 4
   alias      Sebastian's gtag lepresenced
   devStateIcon present:ios-on-blue absent:ios-off /disabled|disconnected/:ios-NACK
   disable    0
   event-on-update-reading presence,state
   group      Anwesenheit
   icon       gtag1
   room       30_Devices
   st_type_presence SebastianstructMain
   userReadings battery
   userattr   st_type_presence st_type_presence_map structexclude


Lösch das mal und installiere die neuste (0.9) Version von lepresenced.
VG Sebastian

mark79

Ich würde auch sagen das hci1 dort nicht hingehört, bei mir sieht es so aus:

defmod BT_Mark_MiBand PRESENCE lan-bluetooth F2:A6:7A:5E:xx:xx 127.0.0.1:5222 5 60


Ich habe allerdings noch Collectored am laufen, daher der andere Port.
Collectored verwendet man, wenn man mehrere Räume überwächen will und in jeden Raum ein lepresenced läuft.
Alternativ geht auch ein ESP32, anstatt ein Raspberry etc. mit dem Stetch von Micky.
Rock64 4GB mit Debian Strech, FHEM im LXC, Sonoff Switches/Touch, HM Thermostate, HMUART/Zigbee2MQTT@MapleCUN, ESP RGBWW Wifi Controller, ESP8266 Door Sensor/Briefkastenwächter, BT CSL Stick, BT iTags, Alexa, FireTV, RPi2 mit Kodi, Xiaomi Vacuum v1/Smarthome Komponenten

binford6000

Moin,
weil vorhin in einem anderen Thread gelesen:
Die Tags sind nicht noch mit irgendeiner App verbunden? Das kann dann auch nicht funktionieren  ;)
VG Sebastian