Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - Mehrzeiligen Output ausgeben

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

    - √ - Mehrzeiligen Output ausgeben

    Hallo,

    ich habe ein Script, was mir einen mehrzeiligen (ca. 100) Output ausgibt. Würde dies gerne in Openhab einbinden und die Ausgabe in Openhab darstellen.

    Wie lässt sich das am besten bewerkstelligen?

    Danke & Gruß,
    thoern

    #2
    Hi,

    hast du versucht, das über die REST-API in ein Text item zu schreiben?

    Gruss
    Norbert

    Kommentar


      #3
      Hallo,

      Zitat von NSchnitzler Beitrag anzeigen
      hast du versucht, das über die REST-API in ein Text item zu schreiben?
      Ich vermute mal, du meinst ein String-Item. Nein, habe ich nicht, da ich das Problem inzwischen lösen konnte: Ich führe das Skript einfach als CGI aus und habe in der Sitemap dann einen "iframe" deklariert. Funzt einwandfrei!

      Hintergrund: Das Skript gibt mir die letzten tausend Zeilen des openHAB-Event-Logs in umgedrehter Reihenfolge aus (neueste Zeilen zuerst). Somit kann ich schnell mal über das Frontend nachschauen, was so die letzten Stunden HAB-mäßig so alles passiert ist.

      Gruß,
      thoern

      Kommentar


        #4
        Hi,

        würdest Du das Script posten, daran hätte ich Interesse?!
        Bzw. Hört sich nach einem Eintrag in das Sample-Wiki an :-)

        Gruss
        Norbert

        Kommentar


          #5
          +1 - würde mich auch interessieren.

          Kommentar


            #6
            Bei mir geht das, da ich noch einen Apache auf dem selben Server laufen habe, auf dem auch openHAB läuft. Dieser Apache ist quasi meine "CGI-Runtime".
            Der Jetty, den openHAB verwendet, soll auch CGI's können. Leider weiss ich (noch) nicht wie das geht.

            Vielleicht hat jemand einen Tipp?

            Gruß,
            thoern

            Kommentar


              #7
              Ok,

              leider hab ich es auf die Schnelle nicht hinbekommen, den OpenHAB-Jetty zur Ausführung von CGI's zu ertüchtigen. Ihr benötigt also auf eurem System einen Webserver der CGI's ausführen kann. In das entsprechende CGI-Verzeichnis legt ihr folgende Datei:

              openhab_events.pl
              Code:
              #!/usr/bin/perl -w
              #
              my $logfile = "/opt/openhab/logs/events.log";
              my $nr_lines = 1000;
              
              
              open(FILE, "<$logfile");
                      my @lines = reverse <FILE>;
              close(FILE);
              
              print "Content-type: text/plain\n\n";
              for ($i = 0; $i < $nr_lines; $i++) {
                      print $lines[$i];
              }
              Dann noch die Sitemap entsprechen konfigurieren:
              Code:
              Text label="openHAB Eventlog" icon="office" {
                       Webview url="http://your.webserver.de/cgi-bin/openhab_events.pl" height=20
              }
              Screenshots, wie das Ganze aussieht, im Anhang (Sonstiges -> openHAB Eventlog).

              Viel Spaß,
              thoern
              Angehängte Dateien

              Kommentar


                #8
                Super Sache!!! Hat direkt geklappt.
                Hab auf deinem Screenshot gesehen, dass du auch Wetter anzeigst, da hab ich bis jetzt keine Lösung gefunden, die ich so richtig gut finde. Würdest du uns diese auch zeigen?

                Gruss
                Norbert

                Kommentar


                  #9
                  super danke - sofort eingebaut!

                  Kommentar


                    #10
                    Ich habe gerade versucht das umzusetzen, irgendwo scheint es aber noch zu klemmen:

                    - Das Cgi-Skript kann ich von der Kommandozeile und aus dem Browser heraus ausführen, die Ausgabe ist Korrekt

                    - Im Opera wird es auch in der Classic-Oberfläche korrekt dargestellt

                    - Im Safari und Firefox wird zwar der Webview dargestellt, bleibt aber leer. Wenn ich ersatzweise heise online - IT-News, Nachrichten und Hintergründe als Adresse eintrage ist aber alles korrekt

                    - Im Opera bekomme foolgenden Fehler wenn ich anstatt des Namens des Webservers die IP angebe: "Die Website erlaubt es nicht, dass deren Inhalt in einem Frame angezeigt wird. Sie muss in einem separaten Fenster angezeigt werden." Mit "Dokument in neuem Fenster öffnen" ist es dann aber wieder korrekt


                    Im Log bin ich dabei auf folgenden Fehler gestoßen, weiss aber nicht ob es einen Zusammenhabg gibt:

                    Code:
                    2013-12-04 14:33:09.213 WARN  o.e.j.servlet.ServletHandler[:553]- /openhab.app
                    org.eclipse.emf.common.util.BasicEList$BasicIndexOutOfBoundsException: index=7, size=7
                    	at org.eclipse.emf.common.util.BasicEList.get(BasicEList.java:346)
                    	at org.openhab.ui.internal.items.ItemUIRegistryImpl.getWidget(ItemUIRegistryImpl.java:431)
                    	at org.openhab.ui.webapp.internal.servlet.WebAppServlet.service(WebAppServlet.java:149)
                    	at org.eclipse.equinox.http.servlet.internal.ServletRegistration.service(ServletRegistration.java:61)
                    	at org.eclipse.equinox.http.servlet.internal.ProxyServlet.processAlias(ProxyServlet.java:128)
                    	at org.eclipse.equinox.http.servlet.internal.ProxyServlet.service(ProxyServlet.java:60)
                    Mir gehen da leider recht schnell die Ideen aus...

                    Danke schon mal für die Hilfe!

                    Kommentar


                      #11
                      Hi,

                      hast du alle Tests von derselben Maschine aus ausgeführt?

                      Irgendwie hört sich das so an, als wäre deine Webserverkonfiguration nicht korrekt und du überdies auch noch von unterschiedlichen Systemen bzw. aus verschiedenen Netzwerksegmenten testest.

                      Zur Fehlereingrenzung teste erst einmal nur von der Maschine wo der direkte Aufruf des CGI's im Browser funktioniert.

                      Gruß,
                      thoern

                      Kommentar


                        #12
                        Das hatte ich auch schon gedacht, aber es war alles vom gleichen Rechner aus.

                        Eben noch mal probiert: Opera tut es so wie er soll, Safari und Firefox zeigen nur einen leeren Webview. Der direkte Link zum cgi funktioniert aber aus allen drei Browsern heraus...

                        Der Webserver (Apache) läuft auf dem gleichen Rechner wie openHAB. Er liefert auch noch ein Bild aus was ich in der Oberfläche anzeige, dass wiederum funktioniert in allen Browsern...

                        Kommentar


                          #13
                          Hi,

                          also der OpenHAB-Browser ist ja eigentlich Chrome

                          Aber ich habe es gerade bei mir mit Firefox probiert. Funzt!
                          Dieses Webview-Teil erzeugt ja auch nur einen iframe.

                          Welche UI hast du denn? Ich benutze das Classic-UI

                          Gruß,
                          thoern

                          Kommentar


                            #14
                            Das Classic UI nutze ich auch! Safari ist ja auch ein Webkit Browser, da hätte ich eher erwartet dass es im Opera nicht hinhaut. Merkwürdig ist ja auch, dass es mit der Heise Seite im Webview hinhaut.

                            Der Safari auf dem iPad tut es übrigens auch nicht.

                            Kommentar


                              #15
                              Ich hab jetzt noch einen Update auf den aktuellen Snapshot Build durchgeführt und es auch mit Chrome getestet, bringt aber leider keine Änderung.

                              Auch mit Chrome wird nur ein leerer Webview angezeigt, beim direkten Aufruf des CGIs kommt aber das korrekte Ergebnis

                              Ich glaube ja gerne, dass das an meiner Apache Konfiguration liegt (auch wenn ich dann nicht verstehe warum es in Opera funktioniert), bin aber für jede Idee was es sein könnte dankbar!

                              Kommentar

                              Lädt...
                              X