Hallo Thorsten
Habe mal eben schnell was für einen Sonos Player zusammengeschoben.
Vielleicht kannst du da was für erstellen......
{ class => 'FUIP::Cell',
views => [
{ class => 'FUIP::View::Html',
posY => '115',
popup => 'inactive',
html => ' <div data-type="spinner"
data-device="sonos_Bad"
data-get="Volume"
data-set="Volume"
data-max="50"
data-step="1"
data-width="350"
data-icon-left="fa-volume-down tall"
data-icon-right="fa-volume-up tall"
data-gradient-color=\'["orange","red"]\'
class="tap value positiononly top-space centered">
</div>
',
width => '500',
sizing => 'resizable',
posX => '61',
defaulted => {
popup => '1',
sizing => '1'
},
title => 'Lautstärke',
height => '25'
},
{ class => 'FUIP::View::Html',
posY => '67',
popup => 'inactive',
html => ' <div class="top-space">
<div data-type="switch" data-device="sonos_Bad" data-get="Mute" data-set="Mute"
data-icon="fa-deaf" data-background-icon="-"
data-on-color="#aa6900" data-off-color="gray"
data-get-on="1" data-get-off="0"
data-set-on="1" data-set-off="0" class="inline mini">
</div>
<div data-type="classchanger" data-device="sonos_Bad" data-get="currentNormalAudio" data-get-on="1" data-off-class="hide" class="inline top-space">
<div data-type="switch" data-device="sonos_Bad" data-get="Repeat" data-set="Repeat"
data-icon="fa-repeat" data-background-icon="-"
data-on-color="#aa6900" data-off-color="gray"
data-get-on="1" data-get-off="0"
data-set-on="1" data-set-off="0" class="inline mini">
</div>
<div data-type="push" data-device="sonos_Bad"
data-icon="fa-step-backward" data-background-icon="-"
data-off-color="#fff" data-on-color="#aa6900"
data-set-on="Previous" class="inline mini">
</div>
<div data-type="push" data-device="sonos_Bad"
data-set="CurrentTrackPosition"
data-icon="fa-backward" data-background-icon="-"
data-off-color="#fff" data-on-color="#aa6900"
data-set-on="-30" class="inline mini">
</div>
</div>
<div data-type="switch"
data-device="sonos_Bad"
data-get="transportState"
data-states=\'["PLAYING","PAUSED_PLAYBACK","STOPPED"]\'
data-set-states=\'["Pause","Play","Play"]\'
data-background-icon="fa-circle-thin"
data-background-colors=\'["#aa6900","white","white"]\'
data-colors=\'["#aa6900","white","white"]\'
data-icons=\'["fa-pause","fa-play","fa-play"]\'
class="inline small">
</div>
<div data-type="classchanger" data-device="sonos_Bad" data-get="currentNormalAudio" data-get-on="1" data-off-class="hide" class="inline">
<div data-type="push" data-device="sonos_Bad"
data-set="CurrentTrackPosition"
data-icon="fa-forward" data-background-icon="-"
data-off-color="#fff" data-on-color="#aa6900"
data-set-on="+30" class="inline mini">
</div>
<div data-type="push" data-device="sonos_Bad"
data-icon="fa-step-forward" data-background-icon="-"
data-off-color="#fff" data-on-color="#aa6900"
data-set-on="Next" class="inline mini">
</div>
<div data-type="switch" data-device="sonos_Bad" data-get="Shuffle" data-set="Shuffle"
data-icon="fa-random" data-background-icon="-"
data-on-color="#aa6900" data-off-color="gray"
data-get-on="1" data-get-off="0"
data-set-on="1" data-set-off="0" class="inline mini">
</div>
</div>
<div data-type="popup" class="inline" data-width="650px" data-height="210px">
<div data-type="push"
data-icon="fa-list" data-background-icon="-"
data-off-color="#fff" data-on-color="#aa6900"
class="mini">
</div>
<div class="dialog">
<header><div data-type="joinedlabel" data-device="sonos_Bad" data-mask="Musikauswahl[ für $1]" data-get=\'["roomName"]\' class="inline"></div></header>
<div class="top-space-10 left-align left-space">
<div>
<div class="large middle inline">Favoriten: </div>
<div data-type="select"
data-device="sonos_Bad"
data-list="FavouritesList"
data-alias="FavouritesListAlias"
data-delimiter="|"
data-quote="/"
data-get="currentFavouriteNameMasked"
data-set="StartFavourite"
class="inline w3x"
onchange="$(\'.dialog-close\').trigger(\'click\');"></div>
</div>
<div>
<div class="large middle inline">Playlists: </div>
<div data-type="select"
data-device="sonos_Bad"
data-list="PlaylistsList"
data-alias="PlaylistsListAlias"
data-delimiter="|"
data-quote="/"
data-get="currentPlaylistNameMasked"
data-set="StartPlaylist"
class="inline w3x"
onchange="$(\'.dialog-close\').trigger(\'click\');"></div>
</div>
<div>
<div class="large middle inline">Radios: </div>
<div data-type="select"
data-device="sonos_Bad"
data-list="RadiosList"
data-alias="RadiosListAlias"
data-delimiter="|"
data-quote="/"
data-get="currentRadioNameMasked"
data-set="StartRadio"
class="inline w3x"
onchange="$(\'.dialog-close\').trigger(\'click\');"></div>
</div>
<div>
<div class="large middle inline">Audio-Eingang: </div>
<div data-type="select"
data-device="sonos_Bad"
data-list="Sonos:LineInPlayerList"
data-alias="Sonos:LineInPlayerListAlias"
data-delimiter="|"
data-get="currentAlbum"
data-set="PlayURI"
class="inline w3x"
onchange="$(\'.dialog-close\').trigger(\'click\');"></div>
</div>
<div>
<div class="large middle inline">Abspielliste: </div>
<div data-type="select"
data-device="sonos_Bad"
data-list="QueueList"
data-alias="QueueListAlias"
data-delimiter="|"
data-get="currentTrack"
data-set="Track"
class="inline w3x"
onchange="$(\'.dialog-close\').trigger(\'click\');"></div>
</div>
</div>
</div>
</div>
</div>
',
width => '500',
sizing => 'resizable',
defaulted => {
popup => '1',
sizing => '1'
},
posX => '-8',
title => 'Bedienung',
height => '25'
},
{ class => 'FUIP::View::Html',
sizing => 'resizable',
posX => '-11',
defaulted => {
popup => '1',
sizing => '1'
},
title => 'Position',
height => '25',
posY => '47',
popup => 'inactive',
html => '<div data-type="classchanger" data-device="sonos_Bad" data-get="currentNormalAudio" data-get-on="1" data-off-class="hide">
<div data-type="label" data-device="sonos_Bad" data-get="currentTrackPositionSimulated" class="inline" style="width: 3em;"></div>
<div data-type="slider"
data-device="sonos_Bad"
data-set="CurrentTrackPosition"
data-get="currentTrackPositionSimulatedSec"
data-max="currentTrackDurationSec" data-min="0"
data-step="1"
data-handle-diameter="5"
data-width="250"
class="horizontal tap inline">
</div>
<div data-type="label" data-device="sonos_Bad" data-get="currentTrackDuration" class="inline" style="width: 3em;"></div>
<div class="newline">
<div data-type="label" data-device="sonos_Bad" data-get="currentTrack" class="inline center-align" style="width: 3em;"></div>
<div data-type="slider"
data-device="sonos_Bad"
data-set="Track"
data-get="currentTrack"
data-max="numberOfTracks" data-min="0"
data-step="1"
data-handle-diameter="5"
data-width="250"
class="horizontal tap inline">
</div>
<div data-type="label" data-device="sonos_Bad" data-get="numberOfTracks" class="inline center-align" style="width: 3em;"></div>
</div>
</div>
<div data-type="classchanger" data-device="sonos_Bad" data-get="currentStreamAudio" data-get-on="1" data-off-class="hide">
<div style="height: 40px;"> </div> <!-- Leerer Ersatz für die bei Streams fehlende Positionsanzeige -->
</div>
',
width => '500'
},
{ class => 'FUIP::View::Html',
posY => '-11',
width => '500',
html => ' <div class="large top-space">
<div data-type="classchanger" data-device="sonos_Bad" data-get="currentNormalAudio" data-get-on="1" data-off-class="hide">
<div style="height: 21px;">
<div style="width: 355px; position: absolute; overflow: hidden; height: 21px; margin-left: 10px; margin-right: 10px;">
<div style="position: absolute;">
<div id="Device_Title" data-type="joinedlabel" data-device="sonos_Bad" data-mask="[$1]" data-get=\'["currentTitle"]\' data-onupdate="checkFlowAnimation(\'#Device_Title\');" class="bold"></div>
</div>
</div>
</div>
<div style="height: 21px;">
<div style="width: 355px; position: absolute; overflow: hidden; height: 21px; margin-left: 10px; margin-right: 10px;">
<div style="position: absolute;">
<div id="Device_Interpret" data-type="joinedlabel" data-device="sonos_Bad" data-mask="[$1][ ~ $2]" data-get=\'["currentArtist","currentAlbum"]\' data-onupdate="checkFlowAnimation(\'#Device_Interpret\');" class="">
</div>
</div>
</div>
</div>
</div>
<div data-type="classchanger" data-device="sonos_Bad" data-get="currentStreamAudio" data-get-on="1" data-off-class="hide">
<div style="height: 21px;">
<div style="width: 355px; position: absolute; overflow: hidden; height: 21px; margin-left: 10px; margin-right: 10px;">
<div style="position: absolute;">
<div id="Device_SenderInfo" data-type="joinedlabel" data-device="sonos_Bad" data-mask="[$1]" data-get=\'["currentSenderInfo"]\' data-onupdate="checkFlowAnimation(\'#Device_SenderInfo\');" class="bold"></div>
</div>
</div>
</div>
<div style="height: 21px;">
<div style="width: 355px; position: absolute; overflow: hidden; height: 21px; margin-left: 10px; margin-right: 10px;">
<div style="position: absolute;">
<div id="Device_Sender" data-type="joinedlabel" data-device="sonos_Bad" data-mask="[$1][: $2]" data-get=\'["currentSender","currentSenderCurrent"]\' data-onupdate="checkFlowAnimation(\'#Device_Sender\');"class=""></div>
</div>
</div>
</div>
</div>
</div>
',
popup => 'inactive',
defaulted => {
popup => '1',
sizing => '1'
},
title => 'Titel',
posX => '53',
sizing => 'resizable',
height => '25'
},
{ class => 'FUIP::View::Html',
height => '25',
sizing => 'resizable',
defaulted => {
popup => '1',
sizing => '1'
},
title => 'Gruppierung',
posX => '3',
html => ' <div data-type="classchanger" data-device="sonos_Bad" data-get="SlavePlayerNotBonded" data-get-on=\'["[]"]\' data-on-class="hide" data-off-class="mini" class="inline">
<div data-type="switch" data-device="sonos_Bad" data-get="GroupMute" data-set="GroupMute"
data-icon="fa-deaf" data-background-icon="-"
data-on-color="#aa6900" data-off-color="gray"
data-get-on="1" data-get-off="0"
data-set-on="1" data-set-off="0" class="mini" style="margin-right: -5px;">
</div>
</div>
<div data-type="joinedlabel" data-device="sonos_Bad" data-mask="[$1][ ($2)]" data-get=\'["roomName","ZoneGroupNameDetails"]\' class="truncate inline"></div>
<div data-type="classchanger" data-device="sonos_Bad" data-get="MasterPlayer" data-get-on="sonos_Bad" data-on-class="hide" class="inline left-narrow">
<div data-type="push"
data-device="sonos_Bad"
data-icon="fa-minus-circle"
data-background-icon="-"
data-set-on="MakeStandaloneGroup"
class="inline mini gray">
</div>
</div>
<div data-type="classchanger" data-device="sonos_Bad" data-get="MasterPlayer" data-get-on="sonos_Flur" data-off-class="hide" class="inline left-narrow">
<div data-type="popup" class="" data-width="400px" data-height="110px">
<div data-type="symbol"
data-icon="fa-chevron-circle-down"
class="mini"
style="height: 10px;">
</div>
<div class="dialog">
<header><div data-type="joinedlabel" data-device="sonos_Bad" data-mask="Wiedergabegruppe[ für $1] anpassen" data-get=\'["roomName"]\' class="inline"></div></header>
<div class="top-space-10 left-align left-space">
<div>
<div class="large middle inline">Player hinzufügen: </div>
<div data-type="select"
data-device="sonos_Bad"
data-list="AvailablePlayerList"
data-alias="AvailablePlayerListAlias"
data-delimiter="|"
data-get="-"
data-set="AddMember"
class="inline w3x"
onchange="$(\'.dialog-close\').trigger(\'click\');"></div>
</div>
<div>
<div class="large middle inline">Player entfernen: </div>
<div data-type="select"
data-device="sonos_Bad"
data-list="SlavePlayerNotBondedList"
data-alias="SlavePlayerNotBondedListAlias"
data-delimiter="|"
data-get="-"
data-set="RemoveMember"
class="inline w3x"
onchange="$(\'.dialog-close\').trigger(\'click\');"></div>
</div>
</div>
</div>
</div>
</div>
',
popup => 'inactive',
width => '500',
posY => '181'
}
],
title => '',
posX => '1',
defaulted => {},
height => '2',
posY => '3',
width => '3'
}
Gruß
Carsten
Hi,
das ist ja ein ziemliches Monster-Teil. Kannst Du mal einen Screenshot davon hier dranhängen?
Gruß,
Thorsten
Zitat von: stenny am 03 März 2019, 15:48:07
Hallo Thorsten
Habe mal eben schnell was für einen Sonos Player zusammengeschoben.
Vielleicht kannst du da was für erstellen......
{ class => 'FUIP::Cell',
views => [
{ class => 'FUIP::View::Html',
posY => '115',
popup => 'inactive',
html => ' <div data-type="spinner"
data-device="sonos_Bad"
data-get="Volume"
data-set="Volume"
data-max="50"
data-step="1"
data-width="350"
data-icon-left="fa-volume-down tall"
data-icon-right="fa-volume-up tall"
data-gradient-color=\'["orange","red"]\'
class="tap value positiononly top-space centered">
</div>
',
width => '500',
sizing => 'resizable',
posX => '61',
defaulted => {
popup => '1',
sizing => '1'
},
title => 'Lautstärke',
height => '25'
},
{ class => 'FUIP::View::Html',
posY => '67',
popup => 'inactive',
html => ' <div class="top-space">
<div data-type="switch" data-device="sonos_Bad" data-get="Mute" data-set="Mute"
data-icon="fa-deaf" data-background-icon="-"
data-on-color="#aa6900" data-off-color="gray"
data-get-on="1" data-get-off="0"
data-set-on="1" data-set-off="0" class="inline mini">
</div>
<div data-type="classchanger" data-device="sonos_Bad" data-get="currentNormalAudio" data-get-on="1" data-off-class="hide" class="inline top-space">
<div data-type="switch" data-device="sonos_Bad" data-get="Repeat" data-set="Repeat"
data-icon="fa-repeat" data-background-icon="-"
data-on-color="#aa6900" data-off-color="gray"
data-get-on="1" data-get-off="0"
data-set-on="1" data-set-off="0" class="inline mini">
</div>
<div data-type="push" data-device="sonos_Bad"
data-icon="fa-step-backward" data-background-icon="-"
data-off-color="#fff" data-on-color="#aa6900"
data-set-on="Previous" class="inline mini">
</div>
<div data-type="push" data-device="sonos_Bad"
data-set="CurrentTrackPosition"
data-icon="fa-backward" data-background-icon="-"
data-off-color="#fff" data-on-color="#aa6900"
data-set-on="-30" class="inline mini">
</div>
</div>
<div data-type="switch"
data-device="sonos_Bad"
data-get="transportState"
data-states=\'["PLAYING","PAUSED_PLAYBACK","STOPPED"]\'
data-set-states=\'["Pause","Play","Play"]\'
data-background-icon="fa-circle-thin"
data-background-colors=\'["#aa6900","white","white"]\'
data-colors=\'["#aa6900","white","white"]\'
data-icons=\'["fa-pause","fa-play","fa-play"]\'
class="inline small">
</div>
<div data-type="classchanger" data-device="sonos_Bad" data-get="currentNormalAudio" data-get-on="1" data-off-class="hide" class="inline">
<div data-type="push" data-device="sonos_Bad"
data-set="CurrentTrackPosition"
data-icon="fa-forward" data-background-icon="-"
data-off-color="#fff" data-on-color="#aa6900"
data-set-on="+30" class="inline mini">
</div>
<div data-type="push" data-device="sonos_Bad"
data-icon="fa-step-forward" data-background-icon="-"
data-off-color="#fff" data-on-color="#aa6900"
data-set-on="Next" class="inline mini">
</div>
<div data-type="switch" data-device="sonos_Bad" data-get="Shuffle" data-set="Shuffle"
data-icon="fa-random" data-background-icon="-"
data-on-color="#aa6900" data-off-color="gray"
data-get-on="1" data-get-off="0"
data-set-on="1" data-set-off="0" class="inline mini">
</div>
</div>
<div data-type="popup" class="inline" data-width="650px" data-height="210px">
<div data-type="push"
data-icon="fa-list" data-background-icon="-"
data-off-color="#fff" data-on-color="#aa6900"
class="mini">
</div>
<div class="dialog">
<header><div data-type="joinedlabel" data-device="sonos_Bad" data-mask="Musikauswahl[ für $1]" data-get=\'["roomName"]\' class="inline"></div></header>
<div class="top-space-10 left-align left-space">
<div>
<div class="large middle inline">Favoriten: </div>
<div data-type="select"
data-device="sonos_Bad"
data-list="FavouritesList"
data-alias="FavouritesListAlias"
data-delimiter="|"
data-quote="/"
data-get="currentFavouriteNameMasked"
data-set="StartFavourite"
class="inline w3x"
onchange="$(\'.dialog-close\').trigger(\'click\');"></div>
</div>
<div>
<div class="large middle inline">Playlists: </div>
<div data-type="select"
data-device="sonos_Bad"
data-list="PlaylistsList"
data-alias="PlaylistsListAlias"
data-delimiter="|"
data-quote="/"
data-get="currentPlaylistNameMasked"
data-set="StartPlaylist"
class="inline w3x"
onchange="$(\'.dialog-close\').trigger(\'click\');"></div>
</div>
<div>
<div class="large middle inline">Radios: </div>
<div data-type="select"
data-device="sonos_Bad"
data-list="RadiosList"
data-alias="RadiosListAlias"
data-delimiter="|"
data-quote="/"
data-get="currentRadioNameMasked"
data-set="StartRadio"
class="inline w3x"
onchange="$(\'.dialog-close\').trigger(\'click\');"></div>
</div>
<div>
<div class="large middle inline">Audio-Eingang: </div>
<div data-type="select"
data-device="sonos_Bad"
data-list="Sonos:LineInPlayerList"
data-alias="Sonos:LineInPlayerListAlias"
data-delimiter="|"
data-get="currentAlbum"
data-set="PlayURI"
class="inline w3x"
onchange="$(\'.dialog-close\').trigger(\'click\');"></div>
</div>
<div>
<div class="large middle inline">Abspielliste: </div>
<div data-type="select"
data-device="sonos_Bad"
data-list="QueueList"
data-alias="QueueListAlias"
data-delimiter="|"
data-get="currentTrack"
data-set="Track"
class="inline w3x"
onchange="$(\'.dialog-close\').trigger(\'click\');"></div>
</div>
</div>
</div>
</div>
</div>
',
width => '500',
sizing => 'resizable',
defaulted => {
popup => '1',
sizing => '1'
},
posX => '-8',
title => 'Bedienung',
height => '25'
},
{ class => 'FUIP::View::Html',
sizing => 'resizable',
posX => '-11',
defaulted => {
popup => '1',
sizing => '1'
},
title => 'Position',
height => '25',
posY => '47',
popup => 'inactive',
html => '<div data-type="classchanger" data-device="sonos_Bad" data-get="currentNormalAudio" data-get-on="1" data-off-class="hide">
<div data-type="label" data-device="sonos_Bad" data-get="currentTrackPositionSimulated" class="inline" style="width: 3em;"></div>
<div data-type="slider"
data-device="sonos_Bad"
data-set="CurrentTrackPosition"
data-get="currentTrackPositionSimulatedSec"
data-max="currentTrackDurationSec" data-min="0"
data-step="1"
data-handle-diameter="5"
data-width="250"
class="horizontal tap inline">
</div>
<div data-type="label" data-device="sonos_Bad" data-get="currentTrackDuration" class="inline" style="width: 3em;"></div>
<div class="newline">
<div data-type="label" data-device="sonos_Bad" data-get="currentTrack" class="inline center-align" style="width: 3em;"></div>
<div data-type="slider"
data-device="sonos_Bad"
data-set="Track"
data-get="currentTrack"
data-max="numberOfTracks" data-min="0"
data-step="1"
data-handle-diameter="5"
data-width="250"
class="horizontal tap inline">
</div>
<div data-type="label" data-device="sonos_Bad" data-get="numberOfTracks" class="inline center-align" style="width: 3em;"></div>
</div>
</div>
<div data-type="classchanger" data-device="sonos_Bad" data-get="currentStreamAudio" data-get-on="1" data-off-class="hide">
<div style="height: 40px;"> </div> <!-- Leerer Ersatz für die bei Streams fehlende Positionsanzeige -->
</div>
',
width => '500'
},
{ class => 'FUIP::View::Html',
posY => '-11',
width => '500',
html => ' <div class="large top-space">
<div data-type="classchanger" data-device="sonos_Bad" data-get="currentNormalAudio" data-get-on="1" data-off-class="hide">
<div style="height: 21px;">
<div style="width: 355px; position: absolute; overflow: hidden; height: 21px; margin-left: 10px; margin-right: 10px;">
<div style="position: absolute;">
<div id="Device_Title" data-type="joinedlabel" data-device="sonos_Bad" data-mask="[$1]" data-get=\'["currentTitle"]\' data-onupdate="checkFlowAnimation(\'#Device_Title\');" class="bold"></div>
</div>
</div>
</div>
<div style="height: 21px;">
<div style="width: 355px; position: absolute; overflow: hidden; height: 21px; margin-left: 10px; margin-right: 10px;">
<div style="position: absolute;">
<div id="Device_Interpret" data-type="joinedlabel" data-device="sonos_Bad" data-mask="[$1][ ~ $2]" data-get=\'["currentArtist","currentAlbum"]\' data-onupdate="checkFlowAnimation(\'#Device_Interpret\');" class="">
</div>
</div>
</div>
</div>
</div>
<div data-type="classchanger" data-device="sonos_Bad" data-get="currentStreamAudio" data-get-on="1" data-off-class="hide">
<div style="height: 21px;">
<div style="width: 355px; position: absolute; overflow: hidden; height: 21px; margin-left: 10px; margin-right: 10px;">
<div style="position: absolute;">
<div id="Device_SenderInfo" data-type="joinedlabel" data-device="sonos_Bad" data-mask="[$1]" data-get=\'["currentSenderInfo"]\' data-onupdate="checkFlowAnimation(\'#Device_SenderInfo\');" class="bold"></div>
</div>
</div>
</div>
<div style="height: 21px;">
<div style="width: 355px; position: absolute; overflow: hidden; height: 21px; margin-left: 10px; margin-right: 10px;">
<div style="position: absolute;">
<div id="Device_Sender" data-type="joinedlabel" data-device="sonos_Bad" data-mask="[$1][: $2]" data-get=\'["currentSender","currentSenderCurrent"]\' data-onupdate="checkFlowAnimation(\'#Device_Sender\');"class=""></div>
</div>
</div>
</div>
</div>
</div>
',
popup => 'inactive',
defaulted => {
popup => '1',
sizing => '1'
},
title => 'Titel',
posX => '53',
sizing => 'resizable',
height => '25'
},
{ class => 'FUIP::View::Html',
height => '25',
sizing => 'resizable',
defaulted => {
popup => '1',
sizing => '1'
},
title => 'Gruppierung',
posX => '3',
html => ' <div data-type="classchanger" data-device="sonos_Bad" data-get="SlavePlayerNotBonded" data-get-on=\'["[]"]\' data-on-class="hide" data-off-class="mini" class="inline">
<div data-type="switch" data-device="sonos_Bad" data-get="GroupMute" data-set="GroupMute"
data-icon="fa-deaf" data-background-icon="-"
data-on-color="#aa6900" data-off-color="gray"
data-get-on="1" data-get-off="0"
data-set-on="1" data-set-off="0" class="mini" style="margin-right: -5px;">
</div>
</div>
<div data-type="joinedlabel" data-device="sonos_Bad" data-mask="[$1][ ($2)]" data-get=\'["roomName","ZoneGroupNameDetails"]\' class="truncate inline"></div>
<div data-type="classchanger" data-device="sonos_Bad" data-get="MasterPlayer" data-get-on="sonos_Bad" data-on-class="hide" class="inline left-narrow">
<div data-type="push"
data-device="sonos_Bad"
data-icon="fa-minus-circle"
data-background-icon="-"
data-set-on="MakeStandaloneGroup"
class="inline mini gray">
</div>
</div>
<div data-type="classchanger" data-device="sonos_Bad" data-get="MasterPlayer" data-get-on="sonos_Flur" data-off-class="hide" class="inline left-narrow">
<div data-type="popup" class="" data-width="400px" data-height="110px">
<div data-type="symbol"
data-icon="fa-chevron-circle-down"
class="mini"
style="height: 10px;">
</div>
<div class="dialog">
<header><div data-type="joinedlabel" data-device="sonos_Bad" data-mask="Wiedergabegruppe[ für $1] anpassen" data-get=\'["roomName"]\' class="inline"></div></header>
<div class="top-space-10 left-align left-space">
<div>
<div class="large middle inline">Player hinzufügen: </div>
<div data-type="select"
data-device="sonos_Bad"
data-list="AvailablePlayerList"
data-alias="AvailablePlayerListAlias"
data-delimiter="|"
data-get="-"
data-set="AddMember"
class="inline w3x"
onchange="$(\'.dialog-close\').trigger(\'click\');"></div>
</div>
<div>
<div class="large middle inline">Player entfernen: </div>
<div data-type="select"
data-device="sonos_Bad"
data-list="SlavePlayerNotBondedList"
data-alias="SlavePlayerNotBondedListAlias"
data-delimiter="|"
data-get="-"
data-set="RemoveMember"
class="inline w3x"
onchange="$(\'.dialog-close\').trigger(\'click\');"></div>
</div>
</div>
</div>
</div>
</div>
',
popup => 'inactive',
width => '500',
posY => '181'
}
],
title => '',
posX => '1',
defaulted => {},
height => '2',
posY => '3',
width => '3'
}
Gruß
Carsten
Moin Stenny,
würdest du der Bitte noch nachkommen? Ich glaube das es erstrebenswert ist, eine möglichst hohe Anzahl an Devices standardmäßig in FUIP abzubilden.
Grüße
Hi,
es sieht so aus, als ob es dafür doch nicht so richtig Interesse gibt, wenn man es nicht einmal schafft, davon einen Screenshot zu machen. (Auch wenn mir jetzt jemand sofort einen liefert, dann bin ich etwas skeptisch, da danach auch noch etwas "Mitarbeit" gefordert wäre.) Außerdem ist das eine ganze Menge an Coding, welches ich durcharbeiten müsste und ich hätte nicht einmal was davon, da es wohl recht Sonos-spezifisch ist.
Anstatt einen großen "Sonos-View" zu bauen, den dann ja doch jeder ein bisschen anders haben will, würde ich vorschlagen, dass sich das jeder aus "kleineren" View zusammenbaut. Wenn dann irgendwo eine Ecke fehlt, dann bin ich auch bereit, was einzubauen.
...aber so ein Riesenteil ohne Unterstützung eher nicht.
Gruß,
Thorsten
Hallo Thorsten
Habe diese Sache aus zeitgründen aus den Augen verloren....
Sorry
Werde versuchen heute Abend ein paar Bilder zu schicken
Gruß
Carsten
Gesendet von iPhone mit Tapatalk
Hallo
Jetzt endlich zwei Bilder....
Im Moment viel Unterwegs (eine Silberhochzeit, eine Beerdigung, ein runder Geburtstag....)
Von Unterwegs zeitlich kaum mehr möglich....
Hi,
wie schon angedeutet, fällt es mir schwer, mich dazu zu entscheiden, so ein Teil selbst auszuliefern und zu unterstützen. Ich habe aber vor, es einfacher zu machen, Teile von FUIP mit anderen zu teilen. Der erste Schritt dafür ist, dass man View Templates exportieren und importieren kann. (Das geht jetzt!). Ich denke, dass das Sonos-Teil hier ein ganz gutes Beispiel ist, das mal zu testen.
Könnte also jemand mal daraus ein View Template machen ("Make View Template" im Konfig-Popup der Zelle) und das Ding exportieren? ...dann das File hier reinhängen, so dass es andere importieren können. Ich bin gespannt, was dabei rauskommt.
Wenn sich dieses Vorgehen als praktikabel erweist, dann könnte man solche View-Templates hier übers Forum oder auch übers Wiki "verteilen". Besonders "beliebte" View Templates könnte ich vielleicht auch mit FUIP selbst ausliefern, aber dazu muss ich mir noch ein bisschen etwas überlegen.
Gruß,
Thorsten
Auf die schnelle ein export
Zitat von: stenny am 03 Mai 2019, 16:34:08
Auf die schnelle ein export
Danke. Das ist zwar kein View Template, aber ich habe mal schnell eins draus gemacht. Außerdem habe ich überall, wo sonos_Wohnzimmer stand, ein fuip-field "device" eingefügt sowie die ganzen "device"-Felder zu einer Variable "device" im View Template gemacht. Im Ergebnis müsste man beim Verwenden dies View Templates einfach nur noch das Device auswählen müssen.
Ich hab' das Teil hier in den Anhang gepackt, vielleicht will's mal jemand ausprobieren.
Ich denke, dass es funktionieren müsste. Ich habe allerdings gesehen, dass das sizing (also die Angabe von Höhe und Breite) der einzelnen HTML-View nicht ganz stimmt. Ich kann das selbst nicht wirklich korrigieren, da ich kein Sonos habe und daher nicht sehe, bis wohin die einzelnen Teile tatsächlich gehen.
Gruß,
Thorsten
War der Zeit und meinem Zustand geschuldet.....
Nur Edge Netz im Krankenhaus....
Gesendet von iPhone mit Tapatalk
Zitat von: stenny am 04 Mai 2019, 21:18:45
Nur Edge Netz im Krankenhaus....
Kein WLan im Krankenhaus?
Sorry, ich meinte natürlich: Mach Dir keinen Stress und gute Besserung!
Gruß,
Thorsten
Eigentlich schon.
Aber bewusst nicht genommen, mal die Auszeit nutzen.....
Danke
Gesendet von iPhone mit Tapatalk
Zitat von: stenny am 04 Mai 2019, 21:24:52
Eigentlich schon.
Aber bewusst nicht genommen, mal die Auszeit nutzen.....
Achso. ...bei mir hat das bedeutet, endlich mal in Ruhe was "für mich" entwickeln zu können. So ist dann FUIP entstanden.
Gruß,
Thorsten
Dazu fehlt mir das Talent
Ich bin und bleib ein Nutzer
Gesendet von iPhone mit Tapatalk
Guten Morgen!
Wie schade, dass dieser Thread nicht fortgeführt wurde... Es gibt doch bestimmt eine Reihe von Leuten, die sich wie ich mit der Integration von Sonos in FUIP schwer tun. Über 16.000 Aufrufe deuten darauf hin...
Ich habe mal das von Thorsten nach Stenny gefertigte Template importiert (toll übrigens, dass diese Funktion integriert wurde; danke, Thorsten!), aber gesehen, dass die Hinweise bezüglich des Sizings zutreffen - es ist alles ineinander geschoben, s. Anlage.
Leider kann ich als Anfänger daran überhaupt nichts machen.
Hat vielleicht jemand an der Integration weitergearbeitet und/oder ist bereit, seine Lösung hier einmal einzustellen?
LG Ingo
Wenn du das importiert hast kannst du die einzelnen Teile verschieben wie du magst
Gesendet von iPhone mit Tapatalk
Hi stenny,
die View lässt sich nur insgesamt verschieben, nicht in Teilen.
LG
Hi,
Zitat von: is2late am 01 Juni 2020, 16:32:32
die View lässt sich nur insgesamt verschieben, nicht in Teilen.
das Ding ist ein "View Template". Siehe auch hier:
http://pferdekaemper.com/fuip/docu.html#concepts-viewtemplate
D.h. man kann es im entsprechenden Bereich in FUIP per Klickibunti ändern.
Vielleicht nützt das was...
Gruß,
Thorsten
O ja, Thorsten, tut mit leid.. Ich wusste zwar, dass es ein Template ist und hatte Deine Doku dazu auch gelesen, aber offensichtlich nicht richtig verstanden. Das Ändern des Templates ist ja wirklich einfach; herzlichen Dank!
LG Ingo
Alles klar soweit, Thorsten und Stenny, vielen Dank!
Der Player sieht jetzt gut aus, s. Anlage. Ich hab bei "Device" in den fünf Rubriken jeweils den Namen meines Sonos-Players eingetragen und die Checkbox dahinter ("Device") aktiviert. Leider funktioniert jedoch die Bedienung nicht, dh der in FHEM abgespielte Titel wird zwar angezeigt (und auch abgespielt), kann jedoch in FUIP nicht bedient werden.
Eine Ahnung, was ich falsch mache?
LG Ingo
Der Player war überlagert. Das ist jetzt in Ordnung. Leider aber bleiben die Auswahlfenster für Favouriten etc leer. Hat sonst jemand diesen Effekt und/oder kennt eine Lösung?
LG is2late
Hast im sonos device alles aktiviert?
GetListDirectlyToReadings usw auf 1
Gesendet von iPhone mit Tapatalk
Hi stenny,
das war schon einmal gut! Tatsächlich hatte ich getListsDirectlyToReadings nicht aktiviert. Hab dies nachgeholt und auch gleich getPlaylistsListATNewVersion, getQueueListAtNewVersion, getFavouritesListAtNewVersion und getRadiosListAtNewVersion jeweils auf "1" gesetzt. Tatsächlich findet sich jetzt im Auswahlfenster in FUIP unter "Abspieliste" Inhalt. Toll!
Die anderen Fenster bleiben aber weiterhin leer, besonders blöd natürlich bei "PLaylists".
Muss ich noch etwas anderes aktivieren? Vielen Dank für Deine Hilfe!
LG is2late
Juchhee! Hab auf gut Glück noch diverses Anderes beim Sonos-Device aktiviert... get Favourites, Radios etc. Neugestartet und siehe da, die Auswahlfelder sind belegt. Der Sonntag ist gerettet. Tausend Dank für deine Hilfe!
LG is2late
Zitat von: is2late am 07 Juni 2020, 16:21:05
Juchhee! Hab auf gut Glück noch diverses Anderes beim Sonos-Device aktiviert... get Favourites, Radios etc. Neugestartet und siehe da, die Auswahlfelder sind belegt. Der Sonntag ist gerettet. Tausend Dank für deine Hilfe!
LG is2late
hallo zusammen,
ich habe jetzt auch die diversen getFav... usw mit 1 aktiviert, leider bringt mir aber das Template keine Einträge in den Dropdown Feldern.
Gibt es da noch was, was ich übersehen habe?
Ich würde auch gerne das Cover einbauen, gibt es da Tipps?
Danke
Cover ist erledigt, mittels html.
Die Listen sind aber weiterhin leer, interressant wären eigentlich nur die Radiosender.
Hi,
hier mein RAW, vielleicht ist ja noch etwas Neues für Dich darunter:
defmod Sonos SONOS localhost:4711 30 1 5
attr Sonos getFavouritesListAtNewVersion 1
attr Sonos getListsDirectlyToReadings 1
attr Sonos getPlaylistsListAtNewVersion 1
attr Sonos getQueueListAtNewVersion 1
attr Sonos getRadiosListAtNewVersion 1
attr Sonos ignoredIPs 192.168.XXX.XX, 192.168.XXX.XX
attr Sonos room Sonos
attr Sonos targetSpeakDir /opt/fhem/SonosSpeak
attr Sonos targetSpeakFileTimestamp 1
attr Sonos targetSpeakMP3FileDir /opt/fhem/SonosSpeak
attr Sonos targetSpeakURL \\192.168.XXX.XXX\SonosSpeak
attr Sonos verbose 0
Wie genau hast Du die Cover reinbekommen?
is2late
Danke, muss ich überprüfen.
Im Template hab ich ein html eingefügt und platziert.
Siege screenshot oben.
Prima, danke!
Neuerdings wird bei mir jetzt der erste (der Playlist bzw der erste aufgerufene Titel) ständig wiederholt. "repeat" und "repeatOne" habe ich auf "0" gesetzt, trotzdem.... Man muss im Menue per Hand weiterschalten, um den nächsten Titel zu bekommen.
Weiß jemand Rat?
Nach zweimaligem Restart läuft es jetzt... vielleicht waren die Repeat-Einstellungen die Lösung...obwohl unklar, warum es früher ohne diese Einstellungen lief...