Skip to content

Published Data~

When MQTT is enabled EMS-ESP will publish MQTT topics for each device. The frequency can be configured from the WebUI to be either sent when data changes are detected or set to a specific period in seconds which is kinder on network traffic.

When MQTT Discovery is enabled, EMS-ESP will automatically create a special Discovery topics (with /config) for each EMS device entity that has received a valid value in EMS-ESP. If the entity should disappear (i.e. no longer has a valid value in an EMS telegram) then the discovery topic is automatically removed. This is to avoid warnings in systems like Home Assistant. When EMS-ESP starts all prior Discovery topics are removed to keep system clean.

When a value is a boolean it will be rendered according to the Boolean setting you have defined in the settings.

The table below list the topics being published. The format shown in the table below is the MQTT Format as defined in EMS-ESP's settings. Default format is Nested which uses a single topic to show multiple entries in the payload. Format Single will send each group as single payloads on multiple topics.

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":"connected","version":"3.5.0-dev.14","boot time":"2022-12-30T13:50:54+0100","network":"ethernet","hostname":"ems-esp","MAC":"A9:03:3A:61:34:CE","IPv4 address":"192.168.1.134/255.255.255.0","IPv4 gateway":"192.168.1.1","IPv4 nameserver":"192.168.1.1"}
heartbeat all system stats in JSON, default is every minute {"bus_status":"connected","uptime":"000+22:32:01.497","uptime_sec":81121,"ntp_status":"on","rxreceived":76970,"rxfails":28,"txreads":17587,"txwrites":0,"txfails":0,"mqttcount":42344,"mqttfails":0,"mqttconnects":1,"apicalls":0,"apifails":0,"sensorreads":16224,"sensorfails":0,"freemem":151}
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,"heatingpumpmod":0,"curflowtemp":57.5,"rettemp":56.9,"syspress":1.5,"boiltemp":60.8,"burngas":"off","burngas2":"off","flamecurr":0.0,"heatingpump":"off","fanwork":"off","ignwork":"off","oilpreheat":"off","heatingactivated":"on","heatingtemp":65,"pumpmodmax":70,"pumpmodmin":30,"pumpdelay":1,"burnminperiod":10,"burnminpower":0,"burnmaxpower":50,"boilhyston":-6,"boilhystoff":6,"boil2hyston":0,"boil2hystoff":0,"curburnpow":0,"burnstarts":359634,"burnworkmin":620952,"burn2workmin":0,"heatworkmin":508794,"heatstarts":42076,"ubauptime":5166357,"servicecode":"0A","servicecodenumber":305,"maintenancemessage":"H00","maintenance":"manual","maintenancetime":6000,"maintenancedate":"01.01.2012"}
boiler_data_ww all warm water data from the Boiler device {"wwtapactivated":"on","wwsettemp":62,"wwseltemp":60,"wwtype":"flow","wwcomfort":"hot","wwflowtempoffset":40,"wwmaxpower":100,"wwcircpump":"off","wwchargetype":"3-way valve","wwhyston":-5,"wwhystoff":0,"wwdisinfectiontemp":70,"wwcirc":"off","wwcurtemp":52.9,"wwcurflow":0.0,"wwstoragetemp1":52.9,"wwactivated":"on","wwonetime":"off","wwdisinfecting":"off","wwcharging":"off","wwrecharging":"on","wwtempok":"on","wwactive":"off","ww3wayvalve":"on","wwstarts":317558,"wwworkm":112158}
thermostat_data nested data from the thermostat and for each of its Heating Circuits. {"datetime":"31.12.2022 12:25","hc1":{"seltemp":15.0,"currtemp":20.7,"mode":"auto","manualtemp":21.0,"daytemp2":20.5,"daytemp3":20.0,"daytemp4":20.5,"nighttemp":15.0,"switchtime":"00 mo 00:00 T1"}}
thermostat_data single In single format each heating circuit is published with own topic {"datetime":"31.12.2022 12:25"}
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 hc4and 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 }
temperaturesensor_data nested temperature readings from any external Dallas temperature sensors attached to the ESP {"28-233D-9497-0C03":{"name":"zolder32","temp":19.6}}
temperaturesensor_data single temperature readings from Dallas temperature sensor in single format with unique sensor id {"28-FF47-AC90-1604":20.94}
analogsensor_data nested readings from external analog sensors {"31":{"name":"analog31","value":0}}

Using MQTT to send commands~

Refer to the Commands Section for how to use MQTT to send commands to EMS-ESP.

Monitoring the Queue~

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. In the WebUI you can see the size of the queue and overall stats are in the Status page.