Smart Home mit Home Assistant


mgutt

Recommended Posts

14 minutes ago, alturismo said:

aber klar, damit geht es auch

 

Bin halt "Alte Schule": So wenig wie möglich installieren, auf das Wesentliche reduzieren, ...

 

Den FileManager wird wohl in absehbare Zeit jeder installiert haben. Ggfs. muss man in ihm nur weitere Extensions wie *.YAML anschalten (config auf Flash). Dann kann der quasi fast alles.

 

  • Like 1
Link to comment

Also, ich hab mir das nun angeschaut. Mit ZHA ist HomeAssistant im Unraid Docker kein Problem, zigbee2mqtt läuft allerdings nicht.
Die Protokolle sind wie immer so toll, dass man nichts erkennt ^^

 

/app/node_modules/js-yaml/lib/loader.js:183
  return new YAMLException(message, mark);
         ^
YAMLException: bad indentation of a mapping entry (13:4)

 10 |   # MQTT server URL
 11 |   server: mqtt://192.168.178.5:1833
 12 |   # MQTT server authentication, un ...
 13 |    user: hierstehtmeinuser
---------^
 14 |    password: hierstehtmeinpasswort ...
 15 | 
    at generateError (/app/node_modules/js-yaml/lib/loader.js:183:10)
    at throwError (/app/node_modules/js-yaml/lib/loader.js:187:9)
    at readBlockMapping (/app/node_modules/js-yaml/lib/loader.js:1182:7)
    at composeNode (/app/node_modules/js-yaml/lib/loader.js:1441:12)
    at readBlockMapping (/app/node_modules/js-yaml/lib/loader.js:1164:11)
    at composeNode (/app/node_modules/js-yaml/lib/loader.js:1441:12)
    at readDocument (/app/node_modules/js-yaml/lib/loader.js:1625:3)
    at loadDocuments (/app/node_modules/js-yaml/lib/loader.js:1688:5)
    at Object.load (/app/node_modules/js-yaml/lib/loader.js:1714:19)
    at Object.read (/app/lib/util/yaml.ts:7:21)
Using '/app/data' as data directory
Using '/app/data' as data directory
Using '/app/data' as data directory

 

Ich würde das gerne ausprobieren. Hat jemand eine Idee?

Ansonsten müsste ich ZHA einsetzen und auf zigbee2mqtt komplett verzichten.

 

Gibt es zudem eine schnelle methode, die VM zum Container zu migrieren?

 

Edit: Zigbee2mqtt läuft jetzt. Die CPU Auslastung ist sehr hoch (bis 32%), mal beobachten und mit der VM vergleichen.

 

grafik.thumb.png.9202b4e9a95a8835fff088c087f8eac9.png

 

Edit2:

Das ganze in der VM mit 2 Kerne und governour "powersave"

 

grafik.thumb.png.a7043af95140df8b86a7894828c12953.png

 

Keine Ahnung wieso das so ist.

Edited by guybrush2012
Link to comment
3 minutes ago, sanobi said:

Wie kann man das umsetzen, dass die Daten aus Unraid abgefragt und im Home Assistant eingebunden werden?

vorweg, wenn du willst das ich "markiert" werde auf den eingeblendeten Namen klicken, ansonsten kriegt man das nicht automatisch mit ;) @sanobi <- sieht dann auch so aus ;)

 

also, ich hatte vorher ja auch Grafana und Prometheus usw usw laufen ... wobei ich sah was da alles läuft und das hat mir nicht so sehr gefallen, also hab ich mal angefangen und geschaut was ich mit "Boardmitteln" abgreifen könnte und mir so eigene Quellen für HA bauen kann.

 

ich nehme jetzt mal 2 Beispiele, der Befehl "sensors -j" spuckt mir ja schonmal einiges im json Format aus was ich mehr oder weniger direkt in HA nutzen kann (webdienst, ist einfacher), inkl. ein paar sed Befehlen um das besser greifen zu können.

 

kleiner Ausschnitt ...

...
sensors -j > /dev/shm/sensorstemp.json 2>/dev/null
...
sed -i '0,/Array Fan/{s/Array Fan/cpupump/g}' /dev/shm/sensorstemp.json
sed -i '0,/Array Fan/{s/Array Fan/hddfan/g}' /dev/shm/sensorstemp.json
sed -i '0,/Array Fan/{s/Array Fan/gpupump/g}' /dev/shm/sensorstemp.json
sed -i '0,/Array Fan/{s/Array Fan/mosfan/g}' /dev/shm/sensorstemp.json
sed -i '0,/Array Fan/{s/Array Fan/vrmfan/g}' /dev/shm/sensorstemp.json
...
mv /dev/shm/sensorstemp.json /dev/shm/sensors.json
...

ich erstelle eine temp Datei, mache ein paar Korrekturen für mich, ... diese steht für swag lokal (webserver) bereit

 

einfacher Eintrag

image.png.c4db082bf0e9e9caa92a5df116fd2c62.png

 

jetzt in HA einfach sensoren adden

 

- platform: rest
  scan_interval: 15
  resource: http://192.168.1.83:888/sensors.json
  name: "REST Unraid_Sensors VRM Fan"
  unit_of_measurement: "rpm"
  value_template: "{{ value_json.nct6798.vrmfan.fan2_input | replace(',', '.') | round(1)  | float }}"
- platform: rest
  scan_interval: 15
  resource: http://192.168.1.83:888/sensors.json
  name: "REST Unraid_Sensors CPU Temp"
  unit_of_measurement: "°C"
  value_template: "{{ value_json.coretemp.cputemp.temp1_input | replace(',', '.') | round(1)  | float }}"
- platform: rest
  scan_interval: 15
  resource: http://192.168.1.83:888/sensors.json
  name: "REST Unraid_Sensors nvme1 Temp"
  unit_of_measurement: "°C"
  value_template: "{{ value_json.nvme0300.Composite.temp1_input | replace(',', '.') | round(1)  | float }}"
- platform: rest
  scan_interval: 15
  resource: http://192.168.1.83:888/sensors.json
  name: "REST Unraid_Sensors CPU Pump"
  unit_of_measurement: "rpm"
  value_template: "{{ value_json.nct6798a.cpupump.fan3_input | replace(',', '.') | round(1)  | float }}"
- platform: rest
  scan_interval: 15
  resource: http://192.168.1.83:888/sensors.json
  name: "REST Unraid_Sensors GPU Pump"
  unit_of_measurement: "rpm"
  value_template: "{{ value_json.nct6798a.gpupump.fan7_input | replace(',', '.') | round(1)  | float }}"
- platform: rest
  scan_interval: 15
  resource: http://192.168.1.83:888/sensors.json
  name: "REST Unraid_Sensors nvme2 Temp"
  unit_of_measurement: "°C"
  value_template: "{{ value_json.nvme0600.Composite.temp1_input | replace(',', '.') | round(1)  | float }}"

 

in den Fällen wo es evtl. je nach Szenario 2 Quellen gibt, wie jetzt hier bei der Pumpe, entweder aus unraid oder aus der Win VM (aquasuite) per mqtt braucht es 2 sensoren und einen template sensor wo je nach Zustand die Daten holt.

 

Beispiele jetzt aus sensor.yaml, mqtt.yaml und template.yaml

 

sensor.yaml
...
- platform: rest
  scan_interval: 15
  resource: http://192.168.1.83:888/sensors.json
  name: "REST Unraid_Sensors Wassertemperatur"
  unit_of_measurement: "°C"
  value_template: "{{ value_json.aquaquadro.Sensor1.temp1_input | replace(',', '.') | round(1)  | float }}"
...
mqtt.yaml
...
sensor:
  - name: "Wassertemperatur"
    state_topic: aquasuite_water
    unit_of_measurement: "°C"
    value_template: "{{ value_json.Data[0].Value }}"
...
template.yaml
...
## "Unraid " template Sensors
- sensor:
  - name: "Unraid Wassertemperatur"
    unit_of_measurement: "°C"
    state: >
      {% set x = states('sensor.rest_unraid_sensors_wassertemperatur') %}
      {% set y = states('sensor.wassertemperatur') %}
      {{ y if x in  ['unavailable', 'unknown', 'none'] else x }}
...

 

image.thumb.png.b08653c84e69a65d47c259e7c0e108ee.png

 

somit habe ich auch gewährleistet das "je nach Zustand" immer der korrekte Wert in HA ist.

 

das Ganze zieht sich dann durch ... simple Dinge wie HDD Temps usw ... schreibe ich mir dann halt "manuell" ins json Format

 

mv /dev/shm/sensorstemp.json /dev/shm/sensors.json

temp_sdb=`smartctl --nocheck standby -iA /dev/sdb | egrep ^194 | awk '{print $4}' | sed 's/^0*//'`
[ -z "$temp_sdb" ] && temp_sdb="0"
temp_sdc=`smartctl --nocheck standby -iA /dev/sdc | egrep ^194 | awk '{print $4}' | sed 's/^0*//'`
[ -z "$temp_sdc" ] && temp_sdc="0"
temp_sdd=`smartctl --nocheck standby -iA /dev/sdd | egrep ^194 | awk '{print $4}' | sed 's/^0*//'`
[ -z "$temp_sdd" ] && temp_sdd="0"
temp_sde=`smartctl --nocheck standby -iA /dev/sde | egrep ^194 | awk '{print $4}' | sed 's/^0*//'`
[ -z "$temp_sde" ] && temp_sde="0"

printf '{\n  "hdd":{\n    "sdb":{\n      "temp": '$temp_sdb'\n    },\n    "sdc":{\n      "temp": '$temp_sdc'\n    },\n    "sdd":{\n      "temp": '$temp_sdd'\n    },\n    "sde":{\n      "temp": '$temp_sde'\n    }\n  }\n}' > /dev/shm/hdds.json

sleep 1

 

meine CPU Stats sind etwas anders da ich CPU Pinning nutze und effektiv auf den genutzten Cores die Auslastung möchte

 

cpu_usage_all=`mpstat -P 0-19 1 1 | grep -i "Average" | awk 'FNR > 1 {print $NF}' | awk '{sum+=$1} END {print 100-sum/20}'`
cpu_usage_unraid=`mpstat -P 0-1,10-11 1 1 | grep -i "Average" | awk 'FNR > 1 {print $NF}' | awk '{sum+=$1} END {print 100-sum/4}'`
cpu_usage_alspc_media=`mpstat -P 2-7,12-17 1 1 | grep -i "Average" | awk 'FNR > 1 {print $NF}' | awk '{sum+=$1} END {print 100-sum/12}'`
cpu_usage_alspc=`mpstat -P 8-9,18-19 1 1 | grep -i "Average" | awk 'FNR > 1 {print $NF}' | awk '{sum+=$1} END {print 100-sum/4}'`

printf '{\n  "cpu":{\n    "cpu_usage_all":{\n      "load": '$cpu_usage_all'\n    },\n    "cpu_usage_unraid":{\n      "load": '$cpu_usage_unraid'\n    },\n    "cpu_usage_alspc_media":{\n      "load": '$cpu_usage_alspc_media'\n    },\n    "cpu_usage_alspc":{\n      "load": '$cpu_usage_alspc'\n    }\n  }\n}' > /dev/shm/cpu.json

sleep 1

macht in der Form aber NUR Sinn mit Pinning ... zur Differenzierung der Zustände auf den Cores

 

ich könnte jetzt weiter und weiter ... nvidia-smi wenn VM aus, ansonsten, wenn VM an läuft auf der VM HWInfo und da greife ich die json Werte ab, auch hier wieder, bei Bedarf 2 Sensoren mit template Sensors ...

 

vm switches sind ssh shell commands mit virsh, somit kann ich meine VM's (Desktop oder Gaming) jetzt auch per Sprachbefehl aus Googlke Assistant an/ausschalten ...

 

wie gesagt, das resultierte daraus weil mir Grafana und alles was dazu gehörte nicht mehr gefallen hat und ich eh alles was mich interessiert per Boardmittel eh abgreifen kann ...

 

Empfehlung, Ansatz, was will ich sehen (CPU, GPU, HDD, ...), wie kann ich die Daten abgreifen (was ist onboard, was muss in die VM), wie muss ich diese formatieren (json ist halt simpel), wie kriege ich die in HA (webserver läuft eh), ...

 

Sieht jetzt nach viel aus, war auch Eingangs etwas Aufwand, aber danach ist der Großteil ja einfach copy / paste ...

Link to comment

Ja,indirekt geht das.Da aber der Docker HA Container über keinen Restore Funktion verfügt musst du die extrahierten / entpackten   Daten des Backups wieder von Hand in die Appdata Daten reinkopieren. Oder mit dem Dynamix Filemanager wieder in Appdata "hochladen" . Aber besser den neuen  Ordner vorher leeren das keine alten Daten zurückbleiben

Edited by Bengon
  • Like 1
Link to comment

Hallo.

 

So habe mir nun mal HA im Docker angeschaut, da ich ja sonst HA in der VM laufen habe.

War easy zu installieren und auch den HACS habe ich installiert bekommen. Also von dieser Seite gibts da erstmal keine Beschränkungen. Zum Strom- / Leistungsverbrauch im Gegensatz zur VM kann ich noch nicht viel sagen, muss erstmal wieder alles einrichten.

 

Einzig die Community addons kann man im Docker nicht nutzen. Ist natürlich schade, aber ich schätze mal, für den individuellen Anwendungsfall gibts da auch was "docker mäßiges".

Ich hatte das Cloudflare Addon genutzt, um HA extern erreichbar zu machen. War eigentlich zufrieden damit, vorallem weil man auch nicht noch ein extra Port dafür öffnen musste. Geht so natürlich nun nicht.

 

Wie habt ihr eureren HA docker extern erreichbar gemacht? NPM + duckdns?

 

Danke und schönes Wochenende.

Link to comment
3 hours ago, OOmatrixOO said:

Wie habt ihr eureren HA docker extern erreichbar gemacht? NPM + duckdns?

 

swag mit eigenen subdomains der eh läuft ... habe ja nicht nur HA laufen sondern mehrere Dienste

 

und welche Addons meinst du denn ? weil wie @hawihoney und du selbst ja siehst, HACS geht ja, damit auch die darin enthaltenen addons ... oder meinst du was anderes ?

Link to comment
Nein HACS meinte ich nicht, hatte ja geschrieben, dass es bei mir läuft.
 
Ich meine dies: https://www.home-assistant.io/addons/
Das sind im Grunde docker Container mit angepasster HomeAssistant config. Kannst du auch alles unter Unraid realisieren. Musst nur etwas Hand anlegen.

Der Stromverbrauch zwischen VM und Docker unter Unraid ist zu vernachlässigen. Also bei mir schätzungsweise kleiner als 1 Watt weniger, wenn überhaupt.

Was die Backups angeht, kannst du welche in Docker über die Ha Oberfläche machen, aber nicht zurück Spielen. Das geht leider nur bei der VM. Auch da musst du selbst Hand anlegen.

Stabil laufen beide bei mir. Benutze keinen Zigbee Stick sondern eine WLAN Bridge mit tasmota.

Vm oder Docker ist denke ich Geschmackssache.

Edit: Bei mir ist Home Assistant mit einer dyndns und NPM erreichbar.

Link to comment
28 minutes ago, OOmatrixOO said:

ok, jetzt hab ich es auch ;)

 

bei mir läuft halt mqtt separat im docker, file editor brauche ich nicht da der appdata share ja einfach vorhanden ist, usw usw ... aber vielleicht gibt es ja tatsächlich etwas da drin was dann leider mit der docker Lösung nicht direkt umsetzbar ist. Was vermisst du denn ?

Link to comment

Also vermissen tue ich bisher noch nix spezielles. Dinge, die ich von da genutzt habe, kann ich auch alternativ anders realisieren. Die Einbindung war halt etwas einfacher, aber das stört mich eigentlich weniger.

Sollte auch kein "meckern" sein, dass das im docker fehlt. 😉

Ich denke mal, auch das Cloudflare addon könnte ich über einen docker ersetzen und dann wieder darüber HA erreichbar machen.

Oder halt klassisch wie wohl viele hier über NPM.

 

@guybrush2012

Das mit dem Stromverbrauch wundert mich etwas, weil doch viele der Meinung sind, dass die VM deutlich mehr verbraucht als ein docker.

Link to comment
  • mgutt changed the title to Smart Home mit Home Assistant
On 3/4/2023 at 4:40 PM, OOmatrixOO said:

 

@guybrush2012

Das mit dem Stromverbrauch wundert mich etwas, weil doch viele der Meinung sind, dass die VM deutlich mehr verbraucht als ein docker.

 

KVM wird unterschätzt.
Ob Docker oder VM merke ich was die CPU angeht nicht viel davon.


Der Speicherverbrauch ist bei der VM ca. 500-600MB und Unraid-Container 300-400MB, soweit man die Angaben trauen kann ^^  

 

Kommt sicherlich auf die VM und auf die Anzahl der VM's an.

Teste das am besten selbst 🙂

 

Docker_HASSIO.jpg

VM_Hassio2.jpg

VM_HASSIO.jpg

  • Like 1
Link to comment
  • 1 month later...

Ich habe sehr selten das Problem, dass ein Schaltsignal scheinbar nicht bei der Steckdose ankommt oder vielleicht gar nicht abgesendet wurde?!

image.thumb.png.20f7ab8419b6d2e4ff3bbeae495105c2.png

 

Kann man das irgendwie auf 100% Zuverlässigkeit bekommen? zB in dem der das Kommando 2x absetzt oder prüft, ob der finale Status wirklich erreicht wurde und falls nicht, dann noch mal das Kommando sendet?!

Link to comment
6 hours ago, mgutt said:

Kann man das irgendwie auf 100% Zuverlässigkeit bekommen? zB in dem der das Kommando 2x absetzt oder prüft, ob der finale Status wirklich erreicht wurde und falls nicht, dann noch mal das Kommando sendet?!

Das sollte doch bestimmt über ne Schleife in der Automation klappen. Vielleicht in Verbindung mit ner Helfer Entität die vorher den Status der Steckdose übernimmt?

Keine Ahnung ob das zu komplex gedacht ist?

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.