[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

Hallo Zusammen,

bin blutiger Anfänger, also bitte nicht böse sein, wenn das Problem vor dem PC sitzt.

Habe in meinem Log folgenden Eintrag:

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.


In Line 2019 steht in der 98_DOIF.pm:

$found = ($itimer =~ /\[$device:$1(\]|:.+\]|,.+\])/);


Kann mir jemand weiterhelfen? Vielen Dank vorab!

Nachtrag: Jedes Mal danach stürzt FHEM ab und startet neu. Das ganze passiert ca. jede Stunde.

Frank_Huber


Floriky

Hallo Frank,

mach ich gerne. Woher weiß ich um welches DOIF es sich handelt?

Frank_Huber

Tja, das kannst nur Du wissen.

Dieses Gerät wird abgefragt: [Annika:statAda_time_todayHour

Im Zweifen postest ein list von allen die in Frage kommen.

Floriky

Ja, die Antwort hatte ich schon befürchtet...  ;)

Also auf das Reading "statAda_time_todayHourLast" im Device "Annika" bezieht sich gar kein DOIF. Das wird vom Modul Satistics.pm angelegt und was noch viel komischer ist: das Reading gibt es in dem Device noch nicht mal. Es kann sein, dass es das mal gab und ich es gelöscht hatte (hatte so meine Probleme beim Definieren).

Dann hab ich mal ein list TYPE=DOIF gemacht:

auf Device "Annika" beziehen sich die folgenden DOIFs:

DOIF1 (dieses hat heute morgen auch nicht funktioniert obwohl in der DB der entsprechende Eintrag zu finden war (das Problem steht auch noch auf der Liste):
Internals:
   DEF        ([([Annika:Arrival_Time_tomorrow] - [00:30]) - ([Annika:Arrival_Time_tomorrow] + [01:30])])

({fhem("setreading Annika Access-State 1");})

DOELSE ({fhem("setreading Annika Access-State 0");})
   MODEL      FHEM
   NAME       DOIF_change_access_statr
   NR         232
   NTFY_ORDER 50-DOIF_change_access_statr
   STATE      Next: 19.01.2019 06:30:00 - 19.01.2019 08:30:00
   TYPE       DOIF
   Helper:
     DBLOG:
       cmd:
         DBLogging:
           TIME       1547796600.00831
           VALUE      2
       cmd_event:
         DBLogging:
           TIME       1547796600.00831
           VALUE      timer_2
       cmd_nr:
         DBLogging:
           TIME       1547796600.00831
           VALUE      2
       state:
         DBLogging:
           TIME       1547796600.00831
           VALUE      cmd_2
   READINGS:
     2019-01-18 08:30:00   cmd             2
     2019-01-18 08:30:00   cmd_event       timer_2
     2019-01-18 08:30:00   cmd_nr          2
     2019-01-16 08:41:58   mode            enabled
     2019-01-18 08:30:00   state           cmd_2
     2019-01-18 08:30:00   timer_01_c01    19.01.2019 06:30:00
     2019-01-18 08:30:00   timer_02_c01    19.01.2019 08:30:00
   Regex:
   attr:
     cmdState:
     waitdel:
   condition:
     0          ::DOIF_time($hash,0,1,$wday,$hms)
   days:
   devices:
   do:
     0:
       0          {fhem("setreading Annika Access-State 1");}
     1:
       0          {fhem("setreading Annika Access-State 0");}
   helper:
     event      timer_2
     globalinit 1
     last_timer 2
     sleeptimer -1
     timerdev   
     timerevent timer_2
     timereventsState
     triggerDev
     DOIF_eventas:
       cmd_nr: 2
       cmd: 2
       cmd_event: timer_2
       state: cmd_2
     timerevents:
       timer_2
     triggerEvents:
       timer_2
   internals:
   interval:
     0          -1
     1          0
   intervalfunc:
   itimer:
     all         Annika
   localtime:
     0          1547875800
     1          1547883000
   perlblock:
   readings:
   realtime:
     0          06:30:00
     1          08:30:00
   time:
     0          ([Annika:Arrival_Time_tomorrow]-[00:30])
     1          ([Annika:Arrival_Time_tomorrow]+[01:30])
   timeCond:
     0          0
     1          0
   timer:
     0          0
     1          0
   timers:
     0           0  1
   triggertime:
     1547875800:
       localtime  1547875800
       hash:
     1547883000:
       localtime  1547883000
       hash:
   uiState:
   uiTable:
Attributes:
   DbLogExclude .*
   DbLogInclude .*
   alias      Änderung des Access-States
   do         always
   group      Zeitsteuerung
   icon       secur_locked
   room       92_Annika
   stateFormat Next: timer_01_c01 - timer_02_c01



DOIF 2 (hat zumindest gerstern noch funktioniert):



Internals:
   DEF        ([+00:15]) (
set Telegram_Annika message @#GRUPPENNAME NACHRICHTENTEXT
)
   MODEL      FHEM
   NAME       di_annika_reminder
   NR         228
   NTFY_ORDER 50-di_annika_reminder
   STATE      deactivated
   TYPE       DOIF
   READINGS:
     2019-01-18 08:00:00   mode            deactivated
     2019-01-18 08:00:00   state           deactivated
   Regex:
   condition:
   do:
     0:
   uiState:
   uiTable:
Attributes:
   DbLogExclude .*
   DbLogInclude .*
   alias      Erinnerung: Planung beginnen *15 min.
   disable    1
   do         always
   group      Reminder
   icon       time_timer
   room       92_Annika



DOIF 3:



Internals:
   DEF        ([+00:15]) (
set Telegram_Annika message @#GRUPPENNAME NACHRICHTENTEXT
)
   MODEL      FHEM
   NAME       di_annika_reminder_continue
   NR         230
   NTFY_ORDER 50-di_annika_reminder_continue
   STATE      deactivated
   TYPE       DOIF
   READINGS:
     2019-01-18 08:00:00   mode            deactivated
     2019-01-18 08:00:00   state           deactivated
   Regex:
   condition:
   do:
     0:
   uiState:
   uiTable:
Attributes:
   DbLogExclude .*
   DbLogInclude .*
   alias      Erinnerung: Planung beenden *15 min.
   disable    1
   do         always
   group      Reminder
   icon       time_timer
   room       92_Annika



Ich hoffe inständig, dass dir das weiter hilft...  :-\




Frank_Huber

Ich tippe auf das erste.

Was willst Du denn hiermit erreichen?
[([Annika:Arrival_Time_tomorrow] - [00:30]) - ([Annika:Arrival_Time_tomorrow] + [01:30])]

Weiter würde ich die Befehle so definieren:
(setreading Annika Access-State 1)
DOELSE (setreading Annika Access-State 0)


könntest Du noch ein list von Annika posten bitte?

Otto123

Moin,

keine Idee was falsch ist aber:
In solchen Fällen hilft mir manchmal  grep - Du kannst es so definieren dass es auch in FHEM in Kommandozeile aufrufbar ist.
defmod c_grep cmdalias grep .* AS {qx(grep -i \'$EVENT\' *.cfg FHEM/99*.pm)}

Gab es einen Grund für diese Konstrukt?
({fhem("setreading Annika Access-State 1");})
Funktionsgleich, kürzer und weniger aufwendig im System ist es so:
(setreading Annika Access-State 1)


DOIF 2 und 3 sind doch deaktiviert? Wie haben die funktioniert?

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

Ich versuch das mal ohne die meine halbe Lebensgeschichte zu erzählen. Also Annika benötigt jeden Tag Zugang zum Haus. Da die Zeit variiert macht Annika das am Vorabend über einen Telegram-Dialog der die Uhrzeit im Device als Reading "Arrival_Time_tomorrow" setzt. Das funktioniert auch sehr gut. Das DOIF soll den Access-State eine halbe Stunde bis 1,5 Stunden nach der "Arrival_Time_tomorrow" auf 1 setzen. Da von diesem wieder andere Dinge (das ganze Konstrukt willst du gar nicht sehen - du würdest die Hände über dem Kopf zusammenschlagen (ist ein wenig ausgeufert)  ;D) abhängen.

Hier ist der List vom Device:

Internals:
   NAME       Annika
   NR         225
   STATE      Access Denied
   TYPE       dummy
   OLDREADINGS:
   READINGS:
     2019-01-18 08:30:00   Access-State    0
     2019-01-15 20:35:01   Answer_Wished_Arrival 06:45
     2019-01-16 20:06:12   Arrival_Time_tomorrow 07:00
     2019-01-16 20:06:12   Arrival_Time_yesterday 07:00
     2019-01-16 20:05:55   Planing_Time_Finish 21:05
     2019-01-16 20:05:55   Planing_Time_Start 20:05
     2019-01-16 20:06:12   Planning_Procedure_State 9
     2019-01-18 09:00:11   Wished_Arrival  06:45
     2019-01-17 11:52:24   ada_ende        1547707972
     2019-01-18 03:09:48   ada_start       1547705272.99184
     2019-01-18 09:00:11   ada_time_today  45
     2019-01-18 09:00:11   ada_time_today_diff_neg 0
     2019-01-18 09:00:11   ada_time_today_diff_pos 0
     2019-01-17 07:08:02   door_open_retry_state 0
     2019-01-18 08:27:26   presence        absent
     2019-01-16 20:06:13   randomauth      3
     2019-01-17 07:04:08   randomauth_afterada 57832
     2019-01-18 09:00:11   statAda_time_todayDay Min: 45 Avg: 45 Max: 45 (since: 2019-01-18_03:10:25 )
     2019-01-18 09:00:11   statAda_time_todayHour Min: 45 Avg: 45 Max: 45 (since: 2019-01-18_03:10:25 )
     2019-01-18 09:00:11   statAda_time_todayMonth Min: 45 Avg: 45 Max: 45 (since: 2019-01-18_03:10:25 )
     2019-01-18 09:00:11   statAda_time_todayMonthAvg 45
     2019-01-18 09:00:11   statAda_time_todayMonthMax 45
     2019-01-18 09:00:11   statAda_time_todayMonthMin 45
     2019-01-18 09:00:11   statAda_time_todayYear Min: 45 Avg: 45 Max: 45 (since: 2019-01-18_03:10:25 )
     2019-01-18 09:00:11   statAda_time_todayYearAvg 45
     2019-01-18 09:00:11   statAda_time_todayYearMax 45
     2019-01-18 09:00:11   statAda_time_todayYearMin 45
     2019-01-18 08:27:15   state           Access Denied
     2019-01-17 11:48:32   time_tracking_state 0
   helper:
     _98_statistics OUT_TankstellenStatistik
Attributes:
   DbLogExclude .*
   DbLogInclude .*
   event-on-change-reading .*
   group      02 Steuerung
   icon       status_locked
   room       92_Annika
   stateFormat state
   userReadings Wished_Arrival { ReadingsVal($name,'Answer_Wished_Arrival','none') =~ /([0-2][0-9]:[0-5][0-9])/; $1 }, ada_time_today { sprintf("%.0f",(ReadingsVal("Annika","ada_ende",0)-ReadingsVal("Annika","ada_start",0))/60) }, ada_time_today_diff_pos { (ReadingsVal("Annika","ada_time_today",0)-ReadingsVal("Annika","statAda_time_todayYearAvg",0)) }, ada_time_today_diff_neg { (ReadingsVal("Annika","statAda_time_todayYearAvg",0)-ReadingsVal("Annika","ada_time_today",0)) }
   webCmd     Access Granted:Access Denied


Kannst du mir sagen wie ich eine Zeitangabe im Format HH:MM (das ist die "Arrival_Time_tomorrow") verwenden kann um mein Reading "Access-State" auf 0 bzw. 1 zu setzen ohne ein DOIF (glaube das nämlich ein wenig "oversized", oder?)?

Floriky

Moin Otto,

wie meinst du "hilft"? Was macht das Kommando (Tut mir Leid, wenn die Frage dämlich ist - hab vor 3 Wochen das erste Mal das Wort FHEM gelesen...)

ZitatGab es einen Grund für diese Konstrukt?

Nein, war das Erste das funktioniert hatte beim Anlegen (Grund s.o.)

ZitatDOIF 2 und 3 sind doch deaktiviert? Wie haben die funktioniert?

Ja haben Sie und tun Sie immer noch. Die werden jeden Abend durch ein weiteres DOIF "enabled" und nach Erreichen eines gewissen Status wieder disabled. Das sind Erinnerungen die per Telegram rausgehen falls Annika die Planung noch nicht abgeschlossen bzw. begonnen hat.

Frank_Huber

dieses Reading scheint es in Annika nicht zu geben:
[Annika:statAda_time_todayHourLast: Min: 45 Avg: 45 Max: 45
wird aber wohl irgendwo abgefragt. zumindest nach der Log-Meldung.

das Konstrukt des ersten DOIF sollte funktionieren. Würde nur die Befehle bereinigen wie Otto und ich es vorgeschlagen haben.

Floriky

Zitat von: Frank_Huber am 18 Januar 2019, 09:31:06
dieses Reading scheint es in Annika nicht zu geben:
[Annika:statAda_time_todayHourLast: Min: 45 Avg: 45 Max: 45
wird aber wohl irgendwo abgefragt. zumindest nach der Log-Meldung.

das Konstrukt des ersten DOIF sollte funktionieren. Würde nur die Befehle bereinigen wie Otto und ich es vorgeschlagen haben.

Ja das ergibt Sinn. Würde ich gerne machen - verstehe nur leider nicht so ganz was ihr damit meint. Soll ich die fhem.cfg händisch editieren (dachte das ist als Newbie keine gute Idee). Kann ich das von Otto oben einfach in die Kommandozeile eingeben? Und löscht das dann gleich irgendwas? Laut Google dient grep nur der Suche. Will nichts kaputt machen...?

Frank_Huber

Die Änderungs im DOIF 1 machst einfach im DEF Feld.

Das von Otto vorgeschlagene in der System Shell. Details müsste Otto liefern.

Um das betroffene DOIF zu finden kannst auch eines machen:
- öffne die cfg
- suche darin nach "[Annika:statAda_time_todayHourLast"
- so findest das betroffene DOIF.
NICHTS ändern und NICHT speichern. nur suchen. :)

Floriky

Zitat von: Frank_Huber am 18 Januar 2019, 10:04:35
Die Änderungs im DOIF 1 machst einfach im DEF Feld.

Das von Otto vorgeschlagene in der System Shell. Details müsste Otto liefern.

Um das betroffene DOIF zu finden kannst auch eines machen:
- öffne die cfg
- suche darin nach "[Annika:statAda_time_todayHourLast"
- so findest das betroffene DOIF.
NICHTS ändern und NICHT speichern. nur suchen. :)

Also DOIF 1 ist geändert und funktioniert. - DANKE DIR!

Jetzt aber das Problem. Habe den Inhalt der fhem.cfg in einen Texteditor kopiert und leider nichts zu "Annika:statAda_time_todayHourLast" gefunden. Anbei die Screenshots.

Frank_Huber


Floriky

Zitat von: Frank_Huber am 18 Januar 2019, 10:42:19
dann kuck dir mal die 8 ohne "H" an.

Hab ich gemacht. Keines davon kommt in einem DOIF vor. Alle werden nur in Notifys verwendet. Aber nicht als Bedingung sondern nur in Telegram-NAchrichten. Kann ich noch wo anders suchen?

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

Floriky

#30
Wollte mich der Vollständigkeit halber nochmal zurück melden. Habe mittlerweile den Auslöser für mein Problem gefunden und kann diesen auch reproduzieren. Und zwar liegt es tatsächlich am Statistics Device in Verbindung mit dem DbLog. Sobald ich dieses lösche, funktioniert wieder alles.

Das merkwürdige daran: Dass der Fehler und damit der stündliche Absturz nur auftritt sobald ich Statistiken für das eine Device "Annika" anlegen lass. Dabei macht es auch keinen Unterschied ob ich ein neues Statistics Device anlege oder ein bestehendes auf mein Device "Annika" erweitere.

Im Log auf Verbose 5 sieht man genau, dass er beim Loggen dieses Werts abschmiert und im Gegensatz dazu logt er ähnlliche Werte anderer Geräte problemlos...


Auszug aus der Log-Datei zum DB-Log eines Statistics Reading für meinen Tankstellen-Device (funktionierend):
2019.01.18 18:59:55 4: DbLog DBLogging -> ################################################################
2019.01.18 18:59:55 4: DbLog DBLogging -> ###              start of new Logcycle                       ###
2019.01.18 18:59:55 4: DbLog DBLogging -> ################################################################
2019.01.18 18:59:55 4: DbLog DBLogging -> number of events received: 39 for device: OUT_Tankstelle_Shell_SA
2019.01.18 18:59:55 4: DbLog DBLogging -> check Device: OUT_Tankstelle_Shell_SA , Event: statSuperE10HourLast: Min: 1.27 Avg: 1.30 Max: 1.31
2019.01.18 18:59:55 5: DbLog DBLogging -> parsed Event: OUT_Tankstelle_Shell_SA , Event: statSuperE10HourLast: Min: 1.27 Avg: 1.30 Max: 1.31
2019.01.18 18:59:55 5: DbLog DBLogging -> DbLogExclude of "OUT_Tankstelle_Shell_SA": .*
2019.01.18 18:59:55 4: DbLog DBLogging -> check Device: OUT_Tankstelle_Shell_SA , Event: statSuperE10HourMin: 1.27
2019.01.18 18:59:55 5: DbLog DBLogging -> parsed Event: OUT_Tankstelle_Shell_SA , Event: statSuperE10HourMin: 1.27
...
...
...
2019.01.18 18:59:55 5: DbLog DBLogging -> DbLogExclude of "OUT_Tankstelle_Shell_SA": .*
2019.01.18 18:59:55 4: DbLog DBLogging -> check Device: OUT_Tankstelle_Shell_SA , Event: statSuperE5MonthMax: 1.45
2019.01.18 18:59:55 5: DbLog DBLogging -> parsed Event: OUT_Tankstelle_Shell_SA , Event: statSuperE5MonthMax: 1.45
2019.01.18 18:59:55 5: DbLog DBLogging -> DbLogExclude of "OUT_Tankstelle_Shell_SA": .*
2019.01.18 18:59:55 5: OUT_Group_Tankstellen: not on any display, ignoring notify
2019.01.18 18:59:55 5: End notify loop for OUT_Tankstelle_Shell_SA



Auszug aus der Log-Datei zum DB-Log eines Statistics Reading für mein Device Annika (führt zum Absturz):
2019.01.18 18:59:55 4: DbLog DBLogging -> ################################################################
2019.01.18 18:59:55 4: DbLog DBLogging -> ###              start of new Logcycle                       ###
2019.01.18 18:59:55 4: DbLog DBLogging -> ################################################################
2019.01.18 18:59:55 4: DbLog DBLogging -> number of events received: 1 for device: Annika
2019.01.18 18:59:55 4: DbLog DBLogging -> check Device: Annika , Event: statAda_time_todayHourLast: Min: 45 Avg: 45 Max: 45 (since: 2019-01-18_15:26:32 )
2019.01.18 18:59:55 5: DbLog DBLogging -> parsed Event: Annika , Event: statAda_time_todayHourLast: Min: 45 Avg: 45 Max: 45 (since: 2019-01-18_15:26:32 )
2019.01.18 18:59:55 5: DbLog DBLogging -> DbLogExclude of "Annika": .*
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 18:59:56 5: Initializing Type Library:
2019.01.18 18:59:56 1: Including fhem.cfg


Wenn ich weiter gekommen bin, werde ich mich im Sinne des "Forum-Gedankens" hier nochmal melden und meine Lösung teilen. Habe auch den Titel zur besseren Auffindbarkeit nochmal ein wenig angepasst.

Damian

Teste mal die gepatchte Version.

Edit: DOIF Version wurde eingecheckt.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Floriky

Zitat von: Damian am 20 Januar 2019, 12:57:06
Teste mal die gepatchte Version.

Gerne wenn du mir sagst wie ich das mach ohne Gefahr zu laufen was ,,kaputt" zu machen...

Damian

Zitat von: Floriky am 20 Januar 2019, 13:47:01
Gerne wenn du mir sagst wie ich das mach ohne Gefahr zu laufen was ,,kaputt" zu machen...

DOIF ins FHEM-Verzeichnis kopieren und System durchstarten.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Floriky

Zitat von: Damian am 20 Januar 2019, 13:57:52
DOIF ins FHEM-Verzeichnis kopieren und System durchstarten.

Wie bekomm ich mein Passwort für user fhem raus? Denn Pi fehlen die Rechte und das ist für mich auch ein Buch mit 7 Siegeln - tut mir Leid, dass ich so wenig Ahnung hab!

Ellert

Zitat von: Damian am 20 Januar 2019, 13:57:52
DOIF ins FHEM-Verzeichnis kopieren und System durchstarten.
... und den Besitzer der Datei 98_DOIF.pm wieder auf fhem stellen oder wenigstens die Schreibrechte für fhem einschalten. Sonst kann es Probleme beim Update geben.

sudo cp ...

Wenn  Du im Modulverzeichnis FHEM bist, dann
sudo chown -c fhem:dialout 98_DOIF.pm

Otto123

Wie bekomme ich "ohne Kopfstand" Dateien ins FHEM Verzeichnis:

  • Mit scp (cmd/console oder WinScp) die Datei ins User Home Dir des Standardbenutzers (Beispiel: /home/pi ) kopieren - scp Dateiname pi@hostname:
  • Mit ssh anmelden (cmd/console oder putty) Beispiel: ssh pi@hostname
  • Die Datei ins FHEM Verzeichnis kopieren Beispiel: sudo cp Dateiname /opt/fhem/
  • Die Berechtigung ordentlich setzen. Beispiel: sudo chown -c fhem: Dateiname
  • Oder mal die Berechtigung für alle Dateien setzen, schadet normalerweise nicht. Beispiel: sudo chown -R fhem: /opt/fhem
Anmerkung:

  • Die Angaben fhem: verwendet dann die Standardgruppe des User fhem, die normalerweise dialout ist. :)
  • Windows 10 hat seit Version 1803 sowohl ssh als auch scp an Board, man braucht nicht unbedingt Zusatztools!

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

Zitat von: Damian am 20 Januar 2019, 13:57:52
DOIF ins FHEM-Verzeichnis kopieren und System durchstarten.

Problem gelöst!!!!!

Danke Damian!
TOP! ...Last-Readings werden jetzt angelegt und FHEM bleibt am Leben!

Zitat von: Ellert am 20 Januar 2019, 14:18:40
... und den Besitzer der Datei 98_DOIF.pm wieder auf fhem stellen oder wenigstens die Schreibrechte für fhem einschalten. Sonst kann es Probleme beim Update geben.

sudo cp ...

Wenn  Du im Modulverzeichnis FHEM bist, dann
sudo chown -c fhem:dialout 98_DOIF.pm

Danke Ellert! (vor allem da das bestimmt schon 1000mal hier im Forum zu finden ist)! Hat wunderbar geklappt.

Zitat von: Otto123 am 20 Januar 2019, 14:37:18
Wie bekomme ich "ohne Kopfstand" Dateien ins FHEM Verzeichnis:

  • Mit scp (cmd/console oder WinScp) die Datei ins User Home Dir des Standardbenutzers (Beispiel: /home/pi ) kopieren - scp Dateiname pi@hostname:
  • Mit ssh anmelden (cmd/console oder putty) Beispiel: ssh pi@hostname
  • Die Datei ins FHEM Verzeichnis kopieren Beispiel: sudo cp Dateiname /opt/fhem/
  • Die Berechtigung ordentlich setzen. Beispiel: sudo chown -c fhem: Dateiname
  • Oder mal die Berechtigung für alle Dateien setzen, schadet normalerweise nicht. Beispiel: sudo chown -R fhem: /opt/fhem
Anmerkung:

  • Die Angaben fhem: verwendet dann die Standardgruppe des User fhem, die normalerweise dialout ist. :)
  • Windows 10 hat seit Version 1803 sowohl ssh als auch scp an Board, man braucht nicht unbedingt Zusatztools!

Gruß Otto

Danke Otto! Hatte schon einen anderen Post von dir entdeckt und in Kombination mit der Antwort von Ellert wars kein Problem mehr!


Jungs, ihr seit spitze!!!!  ;D  ;) Setze das Thema gleich auf gelöst

Damian

Ich habe die korrigierte DOIF-Version jetzt eingecheckt, damit steht sie ab morgen per Update zur Verfügung.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Floriky

Zitat von: Damian am 20 Januar 2019, 15:25:40
Ich habe die korrigierte DOIF-Version jetzt eingecheckt, damit steht sie ab morgen per Update zur Verfügung.

Hallo Damian, seit meinem letzten FHEM-Updates inkl. des DOIF-Moduls ist der Fehler wieder da. Kann ich einfach die hier gepostete Version wieder verwenden?
LG Florian

Damian

Zitat von: Floriky am 05 Juli 2019, 19:30:47
Hallo Damian, seit meinem letzten FHEM-Updates inkl. des DOIF-Moduls ist der Fehler wieder da. Kann ich einfach die hier gepostete Version wieder verwenden?
LG Florian

Dann poste mal die Stelle, wo es Probleme im DOIF gibt. Ich würde nicht auf ältere DOIF-Versionen zurückgreifen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Floriky

Zitat von: Damian am 05 Juli 2019, 22:23:10
Dann poste mal die Stelle, wo es Probleme im DOIF gibt. Ich würde nicht auf ältere DOIF-Versionen zurückgreifen.


Hallo Damian, anbei nochmal der LogAuszug (hab die Stelle durch zwei Leerzeilen separiert) zu einem der pünktlichen Abstürze zur vollen Stunde und dem Versuch des Statistics-Modul die Average-Werte zu schreiben.

Was ich aber noch dazu sagen muss: Das Statistics Modul lieg seit dem letzten Update noch ein paar Tage fehlerfrei. Erst heute, als ich die Statistik-Werte über das Modul zurückgesetzt habe, kamen danach die Abstürze weiter. Vielleicht hilft dir das weiter?!


Hier der Log-Auszug:

2019.07.05 18:44:44 3: DbLog DBLogging: Reopen requested.
2019.07.05 18:44:44 3: DbLog DBLogging - Creating Push-Handle to database mysql:database=fhem;host=localhost;port=3306 with user fhemuser
2019.07.05 18:44:44 3: DbLog DBLogging - Push-Handle to db mysql:database=fhem;host=localhost;port=3306 created
2019.07.05 18:44:44 3: DbLog DBLogging - UTF8 support enabled
2019.07.05 18:44:44 3: DBLogging_Reopen: Reopen executed.
2019.07.05 18:59:44 3: DbLog DBLogging: Reopen requested.
2019.07.05 18:59:44 3: DbLog DBLogging - Creating Push-Handle to database mysql:database=fhem;host=localhost;port=3306 with user fhemuser
2019.07.05 18:59:44 3: DbLog DBLogging - Push-Handle to db mysql:database=fhem;host=localhost;port=3306 created
2019.07.05 18:59:44 3: DbLog DBLogging - UTF8 support enabled
2019.07.05 18:59:44 3: DBLogging_Reopen: Reopen executed.

[b]Unmatched ( in regex; marked by <-- HERE in m/\[Annika:statAdatimeHourLast: Min: 41 Avg: 41 Max: 41 ( <-- HERE since(\]|:.+\]|,.+\])/ at ./FHEM/98_DOIF.pm line 2101.[/b]

2019.07.05 18:59:55 1: SONOS0: Last Listener seems to be died and process started by fhem... stopping Threads and process...

Damian

Der damalige Patch war, warum auch immer, rausgefallen. Ich habe ihn wieder eingebaut und die korrigierte DOIF-Version eingecheckt.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Floriky

Zitat von: Damian am 05 Juli 2019, 23:50:08
Der damalige Patch war, warum auch immer, rausgefallen. Ich habe ihn wieder eingebaut und die korrigierte DOIF-Version eingecheckt.

Ich danke dir vielmals für deine Mühe!!!! Ab wann kann ich dann das Update machen?

Damian

Zitat von: Floriky am 06 Juli 2019, 00:34:33
Ich danke dir vielmals für deine Mühe!!!! Ab wann kann ich dann das Update machen?

Per Update ab sofort.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF