NEWS
BUG - sayit geht nicht mehr !
-
@johndenver0815 sagte in BUG - sayit geht nicht mehr !:
Hi,
hm ich bin nicht sicher ob das hier ein sinnvoller Thread ist für so eine Frage. Hast Du mal in einem Thread spezieller zu Heos oder im GitHub bei dem Adapter gefragt?
Der SayIt-Adapter reiht sich bei mir leider in eine Liste nicht nutzbarer Adapter ein (u.a. IQontrol, Vis, diverse Wetteradapter), da das Zusammenspiel mit HEOS zumindest bei mir nicht 100%ig gegeben ist.
Solche Sätze, vor allem als Einstieg in einen Support-Wunsch, finde ich persönlich immer sehr schwierig, weil ich immer hin und hergerissen bin ob ich den Thread kapere ,um zu Fragen was genau damit gemeint ist, wo diese Probleme berichtet oder diskustiert wurden, das man Sie ggf fixen kann, oder ob ich darüber hinweg lese. Eine unverständliche negative Stimmung lassen Sie in jedem Fall bei mir aufkommen was ich schade finde...
-
Ich habe mir das jetzt mal angeschaut, weil ich auch drei Heos-Geräte habe bisher aber die Notwendigkeit noch nicht gesehen habe, diese mit Sayit zu beschicken.
Folgende Konstellation habe ich hergestellt:


Neue Sayit-Instanz angelegt:


Wenn ich den tts.text befülle und abfeuere, wird auf allen Heos-Geräten die Meldung ausgegeben.

Danach wird allerdings die letzte Musikszene fortgeführt obwohl die Geräte vorher aus waren.
Will man also den status quo vor der Meldung wiederherstellen muss ein wenig programmiert werden.Fazit: Hier funktioniert es!
-
@apollon77 sagte in BUG - sayit geht nicht mehr !:
Solche Sätze, vor allem als Einstieg in einen Support-Wunsch
Ich gebe zu, der Einstieg war suboptimal, sollte allerdings auch nicht triggern, den Thread zu kapern. Hier gibts evtl. auch ein Layer-8-Thema, wenns meinerseits drängelt werde ich die Themen rechtzeitig in den entsprechenden Threads platzieren. Solange knobel ich da noch selber dran. Sorry dafür

@meister-mopper sagte in BUG - sayit geht nicht mehr !:
Wenn ich den tts.text befülle und abfeuere, wird auf allen Heos-Geräten die Meldung ausgegeben.
Das funktioniert bei mir auch, keine Frage. Der Punkt war das "parallele Abspielen unterschiedlicher Texte bzw. das Abspielen nur auf einzelnen Geräten". Dafür gibts in den Adaptereinstellungen den Punkt "Gerät", der in meinen Augen genau dafür da ist. Drücke ich drauf kommt allerdings keine Auswahl.
Was habe ich damit vor?
Ich habe (wie wahrscheinlich der eine oder andere hier) Kinder im "schwerhörigen Alter" ;-), welche per Knopfdruck (z.B.) die Ansage "Essen ist fertig" oder "deine täglichen Aufgaben sind noch nicht erledigt" auf ihre Speaker bekommen sollen. Die Info brauche ich ja dann selbst in der Küche nicht, aber die Kids sollten das schon hören.
Edit: hier dudeln in Summe aktuell 10 Heos-Devices, die müssen nicht alle gleichzeitig "meckern".
-
@johndenver0815 sagte in BUG - sayit geht nicht mehr !:
Edit: hier dudeln in Summe aktuell 10 Heos-Devices, die müssen nicht alle gleichzeitig "meckern".
Reicht es denn nicht aus, tts mit (null) zu beschicken, damit das Gerät stumm bleibt?

-
@meister-mopper Wenn ich denn die Chance hätte, ein einzelnes Gerät auszuwählen, dann reicht es. Aber eben genau daran scheiterts…
-
@meister-mopper sagte in BUG - sayit geht nicht mehr !:
@johndenver0815 sagte in BUG - sayit geht nicht mehr !:
Edit: hier dudeln in Summe aktuell 10 Heos-Devices, die müssen nicht alle gleichzeitig "meckern".
Reicht es denn nicht aus, tts mit (null) zu beschicken, damit das Gerät stumm bleibt?

Grad nochmal nachgesehen, dein Screenshot ist ja vom Speaker, nicht von den SayIt-Objekten. Heisst das, ich müsste bei jeder getriggerten Ansage alle nicht erwünschten Player mit (null) beschicken? Klingt ein wenig wie "durch die Brust ins Auge". Von der Logik her wäre es doch vernünftiger, nur explizit die Player anzusteuern, die etwas ausgeben sollen.
Irgendwie entzieht sich mir auch noch der Zusammenhang zwischen der Sayit- und der Heos-Instanz. Für meine Begriffe generiert der Sayit-Adapter aus dem übergebenen Text ein mp3-File, welches dann wiederum vom Heos-Device abgespielt werden kann. Da ich letzteres im Sayit-Adapter aber nicht einstellen kann (oder ich habe wieder ein Syntaxthema) werden alle Heos-Devices getriggert. Daher auch die Frage, ob ich für jedes im Heimnetz eingebundene Heos-Device eine eigene Sayit-Instanz benötige... Zumindest ist hier dokutechnisch noch etwas Luft nach oben, intuitiv komme ich erstmal nicht weiter.
Danke und Grüße
-
Über ein Jahr her, aber irgendwie will es immernoch nicht laufen. Hat jemand noch eine Idee oder eine Anleitung zur Hand, wie ich per SayIt-Adapter explizit einzelne Heos-Devices ansteuern kann?
-
@johndenver0815
ChatGPT//sayIt setState('sayit.0.tts.text', 'Guten Morgen im Wohnzimmer.'); //Heos const heosPlayer = 'heos.0.player.1234567890.command'; // Beispiel: Wohnzimmer const ttsUrl = 'http://192.168.178.50:8082/state/sayit.0.tts.mp3'; setTimeout(() => { setState(heosPlayer, `play_stream,${ttsUrl}`); }, 2000); // 2s warten, bis MP3 fertig ist // mehrere function sayToHeos(playerName, text) { const sayIt = 'sayit.0.tts.text'; const base = 'heos.0.player.'; const players = { wohnzimmer: '1234567890', kueche: '9876543210', bad: '5555555555' }; const heosCmd = base + players[playerName.toLowerCase()] + '.command'; setState(sayIt, text); setTimeout(() => { const url = 'http://192.168.178.50:8082/state/sayit.0.tts.mp3'; setState(heosCmd, `play_stream,${url}`); }, 2000); } // Beispiele: sayToHeos('Wohnzimmer', 'Die Waschmaschine ist fertig.'); sayToHeos('Bad', 'Das Wasser ist warm.');Typische Stolperfallen
Problem Ursache Lösung Alle Lautsprecher sprechen HEOS-Gruppe aktiv Gruppe auflösen oder play_stream an Einzelgerät senden Kein Ton MP3 nicht erreichbar Web-Adapter aktivieren (Port prüfen) Erster Teil des Satzes fehlt MP3 noch nicht fertig 1–2 s Wartezeit nach SayIt hinzufügen SayIt spielt gleichzeitig lokal ab im SayIt-Adapter „Ausgabe-Gerät“ auf „none“ oder „System“ stellen -
@mcu Ich habe mir das Script anhand des ChatGPT-Outputs zurecht gebogen, aber dem SayIt-Adapter ist es herzlich egal, welche Speaker ich im Script per ID anspreche. Der Text kommt sofort, sobald der State sayit.0.tts.text gesetzt wird (das triggert die MP3-Erzeugung, welche anschließend abgespielt wird bevor ich überhaupt eingreifen kann). Habe einen Speaker testweise ins gleiche Netz gehangen, in der Hoffnung ihn dann in den Instanzeinstellungen als Gerät auswählen zu können: ebenfalls Fehlanzeige. Ich kann lediglich den Typ auf "Heos" setzen, mit oben beschriebenem Erfolg.
Entweder muss SayIt dazu gebracht werden, nur die Datei zu erzeugen, ohne sie abzuspielen, oder ich muss je Instanz den betroffenen Speaker auswählen können.
Bug oder Feature?
-
@johndenver0815 Sayit auf System einstellen, dann wird nur die Datei erzeugt, oder?
Evtl. eine eigene Instanz dafür nutzen?https://192.168.178.150:8081/files/sayit.0/tts.mp3Datei dann lesen lassen für Heos?
-
@mcu Leider nicht, dann kommt folgender Fehler:
Cannot play: Exit code: Error: Command failed: mplayer /opt/iobroker/cache/ba84793cac330a08436c98b1ba452175.mp3 -volume 30/bin/sh: 1: mplayer: not found -
@johndenver0815 Wurde denn die Datei erzeugt?

-
@mcu sagte in BUG - sayit geht nicht mehr !:
Wurde denn die Datei erzeugt?
ich glaube nicht, dass das die Ursache sein wird.
Due Meldung heisst ja:
@johndenver0815 sagte in BUG - sayit geht nicht mehr !:mplayer: not found
-
@homoran
mplayer wird nicht benötigt, wenn man die Datei per https abruft (chatGPT)
Aber vielleicht will der Heos-Adapter den mplayer nutzen?
Kann es nicht testen, hab kein HEOS-System.Dann auf dem System
sudo apt install mplayer -y
-
-
Wenn ich sayit.0.tts.text direkt in den Objekten mit Text befülle, dann generiert SayIt die Datei (ich kann sie auch über den Browser aufrufen). Ist in dem Moment der Typ in SayIt auf Heos gestellt, dann geben auch "alle" Heos-Devices die mp3 wieder. Bis dahin also alles gut. Ich würde nur entweder gern direkt im Adapter unter Gerät (Dropdown ist leider leer) ein spezifisches Ausgabedevice angeben, oder alternativ dazu irgendwo einen Haken setzen, dass lediglich die Datei erzeugt wird, ohne eine akustische Ausgabe zu triggern (um sie danach per Heos-Command inkl. Playerzuweisung aufzurufen).
Heos ist da in meinen Augen noch aussen vor, ebenso die Geschichte mit mplayer (der ja nur vom Sayit-Adapter versucht wird zu starten, weil der Typ auf System umgestellt wurde. Für welches Testszenario sollte ich jetzt den mplayer installieren, wenn ich ihn eh nicht nutzen möchte?
-
@johndenver0815
Durch welche Anpassung kam dieser Fehler? Was wurde wo eingetragen?
Wie wird im Heos Objekte der Aufruf für die Datei eingetragen?
Welche Datei wurde von sayIt erstellt?
Bitte entsprechende Bilder von den Objekten und Dateien.Cannot play: Exit code: Error: Command failed: mplayer /opt/iobroker/cache/ba84793cac330a08436c98b1ba452175.mp3 -volume 30/bin/sh: 1: mplayer: not found -
@mcu sagte in BUG - sayit geht nicht mehr !:
Durch welche Anpassung kam dieser Fehler? Was wurde wo eingetragen?
Durch die versuchsweise Umstellung des "Typ" (nach deinem Tipp) auf den Parameter "System" in den Adaptereinstellungen von SayIt. Richtig wäre hier der Parameter "Heos", der aber ausnahmslos alle Heos-Devices mit der Ausgabe befeuert.
@mcu sagte in BUG - sayit geht nicht mehr !:
Wie wird im Heos Objekte der Aufruf für die Datei eingetragen?
Unter heos.0.player.12345678.command wurde
play_stream,http://10.xxx.xxx.xxx:8082/sayit.0/tts.mp3 eingetragen
(IP und ID anonymisiert)Die Datei wurde wie gesagt erzeugt, ich kann sie auch per Linkaufruf im Browser abspielen. Die Heos-Devices geben sie auch wieder, und zwar sofort nach manueller Eingabe meines Textes im Objekt sayit.0.tts.text
-
@johndenver0815 Nicht 8082 nutzen sondern 8081
http://10.xxx.xxx.xxx:8081/sayit.0/tts.mp3 -
@mcu Warum das? 8081 wär der ioBroker, 8082 die Webinstanz.