Anwesenheitserkennung Bluetooth PebbleBee

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

Vorheriges Thema - Nächstes Thema

dev0

Zitat von: Markus M. am 24 Mai 2015, 00:01:25
Ich hab das Ding spontan mal gleich noch um die Device Namen erweitert und die Readings angepasst.
Ich habe in die PRESENCED_Connect Funktion noch einen Aufruf eingebaut, der den BT Dongle vor dem hcitool Aufruf
einmal zurücksetzt. Bei mir kam es bei einem reload oder shutdown restart immer wieder zu einem input/output error.

qx("sudo hciconfig hci0 down");
qx("sudo hciconfig hci0 up");

So läuft's jetzt mit drei Tags und einem Scanintervall von 3 Sekunden rund.

Mitch

Braucht jemand noch PebbleBee's?

Ich habe noch drei Stück zu verkaufen - bitte Angebot per PN.
FHEM im Proxmox Container

fstefan1960

Vielen Dank für die tollen Beiträge in dem Forum hier.

Ich hab mich dem Thema LE damit annähern können. Bei mir funzt alles, wenn ich den hcitool-Befehl im Script erweitere:

sudo hciconfig hci0 down && sudo hciconfig hci0 up && sudo /usr/bin/hcitool lescan

Damit sind die Disconnected-Zeiten vorbei und alles läuft.

Vielleicht hilfts ja wem ..
FHEM auf PC: CUL868, CUL 443, HM_LAN, JeeLink
FHEM auf Raspi: CUL868
div. LaCrosse Temp/Hum-Sensoren, HM-Heizkörperventile, Schaltaktoren, etc.

volschin

#348
Ich bin gerade auf eine interessante Hardware-Info gestoßen, nach der der CSR-Chip wohl auf 5 Connection zu BLE-Devices limitiert ist.
Der BCM20702 kann mit deutlich mehr Geräten umgehen (konkret bis zu 14).

http://stackoverflow.com/questions/25193975/gatttool-limited-to-5-connections

Vielleicht hilft die Info dem ein oder anderen, wenn es bei mehr Devices klemmt bzw. beim Kauf des Dongles mit dem richtigen Chip.
Intel NUC+Ubuntu 24.04+Docker+FHEM6
HomeMatic: HM-MOD-RPI-PCB+HM-USB-CFG2+hmland+diverse, HUE: Hue-Bridge, RaspBee+deCONZ+diverse
Amzn Dash-Buttons, Siro Rollos
4xRPi, 4xCO20, OWL+USB, HarmonyHub, FRITZ!Box 7690, Echo Dots+Show8, HomeBridge

volschin

Meine beiden BCM20702 sind eingetroffen.

Bei der Installation auf dem RasPi gab es aber gleich Fehlermeldungen im dmesg
[115000.927253] bluetooth hci0: Direct firmware load for brcm/BCM20702A0-0a5c-21e8.hcd failed with error -2
[115000.942476] Bluetooth: hci0: BCM: patch brcm/BCM20702A0-0a5c-21e8.hcd not found


Bei der Recherche bin ich auf diesen Artikel gestoßen, mit dem ich das Problem erfolgreich beheben konnte.

Danach sieht es so aus:
[   10.899019] Bluetooth: hci0: BCM: patching hci_ver=06 hci_rev=1000 lmp_ver=06 lmp_subver=220e
[   11.796201] Bluetooth: hci0: BCM: firmware hci_ver=06 hci_rev=153a lmp_ver=06 lmp_subver=220e


Gruß
Veit
Intel NUC+Ubuntu 24.04+Docker+FHEM6
HomeMatic: HM-MOD-RPI-PCB+HM-USB-CFG2+hmland+diverse, HUE: Hue-Bridge, RaspBee+deCONZ+diverse
Amzn Dash-Buttons, Siro Rollos
4xRPi, 4xCO20, OWL+USB, HarmonyHub, FRITZ!Box 7690, Echo Dots+Show8, HomeBridge

Tempr42

Hi zusammen,

erstmal danke an euch für die großartigen Lösungen :)
Ich versuche gerade das PRESENCED Modul von Andre einzubinden.
Bin leider noch nicht sehr erfahren in FHEM und hoffe auf eure Hilfe:

Das PRESENCED.md funktioniert soweit, zumindest bekomme ich "Connected" ausgegeben.
Leider wird mein iBeacon immer als "absent" angezeigt.
Über den Shell-Befehl hcitool lescan bekomme ich es jedoch angezeigt.

Folgendes habe ich in fhem.cfg eingetragen:

define pd PRESENCED
define ibeacon PRESENCE local-PRESENCED 5C:59:48:42:31:03


Muss der define Befehl wirklich in die fhem.cfg?
Wie kann ich mir die gefundenen Mac Adressen im PRESENCED anzeigen lassen?

Hoffe ihr könnt mir helfen :)

volschin

Hast Du berücksichtigt, dass user fhem sudo-Rechte für den lescan braucht?
Intel NUC+Ubuntu 24.04+Docker+FHEM6
HomeMatic: HM-MOD-RPI-PCB+HM-USB-CFG2+hmland+diverse, HUE: Hue-Bridge, RaspBee+deCONZ+diverse
Amzn Dash-Buttons, Siro Rollos
4xRPi, 4xCO20, OWL+USB, HarmonyHub, FRITZ!Box 7690, Echo Dots+Show8, HomeBridge

Atze

@dev0
Ich habe in die PRESENCED_Connect Funktion noch einen Aufruf eingebaut, der den BT Dongle vor dem hcitool Aufruf
einmal zurücksetzt. Bei mir kam es bei einem reload oder shutdown restart immer wieder zu einem input/output error.

qx("sudo hciconfig hci0 down");
qx("sudo hciconfig hci0 up");

So läuft's jetzt mit drei Tags und einem Scanintervall von 3 Sekunden rund.


Kannst du mir bitte zeigen wo genau du den Code geändert hast ? Danke

sub
PRESENCED_Connect($)
{

  my ($hash) = @_;
  my $name = $hash->{NAME};

  return undef if( AttrVal($name, "disable", 0 ) == 1 );

  my $cmd = $hash->{CMD};

  $hash->{PARTIAL} = "";
  if( my $pid = open( my $fh, "-|", $cmd ) ) {
    $fh->blocking(0);
    $fh->autoflush(1);

    $hash->{PID} = $pid;
    $hash->{STATE} = "Connected";
    $hash->{LAST_CONNECT} = FmtDateTime( gettimeofday() );

    $hash->{FD}    = $fh->fileno();
    $hash->{CD}    = $fh;
    $hash->{CONNECTS}++;
    $selectlist{$name} = $hash;
    Log3 $name, 3, "$name: connected to $cmd";

  } else {
    #$hash->{STATE} = "Connected";
    Log3 $name, 3, "$name: failed to connect to $cmd";
    InternalTimer(gettimeofday()+10, "PRESENCED_Connect", $hash, 0);
  }
}
FHEM 5.8 , RPi 2 / CUL 3.2 / JEELINKnano - PCA301 / nanoCUL a-culfw 1.05.03
HMS: rm1002, s300th / FHT: fht8v-3, fht80tf
FS20: fs20st, fs20sm8, fs20s8m, fs20rsu, fs20rbm, fs20pce, fs20pcs, fs20ue1, fs20irp2, fs20dwt, fs20rpt-3, fs20str-2, fs20kse
IT: ITDM-250, ITLS-16, ITW-852, IT-1500
G-Data Milight

dev0

Ich schaue morgen früh nach, wenn ich am Schreibtisch bin.

dev0

Zitat von: Atze am 23 August 2015, 14:55:53
Kannst du mir bitte zeigen wo genau du den Code geändert hast ? Danke


PRESENCED_Connect($)
{
  my ($hash) = @_;
  my $name = $hash->{NAME};

  return undef if( AttrVal($name, "disable", 0 ) == 1 );

  my $cmddown = "sudo hciconfig hci0 down";
  my $cmdup = "sudo hciconfig hci up";
  my $ret1 = qx($cmddown);
  my $ret2 = qx($cmdup);

  my $cmd = $hash->{CMD};

  $hash->{PARTIAL} = "";
  if( my $pid = open( my $fh, "-|", $cmd ) ) {
    $fh->blocking(0);
    $fh->autoflush(1);

    $hash->{PID} = $pid;
    $hash->{STATE} = "Connected";
    $hash->{LAST_CONNECT} = FmtDateTime( gettimeofday() );

    $hash->{FD}    = $fh->fileno();
    $hash->{CD}    = $fh;
    $hash->{CONNECTS}++;
    $selectlist{$name} = $hash;
    Log3 $name, 3, "$name: connected to $cmd";

  } else {
    #$hash->{STATE} = "Connected";
    Log3 $name, 3, "$name: failed to connect to $cmd";
    InternalTimer(gettimeofday()+10, "PRESENCED_Connect", $hash, 0);
  }
}

Atze

wenn ich das einbau, dreht sich fhem beim rereadcfg einen wolf...
  my $cmddown = "sudo hciconfig hci0 down";
  my $cmdup = "sudo hciconfig hci up";
  my $ret1 = qx($cmddown);
  my $ret2 = qx($cmdup);


da werden doch nur Variablen gefüllt, oder ? Wo werden denn die Befehle ret1 und ret2 umgesetzt ?
FHEM 5.8 , RPi 2 / CUL 3.2 / JEELINKnano - PCA301 / nanoCUL a-culfw 1.05.03
HMS: rm1002, s300th / FHT: fht8v-3, fht80tf
FS20: fs20st, fs20sm8, fs20s8m, fs20rsu, fs20rbm, fs20pce, fs20pcs, fs20ue1, fs20irp2, fs20dwt, fs20rpt-3, fs20str-2, fs20kse
IT: ITDM-250, ITLS-16, ITW-852, IT-1500
G-Data Milight

dev0

qx führt den Befehl aus und schreibt den Standardoutput in die Variablen. Warum damit ein rereadcfg nicht mehr funktionieren sollte ist mir schleierhaft.

Atze

Fehler gefunden  ;D

Ich nutze zusätzlich zu den beiden G-Data gleichzeitig noch das StreamRadio-Modul mit gleichem BTDevice, was auch gut klappt.

Bevor ich ein "rereadcfg" mache, muss ich nur den Stream vorher deaktivieren, dann geht es.

Besten Dank
FHEM 5.8 , RPi 2 / CUL 3.2 / JEELINKnano - PCA301 / nanoCUL a-culfw 1.05.03
HMS: rm1002, s300th / FHT: fht8v-3, fht80tf
FS20: fs20st, fs20sm8, fs20s8m, fs20rsu, fs20rbm, fs20pce, fs20pcs, fs20ue1, fs20irp2, fs20dwt, fs20rpt-3, fs20str-2, fs20kse
IT: ITDM-250, ITLS-16, ITW-852, IT-1500
G-Data Milight

Scubao

Servus zusammen,

hat jemand eine Idee wie ich ein LE Device per collectord / presenced abfragen kann,
bzw. gibt eine version die mit dem veränderten Verhalten von hcitool lescan umgehen kann?

Gruß
Oliver

dev0

Was ist denn an der presenced Version aus diesem Thread auszusetzen?