Automatisch Ein- und Ausschalten

Ich habe meinen Backupserver viel zu lange durchgehend laufen lassen. Das möchte ich heute ändern. Der Rechner soll um 22:55 eingeschaltet werden, dann laufen die Backups, danach fährt er wieder runter, zuerst nur per Zeitschaltung via cronjob. Dafür werde ich Home Assistant verwenden. Wieso? Weil es einfach geht und ich es sowieso für den Zigbee-Stromschalter brauche.

Home Assistant Automation

Für diesen Zweck entwerfe ich zwei Automationen (so werden die automations wirklich auf Deutsch übersetzt und nicht, wie ich gedacht habe als Automatisierung), die den Backupserver zur richtigen Zeit einschaltet. Die zweite Automation überprüft, ob der Stromverbrauch in der letzten Minute unter 3 Watt liegt – dann ist der Rechner ausgeschaltet – und schaltet den Stromschalter wieder aus.

Zuerst muss man auf die Einstellungen gehen und dort auf “Automations & scenes” gehen:

Dann “Create Automation”:

“Create new automation”:

”+ Add Trigger”:

“Time and location”:

“Time pattern”:

Um 22:55 soll jeden Tag ausgelöst werden:

Dann bei “Then do” auf ”+ Add Action” klicken…

… und “Switch” auswählen und “Turn On”:

Dann noch ”+ Choose entity” und den Schalter des Geräts auswählen:

Nun auf “Save” klicken und Namen vergeben:

Überprüfung

Der Stromschalter ist aus:

Nachdem das Skript gestartet wurde (hier als Trockenlauf mit “Run”), geht der Strom an:

Mit einem manuell durchgeführten Wake-on-LAN-Befehl startet der Backupserver schließlich:

Der Stromverbrauch bezieht sich auf ein halbes Jahr Dauer-”Test”-Betrieb und ist viel zu viel – fast doppelt so hoher Verbrauch wie mein Kühlschrank!

Nur das ist eigentlich erst die halbe Miete, denn jetzt bleibt der Stromschalter einfach eingeschaltet bis zum nächsten Tag. Das heißt ich muss dem Server noch beibringen, dass er sich nach getaner Backup-Arbeit wieder ausschaltet und der Stromschalter sollte dann danach eigentlich auch wieder auf “aus” sein.

Der Chatbot aus China schlägt folgendes vor:

Da ich gerade beim Suchen nach einer Firefox-Alternative bin, nachdem Mozilla jetzt doch gerne die Userdaten verwursten möchte, probier ich das einmal mit dem Zen-Browser. Der basiert auch auf dem Firefox-Unterbau, aber ohne Datenweiterleitung. Der kann recht elegant zwei Tabs nebeneinander anzeigen lassen, was auf dem Laptop recht hilfreich sein kann:

Achja, um sich die yaml-Version anzeigen lassen zu können klickt man auf “Edit in YAML”:

Und schon hat man die “Textversion”, (die ja auch vom Chatbot so serviert wird) von unserer Bastelei in der grafischen Oberfläche:

alias: Backupserver-Strom-Start
description: Um 22:55 wird der Stromschalter eingeschaltet
triggers:
  - trigger: time_pattern
    hours: "22"
    minutes: "55"
conditions: []
actions:
  - action: switch.turn_on
    metadata: {}
    data: {}
    target:
      entity_id: switch.backupserver_ms5
mode: single

Hier ist der Vorschlag vom Sprachmodell, angepasst auf eine Minute:

alias: "Turn off plug after 1 minute of low power"
description: "Triggers when power <3W for 1 minutes"
trigger:
  - platform: numeric_state
    entity_id: sensor.zigbee_plug_power
    below: 3
    for: "00:01:00"
condition:
  - condition: state
    entity_id: switch.zigbee_plug_switch
    state: "on"
action:
  - service: switch.turn_off
    target:
      entity_id: switch.zigbee_plug_switch
  - service: persistent_notification.create
    data:
      title: "Plug Turned Off"
      message: "Power consumption dropped below 3W for 1 minutes."
mode: single

Jetzt erstellt man eine neue Automatisierung und wählt “Edit in YAML” aus…

… und fügt die Konfig ein:

Speichern:

Noch einmal die Automatisierung öffnen und die “Entities” anpassen…

… auf die tatsächliche Entität (bei “Power” wird die aktuelle Leistung in Watt ausgegeben):

Auch bei der Überprüfung, ob der Schalter überhaupt eingeschaltet ist (heißt “{Name}.switch})…

… und bei der “Then do” Aktion:

Die Benachrichtigung lasse ich einmal wie sie ist…

… aber in Zukunft überlege ich mir vielleicht eine bessere Lösung.

Zum wird der Backupserver noch einmal runtergefahren und eine Minute gewartet

Und der Schalter ist auch wirklich ausgestellt:

Wake on LAN automatisieren

Mit Wake on LAN kann man sehr komfortabel Rechner über das Netzwerk einschalten, sofern das BIOS des Computers das auch unterstützt (tun aber fast alle Rechner). Man braucht nur die MAC-Adresse des Ziel-PCs. Unter Linux lässt sich die einfach mit dem Befehl ip a herausfinden und dann aus der der Konsolenausgabe herauslesen.

Für die Umsetzung in Home Assistant habe ich wieder Deepseek befragt:

In den Einstellungen auf “Devices & services” gehen…

… auf ”+ Add Integration”:

Nach “Wake” suchen:

Hier MAC-Adresse eingeben:

Jetzt noch einmal zur ersten Automatisierung und eine weitere Aktion hinzufüge, nach “wait” suchen…

… und “Wait for time to pass (delay)” auswählen und fünf Sekunden einstellen:

Dann die Wake-on-LAN-Aktion hinzufügen:

Moment einmal, hat mich der Chatbot angeschwanert? Oder verstehe ich die Integration nicht ganz? Wieso habe ich beim Hinzufügen der Integration schon eine MAC-Adresse ausfüllen, müssen/dürfen nur, um gleich noch einmal mit einem MAC-Adressen Feld konfrontiert zu werden:

Ich habe die Automatisierung manuell gestartet, nichts passiert. Noch einmal und Server startet trotzdem nicht, die Benachrichtigung schaut verdächtig aus:

Beim dritten Versuch hat es geklappt. Ich habe noch einmal einen Komplettdurchlauf gemacht und der hat auch funktioniert.

Fazit

Das Einrichten der Automatisierungen hat sogar Spaß gemacht und war nicht besonders schwer. Besonders im Tandem mit einem Sprachmodell. Dabei wären die anderen Modelle genauso geeignet gewesen, so lange diese Internetsuchen durchführen können. Nur die Sache mit der doppelten MAC-Adressen-Eingabe habe ich nicht ganz verstanden, aber was soll’s.