93_DbLog (MYSQL) funktioniert maximal 10 Minuten.

Begonnen von betateilchen, 16 Februar 2014, 21:07:52

Vorheriges Thema - Nächstes Thema

betateilchen

1. fhem wird gestartet


2014.02.16 20:33:50 3: Connecting to database mysql:database=fhemLog;host=192.168.123.158;port=3306 with user bbb-fhem
2014.02.16 20:33:50 3: Connection to db mysql:database=fhemLog;host=192.168.123.158;port=3306 established for pid 9207
2014.02.16 20:33:50 3: Connection to db mysql:database=fhemLog;host=192.168.123.158;port=3306 established


2. Das Logging funktioniert prima...


| 2014-02-16 20:33:51 | sz_RT           | CUL_HM     | battery: ok                        | battery        | ok                    |       |
| 2014-02-16 20:33:51 | sz_RT           | CUL_HM     | measured-temp: 20.6                | measured-temp  | 20.6                  |       |
| 2014-02-16 20:33:51 | sz_RT           | CUL_HM     | desired-temp: 12                   | desired-temp   | 12                    |       |
| 2014-02-16 20:33:51 | sz_RT           | CUL_HM     | actuator: 0 %                      | actuator       | 0                     |       |
| 2014-02-16 20:33:52 | ku_TC_Climate   | CUL_HM     | measured-temp: 21.7                | measured-temp  | 21.7                  |       |
| 2014-02-16 20:33:52 | ku_TC_Climate   | CUL_HM     | desired-temp: 16                   | desired-temp   | 16                    |       |
| 2014-02-16 20:33:52 | ku_TC_Climate   | CUL_HM     | humidity: 48                       | humidity       | 48                    |       |


3. ... maximal zehn Minuten


| 2014-02-16 20:41:37 | bd_RT           | CUL_HM     | measured-temp: 23.5                | measured-temp  | 23.5                  |       |
| 2014-02-16 20:41:37 | bd_RT           | CUL_HM     | desired-temp: 16                   | desired-temp   | 16                    |       |
| 2014-02-16 20:41:37 | bd_RT           | CUL_HM     | actuator: 0 %                      | actuator       | 0                     |       |


Danach nix mehr. Das Verhalten ist beliebig oft reproduzierbar. Nach einem rereadcfg funktioniert das Ganze wieder 10 Minuten.
Das Problem betrifft nur mysql - die sqlite Variante läuft völlig problemlos.

Im Logfile von fhem gibt es keinen Hinweis auf ein Problem um 20:41.xx Uhr - auch nicht bei höchstem verbose-Level.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Ich habe einen Verdächtigen eingekreist: die DHCP Lease-Dauer auf MySQL-Serverseite. Immer wenn die IP (des MySQL-Server) aktualisiert (aber nicht geändert!) wurde, wurde das Logging abgebrochen.

Bedenklich finde ich allerdings, dass 93_DbLog nichts davon mitbekommt, dass in die Datenbank tatsächlich gar nicht mehr geloggt werden kann.

Im Moment läuft das Logging seit knapp zwei Stunden unterbrechungsfrei durch, nachdem ich meinen DHCP Server angewiesen habe, die DHCP-Lease für den MySQL Server auf "infinite" zu setzen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

erwin

Hi Betateilchen,
ich fürchte, ich muss mich an diesen Thread anhängen....
Ich hatte bis zum 25.Jänner manchmal die folgenden Einträge im Log:
2014.01.24 20:08:14 2: DbLog: Failed to insert new readings into database: DBD::mysql::db begin_work failed: Turning off AutoCommit failed at ./FHEM/93_DbLog.pm line 404.

2014.01.24 20:08:14 3: Connecting to database mysql:database=fhem;host=192.168.5.245;port=3306 with user fhemuser
2014.01.24 20:08:14 3: Connection to db mysql:database=fhem;host=192.168.5.245;port=3306 established for pid 21214

... ich weiß, mein Fehler, duplicate records in die Datenbank zu schicken, ABER nach ein oder zwei retries ging alles wie gewohnt weiter -
Ähnliche Fehler gabs auch, falls ich den SQL-daemon gestoppt/gestartet habe, oder die Netzwerkverbindung kurz weg war...

Seit dem Update ist offensichtlich die Fehlertoleranz des DbLog Moduls schlechter geworden:
DBD::mysql::st execute failed: Duplicate entry 'Bad_Thermostat-temperature_avg_day-2014-01-31 00:02:44' for key 'PRIMARY' at ./FHEM/93_DbLog.pm line 398.
DBD::mysql::db begin_work failed: Already in a transaction at ./FHEM/93_DbLog.pm line 390.
DBD::mysql::db begin_work failed: Already in a transaction at ./FHEM/93_DbLog.pm line 390.
DBD::mysql::db begin_work failed: Already in a transaction at ./FHEM/93_DbLog.pm line 390.

und das hört nicht mehr auf und es wird auch nichts geloggt, bis zum nächsten FHEM restart.
Wie gesagt, leicht reproduzierbar: restart SQL-Server, Netzwerk-Problem, oder (jaja blöd von mir: duplicate entries)...
l.g. erwin
FHEM aktuell auf RaspberryPI Mdl 1-4
Maintainer: 00_KNXIO.pm 10_KNX.pm
User: CUNO2 (868 SLOWRF) - HMS100xx, FS20, FHT, 1-Wire  - 2401(iButton), 18x20, 2406, 2413 (AVR), 2450,..,MQTT2, KNX, SONOFF, mySENSORS,....
Hardware:  Busware ROT, Weinzierl IP731, 1-Wire GW,...

betateilchen

Hallo erwin,

DBD::mysql::db begin_work failed: Already in a transaction at ./FHEM/93_DbLog.pm line 390.

Das ist aber ein anderer Fehler ;)

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Tobias

@erwin, sollte mit dem letzten Update beseitigt sein...
Wenn nicht, bitte Info
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

betateilchen

Hallo Tobias,

93_DbLog ist (bei mir zumindest) extrem unzuverlässig, wenn der MySql-Server ausserhalb von localhost läuft.
Es scheint dann nicht mitzubekommen, wenn die Verbindung nicht mehr existiert und gar nicht mehr geloggt werden kann.

Viele Grüße
Udo
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

JoeALLb

Ich deaktiviere Dblog gerne,  wenn der mysql neu starten muss.  Wenn ich das deaktivieren während einer Transaktion mache,  connected er danach nicht wieder und meckert immer über die Transaktion. Nur ein restart  hilft dann.


Gesendet von meinem Xperia Pro mit Tapatalk

FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

betateilchen

genau das ist das Problem: eine unterbrochene Verbindung wird nicht wieder neu aufgebaut, weil dieser Fall überhaupt nicht abgefangen wird.

Das eingangs beschriebene DHCP Problem ist nur ein kleiner Teil des ganzen Problems. Es verbessert die Situation, aber es hilft nicht dauerhaft und stabil.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Tobias

Wenn ihr eine Idee habt nehme ich einen Patch gerne entgegen:)
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

betateilchen

#9
Schwierig. Dazu müsste man das Modul komplett redesignen.


  • Bestimmte Anzahl Logeinträge cachen
  • Wenn der Eimer voll ist, Verbindung zur Datenbank aufbauen
  • Den Eimer in die Datenbank auskippen
  • Verbindung zur Datenbank wieder schließen

Alternativ: nach dem Schreiben auf die Datenbank einen Rückleseversuch machen, wenn der schiefgeht, reagieren.

Was ich noch nicht debugged habe: Normalerweise kommt doch ein affectedRow auch bei einem Insert - was passiert, wenn das 0 zurückliefert? Bzw: was kommt zurück, wenn der Fall eingetreten ist, dass das Insert fehlschlägt?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Tobias

Mm. Gibt es keinen Fehler beim schreiben wenn die Verbindung weg ist? Dann könnte man darauf reagieren

Gesendet von meinem ALCATEL ONE TOUCH 997D mit Tapatalk

Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

betateilchen

#11
Doch, der würde eigentlich in $rv_ih und $rv_ic stehen, aber darum kümmert sich niemand, weil nur geprüft wird, ob das eval {} einen Fehler liefert.


  eval {
    # insert into history
    if (lc($DbLogType) =~ m(history) ) {
      my $rv_ih = $sth_ih->execute(($timestamp, $device, $type, $event, $reading, $value, $unit));
    }

    # update or insert current
    if (lc($DbLogType) =~ m(current) ) {
      my $rv_uc = $sth_uc->execute(($timestamp, $type, $event, $value, $unit, $device, $reading));
      if ($rv_uc == 0) {
        my $rv_ic = $sth_ic->execute(($timestamp, $device, $type, $event, $reading, $value, $unit));
      }
    }
  };

 
  if ($@) {
    Log3 $hash->{NAME}, 2, "DbLog: Failed to insert new readings into database: $@";
    $dbh->rollback();
    # reconnect
    $dbh->disconnect(); 
    DbLog_Connect($hash);
  }
  else {
    $dbh->commit();
    $dbh->{RaiseError} = 0; 
  }


Zitat von: DBI Doku zu executePerform whatever processing is necessary to execute the prepared statement. An undef is returned if an error occurs. A successful execute always returns true regardless of the number of rows affected, even if it's zero (see below). It is always important to check the return status of execute (and most other DBI methods) for errors

RaiseError ist zwar gesetzt, aber ich traue dem Frieden nicht wirklich. Ich muss mal debuggen, was da zurückkommt.

Im Moment ist es ja auch so, dass im Fehlerfall das Push fehlschlägt, eine Fehlermeldung ausgibt und ein rollback macht. Es wird nicht versucht, nach dem Reconnect das Ereignis erneut zu loggen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

JoeALLb

Sqlog blockiert meinen fhem, wenn der mysql die db reorganisiert. Das dauerte gestern 6 stunden. Hier wäre echt handlungsbedarf. Ich hatte gerne, dass er lokal in einer sqlite datensatze zwischenloggt, die mySql gerade nicht annehmen kann.
Kann man eigentlich das loggen nach current auch gleich entfernen, wenn das svg modul das schon als depreciated brandmarkt, oder wird das noch verwendet?

Gesendet von meinem Xperia Pro mit Tapatalk

FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

betateilchen

Zitat von: JoeALLb am 20 Februar 2014, 18:00:11Ich hatte gerne, dass er lokal in einer sqlite datensatze zwischenloggt, die mySql gerade nicht annehmen kann.

Wenn Du jetzt allen ernstes verlangst, zwei verschiedene Datenbanksysteme installieren zu müssen, wirst Du in Kürze gesteinigt. Nimm Dich in acht 8)

Zitat von: JoeALLb am 20 Februar 2014, 18:00:11Kann man eigentlich das loggen nach current auch gleich entfernen,

Ich brauche das noch und ich wäre froh, wenn current auch in sqlite funktionieren würde.

Außerdem kannst du das loggen in current per Attribut einfach abschalten.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

JoeALLb

Das abschalten ist mir schon klar,  aber kenne nur keinen Vorteil mehr davon und wollte es lieber entfernen,  als mir das nur nach history-loggen als defekt wünschen.

Gesteinigt?  Das nehme ich auf mich,  wenn ich dafür meine logeinträge retten kann...

Gesendet von meinem Xperia Pro mit Tapatalk

FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

betateilchen

Dass regelmäßig nicht nach history geloggt werden kann, hat nix mit current zu tun.

Und mysql braucht sechs Stunden für eine Reorg? Auf was für einer Hardware hast Du denn Deine Datenbank laufen?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

JoeALLb

Auf ne Rpi,  hab letztes Monat 163.000.000 Log Zeilen produziert,  leider etwas zu viele.  Ich bastle noch an einem (nachträglichen) "zusammenfassungsskript" für stündliche Werte. Diesen Monat bleibe ich unter 2.000.000 ;-)

Gesendet von meinem Xperia Pro mit Tapatalk
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

betateilchen

mysql gehört mMn definitiv nicht auf einen Einplatinencomputer wie Rpi der BBB - das macht absolut keinen Sinn, dafür ist die Performance einfach nicht ausreichend. Ich warte auf den Tag, an dem jemand versucht ein IDES auf den Raspberry zu bringen...
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

JoeALLb

Da widerspreche ich dir eindeutig.  Du hast es wohl nie ordentlich versucht. Die Performance reicht leicht,  und die Handhabung (Zugriff während dem weiterleiten,  Daten umschreiben,  triggern,  backup)) ist um Welten schöner als mit sqlite. Jedoch verwende ich ein angepasstes Modul um keine Transaktionen zu starten, die sehe ich hier als fehl am Plätze ;-)
Zusätzlich experimentiere ich gerade mit tabellen-partitionen,  was auch viel versprechend ist . Ich werde Änderungen am Modul vorschlagen,  wenn ich diese erprobt habe.

Gesendet von meinem Xperia Pro mit Tapatalk

FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

betateilchen

Zitat von: JoeALLb am 20 Februar 2014, 20:25:54
Da widerspreche ich dir eindeutig.  Du hast es wohl nie ordentlich versucht.

Wenn Du meinst...

Dass MySQL um Welten "schöner" ist als Sqlite steht übrigens ausser Frage.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

erwin

#20
Hi Tobias,
ich will jetzt noch nix endgültig sagen, ich hatte seit dem letzten change nur mehr einen event,
Das eval hat gegriffen, die DB wurde disconnected/reconnected, allerdings sind dann permanent Fehler vom rollback gekommen- geloggt wurde trotzdem, soweit ich das feststellen konnte. ich finde jetzt nur die Logeinträge nicht mehr....
Danke jedenfalls für deine Mühe! ;D
l.g. erwin

Edit: Ich weiss jetzt auch, wie ich duplicate records produzieren kann: Einfach den gmail server kurz abstellen;) , dann zuckt das mailcheck-modul für 2 Minuten aus, fhem hängt - und nacher gibts etliche events mit dem gleiche Timestamp.......
FHEM aktuell auf RaspberryPI Mdl 1-4
Maintainer: 00_KNXIO.pm 10_KNX.pm
User: CUNO2 (868 SLOWRF) - HMS100xx, FS20, FHT, 1-Wire  - 2401(iButton), 18x20, 2406, 2413 (AVR), 2450,..,MQTT2, KNX, SONOFF, mySENSORS,....
Hardware:  Busware ROT, Weinzierl IP731, 1-Wire GW,...

betateilchen

Ich denke, ich werde mir mal die DbLog_Push() vornehmen, wenn nächste Woche wieder zu Hause bin :) Ich hab da schon ein paar Ideen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Tobias

#22
In aller kürze: current ist definitiv nötig. Wer es nicht braucht kann es ja per attr abschalten. Zb. im Text2Speech um Statistiken bzgl. Löschungen von nicht benötigten Soundfiles zu sammeln

Sicherlich ist DbLog noch ausbaufähig, bevor ich es übernommen hatte war es noch nichtmal im MainTree. Bzgl Datenlöschungen und damit verbundener Kennzahlbildung habe ich auch schon Ideen aber mangels Zeit bzw anderer Baustellen noch nicht umgesetzt.
Ich bin allerdings sehr dran interessiert das Modul benutzerfreundlicher zu gestalten und bin Patches sehr aufgeschlossen - Solange es übersichtlich und Modular aufgebaut ist und die Komplexität noch beherrschbar ist ;)

Gesendet von meinem ALCATEL ONE TOUCH 997D mit Tapatalk

Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

betateilchen

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Tobias

ups, den kenne ich, aber den Hinweis mit Rudi hab ich wohl überlesen...
Eigentlich ließt Rudi immer rudemtär (**gg**) mit...
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

betateilchen

#25
den Hinweis mit Rudi habe ich auch erst heute dort geschrieben ;)

Meiner Meinung nach braucht man weder :CURRENT noch :HISTORY überhaupt noch in einer Plotdefinition, wenn man sich die Sourcecodes von 92_FileLog und 93_DbLog einmal genau anschaut. Und die 98_SVG braucht die auch nicht. Da taucht :CURRENT lediglich in der Doku auf.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Tobias

Dblog benötigt aber die Info HISTORY . Mit der get Methode kann man auch aus current lesen. Zufällig benötigt ein svg aber nur die history.

Gesendet von meinem ALCATEL ONE TOUCH 997D mit Tapatalk

Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

JoeALLb

Aber warum? Es ist doch relativ sinnlos, daten doppelt(in history und current) abzuspeichern!
Sogar unter Performance-Ansichten!
Wenn ich in beide Tabellen logge, ist mein RPI zu 100% ausgelastet. Wenn ich nur
in die HISTORY logge, dann zu deutlich weniger Protzent(ca. 25%) (dafür schwankend).

Wie genau lauten deien Überlegungen bezüglich Kennzahlbildung?
Soll ich(oder Betateilchen) da weiterüberlegen oder ist deine Idee schon relativ gereift?
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

betateilchen

Ich brauche die CURRENT weil ich die LETZTEN Daten EINES Readings EINES bestimmten Devices suchen will. Und das geht aus der CURRENT sehr viel einfacher als aus der History, weil da für jede Device/Reading Kombination genau EIN Datensatz existiert.

@Tobias: Du hast mich falsch verstanden. Ich bezog mich nur auf SVG. DbLog sollte einfach das "HISTORY" als default verwenden, wenn es im get() NICHT mit angefordert wird. Damit könnte man auf HISTORY und CURRENT bei der SVG-Definiton komplett verzichten. Meines Erachtens stammt doch diese Unterscheidung noch aus der Zeit, als DbLog zusätzlich zu FileLog eingeführt wurde und man diese Unterscheidung brauchte. SVG braucht das CURRENT definitiv nicht (weder für DbLog noch für FileLog, aber SVG-Definitionen werden immer automatisch mit :CURRENT angelegt, was mMn überhaupt keinen Sinn (mehr) macht.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Tobias

Es wird history verwendet wenn nichts angegeben wird. Ist default.
PS: bin jetzt 2 tage im urlaub

Gesendet von meinem ALCATEL ONE TOUCH 997D mit Tapatalk

Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

betateilchen

Das ist doch dann noch einfacher: Dann muss Rudi nur das :CURRENT aus der 98_autocreate entfernen und alles ist gut.

Schönen Kurz-Urlaub :)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Tobias

Eigentlich schon. Nur aus Kompatibilität hätte ich es auf history geändert

Gesendet von meinem ALCATEL ONE TOUCH 997D mit Tapatalk

Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

betateilchen

naja, ob man es weglässt oder auf :HISTORY ändert, kann man ja diskutieren. Wichtig ist nur, dass :CURRENT eben nicht mehr passt.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

JoeALLb

Zitat von: betateilchen am 21 Februar 2014, 13:56:01
Ich brauche die CURRENT weil ich die LETZTEN Daten EINES Readings EINES bestimmten Devices suchen will. Und das geht aus der CURRENT sehr viel einfacher als aus der History, weil da für jede Device/Reading Kombination genau EIN Datensatz existiert.


Was spricht gegen einen View?
Das hier funktioniert, könnte performance mäßig aber noch etwas optimiert werden.
CREATE VIEW `current2` AS select max(`h`.`TIMESTAMP`) AS `max(TIMESTAMP)`,`h`.`DEVICE` AS `DEVICE`,`h`.`TYPE` AS `TYPE`,`h`.`VALUE` AS `value` from `history` `h` where ((`h`.`TIMESTAMP` >= curdate()) and (`h`.`TIMESTAMP` < (curdate() + interval 1 day))) group by `h`.`DEVICE`,`h`.`READING`;
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

Tobias

Es geht einzig um allein um die performance. Es ist nunmal schneller als die aktuellen Einträge aus der History herauszusuchen - ob mit oder ohne view...
Außerdem gibt es Einträge in CURRENT die es in HISTORY  nicht gibt.
Wer die Current nicht braucht kann Sie per Attr abschalten.
Das es eine Current Tabelle gibt ist für mich gesetzt. Die wird auch nicht wegdiskutiert.
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

JoeALLb

Ist ja ok, das ganze,  und trotzdem sollte man seinen tellerrand im Blick behalten.  Als Datentechnik sind redundante Daten nur selten sinnvoll.  Da ich es deaktiviert habe,  stört es mich auch nicht mehr,  es müsste jedoch mal eine Anleitung ins Wiki geschrieben werden.  Manche halten Dblog am Rpi für unmöglich, und das ist einer der Hauptgründe dafür.
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

JoeALLb

Sagt mal, funktioniert bei euch DbLogExclude?
   
DbLogExclude (SONOS1|Sonos):600, battery:3600

bringt bei mir jede Menge Datensätze

3, 2014-02-25 13:54:14, 'temp.bz.AussenthermometerLaCross', 'LACROSSE', 'battery: ok', 'battery', 'ok', ''
5, 2014-02-25 13:54:22, 'temp.bz.AussenthermometerLaCross', 'LACROSSE', 'battery: ok', 'battery', 'ok', ''
11, 2014-02-25 13:54:35, 'temp.bz.AussenthermometerLaCross', 'LACROSSE', 'battery: ok', 'battery', 'ok', ''
19, 2014-02-25 13:54:39, 'temp.bz.AussenthermometerLaCross', 'LACROSSE', 'battery: ok', 'battery', 'ok', ''
21, 2014-02-25 13:54:47, 'temp.bz.AussenthermometerLaCross', 'LACROSSE', 'battery: ok', 'battery', 'ok', ''
25, 2014-02-25 13:54:55, 'temp.bz.AussenthermometerLaCross', 'LACROSSE', 'battery: ok', 'battery', 'ok', ''
27, 2014-02-25 13:55:04, 'temp.bz.AussenthermometerLaCross', 'LACROSSE', 'battery: ok', 'battery', 'ok', ''
34, 2014-02-25 13:55:12, 'temp.bz.AussenthermometerLaCross', 'LACROSSE', 'battery: ok', 'battery', 'ok', ''
36, 2014-02-25 13:55:20, 'temp.bz.AussenthermometerLaCross', 'LACROSSE', 'battery: ok', 'battery', 'ok', ''
39, 2014-02-25 13:55:28, 'temp.bz.AussenthermometerLaCross', 'LACROSSE', 'battery: ok', 'battery', 'ok', ''
43, 2014-02-25 13:55:37, 'temp.bz.AussenthermometerLaCross', 'LACROSSE', 'battery: ok', 'battery', 'ok', ''
45, 2014-02-25 13:55:45, 'temp.bz.AussenthermometerLaCross', 'LACROSSE', 'battery: ok', 'battery', 'ok', ''
48, 2014-02-25 13:55:53, 'temp.bz.AussenthermometerLaCross', 'LACROSSE', 'battery: ok', 'battery', 'ok', ''
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

betateilchen

ja, das funktioniert, wenn man das DbLogExclude - wie in der Doku beschrieben! - beim jeweiligen Device attributiert und nicht beim DbLog selbst ;)

Ausserdem hat Deine Frage absolut nix mit dem Thema zu tun, um das es hier im Thread eigentlich geht.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

JoeALLb

Danke dennoch ;-)

Gesendet von meinem Xperia Pro mit Tapatalk

FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

betateilchen

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!