Server-Rack Umwelt-Monitoring mit IoT-Hardware
Wenn man auf seine IT-Landschaft blickt, stellt man schnell fest, dass wo immer es Hardware aufzustellen gilt, sich oft schnell die Anforderungen ändern. Die Umgebung wächst schnell und man benötigt mehr Ressourcen um seinen Standort, seine Zweigstelle, oder seinen Homeoffice-Standort sinnvoll zu betreiben. Was speziell im Homeoffice oft mit einem kleinen Rechner und einer FritzBox anfängt, ist einige Jahre später schon ein kleineres (oder größeres) Netzwerk- oder Server-Rack mit diversen Switches, Routern und Servern.
Oft werden dabei die Rahmenbedingungen bei der Skalierung nicht mit bedacht. Sei es eine redundante Stromversorgung, eine redundante Internetversorgung oder eine USV für eine unterbrechungsfreie Stromversorgung oder eine eigene Klimaanlage. Ein Punkt, der wirklich selten beachtet wird, wenn der Standort nicht von vornherein vollständig geplant wurde, ist das sogenannte Umweltmonitoring für das Rack bzw. den Server-Raum. Wie hoch ist grade die Luft-Temperatur, die Luftfeuchtigkeit oder ähnliches im Serverraum oder Serverschrank. Für einen möglichst wartungsarmen Betrieb von Hardware sollten schließlich folgende Randbedingungen erfüllt sein:
- Konstante, niedrige Temperatur
- Niedrige Luftfeuchtigkeit
- Konstante Stromversorgung ohne viele lastabhängige Schwankungen
Natürlich hat jeder Rechner (und damit auch jeder Server) bereits einige Sensoren mit an Bord, insbesondere Temperatursensoren. Aber diese spiegeln nur die Temperatur innerhalb eines Servers wider, und geben nur bedingt Auskunft über die Umweltbedingungen in der Umgebung selbst. Wenn das Budget für IT-Hardware knapp kalkuliert ist, und man sich auf die Suche nach einer entsprechenden Lösung macht, kommt man möglicherweise schnell zu dem Schluss “Na gut, vielleicht ist das ja doch nicht so wichtig”, denn schlüsselfertige Lösungen sind meist sehr kostenintensiv. Sicherlich ist der Preis nicht ausschließlich von der Hardware diktiert, sondern auch von dem Support-Ökosystem drumherum, sowie einer eher “industriellen” Bauweise (es soll ja alles schließlich auch ein paar Jahre halten).
Bevor man die Idee jetzt aber gleich ad acta legt, sollte man sich kurz überlegen, ob man willens und in der Lage ist, selbst etwas zu bauen. Einsteiger-Löterfahrung ist dabei hilfreich. Wenn man erst einmal die einzelnen Komponenten einer solchen Lösung auf ihre Bestandteile runterbricht, stellt man schnell fest, dass das alles gar nicht so kompliziert ist.
Die Hardware alleine macht allerdings noch kein fertiges Produkt, es fehlt noch die Softwareseite. Hier gibt es Lösungen wie Sand am Meer, kommerzielle wie freie. Das ist gut, denn das bedeutet, dass es ausgesprochen wahrscheinlich ist, dass wir eine Lösung relativ einfach z.B. in ein schon bestehendes Monitoring integrieren können. Für das folgende Beispiel benutzen wir für die Softwareseite der Einfachheit halber ein Home Assistant (https://www.home-assistant.io/). Dieser IoT-Hub kann auf jeder erdenklichen Hardware installiert werden, auch auf einem Raspberry Pi oder einer VM. Ebenso ist eine Installation mit Docker kein Problem.
Jetzt fehlt nur noch die Sensorik. Das Konzept ist dabei eigentlich immer gleich: Man nehme einen Mikrokontroller und stecke (oder löte) eine beliebige Anzahl Sensoren daran. Firmware konfigurieren, flashen, und in Home Assistant einbinden, fertig. Man kann sich an dem kompletten Fundus der Sensoren bedienen, die mit Mikrokontrollern wie einem ESP32, ESP8266, Arduino oder Raspberry Pi (Inklusive Pi Pico) kompatibel sind. Einige Hersteller liefern passende Programmierbeispiele gleich als eBook mit, die Integration ist aber üblicherweise einfach. Am einfachsten fährt man z.B. mit einem ESP8266. Diese Controller bringen gleich WiFi und Bluetooth mit, und lassen sich so einfach ins Netzwerk einbinden. Es gibt verschiedene Softwares (Firmwares), die man auf die Controller bringen kann, für die Verwendung mit Home Assistant ist “ESPHome” (https://esphome.io/) am einfachsten. Die Konfiguration findet dabei mittels YAML-Datei statt.
Das hier soll keine Home Assistant Installations-Anleitung werden, diese gibt es im Internet zu Genüge, sondern wie man einen oder mehrere Umweltsensoren darin einbindet.
Zunächst müssen die Sensoren angeschlossen (oder angelötet) werden. Ich habe mich hier für folgende Komponenten entschieden:
- ESP8266 (D1_Mini)
- 1x DHT22 (Kombinierter Sensor für Temperatur und relative Luftfeuchtigkeit)
- 2x Dallas DS18B20 (OneWire Temperatursensor, wasserdichte Ausführung)
- 3x Türkontakt-Sensoren (Magnetischer Reedschalter)
- ein 3D-gedrucktes Gehäuse (eine generische “Projektbox” funktioniert auch)
Die Dallas-Sensoren müssen erst einmal am Controller “gefunden” werden, da sie über Ihre ID referenziert werden, die ESPHome-Dokumentation gibt mehr Aufschluss. Man hätte auch für alle Temperatursensoren einen DHT-Sensor verwenden können, aber die Dallas-Sensoren sind genauer. Ein DHT ist aber trotzdem mit an Bord, da er uns zusätzlich einen Luftfeuchtigkeits-Wert liefert. Zudem habe ich noch Reed-Schalter als Türkontakt-Sensoren verbaut, einen für jede Tür im Rack. So kann man nachvollziehen, wann an dem Rack gearbeitet wurde, denn üblicherweise sollte es ja abgeschlossen sein (oder der Serverraum selbst). Welche Sensoren man genau verwendet, hängt natürlich vom konkreten Fall ab, aber ich habe diese Komponenten gewählt, um den “Basisbedarf” abzudecken:
- Raumtemperatur vor dem Rack
- Raumtemperatur hinter dem Rack
- Temperatur und Luftfeuchtigkeit im Rack
- Tür auf/zu-Status für alle Türen des Racks
An welche Pins man welchen Sensor anschließt, ist eigentlich egal, das hängt im Zweifel stark von der verwendeten Hardware ab. In meinem Fall sieht die Konfiguration für ESPHome folgendermaßen aus:
esphome:
name: werkstatt-rack-sensor
esp8266:
board: d1_mini
logger:
api:
password: !secret api_password
ota:
password: !secret ota_password
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
binary_sensor:
- platform: gpio
pin:
number: D1
mode: INPUT_PULLUP
name: "frontdoor-status"
device_class: tamper
icon: "mdi:lock"
filters:
- delayed_on: 100ms
- delayed_off: 100ms
- delayed_on_off: 100ms
- platform: gpio
pin:
number: D2
mode: INPUT_PULLUP
name: "reardoor-status"
device_class: tamper
icon: "mdi:lock"
filters:
- delayed_on: 100ms
- delayed_off: 100ms
- delayed_on_off: 100ms
- platform: gpio
pin:
number: D3
mode: INPUT_PULLUP
name: "sidedoor-right-status"
device_class: tamper
icon: "mdi:lock"
filters:
- delayed_on: 100ms
- delayed_off: 100ms
- delayed_on_off: 100ms
dallas:
- pin: D5
update_interval: 60s
sensor:
- platform: wifi_signal
name: "WiFi Signal"
update_interval: 60s
- platform: dht
pin: D4
temperature:
name: "werkstatt-rack-temperature-main"
humidity:
name: "werkstatt-rack-humidity-main"
update_interval: 60s
- platform: dallas
address: 0x0000000000000000
name: "werkstatt-rack-temperature-intake"
id: "temperatureintake"
- platform: dallas
address: 0x0000000000000000
name: "werkstatt-rack-temperature-exhaust"
id: "temperatureexhaust"
- platform: template
name: "werkstatt-rack-temperature-delta"
id: "temperaturedelta"
accuracy_decimals: 2
update_interval: 60s
lambda: return ( id(temperatureexhaust).state - id(temperatureintake).state );
unit_of_measurement: '°C'
Bei YAML-Dateien müssen die Einrückungen korrekt übernommen werden, der Rest ist weitestgehend selbsterklärend. Ich habe noch einen pseudo-Sensor hinzugefügt, der den Temperaturunterschied zwischen dem vorderen und hinteren Sensor als Temperaturdifferenz wie einen zusätzlichen Sensor ausgibt (id: temperaturedelta).
Das Ganze lässt sich einfach per USB mit Strom versorgen, und kann beliebig erweitert werden. Wie wäre es z.B., wenn man die Klimaanlage oder Heizung bedarfsabhängig regeln lassen würde, um Energie zu sparen, oder die Überwachungskamera ein Bild verschicken zu lassen, wenn jemand den Serverraum betritt. Ein Feuchtigkeitssensor in Bodennähe könnte helfen, auf einen Rohrbruch zu reagieren, bevor der Server unter Wasser steht, Smarte Steckdosen können ggf. Schwankungen in der Spannungsversorgung des Racks aufzeigen. Die Möglichkeiten sind vielfältig, es braucht nur ein bisschen Kreativität und eine Handvoll Sensoren. Das Setup, so wie oben beschrieben, kostet nicht einmal 40 € mit allen Sensoren, dem Mikrokontroller und einem USB-Netzteil. Kommerzielle Lösungen kosten oft das Hundertfache und mehr. Auf jeden Fall ein Anreiz, sich selbst daran zu versuchen, und sich nicht von überalterter Herstellersoftware abhängig zu machen, die sich schlecht integrieren lässt. Es gibt mannigfaltige Möglichkeiten, auch fertige Smart-Home-Sensoren einzubinden, die via Zigbee, Bluetooth oder Wlan einbindbar sind, aber um den eigenen Bedarf wirklich sinnvoll abzudecken, ist eine selbst entwickelte Lösung für gewöhnlich flexibler.
Dashboard Ansicht in Home Assistant
Temperatursensor vorn im Rack
Türkontakt-Sensor
…und das Gegenstück dazu.
Wenn nur wenige oder nur ein Sensor benötigt werden, kann das Ganze auch sehr platzsparend gebaut werden.
Viel Spaß beim Nachbauen.
Ein Artikel von Kai