FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Pi_01 am 16 April 2020, 08:52:23

Titel: Falscher Code in 99_myUtils.pm legt den Raspberry komplett lahm?
Beitrag von: Pi_01 am 16 April 2020, 08:52:23
Guten Morgen an alle!

Ich experimentierte heute morgen in der Datei 99_myUtils.pm, und fügte in meiner Funktion folgenden Code ein:

sub meineFunktion{
my $leistung = '123456';
fhem("setreading meinDevice1 Leistung $leistung");
}


Als ich den Code speicherte, war FHEM plötzlich nicht mehr ansprechbar. Und nicht nur das - mein Raspberry konnte zwar noch angepingt werden, jedoch war der SSH-Zugriff auch nicht mehr möglich.
Also steckte ich am PI die Maus, Tastatur und Monitor an, und siehe da, nach dem Bootvorgang konnte ich ca. 15 Sekunden mit dem Pi arbeiten, bevor er sich aufhing.
In diesen 15 Sekunden schaffte ich es, über die Konsole in der oben genannten Datei die Codezeile

fhem("setreading meinDevice1 Leistung $leistung");

zu entfernen. Seitdem läuft der Pi, und auch FHEM, wieder ganz normal.

Kann mir jemand erklären, warum diese Codezeile den Pi komplett in die Knie zwingt?
Titel: Antw:Falscher Code in 99_myUtils.pm legt den Raspberry komplett lahm?
Beitrag von: KernSani am 16 April 2020, 08:54:45
Wie wird denn ,,meineFunktion" aufgerufen?


Gesendet von iPhone mit Tapatalk
Titel: Antw:Falscher Code in 99_myUtils.pm legt den Raspberry komplett lahm?
Beitrag von: Beta-User am 16 April 2020, 08:55:18
Hast du die Hinweise beachtet zum Aufbau einer myUtils-Datei?

(Stehen in der Datei selbst und im Wiki).

Was steht im log?

Und: JA, man kann sich mit eigenem Code ins Abseits schießen...
Von daher: versuche erst mal FHEM zu verstehen, bevor du Stufe 2 zündest!
Titel: Antw:Falscher Code in 99_myUtils.pm legt den Raspberry komplett lahm?
Beitrag von: frank am 16 April 2020, 09:16:18
moin,

mal angenommen:
die datei wurde mit fhem (edit files) editiert und gespeichert.

frage:
wird denn bei diesem save automatisch ein reload der datei erzeugt?

wenn nicht, verstehe ich nicht, was da passiert sein könnte.
Titel: Antw:Falscher Code in 99_myUtils.pm legt den Raspberry komplett lahm?
Beitrag von: Otto123 am 16 April 2020, 09:16:41
Zitat von: Beta-User am 16 April 2020, 08:55:18
(Stehen in der Datei selbst und im Wiki).
Genauer: stehen in der Template Datei! Du musst dir die Datei aus einem Template erzeugen und nicht irgendwas reinschreiben!
Titel: Antw:Falscher Code in 99_myUtils.pm legt den Raspberry komplett lahm?
Beitrag von: Pi_01 am 16 April 2020, 09:22:44
Zitat von: KernSani am 16 April 2020, 08:54:45
Wie wird denn ,,meineFunktion" aufgerufen?

Ich hatte mir ein HTTPMOD-Device angelegt, dass mir die Bezinpreise anzeigt. Über das stateFormat Attribut hatte ich dann testweise die Funktion eingebaut:

attr MeineBezinpreise stateFormat {return ReadingsVal($name,"MeinErsterInhalt","").": ".meineFunktion();}
Titel: Antw:Falscher Code in 99_myUtils.pm legt den Raspberry komplett lahm?
Beitrag von: KernSani am 16 April 2020, 11:38:57
Zitat von: Pi_01 am 16 April 2020, 09:22:44
Ich hatte mir ein HTTPMOD-Device angelegt, dass mir die Bezinpreise anzeigt. Über das stateFormat Attribut hatte ich dann testweise die Funktion eingebaut:

attr MeineBezinpreise stateFormat {return ReadingsVal($name,"MeinErsterInhalt","").": ".meineFunktion();}
es ist zumindest gewagt, in stateFormat ein setreading aufzurufen... Ich kann mir eigentlich nur vorstellen, dass du es hier irgendwie schaffst einen endlos-loop zu erzeugen... aber selbst das sollte den RasPi eigentlich nicht gleich killen...   
Titel: Antw:Falscher Code in 99_myUtils.pm legt den Raspberry komplett lahm?
Beitrag von: Beta-User am 16 April 2020, 11:46:15
Grummel, bei meinen Hinweisen (mal wieder: in einem anderen Thread desselben TE's...) hatte ich ausdrücklich auf ein Beispiel bezug genommen, aber es mußte ja scheinbar unbedingt anders sein...

FALLS (!) die myUtils-Datei vom Aufbau her an sich ok sein sollte, würde ich mal vorschlagen, den Code so zu ändern:
sub meineFunktion{
  return '123456';
}

Titel: Antw:Falscher Code in 99_myUtils.pm legt den Raspberry komplett lahm?
Beitrag von: betateilchen am 16 April 2020, 11:47:41
Zitat von: frank am 16 April 2020, 09:16:18
mal angenommen:
die datei wurde mit fhem (edit files) editiert und gespeichert.

frage:
wird denn bei diesem save automatisch ein reload der datei erzeugt?

Ja.
Titel: Antw:Falscher Code in 99_myUtils.pm legt den Raspberry komplett lahm?
Beitrag von: frank am 16 April 2020, 12:06:59
Zitat von: betateilchen am 16 April 2020, 11:47:41
Ja.
merci
Titel: Antw:Falscher Code in 99_myUtils.pm legt den Raspberry komplett lahm?
Beitrag von: CoolTux am 16 April 2020, 12:18:30
Zitat von: betateilchen am 16 April 2020, 11:47:41
Ja.

Das ist aber neu. Oder besser so erst 2 Jahre alt. Früher ging das nicht.
Titel: Antw:Falscher Code in 99_myUtils.pm legt den Raspberry komplett lahm?
Beitrag von: betateilchen am 16 April 2020, 12:34:54
Zitat von: CoolTux am 16 April 2020, 12:18:30
Das ist aber neu. Oder besser so erst 2 Jahre alt. Früher ging das nicht.

Das ist eine sehr gewagte Behauptung.

Als ich 2014 die configDB veröffentlicht habe (Rev #5080), war das Verhalten jedenfalls schon so.
Titel: Antw:Falscher Code in 99_myUtils.pm legt den Raspberry komplett lahm?
Beitrag von: CoolTux am 16 April 2020, 13:01:04
Zitat von: betateilchen am 16 April 2020, 12:34:54
Das ist eine sehr gewagte Behauptung.

Als ich 2014 die configDB veröffentlicht habe (Rev #5080), war das Verhalten jedenfalls schon so.

Interessant. Ich kann mich erinnern das wie ich 2015 mit myUtils anfing eine neu eingetragene sub mit beim Aufruf mit Fehler kam. Müsste immer reload machen.
Titel: Antw:Falscher Code in 99_myUtils.pm legt den Raspberry komplett lahm?
Beitrag von: betateilchen am 16 April 2020, 14:42:22
Kann es sein, dass Du gerade den automatischen reload nach dem Edit mit dem automatischen perlSyntaxCheck verwechselst? Dieser kam in der Tat erst später, wenn ich mich recht erinnere, muss das Anfang 2016 gewesen sein.
Titel: Antw:Falscher Code in 99_myUtils.pm legt den Raspberry komplett lahm?
Beitrag von: CoolTux am 16 April 2020, 14:56:51
Zitat von: betateilchen am 16 April 2020, 14:42:22
Kann es sein, dass Du gerade den automatischen reload nach dem Edit mit dem automatischen perlSyntaxCheck verwechselst? Dieser kam in der Tat erst später, wenn ich mich recht erinnere, muss das Anfang 2016 gewesen sein.

Möglich. Aber gut zu wissen daß es automatisch geht. Spare ich mir einen Arbeitsschritt.
Danke
Titel: Antw:Falscher Code in 99_myUtils.pm legt den Raspberry komplett lahm?
Beitrag von: Beta-User am 16 April 2020, 14:59:35
Ihr schaut aber teilweise selten ins log ::) ... Steht doch dort (in der Richtung): Perl warning: redefined routine xyz... Weiß nur grade nicht, welches loglevel.
Titel: Antw:Falscher Code in 99_myUtils.pm legt den Raspberry komplett lahm?
Beitrag von: CoolTux am 16 April 2020, 15:12:18
Sollte unabhängig vom Loglevel sein
Titel: Antw:Falscher Code in 99_myUtils.pm legt den Raspberry komplett lahm?
Beitrag von: betateilchen am 16 April 2020, 15:13:25
2020.04.16 15:12:35 1: PERL WARNING: Subroutine myUtils_Initialize redefined at ./FHEM/99_myUtils.pm line 15.