Ankündigung

Einklappen
Keine Ankündigung bisher.

Entwicklung: xxAPI² HTML5 Client

Einklappen
Das ist ein wichtiges Thema.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Da wird einfach nur ein Python BaseHTTPServer laufen, oder zumindest etwas was so ziemlich das gleiche tut.
    Nils

    aktuelle Bausteine:
    BusAufsicht - ServiceCheck - Pushover - HS-Insight

    Kommentar


      Zitat von NilsS Beitrag anzeigen
      Python BaseHTTPServer
      Dann wäre der singlethreaded - wenn Dacom den nicht mit SocketServer / ThreadingMixIn auf multithreaded aufgebohrt hat.

      Kommentar


        Das macht man im allgemeinen immer.

        Code:
        homeserver = "192.168.232.12"
        
        from SimpleHTTPServer import SimpleHTTPRequestHandler
        from SocketServer import ThreadingMixIn,TCPServer,BaseRequestHandler
        import os
        import urllib2
        from StringIO import StringIO
        import gzip
        import mimetypes
        import posixpath
        from httplib import BadStatusLine
        if not mimetypes.inited:
            mimetypes.init() # try to read system mime.types
        extensions_map = mimetypes.types_map.copy()
        extensions_map.update({
            '.htm' : 'text/html',
            '.py': 'text/plain',
            '.c': 'text/plain',
            '.h': 'text/plain',
            '.png': 'image/png',
            '.appcache': 'text/cache-manifest ',
            '.css': 'text/css',
            })
        
        current_dir = os.curdir
        
        class homeserver_proxy_handler(SimpleHTTPRequestHandler):
            def do_GET(self):
                url = urllib2.urlparse.urlsplit(self.path)
                extension = posixpath.splitext(url.path)[1]
                if not url.path.startswith("/opt"): # and not url.path == "/hs":
                    for k,v in self.headers.items():
                        pass
                    try:
                        content_req = urllib2.Request(url="http://{}{}".format(homeserver,self.path))
                        content_con = urllib2.urlopen(content_req)
                    except BadStatusLine:
                        self.send_response(503)
                        return None
                    self.send_response(content_con.code)
                    for k,v in content_con.headers.items():
                        self.send_header(k,v)
                    self.end_headers()
        
                    self.copyfile(content_con,self.wfile);
                    content_con.close();
                else:
                    path = url.path[5:]
                    if path[-1]=="/":
                        path +="index.html"
                    fname = os.path.join(current_dir,path.replace("/",os.sep))
                    try:
                        content = open(fname,"rb")
                    except IOError:
                        self.send_error(404, "File not found")
                        return None
                    
                    self.send_response(200)
                    mimetype = extensions_map.get(extension,"application/octet-stream")
                    self.send_header('Content-type',mimetype)
                    fs = os.fstat(content.fileno())
                    self.send_header("Content-Length", str(fs[6]))
                    self.send_header("Last-Modified", self.date_time_string(fs.st_mtime))
                    self.end_headers()
                    self.copyfile(content,self.wfile)
                    content.close();
        
        class homeserver_proxy(ThreadingMixIn,TCPServer):
            pass
        
        try:
            server = homeserver_proxy(('', 80), homeserver_proxy_handler)
            server.daemon_threads = False
            print 'Started Proxy'
            server.serve_forever()
        
        except KeyboardInterrupt:
            print "shutdown"
            server.socket.close()
        ist zum Beispiel mein Python proxy der zwischen mir und HS sitzt damit ich nicht ewig hochladen muss.

        Interessant ist nur der Requesthandler, denn der hat die Funktionalität
        Nils

        aktuelle Bausteine:
        BusAufsicht - ServiceCheck - Pushover - HS-Insight

        Kommentar


          Update auf 2.025

          Bitte die [x]start.htm auf dem HS austauschen, alle Libs werden jetzt nicht mehr aus dem html heraus geladen. So können wir zusäzliche Libs besser laden.

          Das ist ein Recht großes Update, bitte testen ob es auf allen Geräten funktioniert
          Nils

          aktuelle Bausteine:
          BusAufsicht - ServiceCheck - Pushover - HS-Insight

          Kommentar


            Leider kämpfe ich immer noch mit dem Black Screen auf meinem PC mit Firefox. Die Visu startet nicht. Fehlermeldung in der Konsole: TypeError: _temp.charCodeAt is not a function xxapi2.js:1386

            Von meinem Android-Handy Firefox klappt es. Der XML-Escape Baustein ist drin, vorgestern hat es auch schon mal geklappt. Woran kann das liegen?
            Mit der neuen Version von xxAPI2 hat es nichts zu tun.

            Kommentar


              Das ist die Authentifizierungsfunktion.

              Hmm, dein Passwort gefällt ihm nicht. Vielleicht könntest du mir wenn ein Sonderzeichen drin ist, einmal das Zeichen schreiben. Gern auch per PN (bitte NUR das Sonderzeichen und kein Passwort)
              Nils

              aktuelle Bausteine:
              BusAufsicht - ServiceCheck - Pushover - HS-Insight

              Kommentar


                Versuch es jetzt noch mal (strg + F5)
                Nils

                aktuelle Bausteine:
                BusAufsicht - ServiceCheck - Pushover - HS-Insight

                Kommentar


                  STRG+F5 habe ich schon mehrmals probiert, ohne Erfolg. Das Paßwort hat keine Sonderzeichen, wurde auch nicht geändert, auf dem Handy funktioniert es ja auch.
                  Mir ist auch aufgefallen das ich keine Chance habe, wieder die Login-Maske zu sehen. Beim ersten Start habe ich Paßwort merken angeklickt und die Login-Maske seitdem nicht mehr aktivieren können. Habe im Firefox dazu die Chronik gelöscht, mit allen angebotenen Optionen, auch die Cookies Vielleicht würde es funktionieren, wenn das Login wieder abgefragt wird.

                  Kommentar


                    Strg + Shift + x

                    Da kannst du Logout drücken
                    Nils

                    aktuelle Bausteine:
                    BusAufsicht - ServiceCheck - Pushover - HS-Insight

                    Kommentar


                      man lernt nie aus. Und schon funktioniert es wieder. DANKE!

                      Kommentar


                        Da ich mehrere Visu-PCs habe, habe ich jetzt mal auf einem PC die xxAPI2 für Dauerbetrieb eingerichtet, auch wenn z.B. die Werteingabe erst mal noch nicht geht.
                        Folgendes ist mir aufgefallen / würde ich mir wünschen:

                        In der Visu habe ich einen Knopf eingerichtet, der die Visu beendet. Im Experten nennt sich das "Navigation: Abmelden und Beenden" In der xxAPI2 bewirkt dies ein Ausloggen, es erscheint also wieder die Login-Maske. Es wäre besser, wenn an dieser Stelle die Visu komplett verschwinden würde, also zurück zu Windows. Geht das einzubauen?

                        Kann man eine Funktion einbauen, die die Refreshzeit pro Kamera einstellbar macht? Ich habe hier eine modifizierte HSAV eines Forenmitglieds, bei der man im Pfad des Kamerabildes die Refreshzeit angeben kann. Sieht dann im Experten so aus: ip:/snapshot/view0.jpg?003. Die 003 wird ausgewertet und die Kamera wird alle 3s refreshed. Macht Sinn, wenn man beispielsweise Wetterbilder nur alle paar Minuten aktualisieren will und eine Türkamera alle 3s.

                        Kommentar


                          Zitat von viceversa Beitrag anzeigen
                          In der Visu habe ich einen Knopf eingerichtet, der die Visu beendet. Im Experten nennt sich das "Navigation: Abmelden und Beenden" In der xxAPI2 bewirkt dies ein Ausloggen, es erscheint also wieder die Login-Maske. Es wäre besser, wenn an dieser Stelle die Visu komplett verschwinden würde, also zurück zu Windows. Geht das einzubauen?
                          Da gibt es z.B. in JS das self.close() - das krankt aber etwas daran dass die meisten modernen Browser das mit einem "Kreisch! Das Fenster will sich selbst schließen - sind sie sicher: Ja / Nein" quittieren. Ist ein Sicherheitsfeature. Schlägt dann zu wenn die Seite manuell, z.B. vom User geöffnet wurde und dann eben versucht, sich selbst zu schließen.

                          Kommentar


                            Zitat von viceversa Beitrag anzeigen
                            auch wenn z.B. die Werteingabe erst mal noch nicht geht.
                            wieso geht die nicht?

                            Zitat von viceversa Beitrag anzeigen
                            wenn an dieser Stelle die Visu komplett verschwinden würde, also zurück zu Windows
                            macht aus den von Markus genannten Gründen nicht viel Sinn, kannst du aber mit einem Textfeld XXCLICK*Logout*self.close(); erreichen.

                            Zitat von viceversa Beitrag anzeigen
                            Kann man eine Funktion einbauen, die die Refreshzeit pro Kamera einstellbar macht
                            gibt es
                            XXIMG*Pfad*refresh die Benutzung des Kameraobjekts macht keinen Sinn, da der Pfad bei "Kamera Direktzugrif aus" nicht übertragen wird.

                            siehe XXIMG
                            https://knx-user-forum.de/454009-post2.html
                            Nils

                            aktuelle Bausteine:
                            BusAufsicht - ServiceCheck - Pushover - HS-Insight

                            Kommentar


                              @viceversa: Werteingabe geht perfekt!

                              @nils: Wunsch zur Werteingabe

                              War auch hier schon mal Thema.
                              Könnten man in der 2te Zeile Titel Werteingabe nicht einen Parameter einführen
                              z.B. passw

                              Und damit bewirken, dass eine verdecke Eingabe möglich wird.
                              Gruß Hartwig

                              Kommentar


                                @Hartwig
                                du meinst so? https://knx-user-forum.de/xxapi/3993...nt-38.html#371
                                Nils

                                aktuelle Bausteine:
                                BusAufsicht - ServiceCheck - Pushover - HS-Insight

                                Kommentar

                                Lädt...
                                X