Ankündigung

Einklappen
Keine Ankündigung bisher.

Misterhouse - Eigene Weboberfläche

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

    #31
    Zitat von NilsS Beitrag anzeigen
    Denk mal an einen Server mit Gastzugang 40 User lassen die Seite mal so 10 Minuten offen.
    Ist das für den Server gesünder in der Zeit 40*10*60 = 18000 Anfragen zu beantworten? Ich habe da keine Erfahrung. Scheint mir aber auch nicht so ohne zu sein.

    Kommentar


      #32
      yep das ist deutlich gesünder.. das sind immer 40 Anfragen pro Sekunde die alle das gleiche kriegen. Ansonsten hast du 40 offene Anfragen die ja auch noch alle die Resourcen die sich ändern überwachen müssen), Da wärst du dann bei shared memory und co.
      Nils

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

      Kommentar


        #33
        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)
        TS2, B.IQ, DALI, WireGate für 1wire so wie Server für Logik und als KNX Visu die CometVisu auf HomeCockpit Minor. - Bitte keine PNs, Fragen gehören in das Forum, damit jeder was von den Antworten hat!

        Kommentar


          #34
          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


            #35
            Zitat von A-L Beitrag anzeigen
            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?
            Ich würde das nicht umbedingt vergleichen wollen, ich denke mal das die das DAS sicher andere Größenordnungen sind und dort sicher kein Datei/DB Zugriff besteht sondern das einfach über shared Memory an alle Threads verteilt wird, sowas ähnliches hab ich mal mit Basketballscores in ein LiveVideo von justintv rein. Das fand der Server mit ~180usern schon nicht Lustig.

            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...
            Nils

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

            Kommentar


              #36
              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
              Mike
              Angehängte Dateien

              Kommentar


                #37
                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


                  #38
                  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


                    #39
                    Zitat von pernozzoli Beitrag anzeigen
                    Was mir noch nicht einleuchtet ist wie
                    1. der Statusupdate ohne Polling (Patch) funktioniert
                    Da ist die Frage welches Polling du meinst. In dem Patch den ich hier veröffentlicht hatte ist in der letzten Version das Polling auf Client-Seite weg. Auf Misterhouse-Seite wird jetzt in der Hauptschleife nach jedem Durchlauf geprüft ob sich ein Status geändert hat. Das ist natürlich auch Polling. Ganz Misterhouse basiert allerdings auf diesem Polling.
                    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 anzeigen
                    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)
                    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 anzeigen
                    Ein kleines Proof-of-concept habe ich bereits erstellt,
                    Kannst du einen Patch hier einstellen?

                    Grüße
                    Mike

                    Kommentar


                      #40
                      Kannst du einen Patch hier einstellen?
                      naja... viel ist es ja nicht wirklich...

                      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
                      Arno
                      Angehängte Dateien

                      Kommentar


                        #41
                        Zitat von mike Beitrag anzeigen
                        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.
                        Warum auf eine Technologie beschränken? Wie wäre es die relevanten Items einfach in eine Gruppe zu schieben und dann nur alle Items in dieser Gruppe pollen. Das könnte man mit den Trigger Funktionen machen.

                        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)";
                            }
                        logstatechange ist dann eine procedure die bei jeder Änderung eines der Mitglieder der Gruppe $group aufgerufen wird.
                        Hilft das als Idee?

                        Kommentar


                          #42
                          Ja gute Idee. Mit tie_events habe ich noch nie gearbeitet. Leider wird da eval verwendet sonst wäre es schön einfach zu programmieren.

                          Ich habe das jetzt auf tie_event umgestellt und die check Routine wird deutlich seltener durchlaufen ...

                          Kommentar


                            #43
                            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
                            Angehängte Dateien

                            Kommentar


                              #44
                              Zitat von pernozzoli Beitrag anzeigen
                              By the way... weiss jemand, wie ich unter mh/perl eine Hintergrundtask starte?
                              MH ist single-threaded. Ein Hintergrundtask kannst du nur dadurch erzeugen indem du dich in die MainLoop einhakst und dann dort deinen Kode ausführst.

                              Mike

                              Kommentar


                                #45
                                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

                                Lädt...
                                X