Hallo, wer hier hilft, hilft vielen.
Ich schreibe gerade die neue Doku für playstream.
In den Beispielen wie
<div data-type="playstream" data-url="http://radioeins.de/stream"></div>
ist die URL stets fest verdrahtet. Elegant wäre es natürlich, die URL aus einem Reading einlesen zu können. Dann ließen sich z.B. Auswahlmenüs leicht integrieren. Bei Image geht das (mit data-get) sinngemäß ja auch.
Ich habe ehrlich gesucht, aber in der Doku und im Forum nichts Greifbares gefunden.
Die Frage lautet also: Wie lese ich die URL bei playstream ein?
Hast du mal probiert, die URL einfach in einen dummy einzutragen und diesen dann einfach hier anzugeben?
ZitatHast du mal probiert, die URL einfach in einen dummy einzutragen und diesen dann einfach hier anzugeben?
Klappt leider nicht. Der Name des Dummys wird dann offenbar als url aufgefasst, welche natürlich nicht existiert. Die Mattscheibe bleibt dann matt.
Bei Image gibt es zwei Atrribute:
data-url --> Direkte Eingabe
data-get --> Reading mit der url
Bei Playstream ist data-get aber schon belegt; damit wird ein/aus gesteuert.
Benötigt wird so etwas wie data-url-get
Habe ich alles ausprobiert, bislang ohne Erfolg.
Gibt es vielleicht einen Umweg über Perl?
Am besten fände ich aber data-url-get
Da müsste wohl jemand das Widget umschreiben, wenn ich mir den Code ansehe würde ich sagen das ist derzeit nicht vorgesehen.
habe ich gemacht. data-url kann jetzt alternativ auch ein Reading sein, um die URL per FHEM zu ändern
so jetzt kann ich noch 2h Schlaf tanken :-)
Zitatso jetzt kann ich noch 2h Schlaf tanken :-)
Äh, unter der Annahme, dass Du sonst keine Pausen machst, kann man aus den "Erledigt"-Vermerken und den Zeitstempeln der Postings Rückschlüsse auf die erbrachte Leistung ziehen. Damit ist dieses Forum ein System, das zur Leistungsüberwachung eingesetzt werden kann, und das ist mitbestimmungspflichtig. Was sagt denn der Betriebsrat dazu? ;D
Zitathabe ich gemacht. data-url kann jetzt alternativ auch ein Reading sein, um die URL per FHEM zu ändern
Super. Was aber, wenn jemand sowohl die URL ziehen als auch eine Fernsteuerung ein/aus realisieren möchte? Wäre es da nicht besser, getrennte Attribute zu definieren? Bei anständiger Doku ;D ;D ;D ;D sollten alle damit klarkommen.
So, und jetzt gehe ich auf ein Strategiemeeting und ruhe mich aus. ;D Heute Abend nehme ich die Arbeit wieder auf.
Eigenes Attribute - darüber hatte i h auch schon nachgedacht. Aber in welchem Fall braucht man beides?
Beides kann ja eh nicht funktionieren. Genaugenommen sind getrennte Attribute doch eine zusätzliche Fehlerquelle, weil man dann beide setzen kann, aber eines Vorrang haben muß. Und dann wundert man sich hinterher.
Zitat von: setstate am 13 Februar 2017, 03:42:13
habe ich gemacht. data-url kann jetzt alternativ auch ein Reading sein, um die URL per FHEM zu ändern
Und wie müsste das dann konkret aussehen? Bei mir tut sich da nämlich irgendwie nichts.
Hab einen Dummy
define dDummy dummy
set dDummy http://radioeins.de/stream
Und in FTUI sieht das so aus
<div data-type="playstream"
data-url="dDummy">
Über den STATE ("on/"off") des Dummys mache ich start/stop
data-device="dDummy" data-url="url"
Und dann mit "setreading dDummy url http://xxx"
Danke!
Bin immer wieder über mein FHEM-Unwissen schockiert...
o.k. Vorweg: Ich habe mich nur damit beschäftigt, um die Doku für Playstream aufzuhübschen. Zu Hause gibt es die nachfolgenden Spielchen nicht...
Aber so ganz weltfremd ist doch nicht: Es kommt jemand zur Tür herein; er wird irgendwie identifiziert; der Lieblingssender wird eingestellt; das Webradio geht an.
Dann braucht man eine Ansteuerung von ein/aus und der URL des Webradios. Nach der Anleitung von setstate habe ich folgende Testumgebung eingerichtet:
defmod Radiosender dummy
setstate Radiosender link 1
<div data-type="playstream" data-url="Radiosender:link" class=""></div>
<div data-type="switch" data-device="Radiosender" data-icon="fa-bell"></div>
<div data-type="label" class="cell inline">Sender</div>
<div data-type="select"
data-device="Radiosender"
data-list=""
data-items='["http://1live.akacast.akamaistream.net/7/706/119434/v1/gnl.akacast.akamaistream.net/1live","http://br-mp3-b5aktuell-s.akacast.akamaistream.net/7/773/142694/v1/gnl.akacast.akamaistream.net/br_mp3_b5aktuell_s"]'
data-alias='["1live","B5 Aktuell"]'
data-get="link"
data-set="link"
data-cmd="setreading">
</div>
<div data-type="label" data-get="Radiosender:STATE" class="top-space"></div>
<div data-type="label" data-get="Radiosender:link" class=""></div>
Man kann mit "select" einen Sender auswählen, und der wird auch korrekt in das reading "link" geschrieben.
Frage 1: Warum ist data-cmd="setreading" hier erforderlich? Nach der Doku "select" sollte es doch reichen, wenn data-device und data-set definiert sind.
Mit obiger Konstellation kann man direkt über playstream das Webradio starten. Mit der "Fernsteuerung" über den "switch" geht das nicht.
Frage 2: Der Switch schaltet, das kann man in FHEM sehen, den STATE korrekt ein/aus. "playstream" reagiert darauf aber nicht. Warum?
Super Test-Setup, aber nur fast richtig
so geht es:
<div data-type="playstream" data-device="Radiosender" data-url="link" class=""></div>
das ist die Kurzform von
<div data-type="playstream" data-get="Radiosender:STATE" data-url="Radiosender:link" class=""></div>
weil, der default ist data-get="STATE" + das Device unter data-device
Die vollständige Lösung ist jetzt im Wiki dokumentiert: https://wiki.fhem.de/wiki/FTUI_Beispiel_Webradio (https://wiki.fhem.de/wiki/FTUI_Beispiel_Webradio)
Vielen Dank an Setstate für die Erweiterung des Widgets. Damit sind die Anwendungsmöglichkeiten erheblich gesteigert worden.
Ich habe das nun mal versucht nachzubauen.
Funktionieren tut das einfache Beispiel:
<div data-type="playstream" data-url="http://1live.akacast.akamaistream.net/7/706/119434/v1/gnl.akacast.akamaistream.net/1live" data-volume="Radio_volume:Volume"></div>
<div data-type="label" class="cell">Radio eins</div>
Das aus dem Wiki nicht. In FHEM werden Sender und Lautstärke laut reading verändert. Sound höre ich nicht:
FHEM:
defmod Radiosender dummy
setstate Radiosender on
setstate Radiosender link http://radioeins.de/stream
attr Radiosender room Badezimmer_OG
defmod Radio_volume dummy
setstate Radio_volume Volume 50
attr Radio_volume room Badezimmer_OG
Tablet UI:
<div data-type="playstream"
data-get="Radiosender:STATE"
data-url="Radiosender:link"
data-volume="Radio_volume:Volume"
class="hide">
</div>
<div data-type="switch"
data-device="Radiosender"
data-icon="mi-radio"
class="cell inline">
</div>
<!-- mi-Icons im Header aktivieren: <link rel="stylesheet" href="lib/material-icons.min.css" /> -->
<div class="cell inline"
data-type="select"
data-device="Radiosender"
data-list=""
data-items='["http://radioeins.de/stream","http://1live.akacast.akamaistream.net/7/706/119434/v1/gnl.akacast.akamaistream.net/1live","http://br-mp3-b5aktuell-s.akacast.akamaistream.net/7/773/142694/v1/gnl.akacast.akamaistream.net/br_mp3_b5aktuell_s"]'
data-alias='["Radio eins","einsLife","B5aktuell"]'
data-get="link"
data-set="link"
data-cmd="setreading">
</div>
<div data-type="spinner"
data-device="Radio_volume"
data-get="Volume"
data-set="Volume"
data-max="100"
data-step="5"
data-icon-left="fa-volume-down"
data-icon-right="fa-volume-up"
class="spinner value horizontal centered">
</div>
Habe ich noch einen Denkfehler?
EDIT: Wenn ich im unteren Code statt
data-url="Radiosender:link"
die URL eines Senders direkt eintrage, spielt das Ding direkt los. Eine Lautstärkesteuerung klappt nicht.
Freue mich über Hilfe.
Funktioniert so wie es im Wiki steht nicht ....
Es wird nichts abgespielt bzw. keine Lautstärke.
ok, nach Update von Tablet UI kann ich schon mal Radio hören.
Lautstärke geht nicht ...
Hatte vor den Update schon 2.6.2
Nach den Updat immer noch 2.6.2
Hm. Es nützt jetzt nichts, wenn ich sage, dass es bei mir ging, denn es ist unmöglich, eine 100%ig übereinstimmende Systemumgebung herzustellen.
Zunächst einmal würde es helfen, wenn andere Anwender, die ebenfalls nur die Doku angewandt haben, über ihre Ergebnisse mit dem Webradio berichten.
Ansonsten empfehle ich, ähnlich wie in meinem für Setstate erstellten Test-Setup, die readings über label anzuzeigen, um auf diese Weise Fehlermöglichkeiten einzugrenzen.
Hallo zusammen,
ich habe das gleiche Problem.
<tr>
<td>
<div data-type="playstream"
data-url="Radiosender:link"
data-get="Radiosender:STATE"
data-volume="70"
class="">
</div>
</td>
</tr>
<tr>
<div data-type="label"
data-get="Radiosender:STATE"
class="top-space">
</div>
<div data-type="label"
data-get="Radiosender:link"
class="">
</div>
<div data-type="label"
data-get="Radio_volume:volume"
class="">
</div>
</tr>
<tr>
<div data-type="select"
data-device="Radiosender"
data-list="" data-items='["http://radioeins.de/stream","http://1live.akacast.akamaistream.net/7/706/119434/v1/gnl.akacast.akamaistream.net/1live","http://br-mp3-b5aktuell-s.akacast.akamaistream.net/7/773/142694/v1/gnl.akacast.akamaistream.net/br_mp3_b5aktuell_s","http://dradio_mp3_dwissen_m.akacast.akamaistream.net/7/728/142684/v1/gnl.akacast.akamaistream.net/dradio_mp3_dwissen_m","http://dradio_mp3_dlf_s.akacast.akamaistream.net/7/251/142684/v1/gnl.akacast.akamaistream.net/dradio_mp3_dlf_s"]'
data-alias='["Radio eins","einsLife","B5aktuell","DRadio Wissen","DLF"]'
data-get="link"
data-set="link"
data-cmd="setreading"
class="">
</div>
</tr>
<tr>
<div data-type="spinner"
data-device="Radio_volume"
data-get="volume"
data-set="volume"
data-max="100"
data-step="5"
data-icon-left="fa-volume-down"
data-icon-right="fa-volume-up"
class="spinner value horizontal centered">
</div>
</tr>
.... keine Ausgabe....
Wenn ich mir die Readings ausgebe passt link und state. Im Radio_volume:volume ist aber z.B. der Wert "volume 30" und nicht "30" eingetragen.
Beim Erstaufruf der Webseite erscheint ein gelbes Pausenzeichen im playstream. Wenn ich den Button betätige wird ein graues Play daraus. Und jedesmal wenn ich diesen Button betätige wechselt er kurz in ein gelbes Pausenzeichen um anschließend wieder in ein graues Pausenzeichen zurückzufallen.
Bei direkt eingegebenen stream-link kommt aber der Ton.
Bin auch am Ende mit meinem Latein....
Gruß
Oliver