Temperaturüberwachung für Server-Schrank (Teil 2)
Für die Temperaturüberwachung in einem Server-Schrank wurde im ersten Teil der Artikelserie I2C-Sensoren über USB an das Linux-System angebunden und ausgelesen.
In diesem Artikel werden in Home Assistant Sensoren für die Daten der Sensoren angelegt.
Es wird davon ausgegangen, dass Home Assistant und ein MQTT-Broker (z.B. mosquitto) bereits erfolgreich eingerichtet sind. Außerdem sollte der erste Teil der Artikelserie bereits umgesetzt sein und die Temperaturdaten an den MQTT-Server verfügbar sein. Für die Alarmierung sollte mindestens ein Notifier-Dienst in Home Assistant konfiguriert sein.
1| MQTT-Daten überprüfen
Wurden der Temperatur-Sensor wie im ersten Teil beschrieben eingerichtet, so sollte in MQTT die Temperatur-Daten unter server/i2c/usb
bereit stehen. Das kann einfach mit einem MQTT-Client (z.B. MQTT.fx) überprüft werden:
2| Sensoren in Home Assistant einrichten
Damit die Temperaturdaten in Home Assistant genutzt werden können, stellen wir diese Daten als Sensoren bereit. Dazu müssen in der configuration.yaml
von Home Assistant folgende Einträge im Abschnitt sensor:
hinzugefügt werden:
sensor:
- platform: mqtt
name: 'Server I2C internal'
state_topic: "server/i2c/usb"
value_template: "{{ now() }}"
json_attributes_topic: "server/i2c/usb"
json_attributes_template: "{{ value_json.internal | tojson }}"
expire_after: 910
- platform: template
sensors:
temperature_rack:
friendly_name: "Temperatur Rack"
unique_id: "7a5ab17d-6230-467a-b97c-142165eb071c"
value_template: "{{ state_attr('sensor.server_i2c_internal', 'temperature') | float | round (1) }}"
device_class: temperature
unit_of_measurement: '°C'
humidity_rack:
friendly_name: "Luftfeuchte Rack"
unique_id: "0e691073-4377-46f0-9f0d-ce27336ce19b"
value_template: "{{ state_attr('sensor.server_i2c_internal', 'humidity') | float | round (1) }}"
device_class: humidity
unit_of_measurement: '%'
pressure_rack:
friendly_name: "Luftdruck Rack"
unique_id: "56621c64-8e14-477b-846a-600f14d76249"
value_template: "{{ state_attr('sensor.server_i2c_internal', 'pressure') | float | round (1) }}"
device_class: pressure
unit_of_measurement: 'hPa'
Damit die Konfiguration wirksam wird, muss Home Assistant neu gestartet werden.
Mit dem ersten Sensor Server I2C internal
werden die Temperaturdaten als Attribute in diesem Sensor gespeichert. Im Status des Sensors wird das letzte Datum der Aktualisierung gespeichert. Mit den Developer Tools in Home Assistant können wir den Status des Sensors überprüfen und die Ausgabe sollte ungefähr so aussehen:
Mit den Template-Sensoren werden die Attribute des Sensors Server I2C internal
in gesonderten Werten zur Verfügung gestellt. Dadurch können die Werte später in Automatisierungen einfacher verwendet werden und die Aufzeichnung der Werte ist einfacher. Wenn der Sensor korrekt funktioniert sollte in den Entity-Eigenschaften in Home Assistant auch eine Temperatur-Verlaufskurve auftauchen:
3| Recording in Home Assistant anpassen
Normalerweise werden Statusänderungen in Home Assistant aufgezeichnet. Diese Funktion übernimmt das Recorder-Modul. Damit die Temperaturdaten nicht doppelt aufgezeichnet werden, sollte der Sensor Server I2C internal
vom Recording mit folgenden Einträgen in der configuration.yaml
ausgeschlossen werden:
# filter to include and exclude specified domains/entities
recorder:
exclude:
entities:
- sensor.server_i2c_internal
Danach wird der Temperatur-Verlauf nur noch über die definierten Template-Sensoren aufgezeichnet.
Damit die Konfiguration wirksam wird, muss Home Assistant neu gestartet werden.
4| Ausfall der Temperatur-Überwachung erkennen
Gemäß des Cron-Jobs aus dem ersten Teil der Artikelserie sollte die Temperatur im Serverrack regelmäßig alle 3 Minuten aktualisiert werden. Wird die Temperatur nicht mehr aktualisiert, soll eine Alarmierung rausgehen, da vermutlich ein technisches Problem (beispielsweise eingeschränkte Erreichbarkeit des MQTT-Server) vorliegt.
In der Konfiguration des Sensors Server I2C internal
wird mit dem Attribut expire_after: 910
festgelegt, dass sich der Sensorstatus auf unavailable ändert, wenn der Sensor mindestens 910 Sekunden nicht aktualisiert wurde oder anders ausgedrückt 5 Messungen nicht übermittelt wurden:
Damit lässt sich leicht eine Automatisierung in Home Assistant einrichten, die eine Nachricht schickt, wenn der Sensor nicht mehr aktualisiert wird:
alias: 'Server I2C Sensor: Stale Sensor Alarm'
description: >-
Wenn die I2C Sensoren, die an Server angeschlossen sind nicht mehr aktualisiert
werden, soll eine Warnung rausgeschickt werden.
trigger:
- platform: state
entity_id: sensor.server_i2c_internal
to: unavailable
condition: []
action:
- service: notify.pushover
data:
title: Temperaturmonitoring failed!
message: Seit > 15 Minuten keine Temperatur-Updates von terra.lan empfangen!
data:
priority: 0
mode: single
Damit die Automatisierung funktioniert, muss der genutzte Notify-Service vorher eingerichtet werden. Im Beispiel müsste also vorher Pushover eingerichtet werden.
Mit diesen Einstellungen sollten die Daten jetzt auch in Home Assistant Verfügbar sein. Im nächsten Teil werden die Temperatur-Daten ausgewertet und entsprechende Warnungen eingerichtet.
Kommentare