Home AssistantAus Attraktor WikiIm Attraktor läuft eine Home-Assistant-Instanz in einer VM für alle Smart-Home-Projekte. InhaltsverzeichnisBenutzungDie Benutzung steht allen Mitgliedern frei und ist local unter homeassistant.local:8123 oder 192.168.1.10:8123 erreichbar. Die grundsätzlichen Funktionen (Licht an/aus/bunt) sind über die Knöpfe am Eingang und im Hackcenter steuerbar (s. Bilder).
TechnikHome Assistant läuft hier auf einer virtuellen Maschine auf unserem Server. Die VM läuft mit Hass.io und unterstützt damit die dockerbasierten Plugins und Sicherungs-Funktionen. Weitere Bestandteile des Systems sind eine Influx DB, welche die Daten aufnimmt und ein Mosquitto MQTT Server. Die VM hat regelmäßige Backups, sollte mal etwas kaputt gespielt werden. Mittels Home Assistant Supervisor (einem Dockerverwalter) wurde ebenfalls eine Influx DB erstellt, welche als Sensordaten-Dump dient um Langzeitdaten zu erfassen.
ProjekteZigbeeEs befindet sich ein Zigbee Stick im Attraktor, welcher die Zigbee Pakete per Zigbee2MQTT an den MQTT Server schickt. TasmotaIm Attaktor verteilen sich immer mehr Tasmota-WLAN-Steckdosen, um diverse Lampen an- und auszuschalten. Diese sind zusätzlich zu ihrem Webinterface auch per Home Assistant steuer- und automatisierbar. Es gibt folgende Steckdosen:
Stromzähler
ESPHome
LED-RingeDie LED-Ringe kommunizieren (noch) mit einem anderen MQTT-Server. Deshalb sind diese (nur ausgehend) über einen Helper-Schalter integriert. Wird der Helper-Schalter geschaltet, sendet Node-Red (Add-On in Home Assistant) einen entsprechenden Befehl an den anderen MQTT-Server.
Ideen-Ecke
Automatisches BackupEs werden täglich Backups erstellt und in ein Borg-Repository geschrieben. Diese werden inkrementell, dedupliziert und komprimiert gespeichert und nach einer üblichen Backup-Strategie aufbewahrt. Hier grob dokumentiert, falls das jemand nachbauen möchte: Schritt 1: Backup-Archiv erstellenDas Home Assistant erstellt über eine Automation einmal täglich ein komplettes Backup: alias: 'Home Assistant: Daily Backup' trigger: - platform: time at: '02:04:00' action: - service: hassio.backup_full data_template: name: automated_backup_{{ now().strftime('%Y-%m-%d_%H-%M') }} Home Assistant wird so eingerichtet, dass es die Backups auf ein Netzwerk-Share im Unraid speichert.
Schritt 3: Backup mit borgmatic in einem borg-Repository speichernBorgmatic läuft als Docker-Container und speichert 1x täglich inkrementell und dedupliziert die Änderungen im Backup-Verzeichnis.
location: source_directories: - /mnt/homeassistant_backup repositories: - /mnt/borg-repository one_file_system: true files_cache: mtime,size patterns: - '- [Tt]rash' - '- [Cc]ache' exclude_if_present: - .nobackup - .NOBACKUP storage: encryption_passphrase: "XXXXXXXXXXX" compression: lz4 archive_name_format: 'backup-{now}' retention: keep_hourly: 2 keep_daily: 7 keep_weekly: 4 keep_monthly: 12 keep_yearly: 10 prefix: 'backup-' consistency: checks: - repository - archives prefix: 'backup-' hooks: before_backup: - /etc/borgmatic.d/before_backup.sh - echo "Starting a backup" after_backup: - /etc/borgmatic.d/after_backup.sh - echo "Finished a backup" on_error: - echo "Error during prune/create/check." healthchecks: https://hc-ping.com/XXXXXXXX Neue Borg-Archive werden täglich angelegt und wöchentlich wird das Repo gecheckt: borgmatic_config/crontab.txt: 0 3 * * * PATH=$PATH:/usr/bin /usr/bin/borgmatic prune create -v 1 --stats 2>&1 0 6 * * 3 PATH=$PATH:/usr/bin /usr/bin/borgmatic check -v 1 2>&1 Vor dem Backup wird geprüft:
borgmatic_config/before_backup.sh: #!/bin/sh # Abort backup if the newest backup archive is older than 24h # Changelog: # 2022-03-31: creaded (Flo) SRC_DIR=/mnt/homeassistant_backup MAX_AGE=86400 # 24h num_files=$(ls -l "${SRC_DIR}/"*.tar|wc -l) if [ "${num_files}" -eq 0 ]; then echo "No backup archives found. Is the SMB share mounted?" echo "Aborting." exit 1 fi latest_file=$(ls -d -t "${SRC_DIR}/"*.tar|head -n1) latest_file_modified_friendly=$(date -r "${latest_file}") echo "Latest backup archive: ${latest_file} (created on ${latest_file_modified_friendly})" latest_file_timestamp=$(date -r "${latest_file}" +%s) current_timestamp=$(date +%s) diff_seconds=$(expr "${current_timestamp}" - "${latest_file_timestamp}") if [ "${diff_seconds}" -gt "${MAX_AGE}" ]; then echo "Latest backup archive is too old." echo "Aborting." exit 1 fi Nach dem Backup werden Backup-Archive, die älter als 7 Tage sind, aus dem SMB-Share entfernt (damit die VM nicht irgendwann volläuft): borgmatic_config/after_backup.sh: #!/bin/sh # Changelog: # 2022-03-31: created (Flo) SRC_DIR=/mnt/homeassistant_backup MAX_DAYS=7 echo "Deleting backup archives older than ${MAX_DAYS} days" find "${SRC_DIR}" -type f -mtime "+${MAX_DAYS}" -name '*.tar' -print0 | xargs -r0 rm --
HilfeBei Fragen zum Tresor bitte an Lucas wenden.
Siehe auch |