Hallo zusammen,
ich möchte euch von meinem Umbau einer Deckenventilator-Steuerung berichten. Das Projekt hat mich einiges an Gehirnschmalz gekostet, läuft jetzt aber absolut perfekt und ist vielleicht für den einen oder anderen eine super Vorlage für ein eigenes Setup.
Die Ausgangslage (Das Problem mit Tasmota)
Ich nutze als Steuerungseinheit eine Sonoff RF Bridge (mit dem ESP8285-Chip), bei der der Funk-Koprozessor bereits mit der alternativen Portisch-Firmware geflasht war, um die proprietären RF-Signale der Ventilator-Fernbedienung überhaupt lesen und senden zu können.
Ursprünglich hatte ich auf der Bridge Tasmota laufen. Das Problem war jedoch das daraus resultierende UI-Chaos im Home Assistant Dashboard: Tasmota reichte die Portisch-Hex-Codes nur roh weiter. Es gab keine logische Verbindung zwischen den einzelnen Geschwindigkeiten. Das hieß für mich: Ich musste für jede einzelne Funktion (An/Aus, jede der 6 Geschwindigkeitsstufen, Richtungswechsel und die Timer) einen einzelnen MQTT-Button anlegen.
Mein Dashboard war eine einzige Knopf-Wüste. Home Assistant wusste überhaupt nicht, dass es sich hierbei um ein echtes Ventilator-Gerät (fan) handelt. Es gab keinen Slider, kein rotierendes Icon und Automationen waren ein Krampf.
Die Lösung: Der Wechsel auf ESPHome (Nativer 6-Stufen Fan)
Ich habe die RF Bridge schließlich von Tasmota auf ESPHome umgeflasht. ESPHome bringt eine native rf_bridge-Komponente mit, über die ich die rohen Portisch-Buckets direkt ansprechen kann.
Ein weiterer riesiger Vorteil, der vorher über Tasmota überhaupt nicht verfügbar war: Ich konnte die Hardware-Timer für 1, 2 und 4 Stunden direkt mit in den Code integrieren. Diese laufen jetzt völlig autark direkt auf dem ESP8285-Chip, ohne dass ich dafür extra Automationen in Home Assistant bauen musste.
Hier ist mein kompletter ESPHome-YAML-Code, mit dem ich das Button-Chaos komplett beseitigt habe:
esphome:
name: sonoff-rf-bridge
comment: "Sonoff RF Bridge mit Portisch für Deckenventilator"
esp8266:
board: esp8285
ota:
- platform: esphome
password: !secret ota_password
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
fast_connect: true
api:
logger:
baud_rate: 0
uart:
tx_pin: GPIO1
rx_pin: GPIO3
baud_rate: 19200
rf_bridge:
id: mein_rf_chip
# --- DAS ZENTRALE SENDE-SKRIPT ---
# Das Skript sorgt dafür, dass Befehle sauber nacheinander verarbeitet werden
# und fängt das Einschalt-Problem ab.
script:
- id: sende_ventilator_stufe
mode: restart # Falls zwei Befehle kurz hintereinander kommen, bricht er den alten ab und nimmt den neuesten
then:
- delay: 50ms
- lambda: |-
int aktuelle_stufe = id(mein_ventilator).speed;
if (aktuelle_stufe == 1) {
mein_rf_chip->send_raw("AAB0260308042E01A41A4A28190818181908190908190909090819090819081818181819081909090955");
} else if (aktuelle_stufe == 2) {
mein_rf_chip->send_raw("AAB0260308044C017C175C281908181819081909081909090908190908190818181909081909090855");
} else if (aktuelle_stufe == 3) {
mein_rf_chip->send_raw("AAB0260308042E01AE1A4A28190818181908190908190909090819090819081818190819081909081955");
} else if (aktuelle_stufe == 4) {
mein_rf_chip->send_raw("AAB0280408041001C2012C177A381A0818181A081A0A081A0909090819090819081818190909081909081855");
} else if (aktuelle_stufe == 5) {
mein_rf_chip->send_raw("AAB0260308045601721A7228190818181908190908190909090819090819081819081819081908190955");
} else if (aktuelle_stufe == 6) {
mein_rf_chip->send_raw("AAB0260308044C017C178E28190818181908190908190909090819090819081819081909081908190855");
}
# --- DER VENTILATOR ---
fan:
- platform: template
name: "Deckenventilator"
id: mein_ventilator
icon: "mdi:ceiling-fan"
speed_count: 6
restore_mode: RESTORE_DEFAULT_OFF
# 1. AUSSCHALTEN
on_turn_off:
- rf_bridge.send_raw:
raw: "AAB0260308044C017C17B628190818181908190908190909090819090819081818190908190909081855"
# 2. EINSCHALTEN (Greift, wenn der Ventilator von AUS auf AN gestellt wird)
on_turn_on:
- script.execute: sende_ventilator_stufe
# 3. STUFENWECHSEL (Greift bei Änderungen im laufenden Betrieb)
on_speed_set:
- script.execute: sende_ventilator_stufe
# --- DER RICHTUNGSWECHSEL ---
switch:
- platform: template
name: "Deckenventilator Richtungswechsel"
icon: "mdi:directions-fork"
id: ventilator_richtung
turn_on_action:
- rf_bridge.send_raw:
raw: "AAB0260308044C017C1A3628190818181908190908190909090819090819081819090819081908181955"
- switch.turn_off: ventilator_richtung
# --- TIMER BUTTONS ---
button:
- platform: template
name: "Deckenventilator Timer 1 Std"
icon: "mdi:timer-sand"
on_press:
- logger.log: "Timer 1 Stunde gestartet..."
- fan.turn_on: mein_ventilator # Falls er noch aus war, einschalten
- delay: 1h
- fan.turn_off: mein_ventilator
- logger.log: "Timer 1 Stunde abgelaufen. Ventilator AUS."
- platform: template
name: "Deckenventilator Timer 2 Std"
icon: "mdi:timer"
on_press:
- logger.log: "Timer 2 Stunden gestartet..."
- fan.turn_on: mein_ventilator
- delay: 2h
- fan.turn_off: mein_ventilator
- platform: template
name: "Deckenventilator Timer 4 Std"
icon: "mdi:timer-off"
on_press:
- logger.log: "Timer 4 Stunden gestartet..."
- fan.turn_on: mein_ventilator
- delay: 4h
- fan.turn_off: mein_ventilator
Die Einbindung in Home Assistant
Dank der nativen API-Anbindung von ESPHome tauchen der Ventilator (fan.deckenventilator), der Switch für den Richtungswechsel und die drei Timer-Buttons völlig automatisch in Home Assistant auf. Ich verwalte meine Smart-Home-Komponenten modular und habe die Entitäten sauber über ein eigenes Package (packages/ventilator_gesamt.yaml) eingebunden, was meine Konfiguration extrem übersichtlich hält.
Das Ergebnis
Im Dashboard verwende ich nun die ganz normale Kachel-Karte (Tile Card). Ich habe dort einen einzigen, wunderbaren Schieberegler für alle 6 Stufen. Home Assistant rechnet die Stufen im Hintergrund automatisch in Prozentwerte um, das Icon fängt an zu rotieren und die Befehle knallen dank ESPHome verzögerungsfrei über die Bridge direkt zum Ventilator.
Der Umstieg von Tasmota auf ESPHome auf der mit Portisch geflashten Sonoff RF Bridge hat sich definitiv gelohnt, um aus einer unhandlichen Bastellösung eine perfekt integrierte Smart-Home-Komponente zu machen! Ein weiterer Pluspunkt auch Alexa kann dieser jetzt auch als Ventilator übergeben werden!