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:

Überprüfung der MQTT-Werte mit MQTT.fx

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:

 Status des HA-Sensors

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:

Temperatur-Verlauf in Home Assistant

 

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:

Sensor Unavailable

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

PostadresseE-MailadresseFestnetzMobiltelefonSMS/SignalThreemaTwitter DirektnachrichtFAXWeb Page