Frames
StopMaster
Stop the ecoMAX controller transmission.
Request
- FrameType.REQUEST_STOP_MASTER = 24
StartMaster
Start the ecoMAX controller transmission.
Request
- FrameType.REQUEST_START_MASTER = 25
CheckDevice
Check if device is available. This frame is being broadcasted by the ecoMAX controller to all connected devices.
The response to this request can contain the network parameters as represented by the following dataclass:
- class pyplumio.structures.network_info.NetworkInfo(*, ethernet: EthernetParameters = <factory>, wireless: WirelessParameters = <factory>, server_status: bool = False)
Represents a network parameters.
Request
- FrameType.REQUEST_CHECK_DEVICE = 48
Response
- FrameType.RESPONSE_DEVICE_AVAILABLE = 176
Name |
Description |
|---|---|
network |
Contains network parameters. |
EcomaxParameters
Get the ecoMAX controller editable parameters. Each parameter is represented by a tuple containing parameter index and parameter values represented by the following dataclass:
- class pyplumio.parameters.ParameterValues(value: int, min_value: int, max_value: int)
Represents a parameter values.
Request
- FrameType.REQUEST_ECOMAX_PARAMETERS = 49
Name |
Description |
Default |
|---|---|---|
start |
Parameter index to start on. |
0 |
count |
Number of parameters to request. |
255 |
Response
- FrameType.RESPONSE_ECOMAX_PARAMETERS = 177
Name |
Description |
|---|---|
ecomax_parameters |
Contains a list of ecomax parameters. |
Handler
- class pyplumio.structures.ecomax_parameters.EcomaxParametersStructure(frame: Frame)
Represents an ecoMAX parameters structure.
EcomaxServiceParameters
Get the ecoMAX controller editable parameters from the service parameter table. Newer controllers, such as ecoMAX 860P4-NM TOUCH, keep part of their settings only in this table.
PyPlumIO requests this table only if the controller announces frame type 97 in the frame version table, and requests it again each time its version changes.
Parameters are represented in the same way as in EcomaxParameters.
Raw parameters are available under the ecomax_service_parameters key.
Parameters with known meaning are also available by name for verified
products only.
Request
- FrameType.REQUEST_ECOMAX_SERVICE_PARAMETERS = 97
Name |
Description |
Default |
|---|---|---|
start |
Parameter index to start on. |
0 |
count |
Number of parameters to request. |
255 |
Response
- FrameType.RESPONSE_ECOMAX_SERVICE_PARAMETERS = 225
Name |
Description |
|---|---|
ecomax_service_parameters |
Contains a list of ecomax service parameters. |
Handler
- class pyplumio.structures.ecomax_service_parameters.EcomaxServiceParametersStructure(frame: Frame)
Represents an ecoMAX service parameters structure.
MixerParameters
Get the editable parameters for each connected mixer.
Request
- FrameType.REQUEST_MIXER_PARAMETERS = 50
Name |
Description |
Default |
|---|---|---|
device_index |
Mixer index. |
|
start |
Parameter index to start on. |
0 |
count |
Number of parameters to request. |
255 |
Response
- FrameType.RESPONSE_MIXER_PARAMETERS = 178
Name |
Description |
|---|---|
mixer_parameters |
Contains a list of parameters for each connected mixer. |
Handler
- class pyplumio.structures.mixer_parameters.MixerParametersStructure(frame: Frame)
Represents a mixer parameters data structure.
SetEcomaxParameter
Set the editable parameter value.
Request
- FrameType.REQUEST_SET_ECOMAX_PARAMETER = 51
Name |
Description |
Default |
|---|---|---|
index |
Parameter index. |
|
value |
Value to set parameter to. |
Response
- FrameType.RESPONSE_SET_ECOMAX_PARAMETER = 179
SetEcomaxServiceParameter
Set the editable parameter value in the service parameter table.
The message is the number of values, the index of the first parameter and
the new raw values for consecutive indexes. In a panel capture, a single
write was 01 <index> <value> and one frame 05 3b 47 16 1e 0a 46 set
indexes 0x3b to 0x3f to 71, 22, 30, 10 and 70. PyPlumIO always sets one
parameter per frame.
In captures, after every panel write the controller increased the frame type 97 version in the regulator data frame version table within 1-3 seconds (6, 7, 8, 9, 10, 11 for five writes), so PyPlumIO re-reads the service parameter table and confirms the set from it.
Request
- FrameType.REQUEST_SET_ECOMAX_SERVICE_PARAMETER = 112
Name |
Description |
Default |
|---|---|---|
index |
Parameter index. |
|
value |
Value to set parameter to. |
Response
- FrameType.RESPONSE_SET_ECOMAX_SERVICE_PARAMETER = 240
SetMixerParameter
Set the editable parameter for the connected mixer.
Request
- FrameType.REQUEST_SET_MIXER_PARAMETER = 52
Name |
Description |
Default |
|---|---|---|
device_index |
Mixer index. |
|
index |
Parameter index. |
|
value |
Value to set parameter to. |
Response
- FrameType.RESPONSE_SET_MIXER_PARAMETER = 180
Schedules
Get the list of schedules from the ecoMAX controller. This doesn’t include schedules from thermostat (ecoSTER) devices.
Request
- FrameType.REQUEST_SCHEDULES = 54
Response
- FrameType.RESPONSE_SCHEDULES = 182
Name |
Description |
|---|---|
schedules |
Contains a list of schedules. |
schedule_parameters |
Contains a list of schedule parameters. |
Handler
- class pyplumio.structures.schedules.SchedulesStructure(frame: Frame)
Represents a schedule data structure.
SetSchedule
Set the schedule on the ecoMAX controller. All schedules must be passed with this request all at once, even unchanged ones.
Request
- FrameType.REQUEST_SET_SCHEDULE = 55
Name |
Description |
Default |
|---|---|---|
data |
List of schedule data. |
|
switch |
List of values for a schedule switches (on/off). |
|
parameter |
List of values for a schedule parameters |
UID
Get the device identification as presented in the following dataclass:
- class pyplumio.structures.product_info.ProductInfo(*, type: ProductType, id: int, uid: str, logo: int, image: int, model: str)
Represents a product info provided by an UID response.
Request
- FrameType.REQUEST_UID = 57
Response
- FrameType.RESPONSE_UID = 185
Name |
Description |
|---|---|
product_info |
Contains a product info. |
Handler
- class pyplumio.structures.product_info.ProductInfoStructure(frame: Frame)
Represents a product info data structure.
Password
Get the device service password.
Request
- FrameType.REQUEST_PASSWORD = 58
Response
- FrameType.RESPONSE_PASSWORD = 186
Name |
Description |
|---|---|
password |
Contains a device service password. |
EcomaxControl
Turns the ecoMAX controller on or off.
Request
- FrameType.REQUEST_ECOMAX_CONTROL = 59
Name |
Description |
Default |
|---|---|---|
value |
Value that describes wanted state. 0 - off, 1 - on |
Response
- FrameType.RESPONSE_ECOMAX_CONTROL = 187
Alerts
Get the list of device alerts, each is represented by the following dataclass:
- class pyplumio.structures.alerts.Alert(code: int, from_dt: datetime, to_dt: datetime | None)
Represents a device alert.
Request
- FrameType.REQUEST_ALERTS = 61
Name |
Description |
Default |
|---|---|---|
start |
Index to start on. |
0 |
count |
Number of alerts to request. |
10 |
Response
- FrameType.RESPONSE_ALERTS = 189
Name |
Description |
|---|---|
alerts |
Contains a list of alerts. |
Handler
- class pyplumio.structures.alerts.AlertsStructure(frame: Frame)
Represents an alerts data structure.
ProgramVersion
Get the software version, represented by the following dataclass:
- class pyplumio.structures.program_version.VersionInfo(software: str = '0.7.6', struct_tag: bytes = b'\xff\xff', struct_version: int = 5, device_id: bytes = b'z\x00', processor_signature: bytes = b'\x00\x00\x00')
Represents a version info provided in program version response.
It is broadcasted by the ecoMAX controller to all connected devices.
Request
- FrameType.REQUEST_PROGRAM_VERSION = 64
Response
- FrameType.RESPONSE_PROGRAM_VERSION = 192
Name |
Description |
|---|---|
version_info |
Contains software version. |
Handler
- class pyplumio.structures.program_version.ProgramVersionStructure(frame: Frame)
Represents a program version data structure.
RegulatorDataSchema
Get the regulator data schema, that describes the data type of RegulatorData message.
It’s represented by dictionary, that’s indexed by regulator data field id and a member of the following DataType class, that defines the regulator data field type.
- class pyplumio.data_types.DataType(value: T | None = None)
Represents a data type.
Request
- FrameType.REQUEST_REGULATOR_DATA_SCHEMA = 85
Response
- FrameType.RESPONSE_REGULATOR_DATA_SCHEMA = 213
Name |
Description |
|---|---|
regdata_schema |
Contains regulator data schema. |
Handler
- class pyplumio.structures.regulator_data_schema.RegulatorDataSchemaStructure(frame: Frame)
Represents a regulator data schema structure.
ThermostatParameters
Request
- FrameType.REQUEST_THERMOSTAT_PARAMETERS = 92
Name |
Description |
Default |
|---|---|---|
device_index |
Mixer index. |
|
start |
Parameter index to start on. |
0 |
count |
Number of parameters to request. |
255 |
Response
- FrameType.RESPONSE_THERMOSTAT_PARAMETERS = 220
Name |
Description |
|---|---|
thermostat_profile |
Contains current thermostat profile or None. |
thermostat_parameters |
Contains list of thermostat parameters. |
Handler
- class pyplumio.structures.thermostat_parameters.ThermostatParametersStructure(frame: Frame)
Represents a thermostat parameters data structure.
SetThermostatParameter
Set the editable parameter for the connected thermostat.
Request
- FrameType.REQUEST_SET_THERMOSTAT_PARAMETER = 93
Name |
Description |
Default |
|---|---|---|
offset |
Parameter offset. (nthermostat * nparameters per thermostat ) |
|
index |
Parameter index. |
|
value |
Value to set parameter to. |
Response
- FrameType.RESPONSE_SET_THERMOSTAT_PARAMETER = 221
RegulatorData
Special message that is broadcasted by the ecoMAX controller at regular interval. It contains all controller’s data indexed by numerical keys.
As this is broadcasted message, there’s no need to send a request, but in order to be decoded, RegulatorDataSchema request must be send to obtain the schema.
Message
- FrameType.MESSAGE_REGULATOR_DATA = 8
Name |
Description |
|---|---|
regdata |
Contains regulator data indexed by numerical keys. |
Handler
- class pyplumio.structures.frame_versions.FrameVersionsStructure(frame: Frame)
Represents a frame version data structure.
- class pyplumio.structures.regulator_data.RegulatorDataStructure(frame: Frame)
Represents a regulator data structure.
SensorData
Special message that is being send by the ecoMAX controller as result of responding to CheckDevice request.
Unlike RegulatorData, it’s structure is predetermined and consistent across all ecoMAX controllers and thus can be decoded without schema. However, it only contains common sensors and lacks controller-specific sensors.
Note
Some of the attributes listed below, might be unsupported by your ecoMAX controller.
Message
- FrameType.MESSAGE_SENSOR_DATA = 53
Name |
Description |
|---|---|
fan |
Blower fan status. |
feeder |
Feeder status. |
heating_pump |
Heating pump status. |
water_heater_pump |
Water heater pump status. |
circulation_pump |
Hot water recirculation pump status. |
lighter |
Lighter status. |
alarm |
Alarm status. |
outer_boiler |
Outer boiler status. |
fan2_exhaust |
Exhaust fan status. |
feeder2 |
Secondary feeder status. |
outer_feeder |
Outer feeder status. |
solar_pump |
Solar pump status. |
fireplace_pump |
Fireplace pump status. |
heating_pump_flag |
Indicates whether heating pump is connected. |
water_heater_pump_flag |
Indicates whether water heater pump is connected. |
circulation_pump_flag |
Indicates whether hot water recirculation pump is connected. |
solar_pump_flag |
Indicates whether solar pump is connected. |
heating_temp |
Heating temperature. |
feeder_temp |
Feeder temperature. |
water_heater_temp |
Water heater temperature. |
outside_temp |
Outside temperature. |
return_temp |
Return feedwater temperature. |
exhaust_temp |
Exhaust fumes temperature. |
optical_temp |
Flame intensity in percent. |
upper_buffer_temp |
Upper buffer temperature. |
lower_buffer_temp |
Lower buffer temperature. |
upper_solar_temp |
Upper solar buffer temperature. |
lower_solar_temp |
Lower solar buffer temperature. |
fireplace_temp |
Fireplace temperature. |
heating_target |
Heating target temperature. |
heating_status |
Heating status. |
water_heater_target |
Water heater target temperature. |
water_heater_status |
Water heater status. |
pending_alerts |
Number of pending alerts. |
fuel_level |
Current fuel level in percent. |
fan_power |
Current fan power in percent. |
boiler_load |
Boiler load (power) in percent. |
boiler_power |
Boiler power in kWh. |
fuel_consumption |
Current fuel consumption in kg/h. |
modules |
Dataclass containing versions of the connected modules. |
lambda_state |
Current lambda sensor state. |
lambda_target |
Lambda sensor target. |
lambda_level |
Lambda sensor level. |
thermostat_sensor |
Thermostat sensors. |
thermsotats_available |
Number of thermostats supported by your controller. |
thermostats_connected |
Number of thermostats currently connected to your controller. |
mixer_sensor |
Mixer sensors. |
mixers_available |
Number of mixers supported by your controller. |
mixers_connected |
Number of mixers currently connected to your controller. |
Handlers
- class pyplumio.structures.frame_versions.FrameVersionsStructure(frame: Frame)
Represents a frame version data structure.
- class pyplumio.structures.sensor_data.SensorDataStructure(frame: Frame)
Represents a sensor data structure.