Da wird einfach nur ein Python BaseHTTPServer laufen, oder zumindest etwas was so ziemlich das gleiche tut.
Ankündigung
Einklappen
Keine Ankündigung bisher.
Entwicklung: xxAPI² HTML5 Client
Einklappen
Das ist ein wichtiges Thema.
X
X
-
Zitat von NilsS Beitrag anzeigenPython BaseHTTPServer
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()
Interessant ist nur der Requesthandler, denn der hat die Funktionalität
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
-
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
-
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 anzeigenIn 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?
Kommentar
-
Zitat von viceversa Beitrag anzeigenauch wenn z.B. die Werteingabe erst mal noch nicht geht.
Zitat von viceversa Beitrag anzeigenwenn an dieser Stelle die Visu komplett verschwinden würde, also zurück zu Windows
Zitat von viceversa Beitrag anzeigenKann man eine Funktion einbauen, die die Refreshzeit pro Kamera einstellbar macht
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
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
-
Kommentar