Ansagen in der kompletten Wohnung auf Echo-Geräten

Begonnen von Marko1976, 05 Oktober 2025, 16:48:39

Vorheriges Thema - Nächstes Thema

Marko1976

Hallo, hätte mal eine Frage zu Alexa.

Ich habe einige Ansagen in Fhem erstellt, die auf meinen Alexa Echo/Pop-Geräten ausgegeben werden.
Dazu nutze ich folgende Sub in meiner 99_myUtils:
sub Ansage($$) {
my ($Ansage, $Device)  = @_;
my @Echolist  = ($Device); # Namen der Lautsprecher
my $Echo  = "";

foreach $Echo (@Echolist) {
fhem("set $Echo speak \"$Ansage\"");
}
}
Einige davon sind individuell für einen bestimmten Raum gedacht aber viele sind eigentlich für die ganze Wohnung gedacht, so dass man sie hört egal wo man sich aufhält. Entsprechende Multiroom-Gruppe der Lautsprecher ist vorhanden und wird in Fhem auch angezeigt.

Aber egal ob ich über das Script oben gehe oder den Speak-Befehl direkt auswähle wird im Multiroom nichts ausgegeben. Gebe ich einzelne Echo's  oder eine Kommagetrennte Liste an, erfolgt die Ausgabe auf allen genannten Echo's. Nur beim Multiroom nicht. Da aber immer mal wieder einzelne Ansagen gescippt werden wenn ich die Geräte einzeln angebe, wäre der Multiroom besser.
Lautstärkeänderungen werden komischerweise im Multiroom angenommen, es geht nur um die Wiedergabe. Auch Play hat die gleichen Schwierigkeiten.

Habe ich da einen Denkfehler oder ist das ein Fehler innerhalb von Alexa?

Beta-User

Grausamer Code...

Wenn man schon prototype meint verwenden zu müssen, sollte man es richtig tun.

Und die Umlaufvariable muss man nicht vor der Schleife deklarieren. Man nimmt ggf. der Einfachheit halber $_.

Steht denn nichts im Log, wenn du diese Funktion aufrufst?
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

MadMax-FHEM

MWn geht die Sprachausgabe bei Multiroom-Devices nicht (wir sprechen ja von echodevice-Devices?).

Das geht nur über "reale" Geräte.

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Marko1976

@Beta-User
Zitat von: Beta-User am 05 Oktober 2025, 17:06:45Grausamer Code...
kann ich nicht beurteilen.
Zitat von: Beta-User am 05 Oktober 2025, 17:06:45Und die Umlaufvariable muss man nicht vor der Schleife deklarieren. Man nimmt ggf. der Einfachheit halber $_.
Lasse ich die Deklarationen weg meckert er mir genau das beim Speichern immer an. Und was $_ angeht, das ist doch der größte Mist den es gibt. Völlig unbestimmt, keiner kann sagen wofür es gerade steht, die Dokumentation dazu ist eine Katastrophe. Sowas gibt es in Keiner Programmiersprache. $_ macht es unüberschaubar und unklar, also genau das Gegenteil von einfacher - für mich jedenfalls.
Zitat von: Beta-User am 05 Oktober 2025, 17:06:45Steht denn nichts im Log, wenn du diese Funktion aufrufst?
Weder im Fhem-Log noch im Event-Monitor wird irgendetwas dazu eingetragen wenn ich den Speak-Befehl direkt aufrufe. Wenn ich die Funktion in 99_myUtils aufrufe wird im Event-Monitor folgendes geschrieben:
2025-10-05 18:20:53.863 DOIF ansage_Nachtlichtschaltung cmd_nr: 1
2025-10-05 18:20:53.863 DOIF ansage_Nachtlichtschaltung cmd: 1
2025-10-05 18:20:53.863 DOIF ansage_Nachtlichtschaltung cmd_event: set_cmd_1
2025-10-05 18:20:53.863 DOIF ansage_Nachtlichtschaltung Aktiv

@MadMax-FHEM
Zitat von: MadMax-FHEM am 05 Oktober 2025, 17:21:18MWn geht die Sprachausgabe bei Multiroom-Devices nicht (wir sprechen ja von echodevice-Devices?).
Ja tun wir und das wäre schade. Es funktioniert zwar wenn ich alle Echo's einzeln angebe aber es passiert halt immer wieder das Ansagen "verschluckt" werden - passiert zwar auch wenn sie nur auf einem Gerät ausgegeben werden sollen, aber je mehr Geräte gleichzeitig desto höher die Wahrscheinlichkeit dafür.

Beta-User

Die vermeintliche Forward-Deklaration macht jedenfalls nicht, was du glaubst.

Hattest du es schon "richtig" versucht?
   for my $Echo (@Echolist) {Gemecker bringt dich jedenfalls nicht weiter, ich bin dann mal raus mit dem Hinweis, dass ich zu Schleifen im FHEM-Kontext in den im Perl für fhem-user- Bereich des Forums einige Grundlagen gepostet habe, die vielleicht auch zur nachvollziehbaren Verwendung von $_ erhellen...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

MadMax-FHEM

Zitat von: Marko1976 am 05 Oktober 2025, 18:28:39Ja tun wir und das wäre schade. Es funktioniert zwar wenn ich alle Echo's einzeln angebe aber es passiert halt immer wieder das Ansagen "verschluckt" werden - passiert zwar auch wenn sie nur auf einem Gerät ausgegeben werden sollen, aber je mehr Geräte gleichzeitig desto höher die Wahrscheinlichkeit dafür.
Wurde im echodevice-Thread schon tausende Male diskutiert...

Evtl. mit einem sleep dazwischen...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)