Ankündigung

Einklappen
Keine Ankündigung bisher.

Visualisierung von Alarmen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Visualisierung von Alarmen

    Hallo Zusammen,

    habe ein paar Grundkenntnisse in php. Folgende Ausgangssituation habe ich:
    Windows PC, welcher dauerhaft läuft und mehrere Monitore hat. Auf einem soll ein Lageplan laufen, welcher verschiedene Alarme an deren Standort visualisieren soll.
    Ich gedenke, einen Apache oder vgl. laufen zu lassen. Hier brauche ich eure Empfehlungen.

    Alarmierende Geräte haben alle einen Webserver am laufen, die folgende Protokolle/Tätigkeiten beherrschen:
    • SNMP Trap senden
    • http/https (Aktivierungs-URL z.B. http://192.168.0.1:1234?trigger=1) auch mit Login-Daten zum einspeichern
    • TCP (IP-Adresse + Port, dann kann eine "Message" mitgesendet werden)

    Frage nun:
    wie kann ich eine Website laufen lassen, die ständig auf ankommende Alarme reagiert? Diese dann anhand der eindeutigen Kennung in textliche und bildliche Meldungen ausgeben? z.B. Alarm Überwachung 1 + roter Kreis auf der entsprechenden Position im Lageplan (Bilddatei)
    Das anordnen mit css ist mir klar, nur brauche ich eben einen Auslöser via php.

    Welche Infos brauch ihr noch?
    P.S. das Alarmierungs-Netzwerk ist ein eigenes VLAN ohne Internetzugang. Kritische Sicherheits-Probleme spielen also eine untergeordnete Rolle.

    Über Ideen freue ich mich!

  • #2
    Zitat von TheDome Beitrag anzeigen
    wie kann ich eine Website laufen lassen, die ständig auf ankommende Alarme reagiert?
    Wie kommen die Alarme denn bei der Webseite an?

    Ansonsten zeig Code, und zeig wo Du Probleme hast.

    Zitat von TheDome Beitrag anzeigen
    Diese dann anhand der eindeutigen Kennung in textliche und bildliche Meldungen ausgeben?
    Klar mach das…

    Zitat von TheDome Beitrag anzeigen
    Das anordnen mit css ist mir klar, nur brauche ich eben einen Auslöser via php.
    was auch immer du damit meinst?

    Welche Infos brauch ihr noch?

    Nur Wo Du in Deinem Code nicht weiterkommst

    Kommentar


    • #3
      Ich bin auf der suche nach einem generellen Lösungsansatz.
      Ankommen können die Alarme über genannte Arten SNMP, http, TCP. -> was muss an meinem "Empfänger" laufen, damit dieser die ankommenden Signale verarbeiten kann?
      kann ich mit fsockopen arbeiten? Muss dazu ein weiterer Dienst auf dem PC laufen? Portfreigaben vorausgesetzt...

      Kommentar


      • #4
        http, TCP
        Du scheinst hier Dinge recht wild durcheinander zu werfen. TCP und HTTP laufen in unterschiedlichen Schichten.
        http://www.searchnetworking.de/antwo...CP-IP-und-HTTP
        HTTP dagegen ist ein Protokoll, das TCP verwendet, um Informationen zwischen Computern auszutauschen. In der Regel sind das Web-Server und Clients. Der Client erstellt mithilfe eines Web-Browsers eine HTTP-Anfrage an den Web-Server und der Web-Server schickt die angeforderten Informationen (also: die Webseite) zurück an den Client.
        Webseiten gehen üblicherweise mit HTTP um, da du hier in einem Php-Forum bist vermute ich, dass das dein Ziel ist.
        Dann brauchst du einen Webserver. Die Alarme müssen einen entsprechenden Request an deinen Webserver schicken den kannst du dort verarbeiten (z.B. in eine Datenbank schreiben) und an anderer Stelle dann alle gesammelten Alarme ausgeben.

        Kommentar


        • #5
          Du musst wohl erst mal deinen Rechner und Router zum Empfang von aussen bereit machen.
          Wie das geht steht auf stackoverflow.

          Einmal eingerichtet kannst du ein Script schreiben, das dir GET Parameter ausliest.

          Du greifst dabei auf deinen internen Server genauso zu wie auf alle anderen Seiten im Netz, über die IP.
          Nehmen wir an dein Server unter Windows lauscht neben localhost auch auf der ip 192.168..2.1
          Dein script heisst alarm.php
          Dann kannst du mit 192.168.2.1/alarm.php?trigger=1 darauf zugreifen.

          Diese URL wird also an den Apache Webserver übergeben, dieser ruft dein PHP-Script auf und an dieses werden die Parameter übermittelt.
          Diese stehen dann in der Variablen $_GET zur Verfügung.

          Was du dann weiter machen willst weiss ich nicht, aber du hast mehrere Möglichkeiten ausgehend von
          Alarm Überwachung 1 + roter Kreis auf der entsprechenden Position im Lageplan (Bilddatei)
          Du bastelst dir die Positionsangaben in das Bild ein, dabei holst du dir das Bild Lageplan.png und fügst dort Rote Kreise ein.
          Du erstellst ein Bild roter Kreis mit transparenten Hintergrund. Dies Positionierst du über den Lageplan und blendest es mit CSS aus.
          Bei Alarm wird das Bild per CSS eingeblendet, das kannst mit class steuern.

          Kommt noch die Aktualisierung des Lageplans auf dem Monitor in Spiel.
          Da du ja eine Webseite hast mit dem Lageplan auf einem Monitor muss nun sichergestellt werden, das diese den Zustand abfragt um zu schauen ob ein Alarm eingegangen ist.
          Da das alles bei dir lokal läuft kannst du die Webseite mit metatag sekündlich aktualisieren, einfachste Variante.
          Du kannst Ajax einsetzen.
          Du verwendest Websockets.
          Da gibt es sicherlich noch ein paar mehr Möglichkeiten.
          habe ein paar Grundkenntnisse in php
          Ob das dafür ausreichend ist, weiss ich nicht.

          So, jetzt darfst du fragen stellen..

          Kommentar


          • #6
            Es sieht so aus als hättest du keinen Plan.
            Fang doch erstmal damit an, auf deinem Win-PC einen Webserver + PHP zu installieren. XAMPP reicht da erstmal.
            Im Schritt 2 bringst du dann ein kleines Testprogramm getlog.php zum laufen:
            PHP-Code:
            <?php
            //Show GET INPUTS

            //https://github.com/jspit-de/Debug
            require 'class.debug.php';

            debug::$real_time_output 5;  //refresh alle 5 Sek.
            debug::log('+getlog.html',true); //+ = append-modus
            debug::write('$_GET',$_GET);
            Dafür brauchst du noch die debug-klasse, link ist angegeben.
            Testen kannst du das Testprogramm indem du sowas wie
            Code:
            http://localhost/getlog.php?id=23
            auf der Browserzeile eingibst. In einen 2.Tab rufst du dann
            Code:
            http://localhost/getlog.html
            auf. Da solltest du dann eine Tabelle sehen. Diese Seite wird automatisch aktualisiert.
            Wenn du jetzt deine Alarmgeräte einen HTTP-Request an deinen Win-PC senden, kannst du auf der html-Seite die eingehenden Requests beobachten.

            Das ganze dient erstmal nur dazu das zu verstehen was ChromOxid + protestix geschrieben haben.

            Kommentar


            • #7
              Vielen Dank mal für die guten Ansätze!!
              Ich werde das die Tage testen und sobald Fragen aufkommen, diese posten.

              Kommentar


              • #8
                So,

                habe jetzt den logger laufen, die Kamera sendet über http folgendes:
                Code:
                http://ip-des-servers/alarming.php?Message=cam001_1
                im Debug Log "alarm.html" lasse ich nicht per append sondern je nur einen Log schreiben. Der Inhalt:
                Code:
                 
                array(1) array ( 'Message' => "cam001_1", )
                Nun...wie kann ich jetzt den Array auswerten, um bei z.B: cam001_1 den besagten Event mittels CSS auszulösen?

                Was ich gerade als Problem sehe ist, dass meine Seite aufgrund der "Echtzeit" alle 1sec. refreshed wird.
                Nach meinem Verständnis wird dann, selbst wenn ich alles auswerte und auslöse, nach 1sec. die Seite neu geladen?

                Freue mich über eure Hilfe!!

                Kommentar


                • #9
                  Du machst es uns nicht leicht. Antworte doch mal auf den Beitrag #6 erst ein mal bevor du den nächsten Schritt anfragst, sonst weiss man ja gar nicht wie dein Stand ist.

                  Ausserdem steht da
                  Im Schritt 2 bringst du dann ein kleines Testprogramm getlog.php zum laufen
                  Also das ist dein 2. Schritt.

                  Informiere uns wie weit du vorangekommen bist und was läuft.

                  Kommentar


                  • #10
                    Ich habe die Dateinamen teilweise an den gewünschten Zielzustand angepasst. Ich beantworte aber mal alles mit den bekannten Dateinamen...
                    Aktueller Stand:
                    • getlog.php läuft, class.debug.php ist implementiert
                    • senden von Kamera aus -> http://ip-adresse/getlog.php?Message=cam001_1
                    • die getlog.html listet mir folgendes auf, mit Refresh von 1 Sekunde:
                      screen1.png

                    Mein nächster Schritt ist nun, den Lageplan per Bilddatei zu haben, und die Standorte der Kameras aufleuchten zu lassen.
                    Natürlich soll das aber nicht nach dem 1-sekunden Refresh wieder weg sein. Gleichfalls soll es nicht ewig leuchten, bis ein anderer "Alarm" kommt. Ich denke da an einen trigger der dann für 10 Sekunden das leuchten auslöst und dann ist wieder ruhe. Erst bei erneutem gleichen -oder- anderem Alarm soll wieder das aufleuchten ausgelöst werden.

                    Reichen die Infos für den aktuellen Stand?

                    Kommentar


                    • #11
                      Der Refresh der HTML-Seite von x Sekunden soll nur das ständige Aktualsieren des Browsers ersparen. Noch mal etwas ausführlicher was passiert:
                      1. Die Kamera sendet einen Request http://ip-adresse/getlog.php?Message=cam001_1
                      2. Dieser Request startet getlog.php einmalig (getlog.php läuft nicht ständig!)
                      3. getlog.php erzeugt eine HTML-Datei, die wir uns per Browser anschauen können. Diese HTML-Datei bekommt durch den Befehl debug::$real_time_output = 5; //refresh alle 5 Sek. einen Meta-refresh verpasst. Wird die Zeile auskommentiert, entfällt der automatische Refresh der HTML-Seite. Der Umweg über das Erstellen einer HTML-Seite ist notwendig, da Ausgaben mit echo nicht sichbar sind bzw. zum Client der Kamera gesendet werden.
                      So, es ist nun ein Skript da was die Request empfängt und verarbeiten kann, aber nicht anzeigen. Im nächsten Schritt wird bevor es dazu kommt was protestix #5 beschrieben hat eine Datenbank benötigt, welche die aktuellen Zustände speichert (Alarm-Anfang, Alarm-Ende gerätebezogen). Die Webseite mit dem Lageplan greift nun auf die Informationen in der Datenbank zu und stellt diese dar.
                      Die Datenbank kann z.B. eine SQLite-DB sein, wenn MySQL oder noch was besseres nicht verfügbar ist.
                      Empfehle, sich jetzt Gedanken über den Tabellenaufbau der Datenbank zu machen.

                      LG jspit

                      Edit: Wenn es nur sehr wenige Ereignisse sind die dargestellt werden sollen und die Einarbeitung in das Thema Datenbank zu aufwendig erscheint, kann der Datenaustausch auch über varCache realisiert werden.

                      Kommentar

                      Lädt...
                      X