albertogeniola / MerossIot

Async Python library for controlling Meross devices
https://albertogeniola.github.io/MerossIot/
MIT License
478 stars 88 forks source link

MTS200 floor sensor settings #283

Closed ikoz closed 1 year ago

ikoz commented 1 year ago

MTS200 can have a floor sensor probe attached to it, for controlling electric underfloor heating. The great thing about it is that you can configure, through the meross app, two very important things:

  1. Maximum floor temperature: This is used for overheating protection - some floors should not exceed a specific floor temperature, no matter what the air temperature is. This can be set in the meross app but unfortunatelly not through the integration yet. This is controlled using Appliance.Control.Thermostat.Overheat GET {"overheat":[{"channel":0}]}}' retrieves the status which looks like this: {'overheat': [{'warning': 0, 'value': 335, 'onoff': 1, 'min': 200, 'max': 700, 'lmTime': 1674121910, 'currentTemp': 355, 'channel': 0}]}} Here currentTemp is the floor sensor temperature while value is the configured limit.

Overheating protection can be turned on and off using this:

SET Appliance.Control.Thermostat.Overheat: {"overheat":[{"channel":0,"onoff":0}]}} to turn off overheat protection for channel 0 SET Appliance.Control.Thermostat.Overheat: {"overheat":[{"channel":0,"onoff":1,"value":335}]} to turn on overheat protection at 33.5 C

  1. You can change the sensor used by the thermostat: By default, the MTS200 uses its internal air temperature sensor to control the temperature and reports that. However there is a setting to switch to using the floor sensor temperature. This is very important for my use case, and quite common: The thermostat is fixed outside a bathroom but the heated floor is inside the bathroom. You want to control the temperature of the floor, not the temperature of the corridor outside the bathroom .

This is controlled using this message SET Appliance.Control.Thermostat.Sensor: {'sensor': [{'channel': 0, 'mode': 1}]} to read the mode: GET Appliance.Control.Thermostat.Sensor: {'sensor': [{'channel': 0}]}

mode 0 means "air sensor for thermostat control and floor sensor for overheating protection" while mode 1 means "floor sensor for thermostat control and no overheating protection"

There's also more settings that seem interesting and would be great to support:

    "Appliance.Control.Thermostat.Calibration": {},
    "Appliance.Control.Thermostat.DeadZone": {},
    "Appliance.Control.Thermostat.Frost": {},
    "Appliance.Control.Screen.Brightness": {},

Screen brightness has two controls, 'operation mode' and 'standby mode'. In both cases the device only sets 12.5% increments (8 steps) using this (example for operation 12.5% (step1) and standby 0% (step0)

SET Appliance.Control.Screen.Brightness: {'brightness': [{'channel': 0, 'operation': 12.5, 'standby': 0.0}]}
stale[bot] commented 1 year ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.