[gelöst] Mehrere Problem nach Neustart

Begonnen von Neu_bei_FHEM, 31 Januar 2016, 10:35:28

Vorheriges Thema - Nächstes Thema

Neu_bei_FHEM

Hallo ins Forum,

mein FHEM lief seit mehr als zwei Monaten ohne Probleme und steuerte meine Rolladen zuverlässig morgens und abends (abhängig vom Sonnenstand mit entsprechenden Zufallszeiten zur Variation).

FHEM läuft einem Raspberry und ich steuere über einen CUL.


Gestern musste ich kurz den Strom vom Raspberry trennen und seitdem läuft nichts mehr... :'( :'(

Ich habe zumindest zwei Probleme:
1- Aufrufe von Funktionen in meiner "99_Rolladen_myUtils.pm", die bisher funktioniert haben gehen nicht mehr: Hier kommt die Meldung: "Undefined subroutine &main::Rolladen_loeschen called at (eval 116) line 1."
2. Beim Start bekomme ich haufenweise Meldungen, dass ich "WARNING: unsupported character in reading RegL_03:CUL_HM_HM_RC_8_2F525F_Btn_08 "habe. Hier habe ich versucht im Forum einen entsprechenden Thread zu finden, aber den den ich gefunden habe, hat mir nicht wirklich weitergeholfen. Was muss ich bei den Devices mit den Meldungen genau machen.


Ich habe zwar die Suche genutzt, aber keine richtigen Anleitungen für "Dummys" gefunden. Kann mir jemand einen Link zu den Lösungen schicken, die ein Normalsterblicher ohne tiefe Detailkenntnisse von FHEM versteht?


Gruss
Andreas

franky08

Zitat1- Aufrufe von Funktionen in meiner "99_Rolladen_myUtils.pm", die bisher funktioniert haben gehen nicht mehr
Dann den Abschnitt aus der utils mal posten

Zitat2. Beim Start bekomme ich haufenweise Meldungen, dass ich "WARNING: unsupported character in reading RegL_03:CUL_HM_HM_RC_8_2F525F_Btn_08 "habe.

Da hast du wahrscheinlich ein notify oder DOIF oder... definiert wo ein Zeichen drin ist welches nicht ok ist
Debian Bookworm auf HUNSN / Debian Bullseye auf 2.ter HUNSN F2F an 2x RaspiB
mit FHEM aktuell
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu, raspmatic_rpi3, HMIP-HCU1

marvin78

#2
zu 2) Was du wegen der unsupported character Meldungen machen musst, steht ja in den Meldungen am Ende. Dem würde ich einfach folgen. Erst einmal betrifft es dich nicht direkt. Ein update könnte direkt helfen, auf lange Sicht aber sicher das Ansprechen des Modul maintainers. Hintergrund: readings dürfen gewisse Zeichen nicht mehr beinhalten. Einige Modul-Autoren müssen hier nachbessern. Martin hat hier aber eigentlich schon nachgebessert, sodass ein update und ein neu aufbereiten der Readings helfen sollte.

zu 1) Gibt es denn die Funktion in der 99_Rolladen_myUtils.pm? Gibt es die Datei? Kann sie gelesen werden (Rechte). Wurde sie geladen (das siehtst du ggf. im Log). Hier fehlen Infos, Code.


Und was mich interessiert: Was machst du mit deinem Usernamen, wenn du mal nicht mehr "Neu_bei_FHEM" bist?

Benni

Hast du kürzlich (eventuell seit längerem) ein update durchgeführt und eventuell direkt danach keinen shutdown restart durchgeführt, so dass ein Neustart erst jetzt durch das Trennen vom Strom erfolgt ist?

Es scheint so, dass deine 99_Rolladen_myUtils.pm, wahrscheinlich durch Fehler darin, nicht geladen werden kann. (sollte aber auch im Log zu finden sein)
Ich würde mal die 99_Rolladen_myUtils.pm mit den Information hieraus auf evtl. Probleme überprüfen.

Die WARNINGs bzg. Invalid Character in Readings kannst du erst mal ignorieren.
die kommen von Homematic devices. Seit kurzem sind Doppelpunkte in Readings nicht mehr erlaubt. Das wurden aber früher welche durch CUL_HM erzeugt. (Darum mußt du dich aber nicht weiter kümmern)

Ansonsten eventuell nochmal ein update durchführen (vielleicht hat ein vorheriges nicht vollständig funktioniert?)

Backup hast du?
Ein Defekt der SD-Karte kann natürlich auch gerne mal zu merkwürdigem Verhalten führen.

Neu_bei_FHEM

Hallo franky08,

Danke schon mal für die schnelle Antwort.

Das erste Problem habe ich gefunden: die 99_xxx.pm war deaktiviert, da gem. FHEM Barewords in verwendung waren... Komischerweise hat es bis gestern funktioniert.... Habe alle fraglichen Barewords-Funktionsaufrufe in "" gesetzt und jetzt scheint es zu funktionieren.

Das mit den notify muss ich mir mal ansehen. jetzt kann ich wenigstens gezielt suchen.

Ich melde mich , wenn ich was gefunden habe (oder auch wenn nicht)...

Gruss
Andreas

Neu_bei_FHEM

Also das erste Problem ist tatsächlich gelöst.
Ich hatte eine Unterroutine zweimal unter falschem Namen aufgerufen. Daher meckerte FHEM wegen Barewords, da er dier Routine nicht finden konnte.

Und mit dem zweiten problem warte ich mal auf ein Update für die HM-Module (oder wie bereite ich die readings neu auf, wie von Marvin78 vorgeschlagen)?


@Marvin78: Im Gegensatz zu Euch fühle ich mich immer Neu_bei_FHEM, da ich noch viel Lernen kann und muss... :-))

Andreas

marvin78

Wieso warten? Von wann ist denn dein letztes update?

Neu_bei_FHEM

#7
Hallo Marvin78,

letztes Update habe ich gerade eben gemacht.

Und es scheint tatsächlich funktioniert zu haben. Hatte im logfile gesucht und bin scheinbar noch auf die alten Meldungen "hereingefallen".


Jetzt habe ich nur wieder dieses BareWord Problem....

Mal sehen was diesmal noch falsch ist..

Gruss
Andreas

Neu_bei_FHEM

Also das mit dem Barewort kriege ich nicht hin.

In meiner 99_99_Rolladen_myUtils.pm kriege ich folgenden Fehler:

reload: Error:Modul 99_Rolladen_myUtils deactivated:
Bareword "Rolladen_loeschen" not allowed while "strict subs" in use at ./FHEM/99_Rolladen_myUtils.pm line 17.

und hier der Teil der Datei:
package main;
use strict;
use warnings;
use POSIX;
sub
Rolladen_myUtils_Initialize($$)
{
   my ($hash) = @_;
}

###################################################################################################################
####Rolladensteuerung

#########Aufrufen mit {Rolladen_morgens($we)}
sub Rolladen_morgens ($)
{ my ($Wochenende) = @_;
Rolladen_loeschen ;
if(Value("Sommer") eq "Ja") {if(Value("Abwesend") eq "Daheim") {Rolladen_morgens_SommerWE} };
if(Value("Sommer") eq "Ja") {if(Value("Abwesend") eq "Urlaub") {Rolladen_morgens_Sommer} };
if(Value("Sommer") eq "Ja") {if(Value("Abwesend") eq "Normal") {if($Wochenende) {Rolladen_morgens_SommerWE} }};
if(Value("Sommer") eq "Ja") {if(Value("Abwesend") eq "Normal") {if(!$Wochenende) {Rolladen_morgens_Sommer} }};
if(Value("Sommer") eq "Nein") {if(Value("Abwesend") eq "Daheim") {Rolladen_morgens_WE} };
if(Value("Sommer") eq "Nein") {if(Value("Abwesend") eq "Urlaub") {Rolladen_morgens_normal} };
if(Value("Sommer") eq "Nein") {if(Value("Abwesend") eq "Normal") {if($Wochenende) {Rolladen_morgens_WE} }};
if(Value("Sommer") eq "Nein") {if(Value("Abwesend") eq "Normal") {if(!$Wochenende)  {Rolladen_morgens_normal} }};

}


Ich habe in der zeile 17 schon folgende versionen probiert:
{Rolladen_loeschen} ;
{"Rolladen_loeschen"} ;
Rolladen_loeschen ;


Wenn ich die Datei manuell nachlade, dann funktioniert der Aufruf, aber nicht beim automatischen Start von FHEM

Gruss
Andreas

betateilchen

Du versuchst in Zeile 17 eine Funktion namens Rolladen_loeschen aufzurufen. Warum? Wo ist diese Funktion?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Neu_bei_FHEM

#10
Hallo betateilchen,

diese Funktion wird weiter unten in der Datei wie folgt definiert:

#########Aufrufen mit {Rolladen_loeschen}
sub Rolladen_loeschen () {
fhem("delete BD_Roll_hoch");
fhem("delete KU_Roll_hoch");
fhem("delete KR_Roll_hoch");
fhem("delete WZ_Roll_hoch");
fhem("delete OF_Roll_hoch");
fhem("delete SZ_Roll_hoch");
fhem("delete BD_Roll_runter");

fhem("delete BD_Roll_runter");
fhem("delete KU_Roll_runter");
fhem("delete KR_Roll_runter");
fhem("delete WZ_Roll_runter");
fhem("delete WZ_Roll_runter2");
fhem("delete OF_Roll_runter");
fhem("delete SZ_Roll_runter");

fhem("delete WZ_Roll_Status");
}


Diese Funktion soll einfach alle möglichen schon definierten Rolladenfahrzeiten löschen, bevor ich die neuen festlege...

Gruss
Andreas

franky08

Dann ist wahrscheinlich das "ich weiter unten" das Problem, da zum Zeitpunkt des Aufrufs die sub noch nicht definiert ist
Debian Bookworm auf HUNSN / Debian Bullseye auf 2.ter HUNSN F2F an 2x RaspiB
mit FHEM aktuell
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu, raspmatic_rpi3, HMIP-HCU1

betateilchen

Zitat von: Neu_bei_FHEM am 31 Januar 2016, 11:36:34
diese Funktion wird weiter unten in der Datei wie folgt definiert:

Genau das "weiter unten" ist das Problem. Du verwendest den Funktionsaufruf bereits an einer Stelle, wo die Funktion noch gar nicht bekannt ist.

Setze doch die Funktion "Rolladen_loeschen" einfach an den Anfang der 99_myUtils.pm damit sie bereits definiert ist, bevor sie verwendet wird.


-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Neu_bei_FHEM

Hallo franky08,

das heist, ich sollte die Datei so aufbauen, dass erst die subroutinen definiert werden und danach erst in weiteren Routinen benannt werden (d.h. also praktisch komplett anders herum, ich hatte bisher vom allgemeinen zum speziellen die Routinen aufgebaut).

komischerweise funktionieren aber die anderen RoutineAufrufe, wie z.B. {Rolladen_morgens_SommerWE}, die ich auch erst später definiere...


Ich werde es auf jeden Fall mal umstellen... Das dauert aber ein bischen.
melde mich wenn es funktioniert (oder auch wenn nicht)...

@betateilchen: Wird ne grössere Umstellung, Muss erst mal alles rumkopieren...


Gruss
Andreas

Neu_bei_FHEM

Hallo ins forum,

Danke für die Hilfe (@speziell betateilchen, Franky08, Marvin 78 und benny (ohne Reihenfolge)) und vor allem Geduld solche Anfängerfragen zu lösen.

meine Probleme wurden gelöst. Ich glaube da hätte ich noch Wochen suchen können und wäre nicht auf die Lösung gekommen.


Jetzt habe ich keinerlei Fehlermeldungen bei einem Shutdown Restart...




Gruss
Andreas