[Gelöst] Fehler DOIF / Statistics / DB Log (Unmatched ( in regex; marked by...)

Begonnen von Floriky, 18 Januar 2019, 08:09:58

Vorheriges Thema - Nächstes Thema

Floriky

Der Fehler und damit der Absturz kommt genau jede Stunde. Der Zusammenhang mit "HourLast" deutet für mich irgendwie drauf hin, dass das nichts mit einem DOIF sondern mit dem statistics-Device zu tun hat. Da das ja wahrscheinlich jede Stunde das "LastHour-Reading" versucht zu setzen. Weiterhin ist es für mich verdächtig, dass dieses "...HourLast"-Reading bei den anderen Geräten, welche durch das Statistics-Device mit Readings bestückt werden, vorhanden ist.

Habe das Reading "statAda_time_todayHourLast jetzt mal händisch mit dem Wert "123" erstellt und warte eine Stunde ab. Vielleicht hilft das ja die Verstopfung zu lösen (so stell ich mir das zumindest vor... ;D)


Otto123

Der Linux Befehl grep dient der Suche. Meine Zeile weiter oben ist quasi die zur Verfügung Stellung des Befehls grep innerhalb FHEM.
Die Zeile definiert einen alias, beim define selbst passiert gar nichts!
Danach kann man innerhalb von FHEM mit grep Begriff einfach alle FHEM relevanten Dateien nach dem Begriff durchsuchen. Das gibt einen unter Umständen Aufschluss darüber wo der Begriff überall verwendet wird.
Auch grep selbst tut nichts außer Suchen und eine Ausgabe im Browser.

Genau damit man nicht in Versuchung kommt und alle Dateien mit ungeeigneten Mitteln öffnet und dann schnell mal editiert!  :o

Dieses ominöse Reading sieht mir eigentlich wie von einem Modul automatisch, temporär erstelltem Reading aus. DOIF macht so etwas durchaus auch.

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

Floriky

#17
Hallo Otto,

danke für deine Erläuterung. Der Wiki-Eintrag hatte mich bezgl. der Verwendung nicht weitergebracht. Aber jetzt klappt es mit grep BEGRIFF.

Jetzt habe ich allerdings das nächste Ominöse verhalten. Und zwar finde ich mit "statAda_time_todayHourLast" keine Einträge. Und auch mit bspw. "statAda_time_todayHourMin" (dieses Reading existiert ebenfalls und wurde vom Modul angelegt) findet er nichts. Kann es sein, dass der Befehl die Dateien in denen die Readings stehen nicht durchsucht?

Vielleicht ist hier der sprichwörtliche Hund begraben. Wie komme ich an die Dateien? Kann per WinSCP auf mein Raspi zugreifen. Also ist gefahrlose, händische Durchsuchen eigentlich kein Problem.

EDIT: Kann ich da nicht einfach mal mit einer DOIF.pm aus nem Backup über die aktuelle drüber bügeln?

Otto123

Naja die Readings stehen genau genommen nicht in Dateien. Du suchst aber eigentlich nicht nach dem Reading sondern nach der Stelle der Verwendung "[Annika:statAda_time_todayHourLast"

Im fhem.save File stehen die gespeicherten Readings z.B. für den nächsten Neustart.
Aber wenn es temporär erzeugt ist findet man es so nicht.

Du kannst mit dem restore Befehl eine Datei aus dem restoreDir wiederherstellen.

Vielleicht solltest Du FHEM einfach einmal neu starten. Alle nicht in fhem.save gespeicherten Readings gehen dabei verloren.

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

Floriky

#19
Also noch ein Indiz für das temporäre: es ist nicht in der fhem.save  :(

Ein
Shutdown restart
sowie

sudo service fhem stop
sudo service fhem start

habe ich schon mehrmals gemacht.

AUßERDEM macht er das ja stündlich von alleine wenn er wegen dem Fehler wieder abschmiert....  ???

Im restoreDir liegen nur fhem.save''s und fhem.cfg's diese habe ich ja ohnehin schon durchsucht. Ich habe noch ein Backup von vorgestern, aber da ich gestern den ganzen Tag an FHEM gearbeitet habe ist das meine letzte Lösung. Ich habe mir das Log nochmal angeschaut. Zum ersten Mal kam die Meldung nach einem "resetStatistics all" Befehl:


2019.01.17 11:50:21 3: statistics: set Ada_Statisktik resetStatistics all
2019.01.17 11:51:27 3: statistics: set Ada_Statisktik resetStatistics all
2019.01.17 11:52:14 3: statistics: set Ada_Statisktik resetStatistics all
2019.01.17 11:58:35 3: CUL_HM set WZ_Fenster_Links getConfig
Unmatched ( in regex; marked by <-- HERE in m/\[Annika:statAda_time_todayHourLast: Min: 45 Avg: 45 Max: 45 ( <-- HERE since(\]|:.+\]|,.+\])/ at ./FHEM/98_DOIF.pm line 2019.


Aber in einem DOIF hab ich das zu 99% NIE verwendet.

Bitte sag mir, dass dir noch was einfällt...  :'(

EDIT: Bringt es was das Statistics-Modul zu entfernen?

Frank_Huber

Mal ein genereller Tipp:
Erstellt bei jedem save ein Backup der cfg und save Datei.

defmod ntf_save_sick_config notify global:SAVE {backup_fhemcfg()}

und in der 99_myUtils.pm:
sub backup_fhemcfg()
{  my $backup_path = '/opt/fhem/backup/';
    my $date = strftime '%Y%m%d_%H%M%S', localtime;
    copy("/opt/fhem/fhem.cfg",$backup_path.$date."_fhem.cfg");
    copy("/opt/fhem/log/fhem.save",$backup_path.$date."_fhem.save")}

Floriky

Zitat von: Frank_Huber am 18 Januar 2019, 13:18:56
Mal ein genereller Tipp:
Erstellt bei jedem save ein Backup der cfg und save Datei.

Sobald ich weiß, dass meine cfg zu retten ist nehm ich es mit auf...  ;) Vielen Dank, Frank!

Otto123

#22
Zitat von: Frank_Huber am 18 Januar 2019, 13:18:56
Mal ein genereller Tipp:
Erstellt bei jedem save ein Backup der cfg und save Datei.
Das macht doch FHEM seit "ewigen"Zeiten von selbst!

Im Pfad /opt/fhem/restoreDir/save/

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_Huber

Zitat von: Otto123 am 18 Januar 2019, 13:29:23
Das macht doch FHEM seit "ewigen"Zeiten von selbst!
Im Pfad /opt/fhem/restoreDir/save/
Danke Otto,
das ging völlig an mir vorbei. :-)
speichert aber so wie ich sehe nur die letzten 3 cfg und save Dateien.

Otto123

einfach global restoreDirs setzen. :D
Und die Historie ist vom normalen Update getrennt...
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

Floriky

#25
Zitat von: Otto123 am 18 Januar 2019, 13:55:20
einfach global restoreDirs setzen. :D
Und die Historie ist vom normalen Update getrennt...

Meinst du damit jetzt mich? Welches Update? Ich steh auf'm Schlauch, oder?

EDIT: Ja, du meinst mich. Les gerade dein Post aus'm März. Jetzt muss ich nur noch rausfinden was ich machen soll...  ;)

Otto123

Nein, ich gebe mir Mühe in Folge zu antworten, dass war also die Antwort für Frank_Huber
Für Dich in sofern, als das Du darüber philosophierst ob und wie Du restore von einer Moduldatei bzw. deiner fhem.cfg machst.

Guter Rat
Wenn Dein FHEM jede Stunde "abschmiert", dann geh zurück auf einen Stand wo alles funktioniert hat.
Es klingt zu dubios als ob das simpel klärbar wäre.

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

Floriky

Ohje, dann noch eine Frage:

Kann ich das Backup zurückspielen und dann einfach die fhem.cfg mit der von heute ünerschreiben? Da dürfte ja nichts Schlimmes drin sein?

Otto123

ich dachte, in deiner aktuellen fhem.cfg ist das Problem?
Wie Du jetzt genau auf den Stand zurück gehst - da gäbe es viele Wege...
Dein FHEM läuft doch,
speichere Dir doch die define Zeile für das "fragwürdige" Statistic ? (RAW Def aufmachen copy und paste in eine Textdatei - fertig)
dann drücke daneben einfach auf delete this device.

Dann ist es aktuell weg, wenn Du jetzt kein save machst, wäre es nach dem Neustart sogar wieder da.

Die Idee mit dem DOIF "bügeln" finde ich komisch, da ich nicht glaube, dass das Problem wirklich dort liegt.
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

Floriky

Weiß nicht, aber die habe ich ja rauf und runter durchsucht und nirgends diesen Ausdruck gefunden. Da er ihn für den Log-Eintrag ja irgendwo her nehmen muss, muss er wo anders drin sein.
Anders ausgedrückt Würde er nur die fhem.cfg kennen, würde er das Reading (bzw. diese Bezeichnung) gar nicht kennen können.

Ich hoffe ich kann verständlich machen was ich meine: er schreibt ja auch nicht:
[Annika:quatschmitsoße_reading: Min: 45 Avg: 45 Max: 45 ( <-- HERE since(\]|:.+\]|,.+\])/ at ./FHEM/98_DOIF.pm line 2019

Habe noch ein Auszug von gestern Nacht, da hatte ich das Log auf verbose 5 gestellt. Kannst du damit was anfangen? Kommt mir so vor als hätte er da was mit der Datenbank:


Unmatched ( in regex; marked by <-- HERE in m/\[Annika:statAda_time_todayHourLast: Min: 45 Avg: 45 Max: 45 ( <-- HERE since(\]|:.+\]|,.+\])/ at ./FHEM/98_DOIF.pm line 2019.
2019.01.18 02:08:47 4: statistics Ada_Statisktik: doStatisticMinMaxSingle.584 Set 'statAda_time_todayHourLast'='Min: 45 Avg: 45 Max: 45 (since: 2019-01-17_11:52:24 )'
2019.01.18 02:08:47 5: Starting notify loop for Annika, 2 event(s), first is statAda_time_todayHourLast: Min: 45 Avg: 45 Max: 45 (since: 2019-01-17_11:52:24 )
2019.01.18 02:08:47 4: DbLog DBLogging -> check Device: Annika , Event: statAda_time_todayHourLast: Min: 45 Avg: 45 Max: 45 (since: 2019-01-17_11:52:24 )
2019.01.18 02:08:47 5: DbLog DBLogging -> parsed Event: Annika , Event: statAda_time_todayHourLast: Min: 45 Avg: 45 Max: 45 (since: 2019-01-17_11:52:24 )
2019.01.18 02:08:47 4: DbLog DBLogging -> added event - Timestamp: 2019-01-18 02:08:47, Device: Annika, Type: DUMMY, Event: statAda_time_todayHourLast: Min: 45 Avg: 45 Max: 45 (since: 2019-01-17_11:52:24 ), Reading: statAda_time_todayHourLast, Value: Min: 45 Avg: 45 Max: 45 (since: 2019-01-17_11:52:24 ), Unit:
2019.01.18 02:08:47 4: DbLog DBLogging -> added event - Timestamp: 2019-01-18 02:08:47, Device: Annika, Type: DUMMY, Event: statAda_time_todayHourLast: Min: 45 Avg: 45 Max: 45 (since: 2019-01-17_11:52:24 ), Reading: statAda_time_todayHourLast, Value: Min: 45 Avg: 45 Max: 45 (since: 2019-01-17_11:52:24 ), Unit:
2019.01.18 02:08:47 4: DbLog DBLogging -> processing event Timestamp: 2019-01-18 02:08:47, Device: Annika, Type: DUMMY, Event: statAda_time_todayHourLast: Min: 45 Avg: 45 Max: 45 (since: 2019-01-17_11:52:24 ), Reading: statAda_time_todayHourLast, Value: Min: 45 Avg: 45 Max: 45 (since: 2019-01-17_11:52:24 ), Unit:
2019.01.18 02:08:47 4: DbLog DBLogging -> processing event Timestamp: 2019-01-18 02:08:47, Device: Annika, Type: DUMMY, Event: statAda_time_todayHourLast: Min: 45 Avg: 45 Max: 45 (since: 2019-01-17_11:52:24 ), Reading: statAda_time_todayHourLast, Value: Min: 45 Avg: 45 Max: 45 (since: 2019-01-17_11:52:24 ), Unit:
Unmatched ( in regex; marked by <-- HERE in m/\[Annika:statAda_time_todayHourLast: Min: 45 Avg: 45 Max: 45 ( <-- HERE since(\]|:.+\]|,.+\])/ at ./FHEM/98_DOIF.pm line 2019.


Ach, du meinst nur das Statistic-Device löschen reicht?  :o

Bzgl dem DOIF-Bügeln: ich auch nicht - war nur so ein Gedanke....