Project delivers MQTT gateway for EQ-3 Max! heating control system.
- LAN Gateway
- wall thermostat
- radiator thermostat (thermostatic head)
- window shutter
Application pushes informations to MQTT broker in following format:
[mqtt_prefix]/[room_name]/[device_name]/[parameter]
Where parameter can be (depends on device type):
LinkFail -> True/False
BatteryOK -> True/False
Mode -> value depends on device type
Mode -> AUTO/BOOST/MANUAL/VACATION
ActualTemperature -> float current temperature
TargetTemperature -> float requested temperature
ValvePosition -> int percent of valve open
Mode -> 0 - closed, 2 - open
Change request must be published to this topic:
[mqtt_prefix]/[room_name]/[device_name]/[parameter]/set
Where parameter:
- Mode -> can be AUTO/BOOST/MANUAL/VACATION
- TargetTemperature -> float temperature (degree celsius)
- reporting parameters from components:
- mode
- target temperature
- actual temperature (if known)
- valve position (for thermostats)
- battery and link status
- duty cycle and free memory slots for cube
- setting target temperature
- setting thermostatic head mode
- maintaning set temperature (sometimes system behaves strangely, and set temperatures on its own, application can reset it to default values)
Whole configuration is located in config.json file.
{
"mqtt_host": "your.mqtt.broker.host",
"mqtt_port": 1883,
"mqtt_prefix": "/data/MaxCube",
"mqtt_message_timeout": 60,
"max_cube_ip_adress": "172.22.0.1",
"max_topology_refresh_interval": 60,
"max_mqtt_update_intervals": 300,
"max_cube_duty_cycle_reset_interval": 3600,
"max_perform_sanity_check" : true
}
config param | meaning |
---|---|
mqtt_host | MQTT broker host |
mqtt_port | MQTT broker port |
mqtt_prefix | prefix for publish and subscribe topic |
mqtt_message_timeout | timeout for dropping obsolete messages from send queue |
max_cube_ip | LAN gateway IP address |
max_topology_refresh_interval | Interval of refreshing data from Max! system |
max_mqtt_update_interval | Interval of refreshing parameters (even if they not change) in MQTT. In the same time topology of your Max! network is dumped to file topology.json and sanity check is performed. |
max_cube_duty_cycle_reset_interval | Time after duty_cycle counter is reset (since last operation) |
max_perform_sanity_check | Enabling sanity check |
##References
- MaxCube library (little modified) https://github.com/goodfield/python-maxcube-api
- MaxCube protocol research https://github.com/Bouni/max-cube-protocol
- Max! binding for OpenHab2 https://github.com/openhab/openhab2-addons/tree/master/addons/binding/org.openhab.binding.max/src/main/java/org/openhab/binding/max