Table of Contents

Homeassistant

Da ich Homeassistant primär rund um die Solarerzeugung und Speicherung nutze, habe ich diese Seite mal unter Solar gehangen, auch wenn ich andere Dinge damit erfasse.

Homeassistant auf Raspi4 mit ESXi virtualisieren

Um etwas die Anzahl der Raspis bei mir zu verringern und natürlich auch noch etwas Strom zu sparen, möchte ich meine HomeAssistant Instanz, die nativ auf einem Raspi4 läuft nun als VM auf einem Raspi laufen lassen.

Da ich beruflich eng an VMware gebunden bin, kommt dafür natürlich ESXi for ARM (ESXi for ARM) zum Einsatz.

Im folgendem möchte ich Dokumentieren, wie man aus einer HomeAssistant Instanz, die direkt auf einem Raspi (oder anderer Plattform) läuft, eine VM erstellt.

Vorbereitung

HAOS ist zum Glück recht gut für die Virtualisierung vorbereitet. Ich beschreiben den Vorgang anhand Version 11.1.

Als erstes benötigen wir die virtuelle Disk für ARM. Dazu auf Github gehen https://github.com/home-assistant/operating-system/releases/tag/11.1. Dort das File haos_generic-aarch64-11.1.vmdk.zip herunterladen.

Als erstes wird die Datei entpackt und die umbenannt. Meine Instanz soll Homeassist heißen, deshalb bei mir Homeassist.vmdk. Diese Datei wird dann in den VMFS Datastore kopiert. Die VMDK kann man aber noch nicht direkt verwenden, da die virtuelle Platte im Format für VMware Workstation ist.

Nun bauen wir den Grundstock für die zukünftige HAOS VM. Wir legen ein Verzeichnis für die VM an. Bei mir

mkdir /vmfs/volumes/localDatastore_esxi-arm/Homeassist

Nun können wir die VMDK zu einer ESXi VMDK wandeln. Dafür verwendet man vmkfstools.

cd /vmfs/volumes/localDatastore_esxi-arm/Homeassist/
vmkfstools -d thin -i /vmfs/volumes/localDatastore_esxi-arm/iso/Homeassist.vmdk Homeassist.vmdk

VM erstellen

Nun bauen wir aus der vorhanden virtuellen Disk eine komplette VM.

Als Übersicht:

Hier die Schritte als Übersicht - bei Click auf die Bilder eine größere Version…

 1. Erstellung  2. Gastbetriebssystemtyp  3. Datastore Auswahl  4. VM vor der Bearbeitung
 5. NVMe Controller  6. vorhanden Platte einbinden  7. Kontroller prüfen  9. VM nach der Bearbeitung

Wenn die VM abgespeichert wurde, öffnen wir noch mal die Einstellung und vergrößern die Disk. Bei mir sollten 32GB reichen.

 10. Festplattengröße anpassen

Somit haben wir die VM erstellt und können die VM einschalten. Es werden einige Initiale Tasks abgearbeitet.

 11.  12.

Diese Tasks dauern etwas, somit kann man auf der Homeassistant Seite der physischen Instanz eine Vollbackup erstellen - nächster Abschnitt…

Import vorbereiten und importieren

Unter Settings→System→Backups wird ein Vollbackup erstellt.

Wann ein Vollbackup fertig ist, lese ich von der CPU Temperatur ab :-)

 Vorbereitungstasks HAOS  Backup zieht CPU

Irgendwann ist das Backup fertig und man kann es kopieren. Wenn man das SAMBA Plugin aktiv hat, kann man direkt davon das Backup ziehen. Ich habe bei mir das OneDrive AddOn intalliert. Somit werden bei mir automatische Backups erzeugt, die dann im OneDrive landen.

Das der Import läuft, sieht man schön am Diskdurchsatz. Ich habe leider den Fehler gemacht, dass die Importquelle über eine WLAN Strecke geht. Somit bleiben von dem per USB3 angebundenem M.2 Modul, auf das der Raspi mit bis zu 80MB/s schreiben kann, nur um dei 14MB/s übrig :-(

 Ready to Import  Upload Backups  VM Disk Usage

Der Import ist trotzdem schnell beendet und über die HAOS Oberfläche kann jetzt der eigentliche Restore angeschoben werden. Die Wiederherstellung dauert etwas. dabei wird nicht mehr so viel auf der Platte rumgeschrieben, aber relativ viel CPU verballert.

 Start Wiederherstellung  Ready to Login

Bei mir ist die Wiederherstellung nach einer knappen Stunde fertig. Und ich kann mich einloggen.

Nachbereitung

Nun gibt es noch ein paar Nachbereitungen. Es sind eine Menge Dienste nicht gestartet, deshalb rebooten wir die VM… Nach einer Weile sind alle Dienste gestartet. Nun arbeiten wir aber immer noch mit der falschen IP Adresse. Dienste, die direkt Daten an Homeassistant senden sind noch offline. Bei mir ist das alles, was mit ESPHome läuft.

MQTT funktioniert bei mir weiter, da ich einen separaten MQTT Broker habe und Homeassistant sich die Daten von dort subscribt.

Es ist an der Zeit, die physische Instanz herunterzufahren und die virtuelle Instanz mit den richtigen IP und FQDN zu konfigurieren. Dies erfolgt unter Settings→System→Network. In meinem Fall muss ich auch noch die Portgruppe an der Netzwerkkarte ändern, da sich bei mir Homeassistant in einem anderen Segment befindet.

Wenn alles geklappt hat, sollten aller Services wieder funktionieren.

 Alles OK

done.


Hoymiles Inverter auslesen und darstellen

Um Hoymiles und ähnliche Inverter per Funk auslesen zu können, gibt es zwei Open Source Projekte: AhoyDTU und openDTU.

Ich habe mich für AhoyDTU entschieden, da die initiale Inbetriebnahme total easy ist und ich die Oberfläche “schöner” finde.

https://ahoydtu.de/getting_started/

https://grafana.com/grafana/dashboards/16850-pv-power-ahoy/

https://www.printables.com/de/model/396020-ahoy-opendtu-gehause

mqtt:
  sensor:
  - name: 'inverter_U_AC'
    state_topic: 'inverter/HM700/ch0/U_AC'
    unit_of_measurement: 'V'
	
  - name: 'inverter_I_AC'
    state_topic: 'inverter/HM700/ch0/I_AC'
    unit_of_measurement: 'A'
	
  - name: 'inverter_P_AC'
    state_topic: 'inverter/HM700/ch0/P_AC'
    unit_of_measurement: 'W'
	
  - name: 'inverter_F_AC'
	state_topic: 'inverter/HM700/ch0/F_AC'
    unit_of_measurement: 'Hz'
	
  - name: 'inverter_P_DC'
    state_topic: 'inverter/HM700/ch0/P_DC'
    unit_of_measurement: 'W'
	
  - name: 'inverter_Efficiency'	
    state_topic: 'inverter/HM700/ch0/Efficiency'
    unit_of_measurement: '%'
	
  - name: 'inverter_YieldDay'	
    state_topic: 'inverter/HM700/ch0/YieldDay'
    unit_of_measurement: 'Wh'
	
  - name: 'inverter_YieldTotal'	
    state_topic: 'inverter/HM700/ch0/YieldTotal'
    unit_of_measurement: 'kWh'
 
# Pannel1  
  - name: 'inverter_Panel1_U_DC'
    state_topic: 'inverter/HM700/ch1/U_DC'
    unit_of_measurement: 'V'
	
  - name: 'inverter_Panel1_I_DC'
    state_topic: 'inverter/HM700/ch1/I_DC'
    unit_of_measurement: 'A'
	
  - name: 'inverter_Panel1_P_DC'
    state_topic: 'inverter/HM700/ch1/P_DC'
    unit_of_measurement: 'W'
 
# Pannel1  
  - name: 'inverter_Panel2_U_DC'
    state_topic: 'inverter/HM700/ch2/U_DC'
    unit_of_measurement: 'V'
	
  - name: 'inverter_Panel2_I_DC'
    state_topic: 'inverter/HM700/ch2/I_DC'
    unit_of_measurement: 'A'
	
  - name: 'inverter_Panel2_P_DC'
    state_topic: 'inverter/HM700/ch2/P_DC'
    unit_of_measurement: 'W'

Auto Backup

https://community.home-assistant.io/t/creating-a-snapshot-is-not-possible-right-now-because-the-system-is-in-freeze-state/282049/52

https://github.com/jcwillox/hass-auto-backup


Helferlein

Reverse Proxy für HA

https://www.theserverside.com/blog/Coffee-Talk-Java-News-Stories-and-Opinions/Docker-Nginx-reverse-proxy-setup-example

https://www.freecodecamp.org/news/docker-nginx-letsencrypt-easy-secure-reverse-proxy-40165ba3aee2/

https://sitegeist.de/blog/typo3-blog/docker-compose-setup-mit-nginx-reverse-proxy.html

https://dev.to/domysee/setting-up-a-reverse-proxy-with-nginx-and-docker-compose-29jg

Developer->Template

domain:
 
{%- set unique_domains = states | map(attribute='domain') |list | unique | list -%}
{%- for domain in unique_domains -%}
- {{domain + "\n"}}
{%- endfor -%}

entities:
 
{%- for state in states -%}
- {{state.entity_id + "\n"}}
{%- endfor -%}