Gehe zu Seite: |vorherige| Erste 2 3 4 5 6 7 8 9 Letzte |nächste|

Raumfeld - 3rd-Party Entwickler

+A -A
Autor
Beitrag
mystream
Ist häufiger hier
#201 erstellt: 23. Dez 2013, 23:16
Hallo,

ich habe mich mal des Themas synchrone Wiedergabe im Zusammenhang mit der virtuellen Base angenommen. Egal ob bei mir die v-base "refined jiffies" oder "tsc" als clocksource verwendet driften die Lautsprecher während der Wiedergabe auseinander. Das Problem scheint der Raumfeld Timeserver zu sein der auf dem Host ausgeführt wird. Aktuell gehe ich davon aus, das ohne Änderungen am timeserver sich das Problem nicht lösen lässt solange der timeserver auf einer vm läuft.

Ich habe nun bei mir einen anderen Ansatz implementiert, der zumindest im Test mit 3 Lautsprechern (1x Speaker-M und 2xSpeaker One) dazu führt das die Speaker auch über Stunden synchron bleiben.

Meine Lösung basiert darauf, den timeserver nicht mehr lokal auf der virtuellen Base sondern remote auszuführen. Und was liegt da näher als einen Speaker zu verwenden Zum einen sind die ja eh im Netzwerk vorhanden und zum anderen gibt es zufälligerweise für diese Hardware einen zum Raumfeld System kompatiblen timeserver.

Mich würde interessieren ob das ganze auch bei euch funktioniert (sofern Ihr eine v-base in betrieb habt).

Was passiert:
1. Beim Start der v-base prüft ein neues init-script ob der timeserver "/raumfeld/timeserver/timeserver" noch das Original von raumfeld ist oder bereits durch meinen hook ersetzt wurde. Falls noch nicht ersetzt installiere ich auf der v-base meinen hook.

2. Sobald Raumfeld den timeserver startet prüft der Hook, ob bei einer der im Skript über die Variable "rftimeserverlist=" gesetzten Raumfeld Komponenten der ssh Zugang aktiviert ist. Falls nein, wird der Hook deaktiviert und der reguläre, lokale timeserver auf der v-base gestartet.

3. Falls ssh Zugang zu einer der echten Raumfeld Komponenten möglich ist, startet der Hook auf dieser per remote execute einen timeserver. Die Raumfeld Komponenten reagieren sofort auf das announcement des timeservers und melden sich bei diesem an.

4. Fertig

Anmerkung:
a) Das Skript führt keinerlei Änderungen an einer der echten Raumfeld Komponenten durch. Sobald die v-base abgeschaltet wird und die Raumfeld Komponente auf der der remote timeserver lief neu gestartet wurde ist alles wieder wie vorher.

b) Im Skript ist die Variable "rftimeserverlist=" entsprechend an eure Umgebung anzupassen.

c) Mindestens bei einer der Komponenten die in rftimeserverlist aufgeführt sind muss der ssh Zugang aktiviert sein.

Wer es testen möchte legt das nachfolgende Skript bitte auf der v-base in den Ordner /etc/init.d als S90fake-timeserver ab.


#!/bin/sh
#
# Hook raumfeld timeserver only if it's not already hooked
# you need to update rftimeserverlist matching your configuration


if grep -q "ELF" /raumfeld/timeserver/timeserver

then

#
# safe original raumfeld timeserver
#

cp /raumfeld/timeserver/timeserver /raumfeld/timeserver/timeserver.local
chmod 755 /raumfeld/timeserver/timeserver.local

#
# create hook
#

cat <<EOF >/raumfeld/timeserver/timeserver
#!/bin/sh
#
# If available use remote timeserver rather than local one
#

# Set remotetimeserverlist to your raumfeld speakers or connector. if possible a wired one. Preferred one first.
rftimeserverlist="rfspeakerone2 rfspeakerone rfspeakerm"

for remotets in \$rftimeserverlist
do
# check if ssh access possible
if [ "\$(ssh -q -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null root@\$remotets "echo OK")" = "OK" ];

then
#looks like

echo start remote timeserver at \$remotets
ssh -q -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null root@\$remotets "killall timeserver ; cd /raumfeld/timeserver ; ./timeserver > /tmp/master-process-logger-pipe 2>&1" < /dev/null
echo terminated remote timeserver at \$remotets
exit
fi
done

#no, so start local
/raumfeld/timeserver/timeserver.local
EOF
chmod 755 /raumfeld/timeserver/timeserver

fi


Das "quote" Tag bricht Zeilen um. Ich habe die Datei im entsprechenden Archiv auf Ameisenschlag ergänzt. Ihr könnt das Archiv mit der Datei S90fake-timeserver hier emulation.tgz mit S90fake-timeserver laden.

Mich würde interessieren ob bei euch auch ohne diese Änderung bereits alle Komponenten synchron bleiben. Es falls nicht mit dem Skript gelöst ist.

Schöne Feiertage,

mystream


[Beitrag von mystream am 24. Dez 2013, 00:02 bearbeitet]
ChriD
Stammgast
#202 erstellt: 26. Dez 2013, 16:00
Danke @mystream!

Hab das Script mal bei meiner vBase aktiviert.
hschie
Neuling
#203 erstellt: 26. Dez 2013, 20:25
Hallo, seit wenigen Tagen spiele ich nun auch mit einem Raumfeldspeaker M rum. Ich selber habe einiges an PHP Scripten geschrieben, kenne mich im Bereich Haussteuerung auf Unix Systemen aus und haben ebenfalls einiges an Erfahrung in Netzwerken.

Im Raumfeld Umfeld möchte ich gerne mal nach einigen guten Informationsquellen suchen.

Ich möchte folgende Probleme/Fragestellungen lösen:

Zugriff auf den Raumfeld Host (bei mir Raumfeldspeaker M) über ssh. Portscan ergibt nur einen offenen Port 55555. Dort läuft wohl ein VLC. Wer kann mir ein paar Tipps für den Zugriff auf die SSH geben.

Was möchte ich dort machen:
1) Zugriff auf NFS Shares, ich habe meine Musiksammlung auf einem NFS Share liegen.
2) Ich habe im Netz einen Raspberry mit XBMC als UPNP Server laufen. Der Raumfeld Host findet in der Konfiguration aber nur den Server, es werden keine Dateien angezeigt. Andere Player haben mit dem XBMC kein Problem. Ich würde also gerne auf die Logfiles zugreifen können.
3) Weiterhin würde ich gerne die Platten am USB Bus runterfahren, auch gibt es entsprechende Befehle, sobald man auf der Shell ist
4) Wecker, ich würde die Boxen gerne als Wecker benutzen, hier soll mir ein cronjob helfen.

Tipps/Ideen?
Liebe Grüße
Helmut
thomas_raumfeld
Stammgast
#204 erstellt: 27. Dez 2013, 23:04

mystream (Beitrag #201) schrieb:
...virtuellen Base angenommen. Egal ob bei mir die v-base "refined jiffies" oder "tsc" als clocksource verwendet driften die Lautsprecher während der Wiedergabe auseinander. Das Problem scheint der Raumfeld Timeserver zu sein der auf dem Host ausgeführt wird. Aktuell gehe ich davon aus, das ohne Änderungen am timeserver sich das Problem nicht lösen lässt solange der timeserver auf einer vm läuft.

Der Timeserver kompensiert den Hardware-Drift der Clocks. Da er in einer VM läuft, ist unklar, ob die Kompensation greift. Den Timeserver auf einem anderen Speaker zu starten ist eine gute Lösung.


hschie (Beitrag #203) schrieb:
Zugriff auf den Raumfeld Host (bei mir Raumfeldspeaker M) über ssh.

* Erstelle eine Datei mit dem Namen 48fab7623bce0c903d5fe53dd681bb163eba85ae und kopiere sie auf einen FAT-formatierten USB-Stick
* Stecke den Stick in ein Raumfeld-Gerät
* Nach 2 Minuten ist der ssh-Server aktiv und Du kannst Dich mit ssh root@<speaker-ip> ohne Passwort einloggen

Obacht: Du machst das auf eigenes Risiko! Falls Du etwas kaputt machst, kannst Du mit dem Flashen des Speakers den originalzustand wieder herstellen. Der ssh-Zugang muss nur einmal aktiviert werden und bleibt bei Firmware-Updates erhalten.


mystream (Beitrag #201) schrieb:

1) Zugriff auf NFS Shares, ich habe meine Musiksammlung auf einem NFS Share liegen.
2) Ich habe im Netz einen Raspberry mit XBMC als UPNP Server laufen. Der Raumfeld Host findet in der Konfiguration aber nur den Server, es werden keine Dateien angezeigt. Andere Player haben mit dem XBMC kein Problem. Ich würde also gerne auf die Logfiles zugreifen können.
3) Weiterhin würde ich gerne die Platten am USB Bus runterfahren, auch gibt es entsprechende Befehle, sobald man auf der Shell ist
4) Wecker, ich würde die Boxen gerne als Wecker benutzen, hier soll mir ein cronjob helfen.

1) geht momentan nicht
2) logread zeigt Dir die Raumfeld Logs an
4) Schau Dir mal die Raumbrücke an.
hschie
Neuling
#205 erstellt: 28. Dez 2013, 18:36
@thomas_raumfeld, vielen Dank für die Antwort.
Der SSH Zugriff war problemlos möglich. Der logread und auch ein ps -ef wirft jedoch einiges an Fragen auf.

Auf der Box laufen sieben DHCLIENT Prozesse gleichzeitig und im Logread sind folgende Meldungen enthalten:
ec 28 16:18:48 audio-adapter daemon.info dhclient: DHCPREQUEST on wlan0 to 192.168.XXX.XXX port 67
und dies 20x/Minute.

Was passiert hier? Mein WLAN Netz und der DHCP Server finden das nicht so toll. Ist dieser Effekt auch schon mal von jemanden beobachtet worden?

Kann man DHCP vielleicht komplett abschalten und mit einer festen IP arbeiten?

Und auch von diesen Fehlermeldungen habe ich so einige:
audio-adapter user.notice raumfeld: DB query: Error: 'no such table: resource' for statement 'DELETE FROM resource;'

Die Logs bzgl. meines raspberry upnp Servers sind leider nicht aussagekräftig, hier kann man nur folgendes lesen:
ContentDirectoryScanner: Finished scanning uuid:66d7f7c4-4122-f9b7-3d48-20080196518b
Dec 28 15:55:10 audio-adapter user.notice raumfeld: DLNAServerProxy: Scanner finished for uuid:66d7f7c4-4122-f9b7-3d48-20080196518b
Dec 28 15:55:10 audio-adapter user.notice raumfeld: ContentDirectoryScanner: installing scanner for uuid:66d7f7c4-4122-f9b7-3d48-20080196518b
Dec 28 15:55:10 audio-adapter user.notice raumfeld: DLNAServerProxy: Created scanner for uuid:66d7f7c4-4122-f9b7-3d48-20080196518b
Gefunden wird aber leider nichts - kennt hier jemand ein Debugflag?

Bzgl. Raumbrücke - Ich finde die Idee sehr gut, leider nutze ich kein Windows. Unter Linux (Ubuntu) brauche ich dann Wine oder ähnliches, mein Erfahrungen in diesem Bereich sind eher schlecht. Ich werde in den nächsten Tagen einmal die PHP upnp libs versuchen.
Wenn ich über den Weg mit PHP Programmen zugreifen kann, dann ergeben sich mehr Möglichkeiten.
ChriD
Stammgast
#206 erstellt: 07. Jan 2014, 20:11
Gibts schon nen neuen VM Base Kernel für die 1.16er?
mystream
Ist häufiger hier
#207 erstellt: 08. Jan 2014, 02:21

ChriD (Beitrag #206) schrieb:
Gibts schon nen neuen VM Base Kernel für die 1.16er? :)


Wenn mein System mir denn mal die 1.16 anbietet ist davon auszugehen sofern die einen neuen Kernel verwendet. Aktuell wird mir auf dem Raumfeld System aber noch kein Update angezeigt. Und auch der einschlägige Base Update Link zeigt mir noch die 1.15.x als aktuelle an.
ChriD
Stammgast
#208 erstellt: 08. Jan 2014, 11:20
Aja, hab ja die Beta. Gut dann muss ich noch warten bis die von RF Freigegeben wird.
Kernel Update ist glaub ich schon vorhanden weil immer dann geht das Update nicht.
--> Kernel panic
mystream
Ist häufiger hier
#209 erstellt: 09. Jan 2014, 02:08

ChriD (Beitrag #208) schrieb:
Aja, hab ja die Beta. Gut dann muss ich noch warten bis die von RF Freigegeben wird.
Kernel Update ist glaub ich schon vorhanden weil immer dann geht das Update nicht.
--> Kernel panic :.


Manchmal gibt es bei mir die Kernel Panic auf der vm-Base beim 1ten Neustart nach dem Update. Mit einem Reset bootet Sie dann durch.

Falls nicht, gibt es unter /lib/modules einen neueren Ordner als 3.12.0 ?
davie2000
Stammgast
#210 erstellt: 12. Jan 2014, 17:52
Hallo!

Ich habe jetzt - dank dem Hinweis von Thomas_Raumfeld ( hier) - den SSH-Zugang auf meiner (alten) Raumfeld One aktivieren können.

Kann mir jemand von euch sagen, wo die Raumfeld-Playlisten abgelegt sind?
Ich würde diese gerne sichern bzw. mir das Format mal näher anschauen und versuchen selbst welche zu erstellen (aus meinen "importierten").
Das "Umwandeln" von importierten Playlists in Raumfeld-Playlists über die App funktioniert nicht zuverlässig (es werden nicht alle Titel übernommen).

Und: Kann man die VM-Base wirklich nur unter Esxi-HOST installieren oder auch mit irgendeinem zB VMWare-PLAYER (also zB auf einem Ubuntu-Server das VM-Ware Image "abspielen")?


[Beitrag von davie2000 am 12. Jan 2014, 17:54 bearbeitet]
ChriD
Stammgast
#211 erstellt: 12. Jan 2014, 18:23

mystream (Beitrag #209) schrieb:

ChriD (Beitrag #208) schrieb:
Aja, hab ja die Beta. Gut dann muss ich noch warten bis die von RF Freigegeben wird.
Kernel Update ist glaub ich schon vorhanden weil immer dann geht das Update nicht.
--> Kernel panic :.

Manchmal gibt es bei mir die Kernel Panic auf der vm-Base beim 1ten Neustart nach dem Update. Mit einem Reset bootet Sie dann durch.
Falls nicht, gibt es unter /lib/modules einen neueren Ordner als 3.12.0 ?

Mhm sieht ok aus. Dürfte jetzt hinhaun. Is noch 3.12.0
mystream
Ist häufiger hier
#212 erstellt: 15. Jan 2014, 10:37
Die FW 1.16.12 verwendet Kernel 3.12.4 der passend für die VM-Base an der bekannten Stelle liegt.
promocore
Inventar
#213 erstellt: 24. Jan 2014, 00:08

mystream (Beitrag #201) schrieb:


Das "quote" Tag bricht Zeilen um. Ich habe die Datei im entsprechenden Archiv auf Ameisenschlag ergänzt. Ihr könnt das Archiv mit der Datei S90fake-timeserver hier emulation.tgz mit S90fake-timeserver laden.

Mich würde interessieren ob bei euch auch ohne diese Änderung bereits alle Komponenten synchron bleiben. Es falls nicht mit dem Skript gelöst ist.

Schöne Feiertage,

mystream



Bei mir driften die Streams starkt auseinander. An dem Script arbeite ich noch
promocore
Inventar
#214 erstellt: 24. Jan 2014, 15:52
Heute habe ich das Script ausgiebig getestet. Es läuft jetzt alles syncron.
Wenn man jedoch Tracks vorspult, passt es manchmal nicht. Das Problem hatte ich aber auch schon vorher ohne die Vbase.

Zum Anfang gab es Probleme mit dem Script, da es mit den Rechten des Linuxsystems nicht ausführbar war.
Also chmod 755 nicht vergessen
Danach lief alles ohne Probleme.



Eine anderes Problem habe ich noch.

Wenn ich nach dem verschieben der Hostrolle zur Vbase weitere Hardware in das System einbinden möchte, funktionieren diese nach dem einbinden nur mit LAN. Mit Wlan versucht wohl die neuen Hardware den Wlan Accesspoint der Base zu erreichen, was natürlich nicht geht.
Schiebt man danach die Hostrolle von der Vbase auf die Raumfeldhardware, funktioniert das Wlan ebenfalls nicht.

Um das Problem zu umgehen, habe ich zuvor mit einer Raumfeldhardware das System eingerichtet und zum Schluss erst die Hostrolle auf die Vbase übertragen. Sollte eine Änderung im RF System erfolgen, muss ich jedesmal das System komplett neu einrichten.

Die Accespoint-Daten auf der Vbase mit Wlanrouter gleich setzten?
Generell den Accespoint abschalten?
Andere Ideen?
promocore
Inventar
#215 erstellt: 01. Feb 2014, 23:29
Wer die Base unter Virtualbox betreibt, weiß, dass die VM keine Wlan Hardware bereitstellt. Somit laufen viele Fehlermeldungen auf.
Wer dies unterbinden möchte, kann in der Datei:
/raumfeld/default/master-process.conf
den Eintrag
wirelessdevice=wlan0
löschen.

Der neune Kernel 3.12.7 für die aktuelle FW gibts liegt an bekannter Stelle.
mystream
Ist häufiger hier
#216 erstellt: 02. Feb 2014, 22:00

promocore (Beitrag #214) schrieb:

Wenn ich nach dem verschieben der Hostrolle zur Vbase weitere Hardware in das System einbinden möchte, funktionieren diese nach dem einbinden nur mit LAN. Mit Wlan versucht wohl die neuen Hardware den Wlan Accesspoint der Base zu erreichen, was natürlich nicht geht.
Schiebt man danach die Hostrolle von der Vbase auf die Raumfeldhardware, funktioniert das Wlan ebenfalls nicht.

(...)

Andere Ideen?

Problem habe ich nicht. Bei mir klemmt es immer nur einem neuen paar Speaker überhaupt beizubringen das ich ein WLAN habe. Der schnellste Weg den ich gefunden habe um mit der V-Base eine neue Komponente ins System einzubinden ist:

  1. Lan Kabel ran
  2. SSH Zugang einrichten
  3. Per SSH einloggen
  4. /var/raumfeld-1.0/master-process.conf in vi öffnen
  5. In der [NETWORK] section die für Dein Netzwerk gültige ssid und den psk key eintragen (lässt sich am besten von einem anderen Speaker kopieren)
  6. Speichern
  7. Neu starten. Wenn der speaker wieder gebootet hat und Du das Kabel abziehst wechselt er auf WLAN.


Gruß, mystream
davie2000
Stammgast
#217 erstellt: 17. Feb 2014, 22:19
Ich habe es - nach mehrmaligem Anlauf - jetzt endlich geschafft, dank der Anleitung auf ameisenschlag, eine virtuelle Base zum Laufen zu bringen
(VM Workstation Testversion).

Die V-Base taucht in der Netzwerkumgebung auf und ich kann sogar Musiktitel auf die V-Base-Freigabe "music" schaufeln.
Auch die Startseite im Browser (http://192.168.192.100:48365/6acfeedd-f6ec-4da1-9658-7a0fa40822cb/Welcome) kann ich erreichen.

Allerdings schaffe ich es nicht, die V-Base in meine Raumfeld-Landschaft (=Raumfeld One) zu integrieren:
In der App unter Einstellungen - Netzwerkeinstellungen - Hostkonfiguration - Hostkonfiguration ändern wird mir die V-Base nicht angezeigt (nur meine Raumfeld-One steht zur Auswahl).
Wenn ich unter Einstellungen - Netzwerkeinstellungen auf "Neue Raumfeld Base verbinden" klicke, kommt nach einer Weile die Meldung, dass ich die Base per Netzwerkkabel an meinen Router anschließen soll ("Stellen Sie sicher, dass der ROUTER-Anschluss der Base über ein Netzwerkkabel mit ihrem Netzwerk-Router verbunden ist").

Weiß jemand Rat?


[Beitrag von davie2000 am 17. Feb 2014, 22:20 bearbeitet]
promocore
Inventar
#218 erstellt: 23. Feb 2014, 01:50

mystream (Beitrag #216) schrieb:

promocore (Beitrag #214) schrieb:

Wenn ich nach dem verschieben der Hostrolle zur Vbase weitere Hardware in das System einbinden möchte, funktionieren diese nach dem einbinden nur mit LAN. Mit Wlan versucht wohl die neuen Hardware den Wlan Accesspoint der Base zu erreichen, was natürlich nicht geht.
Schiebt man danach die Hostrolle von der Vbase auf die Raumfeldhardware, funktioniert das Wlan ebenfalls nicht.

(...)

Andere Ideen?

Problem habe ich nicht. Bei mir klemmt es immer nur einem neuen paar Speaker überhaupt beizubringen das ich ein WLAN habe. Der schnellste Weg den ich gefunden habe um mit der V-Base eine neue Komponente ins System einzubinden ist:

  1. Lan Kabel ran
  2. SSH Zugang einrichten
  3. Per SSH einloggen
  4. /var/raumfeld-1.0/master-process.conf in vi öffnen
  5. In der [NETWORK] section die für Dein Netzwerk gültige ssid und den psk key eintragen (lässt sich am besten von einem anderen Speaker kopieren)
  6. Speichern
  7. Neu starten. Wenn der speaker wieder gebootet hat und Du das Kabel abziehst wechselt er auf WLAN.


Gruß, mystream

#
Ich habe es heute mal probiert.
Die RF Hardware verbindet sich bei mir über Wlan mit dem Router, aber die zweite LED blinkt dann.Die RF Hardware findet die VBase irgendwie nicht.
Gleiches habe ich auf der Vbase gemacht. Ich habe die Wlandaten angepasst. Wenn sich nun neue Hardware an der Base anmeldet, werden die richtigen Wlandaten dem Client gesendet. Auch hier das gleiche Problem.
Es funktioniert bei mir nur, wenn ich die Hostrolle von der RF Hardware auf die Vbase schiebe und die RF Hardware zusätzlich im Wlanmodus arbeitet. Dann ist keine weitere Anpassung nötig.
zimu
Ist häufiger hier
#219 erstellt: 04. Mrz 2014, 21:17
Hi in die Runde,

ich fang gerade ganz vorne an - und hoffe auf einen Hinweis aus diesem Thread:
Wie muss ein HTTP POST aussehen, damit ich einen Play-Befehl an einen Lautsprecher senden kann? Und in diesem Kontext: Wie komme ich an die XML-Description der Renderer ran - im Web finde ich nur Hinweise zu Sonos.

Habe Folgendes probiert:

HTTP POST an URL: (ip-adresse):48365/(uuid)/
mit CONTENT TYPE text/xml
und als Content ein Soap-Envelope (<s:Envelope...)

Im Header habe ich SOAPACTION "urn:schemas-upnp-org:service:AVTransport:1#Play"

Ich bekomme zwar eine Antwort, aber mit der kann ich nichts anfangen... ich frage vermutlich die falsche Seite ab. Aber wie heißt die richtige? Und wie müssen die sonstigen Steuerbefehle aussehen (z.B. für Radio-Stream-Wiedergabe, Pause, Stop, etc)?

Seht mir bitte nach, wenn das völlig daneben ist - aber ich rackere mich daran schon tagelang ab. Was muss da als URL rein?

zimu
thomas_raumfeld
Stammgast
#220 erstellt: 04. Mrz 2014, 22:17

zimu (Beitrag #219) schrieb:
HTTP POST an URL: (ip-adresse):48365/(uuid)/

Das ist nicht korrekt. 48365 ist der SetupWebservice, der wird beim Setup benutzt. Daneben gibt es noch den "normalen" WebService (Port 47365), beide verraten via "/index" was sie können.

Raumfeld 101:

Du willst erstmal die Liste der Geräte holen also z.B. http://192.168.49.10...3/listDevices
Dann die Zonenconfig: http://192.168.49.10...c863/getZones

Es gibt pro Gerät einen MediaRenderer, einen für das physikalische Gerät, einen für die Zone. Du solltest immer mit der Zone arbeiten. Die UDN der Zone findest Du in der Device-Liste wieder, dann weist Du mit welchem Device Du reden möchtest.

Abspielen kannst Du mit dem Kommando SetAVTransportURI auf dem AVTransportService. Wie Du ihn ansprichst, verrät Dir das root-devivce xml, dessen URL Du in der Device-Liste findest. Hier ein Ausschnitt:

<service>
<serviceType>urn:schemas-upnp-org:service:AVTransport:1</serviceType>
<serviceId>urn:upnp-org:serviceId:AVTransport</serviceId>
<SCPDURL>TransportService.xml</SCPDURL>
<controlURL>/TransportService/Control</controlURL>
<eventSubURL>/TransportService/Event</eventSubURL>
</service>

Ok, Du kannst den AVTransportService unter /TransportService/Control steuern und Dich auf Events unter /TransportService/Event subscriben (Was spielt gerade, welche Buttons sind erlaubt ect).

Die URL wäre dann also http://192.168.49.100:38113/TransportService/Control

Dort hin willst Du Deine Soap-Action senden. Die Header sehen dann so aus:

SOAPAction: urn:schemas-upnp-org:service:AVTransport:1#SetAVTransportURI
ContentType: text/xml; charset="utf-8"
Accept-Language: en

Im Body kommt dann die Soap-Message mit den Parametern

InstanceID: 0
CurrentURI: <dlna-playcontainer uri>
CurrentURIMetaData: <metadata>

Die playcontainer uri sieht dann z.B. so aus: dlna-playcontainer://uuid%3A8bd8c2f9-9ba2-4546-adc0-07b939c8584b?sid=urn%3Aupnp-org%3AserviceId%3AContentDirectory&cid=0%2FFavorites%2FRecentlyPlayed%2F2560&md=0

Wie sie genau aufgebaut ist, kannst Du in den Specs nachschlagen. Falls Du da nicht weiter kommst, frag nochmal nach.

Die Metadaten sind DIDL-Lite verpackt. Du musst vor dem Abspielen eines Items nochmal beim ContentDirectoryService einen Browse-Request absetzen um die Metadaten zu erfragen. Die sehen dann ungefähr so aus:

<DIDL-Lite xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dlna="urn:schemas-dlna-org:metadata-1-0/" xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/" xmlns:raumfeld="urn:schemas-raumfeld-com:meta-data/raumfeld">
<container restricted="1" parentID="0/Favorites/RecentlyPlayed" id="0/Favorites/RecentlyPlayed/2560">
<dc:date>2009</dc:date>
<upnp:album>She Wants Revenge</upnp:album>
<upnp:artist>She Wants Revenge</upnp:artist>
<upnp:class>object.container.album.musicAlbum</upnp:class>
<raumfeld:section>Simfy</raumfeld:section>
<upnp:albumArtURI>http://www.simfy.de/photos/albums/12348/320.jpg</upnp:albumArtURI>
<raumfeld:name>Album</raumfeld:name>
<dc:date>2009</dc:date>
<dc:title>She Wants Revenge</dc:title>
<raumfeld:durability>76952</raumfeld:durability>
</container>
</DIDL-Lite>

D.h. erst browse metadata (nicht direct children). Dann SetAVTransportURI. Dann spielt die Zone los. Mit den Kommandos "Pause", "Play", "Next" ect. kannst Du die Wiedergabe dann steuern.

Ja, das ist ganz schön kompliziert. Dankt Mircrosoft, die haben das Protokoll in die Welt gesetzt ;-) Fragen beantworte ich gerne.


[Beitrag von thomas_raumfeld am 04. Mrz 2014, 22:18 bearbeitet]
zimu
Ist häufiger hier
#221 erstellt: 05. Mrz 2014, 00:35
Wow, das nenne ich schnelle Hilfe - und gleich so ausführlich... danke!! Das muss ich jetzt einfach gleich ausnutzen und den "Drive" in Experimente umsetzen Habe inzwischen auch Zugriff auf die Device-Liste, die Zonen und die avtransport.xml - ein großer Fortschritt!

thomas_raumfeld (Beitrag #220) schrieb:

Es gibt pro Gerät einen MediaRenderer, einen für das physikalische Gerät, einen für die Zone. Du solltest immer mit der Zone arbeiten. Die UDN der Zone findest Du in der Device-Liste wieder, dann weist Du mit welchem Device Du reden möchtest.

Hm - verstehe ich nicht ganz. Es gibt also jeweils 2 Einträge, einmal das Gerät und einmal die Zone? Welcher ist welcher? Ich finde jeweils die Typen:
- urn:schemas-upnp-org:device:MediaRenderer:1
- urn:schemas-raumfeld-com:device:RaumfeldDevice:1
(dummerweise heißen Letztere bei mir alle "Raumfeld Device", also muss ich erst raussuchen, wer was ist). Ist jetzt der "MediaRenderer" oder das "RaumfeldDevice" die Zone?


thomas_raumfeld (Beitrag #220) schrieb:

Abspielen kannst Du mit dem Kommando SetAVTransportURI auf dem AVTransportService. Wie Du ihn ansprichst, verrät Dir das root-devivce xml, dessen URL Du in der Device-Liste findest. Hier ein Ausschnitt:
...

Ich denke mal, es gibt da Unterschiede in unseren Systemen... bei mir finde ich als <controlURL> /AVTransport/ctrl anstatt /TransportService/Control.


thomas_raumfeld (Beitrag #220) schrieb:

Die URL wäre dann also http://192.168.49.100:38113/TransportService/Control


...wobei jetzt der Port dem aus der listDevices-Übersicht entspricht, richtig? Komme noch etwas durcheinander, wie ich ServicePorts und WebService unterscheide.


thomas_raumfeld (Beitrag #220) schrieb:

Dort hin willst Du Deine Soap-Action senden. Die Header sehen dann so aus:

SOAPAction: urn:schemas-upnp-org:service:AVTransport:1#SetAVTransportURI
ContentType: text/xml; charset="utf-8"
Accept-Language: en

Im Body kommt dann die Soap-Message mit den Parametern

InstanceID: 0
CurrentURI: <dlna-playcontainer uri>
CurrentURIMetaData: <metadata>


Also in die Tiefen der dlna-playcontainer uri muss ich nochmal einsteigen. Für's erste würde ich gerne mal testen, ob ich ein simples Stop absetzen kann, um die aktuelle Wiedergabe anzuhalten. Meine SoapAction im Header wäre dann also

urn:schemas-upnp-org:service:AVTransport:1#Stop

und im Body muss ich dann im Soap-Envelope nur die Stop-Action und die InstanceID: 0 angeben? Kannst Du mir für diesen konkreten Fall beschreiben, wie der Body aussehen muss? Kann ich mir das <s:Envelope> mit xmlns und encoding-Angaben sparen und gleich mit <s:Body><u:Stop xmlns:u="urn:schemas-upnp-org:service:AVTransport:1"> und der InstanceID einsteigen?

Sorry, wenn ich jetzt mit so viel Getüddel komme - aber ich hoffe, wenn der Knoten erstmal geplatzt ist, kann ich in absehbarer Zeit auch mal was an die Community hier zurückgeben...

Zimu
zimu
Ist häufiger hier
#222 erstellt: 08. Mrz 2014, 17:41
So, bin jetzt einen Schritt weiter - ich kann die aktuelle Zonenwiedergabe per SOAP stoppen oder starten. Aber mit der Übersicht aus "listDevice" komme ich nicht ganz klar:

Ist es richtig, dass jede neu erstellte Zone einen neuen Port bekommt (mit IP des Hosts)? Dann muss ich ja mein Javascript, dass die SOAP-Messages für Start oder Pause ausgibt, immer wieder anpassen!?
Gibt es einen Weg, per SOAP einen Lautsprecher zum Spielen zu bewegen, ohne dass er vorher schon einer Zone zugeordnet wurde? Kann ich z.B. direkt das Device bzw. den MediaRenderer des Lautsprecher ansprechen, und nicht die Zone (die ja evtl. noch gar nicht existiert...)?

Danke...! Zimu


[Beitrag von zimu am 08. Mrz 2014, 20:08 bearbeitet]
stephanau
Neuling
#223 erstellt: 19. Mrz 2014, 13:44
Hi, ich bin gerade dabei, ein paar einfache scripte zu schreiben, um per FHEM die Musikwiedergabe starten und stoppen zu können. Hauptsächlich geht es mir darum, wenn ich heimkomme, die Musik einzuschalten. Ausschalten passiert bereits im Verbund über Trennung vom Strom.

Ich habe hoch interessiert deine Ausführungen gelesen, thomas. Dabei sind mir ein paar ungereimtheiten aufgefallen. Zuerst eine kurze Übersicht über mein System:

1x Connnector (den alten, Host, immer an, Buero)
1x Connector² (den neuen, der automatisch angeht, wenn man den Strom anschaltet, Wohnzimmer bei Stereoanlage)
1x Speaker S (Garage, bei Bedarf)

Zustand meines Systemes: Connector² stromlos, Buero und Garage vorhanden.Jetzt habe ich meinen Host abgefragt:
http://192.168.0.21:47365/getZones
Antwort: eine Zone xxx9b1 (richtig), zwei Räume (Garage und Buero)
http://192.168.0.21:47365/listDevices
Antwort: drei MediaRenderer ( und noch ein paar andere sachen)
- Connector Buero <- ist ein Device
- Speaker S Garage <- ist auch ein Device
- Buero, Wohnzimmer <- ist eine Zone (xxxc9b1), kann aber nicht sein, da die Zone ( laut App und meinem Gehör) aus Buero und Garage besteht, Wohnzimmer ist stromlos/nicht vorhanden

Wenn ich jetzt den Speaker Garage abfrage:
http://192.168.0.26:47365/listDevices
bekomme ich die korrekte Antwort
... - Buero, Garage, Wohnzimmer <- ist die Zone (xxxc9b1)

Warum liefern unterschiedliche Geräte des gleichen Systemes unterschiedliche Antworten? Müsste nicht der Host wissen, mit wem er alles redet? Was mache ich falsch?

Soweit erstmal, habe bestimmt noch mehr Fragen
Danke und lg
Stephan

PS: ich habe gerade die Signatur -gewerblicher Teilnehmer- gesehen und möchte hiermit dementieren, dass ich hier aus gewerblichen Gründen schreibe.. Ich habe nur die Frage, ob ich (neben)beruflich in der Audio/Videobranche tätig bin, wahrheitsgemäß beantwortet ...


[Beitrag von stephanau am 19. Mrz 2014, 13:48 bearbeitet]
quadrophoeniX
Inventar
#224 erstellt: 19. Mrz 2014, 14:56
Warte mit den Demento erst mal ab, bis Deine Implementierung fertig ist
DosiRocker
Stammgast
#225 erstellt: 21. Mrz 2014, 23:30
Hallo stephanau
es wäre toll, wenn du die Scripte mit uns teilst. Auf welchem System läuft dein FHEM?
Ein Traum geht in Erfüllung?
Wenn du einen Tester benötigst, sag Bescheid!
Gruss

Martin
zimu
Ist häufiger hier
#226 erstellt: 21. Mrz 2014, 23:38
Bin auch gerne als Tester dabei!
Baue mir gerade einen Workaround mit Javascript, aber klinke mich auch gerne in FHEM-Projekte ein. Läuft bei mir auf der FritzBox, was das Ganze natürlich nicht gerade einfacher macht. Für ein gutes Raumfeld-Modul würde ich aber evtl auch endlich mal das RaspPi-Projekt in Angriff nehmen...
thomas_raumfeld
Stammgast
#227 erstellt: 22. Mrz 2014, 00:22

zimu (Beitrag #221) schrieb:

thomas_raumfeld (Beitrag #220) schrieb:

Es gibt pro Gerät einen MediaRenderer, einen für das physikalische Gerät, einen für die Zone. Du solltest immer mit der Zone arbeiten. Die UDN der Zone findest Du in der Device-Liste wieder, dann weist Du mit welchem Device Du reden möchtest.

Hm - verstehe ich nicht ganz. Es gibt also jeweils 2 Einträge, einmal das Gerät und einmal die Zone? Welcher ist welcher? Ich finde jeweils die Typen:
- urn:schemas-upnp-org:device:MediaRenderer:1
- urn:schemas-raumfeld-com:device:RaumfeldDevice:1

Du musst die Ausgaben von listDevices und getZones zusammen betrachen:

Bei mir gibt es eine Zone mit der UDN "uuid:EB41B550-2EBB-4B6E-8EAC-EB2BB844FFEB" (arbytezimmer):

<zoneConfig numRooms="4">
<zones>
<zone udn="uuid:EB41B550-2EBB-4B6E-8EAC-EB2BB844FFEB">
<room name="arbyteszimmer" udn="uuid:1434ce8d-501c-471d-a360-c1939095a803">
<renderer udn="uuid:7a71d8f1-8714-4aa6-a14c-511df209b829" name="Connector arbyteszimmer"/>
</room>
</zone>

Dort ist ein Renderer drin (7a71d8f1-8714-4aa6-a14c-511df209b829). Die UDNs sind in der Device-Liste die gleichen:

<devices>
...
<device udn="uuid:7a71d8f1-8714-4aa6-a14c-511df209b829" type="urn:schemas-upnp-org:device:MediaRenderer:1" location="http://192.168.7.11:39511/7a71d8f1-8714-4aa6-a14c-511df209b829.xml">Connector arbyteszimmer</device>
...
<device udn="uuid:EB41B550-2EBB-4B6E-8EAC-EB2BB844FFEB" type="urn:schemas-upnp-org:device:MediaRenderer:1" location="http://192.168.7.11:49968/EB41B550-2EBB-4B6E-8EAC-EB2BB844FFEB.xml">arbyteszimmer</device>
...
</devices>

D.h. der zweite Renderer ist die Zone.


zimu (Beitrag #221) schrieb:
...wobei jetzt der Port dem aus der listDevices-Übersicht entspricht, richtig? Komme noch etwas durcheinander, wie ich ServicePorts und WebService unterscheide
....
Ist es richtig, dass jede neu erstellte Zone einen neuen Port bekommt (mit IP des Hosts)? Dann muss ich ja mein Javascript, dass die SOAP-Messages für Start oder Pause ausgibt, immer wieder anpassen!?

Bitte halte Dich nicht an den Port-Nummern fest, die sind dynamisch und werden bei jedem Start neu gesetzt. Die aktuell gültigen URLs stehen in der Zonen- und Device-Liste drin.

Korrekt ist es die device- und Zonenliste mit der Long-Poll Technik abzufragen und auf Änderungen entsprechend zu reagieren. Ich hatte long-poll schon mal hier erklärt: http://www.hifi-foru...d=420&postID=144#144


zimu (Beitrag #222) schrieb:

Gibt es einen Weg, per SOAP einen Lautsprecher zum Spielen zu bewegen, ohne dass er vorher schon einer Zone zugeordnet wurde? Kann ich z.B. direkt das Device bzw. den MediaRenderer des Lautsprecher ansprechen, und nicht die Zone (die ja evtl. noch gar nicht existiert...)?

Du kannst den Renderer direkt ansprechen, das sieht UPnP so vor. Aber eigentlich sollten die Geräte immer ein einer Zone sein.

@stephanau: Du solltest immer nur mit dem Host sprechen (listDevices, getZones). Das ist die einzige Instanz, die zählt.
zimu
Ist häufiger hier
#228 erstellt: 03. Apr 2014, 09:06
...also erstmal großes Danke an Thomas & Dirk, netter und vor allem einsichtsreicher Stammtisch gestern! Und besonderer Dank an Thomas, dessen Impuls mich heute morgen hat weiterskripten lassen.

Und an alle (die es interessiert ):

Habe nun den persönlichen Durchbruch geschafft - noch eine totale Frickellösung, aber die Basis für mehr. Wer diesen Roh-Stand brauchen kann, melde sich per PN (wenn ich mich nicht zeitnah melde, bin ich im Urlaub!!!). Das ist für einen Programmierkünstler totaler Kinderkram, aber für mich genau das, was ich gesucht habe.

Was habe ich nun hinbekommen?
Wenn ich meine Wohnung verlasse, schüttele ich mein Android und alle aktiven Raumfeld-Speaker gehen aus.
Morgens kann ich mich mit Radio wecken lassen (im Moment noch very, very beta - dazu muss Stand heute am Abend vorher dort schon Radio gelaufen sein).
Leicht zu ergänzen ist nun auch ein Sleep-Timer, oder Start von Musik sobald sich mein Android mit meinem WLAN verbindet, etc.

Dazu nötig:
Android Smartphone, kostenpflichtige App "Tasker", zwei einfache Javascripts.

Funktionsweise:
Tasker reagiert auf das Schütteln und holt sich über ein HTTP GET die aktuelle Zonenliste, extrahiert die UDN aller aktiven Zonen und sucht in der Deviceliste die dazugehörigen IP-Adressen. Dorthin sendet es dann per Javascript nacheinander SOAP-Pause-Kommandos.
Für den Wecker programmiere ich die Weckzeit in Tasker, und wenn die Zeit gekommen ist, sendet Tasker nach dem obigen Muster ein SOAP-Play-Kommando an die aktiven Zonen, die daraufhin natürlich das abspielen, was dort zuletzt gelaufen ist.

ToDo:
Als nächstes werde ich versuchen, die Zonensteuerung so hinzubekommen, dass sie sich einzeln an- und abschalten lassen, und in Schritt 2 unabhängig von der vorher gespielten Musik werden (also kein simples Fortsetzen der vorher pausierten Wiedergabe). Weiterhin muss ich noch an der Lautstärkesteuerung arbeiten.

Aber das dauert noch etwas. Sprach ich schon von Urlaub?
DosiRocker
Stammgast
#229 erstellt: 03. Apr 2014, 21:08
Von mir ebenso ein grosses Dankeschön für den netten Abend und das coole Ambiente. Fand ich jalustig, dass du deinen Code rausgeholt und mit Thomas gleich diskutiert hast. Und wenn dann auch ein kleiner Durchbruch daraus resultiert ist ja nochmal toller.
Ich habe grosses Interesse an den beiden Scripten. Mal sehen, ob ich irgendetwas davon verstehe und verwenden kann.

Schönen Urlaub,
Martin
mystream
Ist häufiger hier
#230 erstellt: 04. Jun 2014, 22:09
Die aktuelle FW 1.26.8 verwendet einen neuen Kernel. Die passende Version für die Virtualisierer liegt an der bekannten Stelle. Ich habe bei der Gelegenheit auch die emulation.tgz aktualisiert. Die enthält einen Work-Arround für das Problem, das die virtuelle Base bei einem Update hängen bleibt und manuell neu gestartet werden muss. Problem ist, das RF irgendwann von einem "Neustart" auf ein "kexec" umgestellt hat. Kexec lädt nach dem Update den neuen Kernel aus dem Update Image "warm" und dieser passt ja nicht zur virtuellen Base.

Gruß,

mystream
ChriD
Stammgast
#231 erstellt: 05. Jun 2014, 10:53
@mystream: Danke!
Haecksler
Ist häufiger hier
#232 erstellt: 05. Jun 2014, 11:12
Hallo zusammen,
gibt es eigentlich irgend welche Neuigkeiten bezüglich Einbindung in FHEM?
Müsste doch ähnlich gehen wie bei dem Sonos-Modul, dieses verwendet auch SOAP::Lite zur Kommunikation.

Prinzipiell würden auch ersteinmal die Funktionen START/STOP und eventuell LAUT/LEISE (MUTE) aussreichen.

Damit wären schon einige schöne Features möglich:
- Wecker
- Sleeptimer
- Mute bei Anruf oder Türklingel
- Automatisches ausschalten bei Abwesenheit
etc.

Der dadurch entstehende Mehrwert müsste doch ein großer Anreiz sein für jemand der das Know-How hat (leider habe ich es nicht).

Gruß,
Stefan
zieh-fix
Stammgast
#233 erstellt: 05. Jun 2014, 23:02
Haecksler
Ist häufiger hier
#234 erstellt: 06. Jun 2014, 08:26
Hallo zieh-fix wenn ich dich zitieren darf:


zieh-fix (Beitrag #32) schrieb:
Tja Martin,

Wir werden wohl leer ausgehen, eine art Raumbrücke auf Linux/ Raspberry zum laufen zu bekommen.
Und so mit rückt Raumfeld und Smart Home weit auseinander, ich frage mich warum Teufel nich auf den bereich Smart Home aufspringt ... KNX, fhem, Loxone usw.

Wirklich schade! :(


Gruß,
Stefan
thomas_raumfeld
Stammgast
#235 erstellt: 06. Jun 2014, 09:16

Haecksler (Beitrag #234) schrieb:

zieh-fix (Beitrag #32) schrieb:
Wir werden wohl leer ausgehen, eine art Raumbrücke auf Linux/ Raspberry zum laufen zu bekommen.
Und so mit rückt Raumfeld und Smart Home weit auseinander, ich frage mich warum Teufel nich auf den bereich Smart Home aufspringt ... KNX, fhem, Loxone usw. :?

Wir konzentrieren uns erstmal auf die Kernthemen und arbeiten lieber daran das System rund zu bekommen als an 10 neuen Features gleichzeitig. Natürlich ist HomeAutomation super interessant, aber der Markt ist sehr kleinteilig, es gibt viele Hersteller und viele Standards.

Raumfeld legt alle Schnittstellen offen, Projekte wie Raumwiese, Raumbrücke, RaumController, Raumote zeigen, dass es nicht schwer ist einen Control Point zu schreiben. Das Sonos-Modul für FHEM ist auch "nur" ein UPnP control point in Perl. Das kann man sich als Vorlage ja mal ansehen.

Raumbrücke ist für HomeAutomation auch ein guter Ansatz, das etwas komplexe UPnP Protokoll wird über einfachere HTTP-Requests gesteuert. So wie ich Christian verstanden habe, ist die Linux-Unterstützung nur eine Frage, die beiden 3rd Party Libs mitzuliefern:


ChriD schrieb:
Oh, ich hab ganz vergessen das man die nicht reinen .NET dll's ja als lib im Linux benötigt was da wären die OhNet und die SQLite. Das muss ich mir ansehen! Wahrscheinlich muss ich ein DLLMapping machen und die libs mitliefern. Muss hier aber erstmal ne Linux VM aufsetzen.

Vielleicht hat er eine Amazon-Wunschliste oder einen Flattr-Button, mit dem man ihn motivieren kann an der Linux-Unterstützung zu arbeiten
ChriD
Stammgast
#236 erstellt: 06. Jun 2014, 21:49
Nö hat er nicht

Leider sind meine Kentnisse im Linuxbereich bzw. im systemübergreifenden programmieren gleich 0. (Komme aus der schönen Windows .NET welt, da ist alles ziemlich einfach )

Ich hab zwar schon ein Projekt aufgesetzt mit welchen ich den Raumwiese/Raumbruecke Kernel in C++ neu schreiben möchte (und für die Raumbrücke wär das ja auch gar nicht so viel) aber ich komme einfach nicht dazu. Außerdem sind meine C++ Kentnisse auf den Stand vor .. naja .... 10 Jahren
Weiters muss man da natürlich auch Dinge beachten, dass man den Kernel dann auf z.B. Linux und Windows verwenden kann.
Das alles ist mir leider etwas fern.

Ich bin zumindest schon so weit das ich im C++ Kernel den Media Server finde. Aber bevor ich hier weitermache muss ich erstmal schaun ob das auf allen systemen läuft. Und das ist für mich doch schon einiges an arbeit da ich mir noch ne linux VM aufsetzten muss und dann versuchen muss ob ich dort dann das teil kompileren kann. Ich hab in Linux noch nie C++ code kompiliert.... Naja... das ist für mich halt viel herumprobiererei ohne wirkliche Resultate

Das alles kurz zusammengefasst. Ich hab die Idee der Raumbrücke nicht aufgegeben. Es mangelt einfach am wertvollsten... der Zeit... und die kann man auf keine Amazon Wunschliste schreiben
(Wenn ein erfahrener c++ multiplatform developer das machen würde hätte der wohl so ne raumbrücke in 40h fertig)


[Beitrag von ChriD am 06. Jun 2014, 21:50 bearbeitet]
DosiRocker
Stammgast
#237 erstellt: 07. Jun 2014, 09:22

thomas_raumfeld (Beitrag #235) schrieb:

Raumbrücke ist für HomeAutomation auch ein guter Ansatz, das etwas komplexe UPnP Protokoll wird über einfachere HTTP-Requests gesteuert. So wie ich Christian verstanden habe, ist die Linux-Unterstützung nur eine Frage, die beiden 3rd Party Libs mitzuliefern:
.....
Vielleicht hat er eine Amazon-Wunschliste oder einen Flattr-Button, mit dem man ihn motivieren kann an der Linux-Unterstützung zu arbeiten :)


Raumbrücke finde ich als Ansatz auch recht attraktiv und bin immer wieder am überlegen, aus diesem Grund mein FHEM auf einen Windows Server zu verlegen, aber das wäre dann etwas overkill, und macht nur Sinn wenn darauf noch mehr läuft (z.B. NAS)


ChriD (Beitrag #236) schrieb:

...
Ich hab die Idee der Raumbrücke nicht aufgegeben.
..

Das freut mich

Ich bin sofort bereit hier auch finaziell zu unterstützen, könnte auch die Hardware in Form eines Co1 übergangsweise zur Verfügung stellen, wenn sich jemand außerhalb der Raumfeld Gemeinde findet um Chris zu supporten

Gruß,
Martin

@Zimu: gibt es von dir etwas Neues?
thomas_raumfeld
Stammgast
#238 erstellt: 26. Jun 2014, 15:56
Gerade drüber gestolpert: eine Python-Library um Raumfeld zu steuern: https://github.com/tfeldmann/python-raumfeld (nicht von uns, nicht getestet, aber sicher ein guter Start um selbst etwas interessantes zu scripten...)
DosiRocker
Stammgast
#239 erstellt: 27. Jun 2014, 07:46

thomas_raumfeld (Beitrag #238) schrieb:
Gerade drüber gestolpert: eine Python-Library um Raumfeld zu steuern: https://github.com/tfeldmann/python-raumfeld (nicht von uns, nicht getestet, aber sicher ein guter Start um selbst etwas interessantes zu scripten...)

Das werde ich mir mal ansehen! Mal sehen, ob ich mir dafür die Zeit nehme. Zuerst muss ich die Audioausgabe am Cubietruck hin bekommen :-(
Danke für die Info
Martin
tfeldmann
Neuling
#240 erstellt: 27. Jun 2014, 23:21
Hallo zusammen,

ich habe diesen Thread gefunden, weil auf meine Library verlinkt wurde.
(python-raumfeld)

Bisher wird nur Volume, Mute, Play und Pause unterstützt. Das war alles, was ich für diese Minimalsteuerung brauchte:
Raumfeld-Desktop

Ich besitze leider nur einen Raumfeld One, daher konnte ich den Code nur damit testen. Ich wäre froh über Rückmeldungen, ob die Software auch mit anderen Raumfeld-Geräten / Betriebssystemen funktioniert!

Viele Grüße
Thomas
DosiRocker
Stammgast
#241 erstellt: 01. Jul 2014, 07:22
Hallo Thomas,
vielen Dank für deine Library.
ich habe gestern versucht es zu installieren, scheitere aber leider - als Dummie - an der Installation des Raumfeld-Desktops. Leider fehlen mir zuviele
Linux Grundlagen.

Basis:
Cubietruck mit Cubian

Ziel:
Deine Library nutzen um von meinem Perl Homeautomaion Server FHEM Raumfeld zu steuern (Laut/leiser, Start/Stop und falls du es implementierst start eines Radiostreams)

Was habe ich gemacht:
Pip installieren
sudo apt-get install python-pip

Library installieren
pip install raumfeld

Es wird installiert und unter /home/build/Raumfeld befindet sich die Library

Leider funktioniert die Installation aber nicht für den Raumfeld-Desktop:
Was muß ich für Pip3 installieren und wie installiere ich PySide?

Vielleicht hast du ja Lust mir zu helfen, damit ich deine Library nutzen kann

Dankeschön,
Martin
tfeldmann
Neuling
#242 erstellt: 01. Jul 2014, 13:02

DosiRocker (Beitrag #241) schrieb:

Was muß ich für Pip3 installieren und wie installiere ich PySide?


Hier die Installationsanweisungen für Python3, die Raumfeld-Desktop Software sollte aber auch unter Python2 funktionieren.
PySide kannst du am besten über deinen Paketmanager installieren.

PySide und Raumfeld library installieren

sudo apt-get install python3
sudo apt-get install python3-pip
sudo apt-get install python3-pyside
sudo apt-get install pyside-tools

sudo pip3 install -U raumfeld


Applikation vorbereiten und starten

python3 Raumfeld-Desktop/build.py
python3 Raumfeld-Desktop/main.py


Grüße
Thomas
DosiRocker
Stammgast
#243 erstellt: 01. Jul 2014, 21:38
Hallo Thomas,
danke für dein Feedback.
Anscheinend habe ich gestern zuviel mit Cubian rum experimentiert
Ich muß mit folgenden Befehl raumfeld installieren:
sudo pip-3.2 install -U raumfeld
Ansonsten scheinen alle Installationsbefehle funktioniert zu haben, aber beim Befehl (sowohl auf Cubian als auch auf einen Ubuntu Rechner):

$ python3 Raumfeld-Desktop/build.py
kommt diese Fehlermeldung:

python3: can't open file 'Raumfeld-Desktop/build.py': [Errno 2] No such file or directory

Irgendwie scheint Raumfeld-Desktop doch nicht installiert worden zu sein?!?!

Ich mach morgen weiter.

Martin
tfeldmann
Neuling
#244 erstellt: 02. Jul 2014, 11:37
Hallo Martin,

hast du ein Display an deinem Cubietruck angeschlossen?

Falls nicht:
Raumfeld-Desktop ist ein GUI-Programm, dann würde für dich also schon die library (python-raumfeld) ausreichen.
Wie du die benutzt, steht hier: Repository

Zu deinem Fehler: Die Befehle klappen nur, wenn du den Quelltext in einen Ordner namens "Raumfeld-Desktop" heruntergeladen hast.

sudo apt-get install git
git clone https://github.com/tfeldmann/Raumfeld-Desktop.git Raumfeld-Desktop
python3 Raumfeld-Desktop/build.py
python3 Raumfeld-Desktop/main.py


Thomas
DosiRocker
Stammgast
#245 erstellt: 03. Jul 2014, 07:22
Hallo Thomas,

merke einfach, dass ich mich immer noch zu wenig mit Linux auskenne. Ist ein sehr steiniger Weg, wenn man nur wenig Zeit hat.
ich denke, ich muß dich bestimmt noch etliche Male um Hilfe bitten.
Wirst du deine Library eigentlich ausbauen und erweitern?

Weiter geht es am WE

Dankeschön,
Martin

P.S. Am cubie habe ich kein Display, deshalb werde ich es erstmal auf dem Linux Notebook ausprobieren und wenn ich es verstehe/kapiere auf den Cubie transferieren


[Beitrag von DosiRocker am 03. Jul 2014, 07:24 bearbeitet]
thomas_raumfeld
Stammgast
#246 erstellt: 02. Sep 2014, 17:13
FYI: Raumfeld wird beim diesjährigen Music Hack Day in Berlin vom 5. - 6.September vertreten sein. Es gibt einen Raumfeld-API Workshop (Freitag 15:45, Workshop Room A, 1st Floor) und es gibt Raumfeld-Hardware zu gewinnen.


[Beitrag von thomas_raumfeld am 02. Sep 2014, 17:13 bearbeitet]
tfeldmann
Neuling
#247 erstellt: 08. Sep 2014, 17:01
Da wäre ich gern dabei gewesen! Leider war Berlin dann doch zu weit weg
Könnt ihr die Workshop-Unterlagen hier veröffentlichen?
thomas_raumfeld
Stammgast
#248 erstellt: 09. Sep 2014, 09:57
Das war eher ad-hoc und live, es gibt daher keine Folien. Fragen zur Entwicklung von 3rd-Party Software beantworten wir hier aber gerne
zieh-fix
Stammgast
#249 erstellt: 09. Nov 2014, 16:15
Hallo Thomas,

gab es den bei den Music Hack Day in Berlin gute ideen und ggf. auch schon ergebnisse im bezug Raufeld und Hausautomation?

Gruß Jürgen
audio_file
Ist häufiger hier
#250 erstellt: 28. Nov 2014, 16:37
Hey,

das repository von tfeldmann ist wirklich super! Vielen Dank für die Arbeit!

Mit einer minimalen Anpassung des Beispiels von der Startseite lässt sich sehr einfach die Weckfunktion implementieren. Habe das Ganze auf Ubuntu gemacht und auf dem Raspberry PI läuft es auch ohne Probleme (da ist momentan musicbox installiert, was glaube ich eine modifizierte Version von raspbian ist, oder so), OSX sollte ähnlich gehen, Windows und Python gehen in der Theorie auch, aber ist wesentlich fummeliger, finde ich.

In der Konsole ausführen:

pip install raumfeld


Datei mit folgenddem Inhalt erstellen, diese sollte auf py enden; z.B. rf_play.py
import raumfeld

devices = raumfeld.discover()
if len(devices) > 0:
    speaker = devices[0]
    speaker.mute = False     # unmute
    speaker.volume = 60     # set volume
    #speaker.pause()
    speaker.play()
else:
    print('No devices found.')

http://pastebin.com/fPikiFr6


Und mit

python2.7 rf_play.py

kann das Ganze ausgeführt werden.

Mit

crontab -e

lässt sich dann ganz einfach ein cronjob erstellen, der die Wiedergabe von Raumfeld zur gewünschten Zeit startet. Leider weiss ich nicht ob bzw. wie das Starten bestimmter Tracks oder Streams mit python-raumfeld funktioniert. Daher muss ein Stream pausiert sein bzw. etwas in der Playlist sein, damit dies funktioniert.

Als Proof of concept habe ich auch mal einen kleinen Web Server mit python-bottle erstellt, über den sich bisher nur play und pause steuern lassen. Um bottle zu nutzen muss es installiert werden:

pip install bottle


Der Webserver ist 30 Zeilen lang. Die Datei, sieht wie folgt aus:
http://pastebin.com/KYL0rybX

Über die URLs musicbox.local:8080/play und musicbox.local:8080/pause ist denke ich dann auch die Einbindung in verschiedene Formen der Home Automation möglich. Bei mir startet Raumfeld nun, wenn ich mit meinem Smartphone ins heimische WLAN komme (realisiert mit der Tasker App).

Ich würde nun noch sehr gerne in der Lage sein, einzelne Tracks/ Streams direkt anzuwählen. Um die Weckfunktionalität sicherer zu machen würde es sogar schon ausreichen, wenn es möglich wäre aus "Zuletzt Gespielt" oder "Favoriten" ein Objekt auszuwählen.

UPDATE: Mit einer kleinen Anpassung an raumfeld-python kann ich jetzt auch Tracks/ Streams auswählen. Habe meiner lokalen __init__.py (liegt bei Ubuntu in /usr/lib/python2.7/dist-packages/raumfeld/) in Zeile 101, unter def play(self) usw. folgendes eingefügt.

    def play(self, value):
        self.av_transport.SetAVTransportURI(InstanceID=1, CurrentURI=value, CurrentURIMetaData="")


Damit kann jetzt einfach speaker.play("Hier CurrentURI Einfügen") verwendet werden.

Die CurrentURI von laufenden Streams lässt sich mit gupnp-unicersal-cp von den gupnp-tools auslesen, das hat Thomas_Raumfeld h hier mal beschrieben. Werde die obigen Skripte für den Wecker und den Webserver jetzt noch so anpassen, dass die CurrentURI übergeben werden kann.

@tfeldmann: könntest Du Dir vorstellen, die Änderung in die lib zu übernehmen? Wenn ich das richtig verstehe ließen sich auf die Weise ja auch sämtliche andere Transport Funktionen recht leicht einbauen.

UPDATE 29.11.: Der Code in diesem Post ist nicht mehr aktuell, bitte mein Post weiter unten berücksichtigen!


[Beitrag von audio_file am 29. Nov 2014, 19:52 bearbeitet]
DosiRocker
Stammgast
#251 erstellt: 29. Nov 2014, 10:03
Hallo audio_file,
das sieht ja richtig gut aus und du hast ja auch schon an die Hausautomatisierungsfraktion gedacht
Wenn ich den Code richtig interpretiere, wird der erste Raumfeld Speaker, der gefunden wird zur Wiedergabe verwendet. Kann man da eine UUID oder Raum-, bzw. Renderernamen übergeben, damit ein bestimmter Speaker abspielt.
Bleibt die UUID eigentlich immer gleich?

Ich hoffe Thomas baut dies mit ein
Vielen Dank
Martin
Suche:
Gehe zu Seite: |vorherige| Erste 2 3 4 5 6 7 8 9 Letzte |nächste|
Das könnte Dich auch interessieren:
Raumfeld - 3rd-Party Applikation - Raumwiese
ChriD am 03.04.2013  –  Letzte Antwort am 20.01.2021  –  303 Beiträge
Raumfeld - 3rd-Party Applikation - Raumbruecke
ChriD am 10.10.2013  –  Letzte Antwort am 09.02.2015  –  37 Beiträge
Raumfeld - 3rd-Party Applikation - RAUMServer
ChriD am 09.02.2015  –  Letzte Antwort am 03.01.2021  –  422 Beiträge
Raumfeld - 3rd-Party Applikation - PyRaumfeld Python Library
maierp am 28.02.2015  –  Letzte Antwort am 14.06.2015  –  3 Beiträge
Raumfeld - 3rd-Party Applikation - node-red-contrib-raumfeld
Alex9779 am 07.02.2018  –  Letzte Antwort am 02.12.2018  –  4 Beiträge
Raumfeld für mehrere User
Johannes_Mxx am 25.06.2014  –  Letzte Antwort am 25.06.2014  –  7 Beiträge
Raumfeld Connector vs. Raumfeld Connector²
Mogalle am 02.06.2017  –  Letzte Antwort am 06.06.2017  –  5 Beiträge
Raumfeld-Boxen im W-Lan betreiben
Blauesocke am 20.07.2012  –  Letzte Antwort am 12.08.2012  –  5 Beiträge
Raumfeld Mac App: Raumbar (Open Source Projekt)
ulilicht2 am 22.01.2021  –  Letzte Antwort am 13.08.2022  –  6 Beiträge
Wer hat Raumfeld Speaker L Boxen?
wentom1 am 20.05.2012  –  Letzte Antwort am 09.02.2016  –  65 Beiträge

Anzeige

Aktuelle Aktion

Partner Widget schließen

  • beyerdynamic Logo
  • DALI Logo
  • SAMSUNG Logo
  • TCL Logo

Forumsstatistik Widget schließen

  • Registrierte Mitglieder925.913 ( Heute: 1 )
  • Neuestes MitgliedKlagstein
  • Gesamtzahl an Themen1.551.580
  • Gesamtzahl an Beiträgen21.550.237

Hersteller in diesem Thread Widget schließen