When using blocking setter, you will get the result represented by the boolean value. True if write was successful, False otherwise.

result = await ecomax.set("heating_target_temp", 65)
if result:
    print("Heating target temperature was successfully set.")
    print("Error while trying to set heating target temperature.")

You can’t access result, when using non-blocking setter as task is done in the background. You will, however, still get error message in the log in case of failure.

ecomax.set_nowait("heating_target_temp", 65)


It’s possible to get the Parameter object and then modify it using it’s own setter methods. When using the parameter object, you don’t need to pass the parameter name.

from pyplumio.helpers.parameter import Parameter

ecomax = await conn.get("ecomax")
heating_target: Parameter = ecomax.get("heating_target_temp")
result = heating_target.set(65)

Each parameter has a range of allowed values. PyPlumIO will raise ValueError if value is not within the acceptable range.

You can check allowed range by reading min_value and max_value properties of the parameter object. Both values are inclusive.

ecomax = await connection.get("ecomax")
target_temp = await ecomax.get("heating_target_temp")
print(target_temp.min_value)  # Minimum allowed target temperature.
print(target_temp.max_value)  # Maximum allowed target temperature.

Binary Parameters

For binary parameters, you can also use boolean True or False, string literals “on” or “off” or special turn_on() and turn_off() methods.

One such parameter is “ecomax_control” that allows you to switch the ecoMAX on or off.

# Set an ecomax_control parameter value to "on".
result = await ecomax.set("ecomax_control", "on")

If you want to use turn_on() method, you must first get a parameter object.

# Get an ecomax_control parameter and turn it on.
ecomax_control = await ecomax.get("ecomax_control")
result = await ecomax_control.turn_on()

If you simply want to turn on or off the ecoMAX controller there’s, handy shortcut built-in the controller object itself.

# Turn on the controller.
await ecomax.turn_on()

# Turn off the controller.
await ecomax.turn_off()

Writing Examples

The following example opens the connection, enables the controller without waiting for result and tries to set a target temperature, outputting result to the terminal.

import asyncio

import pyplumio

async def main():
    """Turn on the controller and set target temperature."""
    async with pyplumio.open_tcp_connection("localhost", 8899) as conn:
        # Get the ecoMAX device.
        ecomax = await conn.get("ecomax")

        # Turn on controller without waiting for the result.

        # Set heating temperature to 65 degrees.
        result = await ecomax.set("heating_target_temp", 65)
        if result:
            print("Heating temperature is set to 65.")
            print("Couldn't set heating temperature.")