AlarmServer

    • Beta
    • Open Source
      Name:
      AlarmServer

      Beschreibung:
      AlarmServer ist ein Windows-Dienst. Dieser Dienst hostet einen TCP-Server der auf Alarmierungen durch konfigurierte Endgeräte wartet und diese dann, in meinem Falle in Form eines HttpWebRequests, weiterverarbeitet.
      Das Prinzip ist eigentlich ganz Simpel. Man registriert mit dem beiliegenden Konfigurations-Tool einfach ein Endgerät, in dem Falle wo ich es einsetz mehrere Mobotix Kameras und ein CronJob der Stündlich prüft ob das elektronische Tor außerhalb der Öffnungszeiten noch offen ist. Wenn eins der Geräte Alarm auslöst, sendet dieses an den AlarmServer eine Nachricht die wiefolgt aufgebaut ist:

      Quellcode

      1. GERÄTE_ID:==:ALARM_PROFIL
      , wobei :==: als Trenner agiert. Die Geräte-ID ist in meinem Falle ein MD5 Hash des Gerätenames und das Alarm-Profil ist Bewegungsalarm also die Nummer 0. Der AlarmServer empfängt also die nachricht und schaut in die Konfiguration ob das Gerät existiert, wenn ja sendet er zu dem unter dem Alarmprofil hinterlegten URL mittels HttpWebRequest und eines definierten Speziellen UserAgents, den nur der Server und der PHP Skript auf meinem WebServer kennt, sodass Alarmierungen durch Leute, die zufällig den Alarmierungs-URL in die Hände bekommen haben keinen Alarm auslösen können.
      Der Server loggt alles, sodass man Alarme auch am PC, der den Server hostet, nachvollziehen kann.
      Für mich dient dieser Server als zentrale Annahmestelle für Alarme aller Art und verteilt diese an einen Skript, der in meiner App einen Alarm auslöst/Pushbenachrichtung.
      Er ist leicht umschreibbar, sodass er auch an alle anderen möglichen Alarmierungsverarbeitungen angepasst werden kann.

      Beispiel für Registrierung eines Alarm-Clients

      Quellcode

      1. cfg.new
      2. cfg.regclient Name des Client = MD5_Hash_des_Clients_als_ID
      3. cfg.save [Default]


      Als ID und als Name kann man alle möglichen Zeichenfolgen des UTF-8 Universums verwenden.
      Mit cfg.save [Default] speichert man die Datei an den Standart-Pfad, den der Dienst immer verwendet.


      Screenshot(s):
      keine Möglich, da Windows-Dienst

      Verwendete Programmiersprache(n) und IDE(s):
      Visual C# 7.0 / Visual Studio 2017 Enterprise

      Systemanforderungen:
      .NET Framework 4.5

      Systemveränderungen:
      Firewall Portfreigabe, Installation eines Windows-Diensts der dauerhaft läuft

      Download(s):
      Version 1.0 BIN (44,34 kB)

      Lizenz/Weitergabe:
      OpenSource, MIT Lizenz
      GitHub: Klick mich