{"id":28560682,"url":"https://github.com/sr258/eas3-mqtt","last_synced_at":"2026-02-23T22:04:23.613Z","repository":{"id":289628324,"uuid":"971876171","full_name":"sr258/eas3-mqtt","owner":"sr258","description":"Brunner EAS 3-MQTT Gateway","archived":false,"fork":false,"pushed_at":"2025-04-24T07:47:21.000Z","size":14,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-04T19:37:09.321Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sr258.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-04-24T07:33:16.000Z","updated_at":"2025-04-24T18:49:35.000Z","dependencies_parsed_at":"2025-04-24T08:48:59.363Z","dependency_job_id":null,"html_url":"https://github.com/sr258/eas3-mqtt","commit_stats":null,"previous_names":["sr258/eas3-mqtt"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sr258%2Feas3-mqtt","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sr258%2Feas3-mqtt/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sr258%2Feas3-mqtt/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sr258%2Feas3-mqtt/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sr258","download_url":"https://codeload.github.com/sr258/eas3-mqtt/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sr258%2Feas3-mqtt/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259049854,"owners_count":22798044,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-06-10T09:37:37.329Z","updated_at":"2026-02-23T22:04:23.524Z","avatar_url":"https://github.com/sr258.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# EAS 3-MQTT-Gateway\n\nDas EAS 3-MQTT-Gateway ist eine [NodeJS](https://nodejs.org/)-Anwendung, die den\nZustand (z.B. Heizraumtemperatur oder Abbrandstatus) einer elektronischen\nAbbrandsteuerung vom Typ \"[Brunner EAS\n3](https://www.brunner.de/haustechnik/steuerungen/eas-3)\" bei einem MQTT-Broker\nveröffentlicht. Dadurch können diese Daten in einem Home-Automation-System wie\n[Home Assistant](https://www.home-assistant.io/) verwendet werden.\n\n**Dieses Projekt hat keine Verbindung zur [Ulrich Brunner\nGmbH](https://www.brunner.de/) und wird von dieser auch nicht unterstützt. Der\nHersteller veröffentlicht keine Dokumentation des verwendeten Protokolls und das\nGateway beruht auf Analysen des Verhaltens des Geräts.**\n\n## Funktionsweise\n\nWenn die EAS 3 mit dem WLAN verbunden ist, sendet sie sekündlich\nUDP-Broadcast-Pakete auf Port 45454, die alle fünf Sekunden den aktuellen Status\nenthalten. Das Gateway horcht auf diese Pakete, parst sie und gibt dann die\nenthaltenen Informationen per MQTT auf dem Topic `stove/eas3_X/sensors` wieder\naus. Außerdem werden per MQTT Autodiscovery-Informationen ausgegeben, damit Home\nAssistant die Daten besser visualisieren kann.\n\n`X` im Topic entspricht der Nummer des EAS 3-Geräts, wie es intern konfiguriert\nwurde. Wenn nur ein Gerät vorhanden ist, ist dies 0. Bei mehreren Geräten werden\ndann weitere Nummern verwenden.\n\nDas Gateway ist undirektional und nur lesend, weshalb das Gateway keinesfalls\ndie Steuerung beeinflussen sollte, d.h.:\n\n- Es werden nur Daten vom EAS 3 ausgelesen.\n- Es ist nicht möglich, Konfigurationswerte am EAS 3 zu ändern.\n\nUnterstützte Informationen:\n\n- Heizraum-Temperatur (in °C)\n- Abbrand-Status (Aus, Tür offen, Abbrand Start, Abbrand Stufe 1, Abbrand Stufe\n  2, Abbrand Stufe 3, Abbrand Stufe 4, Abbrand Ende, Fehler)\n- Verlängerter Abbrand (an / aus)\n- Öko-Modus (an / aus)\n- Drosselklappen-Betrieb (an / aus)\n- Nachlege-Hinweis (0-4)\n\nZur Bedeutung dieser Informationen, siehe das EAS 3-Benutzerhandbuch.\n\n## Kompatibilität\n\nDas Gateway wurde mit der EAS 3-Firmware 3.44 getestet.\n\n## Voraussetzungen\n\n- Es wird **NodeJS 20** benötigt.\n- Die EAS 3 muss bereits über die BRUNNEREAS3-App mit dem **WLAN** verbunden\nworden sein und in der App müssen Daten angezeigt werden.\n- Es muss ein **MQTT-Broker** laufen und fertig konfiguriert sein.\n\n## Ausführen\n\n### Einfaches Starten\n\n1. Die Dependencies mit `npm ci` installieren.\n2. Das [Gateway konfigurieren](#konfiguration).\n3. Das Gateway mit `npm start` starten.\n\n### Als Daemon mit ps2 ausführen\n\nMit der oben angeführten Methode, wird das Gateway nicht erneut gestartet, wenn\nes durch einen Absturz oder Reboot der Maschine beendet wurde. Um dies\nsicherzustellen, kann beispielsweise [pm2](https://pm2.keymetrics.io/) verwendet\nwerden:\n\n1. `npm install pm2 -g` (einmalig).\n2. Die Dependencies mit `npm ci` installieren (einmalig).\n3. Das [Gateway konfigurieren](#konfiguration).\n4. `pm2 start src/eas3.js`\n\nDas Gateway läuft dann als daemon und wird dann 24/7 ausgeführt.\n\nFolgende Kommandos können z.B. verwendet werden, um den Daemon zu kontrollieren:\n\n- `pm2 ps` - Zeigt die aktuell laufenden pm2-Prozesse an\n- `pm2 log eas3` - Zeigt das Log an (über mehrere Ausführungen hinweg).\n- `pm2 stop eas3` - Stoppt den Prozess mit dem Namen `eas3`. Wenn `pm2 ps` einen\n  anderen Namen ausgegeben hat, muss dieser stattdessen verwendet werden.\n- `pm2 delete eas3` - Löscht den Prozess mit dem Namen `eas3`. Wenn `pm2 ps`\n  einen anderen Namen ausgegeben hat, muss dieser stattdessen verwendet werden.\n\n## Konfiguration\n\nDas Gateway kann über folgende Umgebungsvariablen konfiguriert werden:\n\n| Umgebungsvariable | Beschreibung | Verwendung | Beispiel(e) | Standardwert wenn leer | \n| -  | - | - | - | - |\n| MQTT_HOST | Hostname des MQTT-Brokers | verpflichtend | 192.168.188.200\u003cbr\u003elocalhost | |\n| MQTT_PORT | Port des MQTT-Brokers | optional | 1883 | 1883 |\n| MQTT_USERNAME | Benutzername eines Nutzers auf dem MQTT-Broker. Nichts angeben, um ohne Authentisierung zu arbeiten. | optional | myusername | |\n| MQTT_PASSWORD | Passwort eines Nutzers auf dem MQTT-Broker. Nichts angeben, um ohne Authentisierung zu arbeiten. | optional | mypassword | | \n| MQTT_AUTODISCOVERY_FREQUENCY | Wie häufig das Gateway Autodiscovery-Informationen an den MQTT-Broker verschickt. Das Gateway schickt bei jedem X-te UDP-Paket die Auto-Discovery-Nachricht. Normalerweise verschickt die EAS 3 jede Sekunde ein Paket, d.h. der hier eingetragene Wert entspricht Sekunden. | optional | 10 | 10 |\n| MQTT_AUTODISCOVERY_DISABLED | Deaktiviert das Senden von Autodiscovery-Informationen. Sinnvoll wenn ein anderes System als Home Assistant verwendet wird. | optional | true\u003cbr\u003efalse | |\n| EAS3_BROADCAST_PORT | Der UDP-Port, auf den EAS3-Broadcasts gesendet werden. | optional | 45454 | 45454 |\n| EAS3_MQTT_DEVICE_PREFIX | Präfix für das Gerät im MQTT-Broker | optional | prefix_ | eas3_\n| DEBUG | Konfiguriert die Debug-Ausgabe | optional | eas3-mqtt-gateway\u003cbr\u003e* | |\n\nDie Umgebungsvariablen können in einer `.env`-Datei liegen oder normal als\nUmgebungsvariablen übergeben werden. Es gibt eine Beispiel-`.env`-Datei unter\n[`example.env`](/example.env). \n\nWenn die `.env`-Datei verwendet werden soll:\n\n1. `example.env` in `.env` kopieren.\n2. Die Konfigurationswerte in `.env` enstprechend den eigenen Bedingungen\n   anpassen.\n3. Das Gateway ohne weitere Parameter starten.\n\nWenn die Umgebungsvariablen per CLI übergeben werden sollen (Linux):\n\n- Das Gateway per `MQTT_HOST=localhost MQTT_USERNAME=myusername npm start`\n  starten.\n\n## Debugging\n\nDas Gateway verwendet das NPM-Package\n[`debug`](https://www.npmjs.com/package/debug), um Debug-Informationen\nauszugeben. Diese können angezeigt werden, indem die Anwendung mit der\nUmgebungsvariable `DEBUG=eas3-mqtt-gateway` gestart wird (Linux):\n\n```sh\nDEBUG=eas3-mqtt-gateway npm start\n```\n\nDann wird die Debug-Ausgabe des Gateways selber angezeigt. Es könnena auch die\nAusgaben anderer Package angezeigt werden. Dafür `DEBUG=*` setzen.\n\n## Beispiel-Automation in Home Assistant\n\nDie folgende Home Assistant-Automation drosselt die Soll-Temperatur der\nHeizkörperthermostate im Wohnzimmer, wenn der Ofen geheizt wird, damit die\nZentralheizung ausgeschaltet wird und der Raum nicht überheizt. Nach zwei\nStunden wird die normale Soll-Temperatur eingestellt, damit die Zentralheizung\nnahtlos übernimmt, wenn der Ofen nach einigen Stunden abkühlt.\n\n```yaml\nalias: Kachelofen an -\u003e Heizung aus\ndescription: \"\"\ntriggers:\n  - trigger: numeric_state\n    entity_id:\n      - sensor.eas_3_heizraum_temperatur\n    for:\n      hours: 0\n      minutes: 0\n      seconds: 30\n    above: 40\nconditions:\n  - condition: state\n    entity_id: sensor.kachelofen_eas_3_abbrand_status\n    state: Abbrand Start\nactions:\n  - action: climate.set_temperature\n    metadata: {}\n    data:\n      temperature: 15\n    target:\n      device_id: \u003cID_DES_RAUMES\u003e\n  - delay:\n      hours: 2\n      minutes: 0\n      seconds: 0\n      milliseconds: 0\n  - action: climate.set_temperature\n    metadata: {}\n    data:\n      temperature: 21.5\n    target:\n      device_id: \u003cID_DES_RAUMES\u003e\nmode: single\n```\n\n## Beschränkungen\n\nDie EAS 3 sendet Broadcast-Pakete, deren Bedeutung aktuell unbekannt ist, und\ndie deshalb ignoriert werden. Das EAS 3 scheint von der BRUNNEREAS3-App per\nRemote Procedure Call aufgerufen zu werden. Was hier genau passiert ist\nunbekannt, weshalb die Features der App nicht verwendet werden können.\n\n## Quellen / Anerkennung\n\nDas Gateway beruht auf den Informationen aus dem [Thread #761 des ioBroker\nGitHub Issue Tracker](https://github.com/ioBroker/AdapterRequests/issues/761)\nvon [JR-Home](https://github.com/JR-Home) und\n[Draygv2](https://github.com/Draygv2).\n\nDie Liste der Heizeinsätze wurde dem EAS 3-Benutzerhandbuch entnommen.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsr258%2Feas3-mqtt","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsr258%2Feas3-mqtt","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsr258%2Feas3-mqtt/lists"}