Antw:[patch] presenced, lepresenced, collectord

Begonnen von michael.winkler, 01 Februar 2018, 19:07:05

Vorheriges Thema - Nächstes Thema

michael.winkler

Hi Kollegen,

ich habe seit dem Update heute folgenden Log Einträge:


Feb  1 19:03:30 HMMWSMART04 collectord[1286]: #015PERL WARN: Use of uninitialized value in concatenation (.) or string at /usr/bin/collectord line 926, <GEN4> line 1.
Feb  1 19:03:41 HMMWSMART04 collectord[1286]: #015PERL WARN: Use of uninitialized value in concatenation (.) or string at /usr/bin/collectord line 926, <GEN4> line 1.
Feb  1 19:03:50 HMMWSMART04 collectord[1286]: #015PERL WARN: Use of uninitialized value in concatenation (.) or string at /usr/bin/collectord line 926, <GEN4> line 1.
Feb  1 19:04:00 HMMWSMART04 collectord[1286]: #015PERL WARN: Use of uninitialized value in concatenation (.) or string at /usr/bin/collectord line 926, <GEN4> line 1.


Hat das eventuell mit der Änderung zu tun?

Gruß
Michael

Markus Bloch

Zitat von: michael.winkler am 01 Februar 2018, 19:07:05
Hi Kollegen,

ich habe seit dem Update heute folgenden Log Einträge:


Feb  1 19:03:30 HMMWSMART04 collectord[1286]: #015PERL WARN: Use of uninitialized value in concatenation (.) or string at /usr/bin/collectord line 926, <GEN4> line 1.
Feb  1 19:03:41 HMMWSMART04 collectord[1286]: #015PERL WARN: Use of uninitialized value in concatenation (.) or string at /usr/bin/collectord line 926, <GEN4> line 1.
Feb  1 19:03:50 HMMWSMART04 collectord[1286]: #015PERL WARN: Use of uninitialized value in concatenation (.) or string at /usr/bin/collectord line 926, <GEN4> line 1.
Feb  1 19:04:00 HMMWSMART04 collectord[1286]: #015PERL WARN: Use of uninitialized value in concatenation (.) or string at /usr/bin/collectord line 926, <GEN4> line 1.


Hat das eventuell mit der Änderung zu tun?

Gruß
Michael

Nein, das steht im Zusammenhang mit der implementierten Raumerkennung basierend auf dem Empfangspegel (RSSI) der einzelnen Räume. Bitte ändere mal Zeile 926 wiefolgt ab:

        my $rssi_data = ($rssi_available ? join(";", map("rssi_".$_."='".$rssi_results{$_}."'", map {s/\s+/_/rg } keys %rssi_results)) : undef);

Starte anschließend collectord neu. Damit müsste die Warnung weg sein.

Viele Grüße

Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

michael.winkler

jetzt erhalte ich folgende Fehlermeldung


Feb 11 12:05:52 HMMWSMART04 collectord[489]: #015removed PID-File /var/run/collectord.pid
Feb 11 12:05:52 HMMWSMART04 collectord[489]: #015server shutdown
Feb 11 12:05:52 HMMWSMART04 systemd[1]: Stopping collecting presence state from multiple presenced instances for FHEM...
Feb 11 12:05:52 HMMWSMART04 systemd[1]: Stopped collecting presence state from multiple presenced instances for FHEM.
Feb 11 12:05:57 HMMWSMART04 systemd[1]: Started collecting presence state from multiple presenced instances for FHEM.
Feb 11 12:05:58 HMMWSMART04 collectord[1241]: Global symbol "$rssi_available" requires explicit package name (did you forget to declare "my $rssi_available"?) at /usr/bin/collectord line 926.
Feb 11 12:05:58 HMMWSMART04 collectord[1241]: Execution of /usr/bin/collectord aborted due to compilation errors.
Feb 11 12:05:58 HMMWSMART04 systemd[1]: collectord.service: Main process exited, code=exited, status=255/n/a
Feb 11 12:05:58 HMMWSMART04 systemd[1]: collectord.service: Unit entered failed state.
Feb 11 12:05:58 HMMWSMART04 systemd[1]: collectord.service: Failed with result 'exit-code'.


Meine alte Zeile sah wie folgt aus:

my $rssi_data = join(";", map("rssi_".$_."='".$rssi_results{$_}."'", map {s/\s+/_/rg } keys %rssi_results));




Markus Bloch

Mein Fehler. Ich meinte so rum:

        my $rssi_data = (%rssi_results ? join(";", map("rssi_".$_."='".$rssi_results{$_}."'", map {s/\s+/_/rg } keys %rssi_results)) : undef);

Gruß
Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

michael.winkler

Zitat von: Markus Bloch am 11 Februar 2018, 12:29:39
Mein Fehler. Ich meinte so rum:

        my $rssi_data = (%rssi_results ? join(";", map("rssi_".$_."='".$rssi_results{$_}."'", map {s/\s+/_/rg } keys %rssi_results)) : undef);

Gruß
Markus
ok, danke. Jetzt startet es wieder, ohne Fehlermeldung.

Baust Du das ins nächste Release mit ein?

PS: Zu früh gefreut. Leider kommen die Meldungen noch immer:

Feb 11 13:59:30 HMMWSMART04 collectord[2266]: #015new connection from 10.10.0.230:45837
Feb 11 13:59:30 HMMWSMART04 collectord[2266]: #015new connection from 10.10.0.230:45838
Feb 11 13:59:30 HMMWSMART04 collectord[2266]: #015created thread 2 for processing device 7C:2F:80:AD:B8:27 in room Haus Flur for peer 10.10.0.230 (UUID: 4decb19645a8836f0fd33c924053d750)
Feb 11 13:59:30 HMMWSMART04 collectord[2266]: #015created thread 3 for processing device 7C:2F:80:AD:B8:6B in room Haus Flur for peer 10.10.0.230 (UUID: f2cda0d22f369698eb2fd018c2f44fc4)
Feb 11 13:59:31 HMMWSMART04 collectord[2266]: #015PERL WARN: Use of uninitialized value in concatenation (.) or string at /usr/bin/collectord line 926, <GEN3> line 1.
Feb 11 13:59:31 HMMWSMART04 collectord[2266]: #015PERL WARN: Use of uninitialized value in concatenation (.) or string at /usr/bin/collectord line 926, <GEN3> line 1.
Feb 11 13:59:31 HMMWSMART04 collectord[2266]: #015PERL WARN: Use of uninitialized value in concatenation (.) or string at /usr/bin/collectord line 926, <GEN3> line 1.
Feb 11 13:59:31 HMMWSMART04 collectord[2266]: #015PERL WARN: Use of uninitialized value in concatenation (.) or string at /usr/bin/collectord line 926, <GEN3> line 1.
Feb 11 13:59:32 HMMWSMART04 collectord[2266]: #015PERL WARN: Use of uninitialized value in concatenation (.) or string at /usr/bin/collectord line 926, <GEN1> line 2.
Feb 11 13:59:33 HMMWSMART04 collectord[2266]: #015PERL WARN: Use of uninitialized value in concatenation (.) or string at /usr/bin/collectord line 926, <GEN1> line 2.
Feb 11 13:59:42 HMMWSMART04 collectord[2266]: #015PERL WARN: Use of uninitialized value in concatenation (.) or string at /usr/bin/collectord line 926, <GEN1> line 2.
Feb 11 13:59:42 HMMWSMART04 collectord[2266]: #015PERL WARN: Use of uninitialized value in concatenation (.) or string at /usr/bin/collectord line 926, <GEN1> line 2.
Feb 11 13:59:52 HMMWSMART04 collectord[2266]: #015PERL WARN: Use of uninitialized value in concatenation (.) or string at /usr/bin/collectord line 926, <GEN1> line 2.
Feb 11 13:59:52 HMMWSMART04 collectord[2266]: #015PERL WARN: Use of uninitialized value in concatenation (.) or string at /usr/bin/collectord line 926, <GEN1> line 2.
Feb 11 14:00:02 HMMWSMART04 collectord[2266]: #015PERL WARN: Use of uninitialized value in concatenation (.) or string at /usr/bin/collectord line 926, <GEN1> line 2.
Feb 11 14:00:02 HMMWSMART04 collectord[2266]: #015PERL WARN: Use of uninitialized value in concatenation (.) or string at /usr/bin/collectord line 926, <GEN1> line 2.



Markus Bloch

Sofern wir die richtige Lösung haben, baue ich das natürlich ein.

Da ich die RSSI-Erkennung bei mir jedoch mangels Infrastruktur nicht testen kann, bin ich auf Rückmeldungen angewiesen.

Kannst du bitte vor die Zeile 926 folgende Zeilen einfügen?

        use Data::Dumper;
        Log 0, "rssi_results: ".Dumper(\%rssi_results);

Danke, und dann mal bitte die Logmeldungen dazu posten.

Gruß
Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

michael.winkler

Zitat von: Markus Bloch am 11 Februar 2018, 14:11:14
Sofern wir die richtige Lösung haben, baue ich das natürlich ein.

Da ich die RSSI-Erkennung bei mir jedoch mangels Infrastruktur nicht testen kann, bin ich auf Rückmeldungen angewiesen.

Kannst du bitte vor die Zeile 926 folgende Zeilen einfügen?

        use Data::Dumper;
        Log 0, "rssi_results: ".Dumper(\%rssi_results);

Danke, und dann mal bitte die Logmeldungen dazu posten.

Gruß
Markus

anbei das neue LOG


Feb 11 19:25:03 HMMWSMART04 collectord[10211]: #015new connection from 10.10.0.230:36620
Feb 11 19:25:03 HMMWSMART04 collectord[10211]: #015created thread 2 for processing device 7C:2F:80:AD:B8:6B in room Haus Flur for peer 10.10.0.230 (UUID: e2ba2a78216b2bd2f09c2bcb4a66eb1f)
Feb 11 19:25:03 HMMWSMART04 collectord[10211]: #015created thread 3 for processing device 7C:2F:80:AD:B8:3A in room Haus Flur for peer 10.10.0.230 (UUID: c3efd7bd765a168e2f6226ff1d1f22fc)
Feb 11 19:25:04 HMMWSMART04 collectord[10211]: #015rssi_results: $VAR1 = {
Feb 11 19:25:04 HMMWSMART04 collectord[10211]:           'Haus Flur' => '-59'
Feb 11 19:25:04 HMMWSMART04 collectord[10211]:         };
Feb 11 19:25:04 HMMWSMART04 collectord[10211]: #015PERL WARN: Use of uninitialized value in concatenation (.) or string at /usr/bin/collectord line 930, <GEN3> line 1.
Feb 11 19:25:04 HMMWSMART04 collectord[10211]: #015rssi_results: $VAR1 = {
Feb 11 19:25:04 HMMWSMART04 collectord[10211]:           'Haus Flur' => '-65'
Feb 11 19:25:04 HMMWSMART04 collectord[10211]:         };
Feb 11 19:25:04 HMMWSMART04 collectord[10211]: #015PERL WARN: Use of uninitialized value in concatenation (.) or string at /usr/bin/collectord line 930, <GEN3> line 1.
Feb 11 19:25:04 HMMWSMART04 collectord[10211]: #015rssi_results: $VAR1 = {
Feb 11 19:25:04 HMMWSMART04 collectord[10211]:           'Haus Flur' => '-60'
Feb 11 19:25:04 HMMWSMART04 collectord[10211]:         };
Feb 11 19:25:04 HMMWSMART04 collectord[10211]: #015PERL WARN: Use of uninitialized value in concatenation (.) or string at /usr/bin/collectord line 930, <GEN3> line 1.
Feb 11 19:25:04 HMMWSMART04 collectord[10211]: #015rssi_results: $VAR1 = {
Feb 11 19:25:04 HMMWSMART04 collectord[10211]:           'Haus Flur' => '-65'
Feb 11 19:25:04 HMMWSMART04 collectord[10211]:         };
Feb 11 19:25:04 HMMWSMART04 collectord[10211]: #015PERL WARN: Use of uninitialized value in concatenation (.) or string at /usr/bin/collectord line 930, <GEN3> line 1.
Feb 11 19:25:05 HMMWSMART04 collectord[10211]: #015rssi_results: $VAR1 = {
Feb 11 19:25:05 HMMWSMART04 collectord[10211]:           'Haus Flur' => '-63'
Feb 11 19:25:05 HMMWSMART04 collectord[10211]:         };
Feb 11 19:25:05 HMMWSMART04 collectord[10211]: #015PERL WARN: Use of uninitialized value in concatenation (.) or string at /usr/bin/collectord line 930, <GEN3> line 2.
Feb 11 19:25:06 HMMWSMART04 collectord[10211]: #015rssi_results: $VAR1 = {
Feb 11 19:25:06 HMMWSMART04 collectord[10211]:           'Haus Flur' => '-63'
Feb 11 19:25:06 HMMWSMART04 collectord[10211]:         };
Feb 11 19:25:06 HMMWSMART04 collectord[10211]: #015PERL WARN: Use of uninitialized value in concatenation (.) or string at /usr/bin/collectord line 930, <GEN3> line 2.

Happy Fhem User

funktioniert dies?


my $rssi_data = (%rssi_results ? join(";", map { my $n=$_; $n=s/\s+/_/rg; "rssi_".$n."='".$rssi_results{$_}."'" } keys %rssi_results) : undef);


Mfg.

Markus Bloch

Ok, neuer Versuch:

my $rssi_data = (%rssi_results ? join(";", map { "rssi_".$_."='".$rssi_results{$_}."'" } map {s/\s+/_/rg } keys %rssi_results)) : undef);

Gruß
Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

michael.winkler

Zitat von: Markus Bloch am 11 Februar 2018, 21:21:23
Ok, neuer Versuch:

my $rssi_data = (%rssi_results ? join(";", map { "rssi_".$_."='".$rssi_results{$_}."'" } map {s/\s+/_/rg } keys %rssi_results)) : undef);

Gruß
Markus
Jetzt steht wieder folgendes im LOG


Feb 11 21:48:40 HMMWSMART04 systemd[1]: Stopping collecting presence state from multiple presenced instances for FHEM...
Feb 11 21:48:40 HMMWSMART04 systemd[1]: Stopped collecting presence state from multiple presenced instances for FHEM.
Feb 11 21:48:45 HMMWSMART04 systemd[1]: Started collecting presence state from multiple presenced instances for FHEM.
Feb 11 21:48:46 HMMWSMART04 collectord[14234]: syntax error at /usr/bin/collectord line 927, near ")) "
Feb 11 21:48:46 HMMWSMART04 collectord[14234]: Global symbol "$rssi_data" requires explicit package name (did you forget to declare "my $rssi_data"?) at /usr/bin/collectord line 932.
Feb 11 21:48:46 HMMWSMART04 collectord[14234]: Global symbol "$rssi_data" requires explicit package name (did you forget to declare "my $rssi_data"?) at /usr/bin/collectord line 932.
Feb 11 21:48:46 HMMWSMART04 collectord[14234]: Execution of /usr/bin/collectord aborted due to compilation errors.
Feb 11 21:48:46 HMMWSMART04 systemd[1]: collectord.service: Main process exited, code=exited, status=255/n/a
Feb 11 21:48:46 HMMWSMART04 systemd[1]: collectord.service: Unit entered failed state.
Feb 11 21:48:46 HMMWSMART04 systemd[1]: collectord.service: Failed with result 'exit-code'.

Markus Bloch

Ich war mal so frei und habe dein Problem aus dem bestehenden Thema heraus getrennt.

Da war noch ein Klammerfehler enthalten:

my $rssi_data = (%rssi_results ? join(";", map { "rssi_".$_."='".$rssi_results{$_}."'" } map {s/\s+/_/rg } keys %rssi_results) : undef);
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

michael.winkler

Zitat von: Markus Bloch am 11 Februar 2018, 22:16:48
Ich war mal so frei und habe dein Problem aus dem bestehenden Thema heraus getrennt.

Da war noch ein Klammerfehler enthalten:

my $rssi_data = (%rssi_results ? join(";", map { "rssi_".$_."='".$rssi_results{$_}."'" } map {s/\s+/_/rg } keys %rssi_results) : undef);
Habe nur durch Zufall den neuen thread gefunden ;-)

Änderung hat leider nichts gebracht


Feb 12 13:20:53 HMMWSMART04 collectord[13793]: #015created socket on 0.0.0.0 with port 5222
Feb 12 13:21:47 HMMWSMART04 collectord[13793]: #015new connection from 10.10.0.230:53450
Feb 12 13:21:48 HMMWSMART04 collectord[13793]: #015created thread 1 for processing device 7C:2F:80:AD:B8:3A in room Haus Flur for peer 10.10.0.230 (UUID: 5a6eeba90a90268be942c938b71b5264)
Feb 12 13:21:48 HMMWSMART04 collectord[13793]: #015new connection from 10.10.0.230:53451
Feb 12 13:21:48 HMMWSMART04 collectord[13793]: #015new connection from 10.10.0.230:53452
Feb 12 13:21:48 HMMWSMART04 collectord[13793]: #015created thread 2 for processing device 7C:2F:80:AD:B8:27 in room Haus Flur for peer 10.10.0.230 (UUID: aa8408681cef9491cab63c30ae16d434)
Feb 12 13:21:48 HMMWSMART04 collectord[13793]: #015created thread 3 for processing device 7C:2F:80:AD:B8:6B in room Haus Flur for peer 10.10.0.230 (UUID: 9dcdbcedb02ab5e47569806daf5291c0)
Feb 12 13:21:49 HMMWSMART04 collectord[13793]: #015PERL WARN: Use of uninitialized value in concatenation (.) or string at /usr/bin/collectord line 927, <GEN3> line 1.
Feb 12 13:21:49 HMMWSMART04 collectord[13793]: #015PERL WARN: Use of uninitialized value in concatenation (.) or string at /usr/bin/collectord line 927, <GEN3> line 1.
Feb 12 13:21:51 HMMWSMART04 collectord[13793]: #015PERL WARN: Use of uninitialized value in concatenation (.) or string at /usr/bin/collectord line 927, <GEN3> line 2.
Feb 12 13:22:00 HMMWSMART04 collectord[13793]: #015PERL WARN: Use of uninitialized value in concatenation (.) or string at /usr/bin/collectord line 927, <GEN3> line 2.

Markus Bloch

Hallo Michael,

ich habe jetzt nochmal intensiv bei mir nachgetestet und habe den Fehler gefunden (Blöder Denkfehler):

    if(@rooms > 0)
    {
        return "present".
               ";rooms='".join(",",sort  @rooms)."'".
               (defined($hroom) ? ";room='".$hroom."'" : "").
               (%rssi_results ? ";".join(";", map { "rssi_".($_ =~ s/\s+/_/gr)."='".$rssi_results{$_}."'" } keys %rssi_results) : "").
               (defined($hroom) ? ";".$hash->{$hroom}{data} : (defined($hash->{$rooms[0]}{data}) ? ";".$hash->{$rooms[0]}{data} : ""));
    }
    else
    {
        return  "absence;room=;rooms=;rssi=;";
    }


Damit funktioniert das nun bei mir problemlos.
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

michael.winkler

Zitat von: Markus Bloch am 13 Februar 2018, 11:05:59
Hallo Michael,

ich habe jetzt nochmal intensiv bei mir nachgetestet und habe den Fehler gefunden (Blöder Denkfehler):

    if(@rooms > 0)
    {
        return "present".
               ";rooms='".join(",",sort  @rooms)."'".
               (defined($hroom) ? ";room='".$hroom."'" : "").
               (%rssi_results ? ";".join(";", map { "rssi_".($_ =~ s/\s+/_/gr)."='".$rssi_results{$_}."'" } keys %rssi_results) : "").
               (defined($hroom) ? ";".$hash->{$hroom}{data} : (defined($hash->{$rooms[0]}{data}) ? ";".$hash->{$rooms[0]}{data} : ""));
    }
    else
    {
        return  "absence;room=;rooms=;rssi=;";
    }


Damit funktioniert das nun bei mir problemlos.
ja, jetzt funktioniert es.

Markus Bloch

Ich hab soeben ein neues Debian-Paket gebaut.

Gruß
Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)