Ankündigung

Einklappen
Keine Ankündigung bisher.

AirPlay

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

  • Allgemein AirPlay

    Hallo zusammen,

    ich bin neu hier, einige Skripts konnten mir schon weiter helfen :-)

    Ich habe eine Frage.
    In iTunes gibt es unter AirPlay (Symbol) die Möglichkeit, entweder auf „Einzel“ oder „Mehrere“ umzuschalten - kann ich das per Script auch ?
    Kann ich auch per Script die vorhandenen Lautsprecher wie z.B.: Computer, ATV, usw. einzel aktivieren bzw. deaktivieren (= die Checkbox an/aus) ?

    Ganz lieben Dank vorab !
    Dariusz
    LG, Dariusz
    MBP | ATV3 | iPad | iPhone | TC3 | DS214+ | HP-1820-24G | pfSense

  • #2
    Hallo Dariusz

    Willkommen bei uns

    Bis iTunes 10.x war es nicht möglich. Aber auf Dein Posting hin habe ich mal nachgeschaut und dabei festgestellt, dass Apple in iTunes 11 eine passende AS Schnittstelle eingebaut hat. Also ist es grundsätzlich möglich, die Airplay LS per Applescript auszuwählen, allerdings nicht so ohne Weiteres per Checkbox. Denkbar wäre eine Auswahlliste. Dafür habe ich auf Doug's Applescripts auch schon einen passenden Code gefunden, auf dem man aufbauen könnte. Das sieht so aus:

    sc1.jpg

    Man müsste dann sehen ob sich so etwas wie eine Rückmeldung einbauen lässt, damit man beim Programmstart auch erkennt welche Airplay LS gerade aktiviert sind.

    Eine Alternative wäre Airfoil. Airfoil kann nicht nur das iTunes Audiosignal an mehrere Airplay LS senden, sondern sondern den Ton jeder beliebigen Anwendung. Auch dann, wenn diese gar keine Airplay Funktionen bietet. Sogar der System Audio Out lässt sich so umleiten. Ausserdem lässt sich in Airfoil die Lautstärke für jeden Airplay LS separat einstellen. Zusätzlich gibt es noch Apps für iOS (Airfoil Remote) und Android (Airfoil Commander). Damit kann man alle Airfoil Funktionen auch vom Mobile Device aus steuern. Und es gibt die App Airfoil Speaker. Damit wird das Mobile Device selbst zum Airplay LS / Empfänger. Airfoil lässt sich auch sehr gut per Applescript steuern, falls das nötig sein sollte. Ich benutze Airfoil schon seit Jahren und bin sehr zufrieden. Kostet allerdings $29.-

    sc2.jpg

    Beschreib doch mal wie Du Dir den Ablauf genau vorstellst. Wie und wo soll die Airplay Auswahl integriert werden? Dann können wir überlegen, wie sich das am besten realisieren lässt.

    lg

    Michael
    HowTos: Mac Mini Mediacenter mit Plex oder XBMC / Logitech Harmony und der Mac

    Kommentar


    • #3
      Hallo Michael,

      danke für das Willkommen und danke für dien Feedback :-) !!

      Zitat von lifeflow Beitrag anzeigen
      ... Das sieht so aus:

      [ATTACH=CONFIG]3255[/ATTACH]

      Man müsste dann sehen ob sich so etwas wie eine Rückmeldung einbauen lässt, damit man beim Programmstart auch erkennt welche Airplay LS gerade aktiviert sind.
      Ja, dieses Script habe ich schon gefunden, leider muss ich hier noch Hand anlegen.
      Was ich bräuchte ist, wie du schon schreibst, welche AirPlayLS gerade aktiv sind (wobei diese Rückmeldung in ersten Stepp noch nicht notwendig ist) UND was für mich wichtig ist, für jeden LS ein Skript (quasi Checkbox AN/AUS) mit dem ich in den Auswahlfenster (Mehrfachauswahl möglich) je nach Notwendigkeit die LS zu- oder abschalten kann ...

      Airfoil
      Davon habe ich auch schon gelesen …
      Mein Ziel ist/wäre eine „on-board“ Lösung um Programme und Schnittstellen zu vermeiden … sollte das aber absolut nicht möglich sein, dann werde ich es mir genauer anschauen … Um die EUR 30 geht es mir in erster Linie nicht.

      Beschreib doch mal wie Du Dir den Ablauf genau vorstellst. Wie und wo soll die Airplay Auswahl integriert werden? Dann können wir überlegen, wie sich das am besten realisieren lässt.
      OK, ich versuche es :-)

      Ich habe zuhause KNX (Home Automatisation Bus).
      Ich kann über einen Server (Gira HS4) IP-Telegramme versenden - hier versende ich über eine VISU („Fernbedienung“) auf Knopfdruck ein IP-Telegramm an meinen MBP um z.B. ein Apple Script auszulösen …
      Nun möchte in in den nächsten Stepp eine Art „Multiroom“ realisieren - halt NUR die LS zu oder abschalten bei gleicher Quelle (cool wäre wenn jeder LS seine eigene Quelle auswählen könnte …) - somit für jeden LS ein Script und ein Button auf meiner VISU der ein IP-Telegramm verschickt ..

      Ich hoffe ich war verständlich ?

      Danke vorab !
      Dariusz
      LG, Dariusz
      MBP | ATV3 | iPad | iPhone | TC3 | DS214+ | HP-1820-24G | pfSense

      Kommentar


      • #4
        Hallo Dariusz

        Wenn ich Dich richtig verstehe, dann steuerst Du das Ganze doch über die VISU Oberfläche? Folglich bräuchtest Du doch eigentlich gar keine Checkbox. Denn die würde ja nur auf dem MBP auftauchen und wäre somit nicht sichtbar? Auch die Mehrfachauswahl aus Doug's Script ist in diesem Fall wenig hilfreich. Letztlich benötigst Du doch eigentlich nur ein Toggle, welches den Airplay LS aktiviert, wenn er nicht aktiviert ist, und umgekehrt. Verstehe ich das richtig?

        (cool wäre wenn jeder LS seine eigene Quelle auswählen könnte …)
        Das wird allerdings nicht so ohne Weiteres gehen. "Echtes" Multiroom mit mehreren Quellen, die auf unterschiedliche Airplay LS verteilt werden können, klappt nur bedingt. Für iOS und Android Geräte gibt es den Whaale Multiroom Player, aber für den Mac ist mir nichts bekannt. Das geht hier wohl nur mit mehreren Apps, die alle selbst Airplay fähig sein müssen. Neben iTunes habe ich z.B. noch die Radium App für Webradio. In dieser App kann man Airplay LS auswählen, ähnlich wie bei iTunes. Beide Programme können gleichzeitig laufen und unterschiedliche Airplay LS ansprechen. Aber das liesse sich kaum per Applescript steuern.

        Ich werde mir mal Gedanken zu einem Toggle machen, sobald ich etwas Zeit habe.

        lg

        Michael
        HowTos: Mac Mini Mediacenter mit Plex oder XBMC / Logitech Harmony und der Mac

        Kommentar


        • #5
          Wenn ich Dich richtig verstehe, dann steuerst Du das Ganze doch über die VISU Oberfläche?
          Richtig

          Folglich bräuchtest Du doch eigentlich gar keine Checkbox. Denn die würde ja nur auf dem MBP auftauchen und wäre somit nicht sichtbar? Auch die Mehrfachauswahl aus Doug's Script ist in diesem Fall wenig hilfreich.
          Richtig, das habe ich mit „Hand anlegen“ gemeint … Ich dachte nur wenn ich es per Script simulieren kann, dann wäre es mir egal was sich am MBP abspielt ...

          Letztlich benötigst Du doch eigentlich nur ein Toggle, welches den Airplay LS aktiviert, wenn er nicht aktiviert ist, und umgekehrt. Verstehe ich das richtig?
          100% :-)

          Das wird allerdings nicht so ohne Weiteres gehen. "Echtes" Multiroom mit mehreren Quellen, die auf unterschiedliche Airplay LS verteilt werden können, klappt nur bedingt. Für iOS und Android Geräte gibt es den Whaale Multiroom Player, aber für den Mac ist mir nichts bekannt. Das geht hier wohl nur mit mehreren Apps, die alle selbst Airplay fähig sein müssen. Neben iTunes habe ich z.B. noch die Radium App für Webradio. In dieser App kann man Airplay LS auswählen, ähnlich wie bei iTunes. Beide Programme können gleichzeitig laufen und unterschiedliche Airplay LS ansprechen. Aber das liesse sich kaum per Applescript steuern.
          Deswegen meinte ich, dass ich zumindest die LS wählen kann, bei gleicher Quelle.
          Für „echtes“ Multiroom braucht man angeblich ein „Matrix“ die das steuern kann ….

          Ich werde mir mal Gedanken zu einem Toggle machen, sobald ich etwas Zeit habe.
          Dankeschön
          LG, Dariusz
          MBP | ATV3 | iPad | iPhone | TC3 | DS214+ | HP-1820-24G | pfSense

          Kommentar


          • #6
            Hier ist mal ein erster Entwurf:

            Code:
            set MyDevice to "Office"
            tell application "iTunes"
                set apPlays to {}
                set apPlaysIDS to {}
                set MyDeviceID to ""
                set isActive to 0 as number
                set apNames to (get name of AirPlay devices)
                set apDevices to (get AirPlay devices)
                if MyDevice is in apNames then
                    set apActs to current AirPlay devices
                    repeat with i from 1 to length of apNames
                        if item i of apNames is in MyDevice then set MyDeviceID to item i of apDevices
                    end repeat
                    repeat with aDevice in apActs
                        set apName to (get aDevice's name)
                        if MyDevice is apName then
                            set isActive to 1 as number
                        end if
                    end repeat
                    repeat with aDevice in apActs
                        set apName to (get aDevice's name)
                        if isActive = 1 then
                            if MyDevice is not in apName then
                                set end of apPlays to apName
                            end if
                        else
                            set end of apPlays to apName
                        end if
                    end repeat
                    if isActive = 0 then
                        set end of apPlays to MyDevice
                    end if
                end if
                repeat with i from 1 to length of apNames
                    repeat with v from 1 to length of apPlays
                        if item i of apNames is in item v of apPlays then set end of apPlaysIDS to item i of apDevices
                    end repeat
                end repeat
                set current AirPlay devices to apPlaysIDS
            end tell
            
            In die erste Zeile des Scripts gibst Du den Namen des Airplay LS ein, der damit gesteuert werden soll. In meinem Beispiel ist das "Office". Anschliessend kannst Du das Script als Programm abspeichern und mit Deiner Fernbedienung verknüpfen.

            Das Script ermittelt zunächst alle verfügbaren Airplay Devices, sowie deren IDs. Anschliessend wird geprüft, ob das gewünschte Device überhaupt vorhanden ist. Dann wird eine Liste der aktuell aktiven Devices erstellt. Ist das fragliche Device darin enthalten (ist aktiv) dann wird es deaktiviert, und umgekehrt.

            Das Ganze ist etwas komplexer geraten, als gedacht. Denn die Airplay Unterstützung ist immer noch recht rudimentär. Ein einzelnes Device lässt sich scheinbar nicht direkt steuern. Man muss immer eine Liste der Devices übergeben, die auf "Aktiv" gesetzt werden sollen. Alle nicht in der Liste enthaltenen Devices werden automatisch deaktiviert. Die Ansteuerung ist auch nicht direkt über den Namen des Devices möglich, sondern muss über die ID erfolgen. Das macht es erforderlich, dass man 2 Listen gleichzeitig führt. Eine enthält die Devicenamen, die anderen Liste die zugehörigen IDs.

            Man könnte den Code sicher noch optimieren. Aber teste erst mal, ob das bei Dir überhaupt wunschgemäss funktioniert.

            lg

            Michael
            Zuletzt geändert von lifeflow; 27.11.2015, 10:31.
            HowTos: Mac Mini Mediacenter mit Plex oder XBMC / Logitech Harmony und der Mac

            Kommentar


            • #7
              Wow, Michael du bis ein Genie :-)

              Ich habe einmal das Script unter zwei Namen abgespeichert (für „computer“ und „atv“).
              Wenn ich das ATV-Script starte, dann wird der ATV-LS ein- oder ausgeschaltet (dazu- oder weg geschaltet), das gleiche mit dem COMPUTER-Script :-)

              Was mir aufgefallen ist, dass nur beim ATV, wenn ich diesen weg schalte und der Computer-LS übrig bleibt, dann geht iTunes kurz auf PAUSE, danach wieder auf PLAY, schein etwas mit der AirPlay-Funktion zu tun zu haben ...

              Ich weiß zwar noch nicht was mein KNX-Home-Server empfangen muss, jedoch kann er auch IP-Telegramm EMPFANGEN, somit wäre die Frage, kann Apple Script auch an eine IP auch etwas senden (eine Ziffer/Zahl oder Text oder …) ?

              Ich werde mal dein Script auch - versuche - zu analysieren und daraus zu lernen :-)

              LG, Dariusz
              LG, Dariusz
              MBP | ATV3 | iPad | iPhone | TC3 | DS214+ | HP-1820-24G | pfSense

              Kommentar


              • #8
                Zitat von coliflower Beitrag anzeigen
                Was mir aufgefallen ist, dass nur beim ATV, wenn ich diesen weg schalte und der Computer-LS übrig bleibt, dann geht iTunes kurz auf PAUSE, danach wieder auf PLAY, schein etwas mit der AirPlay-Funktion zu tun zu haben ...
                Ja, das ist sehr wahrscheinlich. Bei "Computer" ist eine lokale Ausgabe, ohne Airplay. Ich denke mal, sobald ein Airplay LS dazu kommt, muss die lokale Ausgabe verzögert werden damit alles synchron klingt. Werden alle Airplay LS getrennt, dann muss die Verzögerung wieder ausgeschaltet werden. Daher vermutlich das Verhalten von iTunes.

                Ich weiß zwar noch nicht was mein KNX-Home-Server empfangen muss, jedoch kann er auch IP-Telegramm EMPFANGEN, somit wäre die Frage, kann Apple Script auch an eine IP auch etwas senden (eine Ziffer/Zahl oder Text oder …) ?
                Alleine mit Applescript wahrscheinlich nicht. Aber vermutlich könnte man ein Shell / Unix Kommando einbinden. Müsste man mal genauer untersuchen, wenn das aktuell wird. Mit z.B.

                Code:
                do shell script "curl http://..."
                lässt sich aus Applescript heraus zumindest eine Website aufrufen. Evtl. könnte man darauf aufbauen.

                ch werde mal dein Script auch - versuche - zu analysieren und daraus zu lernen :-)
                Vielleicht kann ich Dir dabei etwas helfen.

                Code:
                
                set MyDevice to "Office"
                tell application "iTunes"
                    set apPlays to {}
                    set apPlaysIDS to {}
                    set MyDeviceID to ""
                Die Listen apPlays und apPlaysIDS werden hier geleert. Die Liste apPlays wird später die Namen der aktiven Airplay Devices enthalten, die Liste apPlaysIDS deren Player IDs. MyDeviceID wird ebenfalls geleert. Diese Variable enthält später die ID des LS, der in MyDevice enthalten ist (hier: "Office"). Diese ID ist ja jetzt noch unbekannt und muss später gesucht werden.

                Code:
                    set isActive to 0 as number
                    set apNames to (get name of AirPlay devices)
                    set apDevices to (get AirPlay devices)
                Die Variable isActive wird hier ebenfalls geleert. Diese Variable wird später wichtig, weil sie die Information enthält ob das gewünschte Device gerade aktiv ist uns inaktiv gesetzt werden soll, oder umgekehrt. Damit wird also entschieden, ich welche Richtung das Script arbeiten soll.

                Die Liste apNames wird hier mit den Namen aller verfügbaren (in iTunes sichtbaren) Airplay Devices befüllt, unabhängig vom Zustand (aktiv / inaktiv).
                Die Liste apDevices wird mit den IDs aller verfügbaren (in iTunes sichtbaren) Airplay Devices befüllt, in der gleichen Reihenfolge.

                Durch die beiden Listen kann ich jederzeit die ID zu einem bestimmten Devicenamen ermitteln. Wenn ich z.B. die ID zum 3. Namen in der Liste apNames suche, dann muss ich nur die 3. ID in der Liste apDevices auslesen.

                Code:
                    if MyDevice is in apNames then
                
                Hier wird überprüpft, ob das gesuchte Airplay Device überhaupt sichtbar (eingeschaltet) ist. Der restliche Code wird also nur aufgeführt, wenn der gesuchte Name in der Liste apNames gefunden wird.

                Code:
                        set apActs to current AirPlay devices
                Nun wird die Listen apActs mit den IDs alle aktiven Airplay Devices gefüllt. Diese Liste ist in zweierlei Hinsicht wichtig. Denn zum Schluss müssen alle aktiven Airplay Devices, an denen keine Änderung stattfindet, erneut an iTunes übergeben werden. Ausserdem enthält die Liste auch die das gesuchte Airplay Device (in diesem Fall wieder "Office"), falls es aktiv ist.

                Code:
                        repeat with i from 1 to length of apNames
                            if item i of apNames is in MyDevice then set MyDeviceID to item i of apDevices
                        end repeat
                
                Hier wird eine Schleife mehrfach durchlaufen. Die Anzahl der Durchläufe richtet sich nach den Anzahl der Airplay Devices, die in der Liste apNames enthalten ist. Wenn der gerade gelesene Name mit dem Namen in MyDevice identisch ist, dann wird die ID ermittelt und in der Variablen MyDeviceID gespeichert.

                Code:
                        repeat with aDevice in apActs
                            set apName to (get aDevice's name)
                            if MyDevice is apName then
                                set isActive to 1 as number
                            end if
                        end repeat
                
                In dieser Schleife wird für jede ID aller gefundenen aktiven Airplay Devices der Name gesucht und mit dem Wert in MyDevice verglichen. Gibt es eine Übereinstimmung, dann ich der gesuchte Lautsprecher gerade aktiv und die Variable isActive wird auf "1" gesetzt. Nun ist klar, dass der Airplay für diesen LS deaktiviert werden soll. Gibt es keine Übereinstimmung, dann bleibt die Variable isActive auf "0" und der LS muss aktiviert werden.

                Code:
                        repeat with aDevice in apActs
                            set apName to (get aDevice's name)
                            if isActive = 1 then
                                if MyDevice is not in apName then
                                    set end of apPlays to apName
                                end if
                            else
                                set end of apPlays to apName
                            end if
                        end repeat
                        if isActive = 0 then
                            set end of apPlays to MyDevice
                        end if
                    end if
                
                Das Ganze wird nun so realisiert:

                iTunes muss eine Liste bekommen, in der alle zu aktivierenden Airplay LS enthalten sein müssen. Um einen einzelnen LS ein- oder auszuschalten muss also zunächst eine Liste aller gerade aktiven LS erstellt werden. Diese Liste wird daraufhin untersucht, ob der gewünschte Lautsprecher enthalten ist. Wenn nicht, dann wird die Liste in eine neue Liste (apPlays) überführt und die ID des gewünschten LS wird angehängt. Dadurch wird der LS zusätzlich aktiviert. Ist er enthalten, dann wird die Überführung in die neue Liste ebenfalls durchgeführt. Der gesuchte LS wird aber übersprungen, sodass er in der neuen Liste nicht mehr enthalten ist. Die neue Liste wird ebenfalls an iTunes übergeben und damit der gesuchte LS deaktiviert. Würde man nur einen einzelnen LS an iTunes übergeben, dann würden also alle andere Airplay LS automatisch deaktiviert. Das könne man z.B. als "Reset" nehmen und nur den LS "Computer" an iTunes schicken. Damit werden alle Airplay LS auf einen Schlag deaktiviert und die Ausgabe läuft nur noch lokal.

                Code:
                    repeat with i from 1 to length of apNames
                        repeat with v from 1 to length of apPlays
                            if item i of apNames is in item v of apPlays then set end of apPlaysIDS to item i of apDevices
                        end repeat
                    end repeat
                
                Die neue Liste apPlays enthält bisher nur die Namen der Airplay Devices. Jetzt müssen noch die IDs dazu herausgesucht werden. Dazu läuft erneut eine Schleife. Diese vergleiche die Namen in apPlays mit der Liste aller Airplay Devices apNames. Bei einer Übereinstimmung lässt sich wieder die zugehörige ID aus der Liste apDevices zuordnen. Diese ID wird an die neue Liste apPlaysIDS angehängt. Die Schleife läuft so lange, bis für alle Namen in apPlays die ID gefunden wurde.

                Code:
                    set current AirPlay devices to apPlaysIDS
                Hier wird die Liste apPlaysIDs an iTunes übergeben.


                Ich hoffe, das ist soweit verständlich. Wenn Du noch Fragen dazu haben solltest, einfach fragen

                lg

                Michael
                Zuletzt geändert von lifeflow; 28.11.2015, 11:10.
                HowTos: Mac Mini Mediacenter mit Plex oder XBMC / Logitech Harmony und der Mac

                Kommentar


                • #9
                  Hier noch eine kleine Ergänzung. Dieses Script deaktiviert / trennt alle Airplay LS auf einen Schlag und schaltet auf lokale Ausgabe (Computer). Das ist evtl. hilfreich, wenn man mehrere Airplay LS verwendet.

                  Code:
                  set MyDevice to "Computer"
                  tell application "iTunes"
                      set MyDeviceID to ""
                      set apNames to (get name of AirPlay devices)
                      set apDevices to (get AirPlay devices)
                      if MyDevice is in apNames then
                          set apActs to current AirPlay devices
                          repeat with i from 1 to length of apNames
                              if item i of apNames is in MyDevice then set MyDeviceID to item i of apDevices
                          end repeat
                          --pause
                          set current AirPlay devices to MyDeviceID
                      end if
                  end tell
                  Wenn Du die beiden "-" Zeichen vor dem "pause" Befehl entfernst, wird auch gleich die Wiedergabe angehalten.

                  lg

                  Michael
                  HowTos: Mac Mini Mediacenter mit Plex oder XBMC / Logitech Harmony und der Mac

                  Kommentar


                  • #10
                    Hallo Michael,

                    vielen vielen Dank !

                    Einige Teile/Funktionen des Scripts sind mir bekannt, viele noch nicht - die Beschreibung dazu ist sehr gut und eindeutig :-)
                    Ganz ganz toll finde ich die Erklärung der Herangehensweise, des „roten Fadens“, von der Problemstellung zum Ziel - großartig, so lernt man das „System“ kennen !!

                    Ich habe gestern die (KNX) VISU mit den Buttons und den dahinter liegenden Kommunikationsobjekten („Trigger“) die die IP-Telegramme vom Homeserver über die Gira-OS-Connect-Schnittstelle an MBP „übergeben“, die Scripts auslösen - bis jetzt keine erkennbaren Probleme :-)
                    So kann ich mittlerweile die AirPlayLS ein/ausschalten, PLAY, PAUSE, STOP, FORWARD, PREVIOUS und diverse Playlists ausführen. Auch das „Fading“ habe ich mir abgeschaut, ist toll um den Ton (Musik), insbesondere wenn sie über die Anlage läuft, „vorsichtig“ auf die gewünscht Lautstärke zu drehen ohne dass die LS eingehen ;-)

                    Alleine mit Applescript wahrscheinlich nicht. Aber vermutlich könnte man ein Shell / Unix Kommando einbinden. Müsste man mal genauer untersuchen, wenn das aktuell wird.
                    Das wäre da Tüpfelchen auf den I, dann könnte ich mir auch visuell in der VISU zum jeweiligem Button anzeigen lassen ob aktiv oder inaktiv

                    Hier lauscht der Homeserver „einfach“ ob er was „hört“ und wenn er hört AirPlayLsAtv ist 0 oder 1 dann sollte er es erkennen und über eine Logik den Status (auch ein Kommunikationsobjekt) schalten (aktiv/inaktiv) … soviel zu Theorie ;-)

                    Nochmals vielen Dank und ein schönes Wochenende noch :-) !!!
                    LG, Dariusz
                    MBP | ATV3 | iPad | iPhone | TC3 | DS214+ | HP-1820-24G | pfSense

                    Kommentar


                    • #11
                      Hier noch eine kleine Ergänzung. Dieses Script deaktiviert / trennt alle Airplay LS auf einen Schlag und schaltet auf lokale Ausgabe (Computer). Das ist evtl. hilfreich, wenn man mehrere Airplay LS verwendet.
                      Hey, cool :-)
                      Das könnte man als eine Art endgültiges „MUTE“ verwenden bzw. wenn die Familie schlafen geht, dass nur der MBP noch die Musik abspielt ;-)
                      DANKE !

                      LG, Dariusz
                      LG, Dariusz
                      MBP | ATV3 | iPad | iPhone | TC3 | DS214+ | HP-1820-24G | pfSense

                      Kommentar


                      • #12
                        Hallo Dariusz

                        Freut mich, wenn Dir die Ausführungen etwas weiterhelfen

                        Das wäre da Tüpfelchen auf den I, dann könnte ich mir auch visuell in der VISU zum jeweiligem Button anzeigen lassen ob aktiv oder inaktiv
                        Dafür bräuchte ich noch ein paar Informationen. Dann kann ich vielleicht mehr dazu sagen.

                        Hier lauscht der Homeserver „einfach“ ob er was „hört“ und wenn er hört AirPlayLsAtv ist 0 oder 1 dann sollte er es erkennen und über eine Logik den Status (auch ein Kommunikationsobjekt) schalten (aktiv/inaktiv) … soviel zu Theorie ;-)
                        Leider kenne ich mich mit dem Homeserver überhaupt nicht aus. Was genau ist "AirPlayLsAtv"? Ist es eine Variable im Home Server? Wie kann ich einen Wert an den Homeserver übergeben? Über einen HTTP Link vielleicht? Etwa in der Art "http://192.168.0.12:5001/AirPlayLsAtv=1" (habe ich mir gerade aus den Fingern gesogen)? Oder würde es reichen, wenn ich die Information in eine Textdatei auf dem Mac schreibe und der Server kann diese Datei lesen und auswerten? Wenn ja, in welchen Format muss die Information enthalten sein?

                        Ich bräuchte einfach ein paar Informationen darüber, wie ich die Information übergeben kann. Falls sich das über einen HTTP Aufruf steuern lässt, dann am besten ein Link Beispiel mit IP Adresse und Port. Falls Du mir Informationen dazu beschaffen kannst, sollte das durchaus möglich sein.

                        lg

                        Michael
                        HowTos: Mac Mini Mediacenter mit Plex oder XBMC / Logitech Harmony und der Mac

                        Kommentar


                        • #13
                          Hallo Michael,

                          sorry dass ich erst jetzt antworte, bin etwas unter Wasser :-(

                          Der Homeserver … da habe ich selbst bis jetzt vielleicht 1% erforscht - irgendwie gibt es für den HS nicht wirklich ein Supportforum da Gira sich das anscheinend nicht leisten möchte (es gibt aber immer wieder Unterstützung von erfahrenen Usern in allgemeinen KNX-Forum.

                          Um das Apple Script zu aktivieren sende ich hier „nur“ ein IP-Telegramm and die Gira-Software (am MBP) und teile ihr mit wo sich der Script befindet (Verzeichnis) und welcher es ist (Datei) - das war die einfachere Übung.

                          Um ein Aktion am Homeserver auszulösen (z.B.: Status für AirPlay AN oder AUS) muss ich ein IP-Telegramm von Auslöser z.B.: MBP an Homeserver senden. Was genau und wie bzw. welche Information ich mitschicken muss - na ja, dass habe ich so noch nicht herausgefunden :-(((

                          Vielleicht wäre aber genau das der richtige Ansatz bzw. ein Versuch wert diese Information vom Homeserver interpretieren zu lassen ?
                          http://192.168.0.12:5001/AirPlayLsAtv=1
                          Nein, das sollte nur ein Beispiel für „Etwas“ sein dass man senden könnte, wenn der Homeserver das interpretieren kann (derzeit weiß ich es noch nicht ob das geht)
                          Was genau ist "AirPlayLsAtv"? Ist es eine Variable im Home Server?
                          Aus der Hilfedatei noch ein paar Infos, falls dir das mehr sagen sollte:

                          IP/EIB-Telegramme empfangen

                          Zurück / Vor | Hilfe / Kommunikation / IP/EIB-Telegramme empfangen

                          Einführung
                          Diese Funktion erlaubt erstens das Empfangen von beliebig strukturierten Daten über eine IP-Verbindung. Das Empfangen ist nicht auf reine Textdaten beschränkt, sondern ermöglicht auch das Arbeiten mit Binärdaten.
                          Zweitens können 14-Byte-EiB-Daten ausgewertet werden.

                          Es werden zwei unterschiedliche Arten von Telegrammen unterstützt:
                          - Telegramme von IP-Geräten
                          - Telegramme von 14 Byte-Kommunikationsobjekten aus dem EiB

                          Telegramme können auf zwei unterschiedliche Arten ausgewertet werden:
                          - Einfaches Telegramm, Auswertung durch Definierung einzelner Datenblöcke.
                          - Komplexes Telegramm, Auswertung anhand eines Regulären Ausdrucks und Zuweisung der Datenblöcke.

                          Nach erfolgreicher Auswertung des Telegrammes werden die zugeordneten Befehle ausgeführt.

                          Auf der Debug-Seite werden im Abschnitt Event-Empfang die zuletzt eingetroffenen Telegramme protokolliert. Im Abschnitt Event-Ports werden alle IP-Ports aufgelistet, an denen der HS/FS IP-Telegramme empfangen kann.


                          Einsatzzweck

                          - Austausch von Werten zwischen zwei HS/FS.
                          - Empfang von Daten und Werten anderer IP-Geräte (z.B. IP-Kameras).


                          Beispiele

                          - IP-Telegramm in 14 Byte-Kommunikationsobjekt schreiben

                          Importieren und Exportieren von Bibliotheken

                          Mit den Funktionen Importieren und Exportieren können fertige Telegramme als Bibliothek gespeichert und in anderen Projeken wieder verwendet werden. Es besteht die Möglichkeit, einzelne Telegramme oder komplette Ordner, samt Unterordner, zu exportieren. Enthält eine Bibliothek mehrere Abfragen, werden diese immer einstufig importiert, d. h. es wird maximal ein Ordner angelegt. Alle Telegramme sind dann in diesem Ordner zu finden.

                          Beim Importieren besteht, die Möglichkeit den IP-Port, Absender-IP o. Netz, Netzmaske, Multicast-Adresse oder das K.-Objekt für alle Telegramme einzugeben. Hierzu werden die Daten vorgeschlagen, welche in der zu importierenden Bibliothek vom HS/FS-Experte gefunden werden. Alle importierten Telegramme werden mit diesen Werten vorbesetzt. Abhängig von der Art der Bibliothek können unterschiedliche Felder aktiv sein.

                          Sollten in der Bibliothek weitere Objekte (z.B. K.-Objekte, Sequenzen, usw.) verwendet werden, muss im Registerreiter "Objekte" eine projektspezifische Umsetzung vorgenommen werden. Hierbei kann man anhand der Objekt-Beschreibung und des Typs erkennen, welche Funktion das Objekt besitzt.

                          Absender

                          Bezeichnung
                          Unter diesem Begriff wird das eintreffende Telegramm / Absender / Funktion im HS/FS-Experten geführt.

                          Daten von IP-Absender empfangen
                          Der Absender des Telegramms ist ein IP-Gerät.

                          IP-Telegramm-Typ
                          TCP (TCP steht für Transmission Control Protocol)
                          UDP (UDP steht für User Datagram Protocol)
                          UDP/Multicast

                          IP-Port Empfang:
                          Der HS/FS überwacht diesen Port in Hinblick auf eintreffende Telegramme.

                          Absender-IP o. Netz:
                          Von dieser IP-Adresse oder aus diesem Netz erreicht das Telegramm den HS/FS. Telegramme von anderen Adressen und Netzen werden nicht ausgewertet.
                          Hinweis: Dieses Feld ist optional.

                          Netzmaske:
                          Diese Netzmaske definiert den Sendeadressraum.

                          Multicast-Adresse:
                          Definiert (falls UDP Multicast gewählt wurde) die Multicast-Adresse.

                          Daten von EIB-Absender empfangen
                          Der Absender des Telegramms ist ein EIB-Gerät.

                          Kommunikationsobjekt
                          An dieses K.-Objekt wird das Telegramm gesendet. Das K.-Objekt muss vom Typ 14 Byte sein, andere Typen sind nicht zulässig.

                          Empfangen (Einfaches Telegramm)
                          Wenn beim Anlegen ein "Einfaches Telegramm" definiert wurde, werden in dieser Liste die zu empfangenden Datenblöcke definiert.

                          Empfangen (Komplexes Telegramm)
                          Wenn beim Anlegen ein "Komplexes Telegramm" definiert wurde, ist die Defintion eines Regulären Ausdrucks notwendig. Hierfür dient das folgende Feld. Die definierten Datenblöcke sind vom Regulären Ausdruck abhängig.

                          Regulärer Ausdruck
                          Definiert den "Regulären Ausdruck", welcher zur Auswertung des Telegramms dient.

                          Befehle
                          Nach der erfolgreichen Auswertung des Telegramms können Befehle ausgeführt werden.


                          Datenblock (Empfang) - Einfaches Telegramm

                          Zurück / Vor | Hilfe / Kommunikation / Datenblock (Empfang)

                          Ein empfangener Datenblock kann folgende Daten enthalten:
                          - Beliebige Anzahl an Daten
                          - Feste Anzahl an Daten
                          - Text
                          - Binärdaten
                          - K.-Objekt als Klartext
                          - K.-Objekt als Binärdaten
                          - Text aus vordefinierter Liste
                          - Text/Wert mit fester Länge


                          Datenblock: Beliebige Anzahl an Daten

                          Die Antwort enthält eine beliebige Anzahl an Daten, die nicht verarbeitet werden müssen. Hierauf müssen ein "Text" oder Binärdaten folgen. Verwendet man diese Kennzeichen, so werden die Daten zu diesem Abschnitt nicht verarbeitet.

                          Datenblock: Feste Anzahl an Daten

                          Erwartet in der Antwort eine feste Anzahl an Daten. Die jeweilige Länge muß festgelegt werden.

                          Datenblock: Text

                          Erwartet einen Text. Dem Text kann optional ein Carriage Return (CR) und/oder ein Line Feed (LF) angehängt werden. Weiterhin kann der Text auch Sonderzeichen in Form von Hexwerten enthalten. Die Sonderzeichen werden dann in der Form \x?? eingegeben, der Hexwert wird mit einem \x eingeleitet und muss immer zweistellig sein. Um \ zu erhalten ist auch die Eingabe von \\ möglich. In der Eingabezeile steht eine Hilfsfunktion zur Eingabe von Hex-Werten zur Verfügung.

                          Beispiel: \x09 (Erwartet ein Tabulator-Zeichen)


                          Datenblock: Binärdaten (in Hexform)

                          Erwartet Daten in Binärform. Der Hexwert FF80FF würde also drei Bytes (255,128,255) als Antwort erwarten.

                          Datenblock: K.-Objekt als Klartext

                          Erwartet einen Wert als Klartext. Der empfangene Wert wird in ein Kommunikationsobjekt geschrieben.
                          Hinweis: Enthält der Wert vor oder nach dem Text Leerzeichen, Tabulatoren oder Zeilenumbrüche werden diese abgeschnitten.
                          Hinweis: Negative Werte werden nur erkannt, wenn das Minuszeichen direkt vor der Zahl steht.

                          Kommunikationsobjekt

                          In dieses K.-Objekt wird der erhaltene Wert geschrieben

                          Zahlenformat

                          Legt fest, in welchem Zahlenformat die Daten empfangen werden. Folgende Formate sind möglich:
                          • Standard
                            Die Daten liegen "normal" vor. Als Dezimaltrenner wird ein Punkt erwartet, der Wert kann mit einem Minus-/Plus-Zeichen eingeleitet werden.
                          • #
                            Es wird ein ganzzahliger Wert erwartet.
                            Beispiel: Enthält der Datenblock den Wert 1234.56, erhält das K.-Objekt den Wert 1234.
                          • #,###
                            Es wird ein ganzzahliger Wert mit Komma als Tausendertrenner erwartet.
                            Beispiel: Enthält der Datenblock den Wert 1,234.56, erhält das K.-Objekt den Wert 1234.
                          • #.###
                            Es wird ein ganzzahliger Wert mit Punkt als Tausendertrenner erwartet.
                            Beispiel: Enthält der Datenblock den Wert 1.234,56, erhält das K.-Objekt den Wert 1234.
                          • #.#
                            Es wird ein Fließkomma-Wert mit Punkt als Dezimaltrenner erwartet.
                            Beispiel: Entählt der Datenblock den Wert 1234.56, erhält das K.-Objekt den Wert 1234.56.
                          • #,#
                            Es wird ein Fließkomma-Wert mit Komma als Dezimaltrenner erwartet.
                            Beispiel: Entählt der Datenblock den Wert 1234,56, erhält das K.-Objekt den Wert 1234.56.
                          • #,###.#
                            Es wird ein Fließkomma-Wert mit Komma als Tausendertrenner und Punkt als Dezimaltrenner erwartet.
                            Beispiel: Entählt der Datenblock den Wert 1,234.56, erhält das K.-Objekt den Wert 1234.56.
                          • #.###,#
                            Es wird ein Fließkomma-Wert mit Punkt als Tausendertrenner und Komma als Dezimaltrenner erwartet.
                            Beispiel: Entählt der Datenblock den Wert 1.234,56, erhält das K.-Objekt den Wert 1234.56.

                          Hinweis: Numerische Werte enden, sobald ein alphanumerisches Zeichen im Datenblock vorkommt. Beispiel: Enthält der Datenblock den Wert 14.5°C, wird der numerische Wert bis zum Zeichen ° erkannt, hier also 14.5.

                          Datenblock: K.-Objekt als Binärdaten

                          Erwartet einen Wert als Binärdaten. Der empfangenen Wert wird in ein Kommunikationsobjekt geschrieben. Der erwartete Wert kann in folgenden Datenformaten definiert werden:
                          - 1 Byte (0..255)
                          - 1 Byte (-128..127)
                          - 2 Byte (0..65535)
                          - 2 Byte (-32768..32767)
                          - 4 Byte (-2147483648..2147483647)
                          - 4 Byte (0..4294967295)
                          - 4 Byte Fließkomma
                          - 8 Byte Fließkomma


                          Datenblock: Text aus vordefinierter Liste

                          Erwartet einen Text aus einer definerten Auswahlliste. Im nachfolgenden Feld wird die Zuordnung Text zu Wert vorgenommen. Hierzu ist eine entsprechende Schreibweise einzuhalten.

                          Kommunikationsobjekt

                          In dieses K.-Objekt wird der durch den empfangenen Text gesteuerte Wert geschrieben.

                          Liste

                          Generelle Schreibweise:
                          Text=Wert

                          Beispiel:
                          Regnerisch=0
                          Heiter bis wolkig=1
                          Sonnig=2
                          Undefiniert=4

                          Jede Text-Wert-Kombination muss in einer eigenen Zeile stehen. Bei der Auswertung der definierten Liste sind Teiltreffer möglich. Enthält das Telegramm bspw. den Text Norden, in der Liste ist aber nur der Text Nord definert und nicht der Wert Norden, dann wird der Text Norden als Treffer akzeptiert. Der Wert des ersten gefundenen Treffers wird verwendet. Groß-/Kleinschreibung ist zu beachten. Wenn der Text keinem Text in der Liste entspricht, bekommt das K.-Objekt den Wert 0.


                          Datenblock: Text/Wert mit fester Länge

                          Erwartet einen n-Zeichen langen Wert als Klartext. Der empfangene Wert wird in ein Kommunikationsobjekt geschrieben.
                          Hinweis: Enthält der Wert vor oder nach dem Text Leerzeichen, Tabulatoren oder Zeilenumbrüche, werden diese abgeschnitten.

                          Daten umwandeln

                          Die nachfolgenden Felder sind abhängig vom eingestellten Typ des Datenblocks.

                          URL-Quoting anwenden

                          Ja: Der Datenblock wird gemäß des HTTP-Standards kodiert. Beispiel: Aus dem Text Heiter%20bis%20wolkig wird dann Heiter bis wolkig
                          Nein: Der Text wird unbehandelt verarbeitet.


                          Umwandlungstabelle anwenden

                          Ja: Wandelt die Daten vor der Verarbeitung anhand der definierten Umwandlungstabelle um.
                          Nein: Die Daten werden unbehandelt weiter verarbeitet.


                          Daten nach Null-Byte abschneiden

                          Ja: Enthält der Datenblock ein Null-Byte, werden alle hinter dem Null-Byte liegenden Daten abgeschnitten.
                          Nein: Die Daten werden unbehandelt weiterverarbeitet.


                          IP/EIB-Telegramm empfangen - Beispiel

                          Zurück / Vor | Hilfe / Kommunikation / IP/EIB-Telegramm empfangen / IP-Telegramm in 14 Byte-Kommunikationsobjekt schreiben - Beispiel

                          IP-Telegramm in 14 Byte-Kommunikationsobjekt schreiben

                          Diese Beispiel zeigt, wie man den Inhalt eines empfangenen IP-Telegrammes in ein 14 Byte-Kommunikationsobjekt schreibt.

                          Folgende Schritte sind notwendig:

                          • Schritt 1:
                            Einfaches Telegramm anlegen.
                          • Schritt 2:
                            Im Registerreiter Absender die Option Daten von IP-Absender empfangen wählen und die Daten des IP-Gerätes (Telegramm-Typ, Adresse, IP-Port, usw.) eintragen.
                          • Schritt 3:
                            Im Registerreiter Empfangen einen Datenblock vom Typ Wert als Klartext anlegen und ihm ein K.-Objekt vom Datentyp "14 Byte" zuweisen. Der komplette Inhalt des IP-Telegramms wird in dieses K.-Objekt geschrieben.
                          • Fertig!
                            Empfängt der HS/FS nun auf dem definierten IP-Port ein Telegramm, wird der Inhalt in das 14 Byte-Kommunikationsobjekt geschrieben.

                          LG, Dariusz
                          MBP | ATV3 | iPad | iPhone | TC3 | DS214+ | HP-1820-24G | pfSense

                          Kommentar


                          • #14
                            Hi Dariusz

                            Kein Problem, ich bin im Augenblick auch gut mit Arbeit eingedeckt

                            Der Homeserver … da habe ich selbst bis jetzt vielleicht 1% erforscht - irgendwie gibt es für den HS nicht wirklich ein Supportforum da Gira sich das anscheinend nicht leisten möchte (es gibt aber immer wieder Unterstützung von erfahrenen Usern in allgemeinen KNX-Forum.
                            Meine Internet Suche hatte am WE auch nichts brauchbares zu Tage gefördert, leider. Ich habe lediglich ein paar Info Dateien gefunden. Dort konnte ich zumindest etwas über OS Connect lesen, wenn auch nicht sehr viel. Für weitere Hilfedateien oder Software müsste ich mich registrieren. Jedoch habe ich keinen Homeserver. Das ist ohnehin ein Problem, weil mir dadurch eine Testumgebung fehlt. Selbst wenn wir einen Ansatz finden, ist das ein Blindflug für mich.

                            In Deinem Posting ist die Rede von Beispielen. Der Link scheint aber auf irgendwelche lokalen Dateien auf Deinem System zu verweisen.

                            Wenn Du mir diese Beispiele hochladen könntest, würde das evtl. helfen. Ausserdem habe ich in der OS Connect Datei gelesen, dass es bereits Sample Files für die iTunes Steuerung gibt. Da wird z.B. iTunes/Music/play.scpt genannt, oder auch iPhoto/diashow.scpt. Kannst Du davon mal ein paar hochladen? Wenn diese Scripte ein Feedback geben, dann kann ich daraus evtl. die benötigten Informationen ablesen.

                            Ansonsten würde ich Dir empfehlen, dass Du Dich mal an eines der von Dir erwähnten KNX Supportforen wendest. Vielleicht kann Dir dort ein erfahrener User mal einen Beispiel-Link zusammensetzen oder auf zusätzliche Informationen verweisen. Da ja offensichtlich "irgendwas" per IP übermittelt wird, lässt sich das bestimmt auch irgendwie in Applescript realisieren. Ich bräuchte allerdings einen Anhaltspunkt, einen Beispiel-Link von dem ich ablesen kann, wie dieses Telegramm aufgebaut sein muss und wo es hingeschickt werden soll.

                            lg

                            Michael
                            HowTos: Mac Mini Mediacenter mit Plex oder XBMC / Logitech Harmony und der Mac

                            Kommentar


                            • #15
                              Hallo Michael,

                              das 14 Byte-Kommunikationsobjekt Beispiel ist Folgendes:

                              IP/EIB-Telegramm empfangen - Beispiel

                              IP-Telegramm in 14 Byte-Kommunikationsobjekt schreiben

                              Diese Beispiel zeigt, wie man den Inhalt eines empfangenen IP-Telegrammes in ein 14 Byte-Kommunikationsobjekt schreibt.

                              Folgende Schritte sind notwendig:

                              • Schritt 1:
                                Einfaches Telegramm anlegen.
                              • Schritt 2:
                                Im Registerreiter Absender die Option Daten von IP-Absender empfangen wählen und die Daten des IP-Gerätes (Telegramm-Typ, Adresse, IP-Port, usw.) eintragen.
                              • Schritt 3:
                                Im Registerreiter Empfangen einen Datenblock vom Typ Wert als Klartext anlegen und ihm ein K.-Objekt vom Datentyp "14 Byte" zuweisen. Der komplette Inhalt des IP-Telegramms wird in dieses K.-Objekt geschrieben.
                              • Fertig!
                                Empfängt der HS/FS nun auf dem definierten IP-Port ein Telegramm, wird der Inhalt in das 14 Byte-Kommunikationsobjekt geschrieben.

                              Wobei diese Telegramm von einem KNX-Gerät kommen muss in diesem Beispiel … Schritte 1 bis 2 sind klar, die sind umgesetzt … Wenn das Telegramm von einem IP-Gerät kommt dann ist das ähnlich. Der eigentliche Knackpunkt ist der Schritt 3 - ich weiß es noch immer nicht was der Homeserver genau erwartet um das benötigte zu senden, falls das Apple Script das kann ...

                              Vielleicht sollte man einfach wie von dir vorgeschlagen eine Seite übergeben und schauen ob der Homeserver (HS) zumindest realisiert dass er etwas „gehört“ hat, ich könnte dann schauen ob ich den HS beibringen kann ob er das interpretieren kann …?

                              ... Ausserdem habe ich in der OS Connect Datei gelesen, dass es bereits Sample Files für die iTunes Steuerung gibt. Da wird z.B. iTunes/Music/play.scpt genannt, oder auch iPhoto/diashow.scpt. Kannst Du davon mal ein paar hochladen? Wenn diese Scripte ein Feedback geben, dann kann ich daraus evtl. die benötigten Informationen ablesen.
                              Leider machen diese Scripte genau das was dein(e) Scripte machen, nur senden - ich möchte sie „klüger“ machen indem ich auf den Status z.B.: AirPlay LS ATV ist AN automatisch eine Antwort via IP-Telegram and den HS zurücksende indem ich im den STATUS mitteile ...

                              Ad. Blindflug … ich könnte mit einem Script der an den HS, IP = 10.0.0.170:80, ein Telegramm sendet, versuchen zu fliegen

                              Einen schönen Abend noch !
                              Dariusz

                              PS: leider habe ich noch keine Antwort auf dem KNX-Forum erhalten
                              LG, Dariusz
                              MBP | ATV3 | iPad | iPhone | TC3 | DS214+ | HP-1820-24G | pfSense

                              Kommentar

                              Lädt...
                              X