Anwesenheitserkennung Bluetooth PebbleBee

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

Vorheriges Thema - Nächstes Thema

PatrickR

@SouZa: Lies mal #684


Gesendet von iPhone mit Tapatalk Pro
lepresenced - Tracking von Bluetooth-LE-Tags (Gigaset G-Tag) mittels PRESENCE

"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning." - Rich Cook

stoxx

Hi CoolTux,

ZitatWenn Bedarf besteht kann ich alles gerne hier einstellen.

Also mich würde das sehr interessieren.. Auch wie Du das nonBlocking gemacht hast..

Grüße
stoxx
Raspberry mit CUL, FS20, FHT, HMS, BLE, Z-Wave, Zigbee ..

CoolTux

Zitat von: stoxx am 09 Oktober 2016, 14:44:47
Hi CoolTux,

Also mich würde das sehr interessieren.. Auch wie Du das nonBlocking gemacht hast..

Grüße
stoxx

Ich kann den Code heute Abend oder Morgen hier gerne zur Verfügung stellen, inklusive kleiner Anleitung.

Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

CoolTux

Ich habe mir eine kleine Sub geschrieben. In der kann ich blockierende Systemkommandos aufrufen und diese werden dann NonBlocking ausgeführt.

99_myUtils_SystemCommands.pm

package main;

use strict;
use warnings;
use POSIX;
use Blocking;



sub myUtils_SystemCommands_Initialize($$) {

  my ($hash) = @_;

}

sub systemCommand($$) {

    my ($name,$command) = @_;
    my $hash = $defs{$name};
   
    Log3 $name, 4, "(Sub systemCommand - $name) - Starte Subroutine systemCommand";
   
   
    if( lc $name eq 'notifycontrolwlan0'
            || lc $name eq 'notifyfirewall_isabelhandy'
    || lc $command eq 'gtagbattery') {
       
        BlockingKill($hash->{helper}{RUNNING_PID}) if(defined($hash->{helper}{RUNNING_PID}));

        $hash->{helper}{RUNNING_PID} = BlockingCall("systemCommand_Run", $name."|".$command, "systemCommand_Done", 60, "systemCommand_Aborted", $hash) unless(exists($hash->{helper}{RUNNING_PID}));
        Log3 $name, 4, "(Sub systemCommand - $name) - Starte Blocking Call";
    }
}

sub systemCommand_Run($) {

    my ($string) = @_;
    my ( $name, $command ) = split("\\|", $string);
    my $state;
   
    Log3 $name, 4, "(Sub systemCommand - $name) - Führe Systemkommando im nonBlocking Mode aus: $command";
   
   
    #####################################
    ### Wlan0 auf proxy01 #####
    if( $name eq "notifyControlWlan0" ) {
        Log3 $name, 4, "(Sub systemCommand - $name) - Starte $name";
       
        if( $command eq "inet up" ) {
            qx(ssh proxy01 'sudo /sbin/ifup wlan0');
            Log3 $name, 3, "(Sub systemCommand - $name) - wlan0 wird gestartet";
        }
   
        elsif( $command eq "inet down" ) {
            qx(ssh proxy01 'sudo /sbin/ifdown wlan0');
            Log3 $name, 3, "(Sub systemCommand - $name) - wlan0 wird beendet";
        }
   
        elsif( $command eq "inet reconnect" ) {
            qx(ssh proxy01 'sudo /sbin/ifdown wlan0');
            sleep(2);
            qx(ssh proxy01 'sudo /sbin/ifup wlan0');
            Log3 $name, 3, "(Sub systemCommand - $name) - wlan0 wird neu gestartet";
        }
       
        ### Check is wlan0 alive
        $state = qx(ssh proxy01 'cat /sys/class/net/wlan0/carrier');
        Log3 $name, 3, "(Sub systemCommand - $name) - Check is wlan0 alive";
    }
   
    #######################################
    #### Firewall Skripte auf proxy01 ###
    elsif( $name =~ /notifyFirewall/ ) {
       
        Log3 $name, 4, "(Sub systemCommand - $name) - Starte $name";
       
       
        if ( $command eq "erlaubt" ) {
       
            while ( qx(ps ax | grep -v grep | grep iptables) ) {
                Log3 $name, 4, "(Sub systemCommand - $name) - iptables noch aktiv, wait 0.5s for new check";
                sleep 0.5;
            }
           
            $state = qx(ssh proxy01 'sudo /etc/iptables/rules.scripts/isabel_handy_tablet.sh allow') if( $name eq "notifyFirewall_IsabelHandy" );
            Log3 $name, 3, "(Sub systemCommand - $name) - Zugriff erlaubt für $name";
        }
   
        elsif( $command eq "verboten" ) {
           
            while ( qx(ps ax | grep -v grep | grep iptables) ) {
                Log3 $name, 3, "(Sub systemCommand - $name) - iptables noch aktiv, wait 0.5s for new check";
                sleep 0.5;
            }
       
            $state = qx(ssh proxy01 'sudo /etc/iptables/rules.scripts/isabel_handy_tablet.sh deny') if( $name eq "notifyFirewall_IsabelHandy" );
            Log3 $name, 3, "(Sub systemCommand - $name) - Zugriff verboten für $name";
        }
    }
   
    ##########################################
    #### G-Tag Batterie Status ############### 
    elsif( $command eq "gtagbattery" ) {
       
        my %btmac = (
            notifyPresenceLocationIsabel => '12:34:56:78:90:F8',
            notifyPresenceLocationSteven => '12:34:56:78:90:61',
        );
       
        while ( qx(ps ax | grep -v grep | grep gatttool) ) {
            Log3 $name, 4, "(Sub systemCommand - $name) - gatttool noch aktiv, wait 0.5s for new check";
            sleep 0.5;
        }
       
        $state = qx(gatttool -b $btmac{$name} --char-read --handle=0x001b);
        Log3 $name, 3, "(Sub systemCommand - $name) - Rufe Batteriestatus vom GTag ab. MAC: $btmac{$name}";
    }
   
   
    #################################################
    #### Weiterverarbeitung der Rückgabewerte ######
    Log3 $name, 4, "(Sub systemCommand - $name) - Rückgabe an Auswertungsprogramm beginnt Name: $name, Command: $command, State: $state";
    $state = encode_base64($state,"");
    return "$name|$command|$state";
}

sub systemCommand_Done($) {

    my ($string) = @_;
    my @a = split("\\|",$string);
    my $hash = $defs{$a[0]};
    my $name = $hash->{NAME};
    my $command = $a[1];
    my $state = $a[2];
   
   
    delete($hash->{helper}{RUNNING_PID});
   
    Log3 $name, 3, "(Sub systemCommand_Done - $name) - Der Helper ist diabled. Daher wird hier abgebrochen" if($hash->{helper}{DISABLED});
    return if($hash->{helper}{DISABLED});
   
   
    $state = decode_base64($state);
   
    Log3 $name, 4, "(Sub systemCommand_Done - $name) - State gleich: $state und command: $command";
    Log3 $name, 3, "(Sub systemCommand_Done - $name) - Abschluss vom Systemkommandoaufruf im nonBlocking Mode. Auswertungsteil beginnt.";
   
   
   
    ##############################################################
    #########   Auswertungsteil   ############
   
   
    ####################################################
    ##### wlan0 stop, start, restart, status
    if( ($name eq "notifyControlWlan0") and ($state) ) {
   
            fhem "set buttonProxy01Wlan0Status $state";
    }

    ####################################################
    ####### Firewall Skripte auf proxy01 ###########
    elsif( ($name =~ /notifyFirewall/) and (!$state) ) {
   
            fhem "set buttonSshInetFWstatus fehler" if( $name eq "notifyFirewall_IsabelHandy" )
    }
   
    ####################################################
    #### G-Tag Batterie Status ###############
    elsif( ($name =~ /notifyPresenceLocation/) and ($state) ) {
   
        my %DEVICE = (
            notifyPresenceLocationIsabel => 'presenceIsabel',
            notifyPresenceLocationSteven => 'presenceSteven',
        );
       
        my $dhash = $defs{$DEVICE{$name}};
        my $dname = $dhash->{NAME};
       
        my @blevel = split(": ",$state);
        my $blevel = hex("0x${blevel[1]}");
       
        readingsBeginUpdate($dhash);
        readingsBulkUpdate($dhash,"device_batteryLevel",$blevel);
       
        if( $blevel < 20 ) {
            readingsBulkUpdate($dhash,"device_battery","low");
        } else {
            readingsBulkUpdate($dhash,"device_battery","ok");
        }
       
        readingsEndUpdate($dhash,1);
    }
       
}

sub systemCommand_Aborted($) {

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

    delete($hash->{helper}{RUNNING_PID});
    Log3 $name, 3, "($name) - The BlockingCall Process terminated unexpectedly. Timedout";

}

1;


Ich habe hier mal versucht nur Auszüge darzustellen, damit es nicht zu viel wird.
Bleiben wir bei den G-Tags. Werden die G-Tags vom jeweiligen Presence Modul erkannt, wird ein Notify geschalten welches unter anderem dann auch die sub systemCommand($$) auf ruft. Hier werden zwei Parameter übergeben.
Einmal der Device name des Device welches die Sub aufruft. Also das Notify in diesem Fall und ein Zusatzparameter das er weiß was genau er machen soll.
Der Devicename ist sehr wichtig und wird über die gesamte Prozedure über alle Subs für das NonBlocking transportiert.

systemCommand("notifyPresenceLocationIsabel","gtagbattery")


Da wir nun wissen welcher "Menuepunkt" gewählt wurde können wir das in den entsprechenden Subs weiter verarbeiten.

sub systemCommand($$) hier starten wir rein und es wird geschaut ob wir auch kein Blödsinn eingegeben haben. Danach wird ein paralleler Thread gestartet

$hash->{helper}{RUNNING_PID} = BlockingCall("systemCommand_Run", $name."|".$command, "systemCommand_Done", 60, "systemCommand_Aborted", $hash) unless(exists($hash->{helper}{RUNNING_PID}));

Im abgetrennten Thread wird nun der blockierende Systembefehl ausgeführt

$state = qx(gatttool -b $btmac{$name} --char-read --handle=0x001b);

Da ich bemerkt habe wenn 3 Leute gleichzeitig nach Hause kommen und gatttool dreimal aufgerufen wird das es zu Problemen kommt, prüfe ich ob gatttool läuft und wenn ja wird eine Warteschleife generiert.

while ( qx(ps ax | grep -v grep | grep gatttool) ) {
            Log3 $name, 4, "(Sub systemCommand - $name) - gatttool noch aktiv, wait 0.5s for new check";
            sleep 0.5;
        }


Danach erfolgt die Übergabe zurück in den FHEM Hauptthread und dann werden dort die Readings gesetzt


    ####################################################
    #### G-Tag Batterie Status ###############
    elsif( ($name =~ /notifyPresenceLocation/) and ($state) ) {
   
        my %DEVICE = (
            notifyPresenceLocationIsabel => 'presenceIsabel',
            notifyPresenceLocationSteven => 'presenceSteven',
        );
       
        my $dhash = $defs{$DEVICE{$name}};
        my $dname = $dhash->{NAME};
       
        my @blevel = split(": ",$state);
        my $blevel = hex("0x${blevel[1]}");
       
        readingsBeginUpdate($dhash);
        readingsBulkUpdate($dhash,"device_batteryLevel",$blevel);
       
        if( $blevel < 20 ) {
            readingsBulkUpdate($dhash,"device_battery","low");
        } else {
            readingsBulkUpdate($dhash,"device_battery","ok");
        }
       
        readingsEndUpdate($dhash,1);
    }


Ich gebe zu es ist nicht leicht, aber ich habe sehr viele solcher Aufrufe gerade was das ausführen von Shellskripten auf entfernten Rechnern an geht, daher der einmalig größere Aufwand.

Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

stoxx

Wow, danke für die Anleitung - elegante Lösung!
Das werde ich in den nächsten Tagen mal auf meinem Testsystem ausprobieren.

Grüße
stoxx
Raspberry mit CUL, FS20, FHT, HMS, BLE, Z-Wave, Zigbee ..

PsychoD

Guten Abend zusammen,

ich hatte schon gesondert geschrieben, aber vielleicht ist hier doch der bessere Platz:
Ich habe meinen RPI2 mit dem CSL Bluetooth-LE Stick ausgerüstet, und verwende ein G-Tag zur Anwesenheitserkennung wie im Wiki beschrieben. Das klappt auch prinzipiell alles wunderbar. Der Tag bleibt auch zuverlässig anwesend. Wenn ich kurz abwesend bin, wird die erneute Anwesenheit super erkannt. Wenn ich aber einige Zeit abwesend war, und dann wiederkomme, wird der Tag jedoch nicht mehr erkannt. Führe ich einen Reboot vom Pi aus oder starte lepresenced neu, wird sie sofort wieder erkannt. Interessanterweise wird sie auch dann wieder erkannt, wenn ich den Batteriestatus wie im Wiki beschrieben mit gatttool prüfe. Es wirkt auf mich fast, als würd sich der BT-Stick schlafen legen oder so...

Bin dankbar für jeden Tipp!!!

Danke & Gruß

PatrickR

@PsychoD: Problem scheint ja rekonstruierbar zu sein. Poste doch mal ein Log mit LOG_DEBUG vom Zeitpunkt des Auftretens.

Ist der G-Tag mit irgenwas (App etc.) gepairt?


Gesendet von iPhone mit Tapatalk Pro
lepresenced - Tracking von Bluetooth-LE-Tags (Gigaset G-Tag) mittels PRESENCE

"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning." - Rich Cook

PsychoD

Zitat von: PatrickR am 10 Oktober 2016, 09:02:18
@PsychoD: Problem scheint ja rekonstruierbar zu sein. Poste doch mal ein Log mit LOG_DEBUG vom Zeitpunkt des Auftretens.

Ist der G-Tag mit irgenwas (App etc.) gepairt?


Gesendet von iPhone mit Tapatalk Pro

Hallo Patrick,
Danke für den Tip! Ich hab das Debug-log mal eingeschaltet, und werde heute Abend, wenn ich nach Hause komme und die Erkennung vermutlich nicht funktioniert hat, berichten.

Aktuell scheint alles OK:

Oct 10 10:34:44 osmc lepresenced[3709]: [tid:0] main: Sending update for mac address xx:xx:xx:xx:xx:xx, max age: 15, result: absence.


Ich hatte das Tag mal mit der iPhone App gepairt, das iPhone ist jedoch seit einigen Tagen nicht zuhause, sollte also eigentlich nicht reinfunken können.

Viele Grüße
Psy

PsychoD

Hallo nochmal,
aus dem Log werde ich leider nicht schlau. Das Tag lag seit ca. 22:10 Uhr unverändert an der gleichen Stelle in der Wohnung, wurde aber mal wieder nicht erkannt. Hier mal der relevante Teil aus dem Log:

Oct 10 22:58:01 osmc CRON[27530]: pam_unix(cron:session): session closed for user root
Oct 10 22:58:14 osmc lepresenced[3709]: [tid:0] main: Sending update for mac address xx:xx:xx:xx:xx:xx, max age: 15, result: absence.
Oct 10 22:58:29 osmc lepresenced[3709]: [tid:0] main: Sending update for mac address xx:xx:xx:xx:xx:xx, max age: 15, result: absence.
Oct 10 22:58:44 osmc lepresenced[3709]: [tid:0] main: Sending update for mac address xx:xx:xx:xx:xx:xx, max age: 15, result: absence.
Oct 10 22:58:59 osmc lepresenced[3709]: [tid:0] main: Sending update for mac address xx:xx:xx:xx:xx:xx, max age: 15, result: absence.
Oct 10 22:59:01 osmc CRON[27557]: pam_unix(cron:session): session opened for user root by (uid=0)
Oct 10 22:59:01 osmc CRON[27558]: (root) CMD (/opt/fhem/fhem-watchdog.sh)
Oct 10 22:59:01 osmc CRON[27557]: pam_unix(cron:session): session closed for user root
Oct 10 22:59:14 osmc lepresenced[3709]: [tid:0] main: Sending update for mac address xx:xx:xx:xx:xx:xx, max age: 15, result: absence.
Oct 10 22:59:29 osmc lepresenced[3709]: [tid:0] main: Sending update for mac address xx:xx:xx:xx:xx:xx, max age: 15, result: absence.
Oct 10 22:59:44 osmc lepresenced[3709]: [tid:0] main: Sending update for mac address xx:xx:xx:xx:xx:xx, max age: 15, result: absence.
Oct 10 22:59:59 osmc lepresenced[3709]: [tid:0] main: Sending update for mac address xx:xx:xx:xx:xx:xx, max age: 15, result: absence.
Oct 10 23:00:01 osmc CRON[27591]: pam_unix(cron:session): session opened for user root by (uid=0)
Oct 10 23:00:01 osmc CRON[27592]: pam_unix(cron:session): session opened for user root by (uid=0)
Oct 10 23:00:01 osmc CRON[27593]: (root) CMD (/opt/fhem/fhem-watchdog.sh)
Oct 10 23:00:01 osmc CRON[27594]: (root) CMD (/opt/fhem/script/gtagbattery)
Oct 10 23:00:01 osmc sudo[27604]: root : TTY=unknown ; PWD=/root ; USER=root ; COMMAND=/home/osmc/bluez-5.42/attrib/gatttool -b xx:xx:xx:xx:xx:xx --char-read --handle=0x001b
Oct 10 23:00:01 osmc sudo[27604]: pam_unix(sudo:session): session opened for user root by (uid=0)
Oct 10 23:00:01 osmc CRON[27592]: pam_unix(cron:session): session closed for user root
Oct 10 23:00:02 osmc kernel: Bluetooth: hci0 advertising data length corrected
Oct 10 23:00:03 osmc lepresenced[3709]: [tid:1] main::bluetooth_thread: Received unknown output: 'Disable scan failed: Input/output error'!
Oct 10 23:00:03 osmc lepresenced[3709]: [tid:1] main::bluetooth_thread: hcitool exited, retrying...
Oct 10 23:00:04 osmc sudo[27604]: pam_unix(sudo:session): session closed for user root
Oct 10 23:00:04 osmc lepresenced[3709]: [tid:1] main::bluetooth_thread: Received 'LE Scan ...'.
Oct 10 23:00:04 osmc CRON[27591]: pam_unix(cron:session): session closed for user root
Oct 10 23:00:06 osmc kernel: Bluetooth: hci0 advertising data length corrected
Oct 10 23:00:08 osmc kernel: Bluetooth: hci0 advertising data length corrected
Oct 10 23:00:09 osmc kernel: Bluetooth: hci0 advertising data length corrected
Oct 10 23:00:10 osmc kernel: Bluetooth: hci0 advertising data length corrected
Oct 10 23:00:11 osmc kernel: Bluetooth: hci0 advertising data length corrected
Oct 10 23:00:12 osmc kernel: Bluetooth: hci0 advertising data length corrected
Oct 10 23:00:14 osmc lepresenced[3709]: [tid:0] main: Sending update for mac address xx:xx:xx:xx:xx:xx, age: 2, max age: 15, result: present.
Oct 10 23:00:14 osmc kernel: Bluetooth: hci0 advertising data length corrected
Oct 10 23:00:14 osmc lepresenced[3709]: [tid:0] main::handle_command: Received query update for mac address xx:xx:xx:xx:xx:xx, interval: 120 by client 127.0.0.1:36178.
Oct 10 23:00:14 osmc lepresenced[3709]: [tid:0] main: Sending update for mac address xx:xx:xx:xx:xx:xx, age: 0, max age: 120, result: present.
Oct 10 23:00:15 osmc kernel: Bluetooth: hci0 advertising data length corrected
Oct 10 23:00:16 osmc kernel: Bluetooth: hci0 advertising data length corrected
Oct 10 23:00:18 osmc kernel: Bluetooth: hci0 advertising data length corrected
Oct 10 23:00:20 osmc kernel: Bluetooth: hci0 advertising data length corrected
Oct 10 23:00:21 osmc kernel: Bluetooth: hci0 advertising data length corrected
Oct 10 23:00:22 osmc kernel: Bluetooth: hci0 advertising data length corrected
Oct 10 23:00:23 osmc kernel: Bluetooth: hci0 advertising data length corrected
Oct 10 23:00:24 osmc kernel: Bluetooth: hci0 advertising data length corrected
Oct 10 23:00:25 osmc kernel: Bluetooth: hci0 advertising data length corrected
Oct 10 23:00:27 osmc kernel: Bluetooth: hci0 advertising data length corrected
Oct 10 23:00:28 osmc kernel: Bluetooth: hci0 advertising data length corrected
Oct 10 23:00:29 osmc kernel: Bluetooth: hci0 advertising data length corrected


Wie man sieht, hab ich im presence einen absent-Interval von 15 Sekunden eingestellt. Obwohl das Tag da ist, wird es aber nicht erkannt (22:58:14 - 23:00:14). Erst nachdem um 23:00:01 via CRON das gtagbattery script gatttool verwendet, ist der Tag auf einmal present, und bleibt es interessanterweise auch, bis er wieder einige Zeit außer Reichweite ist. Interessant ist vielleicht diese Stelle:

Oct 10 23:00:03 osmc lepresenced[3709]: [tid:1] main::bluetooth_thread: Received unknown output: 'Disable scan failed: Input/output error'!
Oct 10 23:00:03 osmc lepresenced[3709]: [tid:1] main::bluetooth_thread: hcitool exited, retrying...
Oct 10 23:00:04 osmc sudo[27604]: pam_unix(sudo:session): session closed for user root
Oct 10 23:00:04 osmc lepresenced[3709]: [tid:1] main::bluetooth_thread: Received 'LE Scan ...'.


Ratlos bin ich, was mir die "data length corrected" Einträge während der Anwesenheit des Tags sagen wollen...

Bin dankbar für jeden Tipp!

Viele Grüße
Psy

PatrickR

Löse das Pairing mal auf. Nach meinen Erfahrungen senden die G-Tags keine bzw. deutlich weniger Beacons sobald sie in der App registriert sind.


Von unterwegs gesendet.
lepresenced - Tracking von Bluetooth-LE-Tags (Gigaset G-Tag) mittels PRESENCE

"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning." - Rich Cook

PsychoD

Danke Patrick! Kann ich versuchen, dauert aber ein paar Tage (Mein iPhone ist aktuell in Reparatur). Kann ich den G-Tag vielleicht irgendwie auf Werkseinstellungen zurücksetzen? Ich vermute aber das Problem woanders. Wenn ich das Batteriescript nicht starte (oder neustarte etc), wird der Tag auch über Stunden nicht erkannt. Nach dem Neustart jedoch umgehend.

Mir ist aufgefallen, dass ich lepresenced ohne "-d" Flag gestartet hatte, also nicht im Daemon-mode. Das hab ich nun korrigiert, aber kann das die Ursache sein? Ich werde es erst heute Abend prüfen können, wenn ich von der Arbeit zurück bin.

Viele Grüße
Psy

PatrickR

#701
Zitat von: PsychoD am 11 Oktober 2016, 10:05:21
Danke Patrick! Kann ich versuchen, dauert aber ein paar Tage (Mein iPhone ist aktuell in Reparatur). Kann ich den G-Tag vielleicht irgendwie auf Werkseinstellungen zurücksetzen?
Um ehrlich zu sein, nie gemacht. Hatte gepairt, festgestellt, dass der Tag nicht mehr sendet und es wieder aus der App gelöscht.

Zitat von: PsychoD am 11 Oktober 2016, 10:05:21
Ich vermute aber das Problem woanders. Wenn ich das Batteriescript nicht starte (oder neustarte etc), wird der Tag auch über Stunden nicht erkannt. Nach dem Neustart jedoch umgehend.
Wie gesagt. Meine Erfahrung ist, dass der G-Tag die Klappe hält, sobald er in der App hinzugefügt wurde und wieder wie gewohnt losplappert, wenn er gelöscht ist. Möglicherweise verleitet ihn das Batterieskript dazu, sich nochmal zu melden. Ist aber Spekulation. Daher bitte Pairing auflösen und berichten :)

Ich gebe aber auch ehrlich zu, dass ich mir aus dem Fehlerbild keinen Reim machen kann. Du bist da sozusagen Fehler-Pionier. Leute, die funktionierende Systeme durch Ankucken in einen Fehlerzustand bringen können, sind in der Wirtschaft übrigens sehr gefragt :)

Zitat von: PsychoD am 11 Oktober 2016, 10:05:21
Mir ist aufgefallen, dass ich lepresenced ohne "-d" Flag gestartet hatte, also nicht im Daemon-mode. Das hab ich nun korrigiert, aber kann das die Ursache sein? Ich werde es erst heute Abend prüfen können, wenn ich von der Arbeit zurück bin.
Letztlich hat das keine Auswirkung auf die Funktion, solange der Prozess läuft (siehst Du mit ps oder daran, dass er das Syslog vollschreibt).

Patrick
lepresenced - Tracking von Bluetooth-LE-Tags (Gigaset G-Tag) mittels PRESENCE

"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning." - Rich Cook

PsychoD

Zitat von: PatrickR am 11 Oktober 2016, 20:56:03
Um ehrlich zu sein, nie gemacht. Hatte gepairt, festgestellt, dass der Tag nicht mehr sendet und es wieder aus der App gelöscht.
Wie gesagt. Meine Erfahrung ist, dass der G-Tag die Klappe hält, sobald er in der App hinzugefügt wurde und wieder wie gewohnt losplappert, wenn er gelöscht ist. Möglicherweise verleitet ihn das Batterieskript dazu, sich nochmal zu melden. Ist aber Spekulation. Daher bitte Pairing auflösen und berichten :)

OK, Danke! Werde ich machen, ich bekomme in ca. 3 Tagen hoffentlich mein iPhone zurück, dann kann ich das Pairing löschen und werde berichten.

Zitat von: PatrickR am 11 Oktober 2016, 20:56:03
Ich gebe aber auch ehrlich zu, dass ich mir aus dem Fehlerbild keinen Reim machen kann. Du bist da sozusagen Fehler-Pionier. Leute, die funktionierende Systeme durch Ankucken in einen Fehlerzustand bringen können, sind in der Wirtschaft übrigens sehr gefragt :)
Letztlich hat das keine Auswirkung auf die Funktion, solange der Prozess läuft (siehst Du mit ps oder daran, dass er das Syslog vollschreibt).

Na da freue ich mich aber über dieses seltene Talent!  ;D ;D ;D Ich glaube ich habe allerdings nichtmal geguckt - einfach nur dem Wiki gefolgt ;)

Ich habe nun rausgefunden, dass der Tag bei einem "sudo hcitool lescan" auch gefunden wird, und anschließend auch wieder im FHEM auftaucht.

Es wirkt auf mich alles, als würde das Bluetooth Modul am RPI irgendwie schlafen gehen oder so - finde aber keine Infos dazu, dass sowas möglich wäre...

Bleibe dran und freue mich über Tipps!
Viele Grüße
Psy

Papaloewe

Ich möchte mal kurz fragen, wie die Erfahrungen sind mit den verschiedenen TAG-Modellen.

Ich suche noch etwas im Preissegment unter 20€, möglichst ohne Knopf und wasserdicht (für den Hund) und das Teil soll auch noch eine vernünftige Reichweite haben.

Was könnt ihr mir empfehlen?

Vielen Dank.

MfG
Thomas

Ellert

G-Tag läuft bei mir seit  8 Monaten ohne Fehler. Der Batterielevel hat sich in der Zeit nicht geändert und liegt bei 100% und 94%. Die nominale Reichweite liegt bei 10 m, mit sind noch keine Tags mit grösserer Reichweite untergekommen.