SB-Player: Zeigt her eure Oberflächen!

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

Vorheriges Thema - Nächstes Thema

Standarduser

Danke für die Rückmeldung. Meinst du, das Problem ließe sich mit einem Pi3 umgehen oder planst du diesbezüglich noch eine Optimierung?

ms_steini

Zitat von: ChrisD am 05 März 2017, 21:26:03
........

@ms_steini:
ReadingsVal("Max2Play.OG.Diele","ftuiPlaylistsItems",0) =~ /(Meral)/gibt 1 zurück wenn das Reading das Wort 'Meral' enthält. Was möchtest du genau tun ? Ein Reading welches nur die Playlisten mit dem Zusatz 'Meral' enthält ?

Grüße,

ChrisD

Hallo ChrisD,
ersteinmal Danbke für Deine Hilfe

ich möchte ein, bzw. 3 UserReadings mit den Playlisten der der Frau und den Kindern. Also 1 UserReading welches nur die Playlisten mit dem Zusatz 'Meral', 1 mit dem zusatz 'Shirin' und 1 mit dem Zusatz 'Henna'

Besten Dank
LG


ChrisD

Hallo,

@ms_steini: Du könntest dies verwenden:
PlayList_Meral:ftuiPlaylistsItems.* {join ':',grep(/Meral/i, split(':',ReadingsVal($name,'ftuiPlaylistsItems','')))}
split teilt das Reading ftuiPlaylistsItems in ein Array auf, grep liefert ein Array mit den Elementen zurück die den Suchstring enthalten und join packt alles zusammen.

@Standarduser: Ich versuche herauszufinden wo das Problem herkommt und wie ich es umgehen kann. Ich glaube nicht dass ein Pi3 einen großen Unterschied macht.

Grüße,

ChrisD

ms_steini

Zitat von: ChrisD am 06 März 2017, 08:58:28
Hallo,

@ms_steini: Du könntest dies verwenden:
PlayList_Meral:ftuiPlaylistsItems.* {join ':',grep(/Meral/i, split(':',ReadingsVal($name,'ftuiPlaylistsItems','')))}
split teilt das Reading ftuiPlaylistsItems in ein Array auf, grep liefert ein Array mit den Elementen zurück die den Suchstring enthalten und join packt alles zusammen.

@Standarduser: Ich versuche herauszufinden wo das Problem herkommt und wie ich es umgehen kann. Ich glaube nicht dass ein Pi3 einen großen Unterschied macht.

Grüße,

ChrisD

alter Schwede..... das hätte ich nie und nimmer hinbekommen. Ist das reines PEARL ? ich glaube ich muß mich noch intensiever damit beschäftigen. Super Dankeschön, funktioniert.

Mal ne ganz blöde Frage,
kann man da auch eine z.B. 99_myUtills_Playlisten erstellen die die Userreadings anlegt wobei dort dann der Namenszusatz "Meral", "Markus".... und was ich da sonst noch habe wieder raus nimmt.
Das sieht im FTUI in einem Select nicht mehr ganz so schön aus wenn hinter jeder Playliste ein Name steht.

Vorgestellt habe ich mir das so:
1. einlesen aller Playlisten
2. Splitten der Playlisten anhand des Namenszusatz
3. Userreading erstellen z.B. Playliste_Meral, Playliste_Markus usw. wobei die Playlisten dann ohne Namenszusatz aufgelistet werden.

Ist das so überhaupt möglich ? Wenn ja, gibt es ähnliche Beispiele oder kann mich jemand auf den richtigen Weg leiten....

Besten Dank


Tobias

Zitat von: ms_steini am 18 Februar 2017, 14:54:10
Ist es möglich die Playlisten in so einer Art "medialist" auflisten zu lassen und nicht als select ?
Ich habe leider nichts gefunden oder falsch gesucht.
Falls du deine Playlist lokal ans filesystem angebunden hast, kann dir das FHEM Modul "98_Medialist.pm" weiterhelfen. Ist noch nicht im FHEM-Repo, nur im selbigen Thread zum Testen verfügbar
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

ms_steini

Zitat von: Tobias am 08 März 2017, 13:15:58
Falls du deine Playlist lokal ans filesystem angebunden hast, kann dir das FHEM Modul "98_Medialist.pm" weiterhelfen. Ist noch nicht im FHEM-Repo, nur im selbigen Thread zum Testen verfügbar

Hi, besten Dank...

ich habe mir den Thread mal durchgelesen, sieht viel versprechend aus.
Ich lese immer Sonos und MPD, ich habe SB_Player bzw. LMS (LogitechMediaServer). funktioniert das damit auch oder sind das 2 uterschiedliche paar Schuhe und es ist egal ?
ich mein ja nur, bevor ich jetzt mit testen anfange und das geht von vorneherein schon garnaivht.

ChrisD

Hallo,

Zitatkann man da auch eine z.B. 99_myUtills_Playlisten erstellen die die Userreadings anlegt wobei dort dann der Namenszusatz "Meral", "Markus".... und was ich da sonst noch habe wieder raus nimmt.
Das sieht im FTUI in einem Select nicht mehr ganz so schön aus wenn hinter jeder Playliste ein Name steht.

Dafür gibt es 2 Möglichkeiten:
- du verwendest ein weiteres userReading ohne die Namenszusätze mit dem FTUI-Select-Widget, z.B.
PlayList_Meral_List:ftuiPlaylistsAlias.* {my $pa=join ':',grep(/Meral/i, split(':',ReadingsVal($name,'ftuiPlaylistsAlias',''))); $pa=~s/_Meral//gi;return($pa)}

Im select-Widget kannst du dann
  data-alias="PlayList_Meral"
  data-list="PlayList_Meral_List"
einsetzen.
- du verwendest ein notify auf ftuiPlaylistsItems welches eine Funktion in 99_... aufruft welche Readings setzt

Die 2. Methode hat den Vorteil dass du nur 1 notify benötigst welches die Readings bei allen Playern setzen kann. Weiterhin könntest du dabei auch den passenden JSON-String für das Medialist-Widget zusammenbauen.

Grüße,

ChrisD

ChrisD

Hallo,

@Standarduser: Auf welchem Wert steht das Attribut 'longpoll' beim Gerät 'WEB' ? Ich kann den Effekt nur reproduzieren wenn 'longpoll' auf 'websocket' steht, wenn der Wert auf 1 steht gibt es keine Fehlermeldung.

Grüße,

ChrisD



Standarduser

Zitat von: ChrisD am 13 März 2017, 16:51:37
@Standarduser: Auf welchem Wert steht das Attribut 'longpoll' beim Gerät 'WEB' ? Ich kann den Effekt nur reproduzieren wenn 'longpoll' auf 'websocket' steht, wenn der Wert auf 1 steht gibt es keine Fehlermeldung.

Hi ChrisD,

ich nutze tatsächlich websocket. Denkst Du, Du findest dafür (irgendwann) eine Lösung oder muss ich umstellen?

ChrisD

Hallo,

Im Moment unterstützt die Websocket-Implementierung in 01_FHEMWEB.pm nur maximal 64K Daten. Wenn mehr Daten vorliegen wird die Länge modulo 64K an den Client geschickt der damit nichts anfangen kann.

Zu Testzwecken kannst du in 01_FHEMWEB.pm die Funktion
sub
FW_addToWritebuffer($$@)
{
  my ($hash, $txt, $callback, $nolimit) = @_;

...

  return addToWritebuffer($hash, $txt, $callback, $nolimit);
}

ersetzen durch
sub
FW_addToWritebuffer($$@)
{
  my ($hash, $txt, $callback, $nolimit) = @_;

  if( $hash->{websocket} ) {
    my $len = length($txt);
    if( $len < 126 ) {
      $txt = chr(0x81) . chr($len) . $txt;
    } else {
      if ( $len < 65536 ) {
        $txt = chr(0x81) . chr(0x7E) . pack('n', $len) . $txt;
      } else {
        $txt = chr(0x81) . chr(0x7F) . chr(0x00) . chr(0x00) . chr(0x00) . chr(0x00) . pack('N', $len) . $txt;
      }
    }
  }
  return addToWritebuffer($hash, $txt, $callback, $nolimit);
}

und FHEM neu starten. Bitte unbedingt vorher eine Sicherungskopie der Datei erstellen.

Grüße,

ChrisD

Standarduser

Hi ChrisD,

das funktioniert sehr gut, so wie Du es beschrieben hast. Allerdings hinterlässt das auch ein kleinwenig ungutes Gefühl. Beim nächsten Update ist diese Änderung ja wieder weg.
Soll ich das irgendwo als Verbesserungsvorschlag einreichen?

Eine Sache ist jetzt übrigens noch:
Bei den langen Playlisten gibt es Probleme mit einigen Tracks auf der Liste. Dies betrifft zumeist die ersten 4-10 Tracks, je nach Länge der Liste. Für diese ersten Tracks werden überhaupt keine Informationen ermittelt. Weder Interpret, noch Track, noch Cover...


[{"Artist":"-","Title":"-","Album":"-","Time":"0","File":"-","Track":"0","Cover":"-"},
{"Artist":"-","Title":"-","Album":"-","Time":"0","File":"-","Track":"0","Cover":"-"},
{"Artist":"-","Title":"-","Album":"-","Time":"0","File":"-","Track":"0","Cover":"-"},
{"Artist":"-","Title":"-","Album":"-","Time":"0","File":"-","Track":"0","Cover":"-"},
{"Artist":"Chad Kroeger, Josey Scott","Title":"Hero (feat. Josey Scott)","Album":"Hero (feat. Josey Scott)","Time":"200","File":"spotify://track:779ooI3rBd0CLqCiiJmtVo","Track":"0","Cover":"https://i.scdn.co/image/de23e248c128a15f7da79c8522a048fee6c78852"},
{"Artist":"Foo Fighters","Title":"Learn to Fly","Album":"Greatest Hits","Time":"234","File":"spotify://track:0mWiuXuLAJ3Brin3Or2x6v","Track":"0","Cover":"https://i.scdn.co/image/3b505559c2bce1f6205eeb0b19d65e3a2c8f5617"},
...

fisch192

#146
Hey Leute,

hab jetzt meine Sb-player Tabelt UI Steuerung eingerichtet. Leider aktualisiert sich die "currentTrackPosition" nicht. Hab ihr irgend eine Idee wie ich das beheben könnte?



Tablet UI

<div class="top-space-2x">
         <div data-type="label"
              data-device="hifi.bad"
              data-get="currentTrackPosition"
              data-substitution="toMinFromSec()"
              class="inline middle">
         </div>
         <div data-type="level"
            data-device="hifi.bad"
            data-get="currentTrackPosition"
            data-min="0"
            data-max="duration"
            data-width="300"
            data-color="grey"
            class="horizontal inline">
         </div>
         <div data-type="label"
              data-device="hifi.bad"
              data-get="duration"
              data-substitution="toMinFromSec()"
              class="inline middle">
         </div>
        </div>

grossmaggul

Hallo,

hast Du die "trackPositionQueryInterval" im Device vielleicht zu lang gesetzt?
FHEM auf Debian 12 Bookworm Server, Supermicro Core2Duo Board, 2 TB HD RAID 1, 8GB RAM, 2 x nanoCUL868, 1 x nanoCUL465; Homematic, MAX, MiLight, HUE,  2 x Gosund SP1,WLED

Standarduser

Hat das Device wirklich einen : im Namen?

ChrisD

Hallo,

@Standarduser:
ZitatBeim nächsten Update ist diese Änderung ja wieder weg.
Ab heute ist die Änderung in der offiziellen Version enthalten.

Grüße,

ChrisD