Zum Inhalt springen

Einfachere Lösung für eine Skriptgesteuerte Lichtsteuerung


Empfohlene Beiträge

Guten Tag liebe IT-Kollegen,

ich stehe derzeit vor einen persönlich Problem. Im Vorwege möchte ich anmerken, dass meine derzeitige Lösung funktioniert, jedoch bin ich mit dieser nicht wirklich zufrieden. Es gibt bestimmt einen einfacheren Weg, der sich mir jedoch nicht erschließt.

Nun zu dem Problem:

Wir setzen in unseren Unternehmen die Monitoring-Software Icinga ein. Außerdem haben wir eine Lichtsteuerungs-Anlage, die die LED am Empfang steuert (Farbe ändern, Deckkraft, etc.). Hierzu habe ich nun im Icinga zwei Notififications erstellt, die jeweils eine PHP-Datei aufrufen. Die gesendeten Daten vom Icinga die als Notification übergeben werden, werden in den PHP-Dateien übergeben.

Notification 1: läuft während der Geschäftszeiten (Mo. - Fr. 8-18)

Notification 2: läuft außerhalb der Geschäftszeiten

Die PHP-Dateien verbinden sich mit einer Datenbank die nur aus einer Tabelle besteht. Die Tabelle sieht wie folgt aus:

Tableheader: Hostname

Typ: varchar(255)

Tableheader: Service

Typ: varchar(255)

Tableheader: Status

Typ: Int

Der Hostname ist der Client-/Server-/Gerätename, während der Service den jeweiligen Service des Host wieder gibt. Sollte die Notification kein Service sein, sondern der Host selbst (z.B. Host Down) wird der Service als Host abgespeichert. Der Status wird in einen numerische Wert abgespeichert.

DOWN u. Critical = 3

Warning = 2

OK u. UP = 1

Acknowlegedt = 0

Durch eine Abfrage wird der Übergebene Wert (z.B. Down) in den numerischen Wert gewandelt.

Am Ende der PHP-Datei die während der Geschäftszeiten aufgerufen wird, kommt eine Abfrage an die Datenbank, welchen Wert die höchste Zahl in der Row Status hat. Je nachdem, wie hoch dieser Wert ist, wird eine URL geöffnet, die die Farbe der Lichtanlage verändert/beibehält. (3= Rot, 2=Gelb, 1 und 0 = blau).

Die zweite Notification dient lediglich dazu, dass die Lichtanlage ausgeschaltet bleibt. Die Lichtanlage schaltet zum Ende der Geschäftszeiten die LED aus (Farbe = schwarz), da sie somit keine Stromkosten verursachen. Jedoch muss die Datenbank weiter befüllt werden, da ein Problem um 17:59 auftauchen kann, aber um 18:01 gelöst sein kann.

Jetzt zu meiner Frage.

Das muss doch bestimmt noch einfacher gehen.

Ich wäre für jeden Vorschlag dankbar und würde auch Fragen bezüglich des Skriptes beantworten. Und sry für den dicken Schinken.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also so ganz verstehe ich jetzt nicht, wo dein Problem liegt und was man daran nun verbessern können soll.

Ist halt die Frage, was nicht funktioniert, wie gewünscht, was man gerne als Zusatzfunktion hätte, oder wo es Probleme gibt.

Wenn ich das richtig verstehe, funktioniert es doch aktuell schon so wie es soll.

Wenn ein Alarm kommt, wird die Notification gesendet und in der DB wird mittels PHP dann ein entsprechender Eintrag generiert. Dieser wird ausgelesen und anhand des Maximums wird dann die LED entsprechend auf eine Farbe gesetzt.

Für außerhalb der Arbeitszeiten wird die Lampe entsprechend ausgeschaltet.

Optimierungspotential sehe ich heir höchstens im Script selber, bzw darin, dass man die Daten direkt aus der Icinga-Datenbank ziehen könnte.

Da Icinga auf Nagios aufsetzt (und somit eine (My)SQL-Datenbank nutzt), sollte das ja durchaus möglich sein. So gut kenne ich mich damit aber auch nicht aus, wie man jeweils an die entsprechenden Werte kommt.

Das entsprechende Script, was die Daten aus der Datenbank ausliest, könnte man dann alle x Zeiteinheiten per CRON-Job auf der Icinga-Maschine (ich denke doch mal, dass das ein Linux Webserver sein wird, oder?) laufen lassen zwischen [start-Arbeitszeit] und [Ende-Arbeitszeit]. Nach [Ende-Arbeitszeit] könnte man dann einen Cron-Job laufen lassen, der die Lampe ausschaltet.

So würde man sich die Notification von Icinga sparen und die zusätzliche Datenbank.

Eventuell dann noch die Feiertage im Script oder in einer Input-Datei hinterlegen, damit die Lampe an diesen Tagen aus bleibt.

Feiertags- und WE-Berechnung

Meintest du solche Vorschläge?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Es liegt kein Problem vor, nur bin ich unzufrieden mit der Lösung und dachte, dass vllt ein Anwendungsentwickler eine besser Lösung gefunden hätte die kleiner wäre.

Das Problem bei der SQL DB von Icinga liegt daran, dass ich den Zustand der jeweiligen Host und deren Service nicht direkt abfragen kann, deshalb habe ich eine neue Datenbank angelegt. Ansonsten wäre deine Idee wirklich die Optimierung gewesen.

Die Steuerungseinheit der Lichtanlage hat selbst eine Zeitschaltung inne, weshalb hierzu kein Cron-Job benötigt wird.

Aber ja solche Vorschläge meinte ich. Ich hoffe es kommen noch weitere, so dass man eventuell, dass perfekte abgespeckte und einfachste Skript zusammen bekommt. :D

Trotzdem vielen dank für deinen Vorschlag Crash2001

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...