EMS Bus Gateway - Heizungssteuerung via MQTT - IPSymcon Einbindung/Modul ?

Hi,

ich habe ein EMS Bus Gateway im Internet gefunden, welches mit verschiedensten Heizungssystemen funktioniert.

Das könnnte denke für viele hier ebenfalls intressant sein.

https://bbqkees-electronics.nl

Das Gateway unterstützt MQTT.

https://bbqkees-electronics.nl/wiki/gateway/configuring-mqtt.html

Aber wenn ich richtig verstehe dann unterstützt ja IPSymcon auch MQTT.

Leider habe ich keine Erfahrung mit MQTT.

Wie funktioniert die Einbindung mit IPS?

Vielleicht könnte jemand ein Modul erstellen oder vielleicht wäre sogar offizielles Unterstützung des EMS Gateways möglich?

Instanz hinzufügen MQTT Server; MQTT Configurator

Hallo sasch08,

ich bin letzte Woche auf das EMS-Gateway von bbqkees-electronics gestoßen und habe es auch direkt bestellt.
Seit letzten Freitag läuft das EMS-Gateway bei uns parallel zum Thermostat am EMS-Bus.

Zur Inspiration habe ich mal einen Screenshot unseres Webfronts sowie der Variablen angehängt.
Da wir unsere Gastherme bei Nichtbenutzung im Sommer ausschalten, ist zusätzlich noch ein Watchdog aktiv, welcher dies im Webfront signalisiert.

Das EMS-Gateway schreibt alle Daten der Heizung und der Thermostate in eine einzelne Variable als JSON.
Bei einer Änderung dieser Variable, wird bei mir ein Skript ausgeführt, welches JSON dekodiert und in einzelne Variablen (für das Webfront) schreibt. Beispielsweise sieht dies folgendermaßen für die Daten unseres Thermostats aus:

<?php

$json = GetValue(34230);

if(isset($json)) {
    
    $data = json_decode($json);

    (isset($data->seltemp))? SetValue(36949,$data->seltemp):'';
    (isset($data->currtemp))? SetValue(41394,$data->currtemp):'';
    (isset($data->daytemp))? SetValue(57369,$data->daytemp):'';
    (isset($data->nighttemp))? SetValue(40535,$data->nighttemp):'';
    (isset($data->mode))? SetValue(34054,$data->mode):'';

    if(isset($data->mode))
    {
        switch($data->mode)
        {
            case "auto":
                SetValue(35057,0);
                break;
            case "day":
                SetValue(35057,1);
                break;
            case "night":
                SetValue(35057,2);
                break;
            default:
            SetValue(35057,0);  
        }
    }

}

?>

Die Rückkanäle (z.B. setzen er Thermostat-Temperatur via Symcon) müssen manuell angelegt werden, da diese im MQTT-Konfigurator nicht auftauchen (senden halt nichts).
Die Namen sind im EMS-ESP-Wiki zu finden: EMS-ESP Documentation

Wir haben eine Buderus U154 - 20K Gastherme mit einem RC20 Raumthermostat. Leider unterstützt unsere Gastherme kaum Funktionen, sodass wir noch nicht einmal die Temperatur des Warmwassers dauerhaft ändern können. Dafür funktioniert aber das Ändern der Tages- und Nachttemperatur vom Thermostat sehr gut.

Bei Fragen, kannst du dich gerne melden - ich habe den ganzen letzten Freitag mit dem Einrichten verbracht.

Moin,

kannst Du per Api Werte zum Gateway / Boiler schicken ??

Quasi:


http://10.0.0.8/api?device=boiler&cmd=flowtemp&data=44

Hintergrund … Mein EM10 ist verreckt und nun Versuche ich per Gateway die Vorlaufsolltemp zu ändern!

Grüße
Christian

Jetzt geht es … musste die Firmware updaten … war noch ein BUG drin

Funktioniert das auch bei Buderus GB152?

Ja, solange die Heizung den EMS Bus hat… und das
haben alle einigermaßen aktuellen…

Hey,

ich hab mir das Teil auch mal bestellt ,habe es an einer Buderus GB162 aus dem Jahr 2009 angeschlossen, funktioniert einwandfrei (nur direkt am Bus nicht per Klinkenstecker).

Vielleicht hat ja jemand die Muße mal ein Modul zu schreiben ,ich würde es ja machen aber ich befürchte ich kann es nicht…Oder jemand gibt mir ein kurzes „Training“, dann kann ich mich daran versuchen :slight_smile:

Hallo und guten Abend zusammen,
ich habe mir auch das Gateway bestellt, erfolgreich angeschlossen und die ersten Daten erfolgreich über ems-esp eingesehen.
Nur muss ich mich meinem Vorschreiber anschließen … bin motiviert, weitere Daten der Heizung (über Laptop) gezielt auszulesen und abzulegen, jedoch habe ich null Plan, wo ich da wie ansetzen kann.
Ich bin in der Arduino-Welt gross geworden und weiterhin aktiv, alles andere ist für mich völlig Neuland.
Gibts irgendwo eine Anleitung oder einen Crashkurs für Dummys, wie man sich dem Thema irgendwie annähern kann?
Viele Grüße aus der Altmark schickt
Torsten

Mein System:
GB 172 (mit RC 310 und MM 100)
Gateway II

Guten Abend!
Ich habe mir den Gateway bestellt, und mal kurz getestet mit dem Klinkenstecker. Ich habe schon mal Verbindung zur Heizung. Über Firefox und kann auch Werte einsehen. Nur wie bekomme ich das in Symcon eingebunden? Gibt es schon ein fertiges Modul? Gruß Syrko
Meine System Buderus GB152 (BC10 + RC35) und Gateway II mit Firmware 2.1.0

Ich habe das Gateway mal geordert obwohl ich schon ein Buderus Gateway dran habe und auch über den ServiceKey drankomme.

Heute kam das Teil an.

Erst erschrak ich etwas, da außer gut verpackten Teilen nix dabei war.

Dann fand ich aber eine wirklich hervorragende WiKi Seite auf deren Homepage. Wow

Ich hab das Gateway angeschlossen und die Einbindung ist schon mal vorbildlich umgesetzt. Nach dem Dashboard habe ich mir MQTT aktiviert. Auch super.
Damit kommen die Daten ja schon mal zu IPS

Den Rest überlasse ich den findigen Codern. Das ist nicht mein Thema.

Gesendet von iPhone XS mit Tapatalk

@jbr27 ich sehe gerade, dass Du ja schon schön vorgelegt hast.
Danke für die Bilder und den Code. Ich lese nur zwischendurch auf dem Smartphone, da fehlt einem schnell der Threadüberblick.

Die Einbindung MQTT in IPS ist ja für die Empfangsdaten nur ein Knopfdruck.
Dann schaue ich mal den Sendeteil an.

Danke nochmals für die Tipps.

Gesendet von iPhone XS mit Tapatalk

Hallo Boui,

wenn du noch Fragen hast, dann kannst du dich gerne melden.
Ich habe das EMS-Gateway mittlerweile vollständig für meinen Anwendungsfall implementiert (unsere Gastherme unterstützt leider nicht alle Funktionen).

Per Webfront können wir die Solltemperatur (für jeden Modus) einstellen, den Modus wechseln oder auch eine manuelle Temperatur setzen. Außerdem habe ich eine Fenstererkennung implementiert, welche eine manuelle Temperatur von 12 °C vorgibt, wenn ein Fenster geöffnet ist und beim Schließen des Fensters wieder die alte Temperatur aufruft (ergibt aber vermutlich nur für eine kleinere Wohnung wie bei uns Sinn, da in einem Haus jeder Heizkörper einzeln geregelt werden sollte).

Um beispielsweise dem Thermostat einen Befehl zu übermitteln, muss eine MQTT-Instanz mit dem Topic „ems-esp/thermostat_cmd“ erstellt werden. Anschließend wird nur noch ein Action-Skript für die Variable der Tagtemperatur benötigt:


<?php

if($_IPS['VALUE']!="") {

$data = $arr = array("cmd" => "daytemp", "data" => $_IPS['VALUE']);
$json = json_encode($data);
RequestAction(23302, $json);

SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);

}
?>

Prima, das hört sich alles nach meinem Geschmack an.

Hab schon ewig nix mehr gemacht im System. Nur Kleinigkeiten angepasst.

Ich hab mir nun mit einem JSON Viewer mal die gelieferten echten Daten angeschaut und diese dann in die Variablen geschrieben. Steht zwar alles in der Wiki aber so war ich sicher.

Das schaut schon mal sehr gut aus. Dieses Gateway ist wirklich ne feine Lösung.

Danke für das nette Angebot.

Gesendet von iPhone XS mit Tapatalk

Wie kommst Du auf die Benennung „thermostat_cmd“, aus dem Wiki geht das irgendwie nicht hervor und wie lege ich das an? IPS bietet mir nur Client oder Server an und nicht wie bei Dir in dem Bild (Device ohne Client oder Server).
Ich habe bei mir die Verbindung über den Konfigurator erstellt, muss dazu sagen das ich mit MQTT bisher noch nichts gemacht habe und sehe evtl. nur den Wald vor lauter Bäumen nicht …

Gruß
Jens

Hier ein Tipp für die Grundlagen MQTT – Leitfaden zum Protokoll für das Internet der Dinge | Informatik Aktuell und dann hilft nur lesen und üben, wenn es dann klappt ist alles ganz leicht:)

Danke für den Tip, allerdings ist mir die generelle Funktionsweise klar, nur habe ich es bisher in IPS noch nie benutzt.
Es ging um den Code für das EMS Gateway, da der scheinbar nicht mehr passt und um die Einrichtung des Rückkanals, da es bei mir in IPS scheinbar etwas anderes aussieht als bei jbr27.
Ich denke das ich zumindest die Einrichtung vom Rückkanal hinbekommen habe, allerdings wird das Telegramm vom Gateway nicht umgesetzt … laut Debug wird zumindest die Variable gepublished. Leider habe ich noch nicht herausgefunden, wie ich prüfen kann ob das auch beim Gateway an kommt. Allerdings nutze ich auch gerade eine Dev Version und nicht die letzte stable.

@jbr27: welche Konfiguration hast Du im Gateway bei den MQTT Einstellungen? Single oder Nested? Hast du schon mal die Option Homeassistant ausprobiert?

Also ich hab da lediglich die IP des Servers eingetragen. Alles andere so gelassen. Bei mir stand es auf nested

Nachtrag: Version war von Beginn an 2.1

Gesendet von iPad mit Tapatalk

Hallo Tetrapack,

aktuell läuft bei mir EMS-ESP v2.0.1. Meine Screenshots basieren aber noch auf irgendeiner Version 1.9.x, welche damals aktuell war.

Beim Update von v1 auf v2 konnte ich aber die meisten meiner Skripte ohne Anpassung weiterverwenden.
Lediglich bei den Sendekanälen sind einige spezifische Variablen weggefallen und ab v2.0 wird nun alles über boiler_cmd bzw. thermostat_cmd als JSON gesendet. Ab v2.1 scheint hier auch wieder etwas verändert worden zu sein. Zumindest im Wiki finde ich von diesen Topics auch nichts mehr (https://emsesp.github.io/docs/#/MQTT?id=sending-commands).

Meine MQTT-Settings sehen auf dem EMS-ESP wie folgt aus:
Host: IP vom IP-Symcon-Host (da ich den MQTT-Server von IP-Symcon verwende)
Port: 1024
Client ID: ems-esp
MQTT-Format: Single

Spätestens zwischen Weihnachten und Silvester finde ich bestimmt auch Zeit für das Update auf v2.1 und würde meine neuen Ansätze dann hier posten, falls dann noch Bedarf besteht.

Ich nutze auch den IPS Rechner als Broker.
Den Zusatz „_CMD“ scheint es jetzt nicht mehr zu geben, sondern lediglich das Device unter dem auch die anderen Werte liegen.

Bei „Single“ hatte ich eigentlich erwartet, das die Werte auch einzeln kommen. Bisher habe ich keinen Unterschied zwischen Single und Nested gefunden. In der Option „Homeassistant“ kommen die Werte alle einzeln, allerdings dann auch noch mehrfach in Ordnern verschachtelt. Bin mir da nicht sicher was besser ist. :confused:
Aktuell nutze ich auch die Einstellung Single und zerpflücke dann den JSON String.

Meinen Fehler habe ich jetzt auch gefunden … ich hatte zuerst „boiler_cmd“ angelegt und dann umbenannt. Nur nutzt das Umbenennen nichts, man muss die Instanz bearbeiten und dort ändern.:rolleyes:
Jetzt funktioniert das Senden wie erwartet :loveips: