Mein neuestes Abenteuer mit dem Home Assistant in Verbindung mit FRITZ!DECT 301 beschäftigt sich mit einer smarten Heizungssteuerung für das Home-Office.

Wie es lief

Ach, was habe ich alles gebaut und gebastelt. Los ging es mit einem einfachen Zeitplan in der FRITZ!Box, der jeden Montag bis Freitag in der Arbeitszeit die Heizung ein- und danach wieder ausschaltete. Ich war's zufrieden.

Aber an Feiertagen, die zwischen Montag und Freitag lagen, lief die Heizung immer noch. Höchste Zeit, den Werktags-Sensor über den Home Assistant zu verbauen und in die Heizungssteuerung mit einzubeziehen. Dafür musste ich dann den Zeitplan aus der FRITZ!Box entfernen und ebenfalls in den Home Assistant übertragen.

Und im Urlaub? Urlaube sind ja keine Feiertage. Also noch einen Kalender in den Home Assistant integriert, der an Urlaubstagen die Heizung ebenfalls ausgeschaltet hält.

Oha, Gleitzeit und Überstunden: Mal starte ich früher, mal höre ich später auf. Also diesen Teil von Hand steuern? Und wie ist es am Wochenende, wenn man im Arbeitszimmer am privaten PC etwas bastelt?

Wie man es auch dreht und wendet – der Plan hatte inzwischen viel zu viele Variablen bekommen. Eigentlich wollte ich doch nur, dass die Heizung läuft, wenn ich im Raum bin! Aber wie kann ich das dem Home Assistant beibringen?

Wie es läuft

Ganz einfach! Ob im Büro jemand arbeitet kann man daran erkennen, dass einer der PCs im Büro eingeschaltet ist. Ein super-simples Rezept kann also prüfen, ob mindestens einer der Rechner dort an und im Netzwerk sichtbar ist, und schaltet entsprechend die Heizung an. Wenn keiner der Rechner im Netzwerk ist, wird die Heizung entsprechend ausgeschaltet.

Teil 1: Status der PCs überwachen

Dazu bauen wir uns einen Zustand, der eingeschaltet ist, wenn irgendeiner der PCs angeschaltet und im Netzwerk ist – und erst ausgeschaltet ist, wenn alle PCs ausgeschaltet sind. Das funktioniert wie folgt:

  1. Wenn ihr im Home Assistant und „Einstellungen > Geräte & Dienste > FRITZ!Box“ die Liste der Geräte aufmacht, seht ihr die Liste aller von eurer FRITZ!Box erkannten Netzwerkteilnehmer. In meinem Beispiel nennen wir die zwei PCs arbeitspferd und daddelkiste.
  2. Merkt euch die Namen der Netzwerkteilnehmer, die beim Einschalten eure Heizung einschalten sollen. Unter „Entwicklerwerkzeuge > Zustände“ findet ihr dazu den passenden Zustand, der mit device_tracker beginnt. In meinem Beispiel gehen wir von zwei PC-Trackern aus, device_tracker.arbeitspferd und device_tracker.daddelkiste.
  3. Mit dem Home Assistant Community Add-on: Visual Studio Code kann die configuration.yaml nun so erweitert werden, dass die beiden Tracker (oder beliebig viele Tracker) zu einem Sammel-Tracker zusammengefasst werden.
- name: "Home-Office PCs"
  unique_id: device_tracker_homeoffice
  state: "{{ is_state('device_tracker.arbeitspferd', 'home') or is_state('device_tracker.daddelkiste', 'home') }}"
  icon: "mdi:lan-connect"
  device_class: presence

Nach einmaligem Neustart sollte unter „Entwicklerwerkzeuge > Zustände“ der neue Tracker sichtbar sein. Er heißt dann wahrscheinlich binary_sensor.device_tracker_homeoffice.

Unser neuer kleiner Device-Tracker „Home-Office PCs“ kann nun zum Beispiel auf dem Dashboard verbaut werden. Sobald eines der Geräte eingeschaltet wird, wird auch der Tracker eingeschaltet – beim Ausschalten gibt es knapp zwei Minuten Verzögerung, bis der Home Assistant das Gerät wirklich als offline annimmt.

Teil 2: Heizung steuern

Der Home Assistant kann nun die Programmierung der FRITZ!Box verbessern. Dafür wird in der FRITZ!Box die Heizung zu 100% in den Spar-Modus geschickt, weil ab sofort der Home Assistant die Heizung zwischen Spar- und Komfort-Modus hin- und herschaltet. Die Verbindung ist dabei einfach:

  1. Wenn auch nur einer der PCs an ist, soll die Heizung im Komfort-Modus sein.
  2. Wenn keiner der PCs an ist, soll die Heizung im Spar-Modus sein.

Unter „Einstellungen > Automatisierungen & Szenen“ fügen wir dazu ein einfaches Rezept hinzu:

# Replace all occurences of `office` with your thermostat's identifier
# `device_id` has to be assigned via GUI
alias: "Office: Someone is there"
description: "Be nice, and turn on the heating if someone is using a PC in the office"
trigger:
  - platform: state
    entity_id:
      - binary_sensor.device_tracker_homeoffice
    from: "on"
  - platform: state
    entity_id:
      - binary_sensor.device_tracker_homeoffice
    to: "on"
action:
  - if:
      - condition: state
        entity_id: binary_sensor.device_tracker_homeoffice
        state: "on"
    then:
      - device_id: b46c4851235fb8c90f4a659b6e9a953d
        domain: climate
        entity_id: climate.office
        type: set_preset_mode
        preset_mode: comfort
    else:
      - device_id: b46c4851235fb8c90f4a659b6e9a953d
        domain: climate
        entity_id: climate.office
        type: set_preset_mode
        preset_mode: eco
mode: single

Erst mit der Zusammenfassung der beiden Zustände zu einem Tracker ist es sauber möglich, zwischen Spar- und Komfort-Modus hin- und herzuschalten. Wenn wir die Tracker trennen würden könnte es ansonsten passieren, dass das Ausschalten eines Rechners die Heizung deaktiviert, obwohl der andere Rechner eigentlich noch läuft.

Wie es laufen könnte

Tatsächlich kann man diese Idee auch auf andere Geräte ausdehnen, wie zum Beispiel Fernseher und Spielekonsolen, die ebenfalls im Internet hängen. Eine kleine Automatisierung könnte also abends die Heizung noch etwas länger an lassen, solange der Fernseher läuft.

Oder wie wäre es mit einem Sammel-Tracker, der die Smartphones aller Haushaltsteilnehmer als Schalter verwendet?


Andere Artikel zum Thema · · · · · ·

Zuletzt geändert am

fboës - Der Blog