Absturz durch Fehler in 10_CUL_HM.pm ?

Begonnen von flummy1978, 29 Oktober 2020, 00:09:56

Vorheriges Thema - Nächstes Thema

flummy1978

Hallöchen,

ich wollte grad ein paar Werte an den Thermostaten ändern und habe festgestellt, dass wenn ich die Hilfe von RegSet umsetze, nämlich:
ZitatUnterstützte Register eines Geräts können wie folgt bestimmt werden:

    set regSet ? 0 0

Gibts einen schönen satten Absturz, wenn ich genau diesen Befehl eingebe. Gefolgt von einem
Quantifier follows nothing in regex; marked by <-- HERE in m/? <-- HERE / at ./FHEM/10_CUL_HM.pm line 4596.
im Log.
Da es mein Live System ist, würde ich jetzt nicht zwingend mehrmals die Reproduzierbarkeit testen wollen, aber wenn ich da zur Fehlerfinden beitragen kann, sagt bescheid :)

Viele Grüße
Andreas

Otto123

Moin,

ich kann das bestätigen. Ich habe den Befehl noch nie verwendet, aber ein Test zeigt sofort die beschriebene Wirkung.

Gruß Otto
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

frank

ein "get regTable" führt bei einem user ebenfalls zum absturz.
Zitathttps://forum.fhem.de/index.php/topic,18071.msg1095541.html#msg1095541


@flummy1978
zum ändern von registern empfehle ich hm.js.
siehe link in meiner signatur.
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

flummy1978

Danke frank,

das werde ich mir anschauen, sobald ich mein aktuelles Lag Problem  gelöst habe. Vielen Dank für den Hinweis :)

Viele Grüße
Andreas

martinp876

A) ist korrigiert - morgen im Download

1) Absturz geht nicht - muss korrigiert werden
2) Funktion ist zugesichert - also realisiert
3) Problem war das Sonderzeichen "?" welches nicht straight verglichen wird
4) die Funktion regSet ? 0 0  ist eine schwache Hilfe. Faktisch wird als Register "?" eingebeben welches nicht existiert. Man könnte also auch regSet x 0 0 eingeben - gleicher effekt
5) will man registerlisten sehen ist ein get regList deutlich sinnvoller. Oder auch regTable
6) die Nutzung von hm.js ist sehr elegant

noansi

#5
Hallo Martin,

ZitatA) ist korrigiert - morgen im Download

führt zu https://forum.fhem.de/index.php/topic,115457.0.html.

Zitat1) Absturz geht nicht - muss korrigiert werden
in Rev 23058 nur den Metacharacters ein \ voranzustellen, anstatt allen, sollte helfen.
$foo =~ s/([\\^.$|()[\]*+?{}\-#])/\\$1/g;
(wenn ich keinen übersehen habe)
statt
$foo =~ s/(.)/\\$1/g;

Gruß, Ansgar.

cortmen

 :)Moin, bestätigt, alte 10_CUL_HM.pm recovery, läuft wieder.

isy

Moin zusammen,
der FHEM Server startet nach Änderungen der Temperatureinstellungen neu.
Ich habe die alte Version von letzter Woche zurück geladen.

Gruß Helmut
Ein Weg wird erst zu einem Weg, wenn man ihn geht

betateilchen

#8
Bei mir taucht auch noch eine andere neue perl Warnung im Zusammenhang mit CUL_HM auf:

2020.11.01 05:00:00 1: PERL WARNING: Unrecognized escape \y passed through in regex; marked by <-- HERE in m/\d\a\y <-- HERE / at ./FHEM/10_CUL_HM.pm line 4597.

Das dürfte der Theorie mit dem "zuviel escaped" entsprechen. Um 05:00 wird bei mir ein Wandregler (TC) per "set ... controlMode day" umgeschaltet.

Mein FHEM stürzt dadurch aber nicht ab, nur der Befehl wird nicht ausgeführt.




Edit:

Mit der von noansi vorgeschlagenen Änderung funktioniert das Schalten des TC wieder.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

DIK

#9
Hallo allerseits,

Reference to nonexistent group in regex; marked by <-- HERE in m/\1 <-- HERE \5/ at ./FHEM/10_CUL_HM.pm line 4597.

Das ist der letzte Eintrag (oder der erste) beim Absturz meiner fhem - sorry, ich bin nur Anwender, @Martin, sagt Dir das was und kannst Du mir weiter helfen? Absturz ist reproduzierbar mit diesem Eintrag!

Gruß
Ingo

P.S.: Reproduzierbar beim Versuch einen Dimmer auf einen (beliebigen) Prozentwert zu stellen. Den Dimmer mit up und down oder on off zu schalten führt nicht zum Absturz, auch einen Schalter ein- und auszuschalten funktioniert ohne Absturz.

betateilchen

#10
Die Probleme in Zeile 4597 haben letztendlich alle die von Ansgar oben beschriebene Ursache, im gleichen Beitrag steht auch eine mögliche Lösung, die man temporär auch selbst  in 10_CUL_HM.pm einbauen kann, bis martin das Problem "offiziell" löst und per update bereitstellt.

Alternativ verwendet man eben eine der vorherigen Modulversionen.




Index: 10_CUL_HM.pm
===================================================================
--- 10_CUL_HM.pm        (revision 23069)
+++ 10_CUL_HM.pm        (working copy)
@@ -4593,7 +4593,7 @@
       if($param =~ m/^\((.*)\)$/ ){                 # list of options?
         my @parLst = split('\|',$1);
         if(  defined $parIn[$pCnt]){                # user param provided
-          my ($tmp1) = map{my$foo=$_;;$foo =~ s/(.)/\\$1/g;;$foo}($parIn[$pCnt]);       
+          my ($tmp1) = map{my$foo=$_;;$foo =~ s/([\\^.$|()[\]*+?{}\-#])/\\$1/g;;$foo}($parIn[$pCnt]);       
           if( $parIn[$pCnt] !~ m/[:\{\[\(]/ && grep/$tmp1/,@parLst){ # parameter not comparable or matched
           }
           elsif($param =~ m/([\-\d\.]*)\.\.([\-\d\.]*)/ ){# we check for min/max but not for step
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

noansi

Hallo Udo,

es sind zwei Stellen betroffen, siehe https://svn.fhem.de/trac/changeset/23058/. Zeile 4596 und 5103.

Die zweite wird nur seltener zuschlagen, da regSet seltener zu Anwendung kommt.  ;)

Gruß, Ansgar.

betateilchen

Aber aus der zweiten Stelle hatte ich bisher keine Probleme, deshalb habe ich die bisher noch nicht gepatcht. Ich hoffe ja, dass es kurzfristig eine reguläre Lösung gibt :)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

DIK

#13
Vielen Dank betateilchen!

Auch wenn ich mich jetzt leider als SuperDAU oute?
Wie geht das mit dem ändern oder verwenden einer alten Version? Das fängt schon damit an, dass ich mich frage wo ich es finde?
Sorry, ich bin (zwar begeisterter aber eben) nur Anwender, nachvollziehen und nachmachen klappt (auch mit putty), aber ohne die Profis wie Dich bin ich aufgeschmissen.

Danke und Gruß
Ingo

Beta-User

Na ja, via ssh einloggen (sollte mit einer aktuellen Win-Version auch ohne putty gehen), dann die betreffende Datei in einen Editor laden (ich empfehle gerne "mcedit" aus dem Paket "mc" => "sudo mcedit /opt/fhem/FHEM/10_CUL_HM.pm") und dann die betreffende Zeile ändern...
Oder eben die ganze Datei aus dem backup oder svn holen (https://svn.fhem.de/trac/export/22973/trunk/fhem/FHEM/10_CUL_HM.pm).

@martinp876:
Wäre es möglich, auch wieder die Möglichkeit zu reaktivieren, zwei Stellen hinter dem Komma als externen Temperatur-Wert zu verwenden?
2020.11.02 08:04:56 3: CUL_HM set Fake_Fenster_SZ_Temp virtTemp 22.44
2020.11.02 08:04:56 3: CUL_HM reject-set Fake_Fenster_SZ_Temp virtHum: param 0:'(off|0.0..99.0;0.1)' =>  not numeric
virtHum: (off|0.0..99.0;0.1)

Bei der letzten Version klappte das noch/wieder (sonst muß ich den Event-Handler umbauen, das Thema hatten wir neulich schon mal)....
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