SB-Player: Zeigt her eure Oberflächen!

Begonnen von FHEm2005, 05 Dezember 2015, 13:04:03

Vorheriges Thema - Nächstes Thema

kvo1

Zitat von: Hyperbit am 12 Januar 2016, 19:41:36
wie bekomme ich es eigentlich hin das ich über das Dropdown feld in dieser tollen oberfläche einen radiosender wählen kann,
was muss ich in FHEM oder dem Squeeze Server dazu einstellen?
Du mußt im LMS die Radiosender als Favoriten anlegen , Das Dropdown ist ein userReadings welches aus dem internals "FAVSTR" erstellt wurden.
RPi1: mit CUL: HM-CC-RT-DN,HM-ES-PMSw1-Pl,HM-LC-BL1-FM,HM-LC-Bl1PBU-FM,HM-LC-SW1-PL2,HM-SCI-3-FM,HM-SEC-SC-2,KFM-Sensor
RPi2: Viessmann(optolink) mit 99_VCONTROL.pm,
Cubietruck: Wheezy / Apache / Owncloud
Cubietruck: Armbian(Jessie) / fhem 5.7 / LMS 7.9
RPi3: (Test) mit 7" Touch  &  HM-MOD-RPI-PCB

Hyperbit

#31
mein Userreading schaut so aus "FAVSTR_FTUI AntenneMV"
der FAVSTR "AntenneMV,N-JOY,1046RTL"
in der Übersichtsseite kann ich zwischen 3 Favoriten  umschalten ,

jedoch im FTUI sehe ich nur Antenne MV irgendwie ist da der wurm drinne

kvo1

ich habe wie gesagt im LMS 3 Radiosender als Favoriten angelegt !

Internals
FAVSTR                 rs2_relax,1046_RTL_Berlins_Hit-Radio__Hot_AC,ENERGY_Berlin_1034_Top_40Pop

Readings
FAVSTR_FTUI         rs2_relax:1046_RTL_Berlins_Hit-Radio__Hot_AC:ENERGY_Berlin_1034_Top_40Pop

Der Unterschied ist also Kommen und Doppelpunkt , genau diese Wandlung macht das angelegte userreadings

FTUI
###
<div data-type="select"
            data-device="squeezeKueche"
            data-list="FAVSTR_FTUI"
            data-get="playlists"
            data-set="favorites"
            data-cmd="set"
            data-alias='["rs2_relax","ENERGY Berlin","104.6 RTL Berlin"]'
            style="width:222px;
            position: absolute;
            top: 14px;
            left: 56px;
            font-size: 15px;
            font-weight:bold;
                  color:grey;">
         </div>


RPi1: mit CUL: HM-CC-RT-DN,HM-ES-PMSw1-Pl,HM-LC-BL1-FM,HM-LC-Bl1PBU-FM,HM-LC-SW1-PL2,HM-SCI-3-FM,HM-SEC-SC-2,KFM-Sensor
RPi2: Viessmann(optolink) mit 99_VCONTROL.pm,
Cubietruck: Wheezy / Apache / Owncloud
Cubietruck: Armbian(Jessie) / fhem 5.7 / LMS 7.9
RPi3: (Test) mit 7" Touch  &  HM-MOD-RPI-PCB

FHEm2005

#33
Hallo Hyperbit,

Zitat von: kvo1 am 12 Januar 2016, 21:47:06
Der Unterschied ist also Kommen und Doppelpunkt , genau diese Wandlung macht das angelegte userreadings

attr <my player> userReadings FAVSTR_FTUI {my $t=InternalVal($name,'FAVSTR','');$t=~s/,/:/g;return($t)},

Dieses Userreading darf bei Dir nicht fehlen. Da werden aus den Kommata die Doppelpunkte erzeugt.

Der Reihe nach: Legst Du im Player Radiostationen in den Favoriten ab, werden sie automatisch in dem Internal FAVSTR abgelegt und angezeigt. Diese Einträge sind aber Komma getrennt. Durch das Userreading FAVSTR_FTUI werden die Kommata duch Doppelpunkte ersetzt und im Reading FAVSTR_FTUI mit Doppelpunkt als Trennner abgelegt. Danach können sie wie kvo1 beschrieben hat in dem select-widget verwendet werden. Fazit: Kein Doppelpunkt - Keine Dropdownliste.

Gruß
Eberhard
Raspi3: FHEM, CULV3 (V1.61), EnOcean Pi 868, nanoCUL433, HUE-Bridge; Raspi4: Node-red, MQTT, Gaszähler auslesen mit ESP32-CAM

l2r

hallo Eberhard,

ich bin auch gerade dabei deine Oberfläche für meine beiden SB-Player zu übernehmen.

Soweit klappt auch alles wie es soll, ich hab nur ein Problem:

Bei den beiden Select-Widgets ist ein Rahmen um die Widgets, den ich nicht weg bekommen... Kannst du mir vllt. einen Schubs in die Richtige richtung geben?

Gruß Michael
Wissen ist Macht.
Ich weiß nix.
Macht nix.

Hyperbit

Gibt es eine Möglichkeit zwischen 2 oder mehr Playern umzuschalten ohne ein zweites interface zu implementieren?

FHEm2005

Nabend,
@l2r
Ich wette mit Dir, Du hast in den Styles im Kopf die von mir veränderten Style-Eigenschaften nicht eingetragen. Oder doch?

@Hyperbit
Ich habe im Büro auch zwei SB'n und leider auch zwei FTUI-Interfaces. Deinen Wunsch umzusetzten, das wäre eine Numer zu groß für mich.

Gruß
Eberhard
Raspi3: FHEM, CULV3 (V1.61), EnOcean Pi 868, nanoCUL433, HUE-Bridge; Raspi4: Node-red, MQTT, Gaszähler auslesen mit ESP32-CAM

l2r

#37
eingetragen schon, aber auf der Unterseite. Ich versuch das mal auf der index.html.


EDIT:
Das war's, DANKE!

Gruß Michael
Wissen ist Macht.
Ich weiß nix.
Macht nix.

TWART016

Hallo,

ich richte mir gerade mein Multiroomaudio ein. Jedoch habe ich noch ein paar Problemchen.
Zum Verständnis: Ich habe derzeit 2 Räume, möchte demnäst aber auf 4 oder 5 ausbauen. Also lege ich ein Player an. Dort drüber kann ich die Musik in einem oder mehreren Räumen steuern, egal ob 4 unterschiedliche Quellen oder alles gesynched. Oder muss ich für diesen Zweck 4 Widgets mit 4 Playern anlegen?

Ich habe mir im Tablet UI ein Switch angelegt. Dieser schaltet auch set PlayerA unsync und set PlayerA sync PlayerB. Jedoch funktioniert data-icons nicht, nur data-icon.
<div data-type="switch"
data-device="SB_PLAYER_PCT"
data-get-on='["synced","not synced"]'
data-icons='["fa-link","fa-unlink"]'
data-set-on="sync SB_PLAYER_VM"
data-set-off="unsync"
data-background-icon="fa-square-o"
data-on-background-color="rgba(147, 147, 147, 0)"
data-off-background-color="rgba(147, 147, 147, 0)"
data-on-color="rgba(208,208,208,.8)"
data-off-color="rgba(208,208,208,.8)"
class="cell small narrow"
style="text-shadow:none;">
</div>


Ich verstehe die Sache mit den userReadings noch nicht. Was ist genau der Zweck? Kann damit der Status abgefragt werden und in einem bestimmten Icon ausgegeben werden?
Muss ein userReading für jeden Squeezeplayer definiert werden?
Wie müsste ein userReading für 2 und 3 Geräte aussehen?

Was für Hardware / Software für Squeeze verwendet ihr?


Gruß
TWART016

tomster

Zitat von: TWART016
Hallo,

ich richte mir gerade mein Multiroomaudio ein. Jedoch habe ich noch ein paar Problemchen.
Zum Verständnis: Ich habe derzeit 2 Räume, möchte demnäst aber auf 4 oder 5 ausbauen. Also lege ich ein Player an. Dort drüber kann ich die Musik in einem oder mehreren Räumen steuern, egal ob 4 unterschiedliche Quellen oder alles gesynched. Oder muss ich für diesen Zweck 4 Widgets mit 4 Playern anlegen?
Mit dem derzeitigen Code erhält man eine Player-Steuerung für 1 Player. Deshalb ist es damit nur möglich zu diesem "Hauptplayer" weitere Player hinzu zu syncen, die die gleiche Musik spielen. Man kann also noch nicht jeden einzelnen Player aus diesem Widget heraus steuern (so wie z.B. im GUI von LMS rechts oben). Prinzipiell dürfte so etwas zwar durchaus möglich sein, aber ich selbst habe keinen Ansatz hierzu.
ZitatIch verstehe die Sache mit den userReadings noch nicht. Was ist genau der Zweck?
Die userReadings haben nur den Zweck, die Sortierung der z.B. FAVSTRINGS in ein Format zu bekommen welches im FTUI angezeigt werden kann. Wie oben bereits von anderer Stelle beschrieben, legt das SB-Modul standardmäßig ein komma-separiertes Array an. FTUI braucht aber ein Kolon-separiertes. 
Zitat
Kann damit der Status abgefragt werden und in einem bestimmten Icon ausgegeben werden?
Welchen Status genau meinst Du? Du kannst doch jedes Reading anzeigen lassen...
Zitat
Muss ein userReading für jeden Squeezeplayer definiert werden?
Wie müsste ein userReading für 2 und 3 Geräte aussehen?
Ja, das reading muss für jeden Player angegeben werden, weil es ja möglich ist, dass jeder Player eine unterschiedlichen FAVSTRING anzeigen soll.
Wie sie ausschauen, bleibt Dir überlassen. Wenn Du z.B. auf dem 2. Player den Hardcore-Metal-Sender unverständlicherweise doch nicht angezeigt haben willst, dann lässt Du ihn logischerweise aus dem userReading draußen...
Zitat
Was für Hardware / Software für Squeeze verwendet ihr?
Meine Squeeze-Clients sind eigentlich ausschließlich Raspis (A+ und 2'er) mit PiCorePlayer und Soundkarte.

FHEm2005

#40
Hallo TWART016,
ZitatOder muss ich für diesen Zweck 4 Widgets mit 4 Playern anlegen?
Du musst alle Player in fhem definiert haben. Ein Widget brauchst Du nur für den benutzten Player anlegen.

ZitatJedoch funktioniert data-icons nicht, nur data-icon.
Das Icon fa-link|fa-unlink wird zweimal benutzt: Zum Einen auf der Oberfläche und zun Anderen innerhalb des Synchronisationsfensters. Funktioniert beides nicht? Das Problem liegt nicht in der FTUI, sondern in der Definition des Players.

Zum Thema UserReadings; wir benutzen vier  bzw. drei userreadings um die Synchrinisation in FTUI zusteuern:
sb_name - Ist nach Einführung des Attributes syncedNamesSource nicht mehr erforderlich, wenn dieses auf FHEM gesetzt wird. Grundsätzlich ist es erforderlich den FHEM-Namen mit "SB" beginnen zu lassen. Bei einer vorgenommenen Sychronisierung stehen die gesyncten Player in den Reading synced.

Mit dem userReadings
synced_FTUI {my $s=(ReadingsVal($name,'synced',''));$s=substr($s,0,2); return($s)}
werden die ersten zwei Zeichen des Reading synced ausgewertet und in dieses userReadings geschrieben. Da steht dann entweder "no" oder "SB" drin. Dieses wird in FTUI ausgewertet, um in der Oberfläche der Playersteuerung eine generelle Sychronisation anzuzeigen. Da müsste also entweder das Symbol ""fa-link" oder "fa-unlink" zu sehen sein.

Für jeden vorhandenen Player muss ein userReadings nach dem Muster
SB.BD_S477:synced {if(index(ReadingsVal($name,'synced',''),'SB.BD_S477')!=-1){return 'synced'} else {return('not synced')}},
angelegt werden. Danach gibt es für jedes sychronoisierbare Gerät ein Reading SB.BD_S477 mit dem Inhalt synced oder not  synced. Dieses Reading wird dann in dem geöffneten Fenster der synchronisierten Geräte ausgewertet und angezeigt.

Wenn ich Deinen geposteten Code interpretiere, ist das ein Teil des Codes in der popup-box des Players SB_PLAYER_PCT und steuert die Synchronisierung mit dem Player SB_PLAYER_VM.

Das userReadings für meinen Player SB3.Buero und die Synchronisation mit den Playern SB.BD_S477, SB.RX_V477 und dem iPeng-Player SBiP.Eberhard auf meinem Handy sieht wie folgt aus:
FAVSTR_FTUI {my $t=InternalVal($name,'FAVSTR','');$t=~s/,/:/g;return($t)},
synced_FTUI {my $s=(ReadingsVal($name,'synced',''));$s=substr($s,0,2); return($s)},
SB.BD_S477:synced {if(index(ReadingsVal($name,'synced',''),'SB.BD_S477')!=-1){return 'synced'} else {return('not synced')}},
SBiP.Eberhard:synced {if(index(ReadingsVal($name,'synced',''),'SBiP.Eberhard')!=-1){return 'synced'} else {return('not synced')}},
SB.RX_V477:synced {if(index(ReadingsVal($name,'synced',''),'SB.RX_V477')!=-1){return 'synced'} else {return('not synced')}}

dazu passend habe ich das Attribut:
attr SB3.Buero syncedNamesSource FHEM
gesetzt.

Ich hoffe es hilft Dir weiter.

ZitatWas für Hardware / Software für Squeeze verwendet ihr?
Auf diese Frage von Dir wurde bereits im Thread Squeezebox Modul - erste Version ausführlich eingegangen.

Gruß
Eberhard
Raspi3: FHEM, CULV3 (V1.61), EnOcean Pi 868, nanoCUL433, HUE-Bridge; Raspi4: Node-red, MQTT, Gaszähler auslesen mit ESP32-CAM

TWART016

Hallo,

Zitat von: tomster am 08 März 2016, 09:28:55
Die userReadings haben nur den Zweck, die Sortierung der z.B. FAVSTRINGS in ein Format zu bekommen welches im FTUI angezeigt werden kann. Wie oben bereits von anderer Stelle beschrieben, legt das SB-Modul standardmäßig ein komma-separiertes Array an. FTUI braucht aber ein Kolon-separiertes.
Favstrings sind Listen von Favoriten, z.B. Webradios? Ich habe nicht vor Streams aufzurufen, sondern nur lokale Musik. Werden dann die userReadings trotzdem benötigt?

Zitat von: tomster am 08 März 2016, 09:28:55
Welchen Status genau meinst Du? Du kannst doch jedes Reading anzeigen lassen...
Der Status, ob ein Player derzeit gesynced wird.

Zitat von: tomster am 08 März 2016, 09:28:55
Meine Squeeze-Clients sind eigentlich ausschließlich Raspis (A+ und 2'er) mit PiCorePlayer und Soundkarte.
Welche Soundkarte verwendest du? Gibt es zwischen den Raspis Unterschiede in der Performance beim Abspielen?


Zitat von: FHEm2005 am 08 März 2016, 14:23:52
Das Icon fa-link|fa-unlink wird zweimal benutzt: Zum Einen auf der Oberfläche und zun Anderen innerhalb des Synchronisationsfensters. Funktioniert beides nicht? Das Problem liegt nicht in der FTUI, sondern in der Definition des Players.
Wie muss der Player in FHEM definiert werden?


Zitat von: FHEm2005 am 08 März 2016, 14:23:52
synced_FTUI {my $s=(ReadingsVal($name,'synced',''));$s=substr($s,0,2); return($s)}
synced_FTUI muss aber nicht als dummy oder ähnliches in FHEM definiert sein?

Wenn ich 3 Player und einen Master habe, müsste das also so aussehen???
Master: SB_PLAYER_PCT
Slave: SB_PLAYER_VM, SB_PLAYER_Kueche, SB_PLAYER_Bad


attr SB_PLAYER_PCT userReadings
sb_name {"SB_PLAYER_PCT"},FAVSTR_FTUI {my $t=InternalVal($name,'FAVSTR','');$t=~s/,/:/g;return($t)},
synced_FTUI {my $s=(ReadingsVal($name,'synced',''));$s=substr($s,0,2); return($s)},
SB_PLAYER_VM:synced {if(index(ReadingsVal($name,'synced',''),'SB_PLAYER_VM')!=-1){return 'synced'} else {return('not synced')}},
SB_PLAYER_Kueche:synced {if(index(ReadingsVal($name,'synced',''),'SB_PLAYER_Kueche')!=-1){return 'synced'} else {return('not synced')}},
SB_PLAYER_Bad:synced {if(index(ReadingsVal($name,'synced',''),'SB_PLAYER_Bad')!=-1){return 'synced'} else {return('not synced')}},



Zitat von: FHEm2005 am 08 März 2016, 14:23:52
Wenn ich Deinen geposteten Code interpretiere, ist das ein Teil des Codes in der popup-box des Players SB_PLAYER_PCT und steuert die Synchronisierung mit dem Player SB_PLAYER_VM.
Eine Popup Box habe ich nicht, aber ja, SB_PLAYER_PCT ist der Hauptplayer und SB_PLAYER_VM der Nebenplayer.

Kann man nun auch 4 Player erstellen und immer einen unterschiedlichen Hauptplayer definieren?


Zitat von: FHEm2005 am 08 März 2016, 14:23:52
attr SB3.Buero syncedNamesSource FHEM
Warum wird das benötigt? Das Attribut syncedNamesSource finde ich nicht.


Gruß
TWART016

FHEm2005

Hallo Twart016,

grundsätzlich dürfen wir die Definition in fhem und ihre Bedienung über die FTUI Schnittstelle nicht durcheinanderwerfen. Sind die beiden genannten Player bereits definiert? Eine Musterdefinition findest Du in dem Dokument aus der Signatur. 

In dem Multiroomkonzept mit Squeezeboxen sind von Hause aus ALLE Player gleichwertig, d.h. ein gibt keinen Hauptplayer und keinen Nebenplayer. Durch sync/unsync - Befehle werden sie temporär zu Master bzw. Slave gemacht.

Zitatsynced_FTUI muss aber nicht als dummy oder ähnliches in FHEM definiert sein?
Eine eigene Definition für synced_FTUI ist nicht erforderlich; Es ist ein userrReading welches über ein Attribut kreiert wird.

Wenn Du den Player SB_PLAYER_PCT als Master und die anderen Player als Slave definieren möchtest, sehen die sync-Befehle in FHEM wie folgt aus:
set SB_PLAYER_PCT sync SB_PLAYER_VM, SB_PLAYER_Kueche, SB_PLAYER_Bad
Mit set SB_PLAYER_PCT unsync wird die Synchronisation für ALLE beteiligten Player wieder aufgelöst.

Der von Dir aufgeführte nur Code ist für die Steuerung der Synchronisierung in FTUI erforderlich. Bevor Du Dich an die FTUI-Steuerung heranwagst, empfehle ich, zuerst mal die Mechanismen in FHEM ZU verstehen. Dazu benötigst Du die userRadings noch nicht.

ZitatKann man nun auch 4 Player erstellen und immer einen unterschiedlichen Hauptplayer definieren?
Es wäre besser von Master und Slave zu sprechen. Einen neuen (also anderen) Master-Player zu definieren, ohne die beteiligten Slave-Player zu verändern, macht keinen Sinn, da alle Player gemeinsam von allen Playern gesteuert werden können. Lediglich eine synchrone Lautstärkesteuerung  muss gesondert konfiguriert werden.

ZitatWarum wird attr SB3.Buero syncedNamesSource FHEM benötigt? Das Attribut syncedNamesSource finde ich nicht.
In der Gesamtheit der Steuerung der Squeezeboxen in FHEM gibt es zwei Namensgebungen. Zum einen, die Du in in Deiner Playerdefinition in FHEM vorgenommen hast (z.B. SB_PLAYER_PCT) und zum anderen die Namensgebung im LMS. Früher stand im Reading synced nur der Playername aus dem LMS. Willst Du Auswertungen machen, die auf den FHEM-Namen abzielen, hast du Pech gehabt. Durch diese Umschaltung kannst Du im attr synced entweder den LMS oder den FHEM-Namen wiederfinden.
Das Attribut findest Du nach einem Update der Squeeze-Module. Schau mal in den Thread Squeezebox Modul - erste Version. Da steht was über das neue Attribut.

Eine kleine Bitte habe ich noch: Dieser Thread beschäftigt sich mit der Darstellung der Steuerung von Medienplayern, Schwerpunkt Squeezebox via FTUI.  Viele Deiner  Fragen sind jedoch allgemeiner Natur, die besser im o.g. Thread aufgehoben sind. Vielleicht habe andere Leser die gleichen Verständnisprobleme und könnten dann von unserer Kommunikation profieren. Okay? :) :)

Gruß Eberhard



Raspi3: FHEM, CULV3 (V1.61), EnOcean Pi 868, nanoCUL433, HUE-Bridge; Raspi4: Node-red, MQTT, Gaszähler auslesen mit ESP32-CAM

TWART016

Zitat von: FHEm2005 am 10 März 2016, 08:27:50
Eine kleine Bitte habe ich noch: Dieser Thread beschäftigt sich mit der Darstellung der Steuerung von Medienplayern, Schwerpunkt Squeezebox via FTUI.  Viele Deiner  Fragen sind jedoch allgemeiner Natur, die besser im o.g. Thread aufgehoben sind. Vielleicht habe andere Leser die gleichen Verständnisprobleme und könnten dann von unserer Kommunikation profieren. Okay? :) :)

Alles klar, habe einen neuen Threat eröffnet.
https://forum.fhem.de/index.php?topic=50822.new

Danke schonmal ;)

Doublefant

Ich weiß es ist Offtopic, sorry dafür, aber evtl. hilft es jemandem, dass er nicht lange suchen muss so wie ich vor einiger Zeit...

Falls jemand die tolle Oberfläche von FHEm2005 nachbauen möchte und dabei das selbe Problem hat wie Hyperbit (Antwort #11) und es sieht komisch aus, dann fehlen die beiden Attribute der SB-Player in der fhem.cfg : donotnotify false ; event-on-change-reading .*