Fehler im Calendar-Modul nach Update

Begonnen von MCL, 02 April 2018, 19:50:50

Vorheriges Thema - Nächstes Thema

MCL

Hi,

ich habe gestern Fhem Updates eingespielt. Seit dem bekomme ich einen Fehler vom Calendar-Modul innerhalb einer Routine, die ich zum Erstellen eines WebLinks verwende:
Mein Aufruf: my $allEvents = fhem("get Abfallkalender full all");
Fehler: "Can't use an undefined value as a subroutine reference at ./FHEM/57_Calendar.pm line 2344."

Ich habe dann über FHEMWEB im Device diesen Aufruf abgesetzt: Darauf hin hat FHEM nicht mehr reagiert. Nur ein Neustart meines Raspi hat geholfen.
Wenn ich dagegen get Abfallkalender full modeUpcoming absetze, werden mir meine Termine angezeigt.

Hat jemand eine Idee wie ich dem Fehler auf die Spur kommen kann? Kann es sein, dass es eine Änderung im Modul gab?

Viele Grüße
Markus


binford6000

Hallo Markus,
habe ich auch:
Can't use an undefined value as a subroutine reference at ./FHEM/57_Calendar.pm line 2344.
In Verbindung mit Homemode wo mein nextcloud Kalender abgefragt wird:
https://forum.fhem.de/index.php/topic,64317.735.html#lastPost
FHEM crasht sofort, kann aber über Neustart wieder zum Leben erweckt werden.
Diese Funktion verursacht anscheinend den Fehler:
# get and filter events
    my %vevents= %{$hash->{".fhem"}{vevents}};
    foreach my $id (keys %vevents) {
        my $v= $vevents{$id};
        my @events= @{$v->{events}};
        foreach my $event (@events) {
            if(@filters) {
              my $match= 0;
              for my $h (@filters) {
                my $filter= \%$h;
                my $filterref= $filter->{ref};
                my $param = $filter->{param};
                my $field = $filter->{field};
                last unless(&$filterref($event, $param, $field));
                $match++;
              }
              #Debug "Filter $filterref, Parameter $param, Match $match";
              next unless $match==@filters;
            }
            if(defined($t1)) { next if(defined($event->end()) && $event->end() < $t1); }
            if(defined($t2)) { next if(defined($event->start()) && $event->start() > $t2); }
            push @result, $event;
        }
    }
    return sort { $a->start() <=> $b->start() } @result;

Zeile 2344 beginnt mit "last unless..."
VG Sebastian

CoolTux


last unless(&$filterref($event, $param, $field));


Ändern in


last unless($filterref($event, $param, $field));


reload Modulname

Und dann bitte testen.
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

binford6000

ZitatUnd dann bitte testen.
Hi Leon,
habs geändert und beim reload kommt:
syntax error at ./FHEM/57_Calendar.pm line 2344, near "$filterref("
BEGIN not safe after errors--compilation aborted at ./FHEM/57_Calendar.pm line 2525.

VG Sebastian

CoolTux

#4
Dann habe ich einen Fehler gemacht. Sorry.
Sie Zeile scheint eine Codereferenz auf zu rufen.

last unless(&$filterref($event, $param, $field));


Der Fehler muss was anderes sein.
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


                my $filterref= $filter->{ref};
                my $param = $filter->{param};
                my $field = $filter->{field};
                last unless(&$filterref($event, $param, $field));


Ich tippe darauf das $filterref nicht befüllt wird. Man müsste da Mal eine Ausgabe mit Debug einbauen.
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

Dr. Boris Neubert

Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Dr. Boris Neubert

gefixt und eingecheckt, sofort im SVN oder ab morgen 8 Uhr im Update
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

binford6000

Hallo,
hab die neue Version eingespielt.
Jetzt schmiert fhem mit dieser Meldung ab:
Can't use an undefined value as a subroutine reference at ./FHEM/57_Calendar.pm line 2379.
Wie gesagt, passiert nur wenn wie bei mir HOMEMODE auf ein Calendar device zugreift. Genauer gesagt bei
set Home updateInternalForce
Selbst das Entfernen des Kalenders via attr... brachte fhem zum Absturz. Habe das im HOMEMODE Forum auch schon gepostet.
https://forum.fhem.de/index.php/topic,64317.735.html
VG Sebastian

Dr. Boris Neubert

HOMEMODE muss angepasst werden. Näheres siehe bitte im vorgenannten Beitrag.
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

binford6000

Zitat von: Dr. Boris Neubert am 02 April 2018, 23:11:10
HOMEMODE muss angepasst werden. Näheres siehe bitte im vorgenannten Beitrag.
Danke, hab's gelesen. Dan liest bestimmt im Homemode Thread auch mit.
VG Sebastian


Gesendet von iPhone mit Tapatalk

MCL

Nach Einspielen der Updates von FHEM ist das Problem behoben.
:)
Vielen Dank
Markus