Skip to content
j0ta29 edited this page Aug 14, 2023 · 5 revisions

ESPHome

Die ESPHome-Plattform erlaubt es, sehr komfortable eine eigene Firmware für ESP8266 und ESP32 Microcontroller zu erstellen. Einmal eingerichtet, kann die Firmware dann im laufenden Betrieb über Wifi (OTA) aktualisiert werden.

Ein mit dieser Firmware ausgestatteter Microcontroller lässt sich danach sehr einfach in die Hausautomatisierung integrieren, insbesondere die Integration in Home Assistant funktioniert fast aufwandslos. Bei Bedarf kann über ESPHome ein eigener Web-Server in die Firmware integriert werden, so dass auch ohne Hausautomatisierung-Plattform die Ansteuerung möglich ist. Auch die Verbindung zu einem MQTT-Broker ist möglich (wurde von mir aber nicht getestet).

viessmann_esphome_homeassistant

Hardware

Der von mir verwendete Optolink-Adapter orientiert sich an den hier und hier vorgestellten Bauanleitungen. Da die IR-LED SFH487-2 quasi nicht mehr verfügbar ist, habe ich beim Elektronik-Händler meiner Wahl nach einer LED mit gleichem Frequenzband gesucht und bin mit der SIR 204 EVL fündig geworden. Den in den beiden Bauanleitungen vorgeschlagenen Vorwiderstand von 180Ω habe ich durch 220Ω ersetzt. Erst versuchsweise, weil ich 180Ω gerade nicht zur Hand hatte, inzwischen dauerhaft, weil die Schaltung so seit einigen Monaten problemlos läuft.

Als Microcontroller habe ich einen Wemos D1 mini mit externem Antennenanschluss gewählt um die Wifi-Strecke aus unserem Keller bis ins Obergeschoss problemlos zu überbrücken.

Software

Für die Integration in ESPHome habe ich eine sogenannte Komponente entwickelt. Aktuell ist sie noch nicht Teil des offizielle ESPHome-Releases, ist aber schon als Pull Request verfügbar. Um den Software-Stand des Pull Request zu nutzen, müssen drei zusätzliche Zeilen in die ESPHome-Konfiguration mit aufgenommen werden:

external_components:
  - source: github://pr#4453
    components: [ optolink ]

Die Initialisierung der Optolink-Komponente erfolgt über:

optolink:
  protocol: P300             # P300 oder KW
  logger: enable             # wenn später alles rund läuft, wieder entfernen 
  state: Status              # wenn später alles rund läuft, wieder entfernen
  device_info: Gerätekennung # dient zur Identifizierung der Vitotronic 

Da der serielle Port UART0 zur Kommunikation mit der Optolink-Schnittstelle verwendet wird, muss beim Einsatz der logger-Komponente deren Ausgabe auf UART1 umgeleitet werden oder ganz deaktivert werden. Unabhängig davon werden die Log-Ausgabe weiterhin im ESPHome-Frontend angezeigt, und auch in der optionalen web_server-Komponente.

logger:
  hardware_uart: UART1
  level: DEBUG
logger:
  hardware_uart: UART0
  baud_rate: 0 
  level: DEBUG

Danach können beliebige Sensoren und Kontrollelemente konfiguriert werden. Beispiel:

sensor:
  - platform: optolink
    name: ${name} Kesseltemperatur
    address: 0x0810
    bytes: 2
    div_ratio: 10
    unit_of_measurement: °C
    device_class: temperature

number:
  - platform: optolink
    name: ${name} Sollwert Raumtemperatur
    unit_of_measurement: °C
    address: 0x2306
    bytes: 1
    min_value: 3
    max_value: 37
    step: 1
    mode: box
    icon: "mdi:home-thermometer"
    device_class: temperature

Die vollständige Beschreibung der Konfigurationsmöglichkeiten kann in der Dokumentation des Pull Requests nachgelesen werden.

Da der Code noch nicht Teil des offizielle Release von ESPHome ist, kann es zeitweise zu Fehler beim Compilieren der Firmware kommen. Bei Verwendung einer ESPHome-Version kleiner 2023.4 tritt der folgende Fehler auf:

In file included from src/esphome/components/optolink/optolink_sensor_base.cpp:3:
src/esphome/components/optolink/optolink_sensor_base.h:6:10: fatal error: esphome/core/string_ref.h: No such file or directory
 #include "esphome/core/string_ref.h"

Abhilfe schafft hier vorerst nur der Wechsel auf eine ESPHome-Version ab 2023.4.

Einführung

Python (Linux, Windows etc)

Microcontroller

Clone this wiki locally