[FUIP] Was für Player.... bei mir Sonos

Begonnen von stenny, 03 März 2019, 15:48:07

Vorheriges Thema - Nächstes Thema

stenny

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

Thorsten Pferdekaemper

Hi,
das ist ja ein ziemliches Monster-Teil. Kannst Du mal einen Screenshot davon hier dranhängen?
Gruß,
   Thorsten
FUIP

Esjay

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

Thorsten Pferdekaemper

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
FUIP

stenny

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

stenny73

Hallo

Jetzt endlich zwei Bilder....

Im Moment viel Unterwegs (eine Silberhochzeit, eine Beerdigung, ein runder Geburtstag....)
Von Unterwegs zeitlich kaum mehr möglich....
FHEM auf XEN, Ubuntu-Server 14.04   - HM-Lan - Max - ZWave -WS1080 -BlueTooth

FHEM auf Ubuntu-Server 14.04   - HM-LAN

FHEM auf Raspberry Pi   - CSM für Max - HM-USB - WiFi-LED

Thorsten Pferdekaemper

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
FUIP

stenny


Thorsten Pferdekaemper

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
FUIP

stenny

War der Zeit und meinem Zustand geschuldet.....

Nur Edge Netz im Krankenhaus....



Gesendet von iPhone mit Tapatalk

Thorsten Pferdekaemper

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
FUIP

stenny

Eigentlich schon.
Aber bewusst nicht genommen, mal die Auszeit nutzen.....

Danke


Gesendet von iPhone mit Tapatalk

Thorsten Pferdekaemper

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
FUIP

stenny

Dazu fehlt mir das Talent

Ich bin und bleib ein Nutzer


Gesendet von iPhone mit Tapatalk

is2late

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
Pi4, Tahoma Jalousien, Hue, Echo, Sonos, Lupusec XT3, FritzBox