Ankündigung

Einklappen
Keine Ankündigung bisher.

Kamera Refreshzeiten in Ajax-Visu

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

    #16
    Mh... Ich weiß ehrlich gesagt nicht, ob der HS beim Nicht-Direktzugriff die Bilder bei Bedarf pollt oder ständig.

    Will sagen: Wenn der HS immer dann pollt, wenn die entsprechende Seite aufgerufen wird, wäre es ja aus Sicht der Kamera egal, ob Direktzugriff oder nicht...

    Im Prinzip funktioniert das so: Der HS lädt die Bilder von der Kamera, speichert sie intern zwischen und liefert diese dann an den Client aus. Die Frage ist nun, "wer" dieses Runterladen triggert? Der Visu-Aufruf - oder ein interner Timer des HS.
    EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

    Kommentar


      #17
      Das weiß ich auch nicht. Ich habe für mich jetzt Einstellungen durch Ausprobieren gefunden, mit denen ich leben kann. Optimal wäre es aber wirklich, wenn man den Kamerarefresh pro Kamera einstellen könnte.

      Kommentar


        #18
        Es gibt ja im Experten unterschiedliche Refreshzeiten-Einstellungen für Seiten mit und ohne Kamera (bzw.Diagramm). Somit sollte der HS selbst also die Bilder nicht pollen wenn die aktive Seite das Bild nicht abfordert.
        Ist meinerseits aber nur eine Vermutung.

        Kommentar


          #19
          So, ich habe heute Morgen eine noch bessere Lösung für mich gefunden: Refresh-Zeit pro Kamera einstellen...

          Die Sache ist gaaaaanz einfach: In der Kamera-URL muss nur als Parameter die Zeit in Sekunden angehängt werden - wichtig ist hier nur das Format:

          001 bedeutet 1 Sekunde, 999 bedeutet 999 Sekunden. Also immer 3-stellig mit führenden Nullen.

          Je nach URL sieht das dann z.B. so aus:

          /blablabla/bild.jpg?001

          oder

          /blablabla/bild.jpg?parameter=xyz...&001

          Also die Refreshzeit als URL-GET-Parameter anhängen - je nach URL entweder mit einem "?" (falls es nur diesen einen Parameter gibt) oder eben per "&" anhängen (falls es schon andere Parameter geben sollte).

          WICHTIG: Dieser eigene Parameter muss immer ganz am Ende der URL stehen!! Hintergrund ist der, dass die URL nicht wirklich geparsed wird, sondern stumpf die letzten 3 Zeichen geschnappt werden... (war einfacher)

          In der Ajax.js ist dann nur noch folgende Zeile im Bereich von Zeile 1900 einzufügen:


          else if (aRes[0].substr(0,3)=="CAM") {
          aVisuItem = new CVisuItem;
          aVisuItem.BS=2;
          aVisuItem.id=getXmlAttr(aRes[0],"id");
          aVisuItem.typ=getXmlAttr(aRes[0],"typ");
          aVisuItem.pid=getXmlAttr(aRes[0],"pid");
          aVisuItem.x=getXmlAttr(aRes[0],"x")*1;
          aVisuItem.y=getXmlAttr(aRes[0],"y")*1;
          aVisuItem.w=getXmlAttr(aRes[0],"w")*1;
          aVisuItem.h=getXmlAttr(aRes[0],"h")*1;
          aVisuItem.hasCmd=getXmlAttr(aRes[0],"hcmd");
          aVisuItem.click=getXmlAttr(aRes[0],"click")*1;
          aVisuItem.url=getXmlAttr(aRes[0],"url");
          aVisuItem.auth=getXmlAttr(aRes[0],"auth");
          //### diese Zeile hier einfügen:
          aVisuItem.imgWait=aVisuItem.url.substr(aVisuItem.u rl.length-3,aVisuItem.url.length)*1000;
          //### ----------------------------
          aItems.push(aVisuItem);

          Edit:
          Die Zeile nicht nur einfügen, sondern die bestehende Zeile "aVisuItem.imgWait=..." hiermit ersetzen.

          Funktioniert wunderprächtig Möchte man für ein und die selbe Kamera verschiedene Refreshzeiten haben (z.B. auf verschiedenen Visu-Seiten) muss jetzt natürlich die Kamera "kopiert" werden und der URL-Parameter entsprechend geändert werden.
          EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

          Kommentar


            #20
            Schön das es eine Lösung gibt. Ich habe jetzt noch nicht ganz verstanden welche Zeilen ich einarbeiten muß, um nur die Funktion "Refreshzeit pro Kamera" einzupflegen.
            Also ohne die Unterscheidung "LAN / Internet" und ohne die Funktion "Refreshzeit pro Visu-Seite"
            Kannst Du das bitte noch mal an einem Beispiel zusammenstellen. Danke für die Geduld. Ich würde mich freuen wenn ich nicht der Einzige bin den es interessiert.

            Kommentar


              #21
              Genau so, wie ich es im Post zuvor beschrieben habe Also nur die Zeile

              aVisuItem.imgWait=IMG_STREAM; (ich weiß nicht mehr genau, was hier im Original stand)

              mit der Zeile

              aVisuItem.imgWait=aVisuItem.url.substr(aVisuItem.u rl.length-3,aVisuItem.url.length)*1000;

              ersetzen.

              Zu finden ungefähr in Zeile 1905 oder so. Das Prinzip ist ganz simpel: Ein paar Zeilen zuvor wird der Wert des Feldes "URL" der Kameraeinstellungen von HS gepollt. Und in meiner "magischen" Zeile werden die letzten 3 Stellen der URL (mal 1000) der Variablen zugewiesen, die die Refreshzeit beinhaltet. Im Original wird der Wert von IMG_STREAM am Anfang der ajax.js definiert (300).

              ACHTUNG: Die Zeile enthält KEINE Leerzeichen - hier im Forum wird irgendwie immer ein Leerzeichen eingefügt?! (bei mir zumindest steht dort ...u rl... statt ...url...)

              EDIT:
              WICHTIG! Du musst(!) jetzt bei jeder Kamera-URL die Zeit im erwähnten Format anhängen. Denn sonst bleibt die Refreshzeit leer... Das gibt dann eine Exception... Natürlich könnte man das einfach abfangen, aber ich möchte alles so schlank wie möglich halten Ist ja vermutlich eh nur für uns beide bestimmt
              EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

              Kommentar


                #22
                Nicht ganz!

                Grüße

                Axel

                Kommentar


                  #23
                  Das Thema scheint ja doch noch jemanden zu interessieren. Schön. Und was würdest Du verbessern Axel?

                  Kommentar


                    #24
                    Doch ganz!

                    Gerade habe ich noch eine ziemlich spezielle Sache programmiert:

                    Meine Grandstream-IP-Video-Server speichern per Motiondetektion JPGs auf SD-Card ab. In die ajax.js habe ich jetzt ein kleines "Projekt" integriert, das diese Bilder auflistet und anzeigt. War ziemlich fummelig, da die Grandstream-Dinger eine wirre Dateiliste liefern (per Ajax). Diese musste ich erstmal parsen, sortieren und auswerten. Klappt aber sehr gut inzwischen! Jetzt kommt noch die Kosmetik, damit sich das Ganze auch schön in die Visu integriert.

                    Diese Sache läuft natürlich nur in Javascript auf dem Client! Der HS hat damit nichts zu tun - ausser, dass er die ajax.js serviert
                    EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

                    Kommentar


                      #25
                      Also verbessern kann ich momentan nichts, aber ich habe durch Euch
                      erst mal eine Möglichkeit gefunden, meine analogen Cameras von einem
                      Heitel Recorder auf den HS zu bringen. Und die Sache mit der JS ist
                      klasse, da ich diese Geschichte eh noch etwas genauer anschauen muss.
                      Bisher profitiere ich von Euch.

                      Converter ist bestellt, melde mich wenn ich es installiere.

                      Grüße

                      Axel

                      Kommentar


                        #26
                        Wir reden hier aber von Standbildern, nicht von Streaming... Nur zur Info
                        EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

                        Kommentar


                          #27
                          @gaert

                          Welche Version der Ajax-Visu verwendest Du? Ich frage, weil bei mir einige Zeilen im Code anders aussehen. Es gibt ja unterschiedliche Versionen und ich weiß auch gar nicht welche Version aktuell ist. Bei der Gelegenheit möchte ich es gleich mal auf den aktuellen Stand bringen.

                          Welche DC Eingangsspannung hat der Grandstream IP-Video-Server?

                          Danke!

                          Kommentar


                            #28
                            Bei mir läuft nach dieser Modifikation die ganze Visu nicht mehr, Script Fehler.

                            Ich habe die Version vom 18.1.2011 hier aus dem Downloadbereich hsav-ger von vento66 / michel38.

                            Habe es jetzt erst mal rückgängig gemacht.

                            Kommentar


                              #29
                              Ich weiß nicht welche Version das genau ist... Die, die beim Experten 2.60 dabei war.

                              Du musst folgende Änderung vornehmen - sonst nichts:

                              ab Zeile 1892:

                              else if (aRes[0].substr(0,3)=="CAM") {
                              aVisuItem = new CVisuItem;
                              aVisuItem.BS=2;
                              aVisuItem.id=getXmlAttr(aRes[0],"id");
                              aVisuItem.typ=getXmlAttr(aRes[0],"typ");
                              aVisuItem.pid=getXmlAttr(aRes[0],"pid");
                              aVisuItem.x=getXmlAttr(aRes[0],"x")*1;
                              aVisuItem.y=getXmlAttr(aRes[0],"y")*1;
                              aVisuItem.w=getXmlAttr(aRes[0],"w")*1;
                              aVisuItem.h=getXmlAttr(aRes[0],"h")*1;
                              aVisuItem.hasCmd=getXmlAttr(aRes[0],"hcmd");
                              aVisuItem.click=getXmlAttr(aRes[0],"click")*1;
                              aVisuItem.url=getXmlAttr(aRes[0],"url");
                              aVisuItem.auth=getXmlAttr(aRes[0],"auth");

                              if (loginData.useStreaming==1) // && aVisuItem.url.length>0)
                              aVisuItem.imgWait=IMG_STREAM;
                              else
                              aVisuItem.imgWait=RefVisuCam;
                              aItems.push(aVisuItem);
                              }

                              Diesen ganzen Block austauschen gegen:


                              else if (aRes[0].substr(0,3)=="CAM") {
                              aVisuItem = new CVisuItem;
                              aVisuItem.BS=2;
                              aVisuItem.id=getXmlAttr(aRes[0],"id");
                              aVisuItem.typ=getXmlAttr(aRes[0],"typ");
                              aVisuItem.pid=getXmlAttr(aRes[0],"pid");
                              aVisuItem.x=getXmlAttr(aRes[0],"x")*1;
                              aVisuItem.y=getXmlAttr(aRes[0],"y")*1;
                              aVisuItem.w=getXmlAttr(aRes[0],"w")*1;
                              aVisuItem.h=getXmlAttr(aRes[0],"h")*1;
                              aVisuItem.hasCmd=getXmlAttr(aRes[0],"hcmd");
                              aVisuItem.click=getXmlAttr(aRes[0],"click")*1;
                              aVisuItem.url=getXmlAttr(aRes[0],"url");
                              aVisuItem.auth=getXmlAttr(aRes[0],"auth");

                              aVisuItem.imgWait=aVisuItem.url.substr(aVisuItem.u rl.length-3,aVisuItem.url.length)*1000;

                              aItems.push(aVisuItem);
                              }


                              Die Änderung ist nur folgende:

                              Der IF-Block


                              if (loginData.useStreaming==1) // && aVisuItem.url.length>0)
                              aVisuItem.imgWait=IMG_STREAM;
                              else
                              aVisuItem.imgWait=RefVisuCam;


                              wird ersetzt durch


                              aVisuItem.imgWait=aVisuItem.url.substr(aVisuItem.u rl.length-3,aVisuItem.url.length)*1000;


                              Das ist alles und funktioniert definitiv! Natürlich musst(!!!) Du die Kamera-URL im Experten auch wie beschrieben anpassen!!

                              Und wie gesagt: In der neuen Zeile erscheint hier im Forum immer ein Leerzeichen (ziemlich in der Mitte) - das gehört dort aber NICHT hin! Also NICHT ...u rl... sondern ...url...
                              EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

                              Kommentar


                                #30
                                Ja, dann ist das die originale Ajax-Visu von Gira. Die habe ich vor längerer Zeit durch die von mir genannte Ajax ersetzt. Da war ein Fehler drin oder eine Beschränkung, ich glaube irgendwas mit den Werteingaben.

                                Dann kann ich es leider nicht nutzen.

                                Kommentar

                                Lädt...
                                X