Ankündigung

Einklappen
Keine Ankündigung bisher.

[mmh] eyeTV

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

    #31
    Hi,

    ok dann erst einmal Danke für die Aufklärung!
    Ich hab nun soviel verstanden:

    Parameter Übergabe läuft nur über Events eine Art Parameter Übergabe wie bei JS, AS(AppleScript) oder anderen Sprachen gibt es nur wenn Scripte per RUN aufgerufen werden. Ich mach eine Abfrage und wenn jemand auf den String Matcht wird der verarbeitet.
    JA?

    Ich hänge mich immer noch daran auf weil ich von anderen Programmiersprachen gewöhnt bin das ich Parameter schleppen kann und mir immer noch vorschwebt Parameter z.B. aus mmh in AS zu verarbeiten, Um z.b. dann per WebService weitere Informationen zu einem Kanal zu laden.
    Da fallen mir tausende Dinge ein wo ich mit den Values externe oder mmh Interne Dinge füttern kann.

    Events sind für mich immer Statuslos und fliegen, oder auch nicht. Parameter sind wohl definiert und ich kann bestimmen wer, was, wann, wo mit dem Wert anstellen soll.
    Wo ich Bauchschmerzen mit dem Event Modell habe ist, sobald "Mann" mal mit 2 iViewern loslegen will, was passiert dann wenn die Events da von 2 Stellen aus fliegen, woher weis der iViewer was zu wem gehört. Brauch ich dann für jeden iViewer auch eine extra mmh Instanz? Mir schwebt da schon vor das ein Zentraler mmh Server da delegiert und per Relay das verteilt. Oder sehe ich das falsch?

    vg macrauder

    Kommentar


      #32
      Evtl. stolperst Du über unsere Definitonen.

      Wenn "wir" über "Events" sprechen, dann bedeutet dies, dass eine externes Ereignis, woher auch immer kommend, eine Aktion in mmh auslöst. Die Event Definiton umschreibt lediglich die Quelle des "Auslösers" und das auslösende Ereignis. Da wir eben auf verschiedene Quellen "matchen" können.. eben auch eine Definiton (csv Datei) je Quelle. So zumindest gilt es für den Event Server und hat faktisch gar nix mit Events a la AE (Apple Event) zu tun.

      Der iViewer hat auch einen solchen Event Server. Begründet, dass wir 1. die Kosten für den Anwender gering halten, da keine zus. Event Server Lizenz zwingend nötig und 2. aus Gründen der Übersichtlichkeit, damit ich eben das iViewer Geraffel innerhalb einer Tabelle halten kann. Einschränkung: es kann nur auf den BC Port gelauscht werden. Aber ich kann ja eben auch alles mögliche in den BC-Port umleiten ...

      Und nach Möglichkeiten wie zB Werte als Parameter an ein AS oder SS zu übergeben, suchen wir auch noch. Im umgekehrten Fall muss lediglich auf den BC Port geschrieben werden, oder eben auch "gelauscht" aber da sagtest Du ja, das ginge nicht...

      Mir schwebt da schon vor das ein Zentraler mmh Server da delegiert und per Relay das verteilt. Oder sehe ich das falsch?
      genau so machen wir das !!! Als "Server" sehen wir dann den Mac an, mit dem sich der iViewer verbindet....

      LG

      Kommentar


        #33
        Zitat von macrauder Beitrag anzeigen
        Hi,

        ok dann erst einmal Danke für die Aufklärung!
        Ich hab nun soviel verstanden:

        Parameter Übergabe läuft nur über Events eine Art Parameter Übergabe wie bei JS, AS(AppleScript) oder anderen Sprachen gibt es nur wenn Scripte per RUN aufgerufen werden. Ich mach eine Abfrage und wenn jemand auf den String Matcht wird der verarbeitet.
        JA?
        Exakt.

        Ich hänge mich immer noch daran auf weil ich von anderen Programmiersprachen gewöhnt bin das ich Parameter schleppen kann und mir immer noch vorschwebt Parameter z.B. aus mmh in AS zu verarbeiten, Um z.b. dann per WebService weitere Informationen zu einem Kanal zu laden.
        Da fallen mir tausende Dinge ein wo ich mit den Values externe oder mmh Interne Dinge füttern kann.
        Ich weiß, worauf Du hinaus möchtest und kann Dein Gedankenmodell auch gut verstehen und nachvollziehen. Wenn man rein programmtechnisch denkt, hast Du auch vollig Recht. Ich abstrahiere mal etwas:
        Du erwartest auf ein Stück {Code1} einen {Wert}, den Du dann mit einem weiteren Stück {Code2} weiterverarbeiten möchtest.

        [Bedingung]:
        Das setzt jedoch voraus, daß Du selbst {Code1} erzeugt hast, denn nur dann bekommst Du den {Wert} zurück, um {Code2} erfolgreich ausführen zu können.

        An dieser Stelle kommen bei uns die Events im iViewer und Eventserver ins Spiel.
        Die Events stellen einen zentralen Datenpool dar. Dieser Datenpool wird a) teilweise automatisch (broadcast) und b) über Kommandos "gefüttert".
        Damit entkoppelt man die {Code1}-{Wert}-Abhängigkeit, denn mit dem Event-Modell spielt es keine Rolle mehr, wer {Code1} ausgeführt hat, solange der Rückgabewert bestimmten Kriterien (eben dem definierten Event-Match) entspricht, können beliebige Funktionen ausgelöst werden.
        Dein Ansatz funktioniert nämlich nur dann sauber, wenn es nur eine eindeutige Client-Beziehung gibt. Bei mehreren parallelen Aktionen mit verschiedenen Clients entstehen nicht verifizierte Stati (Beispiel: wer verhindert, daß während des Lesens des Sendernamens nicht ein anderer Client den Sender umschaltet?) bzw. ist dieses Verfahren hochgradig ineffektiv.
        Die Events zentralisieren das Ganze und stellen sicher, daß eindeutige und vor allem korrekte(!) Informationen verarbeitet werden. Denn es spielt keine Rolle wer wie wo warum wie schnell die Programme in EyeTV umschaltet. Wen es interessiert, der lauscht auf die Events und verarbeitet die Information dann vollautomatisch, sobald sie anliegen.
        Im übertragenen Sinne entspricht die Event-Engine dem select()-Befehl, mit dem man auf beliebig viele Sockets lauschen kann und der erst dann zurückkehrt, wenn entsprechende Daten anliegen.

        Wo ich Bauchschmerzen mit dem Event Modell habe ist, sobald "Mann" mal mit 2 iViewern loslegen will, was passiert dann wenn die Events da von 2 Stellen aus fliegen, woher weis der iViewer was zu wem gehört. Brauch ich dann für jeden iViewer auch eine extra mmh Instanz? Mir schwebt da schon vor das ein Zentraler mmh Server da delegiert und per Relay das verteilt. Oder sehe ich das falsch?
        Du siehst das nicht falsch, sondern nur anders. Wenn man das von mir oben beschriebene Event-Modell konsequent "durchdenkt", werden genau solche Probleme vermieden.
        Es gibt bei mehreren zeitgleich verbundenen iViewer-Clients zwei mögliche Zustände:
        a) alle Clients hängen auf der selben Maschine
        b) die Clients werden (teilweise) auf andere Maschinen relay't

        Im Falle von a) wird durch das Event-Modell sichergestellt, daß alle Clients zeitgleich die selbe Information bekommen. Die iViewer.csv ist nicht client-abhängig und damit wird jeder verbundene Client mit den selben Sequenzen versorgt.
        Bei b) arbeitet MMH im RELAY-Modus für den Client (und auch für den entfernten MMH) völlig transparent. Der "RELAY-MMH" ist für beide unsichtbar, sendet weder Status-Updates an den entsprechenden Client noch nimmt er irgendwelche Kommandos an. Damit kollidieren weder Kommandos noch andere Status-Updates von anderen Maschinen.
        Da das Relay Client-basiert arbeitet, können andere Clients schalten und walten, wie sie wollen.
        Gruß

        Sascha

        Kommentar


          #34
          Hi,

          die Vorteile von Publish/Subscribe erkenne ich ganz klar, gerade wenn ein System von unterschiedlichen Aktören besteht.
          Taster Schaltet Licht - iViewer auch oder
          iViewer wechselt TV Kanal - Fernbedienung auch
          und über die Events werden dann die Aktöre synchronisiert.

          Auch verstehe ich das Ihr nicht ein einheitliches Interface bereistellen könnt da jede Quelle unterschiedliche Daten sendet die Ihr nicht immer fest spezifizieren könnt.

          Also... bin überzeugt!

          Wo ich aber noch nicht so überzeugt bin ist bei der Interkommunikation der Komponenten/Commands untereinander.
          Denkt Ihr nicht auch das man Komponente/Script bauen können sollte, welche sich die Daten exakt wie von dir beschrieben:

          Code:
          ...Du erwartest auf ein Stück {Code1} einen {Wert}, den Du dann mit einem weiteren Stück {Code2} weiterverarbeiten möchtest.
          erhalten und dann das Result wieder als Event los jagt. Aber nur das Result und nicht die zwischen Steps.

          z.B. sendet meine Fritz bei einem Anruf die Telefonnummer auf den HS, der HS legt die auf ein iKO was ich bei mmh Empfange. Nun will ich die Telefonnummer aber gerne bei 11880 Auflösen um den Namen usw zu bekommen und dann das Result als Anruf Event los senden damit alle die Interesse haben damit was anstellen können.
          z.B. Anzeigen der Infos auf dem Fernseher.

          Seht es als eine Art Plugin an, wo ein Script auch als Result ein Event schreibt. Vielleicht könnt Ihr das einfach über ein spezielles Command auch abbilden
          <SYS><CREATEEVENT=ANRUFER,MUSTERMANN-HANDY></SYS>

          Erstellt ein Event:

          ANRUFER=MUSTERMANN-HANDY|OK

          Beim Thema Multiuserfähigkeit im iViewer warte ich mal ab bis das jemand am Fliegen hat, denke eh das da commandfusion noch eine Art SessionId ins Protokoll einführen muss um die Geräte zu Identifizieren und darüber dann z.B. das Relay zu steuern. Denn woher soll iViewer wissen das Gerät 1. in Relay-Küche und 2. in der Relay-Wohnstube nutzen will?

          VG macrauder

          Kommentar


            #35
            Der Webserver zB ist ja eben solch ein PlugIn !!! also die Möglichkeiten sind schon gegeben. Nur ist AS eben zu "schwach" oder meiner auch mmh... Wenn Du da auf X-Code bzw. Cacao zugreifst sollte solch ein PlugIn in jedem Fall umsetzbar sein. Die Übergabeschnittstelle ist eben dann der BC Port... das macht IMHO unser System ja so flexibel.

            Beim Thema Multiuserfähigkeit im iViewer warte ich mal ab bis das jemand am Fliegen hat,
            mein Tagesgeschäft !!!

            denke eh das da commandfusion noch eine Art SessionId ins Protokoll einführen muss um die Geräte zu Identifizieren
            Die Session ID vergibt der iViewer Server auf unserer Seite

            Denn woher soll iViewer wissen das Gerät 1. in Relay-Küche und 2. in der Relay-Wohnstube nutzen will
            Das was ja der Server, wer mit wem kommuniziert und verwaltet eben auch das Relay...

            einfach mal testen !!!

            LG

            Kommentar


              #36
              Hi,

              ich habe noch eine Frage zu mmh eyeTV, bei mir klappt

              <TV><ENABLEEPG></TV>

              nicht, sprich EPG wird nicht angezeigt, habt Ihr das auch?

              vg macrauder

              Kommentar


                #37
                Klappt bei mir ohne Probs.
                Gruß Jörg.


                "Wir sind nicht die ersten, die dieses Feature einbauen, aber wir werden es am besten umsetzen."
                (Steve Jobs)

                Kommentar


                  #38
                  Es kommt aber darauf an, was du vorher aufgerufen hast.
                  Hast du vorher z.B. die Senderliste in der Mache gahabt,
                  kommt leider nur die Senderliste und nicht das EPG.

                  Hast du vorher das EPG in der Mache gehabt, kommt dann auch das EPG.

                  Ergo, so richtig funzt es nicht. (ich habs gerade nochmal getestet, obwohl ich der Meinung bin, dass es schon einmal perfekt funktionierte)
                  Gruß Jörg.


                  "Wir sind nicht die ersten, die dieses Feature einbauen, aber wir werden es am besten umsetzen."
                  (Steve Jobs)

                  Kommentar


                    #39
                    Funktioniert auch perfekt....

                    Beachten: Es gibt 2 EPG Darstellungen...

                    Einmal über den Aufruf:

                    <TV><ENABLEEPG></TV>

                    ruft die klassische EPG Ansicht auf. bringt diese aber nicht in den Vordergrund, stellt also die Ansicht nicht über das TV Fenster. Das ist nach dem vorletzten eyeTV Update verschwunden...

                    Wir haben ene Lösung gefunden, wenn man die Kombination

                    <TV><FRONT></TV><SYS><CMDKEY=5></SYS>

                    sendet funzt es aber nur, wenn TV nich im Fullscreen Mode ist.

                    Ist TV im Fullscreenmode wir das "grafische" EPG Menu eingeblendet, finde ich persönlich auch besser... diese Funktion erreicht man aber eben auch durch die Befehle:

                    <TV><ENABLEFSEPG></TV>

                    oder

                    <TV><DISABLEFSEPG></TV>

                    LG

                    Kommentar


                      #40
                      Hi,

                      ich hatte natürlich TV im Fullscreen und dadurch nicht gesehen das es im Hintergrund aufgeht.

                      Wenn ich Fullscreen an habe und ENABLEFSEPG sende stoppt er das Bild und es wird aber kein EPG angezeigt.
                      Da sollte doch das EPG kommen welches ich über das OSD Menü auch erreiche, oder?
                      Wenn ich DISABLEFSEPG läuft das Bild weiter.
                      Ich hab die aktuelle 3.0.4 im Einsatz.
                      Bei dir klappt das?

                      vg macrauder

                      Kommentar


                        #41
                        Bei mir klappt das !!! Hätte auch keine Ahnung, arum das bei Dir nicht der Fall ist. EPG Daten gefüllt ???

                        Wenn Du zB folgendes sendest:

                        <TV><ENABLEFSEPG><ENABLEFSEPG></TV>

                        kommt das EPG OSD in halb Tranzparent... ;-) dann siehst auch, dass das TV Bild weiter läuft...

                        LG

                        Kommentar


                          #42
                          Hi,

                          es klappt, auch mit der Transparenz!
                          Das hängen liegt an der Auflösung, ich hatte mich mit VNC verbunden und nur ne 800x600 Auflösung, da stoppt eyeTV und zeigt kein EPG an. Sobald eine 1024er Auflösung anliegt klappt es.

                          Thx macrauder

                          Kommentar


                            #43
                            sag ich doch...

                            Kommentar


                              #44
                              Hallo

                              mein TV Tuner ist von digital everywhere und da ist auch eine Fernbedienung dabei mit der man eyeTv perfekt steuern kann
                              wenn ich mit der AUS Taste das TV Programm beende wird das eyeTV nicht komplett beendet sonder nur das Fernsehfenster geschlossen (Apfel W)
                              das ist so ok um evtl. laufende Exporte nicht zu unterbrechen, der MAC dann wenn keine Arbeit mehr ansteht aber in den sleep Modus geht.
                              Wenn das Fernsehfenster offen ist geht der MAC auch nicht schlafen.

                              Wie kann ich mit MMH diese Funktionen senden bzw. das Fernsehfenster schließen (Apfel W) bzw. wieder öffen (Apfel O)

                              <Hide> und <Show> haben mit dieser Funktion nichts zu tun und bringen nicht den gewünschten Effekt

                              Hintergrund:
                              Ich möchte wenn ich den Fernseher ausschalte auch das EyeTV Fernseh Fenster schließen, damit der MAC nach getaner Arbeit schlafen geht

                              LG

                              Josef
                              LG

                              Josef

                              Kommentar


                                #45
                                Kein Problem Jo,

                                für solche Fälle kannst Du immer auf die Key Codes zugreifen. Ist genau dafür gedacht, wenn wir Befehle nicht vollständig integriert haben...
                                In Deinem Fall.

                                APFEL "W"

                                <TV><FRONT></TV><SYS><CMDKEY=13></SYS>

                                APFEL "O"

                                <TV><FRONT></TV><SYS><CMDKEY=31></SYS>

                                Das <TV><FRONT></TV> ist hierbei wichtig, damit die Applikation in den Fokus gesetzt wird und die Key Evenst auch an der richtigen Stelle landen...

                                LG

                                Kommentar

                                Lädt...
                                X