modul iTunes / Apple TV

Begonnen von justme1968, 21 März 2013, 16:16:14

Vorheriges Thema - Nächstes Thema

justme1968

hallo zusammen,

ich bin gerade dabei ein fhem modul zu schreiben um itunes und apple tv geräte zu steuern.

die inspiration hierzu kommt von reinerleins sonos modul. da ich aber kein sonos system habe sondern das ganze auf basis eines apple tv gen. 1 mit umgebauter platte und diversen airport express mache mußte ein anderes modul dafür her. aussehen und readings sind ebenfalls an das sonos modul angelehnt. die idee ist am ende zwei module zu haben die sich so ähnlich bedienen und verhalten das sie z.b. auf die gleiche weise in das LightScene modul eingebunden werden können.

die hier angehängten files sind noch in ein einem recht frühen stadium, ich stelle es aber schon mal vor weil ich gerne jetzt schon feedback hätte. die größte hürde für einen willigen anwender ist zur zeit das ich aus fhem das pairen noch nicht automatisch vorbereiten kann so das das modul automatisch als zu pairen in itunes ersheint. dieser schritt ist nur ein mal pro device nötig aber zur zeit mit handarbeit auf der kommandozeile verbunden. hierzu muss auf dem gerät auf dem auch fhem läuft das mDNSResponderPosix binary verwendete werden.das bekommt man z.b. zum selber kompilieren hier http://www.macosforge.org/. alternativ sollte es auch mit avahi gehen. genaue anleitung folgt. wenn der mDNSResponderPosix nicht auf dem gerät selber ausgeführt werden (z.b. fritz box) kann ist es alternativ auch möglich mit dem mDNSProxyResponderPosix auf einem anderen rechner die nötige information zum pairing bereitzustellen.

was geht:
  • suchen vorhandener devices im netz
  • pairen mit dem device
  • steuern eines gepairten iTunes oder Apple TV per play und pause
  • diverse readings zum aktuellen titel inklusive cover art
  • setzen der zu verwendenden sound ausgabe: lokal/airport
  • auflisten der vorhanden airport device ids
  • auflisten der vorhanden playlists
was noch nicht geht:
  • pairen automatisch vorbereiten, alle manuellen schritte vermeiden
  • lautstärke ändern
  • playlist, title wählen
  • vor und zurück springen
  • 1000 andere dinge
installation:
  • fhem hit update von heute nacht
  • das perl modul Net::DAAP::DMAP zur zeit aber noch nicht in der cpan version sondern der angehängten
  • das modul 33_iTunes.pm
  • für die autodiscovery das perl modul Net::Bonjour. wenn es nicht vorhanden ist geht bis auf das finden der devices trotzdem alles
wie lege ich ein device an und paire es mit itunes oder einem apple tv:
  • mögliche geräte im netz auflisten:
define <name> iTunes
  • device anlegen:define <name> iTunes <ip-adresse>-> STATE ist Initialized
  • das modul versucht sich mit dem gerät zu verbinden und merkt das es noch nicht gepairt ist ->der STATE wechselt zu Pairing
  • im device listing nachschauen unter welchem port die pairing anfrage entgegengenommen wird. das ist PORT. nicht Port.
  • von hand den mDNSResponderPosix starten: mDNSResponderPosix -v 2 -p <port> -n fhem -t _touch-remote._tcp -x DvNm=fhem RemV=10000 DvTy=iPod RemN=Remote txtvers=1 Pair=0000000000000001als <port> ist hier der port aus dem device listing zu verwenden
  • jetzt sollte in itunes in der seitenleiste eine neue Fernbedienung auftauchen. bei itunes 11 ist eventuell die seitenleiste über das Darstellung menue einzublenden. auf die fhem remote klicken und 0000 als code eingeben. itunes sollte dann melden das die fernbedienung benutzt werden kann.
  • bei einem apple tv gen1 unter einstellungen ... remotes entsprechend vorgehen, apple tv gen 2 entsprechend
  • den mDNSResponderPosix beenden
  • im fhem device sollte STATE nun Paired oder schon Connected sein.[/list]

    gruss
      andre
    hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

    https://github.com/sponsors/justme-1968

    justme1968

    hier noch mal zwei weitere möglichkeiten das advertsing zum pairen temporär von hand zu machen. diesmal mit dns-sd oder avahi statt mDNSResponderPosix. dns-sd ist auf jedem mac installiert und kommt mit dem bojour for windows packet. avahi sollte auf jedem aktuellen linux system zur Verfügung stehen. es ist also nichts mehr zu kompilieren.

    entweder so wenn fhem auf dem gleichen rechner läuft:dns-sd -R fhem _touch-remote._tcp local <port> DvNm=fhem RemV=10000 DvTy=iPod RemN=Remote txtvers=1 Pair=0000000000000001
    oder so als proxy wenn fhem auf einem anderen rechner läuft. <ip> ist hier die ip des geräts auf dem fhem läuft:dns-sd -P fhem _touch-remote._tcp local <port> <ip> <ip> DvNm=fhem RemV=10000 DvTy=iPod RemN=Remote txtvers=1 Pair=0000000000000001

    und das gleiche noch mal jeweils mit avahi. einmal lokal:avahi-publish -s fhem _touch-remote._tcp <port> DvNm=fhem RemV=10000 DvTy=iPod RemN=Remote txtvers=1 Pair=0000000000000001
    oder als proxy:
    avahi-publish -s -H <ip> fhem _touch-remote._tcp <port> DvNm=fhem RemV=10000 DvTy=iPod RemN=Remote txtvers=1 Pair=0000000000000001

    gruss
      andre
    hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

    https://github.com/sponsors/justme-1968

    Fennek

    Hallo Andre,

    ersteinmal danke für deine Bemühungen.

    Habe es in meiner Neugierde gleich mal versucht und komme bis:


    (siehe Anhang / see attachement)


    ein

    avahi-publish -s fhem _touch-remote._tcp 0 DvNm=fhem RemV=10000 DvTy=iPod RemN=Remote txtvers=1 Pair=0000000000000001

    bring mir Failed to create client object: deamon not running

    der log von fhem sagt
    2013.03.21 22:16:40 3: Apple_TV: port 0 opened.

    Mal sehen was ich noch erreichen kann.
    FHEM Cubietruck mit 50GB SSD
    HMLAN: TC,VD,DN,DIM,SW,SEC,TH
    HUEBridge, HUEDevice:LCT,LLC
    Sonos: 5xPL1,2xPB,2xSUB
    iBeacon's

    justme1968

    das avahi-publish geht nur wenn der avahi daemon auch richtig konfiguriert ist und laeuft. das habe ich mir noch nicht genau angesehen. ich habe bis jetzt nur die beiden anderen methoden verwendet.

    die port 0 meldung bedeutet deine fhem installation ist noch nicht neu genug. rudolf hat meinen patch erst vorhin bekommen und eingecheckt. mit dem update von morgen sollte da nicht mehr 0 sondern der richtige port stehen.

    gruss
      andre
    hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

    https://github.com/sponsors/justme-1968

    Fennek

    Hallo andre,

    Ein kurzer Zwischenstand.
    Das pairing von iTunes ist mir inzwischen gelungen.

    es übersteht jedoch einen restart von fhem nicht.

    iTunes 11.2.026 hat Probleme mit Bonjoure, demzufolge auch mit Airplay und dem pairing.
    Es gelingt nur wenn man iTunes beendet, den Dienst neu startet und anschliesend iTunes.

    Bei meinen ATV's ist das pairing noch nicht erfolgreich verlaufen, weder bei ATV2 noch bei ATV3.
    FHEM Cubietruck mit 50GB SSD
    HMLAN: TC,VD,DN,DIM,SW,SEC,TH
    HUEBridge, HUEDevice:LCT,LLC
    Sonos: 5xPL1,2xPB,2xSUB
    iBeacon's

    justme1968

    nur um sicher zu sein...

    hast du in fhem nach dem pairing auch ein save gemacht? bitte vergleich mal ob der key im device listing nach dem neustart noch der gleiche ist.

    hast du ein iphone mit der remote app? bleibt das pairing da erhalten? wenn ja kann es nicht an itunes liegen. der mechanismus den ich verwende ist identisch und ich habe es auch mit der neuesten itunes version am laufen. das bonjour wird nur wärend des pairing benutzt. danach ist es nicht mehr nötig und muß auch nicht mehr laufen. bei der eigentlichen steuerung/fernbedienung ist es nicht mehr beteiligt.

    was genau passiert bei den atv?

    ich bin gerade dabei noch ein paar log meldungen einzubauen um besser fehler zu suchen.

    hast du das pairing mit avahi gemacht? wenn ja, was war zu tun?

    gruss
      andre

    hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

    https://github.com/sponsors/justme-1968

    Fennek

    save sollte man schon benutzen, Asche auf mein Haupt. :-)

    Ja das pairing fand mit avahi statt. Bei mir lief der Daemon nicht.
    Habe ihn dann nach dem ich dbus mit /opt/etc/init.d/S20dbus start gestartet und den Daemon zum laufen gebracht.

    Ein netter Link dazu: http://blog.elsdoerfer.name/2011/05/15/shairport-on-synology-nas/

    Zitathast du ein iphone mit der remote app? bleibt das pairing da erhalten? wenn ja kann es nicht an itunes liegen.

    Nein in der Remote App sehe ich, trotz aktivierter Privatfreigabe nur ATV und keine Mediathek. Sie erscheit erst wenn ich die Freigabe im iTunes deaktiviere und anschliesend wieder aktiviere. Itunes läuft auf Windows XP PC und unter 10.7 gab es keine Probleme mit der Freigabe.

    zu den ATV's.

    unter Fernbedienung ist leider fhem nicht vorhanden.
    FHEM Cubietruck mit 50GB SSD
    HMLAN: TC,VD,DN,DIM,SW,SEC,TH
    HUEBridge, HUEDevice:LCT,LLC
    Sonos: 5xPL1,2xPB,2xSUB
    iBeacon's

    justme1968

    das mit der privat freigabe muss ich mir mal anschauen. im prinzip ist ist die aber für die remote app nicht nötig. ich habe meine remote app mit meinen itunes gepairt bevor es die privatfreigabe überhaupt gab und verwende das alte pairing immer noch.

    ich muß mal schauen wo ich ein atv >= gen2 her bekomme zum testen. mit gen1 geht es ohne probleme.

    gruss
      andre
    hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

    https://github.com/sponsors/justme-1968

    Fennek

    Mit der Remote App und iTunes funktioniert die Code Methode noch.

    Jedoch Remote zu ATV und iTunes zu ATV nur noch über Privatfreigabe, heist mit Apple ID.
    Habe gerade nochmal alle Varianten durchgespielt bleibt das gleiche Ergebniss. FHEM nicht zu sehen. :-(

    habe gerade noch was dazu gefunden

    http://imho.nu/iMHo/perl-on-apple-tv2/
    FHEM Cubietruck mit 50GB SSD
    HMLAN: TC,VD,DN,DIM,SW,SEC,TH
    HUEBridge, HUEDevice:LCT,LLC
    Sonos: 5xPL1,2xPB,2xSUB
    iBeacon's

    justme1968

    wie das pairen mit privatfreigabe funktioniert scheint noch niemand herausgefunden zu haben.

    ich schaue mir mal an was auf dem netzwerk passiert da aber eine apple id betreiligt ist tippe ich mal das meiste ist verschlüsselt.

    d.h. bis auf weiteres geht es nur mit itunes, apple tv gen 1 und ein paar freien servern.

    gruss
      andre
    hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

    https://github.com/sponsors/justme-1968

    Fennek

    macht nix. :)

    XBMC auf dem ATV gibt es ja noch, was in Zusammenhang mit dem Modul 70_XBMC ganz gut
    funktioniert.

    Aber trotzdem Danke.
    FHEM Cubietruck mit 50GB SSD
    HMLAN: TC,VD,DN,DIM,SW,SEC,TH
    HUEBridge, HUEDevice:LCT,LLC
    Sonos: 5xPL1,2xPB,2xSUB
    iBeacon's

    UliM

    Hi,
    erst jetzt darauf aufmerksam geworden - gute Sache das :)

    Mein setup: fhem auf FB7390, iTunes auf macmini, 3 AirportExpress als Airtunes-Audio-clients.

    Modul installiert.
    #use Net::DAAP::DMAP  #deaktiviert da auf FB nicht verfügbar
    define iTunes2 iTunes
    ->
    need Net::Bonjour module to detect hosts.

    1. Die IPs des macmini bzw der AE kenne ich - wie bekomme ich die ports raus?
    2. Für's paiting würde ich dann verwenden dns-sd -P fhem _touch-remote._tcp local <port> <ip> <ip> DvNm=fhem RemV=10000 DvTy=iPod RemN=Remote txtvers=1 Pair=0000000000000001
    Ist das wirklich korrekt geschrieben? Die Leerstelle zw. fhem und _touch-remote, 2x die ip?

    Wenn ich hierzu tipps bekommen könnte, kann ich weitermachen *freu*
    =8-)
    RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

    justme1968

    das daap modul brauchst du unbedingt da steckt das protokoll drin. es ist nur ein einfaches perl file und sollte auch auf der fritzbox laufen.

    das leerzeichen und die 2x ip sind korrekt.

    sobald das device auf pairing steht siehst du den port als PORT im device listing.

    ich hab noch mal die aktuellen versionen der beiden files angehängt.

    gruss
      andre
    hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

    https://github.com/sponsors/justme-1968

    UliM

    Hiho,
    vielen Dank.

    Habe nun DMAP drauf, 33_iTunes.pm reload erfolgreich

    FB7390/fhem:
    define iTunes2 itunes 192.169.x.y
    PORT:  52462
    STATE: Pairing

    mac terminal (OSX 10.8.4):
    dns-sd -P fhem _touch-remote._tcp local 52462 192.169.x.y 192.169.x.y DvNm=fhem RemV=10000 DvTy=iPod RemN=Remote txtvers=1 Pair=0000000000000001
    Terminal-Meldungen:
    Registerng service...
    ...STARTING...
    Got a reply for service fhem._touch-remote._tcp.local.: Name now registered and active

    mac iTunes 11.0.4(4) :
    Remote hinzufügen (es wird kein Name angezeigt)
    Code-Eingabe 0000
    -> der eingegebene Code ist ungültig

    Hab auch 1111..9999, 1234, 4321 versucht. Auch nix.

    Ideen?

    Gruß, Uli
    RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

    justme1968

    den namen siehst du nur wenn du die seitenleiste links offen hast:

    (siehe Anhang / see attachement)



    zur sicherheite: gib mal einfach nur 'define xxx itunes' im telnet fenster ein. es sollte eine liste mit den möglichen hosts erscheinen:define xxx itunes    
    Usage: define <name> iTunes <host> [interval]
    reachable hosts are:
    host type name
    10.0.1.46: AppleTV Apple TV
    10.0.1.29: iTunes Mediathek von Andre


    die ip beim define ist die deines mac mini. die beiden ips beim dns-sd sind jeweils die der fritzbox.

    das pairen geht nicht wenn itunes den PORT auf der frotzbox nicht erreichen kann. wenn das itunes device auf pairing steht kannst du vom mac versuchen den PORT per telnet zu erreichen. danach musst du aber das itunes device löschen und neu anlegen. der port für das pairing geht nur für genau eine session. beim neu anlegen ändert sich der port und du musst das dns-sd  kommando natürlich anpassen.

    das pairing ist leider etwas unhandlich. aber es ist nur ein mal nötig.

    ich hab es gerade ein mal komplett durchgespielt und es geht mit den gleichen osx und itunes versionen wie bei dir. mein fhem läuft aber auf einem synology nas und nicht auf einer fritzbox.

    falls die fritzbox probleme macht kannst du temporär eine fhem version auf dem mac installieren und dort das pairing machen. ich erzeuge im itunes modul keinen eindeutigen key sondern verwende immer 0000000000000001. d.h wenn dein itunes mit dem fhem auf dem mac gepairt ist geht es danach auch mit dem itunes auf der fritzbox.

    gruss
      andre
    hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

    https://github.com/sponsors/justme-1968