Ankündigung

Einklappen
Keine Ankündigung bisher.

[mmh] Aktuelle Versionen (BETA) Rollup package zur Version 1.0.56

Einklappen
Dieses Thema ist geschlossen.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    [mmh] Aktuelle Versionen (BETA) Rollup package zur Version 1.0.56

    Version 1.0.46

    Airport-Support Erweiterung:

    Voraussetzungen:
    • Airfoil muß installiert sein
    • Die Applikationen, deren Ton übertragen werden soll, müssen Airfoil einmal bekannt gemacht werden (erscheinen dann im Pull-Down-Menü von Airfoil)

    Neue SYS-Befehle zur Steuerung der Airports:
    • GETSPEAKERLIST - listet alle verfügbaren Airports mit Namen auf("Computer" ist der lokale Ton des Macs)
    • GETSPEAKERSOURCE - gibt die aktuelle Applikation bzw. den aktiven Eingang aus, dessen Ton gerade gestreamt wird
    • SETSPEAKERSOURCE={Appname} - wahlt die Applikation aus, die gestreamt werden soll
    • SETSPEAKERSOURCEDEVICE={Eingang} - wahlt den Audio-Eingang aus, der gestreamt werden soll
    • GETAUDIODEVICELIST - listet alle verfügbaren Audio-Eingange auf
    • GETSPEAKERVOL={Airport-Name} - gibt die aktuelle Lautstarke des gewahlten Airports aus
    • SETSPEAKERVOL={Airport-Name,}{0...100} - setzt die Lautstarke des gewahlten Airports absolut, wird der Name
      weggelassen, wird die Lautstarke für alle Airports (inkl. "Computer") gesetzt
    • SPEAKERVOLUP={Airport-Name,}{0...100} - erhöht die Lautstarke um den angegebenen Wert, der Name ist auch hier optional
    • SPEAKERVOLDN={Airport-Name,}{0...100} - senkt die Lautstarke, sonst wie SPEAKERVOLUP
    • ENABLESPEAKER={Airport-Name} - schaltet den gewahlten Airport ein
    • DISABLESPEAKER={Airport-Name} - schaltet den gewahlten Airport aus
    • ENABLEALLSPEAKERS - schaltet alle Airports ein
    • DISABLEALLSPEAKERS - schaltet alle Airports aus
    • GETSPEAKERSTATE={Airport-Name} - liefert den Status des gewahlten Airports: ENABLED / DISABLED / NOT_AVAILABLE

    Commandserver-Erweiterungen:
    Im MAPPINGS-Bereich der .csv dürfen jetzt auch Hex-Werte (z.B. "\0x0D", genau wie im COMMANDS-Bereich) vorkommen, auf die gematcht wird. Außerdem gibt es weitere Konfigurations-möglichkeiten:

    • MAPPREFIX; - fügt vor jedem Mappings-Eintrag Zeichen an.
    • MAPSUFFIX; - fügt an jeden Mappings-Eintrag Zeichen an.
    • CMDPREFIX; fügt vor jeden Command-Eintrag Zeichen an
    • CMDSUFFIX - fügt an jeden Command -Eintrag Zeichen an.
    • CLIENTIP; - gibt eine weitere IP an, an die das Reply des Commandservers gesendet wird
    • CLIENTPORT; - gibt den Port auf der Clientip an, an die das Reply gesendet werden soll. CLIENTIP und CLIENTPORT müssen beide definiert sein

    Sonstiges

    Die Ausgaben auf dem Loggingport wurden erweitert. Es wird jetzt sowohl die komplette, empfangene Kommandosequenz wie auch die Rückgabesequenz ausgegeben. Außerdem werden samtliche Commandserver- Replys mit Ziel-IP und -Port augegeben.

    Handling des Applikationsnamens:
    Es gibt jetzt einen "externen" Applikationsnamen "m..myhome", der z.b.


    für den Installer, das Config-Panel, den Titel der Main-Buttonleiste und das Copyright verwendet wird.cAußerdem gibt es einen "internen" Applikationsnamen "macmyhome", der für Pfade und Dateinamen verwendet wird. Um die Abwartskompatibilitat zu alten Scripten zu gewahrleisten, reagiert die Main-Buttonleiste auf folgende Argumente von OPENBUTTONS und CLOSEBUTTONS:
    • "macmyhome" (interner App-Name)
    • "m..myhome" (externer App-Name = Titel)
    • "main" (Rang der Buttonleiste)

    Groß- und Kleinscheibung ist dabei - wie immer - egal.

    Bugfix in der WINDOW-Klasse: Das trage Verhalten beim wiederholten Aufruf von bestimmten Webseiten sollte behoben sein.


    Version 1.0.48
    es ist soweit - Der Mac streamt, bis die Heide wackelt....:-)

    Installation des EyeTV Plugins (geschieht spater über den Installer):
    EyeTV ggfs. beenden und das beiliegende EyeTVMMHPlugin.bundle in den Ordner /Applications/EyeTV.app/Contents/Plugins kopieren. Falls kein Plugins-Ordner existiert, diesen einfach vorher anlegen. (ist aktuell erledigt)
    Neue Kommandoklasse STREAMER mit folgenden Befehlen:
    • ON - startet die Streaming-Engine und ggfs EyeTV (minimiert)
    • OFF - beendet die Streaming-Engine, EyeTV lauft weiter
    • CH={Kanalnummer} oder {Kanalname} - wahlt die Streaming-Quelle.
    Dieser Befehle funktioniert analog zum SELECT-Befehl in der Windows- Klasse. Alle nachfolgenden, kanalbezogenen Befehle beziehen sich auf den zuletzt mit CH ausgewahlen Kanal



    • GETCHLIST - liefert eine Liste mit allen zur Zeit verfügbaren Kanalen und der entsprechenden Kanalnummer.
    • ADDTARGET={IP:Port} - weist der zuvor mit CH gewahlten Quelle ein Ziel zu und beginnt sofort mit dem UDP-Streaming zur angegebenen Adresse. es wird eine eindeutige Streaming-ID zurückgegeben. Auf dem Client dem VLC bitte als URL: udp://@:{Portnummer} übergeben.
    • REMOVETARGET={IP:Port} oder {Streaming-ID} oder {IP} - stoppt das Streaming des per IP:Port oder ID angegeben Streams. Wird nur die IP angegeben, werden alle an diese IP gerichteten Streams gestoppt.
    • REMOVEALLTARGETS - stoppt alle Streams
    • GETTARGETSFORIP={IP} - listet alle an die IP gerichteten Streams auf.
    • GETTARGETSFORCH={Kanalnummer} oder {Kanalname} - listet alle IP- Adressen auf, an die der Kanal gestreamt wird
    • GETALLTARGETS - listet alles auf, was gestreamt wird
    Grundsatzlich:

    Die Kanalnummern der jeweiligen Sender sind nicht festgelegt, sondern können sich beim Neustart von EyeTV oder mmh andern. Deshalb ist es sinnvoller, den Sender anhand des Namens auszuwahlen.

    Es stehen immer alle Sender eines Transponders zur Verfügung. Mit 4 Tunern sind so also 16 Programme gleichzeitig möglich, wenn man die Sender in EyeTV geschickt wahlt. (haben wir auch schon getestet). Ein USB-Stick im Dual-Mode liefert also 8 Programme gleichzeitig.

    Sollte es bei mehr als 2 TV-Bildern in EyeTV zu Streaming-Aussetzern kommen, liegt das an der hohen Prozessorlast, die EyeTV erzeugt. dann Einfach die nicht lokal notwendigen TV-BIlder ins Dock minimieren.

    Streaming an Broadcast-Adressen ist möglich.

    Die Zahl der Streams ist nur durch die MAC-Hardware bzw. das Netzwerk beschrankt.

    Zusatzlich ist TCP-Streaming ohne Steuerungsbefehle möglich: die Portnummer entspricht dabei der Kanalnummer+61000. Wenn z.b. RTL auf Kanal 5 lauft, kann der VLC sich dieses Programm mit der URL tcp://{Mac-IP}:61005 "abholen". Die Zahl der TCP-Streams ist ebenfalls nicht begrenzt. Sollte es beim TCP-Streaming zu kurzen (Ton-)Aussetzern kommen, bitte in den Einstellungen des VLC das Caching nach oben setzen, z.B. auf 500ms.
    Version 1.0.49
    • diverse Bugfixes in der Streaming Engine
    • SAT- und HDTV-Streaming Support
    der Installer enthalt jetzt auch das EyeTV-Plugin und installiert es automatisch mit
    neue TV-Befehle:
    • ENABLEMENU - blendet das EyeTV-Grafik OSD-Menu ein
    • DISABLEMENU - blendet das EyeTV-Grafik OSD-Menu aus
    • ENABLEFSEPG - blendet den EyeTV-Vollbild-EPG ein
    • DISABLEFSEPG - blendet den EyeTV-Vollbild-EPG aus

    iViewer Support:
    Im misc-Ordner eine iViewer.csv (bitte das große "V" beachten!) mit folgendem Inhalt anlegen (siehe auch beiliegendes Beispiel):

    [CONFIG];
    ACTIVE;YES // iViewer-Steuerung aktivieren?
    PORT;5500 // eingehender Port für die iViewer-Clients, beliebig einstellbar.

    optional:

    PASSWORD;{Passwort} // Passwort für die iViewer-Verbindung
    PORTRAIT;{Kommandosequenz} // Sequenz, die beim Schwenk in die Vertikale ausgeführt werden soll
    LANDSCAPE;{Kommandosequenz} // wie oben, für die Horizontale

    Es folgen 3 mögliche Sektionen:

    [DIGITAL]; // digital joins

    {Nummer};{'0'/'1' oder '#'};{Kommandosequenz}

    führt die Sequenz aus, wenn Nummer und Wert matchen. Beim Wildcard-Match kann das Argument mit \# an beliebiger stelle in die Kommandsosequenz eingefügt werden.

    [ANALOG]; // analoge joins

    {Nummer};{Wert oder '#'};{Kommandsequenz}{;Skalier-Faktor}

    wie digital-join, jedoch zusatzlich optional Angabe eines Skalenendwertes möglich, auf den der join-Wert umgerechnet wird. Bitte beachten, daß die Umrechnung erfolgt, bevor ein evtl. gewünschter Wertevergleich stattfindet.

    [SERIAL]; // serielle joins

    {Nummer};{String oder '#'};{Kommandsequenz}

    wie oben, für Strings

    Für die Gegenrichtung gibt es 3 neue SYS-Befehle:

    SETDIGITALJOIN={Nummer},{Wert}
    SETANALOGJOIN={Nummer},{Wert}
    SETSERIALJOIN={Nummer},{String}
    weist dem Join {Nummer} einen neuen {Wert} bzw. {String} zu

    Hinweis zu SETANALOGJOIN: Wenn der Join in der .csv definiert und ein Skalenendwert vorgegeben ist, wird der Wert zunachst entsprechend umgerechnet
    Version 1.0.51

    Änderungen:
    • Streaming und iViewer-Unterstützung sind ab dieser Version Keyfile- abhangig
    • die Performance der iViewer-Schnittstelle wurde verbessert
    • die komplette iViewer-Ansteuerung kann jetzt über die iViewer.csv erfolgen.
    • neue iViewer-Clients bekommen beim (re-)connect ein Status-Update (das Button-Feedback sollte in der GUI abgeschaltet werden)
    • die komplette Button-Logik liegt jetzt in der .csv (siehe Änderungen)

    Änderungen in der iViewer.csv:
    Abschnitt [CONFIG]:

    zusatzliche Option:

    DEBUG;YES

    ermöglicht sehr ausführliche Ausgaben über die iViewer Kommunikation und die iViewer-Engine über den Standard LoggingPort (wirklich nur für Debug-Zwecke gedacht, nur bei Bedarf aktivieren)

    Abschnitt [DIGITAL]

    Format:

    {Nummer};{Typ};{Push-Sequenz};{Release-Sequenz};{Push-Bedingung};{Release-Bedingung}

    Nummer: Digital-Join Nummer wie in der GUI definiert



    Typ: Typ des Buttons/Joins, mögliche Werte:
    • NORMAL (default) : normaler Button, führt {Push-Sequenz} beim Druck und {Release-Sequenz} beim Loslassen aus (falls definiert)
    • TOGGLE : Toggle-Button, führt {Push-Sequenz} beim Druck aus und rastet ein. Beim erneuten Druck wird {Release-Sequenz} ausgeführt.
    • INTERVAL={x} : führt {Push-Sequenz} im Intervall von x ms aus, solange der Button gedrückt gehalten wird. Optional kann beim Loslassen des Buttons {Release-Sequenz} ausgeführt werden. (Achtung, die Funktion andert sich mit Version 1.0.56)
    • XOR={1...x} : weist den Button einer Gruppe von XOR-Buttons zu. XOR-Buttons der selben Gruppennummer sind gegeneinander verriegelt. Beim Druck rastet der Button ein und kann erst durch einen Druck auf einen Button der selben Gruppe entriegelt werden. Die XOR-Logik wird auch auf die {Push-Bedingung} angewendet. {Release-Sequenz} und {Release-Bedingung} haben in dieser Definition keine Funktion

    Beispiele:
    Buttons für iTunes Play,Pause und Stop gegeneinander verriegelt und automatisch mit dem System-Zustand synchronisiert:

    Abschnitt [DIGITAL]

    10;XOR=1;<ITUNES><PLAY></ITUNES>;;GETPLAYERSTATE=PLAYING
    11;XOR=1;<ITUNES><PAUSE></ITUNES>;;GETPLAYERSTATE=PAUSED
    12;XOR=1;<ITUNES><STOP></ITUNES>;;GETPLAYERSTATE=STOPPED

    Mute-Toggle-Button, ebenfalls synchronisiert:

    13;TOGGLE;<SYS><MUTEON></SYS>;<SYS><MUTEOFF></SYS>;|MUTE=ON|;|MUTE=OFF|

    Volume-Intervall-Buttons mit anschließendem An- bzw. Abschalten des Bildschirmschoners beim Loslassen des Buttons:

    18;INTERVAL=500;<SYS><VOLUP=5></SYS>;<SYS><ENABLESS></SYS>
    22;INTERVAL=500;<SYS><VOLDN=5></SYS>;<SYS><DISABLESS></SYS>
    (Achtung, die Funktion andert sich mit Version 1.0.56)

    Abschnitt [ANALOG],

    Format:

    {Nummer};{Wert};{Skalierfaktor};{Action-Sequenz};{Wert-Bedingung}
    • Nummer: Analog-Join Nummer wie in der GUI definiert
    • Wert: # oder {Zahl} - definiert, ob bei allen Werten ('#') oder nur einem bestimmen Wert (Zahl) {Action-Sequenz} ausgeführt werden soll.
    • Skalierfaktor - definiert den maximal lokal möglichen Wert.
      Konvertiert die lokalen Werte proportional zur iViewer-GUI
    Beispiel:

    Setzen und automatisches Synchonisieren der System-Lautstarke:

    1;#;100;<sys><SETVOL=\#></SYS>;|VOL=\*|


    Abschnitt [SERIAL]

    Format:

    {Nummer};{Argument};{Action-Sequenz};{Argument-Bedingung}


    • Nummer: Serial-Join Nummer wie in der GUI definiert

    • Argument: # oder {String} - definiert, ob auf alles ('#') oder einenbestimmten {String} gematcht wird

    Beispiel:

    Automatische Anzeige des aktuellen iTunes-Titels:

    2;#;;|GETTITLE=\*|

    Allgemein für alle Join-Typen:

    *-Sequenz : die auszuführende mmh-Befehlssequenz

    *-Bedingung : der Eventserver-konforme Match auf eine ASCII-Sequenz.

    Es wird auf alles gematcht, was als Antwort aus dem Kommandoparser von mmh zurückkommt, egal ob es über die Kommandoschnittstelle oder den Broadcast-Port gesendet wird. Der Match lauft in voller Lange über alle Join-Definitionen. Mehrfache Matches auf die selbe Sequenz sind möglich. Bei DIGITAL-Joins sind keine Wildcards zugelassen.
    Version 1.0.52



    Bugfixes:
    • Parsing-Bug im csv-Handler behoben
    • iViewer: verbesserte Stabilitat beim Senden und bei mehreren gleichzeitigen Clients

    Erweiterungen:
    • samtliche Logging-Ausgaben auf Port 1039 sind jetzt mit einem Timestamp versehen

    iViewer-RELAY-Support Erweiterung:
    als {Actionsequenz} an der entsprechenden Stelle in der iViewer.csv statt der mmh-Sequenz Folgendes eintragen:
    RELAY={RemoteIP}:{RemotePort} oder 'OFF'

    leitet alle empfangenen Joins an die Relay-IP weiter, bis ein 'OFF' ausgelöst wird. Die Verbindung ist bidirektional. Auf der RemoteIP muß iViewer-Support freigeschaltet sein und der eingetragene Port muß mit dem RemotePort übereinstimmen.

    Anmerkung:
    Das Relay bietet die Möglichkeit, iViewer Steuersequenzen des iViewer Servers auf weitere Mac's 1:1 umzuleiten. Somit kann beispielsweise mit nur einer Visu Seite für zB eye TV, dynamisch auf beliebig viele Mac's zugegriffen werden. Auf Seiten der Server Definition erfolgt lediglich ein Relay Eintrag in der iViewer.csv

    [DIGITAL];;
    1;1;RELAY={RemoteIP}:{RemotePort} //Mac Wohnen
    2;1;RELAY={RemoteIP}:{RemotePort} //Mac Schlafen
    n;1;RELAY={RemoteIP}:{RemotePort} //Mac n

    und für das Rücksetzen des Relay's entsprechend

    10;1;RELAY=OFF

    Die Relay Funktion ist "1"-Aktiv, es muss bei einer Umschaltung also nicht zus. ein "RELAY=OFF" gesendet werden.

    Die Definitionstabellen der jeweiligen Client MAC Systeme sollte bei
    dieser Vorgehensweise gleichlautend sein, somit können die Tabellen einfach kopiert werden. Individuelle Anpassungen erfolgen dann in den lokalen Script Definitionen.

    Wir empfehlen JOINS projektweit grundsatzlich nur einmalig zu belegen, da wir eine "zentrale" Tabelle anstreben. Somit ist ein evtl. spateres zusammenführen sichergestellt.

    Bitte bei der Konfiguration auch folgendes beachten !!!

    Es sollte bei Auslösen des SLEEP Befehls über den iViewer auch gleichzeitig das Relay geschlossen werden. Andernfalls kommt es zu einem kurzeitigem Abbruch der Verbindung. Wird der Mac außerhalb der iViewers abgeschaltet, könen wir dies zZ noch nicht abfangen. Dies Problem wird jedoch in Kürze gelöst.


    iViewer Match Erweiterungen:
    • zusatzlicher Wildcard-Match '\&#37;'

    • ignoriert beliebig viele Zeichen

    Anwendungsbeispiel:
    Über den Broadcast Port werden aktuelle Programminformationen übertragen. Diese können über die iViewer Definition ausgewertet und übertragen werden:

    Broadcast String:

    <TV>GETCH=4|OK|GETCHNAME=SAT.1|OK|GETPROGINFO=20:1 5 |22:15|Holldriöh! Die Alpenshow|Holldriöh! Die Alpenshow|22:15|22:45|Ladykracher|Ladykracher|OK</TV>

    iViewer Definition:

    [SERIAL];
    1;;;GETPROGINFO=\*|
    2;;;GETPROGINFO=\%|\*|
    3;;;GETPROGINFO=\%|\%|\*|
    4;;;GETPROGINFO=\%|\%|\%|\*|
    5;;;GETPROGINFO=\%|\%|\%|\%|\*|
    6;;;GETPROGINFO=\%|\%|\%|\%|\%|\*|
    7;;;GETPROGINFO=\%|\%|\%|\%|\%|\%|\*|
    8;;;GETPROGINFO=\%|\%|\%|\%|\%|\%|\%|\*|

    Wobei folgende Informationen an den iViewer übertragen werden

    1 - matcht auf die Startzeit der aktuellenSendung
    2 - matcht auf die Endzeit der aktuellen Sendung
    3 - matcht auf den Titel der aktuellen Sendung
    4 - matcht auf die Beschreibung der aktuellen Sendung
    5 - matcht auf die Startzeit der nachsten Sendung
    6 - matcht auf die Endzeit der nachsten Sendung
    7 - matcht auf den Titel der nachsten Sendung
    8 - matcht auf die Beschreibung der nachsten Sendung

    Anmerkung:
    Dies kann selbstverstandlich mit samtlichen Informationen erfolgen, die über den BC Port gesendet werden.


    Version 1.0.53



    Code-Erweiterung
    • Neuer SYS-Befehl CLOSECURRENTBUTTONS
      - schließt die aktuell geöffnete Buttonleiste.
    • Neuer SYS-Befehl WAKEONLAN={MAC-Adresse}
      - sendet ein Magic Packet für die angegebene MAC-Adresse. Die Schreibweise der Mac-Adresse ist dabei egal, solange exakt 6 Octets angegeben werden.
    • Neuer SYS-Befehl KEY={Apple-Keycode} - simuliert einen Tastendruck

    Relay Funktion (Command Parser)
    Zusatzlich unterstüzt der Kommandoparser jetzt auch Relaying:

    <RELAY={IP}:{Port}>{mmh-Sequenz}</RELAY>

    Die mmh-Sequenz wird per UDP an einen entfernten Mac weitergeleitet und maximal 3 Sekunden auf eine Antwort gewartet. Die Antwortsequenz hat die Syntax:

    <RELAY={IP}:{Port}>{mmh-Antwortsequenz}</RELAY>

    Anmerkung:
    Das Relay bietet die Möglichkeit, alle Steuersequenzen auf einen zentralen Mac abzulegen. Dies vereinfacht erheblich die Systempflege. Ach können hierüber zentral abgelegte CommandServer angesprochen werden.
    Version 1.0.54

    Änderungen
    das Verfahren zum Posten von Keyboard Events wurde auf die "alte" Technik zurückgestellt.

    Hintergrund:
    Keyboard Events sind ein hilfreiche Funktion, wenn es um das Steuern von Funktionen geht, die wir nicht direkt umgesetzt haben. So können hierüber eigentlich samtliche Programmfunktionen angesprochen werden, die mittels Tastaturcode abrufbar sind. Wir empfehlen durch ein vorangesetztes <SHOW><FRONT> sicherzustellen, dass die Applikation, die gesteuert werden soll im Focus steht.
    Bei der "alten" Variante kam es gelegentlich zu Problemen bei dem <ALTCMD> Befehl. Dies ist nun behoben.
    Code-Erweiterung
    • Neuer SYS-Befehl CTRLCMDKEY={Keycode}


    VERSION 1.0.56

    iViewer-Erweiterung:
    Intervall-Buttons mit einstellbarer Anfangsverzögerung:
    Als Buttontyp INTERVAL=x,y eintragen. x steht für die Intervallverzögerung, y für die Anfangsverzögerung. Wenn y nicht angegeben wird, ist y = 0.

    Anmerkung:
    Diese Funktion dient zur Erweiterung der "Push on hold" Button Funktion. Somit ist es möglich den Pufferzeitraum zwischen "Auslösen" und start der Intervallfunktion einzustellen.
    Mini-Webserver Erweiterung:
    Im misc-Ordner eine webserver.csv mit folgendem Inhalt anlegen:
    [CONFIG];
    ACTIVE;YES
    PORT;{Portnummer}

    Für {Portnummer} sollte man einen Port > 1024 verwenden. Bisher wird nur ein Feature unterstützt:

    Ruft man per Browser die Datei http://{MacIP}:{Portnummer}/itunes_current.jpg auf, wird bei laufendem iTunes und vorhandenem Cover das aktuelle Coverbild zurückgegeben.

    Anmerkung:
    Diese Funktion ermöglicht die Anzeige von iTunes Cover Bildern über die Kamera Funktion des HS. Die Abfrage muss Seiten des HS angetriggert werden. Dies kann zB über die Änderung des Titelnamens erfolgen. Ein Workaround werde ich noch posten. In seltenen Fallen haben wir noch Probleme bei der Anzeige der Cover's. Dies kann bedingt durch deren Größe oder deren Format sein. Wir prüfen das noch.
    Angehängte Dateien
Lädt...
X