Volle Kontrolle bei Stromausfall: USV Integration mit Home Assistant! [NUT]

1 „Gefällt mir“

Danke für das tolle Video
Läuft soweit bei mit mit APC USV 900.
Kannst du vielleicht erklären, wie eine Automation aussehen muß, die von dem Zustand der USV getriggert wird und z.b. mein QNAP NAS runterfährt bei 30 % und mein PC bei 50% Restenergie ?
Habe gerade keine Idee dazu.
Danke !

Danke für dein Feedback & kommt im wesentlichen drauf an, wie deine Geräte in HA integriert sind. Die QNAP kannst du ja vermutlich über ein Shell-Skript herunterfahren wie Daniel es im Video zeigt, für Windows wäre vermutlich Hass.Agent eine Option.

Die Trigger für die Automation sind ja selbsterkärend :wink:

1 „Gefällt mir“

Qnap läuft. Ist leider etwas anders als Daniel bei seinem NAS zeigt. Es gibt keine Power Schalter als Entität- Geht über ein script was aber auch iwi speziell ist. Vielleicht braucht es jemand:

shell_command:
  turn_off_qnap: ssh -m hmac-sha2-512 -i /config/ssh_keys/id_rsa_homeassistant -o StrictHostKeyChecking=no admin@xx.xx.xx.xx "sbin/poweroff"

Herunterfahren des PCs mit Hass.Agent funktioniert.- Hier auch ein kleiner Tipp. Achtet darauf, das ihr den Entitätstyp im UI vom Hass.Agent von default “Knopf” auf “Schalter” ändert.

1 „Gefällt mir“

Leider hab ich schon eine USV im Betrieb, konnte es also nicht nachbauen, aber von der angenehmen Stimme lass ich mich gern berieseln :laughing:

Bei einer Back-UPS von APC hats gefühlt 3000 Sensoren

Ich hab die USV bei mir im ServerManagement integriert, da ich den um 23:30 Herunter fahren lasse (via RPC Shutdown), morgens 6 Uhr wieder hochfahren lasse (via Shelly Plus Uni) und ebenso reagiert die Automation auf Events der USV.
Wenn die USV in den Battery-Modus wechselt für mehr als 30Sekunden ist es wohl keine Stromschwankung mehr und der Server fährt runter, somit bleibt der Akku länger für HA,Openwrt, DSL-Modem und die POE Wlan-Infrastuktur am Leben.

Als kleine Inspiration:

alias: _V3_System_Server_Management
description: ""
trigger:
  - platform: numeric_state
    entity_id:
      - sensor.voltmeter_server_onpower_voltmeter
    below: 0.2
    id: ServerOff
    for:
      hours: 0
      minutes: 0
      seconds: 15
  - platform: numeric_state
    entity_id:
      - sensor.voltmeter_server_onpower_voltmeter
    above: 4
    id: ServerOn
  - platform: state
    entity_id:
      - sensor.backupsrs1500g_status
    from: null
    to: On Battery Battery Discharging
    for:
      hours: 0
      minutes: 0
      seconds: 30
    id: OnBatteryDischarging
  - platform: state
    entity_id:
      - sensor.backupsrs1500g_status
    from: null
    to: Online Battery Charging
    for:
      hours: 0
      minutes: 0
      seconds: 0
    id: OnlineCharging
  - platform: time
    at: input_datetime.time_server_shutdown
    id: ServerAutoShutdown
  - platform: time
    at: input_datetime.time_server_start
    id: ServerAutoStart
condition: []
action:
  - choose:
      - conditions:
          - condition: trigger
            id:
              - ServerOn
        sequence:
          - service: input_boolean.turn_on
            metadata: {}
            data: {}
            target:
              entity_id: input_boolean.server_powerstate
        alias: ServerStatus On
      - conditions:
          - condition: trigger
            id:
              - ServerOff
        sequence:
          - service: input_boolean.turn_off
            metadata: {}
            data: {}
            target:
              entity_id: input_boolean.server_powerstate
        alias: ServerStatus Off
      - conditions:
          - condition: trigger
            id:
              - ServerAutoStart
          - condition: state
            entity_id: input_boolean.server_automgmt
            state: "on"
          - condition: state
            entity_id: input_boolean.server_powerstate
            state: "off"
        sequence:
          - service: switch.turn_on
            metadata: {}
            data: {}
            target:
              entity_id: switch.bo_itserver_powermgmt_power
          - delay:
              hours: 0
              minutes: 0
              seconds: 0
              milliseconds: 100
          - service: switch.turn_off
            metadata: {}
            data: {}
            target:
              entity_id: switch.bo_itserver_powermgmt_power
        alias: AutoStart
      - conditions:
          - condition: trigger
            id:
              - ServerAutoShutdown
          - condition: state
            entity_id: input_boolean.server_automgmt
            state: "on"
          - condition: state
            entity_id: input_boolean.server_powerstate
            state: "on"
        sequence:
          - service: notify.all_mobiledevices
            metadata: {}
            data:
              data:
                push:
                  interruption-level: time-sensitive
              title: Automatischer Server Shutdown
              message: >-
                Der Server wird in 30 Sekunden herunterfahren, der E-Mail
                Empfang und Versand ist dann nicht mehr möglich.
          - delay:
              hours: 0
              minutes: 0
              seconds: 30
              milliseconds: 0
          - service: hassio.addon_stdin
            data:
              addon: core_rpc_shutdown
              input: SRVHYPV2
          - wait_for_trigger:
              - platform: numeric_state
                entity_id:
                  - sensor.voltmeter_server_onpower_voltmeter
                below: 0.2
                for:
                  hours: 0
                  minutes: 0
                  seconds: 15
            timeout:
              hours: 0
              minutes: 0
              seconds: 0
              milliseconds: 0
            continue_on_timeout: true
          - service: notify.all_mobiledevices
            metadata: {}
            data:
              data:
                push:
                  interruption-level: time-sensitive
              title: Automatischer Server Shutdown
              message: Der Server ist aus.
        alias: AutoShutdown
      - conditions:
          - condition: trigger
            id:
              - OnlineCharging
          - condition: time
            after: input_datetime.time_server_start
            before: input_datetime.time_server_shutdown
        sequence:
          - service: switch.turn_on
            metadata: {}
            data: {}
            target:
              entity_id: switch.bo_itserver_powermgmt_power
          - delay:
              hours: 0
              minutes: 0
              seconds: 0
              milliseconds: 100
          - service: switch.turn_off
            metadata: {}
            data: {}
            target:
              entity_id: switch.bo_itserver_powermgmt_power
          - service: notify.all_mobiledevices
            metadata: {}
            data:
              data:
                push:
                  interruption-level: time-sensitive
              title: Stromausfall zu Ende
              message: >-
                Die Battery wird wieder geladen, weshalb der Server wieder
                gestartet wird.
        alias: BatteryFlow OnlineCharging
      - conditions:
          - condition: trigger
            id:
              - OnBatteryDischarging
          - condition: state
            entity_id: input_boolean.server_powerstate
            state: "on"
        sequence:
          - service: notify.all_devices
            metadata: {}
            data:
              title: Stromausfall IT-Schrank
              message: >-
                Die USV ist auf Batterie gewechselt! Der Server wird zur
                Sicherheit heruntergefahren, so lange ist kein E-Mail Verkehr
                möglich. Aktuelle RestZeit der Batterie noch
                {{as_datetime(states('sensor.backupsrs1500g_akkulaufzeit')).strftime('%Hh:%Mm:%Ss')
                }}.
              data:
                push:
                  sound:
                    name: default
                    critical: 1
                    volume: 1
          - service: hassio.addon_stdin
            data:
              addon: core_rpc_shutdown
              input: SRVHYPV2
          - wait_for_trigger:
              - platform: numeric_state
                entity_id:
                  - sensor.voltmeter_server_onpower_voltmeter
                below: 0.2
                for:
                  hours: 0
                  minutes: 0
                  seconds: 15
            continue_on_timeout: true
          - service: notify.all_devices
            metadata: {}
            data:
              title: Stromausfall IT-Schrank
              message: Der Server wurde heruntergefahren.
              data:
                push:
                  sound:
                    name: default
                    critical: 1
                    volume: 1
          - service: input_boolean.turn_off
            metadata: {}
            data: {}
            target:
              entity_id: input_boolean.server_automgmt
        alias: BatteryFlow BatteryDischarging
mode: parallel
max: 10

Je nach Trigger wird die passende Aktion in Gang gesetzt, funktioniert erstaunlich gut

Hallo zusammen,
Steh gerade was auf dem Schlauch,
wie kann man den NUT netserver auch anderen NUT Clients auf anderen Servern zur Verfügung stellen? Im HA klappt das natürlich über den Docker Hostname.
Beste Grüße
Averall

Ip Adresse von Home Assistant und den Port den Du in den Einstellungen des NUT Addons festgelegt hast.

Gruß
Osorkon

Hi,
Danke für die Rückmeldung, richtig. Mein Denkfehler liegt also nicht an mir.
In der NUT App von meinem Unraid Server kann ich die ip nur ohne Port eingeben. Mal sehen ob ich da ne eigene config bauen kann. Oder mal auf anderes NAS Betriebssystem umsteige.
Beste Grüße
Averall

@der_Mirco
eine tolle Automation die du da gemacht hast. Mich interessiert vorallem der Teil in dem du

notify.all_devices

und

notify.all_mobiledevices

nutzt.
wie hast du die definiert ?

Danke !

@all

neues kleine Problem. Wollte den Piepser wieder einschalten. Bekomme die Meldung:

Error running command beeper.enable, Error running: INSTCMD APC beeper.enable: ERR ACCESS-DENIED

add on Instanz löschen und neuen Nutzer anlegen half leider auch nicht…