Autor Thema: Doppelte Log-Einträge durch Regex und State  (Gelesen 122 mal)

Offline Weisnich

  • New Member
  • *
  • Beiträge: 15
Doppelte Log-Einträge durch Regex und State
« am: 18 März 2017, 08:15:54 »
Hallo Leute,

ich bin jetzt um einiges weiter, alle Gruppenadressen sind definiert.

Nun möchte ich die Temperaturen loggen. Ich habe von MDT diese schnuckeligen Glastaster, die ich wie folgt auslese

#KNX 3/1/0 T_EG_Flur_Eingang
#----------------------------------------------------------------------------------------------------
define T_EG_Flur_Eingang KNX 3/1/0:dpt1.001:t1 ... 3/1/22:dpt9.001:temperatur
attr T_EG_Flur_Eingang IODev KNX
attr T_EG_Flur_Eingang room Taster
attr T_EG_Flur_Eingang sortby 101
attr T_EG_Flur_Eingang stateRegex /getg1:/t1:/ ... /getg19:/temperatur:/
attr T_EG_Flur_Eingang webCmd :

- t1..8 sind die Taster
- led1..8 die Status-LEDs
- led0 das Orientierungslicht
- tag ein Schalter zum Ändern der LED-Helligkeit Tag/Nacht
- temperatur 2-byte Wert Temperatur in °C

So weit so gut. Nun möchte ich die Temperaturen loggen und definiere daher ein Log-Device
define T_EG_Flur_Eingang_Log FileLog ./log/T_EG_Flur_Eingang-%Y-%m.log T_EG_Flur_Eingang:temperatur-get:.*
attr T_EG_Flur_Eingang_Log room Logs
attr T_EG_Flur_Eingang_Log sortby 101

Das legt auch die Temperaturen ab, nur halt doppelt.
Frag ich die g19 ab, also die Gruppenadresse für die Temperatur, kommt es zu folgenden Readings:

2017-03-18 07:10:12 KNX T_EG_Flur_Eingang temperatur-get: 19.60 °C
2017-03-18 07:10:12 KNX T_EG_Flur_Eingang last-sender: 1/1/130
2017-03-18 07:10:12 KNX T_EG_Flur_Eingang temperatur-get:19.60 °C

Also Regex -> Last Sender -> State.

Mein log kann aber nicht zwischen dem Regex und dem State unterscheiden, da beide "temperatur-get:" schreiben und daher auch von "temperatur-get:.*" erfasst werden.

Wie löst man das und loggt nur das Regex temperatur?


Gruß,
Michael
« Letzte Änderung: 18 März 2017, 08:20:34 von Weisnich »

Offline Weisnich

  • New Member
  • *
  • Beiträge: 15
Antw:Doppelte Log-Einträge durch Regex und State
« Antwort #1 am: 18 März 2017, 20:39:14 »
Hallo Leute,

ich glaube, ich habe eine Lösung gefunden.

Neben den Schaltern, in denen die Temperatur gemessen wird habe ich einen Heizungsaktor, aus dem man den Sollwert und den aktuellen Stellwert ablesen kann.

Also habe ich 3 neue Geräte (readingProxies) definiert, aus denen ich die Werte aus den KNX-Devices ablese:
define H_EG_Flur_Temperatur readingsProxy T_EG_Flur_Eingang:temperatur-get
attr H_EG_Flur_Temperatur group Heizung
attr H_EG_Flur_Temperatur room Heizung
attr H_EG_Flur_Temperatur sortby 101
define H_EG_Flur_Sollwert readingsProxy H_EG_Flur:sollwert-get
attr H_EG_Flur_Sollwert group Heizung
attr H_EG_Flur_Sollwert room Heizung
attr H_EG_Flur_Sollwert sortby 102
define H_EG_Flur_Stellwert readingsProxy H_EG_Flur:stellwert-get
attr H_EG_Flur_Stellwert group Heizung
attr H_EG_Flur_Stellwert room Heizung
attr H_EG_Flur_Stellwert sortby 103

Und logge diese zusammen in einem Log:
define H_EG_Flur_Log FileLog ./log/H_EG_Flur-%Y-%m.log H_EG_Flur_Temperatur:.*|H_EG_Flur_Sollwert:.*|H_EG_Flur_Stellwert:.*
attr H_EG_Flur_Log room Logs

Tadaa:
Zitat
2017-03-18_19:01:27 H_EG_Flur_Sollwert 20.00 °C
2017-03-18_19:01:27 H_EG_Flur_Stellwert 12 %
2017-03-18_19:01:27 H_EG_Flur_Temperatur 19.80 °C
2017-03-18_19:03:46 H_EG_Flur_Temperatur 20.00 °C
2017-03-18_19:04:12 H_EG_Flur_Stellwert 6 %
2017-03-18_19:08:33 H_EG_Flur_Sollwert 20.00 °C
2017-03-18_19:08:33 H_EG_Flur_Stellwert 6 %
2017-03-18_19:08:33 H_EG_Flur_Temperatur 20.00 °C

Man könnte sich fragen, warum ich den Sollwert mitlogge. Dafür gibt es aber einen einfachen Grund. Ist in den Räumen gleichzeitig das Fenster und die Tür auf, senkt sich der Sollwert auf 7°C.

Für Verbesserungen bin ich trotzdem dankbar.


Gruß,
Weisnich