Falscher Code in 99_myUtils.pm legt den Raspberry komplett lahm?

Begonnen von Pi_01, 16 April 2020, 08:52:23

Vorheriges Thema - Nächstes Thema

Pi_01

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?

KernSani

Wie wird denn ,,meineFunktion" aufgerufen?


Gesendet von iPhone mit Tapatalk
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Beta-User

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!
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

frank

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.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

Otto123

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!
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Pi_01

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();}

KernSani

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...   
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Beta-User

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';
}

Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

betateilchen

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.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

frank

FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

CoolTux

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

betateilchen

#11
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.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

CoolTux

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.
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

betateilchen

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.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

CoolTux

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
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