Proxmox API Home Assistant Backup automatisieren – VMs überwachen & sichern

👉 Direkt auf YouTube schauen und abonnieren:
Smart Home & More auf YouTube

Einleitung

Proxmox API Home Assistant Backup – in diesem Praxis‑Guide lernst du, wie du mithilfe der Proxmox API den Zustand deiner virtuellen Maschinen abfragst, Dashboards in Home Assistant erstellst und Backups automatisierst. Statt auf HACS setzt du dabei auf REST‑Sensoren und API‑Calls, um deine VMs sicher zu überwachen und zu sichern.

Vorbereitung in Proxmox – Benutzer, Token und Rechte einrichten

Bevor du in Home Assistant loslegen kannst, musst du Proxmox entsprechend vorbereiten.

API‑Benutzer und Token anlegen

Erstelle im Proxmox DataCenter einen neuen User (z. B. homeassistant) ohne Passwort, denn wir arbeiten mit API‑Tokens. Wähle als Realm pve und lege anschließend unter API Token einen neuen Token für diesen User an. Achte darauf, Privilege Separation zu deaktivieren. Kopiere dir den Token sofort, da er später nicht mehr angezeigt wird.

Proxmox API Home Assistant Backup - User

Proxmox API Home Assistant Backup - API Token

Rollen konfigurieren

Für den Zugriff auf VM‑Informationen und Backups benötigen wir passende Rollen:

  • Lege eine neue Rolle (z. B. homeassistant-role) mit den Privilegien VM.Audit, Datastore.Audit und Datastore.AllocateSpace, VM.Backup an.
  • Weise diese Rolle dem User auf den benötigten Pfaden zu: dem Node (/nodes/pve-lerch) und den VMs (/vms/*).

Diese granularen Berechtigungen sorgen dafür, dass Home Assistant lediglich die benötigten Daten abrufen und einen Proxmox API Home Assistant Backup auslösen darf.

Proxmox API Home Assistant Backup - Rollen definieren

Home Assistant konfigurieren – REST‑Sensoren anlegen

Im nächsten Schritt richten wir Home Assistant ein. Falls du noch keinen File Editor installiert hast, installiere diesen im Add-on Store von Home Assistant.

Proxmox API Home Assistant Backup - Add-on File Editor

REST‑Sensor für VM‑Informationen

Über den YAML‑Eintrag rest: definieren wir einen Sensor, der regelmäßig einen GET‑Request an die Proxmox API sendet. Die URL lautet beispielsweise:

https://<proxmox-host>/api2/json/nodes/pve-larch/qemu

Als Header gibst du Authorization: PVEAPIToken=<user>@pve!<token-id>=<token> an. Im value_template kannst du die JSON‑Antwort weiterverarbeiten und die Daten in Attributen speichern.

  - resource: https://192.168.101.69:8006/api2/json/nodes/pvelerch/qemu
    method: GET
    headers:
      Authorization: "PVEAPIToken=homeassistant@pve!proxmox=be729a21-e76b-430b-84bf-40d096d035a6"
    verify_ssl: false
    scan_interval: 10
    sensor:
      - name: "PVELerch VM Raw"
        unique_id: pvelerch_vm_raw
        value_template: "OK"
        json_attributes:
          - data

Vergiss nicht, Home Assistant neu zu starten, damit der Sensor angelegt wird. Anschließend siehst du eine Liste aller VMs als JSON‑Attribut, inklusive ihrer Namen, IDs und Status.

REST‑Sensor für LXC‑Container

Für LXC‑Container wiederholst du den Sensor mit dem Endpunkt .../lxc. Denke daran, dass nicht alle API‑Attribute identisch sind – die Belegung des Festplattenspeichers (disk-usage) steht nur bei Containern zur Verfügung.

  - resource: https://192.168.101.69:8006/api2/json/nodes/pvelerch/lxc
    method: GET
    headers:
      Authorization: "PVEAPIToken=homeassistant@pve!proxmox=be729a21-e76b-430b-84bf-40d096d035a6"
    verify_ssl: false
    scan_interval: 10
    sensor:
      - name: "PVELerch LXC Raw"
        unique_id: pvelerch_lxc_raw
        value_template: "OK"
        json_attributes:
          - data

Hier nochmal beide Rest Sensoren für die Configuration.Yaml. Beachte, dass am Anfang einmal „rest:“ stehen muss.

rest:
  - resource: https://192.168.101.69:8006/api2/json/nodes/pvelerch/qemu
    method: GET
    headers:
      Authorization: "PVEAPIToken=homeassistant@pve!proxmox=be729a21-e76b-430b-84bf-40d096d035a6"
    verify_ssl: false
    scan_interval: 10
    sensor:
      - name: "PVELerch VM Raw"
        unique_id: pvelerch_vm_raw
        value_template: "OK"
        json_attributes:
          - data
          
  - resource: https://192.168.101.69:8006/api2/json/nodes/pvelerch/lxc
    method: GET
    headers:
      Authorization: "PVEAPIToken=homeassistant@pve!proxmox=be729a21-e76b-430b-84bf-40d096d035a6"
    verify_ssl: false
    scan_interval: 10
    sensor:
      - name: "PVELerch LXC Raw"
        unique_id: pvelerch_lxc_raw
        value_template: "OK"
        json_attributes:
          - data

Dashboard gestalten – Markdown‑Karte für VM‑Übersicht

Um die Daten ansprechend zu visualisieren, kannst du eine Markdown‑Karte in deinem Home‑Assistant‑Dashboard einfügen. Im Template liest du die Attribute der Sensoren aus und listest jede VM mit Name, Uptime, Status und, bei LXC‑Containern, prozentual belegtem Speicherplatz auf.

Proxmox API Home Assistant Backup - Mark Down Karte
{% set vms = state_attr('sensor.pvelerch_vm_raw', 'data') or [] %}
{% set lxcs = state_attr('sensor.pvelerch_lxc_raw', 'data') or [] %}

## 🖥️ Virtuelle Maschinen (QEMU)

{% for vm in vms | sort(attribute='vmid') %}
  {% set days = vm.uptime // 86400 %}
  {% set hours = (vm.uptime % 86400) // 3600 %}
  {% set minutes = (vm.uptime % 3600) // 60 %}
  {% if days > 0 %}
    {% set uptime_str = days ~ 'd ' ~ hours ~ 'h' %}
  {% else %}
    {% set uptime_str = hours ~ 'h ' ~ minutes ~ 'm' %}
  {% endif %}
- **{{ vm.vmid }}** | {{ vm.name }} | Uptime: {{ uptime_str }} | {{ "🟢" if vm.status == "running" else "🔴" }}
{% endfor %}

## 📦 LXC-Container

{% for lxc in lxcs | sort(attribute='vmid') %}
  {% set days = lxc.uptime // 86400 %}
  {% set hours = (lxc.uptime % 86400) // 3600 %}
  {% set minutes = (lxc.uptime % 3600) // 60 %}
  {% if days > 0 %}
    {% set uptime_str = days ~ 'd ' ~ hours ~ 'h' %}
  {% else %}
    {% set uptime_str = hours ~ 'h ' ~ minutes ~ 'm' %}
  {% endif %}
- **{{ lxc.vmid }}** | {{ lxc.name }} | Disk: {{ ((lxc.disk / lxc.maxdisk) * 100) | round(1) if lxc.maxdisk and lxc.maxdisk > 0 else 'n/a' }} % | Uptime: {{ uptime_str }} | {{ "🟢" if lxc.status == "running" else "🔴" }}
{% endfor %}

So siehst du live, wenn eine VM gestoppt wird oder startet. Über Automationen kannst du sogar Benachrichtigungen verschicken, wenn sich der Status ändert. Achte darauf, dass du die Entitäten auf deine Entitätsnamen anpasst.

sensor.pvelerch_vm_raw

sensor.pvelerch_lxc_raw

Monitoring & Test – Live‑Überwachung von VMs

Teste deine Konfiguration, indem du eine VM in Proxmox stoppst und wieder startest. Die Änderungen sollten in der Markdown‑Karte nach dem nächsten Scan‑Intervall sichtbar sein. Dieses Szenario zeigt, wie zuverlässig die REST‑API im Zusammenspiel mit Home Assistant funktioniert.

Backups per API auslösen

Eines der mächtigsten Features der Proxmox API ist die Möglichkeit, Backups zu starten.

Rollen erweitern

Erweitere deine Rolle um die Berechtigungen VM.Backup und Datastore.AllocateSpace, damit der User Backups auslösen darf ( haben wir schon im ersten Schritt getan ). Vergiss nicht, auch den Storage‑Pfad (/storage) mit dieser Rolle zu verknüpfen.

Proxmox API Home Assistant Backup - User Zugriffsrechte

REST‑Command für VZDump

In Home Assistant legst du unter rest_command: einen neuen Befehl an. Die URL endet diesmal auf /vzdump, die Methode ist POST, und als Payload übergibst du Parameter wie vmid, mode (z. B. snapshot), storage und compress.

rest_command:
  pvelerch_backup:
    url: "https://192.168.101.69:8006/api2/json/nodes/pvelerch/vzdump"
    method: POST
    headers:
      Authorization: "PVEAPIToken=homeassistant@pve!proxmox=be729a21-e76b-430b-84bf-40d096d035a6"
      Content-Type: "application/x-www-form-urlencoded"
    payload: "vmid=100,101,104,106,108,112,113,114,116,119,102,103,105&mode=snapshot&storage=PBS&compress=zstd"
    verify_ssl: false

Ein Aufruf dieses REST‑Commands startet sofort den Backup‑Job in Proxmox. Über die Home‑Assistant‑Entwicklerwerkzeuge kannst du den Befehl testen. In einer Automation oder auf einem Button platziert, kannst du einen Proxmox API Home Assistant Backup sogar zeit‑ oder ereignisgesteuert auslösen.

Fazit & Ausblick

Mit ein wenig Konfigurationsaufwand lässt sich die Proxmox API hervorragend in Home Assistant integrieren. Du kannst den Zustand deiner VMs und LXC‑Container überwachen, in Dashboards visualisieren und sogar Backups per Knopfdruck starten. Nutze diese Lösung als Grundlage für weitere Automatisierungen, zum Beispiel um Benachrichtigungen zu verschicken oder externe Dienste einzubinden.

Wenn du mehr über Energie‑Management erfahren willst, schau dir auch unseren Beitrag zur EVCC‑Einbindung in Home Assistant an. Für Einsteiger in Proxmox empfehlen wir den Artikel Proxmox Grundinstallation Schritt für Schritt.

Link‑Liste

🔥 Alte Geräte, neue Tricks: So steuerst du IR-Fernbedienungen mit Home Assistant & Broadlink! 📱🧠

👉 Direkt auf YouTube schauen und abonnieren:
Smart Home & More auf YouTube

In diesem Beitrag zeige ich dir Schritt für Schritt, wie du mithilfe des Broadlink RM4 Mini und der SmartIR Custom Component deine alten IR-Geräte – z. B. Klimaanlagen, Fernseher oder Musikanlagen – smart steuerbar machst.

Mit dieser Lösung lassen sich auch ältere Geräte ganz einfach in Home Assistant integrieren – sogar mit grafischer Oberfläche zur Klimasteuerung!


📦 Was du brauchst

  • Broadlink RM4 Mini (IR-Version)*
  • Die Broadlink-App (Android/iOS)
  • Home Assistant (inkl. Zugriff auf Entwicklerwerkzeuge)
  • HACS (Home Assistant Community Store)
  • Optional: Temperatur- & Luftfeuchtigkeitssensor


🔧 Schritt-für-Schritt-Anleitung

H2: Broadlink RM4 Mini in Betrieb nehmen

  1. Broadlink-App installieren und Benutzerkonto anlegen
  2. Gerät über „Universal Remote“ hinzufügen (RM4 Mini, IR-Version)
  3. Wichtig: Sperrfunktion in den Geräteeinstellungen deaktivieren
  4. Gerät benennen (z. B. „Schlafzimmer“) und fertig einrichten


H2: Integration in Home Assistant

  1. In Home Assistant unter Einstellungen → Geräte & Dienste
  2. Broadlink wird meist automatisch erkannt → sonst manuell hinzufügen
  3. Gerät benennen und Bereich festlegen
  4. Überprüfen, ob Entität sichtbar ist


H2: IR-Befehle einlernen

  1. Öffne die Entwicklerwerkzeuge → Dienste
  2. Service: remote.learn_command auswählen
  3. Entität: dein Broadlink-Gerät
  4. Geräte- & Befehlsnamen festlegen (z. B. Gerät: „Klimaanlage“, Befehl: „power_on“)
  5. Taste auf der Fernbedienung drücken – LED blinkt – Befehl wird gespeichert


H2: IR-Befehl senden & testen

  1. Service: remote.send_command aufrufen
  2. Entität, Geräte- und Befehlsname wie oben verwenden
  3. Testen – die Klimaanlage oder der Fernseher sollte reagieren


H2: Automatisierungen erstellen

  1. In Einstellungen → Automatisierungen & Szenen neue Automation erstellen
  2. Auslöser z. B. eine Uhrzeit
  3. Aktion: Service remote.send_command
  4. Entität, Geräte- & Befehlsname eintragen
  5. Speichern – fertig!


🌡️ Komfort mit SmartIR

Mit SmartIR bekommst du eine grafische Klimasteuerung wie bei modernen Thermostaten – sogar mit Temperaturanzeige, Moduswahl und Sollwerten.


H3: Voraussetzungen

  • Installation von HACS (falls noch nicht vorhanden)
  • SmartIR über HACS oder manuell in /custom_components/smartir ablegen
  • Home Assistant einmal neustarten


H3: Konfiguration in der configuration.yaml

smartir:

climate:
  - platform: smartir
    name: Comfee Klimaanlage
    unique_id: comfee_r51m
    device_code: 1121
    controller_data: remote.schlafzimmer
    temperature_sensor: sensor.thermostat_schlafzimmer_temperatur
#    humidity_sensor: sensor.humidity
#    power_sensor: binary_sensor.ac_power

➡️ Den Device Code (1121) findest du auf der Fernbedienung oder durch eine Suche in der SmartIR-Datenbank (Tipp: ChatGPT hilft bei der Code-Suche anhand der Modellnummer!).


H3: Dateien manuell hochladen (wenn kein HACS)

  1. GitHub-Seite von SmartIR öffnen: https://github.com/smartHomeHub/SmartIR
  2. ZIP herunterladen, entpacken
  3. Ordner smartir nach /config/custom_components/ kopieren
  4. Home Assistant neu starten
  5. Konfiguration prüfen & Gerät erscheint als neue Entität


✅ Fazit

Mit dem Broadlink RM4 Mini und SmartIR kannst du selbst ältere IR-Geräte einfach in Home Assistant einbinden – ohne proprietäre Cloud-Lösungen, komplett lokal steuerbar.

So steuerst du deine Klimaanlage, den TV oder auch die Musikanlage ganz bequem per Automatisierung, App oder Dashboard-Karte!


📥 Nützliche Links


🙌 Unterstütze den Kanal

Hat dir der Beitrag gefallen? Dann…

👍 Like das Video
💬 Kommentiere, wenn du Fragen hast
🔔 Abonniere meinen YouTube-Kanal für mehr Smart-Home-Content

Effizient und Individuell: Home Assistant Blaupause in nur 20 Minuten erstellen!

Smart ohne Stress: Deine individuelle Home Assistant Blaupause in 20 Minuten – Keine Programmierkenntnisse erforderlich! Bonus: Lade den Blueprint von meiner Blog-Seite herunter, wenn du dir die Arbeit sparen möchtest!

Diese ZigBee Produkte verwende ich* :

Die Anleitung zu den Home Assistant Selectors findest du hier:

Selectors – Home Assistant (home-assistant.io)

Verwendete Automatisierungsvorlage:

alias: Bewegung_Blueprint
description: ""
trigger:
  - platform: state
    entity_id:
      - binary_sensor.bewegungsmelder_buro_kuhlschrank_occupancy
    to: "on"
    id: Bewegung erkannt
  - platform: state
    entity_id:
      - binary_sensor.bewegungsmelder_buro_kuhlschrank_occupancy
    to: "off"
    for:
      hours: 0
      minutes: 2
      seconds: 0
condition: []
action:
  - if:
      - condition: trigger
        id:
          - Bewegung erkannt
      - condition: numeric_state
        entity_id: sensor.bewegungsmelder_buro_kuhlschrank_illuminance_lux
        below: 50
    then:
      - service: light.turn_on
        metadata: {}
        data: {}
        target:
          entity_id:
            - light.buro_klavinova_oben
      - service: switch.turn_on
        target:
          entity_id: switch.sonoff_octo_print
        data: {}
    else:
      - service: light.turn_off
        metadata: {}
        data: {}
        target:
          entity_id: light.buro_klavinova_oben
      - service: switch.turn_off
        target:
          entity_id: switch.sonoff_octo_print
        data: {}
mode: single

Beispiel Blueprint :

Wenn du die Blaupause verwenden möchtest, würde ich mich sehr darüber freuen, wenn du meinen Kanal abonnierst. Danke 🙂

blueprint:
  name: Bewegungserkennung
  description: Schaltet Lichter ein, wenn Bewegung erkannt wird und eine Helligkeit unterschritten ist
  domain: automation
  author: smart home & more
  input:
      lichter_input:
        name: Lichter
        default: {}
        selector:
            entity:
              domain:
                - light    
      schalter_input:
        name: Schalter
        default: {}
        selector:
            entity:
              domain:
                - switch
      bewegungsmelder_input:
        name: Bewegungsmelder
        selector:
            entity:
              domain:
                - binary_sensor
              device_class: motion
      lichtsensor_input:
        name: Licht Sensor
        selector:
          entity: 
            domain:
              - sensor
            device_class: illuminance
      lichtsensor_value_input:
        name: Licht Intensität
        description: Licht wird eingeschaltet, wenn der Wert unter dem Eingabewert liegt
        default: 400
      triggerzeit_input:
        name: Einschalt-Zeit
        description: Zeitspanne , wie lange das Licht eingeschaltet sein soll
        selector:
          number:
            min: 0
            max: 60
            unit_of_measurement: minutes
mode: single
trigger:
  - platform: state
    entity_id: !input bewegungsmelder_input
    to: "on"
    id: Bewegung erkannt
  - platform: state
    entity_id: !input bewegungsmelder_input
    to: "off"
    for:
      hours: 0
      minutes: !input triggerzeit_input
      seconds: 0
condition: []
action:
  - if:
      - condition: trigger
        id:
          - Bewegung erkannt
      - condition: numeric_state
        entity_id: !input lichtsensor_input
        below: !input lichtsensor_value_input
    then:
      - service: light.turn_on
        target:
          entity_id: !input lichter_input
      - service: switch.turn_on
        target:
          entity_id: !input schalter_input
    else:
      - service: light.turn_off
        target:
          entity_id: !input lichter_input
      - service: switch.turn_off
        target:
          entity_id: !input schalter_input


Smarte Weihnachtsbaumbeleuchtung mit Home Assistant steuern

Home Assistant & Beleuchtung Weihnachtsbaum Twinkly

Im vorherigen Teil der Weihnachtsserie habe ich euch vorgestellt, wie man mit Home Assistant eine intelligente Steckdose verwendet um nahezu jede Beleuchtung smart zu machen. Heute möchte ich euch die Lichterkette von Twinkly vorstellen. Diese kommt mit einer App, aber ich bin kein Freund von vielen verschiedenen Apps zur Steuerung von Beleuchtungen. Wie man die Twinkly Lichterkette mit Home Assistant automatisiert und auch die Effekte verändern kann, wird in diesem Video gezeigt. Dazu verwenden wir Automatisierungen und ein spezielles Blueprint, welches auch für andere Anwendungsfälle sehr gut verwendet werden kann.

Die Twinkly Lichterkette bekommt ihr hier *:

Das Blueprint zum Video ( Blueprint Simple Scene Toggle V3) findet ihr hier:

Links: Blueprint Simple Scene Toggle V3:

https://community.home-assistant.io/t/simple-scene-toggle/389779

Info: Im Video habe ich gesagt, dass der Automatismus alle 30 Sekunden getriggert wird. Das ist falsch. Die 30. Sekunde jeder Minute wird getriggert. D.h. jede Minute wird ein Trigger ausgelöst. Sorry, für den Fehler . Möchtet ihr z.B. jede 30 Sekunden triggern, so müsst ihr bei der Automatisierung “ /30 “ bei Sekunden eintragen.

Hier die Automatisierung Toggle Weihnachtsbaum:

alias: Toggle Weihnachtsbaum
description: ""
trigger:
  - platform: time_pattern
    seconds: /30
  - platform: time
    at: "22:00:00"
    id: Baum aus
condition: []
action:
  - if:
      - condition: time
        after: "06:00:00"
        before: "22:00:00"
        weekday:
          - mon
          - tue
          - wed
          - thu
          - fri
          - sat
          - sun
    then:
      - service: script.toggle_weihnachtsbaumeffekte
        data: {}
  - if:
      - condition: trigger
        id:
          - Baum aus
    then:
      - service: light.turn_off
        target:
          entity_id: light.baum
        data: {}
mode: single

Blueprint Toggle_Weihnachtsbaumeffekte:

alias: Toggle_Weihnachtsbaumeffekte
use_blueprint:
  path: panhans/scene_toggle.yaml
  input:
    included_scenes:
      - scene.weihnachtsbaum_szene1
      - scene.weihnachtsbaum_szene2
      - scene.weihnachtsbaum_szene3

Smarte Alarmanlage mit Home Assistant selber bauen und was das mit einem Rauchmelder zu tun hat

Was ein Zigbee Rauchmelder mit einer Alarmanlage gemeinsam hat ? Dieser Frage wird im Video nachgegangen. Mit Home Assistant lassen sich Zigbee Rauchmelder einbinden und ein Automatismus erstellen, welcher bei Rauch eine Benachrichtung schickt. Dieses Video führt euch die alle nötigen Schritte von den Parametern in der configuartion.yaml bis hin zur Anwendung der Integration auf eurem Dashboard.

Diese ZigBee Produkte verwende ich:*

Den Rauchmelder könnt ihr hier bekommen *: https://s.click.aliexpress.com/e/_DBME4tB

Home Assistant Integration Alarm Control Panel: https://www.home-assistant.io/integrations/alarm_control_panel/

Beispielkonfiguration Configuartion.Yaml:

alarm_control_panel:

  - platform: manual
    name: smarthome Alarmanlage
    code: 0815  # Hier könnt ihr euren individuellen Code einstellen                 
    code_arm_required: false  # Wenn false, dann braucht man für die Aktivierung keinen Pin Code, nur für die Deaktivierung
    delay_time: 60 # Zeitspanne bei Erkennung, bis ausgelöst wird.
    arming_time: 60 # Zeitspanne, bis die Alarmanlage scharf geschaltet wird. 
    trigger_time: 60 # Zeitpsanne des gesamten Alarms
    disarm_after_trigger: false 
    disarmed:
     trigger_time: 0 # Zeitspanne, bis die Alarmanlage wieder deaktiviert wird
    armed_home:   # Hier kann man Zeiten einstellen für Alarm, während der Anwesenheit, z.B. Nachts etc..
       arming_time: 0
       delay_time: 60

Beispielautomatisierung ( Nutzung Rauchmelder als Sirene ) .

alias: Rauchmelder Alarmanlage
description: ""
trigger:
  - platform: state
    entity_id:
      - binary_sensor.gruppe_bewegunsmelder_alarmanlage
    from: "off"
    to: "on"
    for:
      hours: 0
      minutes: 0
      seconds: 0
  - platform: state
    entity_id:
      - input_boolean.trigger_alarm_test
    from: "off"
    to: "on"
condition:
  - condition: state
    entity_id: alarm_control_panel.smarthome_alarmanlage
    state: armed_away
action:
  - service: select.select_option
    data:
      option: alarm
    target:
      entity_id:
        - select.rauchmelder_flur_eg_buzzer
        - select.rauchmelder_flur_og_buzzer
        - select.rauchmelder_studio_buzzer
        - select.rauchmelder_wohnzimmer_eg_buzzer
  - delay:
      hours: 0
      minutes: 1
      seconds: 0
      milliseconds: 0
  - service: select.select_option
    data:
      option: mute
    target:
      entity_id:
        - select.rauchmelder_flur_eg_buzzer
        - select.rauchmelder_flur_og_buzzer
        - select.rauchmelder_studio_buzzer
        - select.rauchmelder_wohnzimmer_eg_buzzer
mode: single