FHEM Forum

FHEM - Hausautomations-Systeme => Unterstützende Dienste => Kalendermodule => Thema gestartet von: MCL am 02 April 2018, 19:50:50

Titel: Fehler im Calendar-Modul nach Update
Beitrag von: MCL am 02 April 2018, 19:50:50
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

Titel: Antw:Fehler im Calendar-Modul nach Update
Beitrag von: binford6000 am 02 April 2018, 20:03:48
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 (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
Titel: Antw:Fehler im Calendar-Modul nach Update
Beitrag von: CoolTux am 02 April 2018, 20:12:05

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


Ändern in


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


reload Modulname

Und dann bitte testen.
Titel: Antw:Fehler im Calendar-Modul nach Update
Beitrag von: binford6000 am 02 April 2018, 20:20:27
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
Titel: Antw:Fehler im Calendar-Modul nach Update
Beitrag von: CoolTux am 02 April 2018, 20:23:44
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.
Titel: Antw:Fehler im Calendar-Modul nach Update
Beitrag von: CoolTux am 02 April 2018, 20:35:13

                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.
Titel: Antw:Fehler im Calendar-Modul nach Update
Beitrag von: Dr. Boris Neubert am 02 April 2018, 21:15:23
Ich schaue es mir an.
Titel: Antw:Fehler im Calendar-Modul nach Update
Beitrag von: Dr. Boris Neubert am 02 April 2018, 22:13:20
gefixt und eingecheckt, sofort im SVN oder ab morgen 8 Uhr im Update
Titel: Antw:Fehler im Calendar-Modul nach Update
Beitrag von: binford6000 am 02 April 2018, 22:43:14
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 (https://forum.fhem.de/index.php/topic,64317.735.html)
VG Sebastian
Titel: Antw:Fehler im Calendar-Modul nach Update
Beitrag von: Dr. Boris Neubert am 02 April 2018, 23:11:10
HOMEMODE muss angepasst werden. Näheres siehe bitte im vorgenannten Beitrag.
Titel: Antw:Fehler im Calendar-Modul nach Update
Beitrag von: binford6000 am 02 April 2018, 23:25:29
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
Titel: Antw:Fehler im Calendar-Modul nach Update
Beitrag von: MCL am 03 April 2018, 09:01:47
Nach Einspielen der Updates von FHEM ist das Problem behoben.
:)
Vielen Dank
Markus