HMCCU generiert plötzlich zu viele und falsche Events für virtuelle CCU-Devices

Begonnen von thomas.z, 02 März 2020, 14:19:05

Vorheriges Thema - Nächstes Thema

thomas.z

Moin,

seit kurzem habe ich ein Problem damit, dass HMCCU zu viele events generiert. Ich dachte zunächst, dass ein Firmwareupdate der Wandthermostaten das verursacht haben könnte s. Link https://forum.fhem.de/index.php/topic108862.0.html, aber das scheint nicht die Ursache zu sein.

Dies Group-Device z. B.

CHN INT0000001:0 Gaestezimmer-Heizung:0
  DPT {i} VirtualDevices.INT0000001:0.ACTUAL_TEMPERATURE_STATUS = 0 [RE]
  DPT {b} VirtualDevices.INT0000001:0.CONFIG_PENDING = false [RE]
  DPT {b} VirtualDevices.INT0000001:0.DUTY_CYCLE = false [RE]
  DPT {n} VirtualDevices.INT0000001:0.ERROR_CODE = 0 [RE]
  DPT {b} VirtualDevices.INT0000001:0.ERROR_OVERHEAT = false [RE]
  DPT {b} VirtualDevices.INT0000001:0.INSTALL_TEST = false [RW]
  DPT {b} VirtualDevices.INT0000001:0.LOW_BAT = false [RE]
  DPT {i} VirtualDevices.INT0000001:0.OPERATING_VOLTAGE_STATUS = 0 [RE]
  DPT {b} VirtualDevices.INT0000001:0.SABOTAGE = false [RE]
  DPT {b} VirtualDevices.INT0000001:0.UNREACH = false [RE]
  DPT {b} VirtualDevices.INT0000001:0.UPDATE_PENDING = false [RE]
CHN INT0000001:1 Heizung-Gaestezimmer-1
  DPT {i} VirtualDevices.INT0000001:1.ACTIVE_PROFILE = 1 [RWE]
  DPT {f} VirtualDevices.INT0000001:1.ACTUAL_TEMPERATURE = 18.200000 [RE]
  DPT {i} VirtualDevices.INT0000001:1.ACTUAL_TEMPERATURE_STATUS = 0 [RE]
  DPT {b} VirtualDevices.INT0000001:1.BOOST_MODE = false [WE]
  DPT {i} VirtualDevices.INT0000001:1.BOOST_TIME = 0 [RE]
  DPT {f} VirtualDevices.INT0000001:1.CONTROL_DIFFERENTIAL_TEMPERATURE =  [W]
  DPT {i} VirtualDevices.INT0000001:1.CONTROL_MODE =  [W]
  DPT {i} VirtualDevices.INT0000001:1.DURATION_UNIT =  [W]
  DPT {i} VirtualDevices.INT0000001:1.DURATION_VALUE =  [W]
  DPT {b} VirtualDevices.INT0000001:1.FROST_PROTECTION = false [RE]
  DPT {i} VirtualDevices.INT0000001:1.HEATING_COOLING = 0 [RWE]
  DPT {i} VirtualDevices.INT0000001:1.HUMIDITY = 50 [RE]
  DPT {i} VirtualDevices.INT0000001:1.HUMIDITY_STATUS = 0 [RE]
  DPT {f} VirtualDevices.INT0000001:1.LEVEL = 0.000000 [RWE]
  DPT {i} VirtualDevices.INT0000001:1.LEVEL_STATUS = 0 [RE]
  DPT {b} VirtualDevices.INT0000001:1.PARTY_MODE = false [RE]
  DPT {f} VirtualDevices.INT0000001:1.PARTY_SET_POINT_TEMPERATURE = 4.500000 [RE]
  DPT {s} VirtualDevices.INT0000001:1.PARTY_TIME_END = 2000_01_01 00:00 [RWE]
  DPT {s} VirtualDevices.INT0000001:1.PARTY_TIME_START = 2000_01_01 00:00 [RWE]
  DPT {i} VirtualDevices.INT0000001:1.QUICK_VETO_TIME = 0 [RE]
  DPT {i} VirtualDevices.INT0000001:1.SET_POINT_MODE = 0 [RWE]
  DPT {f} VirtualDevices.INT0000001:1.SET_POINT_TEMPERATURE = 17.000000 [RWE]
  DPT {b} VirtualDevices.INT0000001:1.SWITCH_POINT_OCCURED = false [RE]
  DPT {b} VirtualDevices.INT0000001:1.VALVE_ADAPTION = false [RWE]
  DPT {i} VirtualDevices.INT0000001:1.VALVE_STATE = 4 [RE]
  DPT {i} VirtualDevices.INT0000001:1.WINDOW_STATE = 0 [RWE]
CHN INT0000001:3 Heizung-Gaestezimmer-3
  DPT {i} VirtualDevices.INT0000001:3.STATE = 0 [RE]
CHN INT0000001:4 Heizung-Gaestezimmer-4
  DPT {i} VirtualDevices.INT0000001:4.PROCESS = 0 [RE]
  DPT {i} VirtualDevices.INT0000001:4.SECTION = 0 [RE]
  DPT {i} VirtualDevices.INT0000001:4.SECTION_STATUS = 0 [RE]
  DPT {b} VirtualDevices.INT0000001:4.STATE = false [RE]

erzeugt nun mit
ccureadingfilter 1.(ACTUAL_TEMPERATURE|LEVEL|SET_POINT_TEMPERATURE|HUMIDITY)$

folgende Events:

2020-03-02 13:21:30 HMCCUDEV gz_hzg 1.LEVEL: 0.0
2020-03-02 13:21:30 HMCCUDEV gz_hzg 1.ACTUAL_TEMPERATURE: 18.2
2020-03-02 13:21:30 HMCCUDEV gz_hzg 1.SET_POINT_TEMPERATURE: 17.0
2020-03-02 13:21:30 HMCCUDEV gz_hzg activity: alive
2020-03-02 13:21:30 HMCCUDEV gz_hzg 1.SET_POINT_TEMPERATURE: 17.0
2020-03-02 13:21:30 HMCCUDEV gz_hzg 1.LEVEL: 0.0
2020-03-02 13:21:31 HMCCUDEV gz_hzg 1.ACTUAL_TEMPERATURE: 18.4
2020-03-02 13:21:43 HMCCUDEV gz_hzg battery: ok
2020-03-02 13:21:43 HMCCUDEV gz_hzg activity: alive
2020-03-02 13:21:43 HMCCUDEV gz_hzg 1.ACTUAL_TEMPERATURE: 18.2
2020-03-02 13:21:43 HMCCUDEV gz_hzg 1.SET_POINT_TEMPERATURE: 17.0
2020-03-02 13:21:43 HMCCUDEV gz_hzg 1.HUMIDITY: 50
2020-03-02 13:21:43 HMCCUDEV gz_hzg battery: ok
2020-03-02 13:21:43 HMCCUDEV gz_hzg activity: alive
2020-03-02 13:21:43 HMCCUDEV gz_hzg 1.SET_POINT_TEMPERATURE: 17.0
2020-03-02 13:21:43 HMCCUDEV gz_hzg 1.HUMIDITY: 50
2020-03-02 13:21:44 HMCCUDEV gz_hzg 1.ACTUAL_TEMPERATURE: 18.2
...
2020-03-02_13:34:49 gz_hzg 1.ACTUAL_TEMPERATURE: 18.200000
2020-03-02_13:36:03 gz_hzg 1.ACTUAL_TEMPERATURE: 18.200000
2020-03-02_14:14:33 gz_hzg 1.SET_POINT_TEMPERATURE: 17.0
2020-03-02_14:14:33 gz_hzg 1.LEVEL: 0.0
2020-03-02_14:14:33 gz_hzg 1.ACTUAL_TEMPERATURE: 18.1
2020-03-02_14:14:33 gz_hzg 1.SET_POINT_TEMPERATURE: 17.0
2020-03-02_14:14:33 gz_hzg 1.LEVEL: 0.0
2020-03-02_14:14:33 gz_hzg 1.ACTUAL_TEMPERATURE: 18.2

Dabei können sich die Werte von ACTUAL_TEMPERATURE unterscheiden, selbst wenn sie in der selben Sekunde kommen. Es scheint mir, dass hier nicht nur die Readings des Group Devices geliefert werden, sondern auch die des/der zugehörigen Heizkörperthermostate bzw. Wandthermostate. Zumindest stimmen zu diesen Zeiten die abweichenden Temperaturen mit den Angaben der WebUI zu den jeweiligen Gruppenmitgliedern überein.

Bis vor kurzem war das so, dass je Meldezeitpunkt jedes Reading nur einmal kam (Beispiel aus einem FileLog):

2020-02-27_08:18:04 gz_hzg 1.SET_POINT_TEMPERATURE: 17.0
2020-02-27_08:18:04 gz_hzg 1.LEVEL: 0.0
2020-02-27_08:18:05 gz_hzg 1.ACTUAL_TEMPERATURE: 17.0
2020-02-27_08:31:30 gz_hzg 1.SET_POINT_TEMPERATURE: 17.0
2020-02-27_08:31:30 gz_hzg 1.ACTUAL_TEMPERATURE: 17.1
2020-02-27_09:10:42 gz_hzg 1.SET_POINT_TEMPERATURE: 17.0
2020-02-27_09:10:42 gz_hzg 1.LEVEL: 0.0
2020-02-27_09:10:42 gz_hzg 1.ACTUAL_TEMPERATURE: 17.1
2020-02-27_09:25:30 gz_hzg 1.SET_POINT_TEMPERATURE: 17.0
2020-02-27_09:25:31 gz_hzg 1.ACTUAL_TEMPERATURE: 17.1
2020-02-27_10:03:59 gz_hzg 1.SET_POINT_TEMPERATURE: 17.0
2020-02-27_10:03:59 gz_hzg 1.LEVEL: 0.0
2020-02-27_10:03:59 gz_hzg 1.ACTUAL_TEMPERATURE: 17.1
2020-02-27_10:18:03 gz_hzg 1.SET_POINT_TEMPERATURE: 17.0
2020-02-27_10:18:04 gz_hzg 1.ACTUAL_TEMPERATURE: 17.0
2020-02-27_10:56:51 gz_hzg 1.SET_POINT_TEMPERATURE: 17.0
2020-02-27_10:56:51 gz_hzg 1.LEVEL: 0.0
2020-02-27_10:56:51 gz_hzg 1.ACTUAL_TEMPERATURE: 17.0
2020-02-27_11:11:14 gz_hzg 1.SET_POINT_TEMPERATURE: 17.0
2020-02-27_11:11:15 gz_hzg 1.ACTUAL_TEMPERATURE: 16.9
2020-02-27_11:19:49 gz_hzg 1.SET_POINT_TEMPERATURE: 17.0
2020-02-27_11:19:49 gz_hzg 1.LEVEL: 0.01
2020-02-27_11:19:49 gz_hzg 1.ACTUAL_TEMPERATURE: 16.9


Ich habe testweise wieder einen Downgrade auf die vorherige debmatic-Version gemacht, weil dies Verhalten genau mit dem Upgrade der Firmware auf den WTH-2 und gleichzeitig der debmatic begonnen hatte, aber dass dass brachte keine Verbesserung.

Ich bin etwas ratlos und hoffe auf Hilfe  :). Danke!
Gruß
Thomas
--
tinkerboard s, RPI-RF-MOD, debmatic 3.61.7.90, fhem 5.9.21052, HMIP-WTH-x, HMIP-eTRV-x, HMIP-BSM, Delock 11826, RPI 3b mit ebus Adapter 2.2 RPI, SMA-EM, Compleo eBox-Smart

thomas.z

Moin,
nachdem ich keine Hinweise bekommen, habe musste ich mich selber ein wenig durch die 88_HMCCUxx.pm Module graben. Letztlich scheint es so, dass HMCCUDEV bei einem virtuellen Gerät vom Typ HmIP-Heating zwar beim Kommando "get <> deviceinfo" sauber nur die Kanäle und Readings des virtuellen Gerätes listet, und man (auch ich) so denkt, dass ccureadingfilter nur darauf angewendet wird, aber dem ist nicht so. Mit dem ccuflag trace konnte ich dann erkennen, dass alle Geräte und deren Kanäle, die es in der Gruppe gibt, analysiert werden. Wenn dann ein WTH und 2 eTRV immer ihre Meldungen abgeben, und diese Werte (ACTUAL_TEMPERATURE und LEVEL) sich dann auch noch unterscheiden, bekommt man sehr viele Events und in der Folge Zickzack-Plots.
Die Lösung lag dann auf der Hand. Da alle Readings, die ich benötige, im Kanal 1 des virtuellen Gerätes vorhanden sind, habe ich ein Gerät vom Typ HMCCUCHN auf diesen Kanal definiert. Nun bekomme ich genau die von der CCU3 konsolidierten Werte der Gruppengeräte zur weitern Verarbeitung.
Gruß
Thomas
Gruß
Thomas
--
tinkerboard s, RPI-RF-MOD, debmatic 3.61.7.90, fhem 5.9.21052, HMIP-WTH-x, HMIP-eTRV-x, HMIP-BSM, Delock 11826, RPI 3b mit ebus Adapter 2.2 RPI, SMA-EM, Compleo eBox-Smart