All topics are prefixed with the Base
, which is defaulted to ems-esp
and forms path of the path.
When MQTT is enabled EMS-ESP will publish MQTT topics for each device. The frequency can be configured from the Web UI to be either sent when data changes or set to a specific period in seconds. A few important points
- When a value is a boolean it will be rendered according to the Boolean setting you have defined in the settings.
- The format is the MQTT Format as defined in the settings. Default format is
Nested
which uses a single topic to show multiple entries in the payload. FormatSingle
will send each group as single payloads on multiple topics.Home Assistant
will send additional config topics so HA can pick up the values automatically.
The table below list the topics being published:
Topic | Format | Description | Payload Example |
---|---|---|---|
status |
n/a | this is the MQTT will and testament messages | online or offline |
info |
n/a | for events | {"event":"start","version":"2.1.0","ip":"10.10.10.140"} |
heartbeat |
all | system stats in JSON, every minute | {"status":"connected","rssi":90,"uptime":"000+11:48:02.367","uptime_sec":42482,"mqttfails":2,"txfails":0,"rxfails":3,"freemem":68,"fragmem":17} |
tapwater_active |
all | boolean to show if the hot tap water is running (DHW) | |
heating_active |
all | boolean to show if the heating is on | |
boiler_data |
all | non warm water data from the Boiler device | {"heatingActive":"off","tapwaterActive":"off","selFlowTemp":0,"selBurnPow":23,"curBurnPow":0,"pumpMod":0,"curFlowTemp":35.1,"retTemp":35.5,"sysPress":1.6,"boilTemp":36.3,"burnGas":"off","flameCurr":0,"heatPump":"off","fanWork":"off","ignWork":"off","heatingActivated":"on","heatingTemp":75,"pumpModMax":90,"pumpModMin":55,"pumpDelay":1,"burnMinPeriod":10,"burnMinPower":0,"burnMaxPower":75,"boilHystOn":-6,"boilHystOff":6,"UBAuptime":4007616,"burnStarts":275144,"burnWorkMin":436129,"heatWorkMin":349044,"serviceCode":"0A","serviceCodeNumber":305} |
boiler_data_ww |
all | warm water data from the Boiler device | {"wWComfort":"Hot","wWSelTemp":60,"wWSetTemp":62,"wWDisinfectionTemp":70,"wWType":"flow","wWChargeType":"3-way valve","wWCircPump":"off","wWCircPumpMode":"0x3min","wWCirc":"off","wWCurTemp":32.4,"wWCurFlow":0,"wwStorageTemp1":32.4,"wWActivated":"on","wWOneTime":"off","wWDisinfecting":"off","wWCharging":"off","wWRecharging":"on","wWTempOK":"on","wWActive":"off","wWHeat":"on","wWStarts":246432,"wWWorkM":87085} |
boiler_data_info |
all | information data from the Boiler device | {"nrgConsTotal":10,"auxElecHeatNrgConsTotal":10,"auxElecHeatNrgConsHeating":10,"auxElecHeatNrgConsDHW":10} |
thermostat_data |
nested | data from the thermostat and for each of its Heating Circuits. | { "datetime":"09:03:2000 07:47", "display":"int. temperature", "language":"French", "building":"medium", "MinExtTemperature":-10, "CalIntTemperature":0, "clockOffset":3, "hc1":{"seltemp":15, "currtemp":20.6, "mode":"auto"}, "hc2":{"seltemp":8, "currtemp":18.2, "mode":"off"}} |
thermostat_data |
single | In single format each heating circuit is published with own topic | {"datetime":"09:03:2000 07:47", "display":"int. temperature", "building":"medium", "MinExtTemperature":-10, "CalIntTemperature":0} |
thermostat_data_hc<id> |
single | hc in single format | {"seltemp":15, "currtemp":20.6, "mode":"auto"} |
mixer_data |
nested | data from The Mixer with nests hc1 to hc4 and wwc1 , wwc2 |
{"hc1": {"flowTemp":55, "pumpStatus":"on", "valveStatus":25}} |
mixer_data_hc<id> mixer_data_wwc<id> |
single | data from The Mixer in single format for each of its Heating Circuits where <id> is circuit number |
{"type":"hc", "flowTemp":55, "pumpStatus":"on", "valveStatus":55} |
shower_data |
the shower timer and alert toggles plus the duration of the last shower taken | {"timer":"0","alert":"0","duration":"4 minutes 32 seconds"} |
|
solar_data |
all | all data from the Solar Module (if connected) | { "collectorTemp": 15.8, "tankBottomTemp": 29.8, "solarPumpModulation": 0, "cylinderPumpModulation": 0, "solarPump": "off", "valveStatus": "off", "tankHeated": "off", "collectorShutdown": "off", "energyLastHour": 0, "energyToday": 1792, "energyTotal": 2784.7 } |
dallassensor_data |
nested | temperature readings from any external Dallas sensors attached to the ESP | {"sensor1": {"id":"28-FF47-AC90-1604", "temp":20.94}} |
dallassensor_data |
single | temperature readings from Dallas sensor in single format with unique sensor id | {"28-FF47-AC90-1604":20.94} |
The key's and their description:
heatingActive
= Heating activetapwaterActive
= Warm water/DHW activeserviceCode
= Service CodeserviceCodeNumber
= Service code numberwWSelTemp
= Warm water selected temperaturewWSetTemp
= Warm water set temperaturewWDisinfectionTemp
= Warm water disinfection temperatureselFlowTemp
= Selected flow temperatureselBurnPow
= Burner selected max powercurBurnPow
= Burner current powerheatingPumpMod
= Heating pump modulationpumpMod2
= Heating pump modulationwWType
= Warm water typewWChargeType
= Warm water charging typewWCircPump
= Warm water circulation pump availablewWCircMode
= Warm water circulation pump freqwWCirc
= Warm water circulation activeoutdoorTemp
= Outside temperaturewWCurTemp
= Warm water current temperature (intern)wWCurTemp2
= Warm water current temperature (extern)wWCurFlow
= Warm water current tap water flowcurFlowTemp
= Current flow temperature = current flow temperature of water leaving the boilerretTemp
= Return temperatureswitchTemp
= Mixer switch temperaturesysPress
= System pressureboilTemp
= Max boiler temperaturewwStorageTemp1
= Warm water storage temperature (intern)wwStorageTemp2
= Warm water storage temperature (extern)exhaustTemp
= Exhaust temperaturewWActivated
= Warm water activatedwWOneTime
= Warm water one time chargingwWDisinfecting
= Warm water disinfectingwWCharging
= Warm water chargingwWRecharging
= Warm water rechargingwWTempOK
= Warm water temperature okwWActive
= Warm water activeburnGas
= GasflameCurr
= Flame currentheatingPump
= Heating pumpfanWork
= FanignWork
= IgnitionwWHeat
= Warm water heatingheatingActivated
= Heating activatedheatingTemp
= Heating temperature setting on the boilerpumpModMax
= Boiler circuit pump modulation max powerpumpModMin
= Boiler circuit pump modulation min powerpumpDelay
= Boiler circuit pump delay timeburnMinPeriod
= Boiler burner min periodburnMinPower
= Boiler burner min powerburnMaxPower
= Boiler burner max powerboilHystOn
= Boiler temperature hysteresis onboilHystOff
= Boiler temperature hysteresis offsetFlowTemp
= Set Flow temperaturewWSetPumpPower
= Warm water pump set powermixerTemp
= Mixer temperaturetankMiddleTemp
= Tank Middle Temperature (TS3)wwBufferBoilerTemperature
= Warm water buffer boiler temperaturewWStarts
= Warm water # startswWWorkM
= Warm water active timesetBurnPow
= Boiler burner set powerburnStarts
= Burner # startsupTimeControl
= Operating time controlupTimeCompHeating
= Operating time compressor heatingupTimeCompCooling
= Operating time compressor coolingupTimeCompWw
= Operating time compressor warm waterheatingStarts
= Heating starts (control)coolingStarts
= Cooling starts (control)wWStarts2
= Warm water starts (control)nrgConsTotal
= Energy consumption totalauxElecHeatNrgConsTotal
= Auxiliary electrical heater energy consumption totalauxElecHeatNrgConsHeating
= Auxiliary electrical heater energy consumption heatingauxElecHeatNrgConsDHW
= Auxiliary electrical heater energy consumption DHWnrgConsCompTotal
= Energy consumption compressor totalnrgConsCompHeating
= Energy consumption compressor heatingnrgConsCompWw
= Energy consumption compressor warm waternrgConsCompCooling
= Energy consumption compressor totalnrgSuppTotal
= Energy supplied totalnrgSuppHeating
= Energy supplied heatingnrgSuppWw
= Energy supplied warm waternrgSuppCooling
= Energy supplied coolingmaintenanceMessage
= Code for maintenance H03-time, H08-date, etc.maintenance
= Type of scheduled maintenance Time in hours or date
collectorTemp
= Collector temperature (TS1)tankBottomTemp
= Tank bottom temperature (TS2)tank2BottomTemp
= Second Tank bottom temperature (TS5)heatExchangerTemp
= Heat exchanger temperature (TS6)solarPumpModulation
= Solar pump modulation (PS1)cylinderPumpModulation
= Cylinder pump modulation (PS5)pumpWorkTime
= Pump working time (min)pumpWorkTimeText
= Pump working time as TextenergyLastHour
= Energy last hourenergyToday
= Energy todayenergyTotal
= Energy totalsolarPump
= Solar Pump (PS1) activevalveStatus
= Valve statustankHeated
= Tank heatedcollectorShutdown
= solarPump shutdown when tankBottomTemp reached tankBottomMaxTemptankBottomMaxTemp
= Maximum tankBottomTemp temperature settingcollectorMaxTemp
= Maximum collector temperature settingcollectorMinTemp
= Minimum collector temperature setting
wWTemp
= Current warm water temperaturepumpStatus
= Current pump statustempStatus
= Current temperature statusflowTemp
= Current flow temperatureflowSetTemp
= Setpoint flow temperaturevalveStatus
= Valve position in %
airHumidity
= Relative air humiditydewTemperature
= Dew temperature point
datetime
= Date & Timedisplay
= Display (RC30 only)language
= Language (RC30 only)offsetclock
= Offset clock (RC30 only)brightness
= Display Brightness (RC30 only)backlight
= Keyboard lightning (RC30 only)mixingvalves
= Number of mixing valves (RC30 only)heatingpid
= PID setting (RC30 only)preheating
= Preheating in clock program (RC30 only)offtemp
= Temperature in mode "Off"dampedoutdoortemp
= Damped outdoor temperature = the thermostat damps changes to the actual outside temperature to mirror the thermal mass of the building. Building Type setting changes the time constant of the dampinginttemp1
= Temperature sensor 1inttemp2
= Temperature sensor 2intoffset
= Offset int. temperature sensorminexttemp
= Min ext. temperaturebuilding
= Building type (light,medium, heavy)wwmode
= Warm water modewwtemp
= Warm water upper temperaturewwtemplow
= Warm water lower temperaturewwextra1
= Onetime for circuit 1 startedwwcircmode
= Warm Water circulation modefloordry
= Floordrying startedfloordrytemp
= Temperature for floordrying
per thermostat heating circuit:
seltemp
= Setpoint room temperaturecurrtemp
= Current room temperatureheattemp
= Heat temperaturecomforttemp
= Comfort temperaturedaytemp
= Day temperatureecotemp
= Eco temperaturenighttemp
= Night temperaturemanualtemp
= Manual temperatureholidaytemp
= Holiday temperaturenofrosttemp
= Nofrost temperatureheatingtype
= underfloor, radiator etc.targetflowtemp
= Target flow temperature = flow temperature calculated by the thermostat as required to get the target room temperature given current conditions (usually a combination of heat curve and external temp and, possibly, current room temp)offsettemp
= Offset temperature, heating curve at roomtemperaturedesigntemp
= Design temperature, heating curve at minexttemproominfluence
= Influence of roomtemperature in outdoorcontrolled circuitsflowtempoffset
= Offset for boiler in mixed circuitsminflowtemp
= Flowtemperature lower limitmaxflowtemp
= Flowtemperature upper limitsummertemp
= Summer temperaturesummermode
= Summer modereducemode
= How temperature is set in night/eco mode:program
= timer program selectioncontrolmode
= thermostat control by outdoortemperature or roomtemperaturemode
= Modemodetype
= Mode type
EMS-ESP will subscribe to specific topics depending on the EMS devices attached. For example boiler
, thermostat
etc. Commands can be sent to EMS-ESP via these topics using the payload format:
{"cmd":"<cmd>", "data":<data>, "id":<n>}
where
cmd
is one of the commands listed in the Commands and must be enclosed in quotes.data
can be a string or numeric value.id
can be replaced withhc
for some devices that use heating circuits, and represented either as a string or a number.
With Home Assistant, Thermostat commands can also be sent to control individual heating circuits via sending a mode string or temperature number to a topic thermostat_hc<n>
.
Depending on mqtt-settings there are also direct subscriptions for each value like boiler/wwtemp
, thermostat/hc1/daytemp
, etc. Thermostats which supports only a single heating circuits will subscribe to /thermostat/daytemp
.
You can also use MQTT to send a specific read request and the telegram response will be returned in a topic called response
. For example sending the payload {"cmd":"send", "data":"0B 88 19 19 02"}
to ems-esp/system
will result in a topic response
being published with the data {"src":"08","dest":"0B","type":"19","offset":"19","data":"7D 00","value":32000}
.
If you want more precise monitoring of the MQTT traffic I suggest using MQTT Explorer. The console command show mqtt
will show the status of the MQTT service and also the topic subscriptions and outbound publishing queue.