FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: wowogiengen am 22 September 2024, 21:14:07

Titel: Datenbank loggt Einträge nicht
Beitrag von: wowogiengen am 22 September 2024, 21:14:07
Hallo,
ich habe FHEM an die SQL-Datenbank angeschlossen:
define mySQLDB DbLog ./mySQLDB.conf HzgThermostat.*:statMeasured-temp.*AvgLast|HzgAktor.*:statLevel.*Last
Damit sollen zwei Gruppen von Readings in die Datenbank eingetragen werden:
einmal
HzgThermostat.*:statMeasured-temp.*AvgLastalso die Durchschnittstemperatur der letzten Stunde. Das funktioniert auch soweit. Ich sehe die Einträge in der DB, wenn ich ein SELECT darauf ausführe.

Zum zweiten dann
HzgAktor.*:statLevel.*Last
Also die Zeitdauern für An und Aus der Aktoren. Diese zeigen mir das Reading auch an (bsp. für das Büro):
define HzgAktorBuero CUL_HM 609F1501
#   READINGS:
#     2024-09-22 21:11:34   statLevelDay    0: 20:39:46 0_Count: 9 100: 00:31:53 100_Count: 9
#     2024-09-21 23:59:55   statLevelDayLast 0: 23:36:53 0_Count: 9 100: 00:23:07 100_Count: 8
#     2024-09-22 21:11:34   statLevelHour   0: 00:07:10 0_Count: 2 100: 00:04:29 100_Count: 2
#     2024-09-22 20:59:55   statLevelHourLast 0: 01:00:00 0_Count: 1
#     2024-09-22 21:11:34   statLevelMonth  0: 21d 14:30:16 0_Count: 117 100: 06:41:23 100_Count: 117
#     2024-08-31 23:59:55   statLevelMonthLast 0: 30d 10:55:10 0_Count: 241 100: 13:04:50 100_Count: 240
#     2024-09-22 21:11:34   statLevelYear   0: 175d 21:34:20 0_Count: 1363 100: 2d 05:39:32 100_Count: 1363 (since: 2024-03-28_16:57:42)

Aber irgendwie bekomme ich den Wert dann nicht in die Datenbank...
was mache ich oben beim DbLog Device denn falsch?

Viele Grüße Wolfgang
Titel: Aw: Datenbank loggt Einträge nicht
Beitrag von: DS_Starter am 22 September 2024, 21:40:48
Hallo Wolfgang,

ich vermute ein Problem beim Splitting der Daten in die entsprechenden Datenbankfelder. Die Datensätze beinhalten viele ':' die zur Trennung von Readings und deren Werte der Events herangezogen werden.

Du kannst im DbLog das Attr verbose4Devs = HzgAktor.* setzen (um den Überblick zu behalten) und danach noch verbose = 5. Dann sieht man im Log sehr wahrscheinlich die Problematik.

Grüße,
Heiko
Titel: Aw: Datenbank loggt Einträge nicht
Beitrag von: wowogiengen am 22 September 2024, 21:47:38
Hallo,
das Attribut habe ich mal gesetzt...
Mir ist auch noch aufgefallen, dass zum Beispiel beim Thermostat
HzgThermostatBuero DbLogInclude .*measured-temp.*steht.
Bei den Aktoren steht da aber nichts drin...
Was sollte ich eintragen?
Titel: Aw: Datenbank loggt Einträge nicht
Beitrag von: DS_Starter am 22 September 2024, 21:57:32
Das kommt darauf an wie im DbLog das Attr DbLogSelectionMode gesetzt ist, falls es gesetzt ist.
Wenn DbLogSelectionMode = Include gesetzt, dann musst du in allen zu loggenden Devices das Attr DbLogInclude  entsprechend deinen Wünschen setzen.
Ist DbLogSelectionMode im DbLog nicht gesetzt, ist Exclude der default und das Attr DbLogInclude in den Devices wird ignoriert.
Titel: Aw: Datenbank loggt Einträge nicht
Beitrag von: wowogiengen am 22 September 2024, 22:20:44
Hallo,
die Logdatei kann ich hier mal anhängen, ab der Änderung mit dem Verbose...
Fehler seh ich da jetzt keinen (bis auf die PERL WARNING:, aber da hab ich wohl Befehle falsch eingetippt)...

Das DbLog-Device hat diese Definition

define mySQLDB DbLog ./mySQLDB.conf HzgThermostat.*:statMeasured-temp.*AvgLast|HzgAktor.*:statLevel.*.Last
attr mySQLDB .* 1
attr mySQLDB DbLogSelectionMode Exclude/Include
attr mySQLDB DbLogType Current/History
attr mySQLDB asyncMode 1
attr mySQLDB cacheLimit 1500
attr mySQLDB event-on-change-reading CacheUsage
attr mySQLDB insertMode 1
attr mySQLDB room Büro,DbLog,LogFiles,System
attr mySQLDB showNotifyTime 0
attr mySQLDB showproctime 1
attr mySQLDB stateFormat {\
"Cache: ".ReadingsVal($name,"CacheUsage",0)."<br> NextSync:".ReadingsVal($name,"NextSync",0)\
}
attr mySQLDB syncInterval 240
attr mySQLDB verbose 5
attr mySQLDB verbose4Devs HzgAktor.*
attr mySQLDB webCmd listCache:commitCache
#   COLUMNS    field length used for Device: 64, Type: 64, Event: 512, Reading: 64, Value: 128, Unit: 32
#   CONFIGURATION ./mySQLDB.conf
#   DEF        ./mySQLDB.conf HzgThermostat.*:statMeasured-temp.*AvgLast|HzgAktor.*:statLevel.*.Last
#   FD         4
#   FUUID      5ed93474-f33f-a625-5c2b-b4f6628ef5ffc1ff
#   FVERSION   93_DbLog.pm:v5.9.3-s28085/2023-10-22
#   MODE       asynchronous
#   MODEL      MYSQL
#   NAME       mySQLDB
#   NOTIFYDEV  HzgThermostat.*,HzgAktor.*
#   NR         2
#   NTFY_ORDER 50-mySQLDB
#   PID        7502
#   REGEXP     HzgThermostat.*:statMeasured-temp.*AvgLast|HzgAktor.*:statLevel.*.Last
#   SBP_PID    7503
#   SBP_STATE  running
#   STATE      Cache: 0<br> NextSync:2024-09-22 22:12:24 or when CacheUsage 1500 is reached
#   TYPE       DbLog
#   UTF8       0
#   dbconn     mysql:database=fhem;host=192.168.188.6;port=3307
#   dbuser     fhemdbuser
#   eventCount 7
#   HELPER:
#     COLSET     1
#     DEVICECOL  64
#     EVENTCOL   512
#     OLDSTATE   connected
#     PACKAGE    main
#     READINGCOL 64
#     TC         current
#     TH         history
#     TYPECOL    64
#     UNITCOL    32
#     VALUECOL   128
#     VERSION    5.9.3
#   OLDREADINGS:
#   READINGS:
#     2024-09-22 22:00:24   CacheOverflowLastNum 0
#     2024-03-28 17:00:16   CacheOverflowLastState normal
#     2024-09-22 22:08:24   CacheUsage      0
#     2024-09-22 22:08:24   NextSync        2024-09-22 22:12:24 or when CacheUsage 1500 is reached
#     2024-09-22 22:00:25   background_processing_time 0.2908
#     2024-09-22 22:00:25   sql_processing_time 0.2747
#     2024-09-22 22:08:24   state           connected
#
setstate mySQLDB Cache: 0<br> NextSync:2024-09-22 22:12:24 or when CacheUsage 1500 is reached
setstate mySQLDB 2024-09-22 22:00:24 CacheOverflowLastNum 0
setstate mySQLDB 2024-03-28 17:00:16 CacheOverflowLastState normal
setstate mySQLDB 2024-09-22 22:08:24 CacheUsage 0
setstate mySQLDB 2024-09-22 22:08:24 NextSync 2024-09-22 22:12:24 or when CacheUsage 1500 is reached
setstate mySQLDB 2024-09-22 22:00:25 background_processing_time 0.2908
setstate mySQLDB 2024-09-22 22:00:25 sql_processing_time 0.2747
setstate mySQLDB 2024-09-22 22:08:24 state connected


die Attribute DbLogInclude sind auch nicht konsistent, aber trotzdem funktioniert das Logging der Temperaturen:

displayattr Hzg.* DbLogInclude

HzgAktorBuero statLevel.*
HzgHC_Bad .*:statpulseTimePerDayHourAvgLast
HzgHC_Buero pulseTimePerDay
HzgHC_Flur pulseTimePerDay
HzgHC_Schlafzimmer pulseTimePerDay
HzgHC_Toilette pulseTimePerDay
HzgHC_Wohnzimmer pulseTimePerDay
HzgThermostatBad .*:statMeasured-tempHourAvgLast
HzgThermostatBuero .*measured-temp.*
myStatDevice .*

Wäre nett, wenn ich da noch nen Tipp bekäme, den ich dann morgen abend umsetzen kann...
Vor allem, alles was nicht notwendig ist, rauswerfen...
Titel: Aw: Datenbank loggt Einträge nicht
Beitrag von: DS_Starter am 22 September 2024, 22:38:13
Oh bitte verbose 5 nur im DbLog Device setzen und nicht global. Dann bitte das Log nochmal anhängen.

Ansonsten würde ich im DbLog Device das Attr DbLogSelectionMode löschen und in allen Devices ebenfalls das Attr DbLogInclude und ggf. das Attr DbLogExclude löschen.

Dann wird generell der im DEF angegebene Regex ausgewertet was m.M. nach normalerweise best Practice ist.

ACHTUNG:
vorher abklären welche Devices/Readings du wirklich loggen möchtest und ggf. den Regex im DEF erweitern/anpassen!

Edit: du solltest DbLog mal updaten. Aktuelle Version ist v5.10.2
Titel: Aw: Datenbank loggt Einträge nicht
Beitrag von: wowogiengen am 23 September 2024, 19:17:19
Hallo DS_Starter,
Zitat von: DS_Starter am 22 September 2024, 22:38:13Oh bitte verbose 5 nur im DbLog Device setzen und nicht global. Dann bitte das Log nochmal anhängen.
Das verbose 5 ist wirklich nur im DbLog-Device aktiv (und auch noch in einem DoIf), also sollte sich am Log nichts ändern.

Alle anderen verbose-Attribute sind auf 2, manche sogar nur auf 1, vielleicht sollte ich die alle mal auf 2 gleichziehen...

Zitat von: DS_Starter am 22 September 2024, 22:38:13Ansonsten würde ich im DbLog Device das Attr DbLogSelectionMode löschen und in allen Devices ebenfalls das Attr DbLogInclude und ggf. das Attr DbLogExclude löschen.

Dann wird generell der im DEF angegebene Regex ausgewertet was m.M. nach normalerweise best Practice ist.

ACHTUNG:
vorher abklären welche Devices/Readings du wirklich loggen möchtest und ggf. den Regex im DEF erweitern/anpassen!

Edit: du solltest DbLog mal updaten. Aktuelle Version ist v5.10.2

Ich will eigentlich die Daten loggen, welche vom Statistic-Device erzeugt werden:

define myStatDevice statistics HzgThermostat.*|HzgAktor.*
attr myStatDevice DbLogInclude .*
attr myStatDevice durationPeriodHour 1
attr myStatDevice durationReadings level
attr myStatDevice minAvgMaxReadings measured-temp
attr myStatDevice room Büro,DbLog,System
attr myStatDevice singularReadings HzgThermostat.*:measured-temp:Avg:(Hour|Day|Month)|HzgAktor.*:level:DurationState:(Hour|Day|Month)\

attr myStatDevice verbose 1
#   DEF        HzgThermostat.*|HzgAktor.*
#   DEV_REGEXP HzgThermostat.*|HzgAktor.*
#   FUUID      65ab9864-f33f-a625-db6b-b1f16d1f973052d0
#   NAME       myStatDevice
#   NOTIFYDEV  global,HzgThermostat.*|HzgAktor.*
#   NR         225
#   NTFY_ORDER 10-myStatDevice
#   PREFIX     stat
#   STATE      Updated stats for: HzgThermostatWohnzimmer
#   TYPE       statistics
#   eventCount 8890
#   READINGS:
#     2024-09-22 20:53:23   monitoredDevicesCUL_HM HzgThermostatHWR,HzgAktorBad,HzgAktorBuero,HzgAktorFlur,HzgAktorSchlafzimmer,HzgAktorToilette,HzgAktorWohnzimmer,HzgThermostatBad,HzgThermostatBad_remote,HzgThermostatBuero,HzgThermostatFlur,HzgThermostatSchlafzimmer,HzgThermostatToilette,HzgThermostatWohnzimmer
#     2024-09-22 20:53:23   monitoredDevicesnotify HzgThermostatBuero_notify_1
#     2024-09-23 18:59:55   nextPeriodChangeCalc 2024-09-23 19:59:55
#     2024-09-23 18:59:55   state           Updated stats for: HzgThermostatWohnzimmer
#   fhem:
#     modulVersion $Date: 2023-10-22 16:27:28 +0200 (Sun, 22 Oct 2023) $
#     nextPeriodChangeTime 1727114395
#
setstate myStatDevice Updated stats for: HzgThermostatWohnzimmer
setstate myStatDevice 2024-09-23 18:59:55 .HzgAktorBad:levelDay showDate: 0 100: 5660 (since: 2024-03-28_16:57:23) 0_Count: 9 lastState: 0 0: 62740 lastTime: 1727110795 100_Count: 8
setstate myStatDevice 2024-09-23 18:59:55 .HzgAktorBad:levelHour (since: 2024-03-28_16:57:23) showDate: 0 0_Count: 1 lastTime: 1727110795 0: 0 lastState: 0
setstate myStatDevice 2024-09-23 18:59:55 .HzgAktorBad:levelMonth 100_Count: 159 0: 1884815 lastTime: 1727110795 lastState: 0 0_Count: 160 (since: 2024-03-28_16:57:23) 100: 84385 showDate: 0
setstate myStatDevice 2024-09-23 18:59:55 .HzgAktorBad:levelYear (since: 2024-03-28_16:57:23) showDate: 1 100: 1184622 0_Count: 1601 0: 14284730 lastTime: 1727110795 lastState: 0 100_Count: 1601
setstate myStatDevice 2024-09-23 18:59:55 .HzgAktorBuero:levelDay 0_Count: 8 (since: 2024-03-28_16:57:42) 100: 1441 showDate: 0 100_Count: 7 lastTime: 1727110795 0: 66959 lastState: 0
setstate myStatDevice 2024-09-23 18:59:55 .HzgAktorBuero:levelHour 0_Count: 1 showDate: 0 (since: 2024-03-28_16:57:42) lastState: 0 0: 0 lastTime: 1727110795
setstate myStatDevice 2024-09-23 18:59:55 .HzgAktorBuero:levelMonth 0: 1942989 lastTime: 1727110795 lastState: 0 100_Count: 134 0_Count: 135 (since: 2024-03-28_16:57:42) 100: 26211 showDate: 0
setstate myStatDevice 2024-09-23 18:59:55 .HzgAktorBuero:levelYear showDate: 1 100: 195300 (since: 2024-03-28_16:57:42) 0_Count: 1381 100_Count: 1380 lastState: 0 0: 15274033 lastTime: 1727110795
setstate myStatDevice 2024-09-23 18:59:55 .HzgAktorFlur:levelDay 0_Count: 8 (since: 2024-03-28_16:57:24) showDate: 0 100: 1157 100_Count: 7 0: 67243 lastTime: 1727110795 lastState: 0
setstate myStatDevice 2024-09-23 18:59:55 .HzgAktorFlur:levelHour lastTime: 1727110795 0: 0 lastState: 0 0_Count: 1 (since: 2024-03-28_16:57:24) showDate: 0
setstate myStatDevice 2024-09-23 18:59:55 .HzgAktorFlur:levelMonth lastTime: 1727110795 0: 1945641 lastState: 0 100_Count: 125 (since: 2024-03-28_16:57:24) showDate: 0 100: 23559 0_Count: 126
setstate myStatDevice 2024-09-23 18:59:55 .HzgAktorFlur:levelYear 0_Count: 1368 100: 239037 showDate: 1 (since: 2024-03-28_16:57:24) lastState: 0 0: 15230314 lastTime: 1727110795 100_Count: 1367
setstate myStatDevice 2024-09-23 18:59:55 .HzgAktorSchlafzimmer:levelDay 0_Count: 10 100: 3218 showDate: 0 (since: 2024-03-28_16:56:20) 100_Count: 9 lastState: 0 0: 65182 lastTime: 1727110795
setstate myStatDevice 2024-09-23 18:59:55 .HzgAktorSchlafzimmer:levelHour (since: 2024-03-28_16:56:20) showDate: 0 0_Count: 1 0: 0 lastTime: 1727110795 lastState: 0
setstate myStatDevice 2024-09-23 18:59:55 .HzgAktorSchlafzimmer:levelMonth 0: 1939409 lastTime: 1727110795 lastState: 0 100_Count: 128 0_Count: 129 (since: 2024-03-28_16:56:20) 100: 29791 showDate: 0
setstate myStatDevice 2024-09-23 18:59:55 .HzgAktorSchlafzimmer:levelYear 0_Count: 1366 showDate: 1 100: 298880 (since: 2024-03-28_16:56:20) lastState: 0 0: 15170535 lastTime: 1727110795 100_Count: 1366
setstate myStatDevice 2024-03-28 16:56:20 .HzgAktorSchlafzimmer:stateDay (since: 2024-03-28_16:56:20) showDate: 1 on_Count: 1 on: 0 lastState: on lastTime: 1711641380
setstate myStatDevice 2024-03-28 16:56:20 .HzgAktorSchlafzimmer:stateHour (since: 2024-03-28_16:56:20) showDate: 1 on: 0 lastState: on on_Count: 1 lastTime: 1711641380
setstate myStatDevice 2024-03-28 16:56:20 .HzgAktorSchlafzimmer:stateMonth lastTime: 1711641380 on_Count: 1 on: 0 lastState: on (since: 2024-03-28_16:56:20) showDate: 1
setstate myStatDevice 2024-03-28 16:56:20 .HzgAktorSchlafzimmer:stateYear (since: 2024-03-28_16:56:20) showDate: 1 on_Count: 1 on: 0 lastState: on lastTime: 1711641380
setstate myStatDevice 2024-09-23 18:59:55 .HzgAktorToilette:levelDay 0_Count: 8 (since: 2024-03-28_16:57:26) 100: 1302 showDate: 0 100_Count: 7 lastTime: 1727110795 0: 67098 lastState: 0
setstate myStatDevice 2024-09-23 18:59:55 .HzgAktorToilette:levelHour showDate: 0 (since: 2024-03-28_16:57:26) 0_Count: 1 lastState: 0 0: 0 lastTime: 1727110795
setstate myStatDevice 2024-09-23 18:59:55 .HzgAktorToilette:levelMonth lastState: 0 0: 1951541 lastTime: 1727110795 100_Count: 121 showDate: 0 100: 17659 (since: 2024-03-28_16:57:26) 0_Count: 122
setstate myStatDevice 2024-09-23 18:59:55 .HzgAktorToilette:levelYear 100_Count: 1358 lastState: 0 lastTime: 1727110795 0: 15210170 100: 259179 showDate: 1 (since: 2024-03-28_16:57:26) 0_Count: 1359
setstate myStatDevice 2024-09-23 18:59:55 .HzgAktorWohnzimmer:levelDay (since: 2024-03-28_16:57:20) 100: 798 showDate: 0 0_Count: 8 100_Count: 7 lastTime: 1727110795 0: 67602 lastState: 0
setstate myStatDevice 2024-09-23 18:59:55 .HzgAktorWohnzimmer:levelHour (since: 2024-03-28_16:57:20) showDate: 0 0_Count: 1 0: 0 lastTime: 1727110795 lastState: 0
setstate myStatDevice 2024-09-23 18:59:55 .HzgAktorWohnzimmer:levelMonth showDate: 0 100: 143355 (since: 2024-03-28_16:57:20) 0_Count: 209 100_Count: 208 lastState: 0 0: 1825845 lastTime: 1727110795
setstate myStatDevice 2024-09-23 18:59:55 .HzgAktorWohnzimmer:levelYear 100_Count: 2149 lastTime: 1727110795 0: 14281259 lastState: 0 (since: 2024-03-28_16:57:20) showDate: 1 100: 1188096 0_Count: 2149
setstate myStatDevice 2024-03-28 16:57:20 .HzgAktorWohnzimmer:stateDay on_Count: 1 lastState: on on: 0 showDate: 1 (since: 2024-03-28_16:57:20) lastTime: 1711641440
setstate myStatDevice 2024-03-28 16:57:20 .HzgAktorWohnzimmer:stateHour lastTime: 1711641440 showDate: 1 (since: 2024-03-28_16:57:20) on_Count: 1 lastState: on on: 0
setstate myStatDevice 2024-03-28 16:57:20 .HzgAktorWohnzimmer:stateMonth (since: 2024-03-28_16:57:20) showDate: 1 on: 0 lastState: on on_Count: 1 lastTime: 1711641440
setstate myStatDevice 2024-03-28 16:57:20 .HzgAktorWohnzimmer:stateYear showDate: 1 (since: 2024-03-28_16:57:20) lastState: on on: 0 on_Count: 1 lastTime: 1711641440

setstate myStatDevice 2024-09-22 20:53:23 monitoredDevicesCUL_HM HzgThermostatHWR,HzgAktorBad,HzgAktorBuero,HzgAktorFlur,HzgAktorSchlafzimmer,HzgAktorToilette,HzgAktorWohnzimmer,HzgThermostatBad,HzgThermostatBad_remote,HzgThermostatBuero,HzgThermostatFlur,HzgThermostatSchlafzimmer,HzgThermostatToilette,HzgThermostatWohnzimmer
setstate myStatDevice 2024-09-22 20:53:23 monitoredDevicesnotify HzgThermostatBuero_notify_1
setstate myStatDevice 2024-09-23 18:59:55 nextPeriodChangeCalc 2024-09-23 19:59:55
setstate myStatDevice 2024-09-23 18:59:55 state Updated stats for: HzgThermostatWohnzimmer

Und wie ich schon oben schrieb, sind ja wohl die Readings entsprechend vorhanden, also z.B:

statMeasured-tempDay
statMeasured-tempDayAvg
statMeasured-tempDayAvgLast
statMeasured-tempDayLast
statMeasured-tempHour
statMeasured-tempHourAvg
statMeasured-tempHourAvgLast
statMeasured-tempHourLast
statMeasured-tempMonth
statMeasured-tempMonthAvg
statMeasured-tempMonthAvgLast
statMeasured-tempMonthLast
statMeasured-tempYear

vom Thermostat im Büro, dessen Werte auch in der DB landen...

Das gleiche für den Aktor:
statLevelDay
statLevelDayLast
statLevelHour
statLevelHourLast
statLevelMonth
statLevelMonthLast
statLevelYear


Stimmt denn das hier?

define mySQLDB DbLog ./mySQLDB.conf HzgThermostat.*:statMeasured-temp.*AvgLast|HzgAktor.*:statLevel.*.Last
attr mySQLDB .* 1
attr mySQLDB DbLogSelectionMode Exclude/Include
attr mySQLDB DbLogType Current/History
attr mySQLDB asyncMode 1
attr mySQLDB cacheLimit 1500
attr mySQLDB event-on-change-reading CacheUsage
attr mySQLDB insertMode 1
attr mySQLDB room Büro,DbLog,LogFiles,System
attr mySQLDB showNotifyTime 0
attr mySQLDB showproctime 1
attr mySQLDB stateFormat {\
"Cache: ".ReadingsVal($name,"CacheUsage",0)."<br> NextSync:".ReadingsVal($name,"NextSync",0)\
}
attr mySQLDB syncInterval 240
attr mySQLDB verbose 5
attr mySQLDB verbose4Devs HzgAktor.*
attr mySQLDB webCmd listCache:commitCache
#   COLUMNS    field length used for Device: 64, Type: 64, Event: 512, Reading: 64, Value: 128, Unit: 32
#   CONFIGURATION ./mySQLDB.conf
#   DEF        ./mySQLDB.conf HzgThermostat.*:statMeasured-temp.*AvgLast|HzgAktor.*:statLevel.*.Last
#   FD         4
#   FUUID      5ed93474-f33f-a625-5c2b-b4f6628ef5ffc1ff
#   FVERSION   93_DbLog.pm:v5.9.3-s28085/2023-10-22
#   MODE       asynchronous
#   MODEL      MYSQL
#   NAME       mySQLDB
#   NOTIFYDEV  HzgThermostat.*,HzgAktor.*
#   NR         2
#   NTFY_ORDER 50-mySQLDB
#   PID        7502
#   REGEXP     HzgThermostat.*:statMeasured-temp.*AvgLast|HzgAktor.*:statLevel.*.Last
#   SBP_PID    7503
#   SBP_STATE  running
#   STATE      Cache: 0<br> NextSync:2024-09-23 19:12:25 or when CacheUsage 1500 is reached
#   TYPE       DbLog
#   UTF8       0
#   dbconn     mysql:database=fhem;host=192.168.188.6;port=3307
#   dbuser     fhemdbuser
#   eventCount 7
#   HELPER:
#     COLSET     1
#     DEVICECOL  64
#     EVENTCOL   512
#     OLDSTATE   connected
#     PACKAGE    main
#     READINGCOL 64
#     TC         current
#     TH         history
#     TYPECOL    64
#     UNITCOL    32
#     VALUECOL   128
#     VERSION    5.9.3
#   OLDREADINGS:
#   READINGS:
#     2024-09-23 19:00:25   CacheOverflowLastNum 0
#     2024-03-28 17:00:16   CacheOverflowLastState normal
#     2024-09-23 19:08:25   CacheUsage      0
#     2024-09-23 19:08:25   NextSync        2024-09-23 19:12:25 or when CacheUsage 1500 is reached
#     2024-09-23 19:00:26   background_processing_time 0.3884
#     2024-09-23 19:00:26   sql_processing_time 0.3378
#     2024-09-23 19:08:25   state           connected
#
setstate mySQLDB Cache: 0<br> NextSync:2024-09-23 19:12:25 or when CacheUsage 1500 is reached
setstate mySQLDB 2024-09-23 19:00:25 CacheOverflowLastNum 0
setstate mySQLDB 2024-03-28 17:00:16 CacheOverflowLastState normal
setstate mySQLDB 2024-09-23 19:08:25 CacheUsage 0
setstate mySQLDB 2024-09-23 19:08:25 NextSync 2024-09-23 19:12:25 or when CacheUsage 1500 is reached
setstate mySQLDB 2024-09-23 19:00:26 background_processing_time 0.3884
setstate mySQLDB 2024-09-23 19:00:26 sql_processing_time 0.3378
setstate mySQLDB 2024-09-23 19:08:25 state connected


Ich werde jetzt dann mal die Attribute DbLogSelectionMode, DbLogInclude und DbLogExclude löschen.

Ich glaube fast, dass es nicht geht, weil hier
define mySQLDB DbLog ./mySQLDB.conf HzgThermostat.*:statMeasured-temp.*AvgLast|HzgAktor.*:statLevel.*.Last
irgendwas nicht zu den erzeugten Readings passt... Aber mit den RegExp kenne ich mich zu wenig aus, um die geradezubiegen...
Ich glaub ich sehs...

define mySQLDB DbLog ./mySQLDB.conf HzgThermostat.*:statMeasured-temp.*AvgLast|HzgAktor.*:statLevel.*Last
Der Punkt vor dem Last muss raus?!?

Viele Grüße
Wolfgang

Titel: Aw: Datenbank loggt Einträge nicht
Beitrag von: DS_Starter am 23 September 2024, 22:09:30
ZitatDer Punkt vor dem Last muss raus?!?
Ja, bzw. egal (Platzhalter für ein beliebiges Zeichen)

ZitatIch will eigentlich die Daten loggen, welche vom Statistic-Device erzeugt werden:
...
Und wie ich schon oben schrieb, sind ja wohl die Readings entsprechend vorhanden, also z.B:
Das die Readings vorhanden sind ist kein Kriterium. Wichtig ist dass entsprechende Events erzeugt werden die geloggt werden können. Werden sie erzeugt?
In deinem angehängten Log kann ich diese Daten nicht erkennen. Das verbose 5 vom Doif wird nicht gebraucht und hat das Log unnötig angereichert. Hilfreicher wäre es mehr verbose 5 vom DbLog zu sehen um zu erkennen ob Daten von HzgAktor.* empfangen und verarbeitet werden.
Titel: Aw: Datenbank loggt Einträge nicht
Beitrag von: wowogiengen am 23 September 2024, 22:21:22
Jetzt steh ich wieder aufm Schlauch...

Du schreibst
ZitatDas die Readings vorhanden sind ist kein Kriterium. Wichtig ist dass entsprechende Events erzeugt werden die geloggt werden können. Werden sie erzeugt?

Was muss ich denn einstellen, dass das Event erzeugt wird? Bei den Temperaturen funktioniert es doch auch so?


ZitatIn deinem angehängten Log kann ich diese Daten nicht erkennen.
Vielleicht in dem, was ich jetzt anhänge?

ZitatDas verbose 5 vom Doif wird nicht gebraucht und hat das Log unnötig angereichert. Hilfreicher wäre es mehr verbose 5 vom DbLog zu sehen um zu erkennen ob Daten von HzgAktor.* empfangen und verarbeitet werden.
ZitatDa DoIf ist doch gar nie ausgelöst worden, wie soll es da das Log angereichert haben?
Wenn DbLog keine Meldungen vom Level 5 ausgibt, kann ich auch nix dafür...

Gestern abend kamen wohl einige Level 5-Meldungen, aber dann irgendwann mal nicht mehr?
Titel: Aw: Datenbank loggt Einträge nicht
Beitrag von: DS_Starter am 23 September 2024, 22:48:24
Jetzt sieht man es:

2024.09.22 22:59:55 4: mySQLDB - ################################################################
2024.09.22 22:59:55 4: mySQLDB - ###              start of new Logcycle                       ###
2024.09.22 22:59:55 4: mySQLDB - ################################################################
2024.09.22 22:59:55 4: mySQLDB - number of events received: 1 of device: HzgAktorBad
2024.09.22 22:59:55 4: mySQLDB - check Device: HzgAktorBad , Event: statLevelHourLast: 0: 00:58:20 0_Count: 1 100: 00:01:40 100_Count: 1
2024.09.22 22:59:55 4: mySQLDB - ################################################################
2024.09.22 22:59:55 4: mySQLDB - ###              start of new Logcycle                       ###
2024.09.22 22:59:55 4: mySQLDB - ################################################################
2024.09.22 22:59:55 4: mySQLDB - number of events received: 1 of device: HzgAktorBuero
2024.09.22 22:59:55 4: mySQLDB - check Device: HzgAktorBuero , Event: statLevelHourLast: 0: 00:56:20 0_Count: 1 100: 00:03:40 100_Count: 1
2024.09.22 22:59:55 4: mySQLDB - ################################################################
2024.09.22 22:59:55 4: mySQLDB - ###              start of new Logcycle                       ###
2024.09.22 22:59:55 4: mySQLDB - ################################################################
2024.09.22 22:59:55 4: mySQLDB - number of events received: 1 of device: HzgAktorFlur
2024.09.22 22:59:55 4: mySQLDB - check Device: HzgAktorFlur , Event: statLevelHourLast: 0: 00:59:20 0_Count: 1 100: 00:00:40 100_Count: 1
2024.09.22 22:59:55 4: mySQLDB - ################################################################
2024.09.22 22:59:55 4: mySQLDB - ###              start of new Logcycle                       ###
2024.09.22 22:59:55 4: mySQLDB - ################################################################
2024.09.22 22:59:55 4: mySQLDB - number of events received: 1 of device: HzgAktorSchlafzimmer
2024.09.22 22:59:55 4: mySQLDB - check Device: HzgAktorSchlafzimmer , Event: statLevelHourLast: 0: 01:00:00 0_Count: 1
2024.09.22 22:59:55 4: mySQLDB - ################################################################
2024.09.22 22:59:55 4: mySQLDB - ###              start of new Logcycle                       ###
2024.09.22 22:59:55 4: mySQLDB - ################################################################
2024.09.22 22:59:55 4: mySQLDB - number of events received: 1 of device: HzgAktorToilette
2024.09.22 22:59:55 4: mySQLDB - check Device: HzgAktorToilette , Event: statLevelHourLast: 0: 01:00:00 0_Count: 1
2024.09.22 22:59:55 4: mySQLDB - ################################################################
2024.09.22 22:59:55 4: mySQLDB - ###              start of new Logcycle                       ###
2024.09.22 22:59:55 4: mySQLDB - ################################################################
2024.09.22 22:59:55 4: mySQLDB - number of events received: 1 of device: HzgAktorWohnzimmer
2024.09.22 22:59:55 4: mySQLDB - check Device: HzgAktorWohnzimmer , Event: statLevelHourLast: 0: 00:57:20 0_Count: 1 100: 00:02:40 100_Count: 1
2024.09.22 23:00:24 4: mySQLDB - ################################################################
2024.09.22 23:00:24 4: mySQLDB - ###      New database processing cycle - SBP asynchronous    ###
2024.09.22 23:00:24 4: mySQLDB - ################################################################
2024.09.22 23:00:24 4: mySQLDB - MemCache contains 7 entries to process
2024.09.22 23:00:24 4: mySQLDB - DbLogType is: Current/History
2024.09.22 23:00:24 5: mySQLDB - MemCache contains:  8 -> 2024-09-22 22:59:55|HzgThermostatBad|CUL_HM|statMeasured-tempHourAvgLast: 23.0|statMeasured-tempHourAvgLast|23.0|
2024.09.22 23:00:24 5: mySQLDB - MemCache contains:  9 -> 2024-09-22 22:59:55|HzgThermostatBuero|CUL_HM|statMeasured-tempHourAvgLast: 24.8|statMeasured-tempHourAvgLast|24.8|
2024.09.22 23:00:24 5: mySQLDB - MemCache contains:  10 -> 2024-09-22 22:59:55|HzgThermostatFlur|CUL_HM|statMeasured-tempHourAvgLast: 23.9|statMeasured-tempHourAvgLast|23.9|
2024.09.22 23:00:24 5: mySQLDB - MemCache contains:  11 -> 2024-09-22 22:59:55|HzgThermostatHWR|CUL_HM|statMeasured-tempHourAvgLast: 24.8|statMeasured-tempHourAvgLast|24.8|
2024.09.22 23:00:24 5: mySQLDB - MemCache contains:  12 -> 2024-09-22 22:59:55|HzgThermostatSchlafzimmer|CUL_HM|statMeasured-tempHourAvgLast: 24.5|statMeasured-tempHourAvgLast|24.5|
2024.09.22 23:00:24 5: mySQLDB - MemCache contains:  13 -> 2024-09-22 22:59:55|HzgThermostatToilette|CUL_HM|statMeasured-tempHourAvgLast: 23.4|statMeasured-tempHourAvgLast|23.4|
2024.09.22 23:00:24 5: mySQLDB - MemCache contains:  14 -> 2024-09-22 22:59:55|HzgThermostatWohnzimmer|CUL_HM|statMeasured-tempHourAvgLast: 25.2|statMeasured-tempHourAvgLast|25.2|
2024.09.22 23:00:25 4: mySQLDB - Operation: log_asynch

Zum Beispiel wird der Event aber nicht zum Cache hinzugefügt

2024.09.22 22:59:55 4: mySQLDB - number of events received: 1 of device: HzgAktorFlur
2024.09.22 22:59:55 4: mySQLDB - check Device: HzgAktorFlur , Event: statLevelHourLast: 0: 00:59:20 0_Count: 1 100: 00:00:40 100_Count: 1

Ich konnte bisher aber noch nicht ergründen wieso der Regex nicht passt. Er sollte m.M. nach passen.
Hast du das Attr DbLogExclude aus allen Devices gelöscht?
Titel: Aw: Datenbank loggt Einträge nicht
Beitrag von: wowogiengen am 23 September 2024, 22:51:35
Hallo DS_Starter,
ich habe alle Attribute DbLogSelectionMode, DbLogInclude und DbLogExclude in allen Devices gelöscht...
Das sollte also passen.
Außerdem habe ich gerade auch noch FHEM auf Stand gebracht.
Aber heute schau ich nix mehr an.
Trotzdem erstmal Danke für die Hilfe.
Morgen abend gehts weiter
Titel: Aw: Datenbank loggt Einträge nicht
Beitrag von: DS_Starter am 23 September 2024, 22:58:33
Das DEF im DbLog so anpassen:

define mySQLDB DbLog ./mySQLDB.conf HzgThermostat.*:statMeasured-temp.*AvgLast|HzgAktor.*:statLevel.*Last.*

Das sollte passen, hatte kleinen Hänger. ;)
Wenn ich Recht behalte, werden wir dann aber immer noch das Problem mit dem Event Splitting sehen.
Das verbose 5 sollte morgen entsprechende Infos zeigen.
Titel: Aw: Datenbank loggt Einträge nicht
Beitrag von: wowogiengen am 24 September 2024, 18:52:28
Hallo DS_Starter,
ist heute bisschen später geworden, aber wir haben ja noch Zeit...
ob ich jetzt
define mySQLDB DbLog ./mySQLDB.conf HzgThermostat.*:statMeasured-temp.*AvgLast|HzgAktor.*:statLevel.*Last.*
oder
define mySQLDB DbLog ./mySQLDB.conf HzgThermostat.*:statMeasured-temp.*AvgLast|HzgAktor.*:statLevel.*Last

schreibe, sollte für meine Events keine Auswirkung haben, da die statLevel-Readings entweder mit oder ohne "Last" am Ende sind...
und mehr kommt danach nicht mehr.

Wie können wir das Event-Splitting verfolgen?
Ich sehe gerade, dass z.B.
"statLevelHourLast: 0: 00:57:25 0_Count: 2 100: 00:02:35 100_Count: 1" 68 Zeichen lang ist... in der DB sind zwar varchar(128) definiert, aber im DbLog-Device steht:
COLUMNS field length used for Device: 64, Type: 64, Event: 512, Reading: 64, Value: 128, Unit: 32
Oder passt das doch?
Titel: Aw: Datenbank loggt Einträge nicht
Beitrag von: DS_Starter am 24 September 2024, 19:13:24
ZitatWie können wir das Event-Splitting verfolgen?
Wieder verbose 5 Log von DbLog anhängen.

Aber wie schon geschrieben das DEF so schreiben:

define mySQLDB DbLog ./mySQLDB.conf HzgThermostat.*:statMeasured-temp.*AvgLast|HzgAktor.*:statLevel.*Last.*
(beachte ".*" am Ende)
Titel: Aw: Datenbank loggt Einträge nicht
Beitrag von: wowogiengen am 24 September 2024, 20:27:12
Hallo DS_Starter,
wie es aussieht, kann ich jetzt was mit den Werten anfangen. Sie landen in der Datenbank.
Da allerdings nur jede Stunde der Wert protokolliert wird, muss ich für vernünftige Grafiken
noch bis morgen warten.

Aber erstmal danke

Viele Grüße
Wolfgang
Titel: Aw: Datenbank loggt Einträge nicht
Beitrag von: wowogiengen am 24 September 2024, 21:51:35
Eins hab ich noch :-)

Die Readings kann man so nicht in die Grafik umsetzen, da vornedran immer 100 dran steht, und später dann erst 0, oder andersrum:

statLevelHour     --> 0: 00:43:51 0_Count: 3 100: 00:05:14 100_Count: 2
statLevelHourLast --> 0: 01:00:00 0_Count: 1

Wie bekomme ich jetzt die Werte für den SVG-Plot raus? Am liebsten wäre es mir, wenn bei der vollen Stunde dann ein Reading erzeugt würde, das sagt, letzte Stunde 45 Minuten aus, und das andere dann letzte Stunde 15 Minuten an...

Aber das kann man auch später machen, wenn wir mehr Zeit haben :-)
Titel: Aw: Datenbank loggt Einträge nicht
Beitrag von: DS_Starter am 24 September 2024, 22:07:57
ZitatWie bekomme ich jetzt die Werte für den SVG-Plot raus?
Diese Frage hat aber nichts mehr mit dem Logging zu tun und wäre ein neues Thema im SVG-Thread.  ;)

ZitatAm liebsten wäre es mir, wenn bei der vollen Stunde dann ein Reading erzeugt würde, das sagt, letzte Stunde 45 Minuten aus, und das andere dann letzte Stunde 15 Minuten an...
Auch das wäre etwas für den Thread des Statistik-Moduls.

Ansonsten bietet DbLog das Attr valueFn an, mit dem man diverse Manipulationen machen kann.
Geht es bei der speziellen Anforderung nur um das Reading "statLevelHour"?
Titel: Aw: Datenbank loggt Einträge nicht
Beitrag von: wowogiengen am 25 September 2024, 19:00:48
Hallo DS_Starter,
ich habe die Einträge aus der DB für den Aktor im Bad mal als JSON-File exportiert und angehängt.
Das Reading ist immer "statLevelHourLast" (einmal am Tag dann auch "statLevelDayLast", aber sonst wohl identisch...
Die Values sind dann:
- (wenn sowohl 0 als auch 100 % an Level in 1h gemessen wurden).Der Aktor war also 54 Minuten aus, und 5m20 an.
  "0: 00:54:40 0_Count: 2 100: 00:05:20 100_Count: 1"
- Wenn nur der Level 0% gemessen wurde, war der Aktor 1h lang aus
  "0: 01:00:00 0_Count: 1"
- Wenn nur der Level 100% gemessen wurde, war der Aktor 1h lang an:
  "100: 01:00:00 100_Count: 1"

Wie kann ich nun diese Values nehmen, und daraus dann ein SVG-Plot erstellen. Irgendeine Logik müsste ja noch rein, um die Values auseinanderzuklamüsern. Ob man das bereits beim Eintragen in die DB macht, oder erst wenn man die Werte wieder braucht, ist mir relativ egal.

Am Beispiel des ersten Values könnte man ja für den Zeitpunkt des Events dann je ein Reading erstellen,
und zwar
"statLevelHourLast_Off" für "0: 00:54:40 0_Count: 2", mit dem Value "00:54:40"
und
"statLevelHourLast_On" für "0: 00:05:20 0_Count: 1", mit dem Value "00:05:20"

wenn "0: xxx" oder "100:yyy" im Value vorkommt, wird auch das neue Reading nicht erzeugt...

Aber ich kann das ganze auch gerne in die SVG- oder DbLog-Foren rübernehmen...
Titel: Aw: Datenbank loggt Einträge nicht
Beitrag von: DS_Starter am 25 September 2024, 20:45:38
ZitatAm Beispiel des ersten Values könnte man ja für den Zeitpunkt des Events dann je ein Reading erstellen,
und zwar
"statLevelHourLast_Off" für "0: 00:54:40 0_Count: 2", mit dem Value "00:54:40"
und
"statLevelHourLast_On" für "0: 00:05:20 0_Count: 1", mit dem Value "00:05:20"
Du hast dir die Lösung doch schon selbst bereitgelegt. Stichwort ist userReadings. Damit kannst du dir ausgehend vom Reading statLevelHourLast mit ein wenig Code die neuen Readings statLevelHourLast_Off und statLevelHourLast_On erzeugen und diese dann loggen.
Titel: Aw: Datenbank loggt Einträge nicht
Beitrag von: wowogiengen am 25 September 2024, 20:51:40
Ich hab genau 1 userReading in meiner FHEM-Installation (in den PWMR-Devices), das hab ich wohl aus dem Wiki oder Forum geholt...
aber ich versteh die Sprache nicht... deswegen meine Frage:

openval {
  my @devices = split(' ', InternalVal($name,'DEF',1));
    splice(@devices,0,1);
  my $openvalue = 0;
 
  foreach my $device (@devices){
    $openvalue += ReadingsVal($device, 'PID_PWMPulse', 0);
  }
 
  return sprintf("%.1f",($openvalue/@devices));
},
energy {
  my @devices = split(' ', InternalVal($name,'DEF',1));
    splice(@devices,0,1);
  my $energyusedp= 0;
 
  foreach my $device (@devices){
    $energyusedp += ReadingsVal($device, 'energyusedp', 0);
  }
 
  return sprintf("%.1f",($energyusedp /@devices));
}

Welche Sprache wäre dass denn, dann kann ich mich mal genauer einlesen - führt ja eh kein Weg dran vorbei.
Titel: Aw: Datenbank loggt Einträge nicht
Beitrag von: DS_Starter am 25 September 2024, 20:59:05
Wir sind mit Perl unterwegs. Es gibt etliche FHEM-eigene Funktionen wie z.B. ReadingsVal. Sie sind im Wiki (https://wiki.fhem.de/wiki/DevelopmentModuleAPI) beschrieben.
Und userReadings ist in der ComRef (https://fhem.de/commandref_DE.html#userReadings) beschrieben.

Es gibt bestimmt viele User die hier unterstützen können. Ich würde dir aber empfehlen einen neuen Thread mit dem Thema der Erstellung von userReadings und deiner speziellen Anforderung zu erstellen.

LG,
Heiko
Titel: Aw: Datenbank loggt Einträge nicht
Beitrag von: wowogiengen am 26 September 2024, 20:31:10
Hallo,
letzte Frage hoffentlich hier :-)

Ich hab jetzt mal mit Perl bisschen was gemacht (test.perl),

Das scheint mir ganz passend zu sein...

Die 3 Eingabevarianten:
"0: 00:22:14 0_Count: 3 100: 00:04:05 100_Count: 2"
"0: 00::00 0_Count: 3"
"100: 00:04:05 100_Count: 2"
verwende ich, um die Funktion zu testen.

my @eingabe = (
"0: 00:22:14 0_Count: 3 100: 00:04:05 100_Count: 2",
"100: 00:04:05 100_Count: 2",
"0: 00:22:14 0_Count: 3"
);
foreach my $item (@eingabe){
print ("Test für ".$item."\n");
my $result =  SplitReading($item);
print @$result[0]->[0]."=".@$result[0]->[1]."\n";
print @$result[1]->[0]."=".@$result[1]->[1]."\n";
}


Aus @result[0] lese ich die Zeitdauer in Sekunden für den Zustand Aus
Aus @result[1] lese ich die Zeitdauer in Sekunden für den Zustand Ein

Aber wie bekomme ich jetzt FHEM und die Perl-Datei zusammen?
Ich weiß, dass man die Perl-Funktion in irgendeine myutils.pl oder so einfügen kann...

Titel: Aw: Datenbank loggt Einträge nicht
Beitrag von: DS_Starter am 26 September 2024, 20:45:06
Es gibt im Verz. ../opt/fhem/FHEM die Datei myUtilsTemplate.pm die man als 99_myUtils.pm speichert.

##############################################
# $Id: myUtilsTemplate.pm 21509 2020-03-25 11:20:51Z rudolfkoenig $
#
# Save this file as 99_myUtils.pm, and create your own functions in the new
# file. They are then available in every Perl expression.

package main;

use strict;
use warnings;

sub
myUtils_Initialize($$)
{
  my ($hash) = @_;
}

# Enter you functions below _this_ line.


1;

In dieser Datei kannst du eigene Funktionen einbauen.
In userReadings kannst du ebenfalls Perl Code direkt einfügen wenn er nicht so umfangreich ist. Was umfangreich ist liegt in deinem Ermessen.
Titel: Aw: Datenbank loggt Einträge nicht
Beitrag von: wowogiengen am 26 September 2024, 20:57:53
Hallo,
das Userreading sieht so aus:

statLevelHourLast_0
{
my $item = ReadingsVal("HzgAktorBuero","statLevelHourLast",0);
return $item;
my $result_0 =  SplitReading($item,0);
my $result_100 =  SplitReading($item,100);
return $result_0[0]->[0];
}
statLevelHourLast_100
{
my $item = ReadingsVal("HzgAktorBuero","statLevelHourLast",0);
my @result_0 =  SplitReading($item,0);
my @result_100 =  SplitReading($item,100);
return $result_100[0]->[0];
}

aber das gibt einen Fehler:

statLevelHourLast_0
Error evaluating HzgAktorBuero userReading statLevelHourLast_0: Global symbol "@result_0" requires explicit package name (did you forget to declare "my @result_0"?) at (eval 1895) line 6.
Global symbol "@result_100" requires explicit package name (did you forget to declare "my @result_100"?) at (eval 1895) line 13.

Wie muss ich die Variablen benennen?
Titel: Aw: Datenbank loggt Einträge nicht
Beitrag von: DS_Starter am 26 September 2024, 21:03:44
my $result_0 -> my @result_0

Aber ...

statLevelHourLast_0
{
   my $item = ReadingsVal("HzgAktorBuero","statLevelHourLast",0);
   return $item;
   my $result_0 =  SplitReading($item,0);
   my $result_100 =  SplitReading($item,100);
   return $result_0[0]->}

Das erste return geht schon zum Ausgang.
Titel: Aw: Datenbank loggt Einträge nicht
Beitrag von: wowogiengen am 26 September 2024, 21:25:02
Ich hab jetzt rumprobiert, bis es geht:

statLevelHourLast_0
{
my $item = ReadingsVal("HzgAktorBuero","statLevelHour",0);
my $result = SplitReading($item,0);
return $result->[0]->[1];
},
statLevelHourLast_100
{
my $item = ReadingsVal("HzgAktorBuero","statLevelHour",0);
my $result = SplitReading($item,100);
return $result->[0]->[1];
}


blackbox.ai (http://blackbox.ai) hat mir bei perl auch geholfen :-)
Titel: Aw: Datenbank loggt Einträge nicht
Beitrag von: DS_Starter am 26 September 2024, 21:29:02
Auch verstanden was passiert? Das wäre eigentlich noch viel wichtiger.  ;)
Titel: Aw: Datenbank loggt Einträge nicht
Beitrag von: wowogiengen am 26 September 2024, 21:51:09
Hallo DS_Starter,

ich glaub, das sind noch Anfängerprobleme mit perl...
Wann man @ und wann man $ verwendet und wann dann /@...
und die ganzen RegExp sind auch so ein Thema...
Und dann kommt noch FHEM als solches dazu.
Ich hab das userreading jetzt für dieses eine device explizit geschrieben.
Aber man kann das ja sicher universell machen, für jedes device, wo ich das neue Reading brauche...
Das werd ich dann am WE ausprobieren.
Titel: Aw: Datenbank loggt Einträge nicht
Beitrag von: DS_Starter am 26 September 2024, 21:54:52
Du machst das schon gut. Wollte dich nur ermuntern dran zu bleiben und nicht nur die AI zu befragen um sich darauf zu verlassen und keine eigenen Gedanken zu machen.  :)
Es gibt hier auch eine Perl-Ecke im Forum.
Titel: Aw: Datenbank loggt Einträge nicht
Beitrag von: wowogiengen am 26 September 2024, 22:42:47
Hallo,
das userreading läuft jetzt schon ne ganze Weile mit. Aber wie es aussieht, schreibt es sehr viele Events in die DB, und die Auslastung von FHEM ist höher als normal. Fast schon nicht mehr bedienbar...

(about:invalid)

Sieht zwar nicht nach viel aus, aber irgendwie stimmt da was nicht...
hab jetzt das userreading mit # im Wert mal wieder abgehängt...
Titel: Aw: Datenbank loggt Einträge nicht
Beitrag von: DS_Starter am 26 September 2024, 23:04:44
Du musst das Userreading mit einem spezifischen Trigger versehen damit es nicht bei jeder Änderung der Readings in deinem Device erstellt wird. Das Attr "event-on-change-reading" dient auch zur Vermeidung von zuviel Events.
Titel: Aw: Datenbank loggt Einträge nicht
Beitrag von: Beta-User am 26 September 2024, 23:06:02
Anmerkungen:
- userReadings nur dann ohne Triggerangabe, wenn reine bulk-updates gemacht werden. Hier also ergänzen. (siehe voriges Posting)

- CUL_HM ist "sehr event-lastig", wenn man nicht bestimmte Events unterdrückt. Bitte selbst suchen, bin nur mobil am tippen...
Titel: Aw: Datenbank loggt Einträge nicht
Beitrag von: wowogiengen am 28 September 2024, 11:10:07
Hallo,
aus der Hilfe und dem Wiki werde ich irgendwie nicht so richtig schlau...
wie muss der Trigger aufgebaut sein?

das Attribut userReadings ist ja prinzipiell so
attr HzgAktorBuero userReadings statLevelHourLast_0 {}

Damit wird dann bei jeder Änderung an einem Reading des HzgAktorBuero das Reading statLevelHourLast_0 neu berechnet und aktualisiert...?

Laut Hilfe zum Attribut:
<reading>[:<trigger>] [<modifier>] { <perl code> }
und das Beispiel

attr myMultiMeter userReadings
energy1:counters.A.*
{
ReadingsVal("myMultiMeter","counters.A",0)/1250.0
},
energy2:counters.B.*
{
ReadingsVal("myMultiMeter","counters.B",0)/1250.0
}

Wenn ich also mein Reading nur bei Änderung des Readings statLevelHourLast vom HzgAktorBuero auslösen möchte,
dann also so:
attr HzgAktorBuero userReadings statLevelHourLast_0:HzgAktorBuero.statLevelHourLast {}

Oder ?
Titel: Aw: Datenbank loggt Einträge nicht
Beitrag von: DS_Starter am 28 September 2024, 11:20:44
So:

attr HzgAktorBuero userReadings statLevelHourLast_0:statLevelHourLast.* {}

LG