|
|
(14 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) |
Zeile 1: |
Zeile 1: |
− | [[File:Home Assistant Logo.svg.png|right|thumb|Homeassistant]] | + | [[File:Home Assistant Logo.svg.png|right|thumb|Home Assistant]] |
− | Im Attraktor läuft eine Homeassistant Instanz in einer VM für alle Smarthome Projekte. | + | Im Attraktor läuft eine Home-Assistant-Instanz in einer VM für alle Smart-Home-Projekte. |
| | | |
| = Benutzung = | | = Benutzung = |
− | Die Benutzung steht allen Mitgliedern frei und ist local unter \\homeassistant.local:8123\\ erreichbar. | + | [[File:Buttons-eingang.jpg|200px|thumb|right|Taster am Eingang]] |
| + | [[File:Button-hackcenter.jpg|200px|thumb|right|Taster im Hackcenter]] |
| + | Die Benutzung steht allen Mitgliedern frei und ist local unter [http://homeassistant.local:8123 homeassistant.local:8123] oder [http://192.168.1.10:8123 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). |
| | | |
| | | |
| = Technik = | | = Technik = |
| | | |
− | Homeassistant läuft hier auf einer Virtuellen Maschine auf unsererm Server. Die VM läuft mit [https://www.home-assistant.io/blog/2017/07/25/introducing-hassio/ Hass.io] und unterstützt damit die dockerbasierten Plugins und Sicherungs-Funktionen.
| + | Home Assistant läuft hier auf einer virtuellen Maschine auf unserem Server. Die VM läuft mit [https://www.home-assistant.io/blog/2017/07/25/introducing-hassio/ Hass.io] und unterstützt damit die dockerbasierten Plugins und Sicherungs-Funktionen. |
− | Weitere Bestandteiles des Systems sind eine Influx DB, welche die Daten aufnimmt und ein Mosquitto MQTT Server. | + | Weitere Bestandteile des Systems sind eine Influx DB, welche die Daten aufnimmt und ein Mosquitto MQTT Server. |
− | Die VM hat regelmässige Backups sollte mal etwas kaputt gespielt werden. | + | 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. |
| + | |
| | | |
| = Projekte = | | = Projekte = |
| + | |
| + | ==Smarte [[Heizung]]== |
| + | |
| + | In den Räumen Vortragsraum, Textilwerkstatt und Holzwerkstatt sind Smarte Heizungssteuerungsgeräte verbaut. |
| + | |
| + | |
| + | == Zigbee == |
| + | |
| + | Es befindet sich ein Zigbee Stick im Attraktor, welcher die Zigbee Pakete per ZHA an den Homeassistant Server weiterreicht. |
| + | |
| + | |
| == Tasmota == | | == Tasmota == |
− | Im Attaktor verteilen sich immermehr Tasmota WLAN Steckdosen um diverse Lampen an und aus zu schalten. | + | Im Attaktor verteilen sich immer mehr Tasmota-WLAN-Steckdosen, um diverse Lampen an- und auszuschalten. |
− | Diese sind zusätzlich zu ihrem Webinterface auch per Homeassistant steuer und automatisierbar. | + | Diese sind zusätzlich zu ihrem Webinterface auch per Home Assistant steuer- und automatisierbar. |
| + | |
| + | Es gibt folgende Steckdosen: |
| + | {| class="wikitable" |
| + | | outlet1 |
| + | | Demo auf Automaten |
| + | | style="text-align:right;" | [http://192.168.1.11 Local IP] |
| + | |- |
| + | | outlet2 |
| + | | Demo Vitrine |
| + | | style="text-align:right;" | [http://192.168.12 Local IP] |
| + | |- |
| + | | outlet3 |
| + | | Hackcenter Beleuchtung |
| + | | style="text-align:right;" | [http://192.168.1.13 Local IP] |
| + | |- |
| + | | outlet4 |
| + | | Beleuchtung Drucker |
| + | | style="text-align:right;" | [http://192.168.14 Local IP] |
| + | |- |
| + | | outlet5 |
| + | | DMX & Eingangsbereich |
| + | | style="text-align:right;" | [http://192.168.15 Local IP] |
| + | |} |
| + | |
| + | ==Stromzähler== |
| + | * Der Stromzähler wurde per ESPHome und S0 Schnittstelle in Homeassistant integriert. [[Stromzähler]]. |
| + | |
| + | == ESPHome == |
| + | * Scheinwerfer am DMX-Bus. Näheres dazu auf der Seite [[DMX512]]. |
| + | * Taster am Eingang und im Hackcenter (s. Bilder) |
| + | |
| + | |
| + | == LED-Ringe == |
| + | Die 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. |
| + | |
| + | ==[[Getränkeautomat]]== |
| + | Die Temperatursteuerung des Getränkeautomats wird mittels ESPHome und Homeassistant gesteuert. Die Schaltung läuft ausfallsicher lokal. Weitere Infos in [[Getränkeautomat]]. |
| + | |
| + | ==Ideen-Ecke== |
| + | * Temperaturüberwachung der Räume per Zigbee |
| + | * Suche der versteckten Standby-Verbrauchern (1kW Standby) |
| + | |
| + | == Automatisches Backup == |
| + | Es 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 erstellen === |
| + | Das Home Assistant erstellt über eine Automation einmal täglich ein komplettes Backup: |
| + | <pre> |
| + | 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') }} |
| + | </pre> |
| + | |
| + | === Schritt 2: Backups auf Netzwerk-Share speichern === |
| + | Home Assistant wird so eingerichtet, dass es die Backups auf ein Netzwerk-Share im Unraid speichert. |
| + | * In Unraid einen neuen User für Home Assistant einrichten |
| + | * In Unraid einen neuen Share für die Backups einrichten. Der neue User muss read/write-access haben |
| + | * In Home Assistant das Netzlaufwerk einrichten: Settings => System => Storage |
| + | * In Home Assistant das Netzlaufwerk als Standard Backup-Destination einrichten: Settings => System => Backups => ... => Change default backup location |
| + | |
| + | === Schritt 3: Backup mit borgmatic in einem borg-Repository speichern === |
| + | Borgmatic läuft als Docker-Container und speichert 1x täglich inkrementell und dedupliziert die Änderungen im Backup-Verzeichnis. |
| + | |
| + | * [https://forums.unraid.net/topic/99218-support-borgmatic/ Doku zum Borgmatic Docker-Container] |
| + | * Initial muss das Borg-Repo aus dem Borgmatic-Container heraus erstellt werden: <code>borg init --encryption repokey /path/to/repo</code> |
| + | |
| + | |
| + | borgmatic_config/config.yaml: |
| + | <pre> |
| + | 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 |
| + | </pre> |
| + | |
| + | Neue Borg-Archive werden täglich angelegt und wöchentlich wird das Repo gecheckt: |
| + | |
| + | borgmatic_config/crontab.txt: |
| + | <pre> |
| + | 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 |
| + | </pre> |
| + | |
| + | Vor dem Backup wird geprüft: |
| + | * ob überhaupt Backup-Archive vorhanden sind (wenn keine da sind, ist das SMB-Verzeichnis wahrscheinlich nicht gemounted) |
| + | * ob das letzte Backup nicht älter als 24 Stunden ist (wenn es älter ist, läuft die HA-Backup-Automation wahrscheinlich nicht mehr, deshalb Abbruch) |
| + | |
| + | borgmatic_config/before_backup.sh: |
| + | <pre> |
| + | #!/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 |
| + | </pre> |
| + | |
| + | 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: |
| + | <pre> |
| + | #!/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 -- |
| + | </pre> |
| | | |
− | ==Ideen Ecke==
| |
− | *Integration der bunten LED Ringe
| |
− | *Integration des Stromzählers
| |
| | | |
| = Hilfe = | | = Hilfe = |
Zeile 29: |
Zeile 228: |
| | | |
| [[Category:Infrastruktur]] | | [[Category:Infrastruktur]] |
| + | [[Category:Räume]] |
Im Attraktor läuft eine Home-Assistant-Instanz in einer VM für alle Smart-Home-Projekte.
Die grundsätzlichen Funktionen (Licht an/aus/bunt) sind über die Knöpfe am Eingang und im Hackcenter steuerbar (s. Bilder).
Home 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.
In den Räumen Vortragsraum, Textilwerkstatt und Holzwerkstatt sind Smarte Heizungssteuerungsgeräte verbaut.
Es befindet sich ein Zigbee Stick im Attraktor, welcher die Zigbee Pakete per ZHA an den Homeassistant Server weiterreicht.
Im 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.
Die 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.
Die Temperatursteuerung des Getränkeautomats wird mittels ESPHome und Homeassistant gesteuert. Die Schaltung läuft ausfallsicher lokal. Weitere Infos in Getränkeautomat.
Es 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:
Das Home Assistant erstellt über eine Automation einmal täglich ein komplettes Backup:
Home Assistant wird so eingerichtet, dass es die Backups auf ein Netzwerk-Share im Unraid speichert.
Borgmatic läuft als Docker-Container und speichert 1x täglich inkrementell und dedupliziert die Änderungen im Backup-Verzeichnis.
Neue Borg-Archive werden täglich angelegt und wöchentlich wird das Repo gecheckt:
Nach dem Backup werden Backup-Archive, die älter als 7 Tage sind, aus dem SMB-Share entfernt (damit die VM nicht irgendwann volläuft):