modul iTunes / Apple TV

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

Vorheriges Thema - Nächstes Thema

onkel-tobi

Startet damit schon, wie auch mit meiner Version.
Wenn ich dann bspw. ein get playlists mache und danach mal einen Server restart, war es das:

IOError: [Errno 32] Broken pipe
Dann muss ich wieder eine alte Version einspielen und FHEM startet wieder...

com4t

Erstmal vielen Dank an andre und maui, die das Modul soweit gebracht haben! Ich hab das iTunes Modul mit forked-daapd verbunden und kann darüber Interpreten starten und generell pausieren und weiter abspielen inkl. Integration in FTUI mit play, next, Lautstärke und Lautsprecherauswahl.
Zwischendrin stand mal, dass ihr es auch hinbekommen habt Playlists abzuspielen - das klappt bei mir leider nicht: weder mit ID, noch nach Namen und beim Dropdown werden auch kein Playlists angezeigt.
In forked-daapd kriege ich "Unrecognized DAAP request" als Fehlermeldung.
Ist da jemand aktuell noch an der Entwicklung dran?

Maui

Andre ist ja schon länger nicht mehr dran. Seit ich Spotify statt Apple Music nutze bin ich auch nicht mehr dabei. Playlisten habe ich schon hinbekommen. Musst du am besten selbst Mal die letzten Seiten stöbern. Ich schaffe es auch leider zeitlich nicht mehr das Tool weiter zu entwickeln und das Interesse ist immer sehr dünn gewesen.

RonnyRJM

Hallo Zusammen,

Ich versuche seit einigen Tagen das iTunes Modul bei mir zum laufen zu bekommen. Leider bisher ohne Erfolg. Ich komme nicht in den Pairing Modus - ich hänge immer in Initialized fest und bekomme auch keinen PORT in den Internals. Ich habe mehrere 33_itunes.pm und DMAP.pm aus dem Forum probiert, zuletzt die von Seite 2. Mein Fhem läuft auf einem iMac mini auf dem auch mein iTunes läuft.

Hat jemand eine Idee?

Maui

hast du dmap installiert und die dmap.pm ausgetauscht?
Hab es auch nur über Umwege geschafft. Also fhem temporär auf dem macMini und da gepairt, und den key dann auf mein pi übertragen.

Aber über ein initialized solltest du mit der DMAP.pm von Seite 2 und der 33_iTunes von Seite 4 hinweg kommen.

RonnyRJM

ich hab eben DMAP erneut über CPAN installiert und die DMAP.pm gegen die von Seite 2 ersetzt. Danach Rechner neugestartet, aber wieder lande ich nur in Initialized.
Wie komme ich eigentlich zu der 5-stelligen PORT Nummer - die taucht bei mir nicht in den Internals auf?

Maui

komisch. Also eigentlich müsste das Modul (von Seite 4) selbst auf Pairing springen. Da bekommst du dann auch den 5-stelligen Port in den Internals.
fhem ist aktuell?
Vielleicht mal als Test eine 2. Fhem instanz frisch aufsetzen und gucken, ob es dort läuft. Sonst wüsste ich auch nicht weiter was man noch machen kann. An Pairing etc. habe ich mich bei dem Modul auch nicht ran getraut bei meinen Anpassungen, dazu stecke ich nicht tief genug in der Materie.

Markus M.

Verwendet dieses Modul eigentlich noch irgendjemand?

Das Pairing funktioniert mit neuen iTunes Versionen leider nicht mehr - zumindest hab ich es nicht hinbekommen.
Es gibt aber eine Möglichkeit, die Home Sharing UUID zu verwenden, nachdem man sie mal mit Wireshark mitgeschnitten hat.

Nur mit dem DMAP komme ich nicht ganz zurecht.
Was war nochmal der Grund, warum die Version ausgetauscht werden muss und gibt es keine Möglichkeit, das stattdessen direkt ins Modul zu integrieren?

FHEM dev + HomeBridge + Lenovo Flex15 + HM-CFG-USB + RFXtrx433 + Fritz!Box 7590/7580/546E

HM Aktor/Sensor/Winmatic/Keymatic/Thermostat, HUE, Netatmo Weather/Security/Heating, Xiaomi AirPurifier/Vacuum, Withings Aura/BPM/Cardio/Go/Pulse/Thermo, VSX828, Harmony, Siro ERB15LE
https://paypal.me/mm0

Maui

Moin Markus,

Ist zwar bei mir ewig her, dass ich darin rumgebastelt habe, aber so wie ich mich erinnere, hat mit der Ursprungsversion das Modul den PC (Mac) durchgehend wach gehalten. Das hat mich gestört.
Möglich wäre es bestimmt, beides zu ermöglichen, aber mir war es nicht möglich.  :D
PS: ich nutze es auch gar nicht mehr wegen Streaming etc.

Markus M.

Ok, ich hab dann mal selbst angefangen :)

Mein Use Case:
- Airplay soll auf ein zentrales Airplay Device (Apartment) möglich sein.
- Der Stream wird dann auf AirPlay 2 Lautsprecher in den verschiedenen Räumen verteilt
- Welche Lautsprecher angesteuert werden, entscheided FHEM je nachdem welcher Lautsprecher verfügbar ist und in welchem Raum sich gerade jemand befindet.
- Auch die Lautstärke kann FHEM je Lautsprecher steuern.
- Manuelle Steuerung soll mit der iTunes Remote möglich sein, durch HomeSharing ist auch Zugriff auf andere Bibliotheken im Netz möglich


Ein bisschen Software:
- shairport-sync wird verwendet, um AirPlay zu empfangen
- forked-daapd wäre eine Möglichkeit, um den Stream an die Speaker zu verteilen - macht aber mangels AirPlay 2 aktuell keinen Sinn
- vlc kann aus den empfangenen Audio Daten einen MP3 Stream bereitstellen
- iTunes das via Wine läuft, erledigt dann den Rest und ist von FHEM oder der iTunes Remote App aus steuerbar
- Alles davon wird automatisch gestartet


Probleme mit dem alten Modul:
Pairing klappt nicht. Wenn Pairing klappen würde, könnte FHEM aus irgendwelchen Gründen die Database ID trotzdem nicht auslesen.
Mit HomeSharing funktioniert das sowieso nicht so einfach, aber auch da gibt's anschliessend keine Database ID.
Ist aber nicht weiter schlimm - Key, HomeSharing ID und Database ID muss man nämlich nur einmal mit Wireshark auslesen und kann sie dann in Attributen ablegen.
Das Setzen der Speaker habe ich hinbekommen.



Mein Setup

Shairport:
- shairport-sync als Airplay Empfänger, einfach als Service installieren und Audio in eine Pipe schreiben lassen
- Pipes mit mkfifo z.B. unter /tmp/airplay und /tmp.airplay.metadata anlegen
- Bei Start/Stop wird das dem Modul und VLC mitgeteilt, um den Stream später automatisch starten zu können
Code (stream_start.sh) Auswählen
#!/bin/bash
/opt/fhem/fhem.pl 7072 "set itunes stream on" > /dev/null 2>&1
echo -e 'play\nlogout'|nc localhost 7070 &
exit 0 > /dev/null 2>&1


VLC:
- Transcoding aus der Pipe in MP3
Code (vlc.service) Auswählen
/usr/bin/vlc -v -I rc --rc-host localhost:7070 --demux=rawaud --rawaud-channels 2 --rawaud-samplerate 44100 /tmp/airplay :sout='#gather:transcode{acodec=mpga,ab=320,channels=2,samplerate=44100}:http{mux=dummy,dst=:8080/airplay.mp3}' :sout-keep :repeat

iTunes:
- iTunes wird auf Linux mit Wine installiert, unten eine Anleitung die für mich funktioniert hat
- iTunes wird eingerichtet, bekommt die iCloud Daten für Store und HomeSharing und wird dann minimiert beim Login gestartet
Code (Install iTunes) Auswählen
How to install iTunes 12 on ubuntu 18

1. Install current Wine version directly from the winehq repository:
___
wget -nc https://dl.winehq.org/wine-builds/Release.key
sudo apt-key add Release.key
sudo apt-add-repository 'deb https://dl.winehq.org/wine-builds/ubuntu/ xenial main'
sudo apt-get update
sudo apt-get install --install-recommends winehq-stable
wine --version
___

2. Create a new 32 bit wineprefix (if you are doing this on a 64 bit system) and set windows version
___
WINEPREFIX=/home/fhem/.wine32 WINEARCH=win32 wine wineboot
WINEPREFIX=/home/fhem/.wine32 WINEARCH=win32 wine winecfg
___

Set Windows Version to Windows 10

3. Download the newest winetricks
___
sudo apt-get remove winetricks
wget  https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks
chmod +x winetricks
sudo mv -v winetricks /usr/local/bin
___

4. Install gdiplus library using winetricks
___
WINEPREFIX=/home/fhem/.wine32 winetricks
___

(on the window that pops open go to > Select the default wineprefix > Install a Windows DLL > gdiplus > OK)

5. Download iTunes 12 - 32 bit installer and install it (version is important ! do not use 64 bit):
https://www.apple.com/itunes/download/win32
___
cd /home/fhem/Downloads
WINEPREFIX=/home/fhem/.wine32 wine iTunesSetup.exe
___

!!! Follow the setup, and untick the box "Open iTunes after the installer exits" in the last setup dialog box !!!
6. Start it. It may crashes the first time, just start it again. Now you should be able to use iTunes and log in to the iTunes Store and download and play your purchased music and videos!

Start from command line for initial setup:
___
cd /home/fhem/.wine32/drive_c/Program\ Files/iTunes/
WINEPREFIX="/home/fhem/.wine32" wine iTunes.exe
___

Autostart iTunes minimized:
env WINEPREFIX="/home/fhem/.wine32" wine start /min 'C:\Program Files\iTunes\iTunes.exe'


__________________________________



Zugangsdaten:
- Pairing/Access Daten können einfach mit Wireshark ausgelesen werden, indem man z.B. sein iPhone als Remote verbindet
- Man benötigt den Key (bei Anmeldung ohne HomeSharing), die HomeSharing ID (alternativ/zusätzlich) und die Database ID.
- All das sieht man unmittelbar nach Start der iTunes Remote App in Wireshark


FHEM Modul und Attribute:
- Authentifizierung nur mit key funtioniert am besten
- In das Attribut autostream gehört die ID der Playlist in der der lokale Stream liegt
- databaseid ebenfalls eintragen, da das Auslesen nicht immer funktioniert
- Lautsprecher lassen sich an/abschalten mit set itunes speaker Kitchen on
- Die Lautstärke lässt sich je Speaker regeln mit set itunes speaker Office volume 80
- Lautsprecher lassen sich im regex im Attribut excludespeakers ignorieren, z.B. (0x0|0x1234567890ab)


Getestet habe ich das Ganze mit Itunes auf Mac und Win sowie forked-daapd als Clients.
Soweit funktioniert alles bis auf das Handling von aktuell nicht verfügbaren Lautsprechern, jetzt geht's an die Logik.
FHEM dev + HomeBridge + Lenovo Flex15 + HM-CFG-USB + RFXtrx433 + Fritz!Box 7590/7580/546E

HM Aktor/Sensor/Winmatic/Keymatic/Thermostat, HUE, Netatmo Weather/Security/Heating, Xiaomi AirPurifier/Vacuum, Withings Aura/BPM/Cardio/Go/Pulse/Thermo, VSX828, Harmony, Siro ERB15LE
https://paypal.me/mm0

Maui

Klingt spannend. Aber 2 Sachen sind mir noch nicht ganz klar.
Bist du grad dabei, das ganze Modul für deine Zwecke umzuschreiben? Oder anders gefragt. Schreibst du nur ein paar Sachen um mit zusätzlichen Funktionen wie AirPlay 2, etc. oder machst grundsätzlich alles neu?
Und wäre das dann eher auf deinen Use case angepasst oder auch für andere problemlos nutzbar?

2. frage. Dein zentrales AirPlay device ist sicherlich kein Pi oä sondern ein X64-Recher?
Am Anfang schreibst du Linux und später Windows und Mac?! Wodrauf läuft dann der Medien-Server?

Und eine letzte Frage noch: wäre damit auch das Benutzen von Apple Music zum Verteilen auf AirPlay Speaker möglich? Also keine lokal vorhanden Musik sondern gestreamte.

Sorry für die vielen Fragen und den vielleicht teilweise schroffen Ton (ist spät ☺️)

Markus M.

Zitat von: Maui am 21 Oktober 2018, 22:46:55
Klingt spannend. Aber 2 Sachen sind mir noch nicht ganz klar.
Bist du grad dabei, das ganze Modul für deine Zwecke umzuschreiben? Oder anders gefragt. Schreibst du nur ein paar Sachen um mit zusätzlichen Funktionen wie AirPlay 2, etc. oder machst grundsätzlich alles neu?
Und wäre das dann eher auf deinen Use case angepasst oder auch für andere problemlos nutzbar?

Ich passe es erst mal nur so an, dass es für meine Zwecke funktioniert.
D.h. erst mal nur ein paar zusätzliche Funktionen zu Lautsprechern.
Es ist also noch genauso viel oder eher wenig nutzbar wie vorher.
Um das Pairing werde ich mich zum Beispiel nicht kümmern - solange man den Key einfach mit Wireshark auslesen kann ist das unnötig.
Ich habe auch nicht vor, das Abspielen bzw. due Auswahl der Musik über FHEM zu steuern.
AirPlay 2 hat nichts mit der Fernbedienung von iTunes zu tun, eher mit dem Stream der rauskommt: Multicast.

Ob das jemand nutzen kann, hängt von den Anforderungen ab.

Zitat2. frage. Dein zentrales AirPlay device ist sicherlich kein Pi oä sondern ein X64-Recher?
Am Anfang schreibst du Linux und später Windows und Mac?! Wodrauf läuft dann der Medien-Server?
Ich verwende das Ding nicht als Medienserver sondern aktuell nur, um einen AirPlay Stream durch FHEM gesteuert an 5 Lautsprecher zu verteilen.
Die Windows32 Version von iTunes läuft über Wine auf Ubuntu 18 - nebenbei auf dem Laptop, auf dem mein FHEM läuft.
Das Modul schafft es auch, das iTunes auf meinem Macbook zu steuern.

ZitatUnd eine letzte Frage noch: wäre damit auch das Benutzen von Apple Music zum Verteilen auf AirPlay Speaker möglich? Also keine lokal vorhanden Musik sondern gestreamte.
Wenn es im iTunes ist: Ja klar! Ich habe allerdings selbst kein Apple Music.
Aber alles was im iTunes auftaucht, kannst du über AirPlay auch abspielen.
Ich kann beispielweise mit dem FHEM iTunes über HomeSharing auf die Musik auf dem Macbook zugreifen und sie abspielen.

Ob du das dann aber auch über FHEM auch triggern kannst ist eine andere Sache - und mir erst mal egal.
Ausser Playlists funktioniert glaube ich nichts. Alben kann ich auflisten aber nicht starten.
Die Bedienung wird eh nicht besser als iTunes Remote, also kann ich dafür auch gleich die App nehmen.
In 90% der Fälle wird bei uns die Musik wahrscheinlich sowieso vom Rechner oder Telefon kommen.

ZitatSorry für die vielen Fragen und den vielleicht teilweise schroffen Ton (ist spät ☺️)
Kein Problem :)
FHEM dev + HomeBridge + Lenovo Flex15 + HM-CFG-USB + RFXtrx433 + Fritz!Box 7590/7580/546E

HM Aktor/Sensor/Winmatic/Keymatic/Thermostat, HUE, Netatmo Weather/Security/Heating, Xiaomi AirPurifier/Vacuum, Withings Aura/BPM/Cardio/Go/Pulse/Thermo, VSX828, Harmony, Siro ERB15LE
https://paypal.me/mm0

Maui

Vielleicht wechsel ich mein FHEM bald von RPi zu meinem Mac. Dann könnte das Thema wieder interessant werden.
Grob zusammengefasst willst du also shairport-sync AirPlay 2 fähig machen indem du die Krücke spannst über deinen Laptop?! Zumindest das Multicast-Feature von AirPlay 2

Markus M.

Genau das. Erst mal.
Theoretisch könnte ich auch noch weitere Devices für die beiden MacBooks anlegen, und dort bei Bedarf auch in die Lautsprecher-Steuerung eingreifen :)
FHEM dev + HomeBridge + Lenovo Flex15 + HM-CFG-USB + RFXtrx433 + Fritz!Box 7590/7580/546E

HM Aktor/Sensor/Winmatic/Keymatic/Thermostat, HUE, Netatmo Weather/Security/Heating, Xiaomi AirPurifier/Vacuum, Withings Aura/BPM/Cardio/Go/Pulse/Thermo, VSX828, Harmony, Siro ERB15LE
https://paypal.me/mm0

TimoD

#299
Ich bin zu doof, wo muss die "DMAP.pm" rein finde keinen Perl Net Ordner mit DMAP habe folgende durchsucht:
  @INC:
    /etc/perl
    /usr/local/lib/arm-linux-gnueabihf/perl/5.24.1
    /usr/local/share/perl/5.24.1
    /usr/lib/arm-linux-gnueabihf/perl5/5.24
    /usr/share/perl5
    /usr/lib/arm-linux-gnueabihf/perl/5.24
    /usr/share/perl/5.24
    /usr/local/lib/site_perl
    /usr/lib/arm-linux-gnueabihf/perl-base

Hilfe, danke :-)