viele Heizungen, hier eine Buderus Gastherme GB172, besitzen eine Diagnoseschnittstelle.
Man spricht hier auch vom sogenannten EMS Bus.
Meistens ist es eine 3,5mm Buchse hinter einer Klappe oder zwei Klemmen auf der Steuerplatine.
Zunächst wurde das Bus Protokoll Analysiert: https://www.mikrocontroller.net/topic/3 ... age=single
Das Opensource Projekt EMS-ESP: https://emsesp.github.io/docs/
Die Hardware: https://bbqkees-electronics.nl/
Installiert ist die kleine Box ruckzuck und wird auch über die Diagnoseschnittstelle mit Spannung versorgt und ins Wlan gebracht.
Die Entitäten werden dann über MQTT bereit gestellt.
Hier meine Konfig:
mqtt-heating.things:
Code: Alles auswählen
Bridge mqtt:broker:3448a27a [ host="localhost", secure=false ]
{
// EMS-ESP @ Buderus GB172 Gastherme, IP: 192.168.2.114
Thing topic heating "EMS-ESP" @ "BuderusGB172" {
Channels:
//Channels for Buderus GB172 boiler items
Type string : status_reachable "EMS-ESP Status" [ stateTopic="ems-esp/status" ]
Type string : status_bus "EMS-ESP Bus Status" [ stateTopic="ems-esp/heartbeat", transformationPattern="JSONPATH:$.bus_status" ]
Type string : tapwateractive "Warmwasser aktiv" [ stateTopic="ems-esp/boiler_data", transformationPattern="JSONPATH:$.tapwateractive" ]
Type string : heatingactive "Heizung aktiv" [ stateTopic="ems-esp/boiler_data", transformationPattern="JSONPATH:$.heatingactive" ]
Type number : outdoortemp "Außentemperatur" [ stateTopic="ems-esp/boiler_data", transformationPattern="JSONPATH:$.outdoortemp" ]
Type number : selflowtemp "Sollwert Vorlauftemperatur" [ stateTopic="ems-esp/boiler_data", transformationPattern="JSONPATH:$.selflowtemp" ]
Type number : heatingpumpmod "Heizungspumpe 1 Modulation" [ stateTopic="ems-esp/boiler_data", transformationPattern="JSONPATH:$.heatingpumpmod" ]
Type number : curflowtemp "aktuelle Vorlauftemperatur" [ stateTopic="ems-esp/boiler_data", transformationPattern="JSONPATH:$.curflowtemp" ]
//Type number : switchtemp "Mischer Schalttemperatur" [ stateTopic="ems-esp/boiler_data", transformationPattern="JSONPATH:$.switchtemp" ]
Type string : burngas "Gas" [ stateTopic="ems-esp/boiler_data", transformationPattern="JSONPATH:$.burngas" ]
Type number : flamecurr "Flammenstrom" [ stateTopic="ems-esp/boiler_data", transformationPattern="JSONPATH:$.flamecurr" ]
Type number : curburnpow "Brennerleistung" [ stateTopic="ems-esp/boiler_data", transformationPattern="JSONPATH:$.curburnpow" ]
Type number : burnstarts "Brenner Starts" [ stateTopic="ems-esp/boiler_data", transformationPattern="JSONPATH:$.burnstarts" ]
Type number : burnworkmin "Brenner Laufzeit" [ stateTopic="ems-esp/boiler_data", transformationPattern="JSONPATH:$.burnworkmin" ]
Type number : heatworkmin "Heizung Laufzeit" [ stateTopic="ems-esp/boiler_data", transformationPattern="JSONPATH:$.heatworkmin" ]
Type number : heatstarts "Brenner Starts Heizung" [ stateTopic="ems-esp/boiler_data", transformationPattern="JSONPATH:$.heatstarts" ]
Type number : ubauptime "Anlagen-Gesamtlaufzeit" [ stateTopic="ems-esp/boiler_data", transformationPattern="JSONPATH:$.ubauptime" ]
Type string : lastcode "Letzter Fehler" [ stateTopic="ems-esp/boiler_data", transformationPattern="JSONPATH:$.lastcode" ]
//Type number : nompower "Brennerleistung" [ stateTopic="ems-esp/boiler_data", transformationPattern="JSONPATH:$.nompower" ]
Type number : nrgheat "Energie Heizen" [ stateTopic="ems-esp/boiler_data", transformationPattern="JSONPATH:$.nrgheat" ]
//Channels for Buderus GB172 tapwater items
Type string : wwcomfort "Warm-Wasser Komfort" [ stateTopic="ems-esp/boiler_data_ww", transformationPattern="JSONPATH:$.wwcomfort" ]
Type string : wwcirc "WW Zirkulation aktiv" [ stateTopic="ems-esp/boiler_data_ww", transformationPattern="JSONPATH:$.wwcirc" ]
Type number : wwcurtemp "WW aktuelle interne Temperatur" [ stateTopic="ems-esp/boiler_data_ww", transformationPattern="JSONPATH:$.wwcurtemp" ]
Type number : wwcurtemp2 "WW aktuelle externe Temperatur" [ stateTopic="ems-esp/boiler_data_ww", transformationPattern="JSONPATH:$.wwcurtemp2" ]
Type number : wwstoragetemp2 "WW externer Speichertemperatur" [ stateTopic="ems-esp/boiler_data_ww", transformationPattern="JSONPATH:$.wwstoragetemp2" ]
Type number : wwsetpumppower "WW Soll Pumpenleistung" [ stateTopic="ems-esp/boiler_data_ww", transformationPattern="JSONPATH:$.wwsetpumppower" ]
Type number : wwstarts "WW Anzahl Starts" [ stateTopic="ems-esp/boiler_data_ww", transformationPattern="JSONPATH:$.wwstarts" ]
Type number : wwworkm "WW aktive Zeit" [ stateTopic="ems-esp/boiler_data_ww", transformationPattern="JSONPATH:$.wwworkm" ]
Type number : nrgww "WW Energie Warmwasser" [ stateTopic="ems-esp/boiler_data_ww", transformationPattern="JSONPATH:$.nrgww" ]
//Channels for Buderus GB172 mixer topics
Type number : flowtemphc "HK1 Vorlauftemperatur HK (TC1)" [ stateTopic="ems-esp/mixer_data_hc1", transformationPattern="JSONPATH:$.flowtemphc" ]
Type number : valvestatus "HK1 Mischerventil Position (VC1)" [ stateTopic="ems-esp/mixer_data_hc1", transformationPattern="JSONPATH:$.valvestatus" ]
Type number : flowsettemp "HK1 Sollwert Vorlauftemperatur" [ stateTopic="ems-esp/mixer_data_hc1", transformationPattern="JSONPATH:$.flowsettemp" ]
Type string : pumpstatus "HK1 Pumpenstatus HK (PC1)" [ stateTopic="ems-esp/mixer_data_hc1", transformationPattern="JSONPATH:$.pumpstatus" ]
//Channels for Buderus GB172 thermostat hc1 topics
Type string : summermode "HK1 HK1 Sommerbetrieb" [ stateTopic="ems-esp/thermostat_data_hc1", transformationPattern="JSONPATH:$.summermode" ]
Type number : seltemp "HK1 Sollwert Raumtemperatur" [ stateTopic="ems-esp/thermostat_data_hc1", transformationPattern="JSONPATH:$.seltemp" ]
Type number : ecotemp "HK1 eco Temperatur" [ stateTopic="ems-esp/thermostat_data_hc1", transformationPattern="JSONPATH:$.ecotemp" ]
Type number : comforttemp "HK1 Komforttemperatur" [ stateTopic="ems-esp/thermostat_data_hc1", transformationPattern="JSONPATH:$.comforttemp" ]
Type number : summertemp "HK1 Sommertemperatur" [ stateTopic="ems-esp/thermostat_data_hc1", transformationPattern="JSONPATH:$.summertemp" ]
}
}
mqtt-heating.items:
Code: Alles auswählen
Group gheating
Group gheatingstats
//Buderus GB172 boiler items
String status_reachable "EMS-ESP Status" <network> (gheating) {channel="mqtt:topic:3448a27a:heating:status_reachable"}
String status_bus "EMS-ESP Bus Status" <network> (gheating) {channel="mqtt:topic:3448a27a:heating:status_bus"}
String tapwateractive "Warmwasser aktiv" <faucet> (gheating) {channel="mqtt:topic:3448a27a:heating:tapwateractive"}
String heatingactive "Heizung aktiv" <fire> (gheating) {channel="mqtt:topic:3448a27a:heating:heatingactive"}
Number outdoortemp "Außentemperatur [%.1f °C]" <temperature> (gheating,gheatingstats) {channel="mqtt:topic:3448a27a:heating:outdoortemp"}
Number selflowtemp "Sollwert Vorlauftemperatur [%.1f °C]" <temperature> (gheating,gheatingstats) {channel="mqtt:topic:3448a27a:heating:selflowtemp"}
Number heatingpumpmod "Heizungspumpe 1 Modulation [%s %%]" <flow> (gheating) {channel="mqtt:topic:3448a27a:heating:heatingpumpmod"}
Number curflowtemp "aktuelle Vorlauftemperatur [%.1f °C]" <temperature> (gheating,gheatingstats) {channel="mqtt:topic:3448a27a:heating:curflowtemp"}
Number switchtemp "Mischer Schalttemperatur [%.1f °C]" <temperature> (gheating) {channel="mqtt:topic:3448a27a:heating:switchtemp"}
String burngas "Gas aktiv" <gas> (gheating) {channel="mqtt:topic:3448a27a:heating:burngas"}
Number flamecurr "Flammenstrom [%.1f µA]" <energy> (gheating) {channel="mqtt:topic:3448a27a:heating:flamecurr"}
Number curburnpow "Brennerleistung [%s %%]" <fire> (gheating,gheatingstats) {channel="mqtt:topic:3448a27a:heating:curburnpow"}
Number burnstarts "Brenner Starts [%s]" <fire> (gheating) {channel="mqtt:topic:3448a27a:heating:burnstarts"}
Number burnworkmin "Brenner Laufzeit [JS(duration.js):%s]" <time> (gheating) {channel="mqtt:topic:3448a27a:heating:burnworkmin"}
Number heatworkmin "Heizung Laufzeit [JS(duration.js):%s]" <time> (gheating) {channel="mqtt:topic:3448a27a:heating:heatworkmin"}
Number heatstarts "Brenner Starts Heizung [%s]" <radiator> (gheating) {channel="mqtt:topic:3448a27a:heating:heatstarts"}
Number ubauptime "Anlagen-Gesamtlaufzeit [JS(duration.js):%s]" <time> (gheating) {channel="mqtt:topic:3448a27a:heating:ubauptime"}
String lastcode "Letzter Fehler" <error> (gheating) {channel="mqtt:topic:3448a27a:heating:lastcode"}
//Number nompower "Brennerleistung [%.0f kW]" <fire> (gheating) {channel="mqtt:topic:3448a27a:heating:nompower"}
Number nrgheat "Energie Heizen [%.2f kWh]" <radiator> (gheating) {channel="mqtt:topic:3448a27a:heating:nrgheat"}
//Buderus GB172 tapwater items
String wwcomfort "Warm-Wasser Komfort" <faucet> (gheating) {channel="mqtt:topic:3448a27a:heating:wwcomfort"}
String wwcirc "WW Zirkulation aktiv" <pump> (gheating) {channel="mqtt:topic:3448a27a:heating:wwcirc"}
Number wwcurtemp "WW aktuelle interne Temperatur [%.1f °C]" <temperature> (gheating,gheatingstats) {channel="mqtt:topic:3448a27a:heating:wwcurtemp"}
Number wwcurtemp2 "WW aktuelle externe Temperatur [%.1f °C]" <temperature> (gheating) {channel="mqtt:topic:3448a27a:heating:wwcurtemp2"}
Number wwstoragetemp2 "WW externe Speichertemperatur [%.1f °C]" <temperature> (gheating,gheatingstats) {channel="mqtt:topic:3448a27a:heating:wwstoragetemp2"}
Number wwsetpumppower "WW Soll Pumpenleistung [%s %%]" <pump> (gheating) {channel="mqtt:topic:3448a27a:heating:wwsetpumppower"}
Number wwstarts "WW Anzahl Starts [%s]" <pump> (gheating) {channel="mqtt:topic:3448a27a:heating:wwstarts"}
Number wwworkm "WW aktive Zeit [JS(duration.js):%s]" <time> (gheating) {channel="mqtt:topic:3448a27a:heating:wwworkm"}
Number nrgww "WW Energie Warmwasser [%.2f kWh]" <faucet> (gheating) {channel="mqtt:topic:3448a27a:heating:nrgww"}
//Buderus GB172 Mixer items
Number flowtemphc "HK1 Vorlauftemperatur HK (TC1) [%.1f °C]" <temperature> (gheating,gheatingstats) {channel="mqtt:topic:3448a27a:heating:flowtemphc"}
Number valvestatus "HK1 Mischerventil Position (VC1) [%s %%]" <pressure> (gheating) {channel="mqtt:topic:3448a27a:heating:valvestatus"}
Number flowsettemp "HK1 Sollwert Vorlauftemperatur [%.1f °C]" <temperature> (gheating,gheatingstats) {channel="mqtt:topic:3448a27a:heating:flowsettemp"}
String pumpstatus "HK1 Pumpenstatus HK (PC1)" <pump> (gheating) {channel="mqtt:topic:3448a27a:heating:pumpstatus"}
//Buderus GB172 Thermostat hc1 items
String summermode "HK1 Sommerbetrieb" <radiator> (gheating) {channel="mqtt:topic:3448a27a:heating:summermode"}
Number seltemp "HK1 Sollwert Raumtemperatur [%.1f °C]" <temperature> (gheating) {channel="mqtt:topic:3448a27a:heating:seltemp"}
Number ecotemp "HK1 eco Temperatur [%.1f °C]" <temperature> (gheating) {channel="mqtt:topic:3448a27a:heating:ecotemp"}
Number comforttemp "HK1 Komforttemperatur [%.1f °C]" <temperature> (gheating) {channel="mqtt:topic:3448a27a:heating:comforttemp"}
Number summertemp "HK1 Sommertemperatur [%.1f °C]" <temperature> (gheating) {channel="mqtt:topic:3448a27a:heating:summertemp"}
Viel Spass damit.
Gruß Peter