Squeezebox Modul - erste Version

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

Vorheriges Thema - Nächstes Thema

FHEMAN

Zitat von: ChrisD am 18 Oktober 2016, 19:43:59
@FHEMAN:Dies ist im Moment nicht im Modul vorgesehen. Du müsstest dich selbst um das Syncen kümmern. Bei Interesse kann ich es aber einbauen.
Dieser Teil ist aufwändiger da hierfür quasi der gesamte Zustand des Servers abgespeichert und wieder hergestellt werden muss.

Vielleicht hätten noch andere Interesse an diesem Feature, sofern die Umsetzung für dich mit vertretbarem Aufwand möglich ist. Sonst versuche ich mich mal an einer Funktion in der myUtils. Gerade habe ich im dem aktuellen LMS Build etwas von Synchronisations-Szenen gelesen.. hmmm.

Da hier ja so viel Squeezebox Knowhow rumschwirrt noch eine andere Frage: Kann ich irgendwo im SB Client oder Server Menü ein Offset für die Lautstärke einstellen? Ich möchte gerne die Funktion der Lautstärkesynchronisierung nutzen. Allerdings habe ich verschiedene Hardware mit unterschiedlichen Pegeln. Oder führt hier nichts am alsamixer vorbei?

Gruß
Ronny
NUC7i5 | PROXMOX | FHEM 6.2 | 1 HMLAND | 2 UART | HM | LMS | HIFIBERRY | DOORBIRD | BLINK | BUDERUS | HUE | ALEXA | MILIGHT | LUFTDATENINFO | MQTT| ZIGBEE2MQTT | INDEGO | ROBOROCK | SMA | APC | OPENWB

ChrisD

Hallo,

ZitatGerade habe ich im dem aktuellen LMS Build etwas von Synchronisations-Szenen gelesen..
Kannst du mir einen Link dazu schicken. Wenn bereits etwas im LMS vorgesehen ist, werde ich versuchen das zu integrieren.

ZitatKann ich irgendwo im SB Client oder Server Menü ein Offset für die Lautstärke einstellen?
Es gibt eine Einstellung namens preampVolumeControl. Damit kann bei Playern die dies unterstützen (wozu z.B. Squeezeslave nicht zählt) die Lautstärke unabhängig vom volume-Setting angepasst werden.

In deinem Fall ist alsamixer wahrscheinlich die beste Lösung. Alternativ könntest du ein Plugin für den LMS verwenden welches die Lautstärke anpasst. Leider ist mir kein fertiges Plugin dafür bekannt.

Grüße,

ChrisD

FHEMAN

#1217
Hallo Chris!

Zitat von: ChrisD am 22 Oktober 2016, 21:51:21
Hallo,
Kannst du mir einen Link dazu schicken. Wenn bereits etwas im LMS vorgesehen ist, werde ich versuchen das zu integrieren.
Es handelt sich um das Plugin
Synchronisations-Szenen von Eric Koldinger
Leider konnte ich keine weiteren Infos dazu finden, die Seite http://koldware.com/ ist leider nicht erreichbar.
Es liefert tatsächlich Presets von gesyncten Geräten, die man auswählen kann.

//edit: habe herausgefunden, dass die Auswahl der gespeicherten Szene per Radiogroup via URL übergeben wird an:
http://squeezeserver:9000/plugins/Synchronizer/index.html?master=74%3Ada%3A38%3A65%3A37%3A19&selectGroup=5

Zitat
Es gibt eine Einstellung namens preampVolumeControl. Damit kann bei Playern die dies unterstützen (wozu z.B. Squeezeslave nicht zählt) die Lautstärke unabhängig vom volume-Setting angepasst werden.

In deinem Fall ist alsamixer wahrscheinlich die beste Lösung. Alternativ könntest du ein Plugin für den LMS verwenden welches die Lautstärke anpasst. Leider ist mir kein fertiges Plugin dafür bekannt.
Damit spiele ich mal rum.

Eine andere Frage noch zu RECALL:
{play("020_OKAY.mp3", "SB.Essen")} funktioniert bei mir nicht bzw. es wird nichts abgespielt:

sub play($;$) {
my ($file, $player) = @_;
$player //= "SB\..*:FILTER=TYPE=SB_PLAYER:FILTER=room=Audio";
my $dir = "/mnt/nasmusik/[sounds]/";
if ($file) {
fhem("set $player save SavedStatePlay");
fhem("set $player playlist play file://" . $dir . $file);
fhem("set $player recall SavedStatePlay del");
    }
}

Im Log taucht auf, ohne das etwas passiert:
2016-10-25_00:11:42 SB.Essen playlist play file:///mnt/nasmusik/[sounds]/020_OKAY.mp3
Wenn ich "manuell" set SB.Essen playlist play file:///mnt/nasmusik/[sounds]/020_OKAY.mp3 ausführe, klappt es.

Kann es sein, dass der Recall schon vor oder fast zeitgleich mit dem play ausgeführt wird?
NUC7i5 | PROXMOX | FHEM 6.2 | 1 HMLAND | 2 UART | HM | LMS | HIFIBERRY | DOORBIRD | BLINK | BUDERUS | HUE | ALEXA | MILIGHT | LUFTDATENINFO | MQTT| ZIGBEE2MQTT | INDEGO | ROBOROCK | SMA | APC | OPENWB

FHEm2005

#1218
Hallo Ronny,
mir sieht der Begriff "if ($file)" etwas komisch aus. Hier fehlt die Prüfung, wie die Bedingung heißen soll. Wenn die Prüfung "existiert" heißen soll, müsste es m.E. lauten: "if (-e $file) {".

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

ChrisD

Hallo,

Zitatdie Seite http://koldware.com/ ist leider nicht erreichbar.

Die Addresse hat sich geändert: http://www.koldware.net/SlimStuff/

Ob das Plugin mit der aktuellen Version des LMS funktioniert habe ich noch nicht getestet. Es unterstützt 4 CLI-Befehle die du über cliraw verwenden kannst: syncTop, syncUnsync, syncSyncToMe und syncSyncToSet

Zitat{play("020_OKAY.mp3", "SB.Essen")} funktioniert bei mir nicht bzw. es wird nichts abgespielt:
Die Befehle werden direkt hintereinander an den LMS geschickt, das play hat also kaum eine Chance etwas auszugeben durch das nachfolgende recall.

Nach dem play musst du abwarten bis das mp3 zu Ende ist und dann erst recall aufrufen.

Der talk-Befehl macht dies intern, eventuell kannst du ihn dazu verwenden:

sub play($;$) {
my ($file, $player) = @_;
$player //= "SB\..*:FILTER=TYPE=SB_PLAYER:FILTER=room=Audio";
my $dir = "/mnt/nasmusik/[sounds]/";
if ($file) {
fhem("set $player talk |". $dir . $file . "|");
    }
}


Den Code solltest du aber nur verwenden wenn die Player nicht synchronisiert sind.

Grüße,

ChrisD

mrbreil

Also ich speichere alle wichtigen Readings -> Sprachausgabe -> starte ein abfrage die jede Sekunde prüft ob die "Durchsage" fertig ist -> stellt den alten Zustand wieder her.

DEF
TTS_Alle.* {

my $status=ReadingsVal("TTS_Master", "state", "off");
my $TTS_Alle_Text=ReadingsVal("TTS_Alle", "state", "kein Text");

fhem("set mySBTTS tts $TTS_Alle_Text");

    my @player = "";

$player[0] = "piCore_Wohnzimmer";
   $player[1] = "piCore_Schlafzimmer";
   $player[2] = "piCore_Bad";

fhem ("setreading TTS_Alle player0 $player[0]");
  fhem ("setreading TTS_Alle player1 $player[1]");
    fhem ("setreading TTS_Alle player2 $player[2]");

my @playername = "";
   
    $playername[0]=InternalVal($player[0], "PLAYERNAME", "none");
    $playername[1]=InternalVal($player[1], "PLAYERNAME", "none");
    $playername[2]=InternalVal($player[2], "PLAYERNAME", "none");

fhem ("setreading TTS_Alle playername0 $playername[0]");
    fhem ("setreading TTS_Alle playername1 $playername[1]");
    fhem ("setreading TTS_Alle playername2 $playername[2]");

if ($status ne "off") {

fhem ("set $player[0] statusRequest");
    fhem ("set $player[1] statusRequest");
fhem ("set $player[2] statusRequest");
       
        fhem ("set $player[0] resetTTS");
    fhem ("set $player[1] resetTTS");
    fhem ("set $player[2] resetTTS");

my @sync_status = "";
               
        $sync_status[0]=InternalVal($player[0], "SYNCMASTERPN", "none");
        $sync_status[1]=InternalVal($player[1], "SYNCMASTERPN", "none");
        $sync_status[2]=InternalVal($player[2], "SYNCMASTERPN", "none");

fhem ("setreading TTS_Alle sync0 $sync_status[0]");
        fhem ("setreading TTS_Alle sync1 $sync_status[1]");
        fhem ("setreading TTS_Alle sync2 $sync_status[2]");

my @volume = "";
       
        $volume[0]=ReadingsVal($player[0], "volumeStraight", "60");
        $volume[1]=ReadingsVal($player[1], "volumeStraight", "60");
        $volume[2]=ReadingsVal($player[2], "volumeStraight", "60");

fhem ("setreading TTS_Alle volume0 $volume[0]");
        fhem ("setreading TTS_Alle volume1 $volume[1]");
        fhem ("setreading TTS_Alle volume2 $volume[2]");

my @play = "";
       
        $play[0]=ReadingsVal($player[0], "playStatus", "stopped");
        $play[1]=ReadingsVal($player[1], "playStatus", "stopped");
        $play[2]=ReadingsVal($player[2], "playStatus", "stopped");

fhem ("setreading TTS_Alle play0 $play[0]");
        fhem ("setreading TTS_Alle play1 $play[1]");
        fhem ("setreading TTS_Alle play2 $play[2]");

my @remotestream="";
       
        $remotestream[0]=InternalVal($player[0], "ISREMOTESTREAM", "1");
        $remotestream[1]=InternalVal($player[1], "ISREMOTESTREAM", "1");
        $remotestream[2]=InternalVal($player[2], "ISREMOTESTREAM", "1");

fhem ("setreading TTS_Alle remotestream0 $remotestream[0]");
        fhem ("setreading TTS_Alle remotestream1 $remotestream[1]");
        fhem ("setreading TTS_Alle remotestream2 $remotestream[2]");

my @position="";
       
        $position[0]=ReadingsVal($player[0], "currentTrackPosition", "10");
        $position[1]=ReadingsVal($player[1], "currentTrackPosition", "10");
        $position[2]=ReadingsVal($player[2], "currentTrackPosition", "10");

$position[0]=$position[0] - 6;
        $position[1]=$position[1] - 6;
        $position[2]=$position[2] - 6;

if($position[0] < 1){$position[0]=1};
        if($position[1] < 1){$position[1]=1};
        if($position[2] < 1){$position[2]=1};

fhem ("setreading TTS_Alle position0 $position[0]");
        fhem ("setreading TTS_Alle position1 $position[1]");
        fhem ("setreading TTS_Alle position2 $position[2]");

fhem("set $player[0] recall TTS delonly");
        fhem("set $player[1] recall TTS delonly");
        fhem("set $player[2] recall TTS delonly");

fhem("set $player[0] save TTS");
        fhem("set $player[1] save TTS");
        fhem("set $player[2] save TTS");

fhem("set $player[0] unsync");
        fhem("set $player[1] unsync");
        fhem("set $player[2] unsync");

fhem("set $player[0] stop");
        fhem("set $player[1] stop");
        fhem("set $player[2] stop");

fhem("set $player[0] volume 90");
        fhem("set $player[1] volume 90");
        fhem("set $player[2] volume 90");

fhem("set $player[0] sync $player[1],$player[2]");
        fhem("sleep 0.5;set $player[0] playlist play /opt/fhem/sound/hail.mp3");
fhem("sleep 2.5;set $player[0] talk $TTS_Alle_Text");
        fhem ("sleep 3.0;set at_TTS_rest active")

}


}

FHEMAN

#1221
Hallo Chris,
Zitat von: ChrisD am 25 Oktober 2016, 20:26:53
Ob das Plugin mit der aktuellen Version des LMS funktioniert habe ich noch nicht getestet. Es unterstützt 4 CLI-Befehle die du über cliraw verwenden kannst: syncTop, syncUnsync, syncSyncToMe und syncSyncToSet
Ach cool, danke! Damit spiele ich mal rum. Grundsätzlich scheint es mit dem aktuellen LMS zu funktionieren. (Es wird auch ohne eigenes Zutun damit ausgeliefert.)
Zitat
Die Befehle werden direkt hintereinander an den LMS geschickt, das play hat also kaum eine Chance etwas auszugeben durch das nachfolgende recall.

Nach dem play musst du abwarten bis das mp3 zu Ende ist und dann erst recall aufrufen.
Das dachte ich mir. Mit dem erwähnten talk Befehl spiele ich deshalb zur Zeit.
Um playlist play mit recall zu verwenden, müsste ich also per Notify auf das Fertigstellungsevent der Playlist warten.

Ich will am Ende auch verschiedene Lautstärken für die verschieden wichtigen Benachrichtigungen realisieren. Zum Beispiel soll die Benachrichtigung für Türklingel und Telefonanruf lauter sein und über alle "Squeezeboxen" gehen. Ebenso der Rauchmelderalarm, nur noch lauter. Die Benachrichtigung, dass morgen die gelbe Tonne abgeholt wird eher leise und nur auf 1-2 Squeezeboxen.

Mal sehen, wie ich das schaffe.

//edit: Die Lösung von mrbreil könnte dabei helfen. Wobei, wenn ich das richtig sehe, wird hier auch nur fest 3 Sekunden gewartet und nicht auf das tatsächliche Ende der Durchsage.

Zitat
Der talk-Befehl macht dies intern, eventuell kannst du ihn dazu verwenden:
...
Den Code solltest du aber nur verwenden wenn die Player nicht synchronisiert sind.
Deswegen ja idealerweise die Sync Gruppen.

Zitat von: FHEm2005
Hallo Ronny,
mir sieht der Begriff "if ($file)" etwas komisch aus. Hier fehlt die Prüfung, wie die Bedingung heißen soll. Wenn die Prüfung "existiert" heißen soll, müsste es m.E. lauten: "if (-e $file) {".
Hallo Eberhard,
das kannte ich noch gar nicht, danke für den Hinweis. Ich habe daher einmal nachgelesen: -e scheint auch bei einem Verzeichnis true zurückzugeben. Hingegen prüft -f anscheinend direkt nur gegen eine Datei.

Wobei ich nicht mal sicher bin, dass die (Perl/FHEM) Umgebung da überhaupt richtig Zugriff hat, denn das ist ja nur der Mount für den LMS.

Schöne Grüße
Ronny
NUC7i5 | PROXMOX | FHEM 6.2 | 1 HMLAND | 2 UART | HM | LMS | HIFIBERRY | DOORBIRD | BLINK | BUDERUS | HUE | ALEXA | MILIGHT | LUFTDATENINFO | MQTT| ZIGBEE2MQTT | INDEGO | ROBOROCK | SMA | APC | OPENWB

mrbreil

Zitat von: mrbreil am 26 Oktober 2016, 10:50:45starte ein abfrage die jede Sekunde prüft ob die "Durchsage" fertig ist -> stellt den alten Zustand wieder her.

+*00:00:01 {
   
my $talk_status = ReadingsVal("piCore_Wohnzimmer", "talkStatus", "idle");
       
    if ($talk_status eq "idle"){
   
my @player ="";
    my @playername="";
    my @sync_status="";
my @volume = "";
        my @play = "";
        my @remotestream="";
        my @position="";
   
        $player[0]=ReadingsVal("TTS_Alle", "player0", "");
    $player[1]=ReadingsVal("TTS_Alle", "player1", "");
        $player[2]=ReadingsVal("TTS_Alle", "player2", "");
       
        $playername[0]=ReadingsVal("TTS_Alle", "playername0", "");
        $playername[1]=ReadingsVal("TTS_Alle", "playername1", "");
        $playername[2]=ReadingsVal("TTS_Alle", "playername2", "");
           
    $sync_status[0]=ReadingsVal("TTS_Alle", "sync0", "none");
    $sync_status[1]=ReadingsVal("TTS_Alle", "sync1", "none");
    $sync_status[2]=ReadingsVal("TTS_Alle", "sync2", "none");
       
        $volume[0]=ReadingsVal("TTS_Alle", "volume0", "stopped");
    $volume[1]=ReadingsVal("TTS_Alle", "volume1", "stopped");
    $volume[2]=ReadingsVal("TTS_Alle", "volume2", "stopped");
       
        $play[0]=ReadingsVal("TTS_Alle", "play0", "60");
    $play[1]=ReadingsVal("TTS_Alle", "play1", "60");
    $play[2]=ReadingsVal("TTS_Alle", "play2", "60");
       
        $remotestream[0]=ReadingsVal("TTS_Alle", "remotestream0", "1");
    $remotestream[1]=ReadingsVal("TTS_Alle", "remotestream1", "1");
    $remotestream[2]=ReadingsVal("TTS_Alle", "remotestream2", "1");
       
        $position[0]=ReadingsVal("TTS_Alle", "position0", "");
    $position[1]=ReadingsVal("TTS_Alle", "position1", "");
    $position[2]=ReadingsVal("TTS_Alle", "position2", "");
       
        fhem("set $player[0] unsync");
        fhem("set $player[1] unsync");
        fhem("set $player[2] unsync");
       
        if ($sync_status[0] eq "none"){
        fhem ("set $player[0] recall TTS stop");
            if ($play[0] eq "playing"){
            fhem ("set $player[0] play");
                fhem ("set $player[0] currentTrackPosition $position[0]");
            }
        }
        if ($sync_status[0] ne "none"){
        if ($sync_status[0] eq  $playername[0]){
            fhem ("set $player[0] recall TTS stop");
                if ($play[0] eq "playing"){
            fhem ("set $player[0] play");
                    fhem ("set $player[0] currentTrackPosition $position[0]");
            }
            }
            if ($sync_status[0] ne $playername[0]){
            fhem ("set $player[0] sync $sync_status[0] asSlave");
            }
        }
       
        if ($sync_status[1] eq "none"){
        fhem ("set $player[1] recall TTS stop");
            if ($play[1] eq "playing"){
            fhem ("set $player[1] play");
                fhem ("set $player[1] currentTrackPosition $position[1]");
            }
        }
        if ($sync_status[1] ne "none"){
        if ($sync_status[1] eq  $playername[1]){
            fhem ("set $player[1] recall TTS stop");
                if ($play[1] eq "playing"){
            fhem ("set $player[1] play");
                    fhem ("set $player[1] currentTrackPosition $position[1]");
            }
            }
            if ($sync_status[1] ne $playername[1]){
            fhem ("set $player[1] sync $sync_status[1] asSlave");
            }
        }
       
        if ($sync_status[2] eq "none"){
        fhem ("set $player[2] recall TTS stop");
            if ($play[2] eq "playing"){
            fhem ("set $player[2] play");
                fhem ("set $player[2] currentTrackPosition $position[2]");
            }
        }
        if ($sync_status[2] ne "none"){
        if ($sync_status[2] eq  $playername[2]){
            fhem ("set $player[2] recall TTS stop");
                if ($play[2] eq "playing"){
            fhem ("set $player[2] play");
                    fhem ("set $player[2] currentTrackPosition $position[2]");
            }
            }
            if ($sync_status[2] ne $playername[2]){
            fhem ("set $player[2] sync $sync_status[2] asSlave");
            }
        }

        fhem ("set $player[0] volume $volume[0]");
        fhem ("set $player[1] volume $volume[1]");
        fhem ("set $player[2] volume $volume[2]");
       
        fhem ("set at_TTS_rest inactive");
   
    }
}

ChrisD

Hallo,

Ich habe das Servermodul erweitert so dass Sync-Gruppen von Playern gebildet werden können. Dazu gibt es neue Befehle:

set <server> syncGroup addp playerA,playerB,playerC,playerD Gruppe_1
fügt 4 Player zu Gruppe_1 hinzu, wenn die Gruppe noch nicht existiert wird sie angelegt und playerA wird Master.

set <server> syncGroup removep playerB,playerC Gruppe_1
entfernt 2 Player aus Gruppe_1, falls einer Master war wird der 1. verbleibende Player der Gruppe zum neuen Master.

set <server> syncGroup masterp playerD Gruppe_1
legt playerD als Master fest

set <server> syncGroup load Gruppe_1
aktiviert die Gruppe_1, die betroffenen Player werden aus ihren bisherigen Gruppen entfernt und zu einer neuen Gruppe zusammengefügt

set <server> syncGroup load poweron Gruppe_1
zusätzlich werden alle Player eingeschaltet (soweit wie möglich)

set <server> syncGroup delete Gruppe_1
löscht Gruppe_1

Die Gruppen werden bei SAVE und SHUTDOWN abgespeichert und beim Start von FHEM geladen.

Es gibt keine Dokumentation im Modul da die Befehle und Funktionalität noch ändern können.

Grüße,

ChrisD

kvo1

Hallo ChrisD,

Danke für die Erweiterung, werde es beo Gelegenheit (WE) mal testen !

gruss
kvo1
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

FHEMAN

Zitat von: ChrisD am 31 Oktober 2016, 22:08:25
Hallo,

Ich habe das Servermodul erweitert so dass Sync-Gruppen von Playern gebildet werden können. Dazu gibt es neue Befehle:

Das ist ja geil! Bin gerade am Testen...
Damit kann ich nun gezielt Durchsagen oder Benachrichtigungstöne an bestimme Geräte verteilen.
Besteht die Möglichkeit, die aktuelle Konfiguration als neue (oder vorhandene) Gruppe zu speichern? Somit hätte man auch hierfür eine Art recall und kann den alten Zustand nach einer Durchsage wiederherstellen.

Schönen Gruß und nochmal danke für deine ständigen Erweiterungen des Moduls!
Ronny
NUC7i5 | PROXMOX | FHEM 6.2 | 1 HMLAND | 2 UART | HM | LMS | HIFIBERRY | DOORBIRD | BLINK | BUDERUS | HUE | ALEXA | MILIGHT | LUFTDATENINFO | MQTT| ZIGBEE2MQTT | INDEGO | ROBOROCK | SMA | APC | OPENWB

ChrisD

Hallo,

ZitatBesteht die Möglichkeit, die aktuelle Konfiguration als neue (oder vorhandene) Gruppe zu speichern?
Darüber habe ich auch schon nachgedacht, aber noch keine einfache Lösung gefunden. Ich habe aber die Module nochmals erweitert:

SB_SERVER:
- Reading syncGroups hinzugefügt
- save und recall hinzugefügt

set LMS save Zustand_1
speichert den Zustand aller Player ab

set LMS recall Zustand_1
stellt den Zustand wieder her

Bei recall können wie beim Player die Optionen del und delonly hinter dem Namen des Zustandes angegeben werden.

SB_PLAYER:
- ttsoptions um eventondone erweitert, damit wird am Ende der TTS-Ausgabe ein Ereignis ttsdone ausgelöst auf das z.B. ein notify reagieren kann

Mit den Erweiterungen sollte sich eine Durchsage z.B. so realisieren lassen:

- vorbereiten:
set LMS syncGroup addp playerA,playerB,playerX Durchsage_1
attr playerA ttsOptions eventondone


- auslösen:
set LMS save NormalBetrieb
set LMS syncGroup load poweron Durchsage_1
define n_pAttsdone notify playerA:ttsdone set LMS recall NormalBetrieb del;;delete n_pAttsdone
set playerA talk |gong.mp3| Alarmanlage scharf |gong.mp3|


Grüße,

ChrisD

dadoc

Hallo zusammen,
mit wachsender Begeisterung stelle ich gerade die Multiroom-Beschallung auf Squeezeplayer & Co. um - vielen Dank für die tolle Arbeit an diesem Modul. Der Server läuft sehr schön auf meiner WD MyCloud Ext3. Als Player nutze ich iOS-Devices mit iPeng, aber ich denke darüber nach, ein paar Amazon Fire (7", 5. Gen.) mit Squeezeplayer zu verwenden und mir die Bastelei mit Raspis, Touchscreens usw. erst einmal zu sparen (jaja, ich weiß, der Headphone-Ausgang ist Hifi-mäßig nicht das Feinste, aber bei mir geht es vornehmlich um Sprache).
Wozu ich noch keine wirkliche Lösung gefunden habe ist die Frage, wie ich die Fire-"Player-Tablets" vom zentralen "Steuerungs-Tablet" aufwecken/aktivieren kann, ohne mich physikalisch in die jeweiligen Räume zu begeben und die Tablets einzuschalten.
Kennt jemand außer:
- Player-Tablets dauerhaft angeschaltet lassen
und
- USB-Netzteil über Schaltsteckdose schalten (was das Fire aufweckt)
noch andere Methoden, mit denen man die verfügbaren Squeezeplayer auf dem "Steuerungstablet" erscheinen lasssen könnte?
Danke & Grüße
Martin
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

Rince

@dadoc
Habe am RasPi einen HDMI-VGA Converter mit 3,5mm AudioOut und MicroUSB (Stromversorgung) dran. Am RasPi Audio auf HDMI gestellt. Gibt nen wesentlich besseren Sound für 12€...
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

dadoc

Danke für den Tipp. Aber ich wollte ja wie beschrieben keine Raspis als Player einsetzen, sondern 7-Zoll-Fire-Tablets, damit man die Player bei Bedarf auch im jeweiligen Raum komfortabel bedienen kann. Frage war nur noch, wie ich die Squeezeplayer (bzw. die Tablets - den Squeezeplayer bekomme ich wohl mit Tasker oder ähnlichen Apps autogestartet, wenn das Tablet erst mal anspringt) remote aufwecken kann.
Grüße
Martin
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