[tl;dr] Hier schildere ich euch, wie ich das Starten und Runterfahren meines NAS automatisiert habe, ohne dass Wake-on-LAN funktioniert. Dabei setze ich auf TrueNAS Scale, Home Assistant und eine smarte Steckdose mit Tasmota Firmware.

Wie alles begann

Ich habe lange eine Synology NAS genutzt. Letztes Jahr bin ich durch eine Kickstarter Kampagne auf den ZimaCube aufmerksam geworden und habe mir die Version mit Intel N100 CPU bestellt. Darin habe ich 6 Harddrives und 4 SSDs verbaut, alles in einem netten, kompakten Gehäuse. Anstelle vom ZimaOS setze ich auf TrueNAS Scale. Ein nettes Setup mit ZFS und Unterstützung von Containern, VMs und vielem mehr.

Mein NAS steht im Arbeitszimmer und wird nur hochgefahren, wenn wir es brauchen oder Sicherungen gemacht werden. Das alte Synology NAS konnte mit einem Addon zeitgesteuert hochgefahren und auf wieder runtergefahren werden. Zusätzlich konnte ich das Synology NAS per Wake-on-LAN (WOL) aufwecken, das Herunterfahren ging entweder automatisch oder über einen Schalter im Home Assistant. Dieser Schalter hat zum Hochfahren ein WOL-Paket verschickt, das Herunterfahren ging über eine Home Assistant Integration. Der Home Assistant Schalter ist in einem Dashboard eingebaut, damit ist das Hoch- und runterfahren mit einem Fingertipp erledigt. Coole Sache.

Das Problem

Beim ZimaCube / TrueNAS geht das so nicht. Der ZimaCube ist eine normale PC-Plattform, und aus irgendeinem Grund funktioniert hier das Wake-on-LAN nicht mehr, obwohl im UEFI-BIOS alles richtig eingestellt ist. Egal was ich einstelle, der ZimaCube deaktiviert seine Netzwerk-Ports im Soft-Off, also wenn ich ihn vom Betriebsystem aus runterfahre. Anfangs ging das noch, aber irgendwas sorgt dafür, dass die LAN-Ports ausgehen. Damit funktioniert kein WOL.

In der Icewhale Community wurde ein Tutorial für den Auto Start geposted: [Tutorial]Power-On Auto Start Solution for ZimaCube. Damit fährt der ZimaCube automatisch hoch, sobald das Gerät mit Strom versorgt ist. Damit lässt sich arbeiten.

Home Assistant to the rescue

Im Home Assistant lassen sich alle möglichen Devices einbinden, so auch Smarte Steckdosen mit Tasmota (und anderen Firmwares). Ich habe noch ein paar Gosund EP2 Steckdosen, die ich noch mit Tasmota flashen wollte. Die lassen sich mittlerweile problemlos mit Tuya-Convert flashen. Wie das flashen funktioniert, und welche Voraussetzungen zu erfüllen sind, findet ihr auf der Webseite von Tuya-Convert. Wichtig ist eine Powercalibrierung durchzuführen, da der Stromverbrauch gemessen wird.

Mit einer solchen Steckdose kann ich den ZimaCube anschalten, den Stromverbrauch messen und ausschalten. Und das mache ich mir zu Nutze, um meinen NAS automatisch hochzufahren und nach Gebrauch wieder auszuschalten.

Home Assistant bietet Zeitpläne und Automatisierungen. Der Ablaufplan für die Automatisierung sieht so aus:

  1. Gemäß Zeitplan wird die Steckdose über eine Automatisierung eingeschalten, der NAS fährt hoch und geht online. Dinge passieren.
  2. Ist der Zeitpunkt zum Abschalten gekommen, ruft das Skript einen Funktionscall auf, der das TrueNAS runterfährt. Derweil wird der Strombedarf gemessen, um festzustellen, ob das NAS tatsächlich ausgegangen ist.
  3. Ist der Strombedarf für einen definierten Zeitraum unter 10 Watt, wird die Steckdose ausgeschaltet.

Implementierung

Tasmota Steckdose

Im Homeassistant habe ich die Tasmota Steckdose regulär eingebunden. Die Steckdose heißt in meiner Home Assistant Installation ZimaCube NAS Tasmota. Die Sensoren und Schalter belasse ich im Standard, einzig der Home Assistant Schalter wird ausgeblendet (man weiß ja nie), kann aber in Automatisierungen und Skripten verwendet werden.

TrueNAS Home Assistant Integration

Im Home Assistant habe ich das TrueNAS auf dem Zimacube regulär eingebunden. Das NAS heißt in meiner Home Assistant Installation zimacube. Die Sensoren und Schalter belasse ich auch hier im Standard.

Zeitplan

Im Home Assistant unter Einstellungen/Geräte & Dienste/Helfer wird ein Zeitplan angelegt. Über den Button rechts unten im Browserfenster “+ Helfer erstellen” öffnet sich ein Dialog, darin runterscrollen und Zeitplan auswählen. Es öffnet sich ein weiteres Fenster mit einer Kalenderansicht einer vollen Woche, und darin lässt sich der Zeitplan anlegen. Wichtig ist, dass die Zeiträume ausgewählt sind, in denen der ZimaCube online eingeschaltet sein soll.

Skript

Zum geordneten Runterfahren und AUsschalten ist ein Skript notwendig. Das Skript wird im Home Assistant unter Einstellungen/Automatisierung & Szenen/Skripte angelegt. Ein Klick auf den blauen Button “+ Skript erstellen” rechts unten im Browserfenster führt euch zum Dialog. Mein Skript heißt “ZimaCube ausschalten” und sieht so aus: ``

alias: ZimaCube ausschalten
sequence:
  - action: truenas.system_shutdown
    metadata: {}
    data: {}
    target:
      entity_id: sensor.zimacube_system_uptime
  - delay:
      hours: 0
      minutes: 0
      seconds: 30
      milliseconds: 0
  - if:
      - condition: numeric_state
        entity_id: sensor.zimacube_nas_tasmota_energy_power
        below: 10
        value_template: W
    then:
      - action: switch.turn_off
        metadata: {}
        data: {}
        target:
          entity_id: switch.zimacube_nas_tasmota_tasmota_switch_zimacube
    else:
      - delay:
          hours: 0
          minutes: 0
          seconds: 30
          milliseconds: 0
      - action: switch.turn_off
        metadata: {}
        data: {}
        target:
          entity_id: switch.zimacube_nas_tasmota_tasmota_switch_zimacube
description: >-
  Fährt den ZimaCube NAS über die TrueNAS Integration herunter. Wartet dann 30 Sekunden, ob die Strommessung unter 10 Watt liegt und schaltet dann den Tasmota Stecker aus.

Automatisierung

Hier passiert die Magie. In der Automatisierung werden zwei Trigger angelegt, die abhängig vom Zeitplan getriggert werden. Anhand des aktiven Triggers entscheidet sich, was die Automatisierung macht. Entweder wird die Steckdose eingeschalten, und der ZimaCube startet, oder das oben angelegte Skript wird aufgerufen, fährt den ZimaCube runter, wartet 45 Sekunden und schaltet die Steckdose nach 30 Sekunden Inaktivität (unter 10 Watt Stromverbrauch) aus. Damit das klappt, muss die Stromkalibrierung der Tasmota Steckdose gemacht sein. Die Automatisierung sieht so aus:

alias: NAS Automatisierung
description: ""
triggers:
  - entity_id:
      - schedule.nas_zeitplan
    from: "off"
    to: "on"
    id: NAS-an
    trigger: state
  - entity_id:
      - schedule.nas_zeitplan
    from: "on"
    to: "off"
    id: NAS-aus
    for:
      hours: 0
      minutes: 0
      seconds: 45
    trigger: state
conditions: []
actions:
  - choose:
      - conditions:
          - condition: trigger
            id:
              - NAS-an
        sequence:
          - action: switch.turn_on
            metadata: {}
            data: {}
            target:
              entity_id: switch.zimacube_nas_tasmota_tasmota_switch_zimacube
      - conditions:
          - condition: trigger
            id:
              - NAS-aus
        sequence:
          - action: script.zimacube_ausschalten
            metadata: {}
            data: {}
mode: single

Das ganze funktioniert seit einer Woche fehlerfrei. Hast Du Fragen? Dann ab in die Kommentare damit.