Hauptmenü

Probleme mit dblog

Begonnen von Matthias_1968, 03 März 2017, 16:31:25

Vorheriges Thema - Nächstes Thema

Matthias_1968

Hallo,

ich habe ein Problem mit dblog.

Mal wird alles in der mysql Datenbank gespeichert und nach einem Neustart von FHEM plötzlich wieder nicht.

Ich starte momentan FHEM öfters, um meine cfg zu testen.

In der fhem.cfg sind folgende Attribute drin:
attr global userattr DbLogExclude DbLogInclude cmdIcon devStateIcon devStateStyle icon sortby webCmd widgetOverride
define MeineLogDB DbLog ./db.conf .*:.*
include ./SB2FHEM.cfg


Hier die SB2FHEM.cfg:
define RemoteSun FHEM2FHEM 192.168.2.4:7072  LOG:.*(SB_MinuteVerbrauch|SB_MinuteProduktion|SB_MinuteBezug|SB_MinuteEinspeisung|SB_MinuteLaden|SB_MinuteEntladen|SB_MinuteBatLaden|SB_MinuteBatEntladen).*

define FileLog_SonnenTageswerte FileLog ./log/SonnenTageswerte-%Y-%m.log (Sonnen:Tages.*)

define FileLog_SonnenMonatswerte FileLog ./log/SonnenMonatswerte-%Y-%m.log (Sonnen:Monats.*)

define Sonnen dummy
attr Sonnen DbLogInclude .*
attr Sonnen event-on-update-reading .*
attr Sonnen group SonnenWerte
attr Sonnen room Sonnenbatterie

define N_RemoteSun0 notify SB_MinuteVerbrauch.* {\
   my $AktWert = $EVTPART0/60;;\
   my $TagesWert = ReadingsVal("Sonnen","TagesVerbrauch",0);;\
   my $MonatsWert = ReadingsVal("Sonnen","MonatsVerbrauch",0);;\
   my $TagSum = ($AktWert + $TagesWert);;\
   my $MonatSum = ($AktWert + $MonatsWert);;\
   fhem("setreading Sonnen TagesVerbrauch $TagSum");;\
   fhem("setreading Sonnen MonatsVerbrauch $MonatSum");;\
   fhem("setreading Sonnen SB_MinuteVerbrauch $EVTPART0");;\
}
attr N_RemoteSun0 DbLogInclude .*

define N_RemoteSun2 notify SB_MinuteProduktion.* {\
   my $AktWert = $EVTPART0/60;;\
   my $TagesWert = ReadingsVal("Sonnen","TagesProduktion",0);;\
   my $MonatsWert = ReadingsVal("Sonnen","MonatsProduktion",0);;\
   my $TagSum = ($AktWert + $TagesWert);;\
   my $MonatSum = ($AktWert + $MonatsWert);;\
   fhem("setreading Sonnen TagesProduktion $TagSum");;\
   fhem("setreading Sonnen MonatsProduktion $MonatSum");;\
   fhem("setreading Sonnen SB_MinuteProduktion $EVTPART0");;\
}

define N_RemoteSun3 notify SB_MinuteBezug.* {\
   my $AktWert = $EVTPART0/60;;\
   my $TagesWert = ReadingsVal("Sonnen","TagesBezug",0);;\
   my $MonatsWert = ReadingsVal("Sonnen","MonatsBezug",0);;\
   my $TagSum = ($AktWert + $TagesWert);;\
   my $MonatSum = ($AktWert + $MonatsWert);;\
   fhem("setreading Sonnen TagesBezug $TagSum");;\
   fhem("setreading Sonnen MonatsBezug $MonatSum");;\
   fhem("setreading Sonnen SB_MinuteBezug $EVTPART0");;\
}

define N_RemoteSun4 notify SB_MinuteEinspeisung.* {\
   my $AktWert = $EVTPART0/60;;\
   my $TagesWert = ReadingsVal("Sonnen","TagesEinspeisung",0);;\
   my $MonatsWert = ReadingsVal("Sonnen","MonatsEinspeisung",0);;\
   my $TagSum = ($AktWert + $TagesWert);;\
   my $MonatSum = ($AktWert + $MonatsWert);;\
   fhem("setreading Sonnen TagesEinspeisung $TagSum");;\
   fhem("setreading Sonnen MonatsEinspeisung $MonatSum");;\
   fhem("setreading Sonnen SB_MinuteEinspeisung $EVTPART0");;\
}
define N_RemoteSun5 notify SB_MinuteLaden.* {\
   my $AktWert = $EVTPART0/60;;\
   my $TagesWert = ReadingsVal("Sonnen","TagesLaden",0);;\
   my $MonatsWert = ReadingsVal("Sonnen","MonatsLaden",0);;\
   my $TagSum = ($AktWert + $TagesWert);;\
   my $MonatSum = ($AktWert + $MonatsWert);;\
   fhem("setreading Sonnen TagesLaden $TagSum");;\
   fhem("setreading Sonnen MonatsLaden $MonatSum");;\
   fhem("setreading Sonnen SB_MinuteLaden $EVTPART0");;\
}

define N_RemoteSun6 notify SB_MinuteEntladen.* {\
   my $AktWert = $EVTPART0/60;;\
   my $TagesWert = ReadingsVal("Sonnen","TagesEntladen",0);;\
   my $MonatsWert = ReadingsVal("Sonnen","MonatsEntladen",0);;\
   my $TagSum = ($AktWert + $TagesWert);;\
   my $MonatSum = ($AktWert + $MonatsWert);;\
   fhem("setreading Sonnen TagesEntladen $TagSum");;\
   fhem("setreading Sonnen MonatsEntladen $MonatSum");;\
   fhem("setreading Sonnen SB_MinuteEntladen $EVTPART0");;\
}

define N_RemoteSun7 notify SB_MinuteBatLaden.* {\
   my $AktWert = $EVTPART0/60;;\
   my $TagesWert = ReadingsVal("Sonnen","TagesBatLaden",0);;\
   my $MonatsWert = ReadingsVal("Sonnen","MonatsBatLaden",0);;\
   my $TagSum = ($AktWert + $TagesWert);;\
   my $MonatSum = ($AktWert + $MonatsWert);;\
   fhem("setreading Sonnen TagesBatLaden $TagSum");;\
   fhem("setreading Sonnen MonatsBatLaden $MonatSum");;\
   fhem("setreading Sonnen SB_MinuteBatLaden $EVTPART0");;\
}

define N_RemoteSun8 notify SB_MinuteBatEntladen.* {\
   my $AktWert = $EVTPART0/60;;\
   my $TagesWert = ReadingsVal("Sonnen","TagesBatEntladen",0);;\
   my $MonatsWert = ReadingsVal("Sonnen","MonatsBatEntladen",0);;\
   my $TagSum = ($AktWert + $TagesWert);;\
   my $MonatSum = ($AktWert + $MonatsWert);;\
   fhem("setreading Sonnen TagesBatEntladen $TagSum");;\
   fhem("setreading Sonnen MonatsBatEntladen $MonatSum");;\
   fhem("setreading Sonnen SB_MinuteBatEntladen $EVTPART0");;\
}
define Tageswechsel at *00:00:00 {\
   fhem("setreading Sonnen TagesVerbrauch 0");;\
   fhem("setreading Sonnen TagesProduktion 0");;\
   fhem("setreading Sonnen TagesBezug 0");;\
   fhem("setreading Sonnen TagesEinspeisung 0");;\
   fhem("setreading Sonnen TagesLaden 0");;\
   fhem("setreading Sonnen TagesEntladen 0");;\
   fhem("setreading Sonnen TagesBatLaden 0");;\
   fhem("setreading Sonnen TagesBatEntladen 0");;\
}

define Monatswechsel at *00:00:00 {\
   if($mday==1) {\
      fhem("setreading Sonnen MonatsVerbrauch 0");;\
      fhem("setreading Sonnen MonatsProduktion 0");;\
      fhem("setreading Sonnen MonatsBezug 0");;\
      fhem("setreading Sonnen MonatsEinspeisung 0");;\
      fhem("setreading Sonnen MonatsLaden 0");;\
      fhem("setreading Sonnen MonatsEntladen 0");;\
      fhem("setreading Sonnen MonatsBatLaden 0");;\
      fhem("setreading Sonnen MonatsBatEntladen 0");;\
}\
}


Die Filelogs funktionieren beide, aber dblog geht mal und dann wieder nicht.

Ich ändere die cfg meist auf der Konsole und restarte fhem meist auch über ein restart.sh script, weil ich lieber auf tippe als klicke.

/etc/init.d/fhem stop ; sleep 1 ; /etc/init.d/fhem start

Was ich nicht verstehe, ist, warum mal das dblog geschrieben wird und dann wieder nicht.

Habe ich im Code irgendwas, wodurch dblog gestört wird?

Mit der oben genannten SB2FHEM.cfg wird das log aktuell nicht geschrieben.

Ich bin für jeden Tip dankbar!


Gruß
Matthias

dev0

Zitat
Ich bin für jeden Tip dankbar!

Höre auf die fhem.cfg anzufassen und benutze die GUI oder wenn Du lieber tippst, dann telnet. Damit ersparst Du Dir auch die ganzen Neustarts.

Matthias_1968

ZitatHöre auf die fhem.cfg anzufassen

Ich fasse die fhem.cfg nicht an, nur meine SB2FHEM.cfg.

Zitatoder wenn Du lieber tippst, dann telnet

Ich gehe immer mit ssh auf den Raspberry auf dem FHEM läuft.

Ich hoffe ich trete niemanden zu nahe, aber:
Mir ist nicht klar, wo der Unterschied zwischen "auf der Konsole tippen" und "Klicki-Bunty und fertig" ist.

Ich möchte doch nur verstehen, warum dblog unterschiedlich reagiert.

Gruß
Matthias

dev0

Der ansprochene telnet Zugang hat nichts mit dem ssh zu Deinem host zu tun. Du kannst Dich mit telnet direkt mit der fhem console verbinden. zB. "telnet fhem-host 7072". Mehr Komfort hast Du noch, wenn Du einen readline wrapper benutzt, dann funktionieren bspw. auch die Pfeiltasten um die History durchzublättern: "rlwrap telnet fhem-host 7072".

Gründe, warum man die fhem.cfg nicht editieren sollte, liefert die Suchfunktion oder gefühlt jeder xte Beitrag hier im Anfängerbereich.

Matthias_1968

OK, telnet schaue ich mir an.

ZitatGründe, warum man die fhem.cfg nicht editieren sollte, liefert die Suchfunktion oder gefühlt jeder xte Beitrag hier im Anfängerbereich.

Nochmal: Ich habe die fhem.cfg nicht manuell editiert! ich habe ein
include ./SB2FHEM.cfg

in der Datei.

Ich möchte auch nicht streiten, sondern nur wissen, ob ich in der SB2FHEM.cfg irgendwas drin habe, was dblog nicht gefällt.
Gruß
Matthias

dev0

Ich weiss nicht wie du darauf kommst, das hier jemand streiten möchte...

Ein Auszug aus einer .cfg hilft nicht wirklich. Vielleicht kann Dir jemand helfen, wenn Du ein list vom Device in code-tags zeigst. Ich bin jedenfalls raus.

kadettilac89

Läuft die Datenbank fehlerfrei oder hast du irgendwelche Logs die auf Verbindungsprobleme hinweisen? Welche DB läuft im Hintergrund und wo? Selber Host ... also alles auf dem selben Raspberry oder ist noch Netzwerk oder externe Festplatte dabei?

Mach ein verbose 5 damit du siehst ob fhem selbst irgendwo ein Problem hat. DBLog ist eigentlich stabil, hatte noch nie Probleme, auch nicht bei Restarts.

In deinem Include hast du wenige Updates wenn ich das richtig sehe. Binde mal eine Funktion als DBLog ein, die viele Updates macht. Z. B. sysmon. Dann siehst du wann genau nicht geloggt wird. Du vermutest dass es mit dem Restart zu tun hat, vielleicht hängt sich aber auch erst später auf.


jnewton957

Zitat von: Matthias_1968 am 03 März 2017, 17:26:35
Ich habe die fhem.cfg nicht manuell editiert! ich habe ein
include ./SB2FHEM.cfg

in der Datei.

Du denkst aber bitte daran, dass du bei Anpassungen in der SB2FHEM.cfg jedes mal ein "rereadcfg" machst ?
Sonst wird die SB2FHEM.cfg eben nicht neu verarbeitet.

Grüße
Jörg
FHEM6.2 auf Pi5
V 1.66 nanoCUL 433 (IT)
V 1.66 nanoCUL868 (HM)
sqlite3 LogDb
ELRO AB440, DECT200,  TFA30.3125, esp8266, HM, TabletUI, IR-Schreiblesekopf (Udo),tibber Pulse, Kostal Pico, cfos Wallbox, Modbus TCP

Matthias_1968

#8
Hallo,
ZitatDu denkst aber bitte daran, dass du bei Anpassungen in der SB2FHEM.cfg jedes mal ein "rereadcfg" machst ?
Sonst wird die SB2FHEM.cfg eben nicht neu verarbeitet.
Ich habe stattdessen immen fhem neu gestartet, laut log wurde die SB2FHEM.cfg dann auch jedesmal geladen.

@kadettilac89:
Die Mysql läuft auf dem gleichen Raspberry und wurde nach der Anleitung erstellt.

Seit heute Nacht um 00:00 Uhr funktioniert der DbLog wieder, das "at" Kommando scheint das ausgelöst zu haben.


2017.03.04 00:00:00 5: exec at command Tageswechsel
2017.03.04 00:00:00 5: Cmd: >{
   fhem("setreading Sonnen TagesVerbrauch 0");
   fhem("setreading Sonnen TagesProduktion 0");
   fhem("setreading Sonnen TagesBezug 0");
   fhem("setreading Sonnen TagesEinspeisung 0");
   fhem("setreading Sonnen TagesLaden 0");
   fhem("setreading Sonnen TagesEntladen 0");
   fhem("setreading Sonnen TagesBatLaden 0");
   fhem("setreading Sonnen TagesBatEntladen 0");
}<
2017.03.04 00:00:00 5: Cmd: >setreading Sonnen TagesVerbrauch 0<
2017.03.04 00:00:00 5: Starting notify loop for Sonnen, 1 event(s), first is TagesVerbrauch: 0
2017.03.04 00:00:00 5: createNotifyHash
2017.03.04 00:00:00 4: DbLog MeineLogDB -> ################################################################
2017.03.04 00:00:00 4: DbLog MeineLogDB -> ###              start of new Logcycle                       ###
2017.03.04 00:00:00 4: DbLog MeineLogDB -> ################################################################
2017.03.04 00:00:00 4: DbLog MeineLogDB -> amount of events received: 1 for device: Sonnen
2017.03.04 00:00:00 4: DbLog MeineLogDB -> check Device: Sonnen , Event: TagesVerbrauch: 0
2017.03.04 00:00:00 4: DbLog MeineLogDB -> added event - Timestamp: 2017-03-04 00:00:00, Device: Sonnen, Type: DUMMY, Event: TagesVerbrauch: 0, Reading: TagesVerbrauch, Value: 0, Unit:
2017.03.04 00:00:00 5: DbLog MeineLogDB -> Primary Key used in fhem.history: none
2017.03.04 00:00:00 5: DbLog MeineLogDB -> Primary Key used in fhem.current: none
2017.03.04 00:00:00 4: DbLog MeineLogDB -> processing event Timestamp: 2017-03-04 00:00:00, Device: Sonnen, Type: DUMMY, Event: TagesVerbrauch: 0, Reading: TagesVerbrauch, Value: 0, Unit:
2017.03.04 00:00:00 4: DbLog MeineLogDB -> 1 of 1 events inserted into table history
2017.03.04 00:00:00 5: DbLog MeineLogDB -> DbLog_Push Returncode: 0
2017.03.04 00:00:00 5: End notify loop for Sonnen


Ich verstehe nur nicht, warum davor nicht geloggt wurde.

Aktuell nach einem "rereadcfg" wird keine Eintrag mehr in die DbLog geschrieben, die Filelogs sind in Ordnung.

Gruß
Matthias

kadettilac89

Zitat von: Matthias_1968 am 04 März 2017, 10:47:28

Aktuell nach einem "rereadcfg" wird keine Eintrag mehr in die DbLog geschrieben, die Filelogs sind in Ordnung.


Ohne Logs wird dir keiner helfen können. Ich selber habe Includes mit DBLog, habe eben getestet, rereadcfg und Logs werden auch im Anschluss geschrieben.


Matthias_1968

Hallo,
die Antwort habe ich erst heute gesehen.

Das Problem hat sich erledigt, ich habe die gesamte Config erstmal auf Eis gelegt.

Als erstes muß ich mich dransetzen vernüftige Grunddaten zu bekommen.

Vielen Dank