[Gelöst] DBLog Event mit Leerzeichen filtern

Begonnen von ocin4, 02 März 2023, 20:01:59

Vorheriges Thema - Nächstes Thema

ocin4

Hallo,

ich besitze einen Shelly TRV (Heizkörper-Thermostat), den ich über MQTT angebunden hab:
Internals:
   CFGFN     
   CID        shellytrv-kueche
   DEF        shellytrv-kueche
   FUUID      63e3756f-f33f-f0f2-9776-3903acb3b55023f7
   IODev      myMQTTBroker
   LASTInputDev myMQTTBroker
   MSGCNT     103155
   NAME       MQTT2_shellytrv_kueche
   NR         3579
   STATE      Ventil: 0.0 %<br>Bat: 34 %   Profil: 3<br>Gew. Temp.: 20.0 °C
   TYPE       MQTT2_DEVICE
   eventCount 99532
   myMQTTBroker_MSGCNT 103155
   myMQTTBroker_TIME 2023-03-02 19:49:38
   Helper:
     DBLOG:
       desired-temp:
         fhemDbLog:
           TIME       1677782731.77101
           VALUE      20.0
       temperature:
         fhemDbLog:
           TIME       1677702897.96162
           VALUE      19.8
       temperature_offset:
         fhemDbLog:
           TIME       1677699538.09996
           VALUE      0.0
       thermostats_1_pos:
         fhemDbLog:
           TIME       1677779667.89013
           VALUE      0.0
   JSONMAP:
     bat        0
     bat_value  batteryPercent
     bat_voltage batteryVoltage
     target_t_value desired-temp
     thermostats_1_schedule mode
     thermostats_1_target_t_accelerated_heating accelerated_heating
     thermostats_1_tmp_value temperature
     thermostats_1_valve_min_percent valve_min_percent
   OLDREADINGS:
   READINGS:
     2023-02-08 11:11:59   IODev           myMQTTBroker
     2023-02-08 21:35:41   accelerated_heating off
     2023-03-02 19:49:38   actions_stats_skipped 0
     2023-02-08 22:00:17   associatedWith  MQTT2_myMQTTBridge
     2023-02-08 11:12:30   attrTemplateVersion 20221019
     2023-03-02 19:49:38   batteryPercent  34
     2023-03-02 19:49:38   batteryVoltage  3.421
     2023-03-02 19:45:35   build_info_build_id 20220811-152343/v2.1.8@5afc928c
     2023-03-02 19:45:35   build_info_build_timestamp 2022-08-11T15:23:43Z
     2023-03-02 19:45:35   build_info_build_version 2022081115
     2023-03-02 19:49:38   calibrated      true
     2023-03-02 19:49:38   cfg_changed_cnt 0
     2023-03-02 19:49:38   charger         false
     2023-03-02 19:45:35   child_lock      false
     2023-03-02 19:45:35   clog_prevention true
     2023-03-02 19:49:38   cloud_connected false
     2023-03-02 19:49:38   cloud_enabled   false
     2023-03-02 19:45:35   coiot_enabled   false
     2023-03-02 19:45:35   coiot_peer     
     2023-03-02 19:45:35   coiot_update_period 3600
     2023-03-02 19:49:38   dbg_flags       0
     2023-03-02 19:49:36   desired-temp    20.0
     2023-03-02 19:45:35   device_hostname shellytrv-8CF68108C05B
     2023-03-02 19:45:35   device_mac      8CF68108C05B
     2023-03-02 19:45:35   device_num_outputs 0
     2023-03-02 19:45:35   device_type     SHTRV-01
     2023-03-02 19:45:35   discoverable    false
     2023-03-02 19:45:35   display_brightness 4
     2023-03-02 19:45:35   display_flipped true
     2023-03-02 19:49:38   fs_free         59136
     2023-03-02 19:49:38   fs_size         65536
     2023-03-02 19:45:35   fw              20220811-152343/v2.1.8@5afc928c
     2023-03-02 19:49:38   fw_info_device  shellytrv-8CF68108C05B
     2023-03-02 19:49:38   fw_info_fw      20220811-152343/v2.1.8@5afc928c
     2023-02-28 22:30:33   fw_ver          20220811-152343/v2.1.8@5afc928c
     2023-03-02 19:49:38   has_update      false
     2023-03-02 19:45:35   hwinfo_batch_id 0
     2023-03-02 19:45:35   hwinfo_hw_revision dev-prototype
     2023-02-28 22:30:33   id              shellytrv-kueche
     2023-02-28 22:30:33   ip              192.168.178.50
     2023-03-02 00:54:28   json2nameValueErrorText json2nameValue: no closing } found
     2023-03-02 00:54:28   json2nameValueInput {"wifi_sta":{"connected":true,"ssid":"Nicos Heimnetz 2","ip":"192.168.178.50","rssi":-68},"cloud":{"enabled":false,"connected":false},"mqtt"
     2023-03-02 19:45:35   lat             51.076771
     2023-03-02 19:45:35   lng             12.986240
     2023-03-02 19:45:35   login_default_username admin
     2023-03-02 19:45:35   login_enabled   false
     2023-03-02 19:45:35   login_unprotected false
     2023-03-02 19:45:35   login_username  admin
     2023-03-02 19:49:38   mac             8CF68108C05B
     2023-03-02 19:49:38   mode            true
     2023-02-28 22:30:33   model           SHTRV-01
     2023-03-02 19:45:35   mqtt_clean_session true
     2023-03-02 19:49:38   mqtt_connected  true
     2023-03-02 19:45:35   mqtt_enable     true
     2023-03-02 19:45:35   mqtt_id         shellytrv-kueche
     2023-03-02 19:45:35   mqtt_max_qos    0
     2023-03-02 19:45:35   mqtt_retain     false
     2023-03-02 19:45:35   mqtt_server     192.168.178.5:1883
     2023-03-02 19:45:35   mqtt_update_period 60
     2023-03-02 19:45:35   name            Heizkörper Küche
     2023-02-28 22:30:33   new_fw          false
     2023-02-28 22:30:33   online          true
     2023-03-02 19:45:35   pin_code       
     2023-03-02 19:49:38   ps_mode         0
     2023-03-02 19:49:38   ram_free        30784
     2023-03-02 19:49:38   ram_total       97280
     2023-02-12 12:42:20   schedule_profile 3
     2023-03-02 19:49:38   serial          0
     2023-03-02 19:45:35   sleep_mode_period 60
     2023-03-02 19:45:35   sleep_mode_unit m
     2023-03-02 19:45:35   sntp_enabled    true
     2023-03-02 19:45:35   sntp_server     8.8.8.8
     2023-03-02 19:42:22   target_t        18
     2023-03-02 19:49:36   target_t_enabled true
     2023-03-02 19:49:36   target_t_units  C
     2023-03-02 19:49:38   temperature     21.7
     2023-03-02 19:49:36   temperature_offset 0.0
     2023-03-02 19:49:38   thermostats_1_boost_minutes 0
     2023-03-02 19:45:35   thermostats_1_calibration_correction true
     2023-03-02 19:45:35   thermostats_1_ext_t_enabled true
     2023-03-02 19:45:35   thermostats_1_ext_t_floor_heating false
     2023-03-02 19:45:35   thermostats_1_extra_pressure false
     2023-03-02 19:45:35   thermostats_1_force_close false
     2023-03-02 19:45:35   thermostats_1_open_window_report false
     2023-03-02 19:49:38   thermostats_1_pos 0.0
     2023-03-02 19:45:35   thermostats_1_schedule true
     2023-03-02 19:49:38   thermostats_1_schedule_profile 2
     2023-03-02 19:45:35   thermostats_1_schedule_profile_names_1 Frühschicht
     2023-03-02 19:45:35   thermostats_1_schedule_profile_names_2 Mittelschicht
     2023-03-02 19:45:35   thermostats_1_schedule_profile_names_3 Spätschicht
     2023-03-02 19:45:35   thermostats_1_schedule_profile_names_4 Urlaub zu Hause
     2023-03-02 19:45:35   thermostats_1_schedule_profile_names_5 Extras
     2023-03-02 19:45:35   thermostats_1_schedule_rules_1 0600-01234-21
     2023-03-02 19:45:35   thermostats_1_schedule_rules_2 0730-01234-18
     2023-03-02 19:45:35   thermostats_1_schedule_rules_3 1715-01234-21
     2023-03-02 19:45:35   thermostats_1_schedule_rules_4 2200-01234-18
     2023-03-02 19:45:35   thermostats_1_schedule_rules_5 0600-56-21
     2023-03-02 19:45:35   thermostats_1_schedule_rules_6 2200-56-18
     2023-03-02 19:45:35   thermostats_1_schedule_rules_7 0530-01234-19.5
     2023-03-02 19:45:35   thermostats_1_t_auto_enabled false
     2023-03-02 19:45:35   thermostats_1_target_t_accelerated_heating false
     2023-03-02 19:49:38   thermostats_1_target_t_enabled true
     2023-03-02 19:49:38   thermostats_1_target_t_units C
     2023-03-02 19:49:38   thermostats_1_target_t_value 20.0
     2023-03-02 19:49:38   thermostats_1_target_t_value_op 8.0
     2023-03-02 19:45:35   thermostats_1_temperature_offset 0.0
     2023-03-02 19:49:38   thermostats_1_tmp_is_valid true
     2023-03-02 19:49:38   thermostats_1_tmp_units C
     2023-03-02 19:45:35   thermostats_1_valve_min_percent 0.00
     2023-03-02 19:49:38   thermostats_1_window_open false
     2023-03-02 19:49:38   time            19:44
     2023-03-02 19:45:35   timezone        Europe/Berlin
     2023-03-02 19:49:36   tmp_is_valid    true
     2023-03-02 19:49:36   tmp_units       C
     2023-03-02 19:49:36   tmp_value       21.7
     2023-03-02 19:45:35   tz_dst          false
     2023-03-02 19:45:35   tz_dst_auto     true
     2023-03-02 19:45:35   tz_utc_offset   3600
     2023-03-02 19:45:35   tzautodetect    false
     2023-03-02 19:49:38   unixtime        1677782650
     2023-03-02 19:49:38   update_has_update false
     2023-03-02 19:49:38   update_new_version 20220811-152343/v2.1.8@5afc928c
     2023-03-02 19:49:38   update_old_version 20220811-152343/v2.1.8@5afc928c
     2023-03-02 19:49:38   update_status   unknown
     2023-03-02 19:49:38   uptime          237278
     2023-02-08 21:35:41   valve_min_percent 0.00
     2023-03-02 19:45:35   wifi_ap_enabled false
     2023-03-02 19:45:35   wifi_ap_ssid    shellytrv-8CF68108C05B
     2023-03-02 19:49:38   wifi_sta_connected true
     2023-03-02 19:45:35   wifi_sta_enabled true
     2023-03-02 19:45:35   wifi_sta_gw     192.168.178.1
     2023-03-02 19:49:38   wifi_sta_ip     192.168.178.50
     2023-03-02 19:45:35   wifi_sta_ipv4_method static
     2023-03-02 19:45:35   wifi_sta_mask   255.255.255.0
     2023-03-02 19:49:38   wifi_sta_rssi   -68
     2023-03-02 19:49:38   wifi_sta_ssid   Nicos Heimnetz 2
Attributes:
   DbLogExclude desired-temp: set
   alias      Küche
   devicetopic shellies/shellytrv-kueche
   event-min-interval desired-temp:1800
   event-on-change-reading desired-temp,thermostats_1_pos
   group      Heizkörper
   jsonMap    bat:0 bat_value:batteryPercent bat_voltage:batteryVoltage target_t_value:desired-temp thermostats_1_tmp_value:temperature thermostats_1_valve_min_percent:valve_min_percent thermostats_1_target_t_accelerated_heating:accelerated_heating thermostats_1_schedule:mode
   model      shelly_TRV
   readingList $DEVICETOPIC/status:.* { json2nameValue($EVENT,'',$JSONMAP) }
  $DEVICETOPIC/info:.* { json2nameValue($EVENT,'',$JSONMAP) }
  $DEVICETOPIC/online:.* online
  $DEVICETOPIC/announce:.* { json2nameValue($EVENT,'',$JSONMAP) }
shellies/shellytrv-kueche/thermostat/0/command/target_t:.* target_t
shellies/shellytrv-kueche/thermostat/0/command/schedule_profile:.* schedule_profile
shellies/shellytrv-kueche/settings:.* { json2nameValue($EVENT) }
   room       MQTT2_DEVICE,Temperaturen
   setList    accelerated_heating:on,off {my $val=$EVTPART1 eq 'on'?1:0; qq($DEVICETOPIC/thermostat/0/command/accelerated_heating $val)}
  mode:auto,manual {my $val=$EVTPART1 eq 'auto'?1:0; qq($DEVICETOPIC/thermostat/0/command/schedule $val)}
  schedule_profile:slider,1,1,5,1 $DEVICETOPIC/thermostat/0/command/schedule_profile $EVTPART1
  desired-temp:slider,17.0,0.5,25.0,1 $DEVICETOPIC/thermostat/0/command/target_t $EVTPART1
  valve:slider,0,1,100,1 $DEVICETOPIC/thermostat/0/command/valve_pos $EVTPART1
  valve_min_percent:slider,0,1,100,1 $DEVICETOPIC/thermostat/0/command/valve_min_percent $EVTPART1
  boost:on,off {my $val=$EVTPART1 eq 'on'?5:0; qq($DEVICETOPIC/thermostat/0/command/boost_minutes $val)}
  boost_minutes $DEVICETOPIC/thermostat/0/command/boost_minutes $EVTPART1
  set_boost_minutes $DEVICETOPIC/thermostat/0/command/set_boost_minutes $EVTPART1
   setStateList on off
   stateFormat Ventil: thermostats_1_pos %<br>Bat: batteryPercent %   Profil: schedule_profile<br>Gew. Temp.: desired-temp °C


Wie man sieht, versuche ich per DBLogExclude "desired-temp set" zu filtern, denn immer, wenn ich die Temperatur über fhem setze (ob per Slider oder in einem DOIF) wird in der DB als EVENT "desired-temp: set 19.5" geloggt, was sich in ein READING "desired-temp" und einen VALUE "set 19.5" aufsplittet. Dieser Value ist insofern ungünstig, dass er meine SVG-Grafiken zerstört, da er keine reine Zahl ist und als 0 interpretiert wird. Ich brauche ihn auch nicht in der DB, weil gleichzeitig als EVENT "desired-temp: 19.5" geloggt wird, was wunderbar funktioniert. Nun bin ich regex-technisch mindestens minderbemittelt und bräuchte einen Rat, wie ich "desired-temp set" vom DBLog ausschließen kann.

TIA, Nico

betateilchen

Problemursache dürfte der Doppelpunkt und das Leerzeichen sein.

Probier mal

desired-temp..set

oder

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

ocin4

Das hat leider beides nicht funktioniert, das Event wird immerncoh in die DB geschrieben.

betateilchen

Kopiere mal bitte einen vollständigen event aus dem Event Monitor und poste das hier.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

ocin4

#4
2023-03-02 20:24:23 MQTT2_DEVICE MQTT2_shellytrv_kueche desired-temp: set 18.0
2023-03-02 20:24:25 MQTT2_DEVICE MQTT2_shellytrv_kueche desired-temp: 18.0


Edit:

|id     |TIMESTAMP              |DEVICE                |TYPE        |EVENT                 |READING     |VALUE   |UNIT|
|---------|-----------------------|----------------------|------------|----------------------|------------|--------|----|
|830.959|2023-03-02 20:24:25.000|MQTT2_shellytrv_kueche|MQTT2_DEVICE|desired-temp: 18.0    |desired-temp|18.0    |    |
|830.958|2023-03-02 20:24:23.000|MQTT2_shellytrv_kueche|MQTT2_DEVICE|desired-temp: set 18.0|desired-temp|set 18.0|    |

betateilchen

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

ocin4

Nope, leider auch nicht:

|id     |TIMESTAMP              |DEVICE                |TYPE        |EVENT                 |READING     |VALUE   |UNIT|
|-------|-----------------------|----------------------|------------|----------------------|------------|--------|----|
|830.988|2023-03-02 20:30:10.000|MQTT2_shellytrv_kueche|MQTT2_DEVICE|desired-temp: 17.0    |desired-temp|17.0    |    |
|830.987|2023-03-02 20:30:08.000|MQTT2_shellytrv_kueche|MQTT2_DEVICE|desired-temp: set 17.0|desired-temp|set 17.0|    |

betateilchen

Sicher bin ich mir nicht, dass das mit DbLogExclude überhaupt so funktioniert oder ob sich die dort verwendete regex nicht nur auf den readingName und nicht auch auf den Wert bezieht. Dein letzter Ausschnitt zeigt jedenfalls in diese Richtung.

Dann bliebe Dir aber noch der Weg über DbLogValueFn, um das Logging nicht erwünschter Werte auszuschließen.


attr MQTT2_shellytrv_kueche DbLogValueFn
{
  if ($READING == "desired-temp" && $VALUE =~ /^set/) {$IGNORE=1;}
}
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

ocin4

Ja! Das hat geholfen, recht herzlichen Dank!

betateilchen

Prima.

Machst Du dann bitte noch ein "[gelöst]" in den Titel Deines ersten Beitrags hier im Thread?
Danke.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!