Zitat von NilsS
Beitrag anzeigen
Ankündigung
Einklappen
Keine Ankündigung bisher.
Misterhouse - Eigene Weboberfläche
Einklappen
X
-
Ich kenne MH zu wenig um hier Aussagen über die optimale Implementierung sagen zu können.
Reim vom (theoretischen) Ressourcen-Verbrauch müsste eine offen gehaltene Verbindung bei sinnvoller Implementierung deutlich Ressourcen schonender sein.
Da der Unterschied zum Pollen eh fließend ist, könnte man Gäste der Visu ja zu Lasten der Response in die resourcen optimale Ecke schieben...
Was ist denn so normal bei Gastzugängen? 40 gleichzeitige User würde ich schon als sehr hoch einschätzen... (Selbst eine Größenordung weniger Gäste würde ich als viel erachten)
Kommentar
-
Ich denke die offenen Verbindungen dürften nicht das Thema sein. Facebook realisiert mittels "Comet" die gesamte Chat-Funktion, und wie viele Personen sind da ständig online?
Hat sich schon jemand mit Comet beschäftigt? Ist eine Erweiterung von Ajax, und verwendet nur leicht abgewandelte Befehle. Es Arbeitet genau nach dem angedachten Prinzip, die Verbindungen offen zu halten. Auf dem Server läuft eine Schleife, durch die jederzeit Meldungen und ähnliches gesendet werden können.
Ich habe es bereits einmal probeweise eingesetzt, und abgesehen von kleinen Problemen funktionierte das ganze sehr gut.
Kommentar
-
Zitat von A-L Beitrag anzeigenIch denke die offenen Verbindungen dürften nicht das Thema sein. Facebook realisiert mittels "Comet" die gesamte Chat-Funktion, und wie viele Personen sind da ständig online?
Aber naja solche mengen an usern werden so oder so nicht zustande kommen und die HS sind ja auch nicht wirklich dafür ausgelegt. Wieder zurück zum eigentlichen, lohnt es sich die Verbindung zu halten und dafür extra Ballast zu programmieren? Ich hab's zwar hier im Forum auch in die HS Wunschliste für 2.4 eingetragen aber ... naja...
Kommentar
-
Hier nun ein Patch (auf misterhouse-2.105), der bis zu 60 Sekunden auf Änderungen wartet. Dadurch wird die Kommunikation deutlich weniger. Das Warten im mh ist nicht teuer.
Ein Aufruf erstellt jetzt eine Art Warteobjekt. Dieses wird nach jedem Mainloop-Durchlauf überprüft. Bei Änderungen wird eine Antwort an den Client gesendet. Sind mehr als 60 Sekunden vergangen wird eine leere Antwort versendet.
Der Client wiederrum erstellt eine neue Anfrage nun schon nach 100ms. Er reagiert nun nahezu sofort auf Statusänderungen am Bus.
Es gilt wieder gd=1.
Der eigentliche Warteservice kann von jedem Client der Javascript verwendet benutzt werden. Bis auf den GD-spezifischen Dateinamen ist da nicht spezielles.
Grüße
MikeAngehängte Dateien
Kommentar
-
Ihr seid der Hammer! Da ist man mal zwei Wochen im Urlaub und liest nur sporadisch mit und schon gibt es ne Lösung. Super! Ich werde das in den kommenden Tagen auch mal bei mir implementieren.
Ich konnte noch nicht genauer reinschauen, aber ist das so generisch, dass das sowohl für die iPhone Visu, als auch für die normale Visu funktioniert? Das wäre mir wichtig. Ne graphisch ordentliche Visu mit schnellem Feedback was auf dem Bus passiert wäre sicher ein Zugpferd um noch mehr Nutzer für MH zu begeistern.
Was mehr interessierte Nutzer bedeuten, zeigt dieser Thread ;-).
Kommentar
-
Gast
AJAX Client + SOAP Webservice
Hallo,
da ich ursprünglich aus dieser Entwicklungsecke komme, habe ich mich in den letzten Tagen ein wenig mit o.g. Themen auseinandergesetzt.
MH bietet ja eine (erweiterbare) Webservice Schnittstelle an. Hiermit ist es möglich, einen AJAX client ohne Umweg über pl-Aufrufe direkt mit MH kommunizieren zu lassen. Ein kleines Proof-of-concept habe ich bereits erstellt, war nicht ganz trivial, SOAP und Javascript zusammenzubringen.
Grundsätzlich kann ich also Items antriggern / setzen, ohne dass ein Page-Reload notwendig wäre.
Was mir noch nicht einleuchtet ist wie
1. der Statusupdate ohne Polling (Patch) funktioniert
2. wie man kontinuierliche Vorgänge anstößt, z.B. für eine Dimmfunktion (Button gedrückt halten und so lange hoch oder runter dimmen, bis losgelassen wird)
Da ich noch nicht über eine physikalische Automatisierung verfüge (Haus wird erst ab 2010 gebaut) kann ich momentan nur an der Visuschnittstelle etwas beitragen. Evt. baue ich mir im Winter ein Labormuster für Experimente zusammen. Ich wäre trotzdem gerne bei den weiteren Schritten dabei.
Gruss
Arno
Kommentar
-
Zitat von pernozzoli Beitrag anzeigenWas mir noch nicht einleuchtet ist wie
1. der Statusupdate ohne Polling (Patch) funktioniert
Was ich mir noch überlegt habe ist,ein Flag einzufügen, das vom EIB_Kommunikationsteil gesetzt wird, wenn es eine Änderung bzgl. EIB gegeben hat. Nur dann würde der Status überprüft werden. Nachteil ist nur das wir damit die X10 und was-weiss-ich-Benutzer von dieser Technik ausschliessen würden. Das wäre nicht nett.
Zitat von pernozzoli Beitrag anzeigen2. wie man kontinuierliche Vorgänge anstößt, z.B. für eine Dimmfunktion (Button gedrückt halten und so lange hoch oder runter dimmen, bis losgelassen wird)
Z.Z. ist es so, dass man beim Dimmen einmal tippt und das Dimmen startet. Beim zweiten Tipp wird das Dimmen gestoppt. EIB-technisch läuft das so das beim ersten Tipp ein Dimm-Telegram geschickt wird und beim zweiten Tipp ein Stop-Telegramm.
Was auch geht ist das ganze per ButtonDown, ButtonRelease (oder wie die Javascript-Events genau heißen) zu machen. Dann ist die Bedienung wie beim Taster an der Wand.Zitat von pernozzoli Beitrag anzeigenEin kleines Proof-of-concept habe ich bereits erstellt,
Grüße
Mike
Kommentar
-
Gast
Kannst du einen Patch hier einstellen?
Währenddessen empfiehlt sich ein Blick unter
{MH Pfad}/code/examples/SOAP_examples
im Unterverzeichnis "html" finden sich einige aufschlussreiche Beispiele.
Die vorhandenen Webservices können unter
{MH Pfad}/lib/WebServices.pm
um eigene Funktionen ergänzt werden
Gruss
ArnoAngehängte Dateien
Kommentar
-
Zitat von mike Beitrag anzeigenWas ich mir noch überlegt habe ist,ein Flag einzufügen, das vom EIB_Kommunikationsteil gesetzt wird, wenn es eine Änderung bzgl. EIB gegeben hat. Nur dann würde der Status überprüft werden. Nachteil ist nur das wir damit die X10 und was-weiss-ich-Benutzer von dieser Technik ausschliessen würden. Das wäre nicht nett.
Ich nutze das so für meine Anwesenheitssimulation:
Code:for my $item (list $group) { my $t = $item->get_object_name(); tie_event $item "logstatechange('$t' ,\$state)"; }
Hilft das als Idee?
Kommentar
-
Gast
Visu über AJAX und SOAP
Hallo,
so... nachdem die letzten Tage bei mir Funkstille war, melde ich mich wieder zurück.
Habe mein Sample überarbeitet, von der alten "prototype" basierten Version auf jQuery umgestellt und noch ein wenig mit Optik und Java gespielt.
Die WebServices.pm habe ich um eine Funktion "SwitchLightIem" erweitert um ein Umschalten zu ermöglichen, damit wandert die gesamte Logik dort wo sie hingehört und nicht in die Visu.
Nun geht es an das übergeordnete Konzept. Die Idee dahinter ist, einzelne Bedienseiten ("VirtualRooms") mittels XML zu definieren und die Oberfläche dazu dynamisch unter Javascript aufzubauen...
By the way... weiss jemand, wie ich unter mh/perl eine Hintergrundtask starte?
Gruss
Arno
Kommentar
-
Zitat von pernozzoli Beitrag anzeigenBy the way... weiss jemand, wie ich unter mh/perl eine Hintergrundtask starte?
Mike
Kommentar
-
Gast
wie realisiert Ihr denn Dimmfunktionen mit MH?
Die Idee war, dass ich bei einen Mousedown auf ein Button ein Request generiere (Dimmen hoch/runter starten) und bei Mouseup einen weiteren um das Dimmen wieder zu stoppen. Damit soll MH das kontinuierliche Senden der notwendigen Telegramme übernehmen.
Naja... evt. geht das auch anders.
Gruss
Arno
Kommentar
Kommentar