Ankündigung

Einklappen
Keine Ankündigung bisher.

Kamera Refreshzeiten in Ajax-Visu

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

    HS/FS Kamera Refreshzeiten in Ajax-Visu

    Hallo zusammen!

    Bin gerade dabei meine Grandstream-IP-Server einzubinden. Im Prinzip klappt das auch recht reibungslos.

    Allerdings ist mir aufgefallen, dass sich die Ajax-Visu einen Dreck um die Refreshzeiten im Experten (bezüglich der Kameras) schert... Die Bilder werden quasi im ms-Takt abgerufen.

    In der .js-Datei habe ich die Variable

    IMG_STREAM = 300;

    auf 5000 geändert - und siehe da, der Refresh passt (alle 5 Sekunden).

    Aaaaber: Das funktioniert nur mit aktivierten Direktzugriff - NICHT, wenn der HS die Bilder runterlädt (also ohne Direktzugriff). Dann nämlich greift wieder der alte Wert von 300 ms (gefühlt). Ist ja auch logisch, denn der HS weiss ja nichts von den Parametern in der .js-Datei...

    Meine Frage daher: Wo stelle ich nun die korrekte Zeit (5 s) ein?? Im Experten habe ich schon alles möglich durch (Benutzer, Projekt, Kameras, Streaming...). Vermutlich ist die Einstellung irgendwo in der .js-Datei zu suchen?!

    LG
    EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

    #2
    Ich mache es wohl ganz anders jetzt:

    Direktzugriff (funktioniert ja) als default. Und außerhalb des Hauses (per Internet) einfach eine andere visuseite mit dyndns-Links zu den Kameras. Das gute daran ist, dass durch den direktzugriff die Bilder schnell geladen werden - und dass ich zu Hause auf die Kameras zugreife ist ja die normale Situation.

    Sollte ich mal von extern die Kameras aufrufen wollen (kommt selten vor) muss ich eben eine andere visuseite aufrufen - dort sind dann die Kameras per Port-Weiterleitung (und Passwort) auch per direktzugriff sichtbar.
    EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

    Kommentar


      #3
      Also nochmal zum Verständnis - vielleicht hat der ein oder andere Interesse an dieser Lösung (klappt übrigens ausgezeichnet!):

      Das Problem beim Direktzugriff auf die Kameras ist natürlich, dass diese dann nicht von Extern (also via Internet) erreichbar sind, da ja i.d.R. IP-Adressen aus dem lokalen LAN angegeben werden. Wird der Direktzugriff deaktiviert, wird es ab einer bestimmten Anzahl von Kameras ziemlich lahm (bei mir sind's 8), da der HS jedes einzelne Bild von der Kamera pollen und verarbeiten muss.

      Daher habe ich nun verschiedene Visu-Seiten angelegt - einmal für den Kamera-Zugriff vom lokalen LAN aus, und einmal für den Zugriff via Internet.

      Der Zugriff via Internet erfolgt nun so:
      In den Kameraeinstellungen (Experte) sind die IP's und Pfade zu einem DynDns-Dienst hinterlegt (in meinem Fall ein Eigenbau auf einem externen Server). Am Router müssen natürlich entsprechende Port-Forwardings eingerichtet werden - für jede Kamera (in meinem Fall jedoch nur 2 Geräte, die jeweils 4 Kanäle bedienen).

      Beim Zugriff auf die Kameras muss ich jetzt natürlich entscheiden, ob ich von intern oder von extern zugreifen möchte. Aber das sollte man i.d.R. ja wissen

      Und noch ein Hinweis:
      Natürlich kann man auf die Variante "interner Zugriff" auch verzichten, sofern man auch zu Hause im Internet ist. Dann werden die Kameras halt immer via Internet angezeigt. Ist natürlich etwas träger und wenn das Internet mal ausfällt, bleiben die Kameras dunkel...
      EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

      Kommentar


        #4
        Wie in einem anderen Thread versprochen, wollte ich berichten... Inzwischen habe ich endlich 2 Stück Grandstream GXV3504 erhalten (nach Spanien dauerts etwas länger) - und immerhin schon 24 Stunden in Betrieb

        Also, die Dinger sind IP-Video-Server - wandeln also die Signale von analogen Kameras in einen IP-Stream um. Entscheidend für mich war aber, dass man jeden der 4 Kanäle (pro Gerät) direkt(!) per URL als JPEG pollen kann. Schließlich braucht der HS Einzelbilder.

        Und was soll ich sagen? Es funktioniert tatsächlich perfekt! Die Schnittstelle ist sogar im Detail dokumentiert! Selbst die allerletzte Funktion kann per HTTP ausgelöst/verändert werden. Im Grunde integriert sich das Gerät also perfekt in eine HS-Umgebung.

        Per Motiondetektion (auch per HTTP-API einstellbar!) können auch Einzelbilder gespeichert werden (auf eine SD-Card). Die ältesten werden automatisch gelöscht usw. - also alles wunderbar. Auch ein Upload per FTP oder per eMail ist möglich, und natürlich können auch Streams auf die SD-Card gespeichert werden (brauche ich aber nicht).

        Die Featureliste ist lang, ich benötige diese ganzen Funktionen allerdings nicht. Also: Wer einen "Konverter" für analoge Videosignale sucht und eine einfache HS-Anbindung wünscht, ist mit dem Ding gut bedient! 4 Kanäle für 150,- Euro ist auch ein guter Preis wie ich finde.

        Ein Dauertest steht natürlich noch aus - das Teil wird aber nicht mal Handwarm, trotz diverser Spielereien meinerseits. Auch gab es keine Abstürze oder ähnliches. Das Anzeigen von 8 Kamerabildern gleichzeitig (auf einer Visuseite) klappte nahezu ohne Verzögerung. Refreshzeiten von 500 ms waren problemlos möglich!
        EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

        Kommentar


          #5
          Der Thread scheint mir zu gehören

          Ich habe die ajax.js jetzt noch derart verändert, dass diese automatisch erkennt, ob ich aus dem Internet komme oder aus dem lokalen LAN. Die Refreshzeiten der Kameras werden dann entsprechend angepasst (Internet 10s, Lokal 5s). So klappt's dann auch mit einer langsameren Verbindung...
          EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

          Kommentar


            #6
            naja ... wirklich hilfreich ist Dein Thread ja auch nicht....

            ajax.js jetzt noch derart verändert, dass diese automatisch erkennt, ob ich aus dem Internet komme oder aus dem lokalen LAN.
            Würde mich zB brennend interessieren..

            Kommentar


              #7
              Interessiert Dich das nun wirklich?! Aus dem werde ich nicht ganz schlau...

              Übrigens gibt's wieder was Neues: Ich habe ein eigenes Symbol gebaut und in die ajax.js implementiert. Dadurch kann die Refresh-Zeit auf jeder Visu-Seite definiert werden - also von Seite zu Seite variieren.
              EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

              Kommentar


                #8
                Und mich würde generell interessieren ob man eine Refreshzeiteinstellung pro Kamera machen kann. Habe beispielsweise auf einer Seite 2 Kameras eingeblendet, eine benötigt eine kurze Refreshzeit, bei der anderen Kamera reichen mehrere Minuten. Geht das?

                Es wäre sehr schön wenn Du uns mitteilen könntest, was Du in der ajax.js geändert hast um die Refreshzeiten pro Seite zu definieren.

                Danke!

                Kommentar


                  #9
                  Klar - im Grunde kein Problem. Ich versuch's mal zu erklären...

                  Die Sache mit der Unterscheidung "Internet/Lokales LAN" ist ganz simpel zu lösen: Gleich am Anfang der ajax.js ist diese Variable definiert:

                  IMG_STREAM = 300;

                  Die sorgt dafür, dass die Kameras alle 300 ms(!) refreshed werden. Um zu ermitteln, ob die Visu über's Internet aufgerufen wurde, habe ich folgendes hinzugefügt:

                  IMG_STREAM = 10000; //10 s für Internet (default)
                  if (window.location.href.substr(0,14)=="http://192.168") {IMG_STREAM=5000;} //5 s für LAN

                  Sprich: Wenn in der URL eine für's LAN reservierte IP "192.168..." steht, handelt es sich um einen lokalen Aufruf (sonst würde hier eine andere IP/Domain stehen). Unter Umständen also anzupassen.

                  Die Sache mit den Refreshzeiten pro Kamera ist etwas komplexer. Ich habe dafür ein Symbol im Experten erstellt, mit der Bild-ID "XXCAM". Dieses wird dann in der ajax.js geparst - etwa in Zeile 1900:


                  else if (aRes[0].substr(0,3)=="ICO")
                  {
                  aVisuItem = new CVisuItem;
                  aVisuItem.BS=4;
                  ...
                  if (aVisuItem.icoid=="XXPAGE")
                  {
                  w = aVisuItem.x;
                  h = aVisuItem.y;
                  aktVisuMode = 1;
                  }
                  ...

                  //### Kamera-Refresh mit eigenem Symbol XXCAM ###
                  if (aVisuItem.icoid=="XXCAM") {
                  CAM_REFRESH=aVisuItem.w*1000;
                  }

                  }


                  In dem "XXCAM"-Objekt wird als Breite(!) die Refreshzeit in Sekunden angegeben. Ist das Symbol also 5 Pixel breit, beträgt die Refreshzeit 5000 ms (also 5 Sekunden). Das Symbol selbst ist ein transparentes PNG - oder muss sonstwie versteckt werden.

                  Die Variable CAM_REFRESH habe ich global hinzugefügt. Diese wird dann im Anschluss an die eigentliche Refresh-Zeit-Variable übergeben:

                  else if (aRes[0].substr(0,3)=="CAM") {
                  aVisuItem = new CVisuItem;
                  aVisuItem.BS=2;
                  aVisuItem.id=getXmlAttr(aRes[0],"id");
                  ...
                  aVisuItem.auth=getXmlAttr(aRes[0],"auth");
                  aVisuItem.imgWait=CAM_REFRESH; //### <---- hier
                  aItems.push(aVisuItem);

                  Diese Variante ist jetzt nicht pro Kamera, sondern pro Visuseite zu verstehen. Das XXCAM-Symbol muss ausserdem VOR den Kameras in die Seite eingefügt werden, weil sonst die Variable XXCAM noch nicht geparsed worden ist.

                  Möchte man eine Refreshzeit pro Kamera angeben, müßte diese z.B. in den Daten der Kamera selbst irgendwie definiert werden. Dort ist aber kein Feld mehr frei... Aber es geht auch anders: Das XXCAM-Symbol einfach mehrfach in die Seite einfügen und entsprechend mit einer laufenden ID versehen und parsen. Das sollte zu schaffen sein
                  EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

                  Kommentar


                    #10
                    Danke für die Infos und für die Mühe. Ich werde mich bemühen das nachzuvollziehen. Noch eine Nachfrage. Deine Modifikation wird wirksam bei "Kamera-Direktzugriff", oder ohne diese Option?

                    Kommentar


                      #11
                      Bitte, kein Problem Ja, NUR für den Direktzugriff!
                      EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

                      Kommentar


                        #12
                        Ist etwas schwer zu erklären bei der ewig langen ajax.js...
                        EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

                        Kommentar


                          #13
                          Wo wird eigentlich die Refreshzeit definiert wenn der Kamera-Direktzugriff deaktiviert ist?

                          Kommentar


                            #14
                            Im Experten - Projekteinstellungen... (bzw. Kameraeinstellungen)

                            Aber wie schon angedeutet: Der NICHT-Direktzugriff ist nix... Doppelt gemoppelt quasi: Der HS pollt das Bild und stellt es in der Visu bereit. Kostet ne Menge Performance. Der einzige Vorteil: Das Bild steht auch via Internet zu verfügung, weil es ja der HS serviert. Beim Direktzugriff muss man im Router entsprechende Portforwardings für die Cams einstellen, um via Internet darauf zuzugreifen.

                            Ich habe das übrigens so gelöst: Für jede Kamera gibt's 2 Einträge, einmal lokal und einmal via Internet (mit anderer IP, etc.). In der Visu habe ich getrennte Seiten für die Kameras (Internet und LAN).

                            Natürlich ginge das auch eleganter, indem man die ajax.js entsprechend modifiziert (s.o.) und je nach Zugriffsart (Internet/LAN) andere URLs nimmt. Aber so finde ich es ganz praktisch, weil ich ja weiß woher ich zugreife...
                            EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

                            Kommentar


                              #15
                              Ich glaube das der "Nicht-Direktzugriff" auch sinnvoll ist, wenn man mehrere Visus ständig am Laufen hat, so wie ich. Dann greifen nicht alle Rechner separat auf die Bilder zu. (Erst recht bei kurzen Refreshzeiten.)
                              Ich hatte auch schon das Problem das ich mit einer der beiden Möglichkeiten ein Bild aus dem Internet in der Visu sehen konnte, mit der anderen Option nicht.

                              Kommentar

                              Lädt...
                              X