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?
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?
MWn geht die Sprachausgabe bei Multiroom-Devices nicht (wir sprechen ja von echodevice-Devices?).
Das geht nur über "reale" Geräte.
Gruß, Joachim
@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.
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...
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
Zitat von: Beta-User am 05 Oktober 2025, 18:35:31Hattest du es schon "richtig" versucht?
Wenn ich eins in 49 Jahren gelernt habe, dann das "Richtig" für jeden etwas anderes ist.
Für mich bedeutet Richtig z.B. ausführlich, Schritt für Schritt und ohne Abkürzungen, so dass ich es auch Jahre später schnell wieder richtig interpretieren kann. Für andere bedeutet es den kürzeszen und unüberschaubarsten Weg zu gehen. Wir sind eben verschiedene Menschen.
Zitat von: Beta-User am 05 Oktober 2025, 18:35:31Gemecker bringt dich jedenfalls nicht weiter
Wer meckert denn? Die einzigen die ich meckern höre seid ihr. Du must dies, du must jenes und auf jeden Fall erst mal Perl lernen, zumindest die Grundlagen. Ich sage jetzt mal was, das einzige was ich MUSS ist sterben. Und für den Fall dass es nicht verstanden wird: ICH WILL KEIN PERL LERNEN!
Das ist doch das gleiche als wenn du einen Brief in Word schreiben willst, ich aber erst mal erwarte, dass du Visual Basic von Microsoft lernst. Ich arbeite mit Fhem, das bedeutet nicht, dass ich irgendetwas dafür programmieren will. Wenn etwas nicht geht, dann geht es eben nicht. So ist das leben, da mecker ich nicht drüber, sondern du meckerst darüber, dass es Menschen wie mich gibt, die nicht noch eine Programmiersprache lernen wollen, die nicht monatelang unverständliche Dokumente lesen wollen.
Wenn dir das nicht passt, selavie, dann ist dem eben so, aber versuche bitte nicht mich dazu zu zwingen Perl zu lernen weil du nicht bereit bist über deinen schatten zu springen und vernünftig mit mir zu reden.
Zitat von: Marko1976 am 05 Oktober 2025, 16:48:39Gebe 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.
Ich hatte HIER (https://forum.fhem.de/index.php?msg=1300558) mal einen möglichen Workaround aufgezeigt. Vielleicht ist das ja was für Dich
@JudgeDredd
Wenn ich deinen Post in dem anderen Threat richtig verstehe hast du quasi für jede mögliche Durchsage eine Routine erstellt, die du dann aus Fhem heraus lediglich gestartet hast.
Deshalb geht es auch nur mit statischem Text, oder?
Leider sind bei mir viele Ansagen dynamisch, aber es ist ein interessanter Workaround den ich mal genauer prüfen muss ob er nicht zumindest teilweise einsetzbar ist.
Zitat von: Marko1976 am 05 Oktober 2025, 21:27:17hast du quasi für jede mögliche Durchsage eine Routine erstellt, die du dann aus Fhem heraus lediglich gestartet hast.
Deshalb geht es auch nur mit statischem Text, oder?
Exakt so ist es. Allerdings verwende ich vermutlich nicht soviele Ansagen wie Du. Ich komme auf max. 10 unterschiedliche