Ankündigung

Einklappen
Keine Ankündigung bisher.

Kamera Refreshzeiten in Ajax-Visu

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

    #31
    Mit ein klein wenig Programmiererfahrung in Javascript schaffst Du das locker.

    Das Prinzip wird bei jeder ajax.js das selbe sein - irgendwo werden die Kameraeinstellungen vom HS geholt (per Ajax) und hier setzt die magische Zeile an: Statt einer Konstanten aus dem ajax.js-Script (bei mir IMG-STREAM) wird halt eine Variable für den TimeOut eingesetzt. Und der Wert der Variable wird bei mir halt notgedrungen über die Kamera-URL übergeben, weil sonst kein freies Übergabefeld vorhanden ist.

    Inzwischen habe ich noch ein iFRAME-Objekt gebaut - somit können auf beliebigen Visu-Seiten beliebige iFrames mit beliebigem Inhalt eingefügt werden. Man muss lediglich ein Text-Objekt im Experten erstellen mit der gewünschten Größe/Hintergrundfarbe und den Text im Format "XXIFRAME,(URL)" eingeben. So lassen sich ganz einfach beliebige Websites in der Visu darstellen. Ich nutze das allerdings, um eigene htm-Dateien vom HS anzuzeigen, z.B. den erwähnten Kamera-Archiv-Viewer...
    EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

    Kommentar


      #32
      So, es funktioniert jetzt auch bei mir.

      Ich hatte aus Deinem Topic #21 den u rl-Fehler mit reinkopiert, obwohl Du es ja beschrieben hattest. Und in Deinem letzten Topic kam es auch deutlicher hervor, das der gesamte IF-Block:

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

      ersetzt werden muß, nicht nur die Zeile:

      aVisuItem.imgWait=IMG_STREAM;

      Das vielleicht noch als Hinweis falls es weitere Interessenten gibt.

      Danke nochmal!

      Kommentar


        #33
        Na siehst Du Mit dem IF-Block war mein Fehler... Ich hatte schon zuviel an der Datei herumgespielt - bei mit gab's keinen IF-Block mehr

        Hier mal ein Screenshot meiner Ajax-Visu mit dem selbst gebauten Kamera-Archiv-Viewer als iFrame eingebettet.

        Die Visu ist noch lange nicht fertig - ist noch etwas karg... Und es ist erst eine Kamera verkabelt, daher gibt's nur auf Kanal 1 etwas zu sehen.

        Jetzt noch die Optik verbessern und dann kommt das nächste Kleinprojekt: Hübsche Diagramme per Canvas (statt dem vom HS generierten 90er-Jahre-PNG-Bild)
        Angehängte Dateien
        EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

        Kommentar


          #34
          Die Geschichte mit den iFrames würde mich auch interessieren, in der xxAPI habe ich es nie so richtig zum Laufen bekommen, Webseiten einzublenden.

          Ich würde mich freuen, wenn Du Deine erwähnten Änderungen public machen könntest, vielleicht hier im Downloadbereich. Sicher gibt es außer mir noch andere Interessenten.

          Kommentar


            #35
            Die ajax.js habe ich übrigens fast zu 100% kapiert inzwischen. Einziges Problem ist der Datenaustausch mit dem HS - schnall ich zwar auch in weiten Teilen, aber es gibt eben ein paar Dinge, die ich nur durch Probieren herausfinden kann. Hier wäre eine Doku ne feine Sache, aber die gibt's anscheinend nicht.
            EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

            Kommentar


              #36
              Die xxApi mag ich nicht, weil nicht individuell zugeschnitten auf meinen Bedarf. Die iFrame-Sache ist auch ganz einfach:

              Ca. in Zeile 1640 steht:


              else if (item.BS==3)
              {
              var div = document.getElementById(sID1);
              var ico = document.getElementById(sID2);

              if (ico==null)
              ...

              genau davor (Klammern beachten!) muss das hier rein:

              //###Das hier einfügen:###
              else if (item.BS==100)
              {
              var div = document.getElementById(sID1);

              if (div==null)
              {
              div = document.createElement("div");
              div.id = sID1;
              div.name=k;
              div.style.position="absolute";
              div.style.top=item.y+"px";
              div.style.left=item.x+"px";
              div.style.width=item.w+"px";
              div.style.height=item.h+"px";
              div.style.WebkitOverflowScrolling="touch";
              div.innerHTML="<iframe src='"+item.txt+"' width='"+item.w+"' height='"+item.h+"' align='left' scrolling='auto' marginheight='0' marginwidth='0' frameborder='0'>";
              if (item.bcolor>=0) {div.style.backgroundColor=num2color(item.bcolor); }
              new_base_page.appendChild(div);
              }

              div.style.cursor = "default";
              item.handle = div;
              item.temphandle = null;
              }
              //###hier geht es weiter###

              else if (item.BS==3)
              {
              var div = document.getElementById(sID1);
              var ico = document.getElementById(sID2);

              if (ico==null)
              ...



              und in Zeile 1850 (so ungefähr):


              if (aRes[0].substr(0,3)=="TXT")
              {
              aVisuItem = new CVisuItem;
              aVisuItem.BS=1;
              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.border=getXmlAttr(aRes[0],"bord")*1;
              aVisuItem.fcolor=getXmlAttr(aRes[0],"fcol")*1;
              aVisuItem.bcolor=getXmlAttr(aRes[0],"bgcol")*1;
              aVisuItem.fontID=getXmlAttr(aRes[0],"fid");
              aVisuItem.align=getXmlAttr(aRes[0],"align")*1;
              aVisuItem.txt=getXmlAttr(aRes[0],"txt");
              aVisuItem.hasCmd=getXmlAttr(aRes[0],"hcmd");
              aVisuItem.click=getXmlAttr(aRes[0],"click")*1;

              //###Das hier einfügen:###
              if (aVisuItem.txt.substr(0,9)=="XXIFRAME,") {
              aVisuItem.txt=aVisuItem.txt.substr(9,aVisuItem.txt .length-9); //URL extrahieren
              aVisuItem.BS=100; //iFrame
              }
              //###hier geht es weiter###

              aItems.push(aVisuItem);
              }


              Das war's auch schon. Und jetzt ein Text-Objekt im Experten erstellen, dessen Größe und Hintergrundfarbe bestimmten die iFrame-Parameter (Größe und Farbe...). Und jetzt kommt's: Der Text (also der sichtbare Text, nicht die Bezeichnung) muss dieses Format haben:

              XXIFRAME,url...

              Also z.B:
              XXIFRAME,h t t p :// xyz. de (natürlich ohne die Leerzeichen, aber sonst macht das Forum einen Link draus)

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

              Kommentar


                #37
                Die Webseiteneinblendung funktioniert nun auch bei mir. Allerdings funktioniert es offenbar nur mit statischen Texten. Was könnte ich machen, um nicht für jede Website eine eigene Visu-Fläche anlegen zu müssen, die Webseiten also umzuschalten?

                Kommentar


                  #38
                  Klar, das geht so nur mit statischen Texten - ist auch so gedacht gewesen, weil ich nur genau dieses Feature brauchte... Ich kann mich bei Gelegenheit gerne damit beschäftigen - dürfte nicht allzu schwer sein.
                  EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

                  Kommentar


                    #39
                    Klingt gut. Danke. Es würde mich sehr freuen.

                    Kommentar

                    Lädt...
                    X