Thanks, changed and problem gone. Not sure why it was set to true.
This was one of the automations I kept meaning to write, so thanks for beating me to it. Saved me a bit of work. I have added an extra condition (still to be tested), which should stop the action from being run when you’ve gone on holiday and turned the hot water off.
- condition: state
entity_id: water_heater.stored_hw
state: auto
attribute: operation_mode
I was thinking about adding that but our hot water cools down so slow that I doubt it will get that low by itself in the time we will be away
Fixing other-halfs, 1 automation rule at a time:
- id: 'Yvette Away - Turn Off Heating'
alias: 'Yvette Away - Turn Off Heating'
trigger:
- platform: state
entity_id: person.yvette
to: 'not_home'
condition:
condition: or
conditions:
- condition: template
value_template: '{{ is_state_attr("climate.yvette_office", "preset_mode", "temporary") }}'
- condition: template
value_template: '{{ is_state_attr("climate.yvette_office", "preset_mode", "permanent") }}'
action:
- service: climate.set_preset_mode
data:
entity_id: climate.yvette_office
preset_mode: 'none'
So, version 0.17.13 has been released as the latest Stable version.
Changes since 0.17.11 include only bugfixes, but note: it will delete any packet log files older than 7 days, unless you change your configuration:
evohome_cc:
serial_port: /dev/ttyACM0
packet_log:
file_name: ramses_packet.log
rotate_backups: 365 # keep a year's worth of old packet logs
So, version 0.18.2 has been released as the latest pre-release version.
It includes changes specifically for UFH.
Hello,
I’ve updated to 0.18.2 and I have the following error:
Logger: homeassistant
Source: /usr/src/homeassistant/homeassistant/runner.py:98
First occurred: 9:37:58 PM (1 occurrences)
Last logged: 9:37:58 PM
Error doing job: Task exception was never retrieved
Traceback (most recent call last):
File "/usr/local/lib/python3.9/site-packages/ramses_rf/helpers.py", line 17, in execute_func
return fnc(*args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/ramses_rf/entities.py", line 131, in wrapper
return fnc(self, discover_flag=discover_flag)
File "/usr/local/lib/python3.9/site-packages/ramses_rf/devices.py", line 1111, in _discover
[ # only 2309 has any potential?
File "/usr/local/lib/python3.9/site-packages/ramses_rf/devices.py", line 1114, in <listcomp>
if ufh_idx["enabled"]
TypeError: string indices must be integers
I have the same problem with 0.18.1 (did not have the time to try it before but just tried it now to check if the error was present in both release or not)
I’ve tried rebooting with restore_cache at false but it did not help.
Yeah - I had a fix for it, but since decided to change the way things were done… watch this space.
Davis, was away for a while but I am running 17.13, ofcourse overlooked the restore_state one for sure but am running here without issues now. Before in my previous version (didnt spend much time lately with HASS) it was dead all of the sudden. But another big surprise after I updated (see below) now it recognized the extra actuator. And for sure I did not rebind and so… The only thing it reported before was the RFG100 Gateway which it did not see yet (?)… Will monitor this stall issue here
{
"version": 1,
"minor_version": 1,
"key": "evohome_cc",
"data": {
"client_state": {
"schema": {
"main_controller": "01:059885",
"01:059885": {
"system": {
"heating_control": "10:030670"
},
"orphans": [],
"stored_hotwater": {},
"underfloor_heating": {},
"zones": {
"00": {
"_name": "Woonkamer",
"zone_type": "radiator_valve",
"zone_sensor": "34:177047",
"sensor_alt": "34:177047",
"devices": [
"04:126378",
"04:126354",
"04:126368",
"34:177047"
],
"actuators": [
"04:126378",
"04:126354",
"04:126368"
]
},
"01": {
"_name": "Hal",
"zone_type": "radiator_valve",
"zone_sensor": "03:075455",
"sensor_alt": "03:075455",
"devices": [
"04:126322",
"03:075455"
],
"actuators": [
"04:126322"
]
},
"02": {
"_name": "Badkamer",
"zone_type": "radiator_valve",
"zone_sensor": "34:176627",
"sensor_alt": "34:176627",
"devices": [
"04:126376",
"34:176627"
],
"actuators": [
"04:126376"
]
},
"03": {
"_name": "Logeerkamer",
"zone_type": "radiator_valve",
"zone_sensor": "04:126366",
"sensor_alt": "04:126366",
"devices": [
"04:126366"
],
"actuators": [
"04:126366"
]
},
"04": {
"_name": "Kamer Yet",
"zone_type": "radiator_valve",
"zone_sensor": "34:155573",
"sensor_alt": "34:155573",
"devices": [
"04:126382",
"34:155573"
],
"actuators": [
"04:126382"
]
},
"05": {
"_name": "Kamer Marco",
"zone_type": "radiator_valve",
"zone_sensor": "34:162993",
"sensor_alt": "34:162993",
"devices": [
"04:126374",
"34:162993"
],
"actuators": [
"04:126374"
]
}
}
},
"orphans": [],
"device_hints": {}
},
The only thing I see passing by in the log:
2022-01-22 15:52:52 INFO (MainThread) [ramses_rf.message] || CTL:059885 | RFG:051821 | RP | zone_mode | 01 || {'zone_idx': '01', 'mode': 'follow_schedule', 'setpoint': 12.0}
2022-01-22 15:52:52 ERROR (MainThread) [homeassistant] Error doing job: Exception in callback SerialTransport._read_ready()
Traceback (most recent call last):
File "/usr/local/lib/python3.9/asyncio/events.py", line 80, in _run
self._context.run(self._callback, *self._args)
File "/usr/local/lib/python3.9/site-packages/serial_asyncio/__init__.py", line 119, in _read_ready
self._protocol.data_received(data)
File "/usr/local/lib/python3.9/site-packages/ramses_rf/protocol/transport.py", line 477, in data_received
self._line_received(dtm, _normalise(_str(raw_line)), raw_line)
File "/usr/local/lib/python3.9/site-packages/ramses_rf/protocol/transport.py", line 460, in _line_received
self._pkt_received(pkt)
File "/usr/local/lib/python3.9/site-packages/ramses_rf/protocol/transport.py", line 704, in _pkt_received
self._qos_received(pkt)
File "/usr/local/lib/python3.9/site-packages/ramses_rf/protocol/transport.py", line 762, in _qos_received
logger_rcvd(msg, wanted=wanted)
File "/usr/local/lib/python3.9/site-packages/ramses_rf/protocol/transport.py", line 723, in logger_rcvd
pkt._hdr or str(pkt),
File "/usr/local/lib/python3.9/site-packages/ramses_rf/protocol/frame.py", line 347, in _hdr
self._hdr_ = pkt_header(self)
File "/usr/local/lib/python3.9/site-packages/ramses_rf/protocol/frame.py", line 474, in pkt_header
return f"{header}|{pkt._ctx}" if isinstance(pkt._ctx, str) else header
File "/usr/local/lib/python3.9/site-packages/ramses_rf/protocol/frame.py", line 336, in _ctx
self._ctx_ = self._idx
File "/usr/local/lib/python3.9/site-packages/ramses_rf/protocol/frame.py", line 358, in _idx
self._idx_ = _pkt_idx(self) or False
File "/usr/local/lib/python3.9/site-packages/ramses_rf/protocol/frame.py", line 433, in _pkt_idx
raise InvalidPayloadError(
ramses_rf.protocol.exceptions.InvalidPayloadError: Corrupt payload: Packet idx is 01, but expecting no idx (00)
2022-01-22 15:52:57 INFO (MainThread) [ramses_rf.message] || RFG:051821 | CTL:059885 | RQ | zone_mode | 02 || {}
2022-01-22 15:52:57 INFO (MainThread) [ramses_rf.message] || CTL:059885 | RFG:051821 | RP | zone_mode | 02 || {'zone_idx': '02', 'mode': 'follow_schedule', 'setpoint': 12.0}
2022-01-22 15:52:57 ERROR (MainThread) [homeassistant] Error doing job: Exception in callback SerialTransport._read_ready()
Traceback (most recent call last):
File "/usr/local/lib/python3.9/asyncio/events.py", line 80, in _run
self._context.run(self._callback, *self._args)
File "/usr/local/lib/python3.9/site-packages/serial_asyncio/__init__.py", line 119, in _read_ready
self._protocol.data_received(data)
File "/usr/local/lib/python3.9/site-packages/ramses_rf/protocol/transport.py", line 477, in data_received
self._line_received(dtm, _normalise(_str(raw_line)), raw_line)
File "/usr/local/lib/python3.9/site-packages/ramses_rf/protocol/transport.py", line 460, in _line_received
self._pkt_received(pkt)
File "/usr/local/lib/python3.9/site-packages/ramses_rf/protocol/transport.py", line 704, in _pkt_received
self._qos_received(pkt)
File "/usr/local/lib/python3.9/site-packages/ramses_rf/protocol/transport.py", line 762, in _qos_received
logger_rcvd(msg, wanted=wanted)
File "/usr/local/lib/python3.9/site-packages/ramses_rf/protocol/transport.py", line 723, in logger_rcvd
pkt._hdr or str(pkt),
File "/usr/local/lib/python3.9/site-packages/ramses_rf/protocol/frame.py", line 347, in _hdr
self._hdr_ = pkt_header(self)
File "/usr/local/lib/python3.9/site-packages/ramses_rf/protocol/frame.py", line 474, in pkt_header
return f"{header}|{pkt._ctx}" if isinstance(pkt._ctx, str) else header
File "/usr/local/lib/python3.9/site-packages/ramses_rf/protocol/frame.py", line 336, in _ctx
self._ctx_ = self._idx
File "/usr/local/lib/python3.9/site-packages/ramses_rf/protocol/frame.py", line 358, in _idx
self._idx_ = _pkt_idx(self) or False
File "/usr/local/lib/python3.9/site-packages/ramses_rf/protocol/frame.py", line 433, in _pkt_idx
raise InvalidPayloadError(
ramses_rf.protocol.exceptions.InvalidPayloadError: Corrupt payload: Packet idx is 01, but expecting no idx (00)
Hmm… just checked my logs, there seems to be some activity but my overview does not report anything anymore…
Is it possible with this integration to send a heat demand (of zero) directly to the BDR91?
I have a small issue with occasional lockouts, which occur when the demands from all TRVs drop to zero, but the async nature of Evohome means that the change to now zero demand is not sent to the BDR91 immediately, resulting in the occasional final firing of the boiler when there is no need. And occasionally this causes a boiler lockout, even with ABV etc. in place and working.
My thinking was that as soon as HA recognises no load from TRVs, that it sends zero demand to the BDR91. Possible, or non-starter?
Well, it shouldn’t be doing that - I must have introduced a bug - I’ll have a look.
FWIW, I am not normally interested in the contents of the evohome_cc file.
Hi @zxdavb,
Can I help by providing log files? I am now using 0.18.2 and have a UFH. For communication I am still using HGI80.
I do have an error:
Error doing job: Exception in callback SerialTransport._read_ready()
and this was also with 0.18.1
Please provide more information Was it working fine with 0.17.x or did you have the same error?
Please describe your setup - HassOS? VM? ser2net? etc.?
I run as a docker container and pass the usb directly through. This error did not occur with version 0.17.10 or below.
The config I use:
evohome_cc:
serial_port: /dev/ttyUSB0
scan_interval: 60
packet_log: /config/evohome/packets.log
rotate_backups: 365 # keep a year's worth of old packet logs
ramses_rf:
# disable_discovery: true
# enable_eavesdrop: true
enforce_known_list: true
# max_zones: 8
schema:
controller: 01:040078
restore_cache: true
known_list:
- 01:040078
- 02:013748
- 10:025262
- 18:013217
- 22:170592
- 22:156865
- 22:170591
- 04:233367
- 04:233377
- 04:233386
- 04:233146
- 20:000329: {class: FAN}
- 20:000908: {class: FAN}
- 20:001004: {class: FAN}
- 20:001349: {class: FAN}
- 20:001397: {class: FAN}
- 20:001468: {class: FAN}
- 20:001476: {class: FAN}
- 37:217426: {class: FAN}
block_list:
- 01:103468
- 04:098311
- 04:098313
- 04:098315
- 04:098317
- 07:042737
- 07:044315
- 07:044339
- 07:044814
- 10:050714
- 10:138926
- 13:158003
- 29:057487
- 34:052703
- 34:059813
- 34:128229
- 34:128251
- 34:128585
The full log message is:
Logger: homeassistant
Source: /usr/src/homeassistant/homeassistant/runner.py:98
First occurred: 22 januari 2022 09:19:28 (15 occurrences)
Last logged: 11:57:27
Error doing job: Exception in callback SerialTransport._read_ready()
Traceback (most recent call last):
File "/usr/local/lib/python3.9/asyncio/events.py", line 80, in _run
self._context.run(self._callback, *self._args)
File "/usr/local/lib/python3.9/site-packages/serial_asyncio/__init__.py", line 119, in _read_ready
self._protocol.data_received(data)
File "/usr/local/lib/python3.9/site-packages/ramses_rf/protocol/transport.py", line 477, in data_received
self._line_received(dtm, _normalise(_str(raw_line)), raw_line)
File "/usr/local/lib/python3.9/site-packages/ramses_rf/protocol/transport.py", line 460, in _line_received
self._pkt_received(pkt)
File "/usr/local/lib/python3.9/site-packages/ramses_rf/protocol/transport.py", line 704, in _pkt_received
self._qos_received(pkt)
File "/usr/local/lib/python3.9/site-packages/ramses_rf/protocol/transport.py", line 762, in _qos_received
logger_rcvd(msg, wanted=wanted)
File "/usr/local/lib/python3.9/site-packages/ramses_rf/protocol/transport.py", line 723, in logger_rcvd
pkt._hdr or str(pkt),
File "/usr/local/lib/python3.9/site-packages/ramses_rf/protocol/frame.py", line 353, in _hdr
self._hdr_ = pkt_header(self)
File "/usr/local/lib/python3.9/site-packages/ramses_rf/protocol/frame.py", line 480, in pkt_header
return f"{header}|{pkt._ctx}" if isinstance(pkt._ctx, str) else header
File "/usr/local/lib/python3.9/site-packages/ramses_rf/protocol/frame.py", line 342, in _ctx
self._ctx_ = self._idx
File "/usr/local/lib/python3.9/site-packages/ramses_rf/protocol/frame.py", line 364, in _idx
self._idx_ = _pkt_idx(self) or False
File "/usr/local/lib/python3.9/site-packages/ramses_rf/protocol/frame.py", line 414, in _pkt_idx
raise InvalidPayloadError(
ramses_rf.protocol.exceptions.InvalidPayloadError: Corrupt payload: Packet idx is 63, but expecting no idx (00)
I’ve just noticed this error, which I think is new.
I should be able to run through all the HVAC function some time this week and provide the packet logs.
Logger: ramses_rf.protocol.message
Source: /usr/local/lib/python3.9/site-packages/ramses_rf/protocol/message.py:395
First occurred: 16:33:17 (4 occurrences)
Last logged: 16:46:13
I --- 32:166025 --:------ 32:166025 1298 003 008400 < AssertionError()
I --- 30:079129 --:------ 30:079129 31DA 029 21EF0084002FEF7FFF7FFF7FFF7FFF0002EF18FFFF000000EF7FFF7FFF < AssertionError()
RP --- 30:079129 32:166025 --:------ 31DA 029 21EF0084002FEF7FFF7FFF7FFF7FFF0002EF18FFFF000000EF7FFF7FFF < AssertionError()
Traceback (most recent call last):
File "/usr/local/lib/python3.9/site-packages/ramses_rf/protocol/message.py", line 386, in _validate
result = PAYLOAD_PARSERS.get(self.code, parser_unknown)(
File "/usr/local/lib/python3.9/site-packages/ramses_rf/protocol/parsers.py", line 152, in wrapper
result = fnc(payload, msg, **kwargs)
File "/usr/local/lib/python3.9/site-packages/ramses_rf/protocol/parsers.py", line 964, in parser_1298
return {"co2_level": double(payload[2:])}
File "/usr/local/lib/python3.9/site-packages/ramses_rf/protocol/helpers.py", line 117, in double
assert result < 32767
AssertionError
What I noticed is that 02_013748_relay_demand
is as percentage. I think this is the control of the pump of the UFH (HCE80) and only can be on or off. In the log the value is 0% or 100%.
In the previous version I was running it was not seeing the correct number of actuators for that room. It declared one of the actuators as an orphan. This is why I check this evohome_cc file. I’ve been running the 17.13 version the last couple of days. The thing is that looking in the homeassistant.log file it seems to be running but when I inspect the entities, almost all of them are unavailable. It seems to stop feeding the data into HA. I will try and see how latest 18.2 version will hold.