Squeezebox Modul - erste Version

Begonnen von bugster_de, 17 Dezember 2013, 22:12:10

Vorheriges Thema - Nächstes Thema

ChrisD

Hallo,

Das liegt daran dass es sich nicht um einen 'einfachen' Bindestrich handelt sondern um einen 'EN DASH' (Unicode 2013). Dieser wird (wie alle Unicode-Zeichen) bei den Playlists der Plugins entfernt, bei den normalen dagegen nicht.

Ich muss dies anpassen, weiß aber nicht in welche Richtung. Wenn ich mich recht erinnere führten verschiedene Unicode-Zeichen (z.B. í und ô) zu Problemen mit der Darstellung in FHEM oder FTUI.

Grüße,

ChrisD

ChrisD

Hallo,

Hier eine angepasste Version vom Server-Modul die die Namen aller Wiedergabelisten und Favoriten identisch behandelt.

Kannst du testen ob damit die doppelten Einträge weg sind ?

Grüße,

ChrisD

holle75

#2237
Teste ich. Gib mir ein paar Tage ... Danke

EDIT: nach Neustart und erstem Blick siehts gut aus.... ich teste noch ausführlicher ...

holle75

.... sieht auch nach jetzt längerem Probieren noch immer gut aus. Danke Chris.

dadoc

#2239
Moin,
ich war schon lang auf der Suche nach einem physischen Controller für bestimmte Player, mit dem man Basis-Funktionen wie MUTE oder VOLUME schnell und ohne umständlich das Handy zu suchen, die App zu starten usw. nutzen kann.
Zum einen habe ich mir dafür kürzlich den coolen "Roon Knob" geholt, der viel mehr kann. Allerdings hat er eine extrem kurze Batterienutzungsdauer und massive Wifi-Reichweitenprobleme.
Nun habe ich mir eine einfachere und sehr preiswerte Alternative gebastelt, die in fhem nutzbar ist, wenn man bereits zigbee2mqtt integriert hat: Den Bilresa E2490 Remote von Ikea. Das ist eine kleine Fernbedienung mit Scrollrad und zwei Buttons 5,99€), die offiziell Matter, halb inoffiziell (Ikea schweigt dazu weitestgehend) aber auch Zigbee unterstützt.
Wenn man sie mittels zigbee2mqtt und meinem Template in fhem geholt hat, kann man mit einem notify
- die Lautstärke eines oder mehrere Player steuern,
- sie durch Druck auf das Scrollrad muten/unmuten
- durch Doppelklick auf das Scrollrad durch die Favoriten scrollen (der untere Button wird im Zigbee-Modus nicht genutzt).
Das funktioniert prima, Reichweite ist exzellent (wie bei fast allen Zigbee-Geräten) und die beiden AAA-Batterien halten recht lange.
Vielleicht kann es ja jemand brauchen. Namen müssen ggfalls angepasst werden. Das Beispiel geht davon aus, dass die Fernbedienung in fhem Bilresa heisst, das notify di_Bilresa_SB. Zudem muss
attr NOTIFY-NAME userattr players
attr NOTIFY-NAME players PLAYER-NAME1[,PLAYER-NAME2,PLAYER-NAME3...]
gesetzt werden.
Bilresa:action:.* {
  # Liste der Player aus Attribut
  my @targets = split(",", AttrVal("di_Bilresa_SB","players",""));
  return unless @targets;

  my $act      = ReadingsVal("Bilresa","action","");
  my $lvl255   = ReadingsNum("Bilresa","action_level",0);

  # 0–255 → 0–100
  my $lvl = int(($lvl255/255)*100);
  $lvl = 0   if $lvl < 0;
  $lvl = 100 if $lvl > 100;

  # Helper-Hash für intern genutzte Speicherwerte
  my $hash = $defs{"di_Bilresa_SB"};
  $hash->{helper}{lastUsed} //= $targets[0];
  my $last = $hash->{helper}{lastUsed};

###################################
# Double → Favoriten wechseln
###################################
if($act eq "on_double") {

  my $favstr = ReadingsVal($last,"ftuiFavoritesItems","");
  return unless $favstr ne "";

  my @fav = split(":", $favstr);
  return unless @fav;

  my $current = ReadingsVal($last,"favorites","");

  my $idx = 0;
  for(my $i=0; $i<@fav; $i++){
    if($fav[$i] eq $current){
      $idx = $i;
      last;
    }
  }

  $idx = ($idx+1) % scalar(@fav);

  fhem("set $last favorites $fav[$idx]");
  return;
}

  ###################################
  # Scroll → Lautstärke 0–100
  ###################################
  if($act eq "brightness_move_to_level") {
    my $current = ReadingsNum($last,"volume",-1);
    if($current != $lvl) {
      fhem("set $last volume $lvl");
    }
    return;
  }

  ###################################
  # Single → Mute Toggle
  ###################################
  if($act eq "on" || $act eq "off") {
    my $muted = ReadingsVal($last,"mute","off");
    if($muted eq "on") {
      fhem("set $last mute");     # Alternativ: fhem("set $last toggleMute") falls unterstützt
    } else {
      fhem("set $last mute");
    }
    return;
  }
}
Ist noch sehr frisch, möglicherweise buggy und sicher optimierbar. Als NARP (Nicht Annähernd Richtiger Programmierer) habe ich es mit freundlicher Unterstützung durch ChatGPT gebaut...
Ich werde mir in der Nähe von jedem Player so ein Teil bereitlegen - es kommt mit magnetischer Wandhalterung.

edit: wer statt mute/unmute lieber Pause/Play auf den Button legt (wie ich es gerade als praktischer empfinde), kann den Mute-Part ersetzen durch
###################################
# Single → Play/Pause Toggle
###################################
if($act eq "on" || $act eq "off") {

  my $state = ReadingsVal($last,"playStatus","");

  if($state eq "playing") {
    fhem("set $last pause");
  } else {
    fhem("set $last play");
  }

  return;
}

Standort 1: FS20 mit CUL und FHEM auf Raspi. HM-Komponenten (Heizung, Rollladen, Schalter). HM IP über Raspimatic (testweise)
Standort 2: Homematic (Wired) über CCU2 und PocketHome HD
3 x Raspi3 mit piCorePlayer/Kodi für Multiroom Audio (+ Tablets/iPeng/iPods