michaelarnauts / comfoconnect

Python Zehnder ComfoConnect LAN C library to interface with ComfoAir Q350/450/600 units.
Other
94 stars 34 forks source link

added filter for bogus 0-values after reconnect #46

Closed beniwohli closed 2 years ago

beniwohli commented 3 years ago

With version U1.2.6 of the ComfoConnect LAN C bridge, the bridge started sending 0 for every monitored sensor once, before sending the correct values.

To filter these values, we keep a set of sensor IDs for which we received a 0. If a given ID is not in the set when receiving a 0, the value is ignored. The set is replaced with a new empty set on every re-connect.

After applying this patch to my home assistant instance, the graphs look a bit more normal :) image

This is a bit of a hack, but I think it's acceptable, as it won't break if Zehnder ever decides to fix this bug on their side.

fixes #44

beniwohli commented 3 years ago

Ugh. Overlooked that 0-value shortly after midnight. Looking at the logs, there was a re-connect at about 00:07, followed by the expected series of 0-values. A minute later, the bridge sent another series of 0-values, but not for all sensors (e.g. power usage didn't get one, see screenshot below)

image

So, the bridge always sends bogus values after re-connect, but also may send bogus values at other times.

Maybe we should store the previous value for each sensor, and if the new value is 0 and deviates by more than X from the previous value, discard it. But that gets a bit too complex for my taste...

michaelarnauts commented 3 years ago

Ugh. Overlooked that 0-value shortly after midnight. Looking at the logs, there was a re-connect at about 00:07, followed by the expected series of 0-values. A minute later, the bridge sent another series of 0-values, but not for all sensors (e.g. power usage didn't get one, see screenshot below)

image

So, the bridge always sends bogus values after re-connect, but also may send bogus values at other times.

Maybe we should store the previous value for each sensor, and if the new value is 0 and deviates by more than X from the previous value, discard it. But that gets a bit too complex for my taste...

I wonder if a better fix would be to specify a list of sensors where we disallow a value of 0. The speed sensors should never indicate 0, and the temperature should probably also fluctuate between 0.1 and -0.1 for example. I guess the issue is only with "analog" sensors.

Anyway, this is clearly an issue in the updated firmware, but I don't think Zehnder will be fast to fix this.

michaelarnauts commented 2 years ago

This has been fixed in a firmware update! See https://github.com/michaelarnauts/comfoconnect/issues/44#issuecomment-1235089446