Fern­über­wa­chung der Luft­qua­lität mit SNMP

22.11.2021 - Benedek Kámán

Unser CO2-Sensor erhält eine neue Funk­tion, nämlich die Fern­über­wa­chung der Sensor­werte. Wir haben uns entschieden, diese mit dem Netz­werk­über­wa­chungs­pro­to­koll SNMP zu imple­men­tieren. In diesem Beitrag werde ich diese Tech­no­lo­gie­wahl begründen, erklären wie SNMP funk­tio­niert und beschreiben, wie ich es beim CO2-Sensor ange­wendet habe.

co2-sensor

Warum SNMP?

Als Erstes stellt sich die Frage, warum wir eine Tech­no­logie aus dem letzten Jahr­hun­dert verwenden wollen. Die Antwort darauf ist, dass SNMP sehr verbreitet ist. Sie wird von unzäh­ligen Unter­nehmen in verschie­denen Bran­chen benutzt. Swit­ches von Cisco, Drucker von Brother und Access Points von Ubiquiti nutzen SNMP zur Ausle­sung verschie­dener Konfi­gu­ra­ti­ons­daten. Dadurch wird SNMP auch von vielen Infra­struk­tur­über­wa­chungs­sys­temen unter­stützt, die man nutzen kann, Statis­tiken zu sammeln, diese zu visua­li­sieren oder Ereig­nisse zu defi­nieren, bei welchen Alarme/Meldungen ausge­löst werden sollen. Bekannte Über­wa­chungs­sys­teme sind Zabbix, Icinga und Nagios. In unserem Fall könnten wir in so einem System defi­nieren, dass, wenn der Sensor einen hohen CO2-Wert misst, ein "Lüftungs­alarm" ausge­löst wird.

snmp-use-cases

Wie funk­tio­niert SNMP?

Agenten, Manager

Haupt­be­stand­teile einer SNMP-​Umgebung sind Agenten und Manager. Bei Agenten handelt es sich um die Geräte, die man mittels SNMP verwalten will (Swit­ches, Drucker, Access Points, CO2-​Sensoren). Manager sind die Geräte, die Verwal­tungs­be­fehle an Agenten aussenden.

GET, SET, TRAP-​Nachrichten

Der Infor­ma­ti­ons­aus­tauch zwischen Agent und Manager geschieht über GET-, SET- und TRAP-​Nachrichten. Mit Hilfe von GET-​Anfragen kann ein Manager den Status eines Agenten abfragen und mit SET-​Anfragen Aktionen ausführen oder Einstel­lungen vornehmen. Auch der Agent kann mit einer TRAP-​Nachricht Daten an den Manager senden, ohne dazu aufge­for­dert zu sein. Dies kommt zum Einsatz, wenn man mit dem Versenden kriti­scher Infor­ma­tionen nicht auf eine GET-​Anfrage des Mana­gers warten möchte. In unserem Fall könnten wir bei unserem CO2-Sensor einstellen, dass er bei zu hohen CO2-Werten eine TRAP-​Nachricht an den Manager sendet, der dann, wie oben beschrieben, eine Benach­rich­ti­gung abschickt, dass man lüften sollte.

snmp

Manage­ment Infor­ma­tion Base(MIB)

Eine MIB beschreibt die Struktur der Daten, die von einem Agenten zur Verfü­gung gestellt werden. Sie ist in soge­nannte Managed Objects geglie­dert, welche keine Daten­werte sind, sondern nur deren Beschrei­bungen. Sie beschreiben, wo die Daten zu finden sind und welches Format sie haben. Diese Managed Objects befinden sich alle in einer Hier­ar­chie und sind über ihren Object Iden­ti­fier(OID) erreichbar. OID beschreibt den Weg durch die MIB-​Hierarchie, über den man ein Objekt erreicht. Da jedes Unter­nehmen, das seine eigenen Managed Objects defi­nieren will, einen eigenen Enterprise-​Code braucht, mussten wir uns zuerst bei iana regis­trieren, wonach wir im Enterprise-​Register einge­tragen wurden. Somit können wir unter dem OID 1.3.6.1.4.1.58049 unsere eigene Hier­ar­chie an Managed Objects defi­nieren.

snmp

Anwen­dung beim CO2-Sensor

Zuerst defi­nierten wir unsere MIB. Sie besteht aus zwei Tabellen. Die erste Tabelle zeigt alle Sensoren, die im CO2-Sensor einge­baut sind. Die Zweite zeigt die Messungen dieser Sensoren. Da, wie oben schon erwähnt, MIBs nur zur Beschrei­bung der Daten­struktur dienen und keine eigent­li­chen Werte enthalten, müssen wir diese Struktur irgendwie in unseren Code inte­grieren, der uns dann die Daten liefert. Diesen Schritt erleich­tert der Code Gene­rator von lwIP, der uns das Grund­ge­rüst des Agent-​Codes gene­riert. Dieses Gerüst ergänzten wir mit Code, der aus dem schon exis­tie­renden CO2-Code die Sensor­werte holt und ausgibt. Er füllt sozu­sagen die defi­nierte Daten­struktur mit Daten auf.

Output des Komman­do­zei­len­be­fehls snmptable:

snmptable-output
Über­wa­chung auf Zabbix:

Zabbix
Zum Testen ob die Über­wa­chung funk­tio­niert, hauchte ich den Sensor zwei Mal an, was man an den Werten sehr schön sieht:

  • Der CO2-Wert(PPM) steigt wesent­lich an.

  • Luft­feuch­tig­keit(Humi­dity) und Tempe­ratur(Temp) steigen minim an.

Fazit

Dank SNMP muss man den Sensor nicht mal mehr im Blick­winkel haben, um über die aktu­elle Luft­qua­lität zu erfahren. Man kann einfach durch einen Komman­do­zei­len­be­fehl oder über ein Über­wa­chungs­pro­gramm die Infor­ma­tionen anfragen.

INFO:
Der Quell­code und die Bauan­lei­tung für den Sensor sind auf Github kostenlos verfügbar (Lizenz: Crea­tive Commons BY-SA).

Der Beitrag über den CO2-Sensor ist hier zu finden.

Newsletter abonnieren

Kontakt

Smoca AG
Tech­no­park­strasse 2
Gebäude A, 3. Stock
8406 Winter­thur

Letzter Blog­ein­trag

Fern­über­wa­chung der Luft­qua­lität mit SNMPBenedek Kámán - 22.11.2021

Unser CO2-Sensor erhält eine neue Funk­tion, nämlich die Fern­über­wa­chung der Sensor­werte. Wir haben uns entschieden, diese mit mehr ...

  • Smoca Facebook
  • Smoca Twitter
  • Smoca LinkedIn
  • Smoca RSS Feed