probably its pyserial-asyncio bug, but...
some random time after hass running it becomes unresponsive and I see in logs SEE BELOW
Something in my setup acquiring file descriptors and not closing them... I guess its you...
### My diagnostics data:
{
"home_assistant": {
"installation_type": "Unknown",
"version": "2023.9.2",
"dev": false,
"hassio": false,
"virtualenv": false,
"python_version": "3.11.0rc1",
"docker": false,
"arch": "x86_64",
"os_name": "Linux",
"os_version": "5.15.0-84-generic",
"run_as_root": false
},
"custom_components": {
"plum_ecomax": {
"version": "0.3.8",
"requirements": [
"pyplumio==0.4.2.post1"
]
},
"tcl_tv_remote": {
"version": "0.1.3",
"requirements": [
"TCL-TV-Remote==0.0.1"
]
},
"hacs": {
"version": "1.32.1",
"requirements": [
"aiogithubapi>=22.10.1"
]
},
"yi_hack": {
"version": "0.4.6",
"requirements": []
}
},
"integration_manifest": {
"domain": "plum_ecomax",
"name": "Plum ecoMAX",
"codeowners": [
"@denpamusic"
],
"config_flow": true,
"dependencies": [
"network"
],
"documentation": "https://github.com/denpamusic/homeassistant-plum-ecomax",
"integration_type": "hub",
"iot_class": "local_push",
"issue_tracker": "https://github.com/denpamusic/homeassistant-plum-ecomax/issues",
"loggers": [
"pyplumio"
],
"requirements": [
"pyplumio==0.4.2.post1"
],
"version": "0.3.8",
"is_built_in": false
},
"data": {
"entry": {
"title": "ecoMAX 350P2-C",
"data": {
"device": "/dev/serial/by-id/usb-1a86_USB_Serial-if00-port0",
"baudrate": "115200",
"connection_type": "Serial",
"uid": "**REDACTED**",
"model": "ecoMAX 350P2-C",
"product_type": 0,
"product_id": 138,
"software": "3.12.20.K1",
"sub_devices": [
"thermostats"
]
}
},
"pyplumio": {
"version": "0.4.2.post1"
},
"data": {
"connected": false,
"frame_versions": {
"49": 3,
"50": 3,
"54": 1,
"56": 2,
"57": 1,
"61": 9070,
"80": 1,
"81": 1,
"82": 1,
"83": 1
},
"regdata_decoder": true,
"ecomax_control": {
"__type": "<class 'pyplumio.structures.ecomax_parameters.EcomaxBinaryParameter'>",
"repr": "EcomaxBinaryParameter(device=EcoMAX, description=EcomaxParameterDescription(name='ecomax_control', cls=<class 'pyplumio.structures.ecomax_parameters.EcomaxBinaryParameter'>, multiplier=1, offset=0), value=on, min_value=off, max_value=on)"
},
"state": 3,
"fan": true,
"feeder": false,
"heating_pump": true,
"water_heater_pump": false,
"circulation_pump": false,
"lighter": false,
"alarm": false,
"outer_boiler": false,
"fan2_exhaust": false,
"feeder2": false,
"outer_feeder": false,
"solar_pump": false,
"fireplace_pump": false,
"gcz_contact": false,
"blow_fan1": false,
"blow_fan2": false,
"heating_pump_flag": true,
"water_heater_pump_flag": true,
"circulation_pump_flag": true,
"solar_pump_flag": false,
"heating_temp": 60.751739501953125,
"feeder_temp": 26.1065673828125,
"optical_temp": 100.0,
"heating_target": 70,
"heating_status": 0,
"water_heater_target": 45,
"water_heater_status": 128,
"pending_alerts": 0,
"fuel_level": 100,
"transmission": 0,
"fan_power": 32.04085159301758,
"load": 58,
"power": 27.90319061279297,
"fuel_burned": 0.0014456380461813543,
"fuel_consumption": 5.356383323669434,
"thermostat": 1,
"modules": {
"__type": "<class 'pyplumio.structures.modules.ConnectedModules'>",
"repr": "ConnectedModules(module_a='3.12.20.K1', module_b=None, module_c=None, ecolambda=None, ecoster=None, panel=None)"
},
"thermostats": {},
"thermostat_sensors": true,
"thermostat_count": 3,
"sensors": true,
"schema": [
[
1792,
{
"__type": "<class 'pyplumio.helpers.data_types.Byte'>",
"repr": "Byte(data=b'\\x02', size=1)"
}
],
[
1536,
{
"__type": "<class 'pyplumio.helpers.data_types.Boolean'>",
"repr": "Boolean(data=b'\\t', size=0)"
}
],
[
1538,
{
"__type": "<class 'pyplumio.helpers.data_types.Boolean'>",
"repr": "Boolean(data=b'\\t', size=0)"
}
],
[
1542,
{
"__type": "<class 'pyplumio.helpers.data_types.Boolean'>",
"repr": "Boolean(data=b'\\t', size=0)"
}
],
[
1541,
{
"__type": "<class 'pyplumio.helpers.data_types.Boolean'>",
"repr": "Boolean(data=b'\\t', size=0)"
}
],
[
5,
{
"__type": "<class 'pyplumio.helpers.data_types.Boolean'>",
"repr": "Boolean(data=b'\\t', size=0)"
}
],
[
3,
{
"__type": "<class 'pyplumio.helpers.data_types.Boolean'>",
"repr": "Boolean(data=b'\\t', size=0)"
}
],
[
1543,
{
"__type": "<class 'pyplumio.helpers.data_types.Boolean'>",
"repr": "Boolean(data=b'\\t', size=0)"
}
],
[
1544,
{
"__type": "<class 'pyplumio.helpers.data_types.Boolean'>",
"repr": "Boolean(data=b'\\t', size=1)"
}
],
[
1545,
{
"__type": "<class 'pyplumio.helpers.data_types.Boolean'>",
"repr": "Boolean(data=b'\\x00', size=0)"
}
],
[
1546,
{
"__type": "<class 'pyplumio.helpers.data_types.Boolean'>",
"repr": "Boolean(data=b'\\x00', size=0)"
}
],
[
1547,
{
"__type": "<class 'pyplumio.helpers.data_types.Boolean'>",
"repr": "Boolean(data=b'\\x00', size=0)"
}
],
[
1548,
{
"__type": "<class 'pyplumio.helpers.data_types.Boolean'>",
"repr": "Boolean(data=b'\\x00', size=0)"
}
],
[
1549,
{
"__type": "<class 'pyplumio.helpers.data_types.Boolean'>",
"repr": "Boolean(data=b'\\x00', size=0)"
}
],
[
2,
{
"__type": "<class 'pyplumio.helpers.data_types.Boolean'>",
"repr": "Boolean(data=b'\\x00', size=0)"
}
],
[
6,
{
"__type": "<class 'pyplumio.helpers.data_types.Boolean'>",
"repr": "Boolean(data=b'\\x00', size=0)"
}
],
[
6,
{
"__type": "<class 'pyplumio.helpers.data_types.Boolean'>",
"repr": "Boolean(data=b'\\x00', size=1)"
}
],
[
1024,
{
"__type": "<class 'pyplumio.helpers.data_types.Float'>",
"repr": "Float(data=b'\\xc8\\x01sB', size=4)"
}
],
[
1027,
{
"__type": "<class 'pyplumio.helpers.data_types.Float'>",
"repr": "Float(data=b'h\\xdcv\\xc3', size=4)"
}
],
[
1026,
{
"__type": "<class 'pyplumio.helpers.data_types.Float'>",
"repr": "Float(data=b'@\\xda\\xd0A', size=4)"
}
],
[
26,
{
"__type": "<class 'pyplumio.helpers.data_types.Float'>",
"repr": "Float(data=b'\\x00\\x00\\xc8B', size=4)"
}
],
[
1025,
{
"__type": "<class 'pyplumio.helpers.data_types.Float'>",
"repr": "Float(data=b' \\xbeC\\xc3', size=4)"
}
],
[
29,
{
"__type": "<class 'pyplumio.helpers.data_types.Float'>",
"repr": "Float(data=b' \\xbeC\\xc3', size=4)"
}
],
[
1028,
{
"__type": "<class 'pyplumio.helpers.data_types.Float'>",
"repr": "Float(data=b'\\x00\\x00\\x00\\x00', size=4)"
}
],
[
1032,
{
"__type": "<class 'pyplumio.helpers.data_types.Float'>",
"repr": "Float(data=b'\\x00\\x00\\x00\\x00', size=4)"
}
],
[
1031,
{
"__type": "<class 'pyplumio.helpers.data_types.Float'>",
"repr": "Float(data=b'\\x00\\x00\\x00\\x00', size=4)"
}
],
[
1029,
{
"__type": "<class 'pyplumio.helpers.data_types.Float'>",
"repr": "Float(data=b'\\x00\\x00\\x00\\x00', size=4)"
}
],
[
25,
{
"__type": "<class 'pyplumio.helpers.data_types.Float'>",
"repr": "Float(data=b'\\x00\\x00\\x00\\x00', size=4)"
}
],
[
27,
{
"__type": "<class 'pyplumio.helpers.data_types.Float'>",
"repr": "Float(data=b'\\x00\\x00\\x00\\x00', size=4)"
}
],
[
29,
{
"__type": "<class 'pyplumio.helpers.data_types.Float'>",
"repr": "Float(data=b'\\x00\\x00\\x00\\x00', size=4)"
}
],
[
29,
{
"__type": "<class 'pyplumio.helpers.data_types.Float'>",
"repr": "Float(data=b'\\x00\\x00\\x00\\x00', size=4)"
}
],
[
29,
{
"__type": "<class 'pyplumio.helpers.data_types.Float'>",
"repr": "Float(data=b'\\x00\\x00\\x00\\x00', size=4)"
}
],
[
29,
{
"__type": "<class 'pyplumio.helpers.data_types.Float'>",
"repr": "Float(data=b'\\x00\\x00\\x00\\x00', size=4)"
}
],
[
1280,
{
"__type": "<class 'pyplumio.helpers.data_types.Byte'>",
"repr": "Byte(data=b'F', size=1)"
}
],
[
1283,
{
"__type": "<class 'pyplumio.helpers.data_types.Byte'>",
"repr": "Byte(data=b'\\x00', size=1)"
}
],
[
1282,
{
"__type": "<class 'pyplumio.helpers.data_types.Byte'>",
"repr": "Byte(data=b'\\x00', size=1)"
}
],
[
1287,
{
"__type": "<class 'pyplumio.helpers.data_types.Byte'>",
"repr": "Byte(data=b'(', size=1)"
}
],
[
1281,
{
"__type": "<class 'pyplumio.helpers.data_types.Byte'>",
"repr": "Byte(data=b'-', size=1)"
}
],
[
1288,
{
"__type": "<class 'pyplumio.helpers.data_types.Byte'>",
"repr": "Byte(data=b'(', size=1)"
}
],
[
2048,
{
"__type": "<class 'pyplumio.helpers.data_types.Byte'>",
"repr": "Byte(data=b'\\x00', size=1)"
}
]
],
"alerts": [
{
"__type": "<class 'pyplumio.structures.alerts.Alert'>",
"repr": "Alert(code=<AlertType.POWER_LOSS: 0>, from_dt=datetime.datetime(2023, 9, 24, 16, 38), to_dt=datetime.datetime(2023, 9, 25, 0, 26, 28))"
},
{
"__type": "<class 'pyplumio.structures.alerts.Alert'>",
"repr": "Alert(code=<AlertType.POWER_LOSS: 0>, from_dt=datetime.datetime(2023, 9, 22, 9, 6), to_dt=datetime.datetime(2023, 9, 22, 11, 15, 7))"
},
{
"__type": "<class 'pyplumio.structures.alerts.Alert'>",
"repr": "Alert(code=<AlertType.POWER_LOSS: 0>, from_dt=datetime.datetime(2023, 9, 19, 14, 43), to_dt=datetime.datetime(2023, 9, 19, 14, 51, 37))"
},
{
"__type": "<class 'pyplumio.structures.alerts.Alert'>",
"repr": "Alert(code=<AlertType.POWER_LOSS: 0>, from_dt=datetime.datetime(2023, 9, 10, 15, 58), to_dt=datetime.datetime(2023, 9, 10, 18, 0, 43))"
},
{
"__type": "<class 'pyplumio.structures.alerts.Alert'>",
"repr": "Alert(code=<AlertType.POWER_LOSS: 0>, from_dt=datetime.datetime(2023, 9, 9, 14, 43), to_dt=datetime.datetime(2023, 9, 9, 14, 47, 50))"
},
{
"__type": "<class 'pyplumio.structures.alerts.Alert'>",
"repr": "Alert(code=<AlertType.KINDLING_FAILURE: 7>, from_dt=datetime.datetime(2023, 9, 9, 14, 33, 38), to_dt=datetime.datetime(2023, 9, 9, 14, 33, 50))"
},
{
"__type": "<class 'pyplumio.structures.alerts.Alert'>",
"repr": "Alert(code=<AlertType.KINDLING_FAILURE: 7>, from_dt=datetime.datetime(2023, 9, 9, 14, 11, 54), to_dt=datetime.datetime(2023, 9, 9, 14, 12, 26))"
},
{
"__type": "<class 'pyplumio.structures.alerts.Alert'>",
"repr": "Alert(code=<AlertType.POWER_LOSS: 0>, from_dt=datetime.datetime(2023, 8, 31, 15, 6), to_dt=datetime.datetime(2023, 8, 31, 15, 19, 33))"
},
{
"__type": "<class 'pyplumio.structures.alerts.Alert'>",
"repr": "Alert(code=<AlertType.POWER_LOSS: 0>, from_dt=datetime.datetime(2023, 8, 24, 1, 10), to_dt=datetime.datetime(2023, 8, 29, 19, 49, 10))"
},
{
"__type": "<class 'pyplumio.structures.alerts.Alert'>",
"repr": "Alert(code=<AlertType.POWER_LOSS: 0>, from_dt=datetime.datetime(2023, 8, 24, 0, 57), to_dt=datetime.datetime(2023, 8, 24, 1, 0, 29))"
}
],
"schedules": {
"heating": {
"__type": "<class 'pyplumio.helpers.schedule.Schedule'>",
"repr": "Schedule(name='heating', device=<pyplumio.devices.ecomax.EcoMAX object at 0x7fdc680efd50>, monday=ScheduleDay([True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True]), tuesday=ScheduleDay([True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True]), wednesday=ScheduleDay([True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True]), thursday=ScheduleDay([True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True]), friday=ScheduleDay([True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True]), saturday=ScheduleDay([True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True]), sunday=ScheduleDay([True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True]))"
},
"boiler_work": {
"__type": "<class 'pyplumio.helpers.schedule.Schedule'>",
"repr": "Schedule(name='boiler_work', device=<pyplumio.devices.ecomax.EcoMAX object at 0x7fdc680efd50>, monday=ScheduleDay([True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True]), tuesday=ScheduleDay([True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True]), wednesday=ScheduleDay([True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True]), thursday=ScheduleDay([True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True]), friday=ScheduleDay([True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True]), saturday=ScheduleDay([True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True]), sunday=ScheduleDay([True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True]))"
}
},
"heating_schedule_switch": {
"__type": "<class 'pyplumio.structures.schedules.ScheduleBinaryParameter'>",
"repr": "ScheduleBinaryParameter(device=EcoMAX, description=ScheduleParameterDescription(name='heating_schedule_switch', cls=<class 'pyplumio.structures.schedules.ScheduleBinaryParameter'>), value=off, min_value=off, max_value=on)"
},
"heating_schedule_parameter": {
"__type": "<class 'pyplumio.structures.schedules.ScheduleParameter'>",
"repr": "ScheduleParameter(device=EcoMAX, description=ScheduleParameterDescription(name='heating_schedule_parameter', cls=<class 'pyplumio.structures.schedules.ScheduleParameter'>), value=0, min_value=0, max_value=30)"
},
"boiler_work_schedule_switch": {
"__type": "<class 'pyplumio.structures.schedules.ScheduleBinaryParameter'>",
"repr": "ScheduleBinaryParameter(device=EcoMAX, description=ScheduleParameterDescription(name='boiler_work_schedule_switch', cls=<class 'pyplumio.structures.schedules.ScheduleBinaryParameter'>), value=off, min_value=off, max_value=on)"
},
"boiler_work_schedule_parameter": {
"__type": "<class 'pyplumio.structures.schedules.ScheduleParameter'>",
"repr": "ScheduleParameter(device=EcoMAX, description=ScheduleParameterDescription(name='boiler_work_schedule_parameter', cls=<class 'pyplumio.structures.schedules.ScheduleParameter'>), value=0, min_value=0, max_value=30)"
},
"schedule_parameters": true,
"mixer_parameters": false,
"product": {
"__type": "<class 'pyplumio.structures.product_info.ProductInfo'>",
"repr": "ProductInfo(type=<ProductType.ECOMAX_P: 0>, id=138, uid='**REDACTED**', logo=35328, image=2816, model='EM350P2-C')"
},
"airflow_power_100": {
"__type": "<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>",
"repr": "EcomaxParameter(device=EcoMAX, description=EcomaxParameterDescription(name='airflow_power_100', cls=<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>, multiplier=1, offset=0), value=36.0, min_value=31.0, max_value=70.0)"
},
"airflow_power_50": {
"__type": "<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>",
"repr": "EcomaxParameter(device=EcoMAX, description=EcomaxParameterDescription(name='airflow_power_50', cls=<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>, multiplier=1, offset=0), value=30.0, min_value=26.0, max_value=35.0)"
},
"airflow_power_30": {
"__type": "<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>",
"repr": "EcomaxParameter(device=EcoMAX, description=EcomaxParameterDescription(name='airflow_power_30', cls=<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>, multiplier=1, offset=0), value=25.0, min_value=19.0, max_value=29.0)"
},
"cycle_time": {
"__type": "<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>",
"repr": "EcomaxParameter(device=EcoMAX, description=EcomaxParameterDescription(name='cycle_time', cls=<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>, multiplier=1, offset=0), value=15.0, min_value=1.0, max_value=250.0)"
},
"h2_hysteresis": {
"__type": "<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>",
"repr": "EcomaxParameter(device=EcoMAX, description=EcomaxParameterDescription(name='h2_hysteresis', cls=<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>, multiplier=1, offset=0), value=3.0, min_value=1.0, max_value=30.0)"
},
"h1_hysteresis": {
"__type": "<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>",
"repr": "EcomaxParameter(device=EcoMAX, description=EcomaxParameterDescription(name='h1_hysteresis', cls=<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>, multiplier=1, offset=0), value=1.0, min_value=1.0, max_value=30.0)"
},
"heating_hysteresis": {
"__type": "<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>",
"repr": "EcomaxParameter(device=EcoMAX, description=EcomaxParameterDescription(name='heating_hysteresis', cls=<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>, multiplier=1, offset=0), value=5.0, min_value=1.0, max_value=30.0)"
},
"fuzzy_logic": {
"__type": "<class 'pyplumio.structures.ecomax_parameters.EcomaxBinaryParameter'>",
"repr": "EcomaxBinaryParameter(device=EcoMAX, description=EcomaxParameterDescription(name='fuzzy_logic', cls=<class 'pyplumio.structures.ecomax_parameters.EcomaxBinaryParameter'>, multiplier=1, offset=0), value=on, min_value=off, max_value=on)"
},
"min_fuzzy_logic_power": {
"__type": "<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>",
"repr": "EcomaxParameter(device=EcoMAX, description=EcomaxParameterDescription(name='min_fuzzy_logic_power', cls=<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>, multiplier=1, offset=0), value=0.0, min_value=0.0, max_value=100.0)"
},
"max_fuzzy_logic_power": {
"__type": "<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>",
"repr": "EcomaxParameter(device=EcoMAX, description=EcomaxParameterDescription(name='max_fuzzy_logic_power', cls=<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>, multiplier=1, offset=0), value=100.0, min_value=0.0, max_value=100.0)"
},
"min_fan_power": {
"__type": "<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>",
"repr": "EcomaxParameter(device=EcoMAX, description=EcomaxParameterDescription(name='min_fan_power', cls=<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>, multiplier=1, offset=0), value=19.0, min_value=10.0, max_value=100.0)"
},
"airflow_power_grate": {
"__type": "<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>",
"repr": "EcomaxParameter(device=EcoMAX, description=EcomaxParameterDescription(name='airflow_power_grate', cls=<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>, multiplier=1, offset=0), value=30.0, min_value=19.0, max_value=100.0)"
},
"boiler_hysteresis_grate": {
"__type": "<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>",
"repr": "EcomaxParameter(device=EcoMAX, description=EcomaxParameterDescription(name='boiler_hysteresis_grate', cls=<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>, multiplier=1, offset=0), value=4.0, min_value=1.0, max_value=30.0)"
},
"supervision_work_airflow": {
"__type": "<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>",
"repr": "EcomaxParameter(device=EcoMAX, description=EcomaxParameterDescription(name='supervision_work_airflow', cls=<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>, multiplier=1, offset=0), value=20.0, min_value=0.0, max_value=100.0)"
},
"supervision_work_airflow_brake": {
"__type": "<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>",
"repr": "EcomaxParameter(device=EcoMAX, description=EcomaxParameterDescription(name='supervision_work_airflow_brake', cls=<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>, multiplier=1, offset=0), value=8.0, min_value=1.0, max_value=250.0)"
},
"heating_temp_grate": {
"__type": "<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>",
"repr": "EcomaxParameter(device=EcoMAX, description=EcomaxParameterDescription(name='heating_temp_grate', cls=<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>, multiplier=1, offset=0), value=40.0, min_value=40.0, max_value=85.0)"
},
"fuel_detection_time_grate": {
"__type": "<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>",
"repr": "EcomaxParameter(device=EcoMAX, description=EcomaxParameterDescription(name='fuel_detection_time_grate', cls=<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>, multiplier=1, offset=0), value=15.0, min_value=0.0, max_value=250.0)"
},
"airflow_power_kindle": {
"__type": "<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>",
"repr": "EcomaxParameter(device=EcoMAX, description=EcomaxParameterDescription(name='airflow_power_kindle', cls=<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>, multiplier=1, offset=0), value=28.0, min_value=19.0, max_value=45.0)"
},
"scavenge_kindle": {
"__type": "<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>",
"repr": "EcomaxParameter(device=EcoMAX, description=EcomaxParameterDescription(name='scavenge_kindle', cls=<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>, multiplier=1, offset=0), value=10.0, min_value=10.0, max_value=240.0)"
},
"kindle_time": {
"__type": "<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>",
"repr": "EcomaxParameter(device=EcoMAX, description=EcomaxParameterDescription(name='kindle_time', cls=<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>, multiplier=1, offset=0), value=6.0, min_value=1.0, max_value=20.0)"
},
"warming_up_time": {
"__type": "<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>",
"repr": "EcomaxParameter(device=EcoMAX, description=EcomaxParameterDescription(name='warming_up_time', cls=<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>, multiplier=1, offset=0), value=20.0, min_value=1.0, max_value=250.0)"
},
"kindle_finish_threshold": {
"__type": "<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>",
"repr": "EcomaxParameter(device=EcoMAX, description=EcomaxParameterDescription(name='kindle_finish_threshold', cls=<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>, multiplier=1, offset=0), value=5.0, min_value=1.0, max_value=100.0)"
},
"min_kindle_power_time": {
"__type": "<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>",
"repr": "EcomaxParameter(device=EcoMAX, description=EcomaxParameterDescription(name='min_kindle_power_time', cls=<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>, multiplier=1, offset=0), value=2.0, min_value=0.0, max_value=100.0)"
},
"scavenge_after_kindle": {
"__type": "<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>",
"repr": "EcomaxParameter(device=EcoMAX, description=EcomaxParameterDescription(name='scavenge_after_kindle', cls=<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>, multiplier=1, offset=0), value=50.0, min_value=1.0, max_value=200.0)"
},
"airflow_power_after_kindle": {
"__type": "<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>",
"repr": "EcomaxParameter(device=EcoMAX, description=EcomaxParameterDescription(name='airflow_power_after_kindle', cls=<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>, multiplier=1, offset=0), value=26.0, min_value=19.0, max_value=35.0)"
},
"supervision_time": {
"__type": "<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>",
"repr": "EcomaxParameter(device=EcoMAX, description=EcomaxParameterDescription(name='supervision_time', cls=<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>, multiplier=1, offset=0), value=5.0, min_value=0.0, max_value=60.0)"
},
"supervision_cycle_duration": {
"__type": "<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>",
"repr": "EcomaxParameter(device=EcoMAX, description=EcomaxParameterDescription(name='supervision_cycle_duration', cls=<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>, multiplier=1, offset=0), value=40.0, min_value=1.0, max_value=250.0)"
},
"airflow_power_supervision": {
"__type": "<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>",
"repr": "EcomaxParameter(device=EcoMAX, description=EcomaxParameterDescription(name='airflow_power_supervision', cls=<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>, multiplier=1, offset=0), value=22.0, min_value=19.0, max_value=100.0)"
},
"max_extinguish_time": {
"__type": "<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>",
"repr": "EcomaxParameter(device=EcoMAX, description=EcomaxParameterDescription(name='max_extinguish_time', cls=<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>, multiplier=1, offset=0), value=12.0, min_value=1.0, max_value=60.0)"
},
"min_extinguish_time": {
"__type": "<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>",
"repr": "EcomaxParameter(device=EcoMAX, description=EcomaxParameterDescription(name='min_extinguish_time', cls=<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>, multiplier=1, offset=0), value=4.0, min_value=1.0, max_value=60.0)"
},
"airflow_power_extinguish": {
"__type": "<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>",
"repr": "EcomaxParameter(device=EcoMAX, description=EcomaxParameterDescription(name='airflow_power_extinguish', cls=<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>, multiplier=1, offset=0), value=80.0, min_value=19.0, max_value=100.0)"
},
"airflow_work_extinguish": {
"__type": "<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>",
"repr": "EcomaxParameter(device=EcoMAX, description=EcomaxParameterDescription(name='airflow_work_extinguish', cls=<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>, multiplier=1, offset=0), value=40.0, min_value=1.0, max_value=100.0)"
},
"airflow_brake_extinguish": {
"__type": "<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>",
"repr": "EcomaxParameter(device=EcoMAX, description=EcomaxParameterDescription(name='airflow_brake_extinguish', cls=<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>, multiplier=1, offset=0), value=15.0, min_value=10.0, max_value=250.0)"
},
"scavenge_start_extinguish": {
"__type": "<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>",
"repr": "EcomaxParameter(device=EcoMAX, description=EcomaxParameterDescription(name='scavenge_start_extinguish', cls=<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>, multiplier=1, offset=0), value=10.0, min_value=1.0, max_value=100.0)"
},
"scavenge_stop_extinguish": {
"__type": "<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>",
"repr": "EcomaxParameter(device=EcoMAX, description=EcomaxParameterDescription(name='scavenge_stop_extinguish', cls=<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>, multiplier=1, offset=0), value=5.0, min_value=1.0, max_value=100.0)"
},
"clean_begin_time": {
"__type": "<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>",
"repr": "EcomaxParameter(device=EcoMAX, description=EcomaxParameterDescription(name='clean_begin_time', cls=<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>, multiplier=1, offset=0), value=10.0, min_value=10.0, max_value=250.0)"
},
"extinguish_clean_time": {
"__type": "<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>",
"repr": "EcomaxParameter(device=EcoMAX, description=EcomaxParameterDescription(name='extinguish_clean_time', cls=<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>, multiplier=1, offset=0), value=2.0, min_value=1.0, max_value=30.0)"
},
"airflow_power_clean": {
"__type": "<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>",
"repr": "EcomaxParameter(device=EcoMAX, description=EcomaxParameterDescription(name='airflow_power_clean', cls=<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>, multiplier=1, offset=0), value=100.0, min_value=19.0, max_value=100.0)"
},
"warming_up_brake_time": {
"__type": "<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>",
"repr": "EcomaxParameter(device=EcoMAX, description=EcomaxParameterDescription(name='warming_up_brake_time', cls=<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>, multiplier=1, offset=0), value=24.0, min_value=1.0, max_value=250.0)"
},
"fuel_flow_kg_h": {
"__type": "<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>",
"repr": "EcomaxParameter(device=EcoMAX, description=EcomaxParameterDescription(name='fuel_flow_kg_h', cls=<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>, multiplier=10, offset=0), value=5.3, min_value=0.1, max_value=25.0)"
},
"fuel_factor": {
"__type": "<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>",
"repr": "EcomaxParameter(device=EcoMAX, description=EcomaxParameterDescription(name='fuel_factor', cls=<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>, multiplier=1, offset=0), value=2.0, min_value=1.0, max_value=100.0)"
},
"fuel_calorific_value_kwh_kg": {
"__type": "<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>",
"repr": "EcomaxParameter(device=EcoMAX, description=EcomaxParameterDescription(name='fuel_calorific_value_kwh_kg', cls=<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>, multiplier=10, offset=0), value=5.2, min_value=0.1, max_value=25.0)"
},
"fuel_detection_time": {
"__type": "<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>",
"repr": "EcomaxParameter(device=EcoMAX, description=EcomaxParameterDescription(name='fuel_detection_time', cls=<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>, multiplier=1, offset=0), value=1.0, min_value=0.0, max_value=5.0)"
},
"heating_target_temp": {
"__type": "<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>",
"repr": "EcomaxParameter(device=EcoMAX, description=EcomaxParameterDescription(name='heating_target_temp', cls=<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>, multiplier=1, offset=0), value=70.0, min_value=36.0, max_value=85.0)"
},
"min_heating_target_temp": {
"__type": "<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>",
"repr": "EcomaxParameter(device=EcoMAX, description=EcomaxParameterDescription(name='min_heating_target_temp', cls=<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>, multiplier=1, offset=0), value=36.0, min_value=30.0, max_value=80.0)"
},
"max_heating_target_temp": {
"__type": "<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>",
"repr": "EcomaxParameter(device=EcoMAX, description=EcomaxParameterDescription(name='max_heating_target_temp', cls=<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>, multiplier=1, offset=0), value=85.0, min_value=30.0, max_value=90.0)"
},
"heating_pump_on_temp": {
"__type": "<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>",
"repr": "EcomaxParameter(device=EcoMAX, description=EcomaxParameterDescription(name='heating_pump_on_temp', cls=<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>, multiplier=1, offset=0), value=40.0, min_value=30.0, max_value=80.0)"
},
"pause_heating_for_water_heater": {
"__type": "<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>",
"repr": "EcomaxParameter(device=EcoMAX, description=EcomaxParameterDescription(name='pause_heating_for_water_heater', cls=<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>, multiplier=1, offset=0), value=0.0, min_value=0.0, max_value=99.0)"
},
"increase_heating_temp_for_water_heater": {
"__type": "<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>",
"repr": "EcomaxParameter(device=EcoMAX, description=EcomaxParameterDescription(name='increase_heating_temp_for_water_heater', cls=<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>, multiplier=1, offset=0), value=5.0, min_value=3.0, max_value=15.0)"
},
"term_boiler_mode": {
"__type": "<class 'pyplumio.structures.ecomax_parameters.EcomaxBinaryParameter'>",
"repr": "EcomaxBinaryParameter(device=EcoMAX, description=EcomaxParameterDescription(name='term_boiler_mode', cls=<class 'pyplumio.structures.ecomax_parameters.EcomaxBinaryParameter'>, multiplier=1, offset=0), value=off, min_value=off, max_value=on)"
},
"boiler_alert_temp": {
"__type": "<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>",
"repr": "EcomaxParameter(device=EcoMAX, description=EcomaxParameterDescription(name='boiler_alert_temp', cls=<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>, multiplier=1, offset=0), value=90.0, min_value=85.0, max_value=95.0)"
},
"max_feeder_temp": {
"__type": "<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>",
"repr": "EcomaxParameter(device=EcoMAX, description=EcomaxParameterDescription(name='max_feeder_temp', cls=<class 'pyplumio.structures.ecomax_parameters.EcomaxParameter'>, multiplier=1, offset=0), value=60.0, min_value=40.0, max_value=90.0)"
},
"ecomax_parameters": true,
"thermostat_profile": null,
"thermostat_parameters": false,
"thermostat_parameters_decoder": true,
"password": "**REDACTED**",
"frame_errors": [],
"loaded": true,
"regdata": {
"1792": 2,
"1536": true,
"1538": false,
"1542": false,
"1541": true,
"5": false,
"3": false,
"1543": false,
"1544": false,
"1545": false,
"1546": false,
"1547": false,
"1548": false,
"1549": false,
"2": false,
"6": false,
"1024": 60.751739501953125,
"1027": -246.8609619140625,
"1026": 26.1065673828125,
"26": 100.0,
"1025": -195.74267578125,
"29": 0.0,
"1028": 0.0,
"1032": 0.0,
"1031": 0.0,
"1029": 0.0,
"25": 0.0,
"27": 0.0,
"1280": 70,
"1283": 0,
"1282": 0,
"1287": 40,
"1281": 45,
"1288": 40,
"2048": 0
}
}
}
}
### Code of Conduct
- [X] I agree to follow this project's Code of Conduct