So, leider erst jetzt richtig mal einem richtigen Test unterzogen.
Aufgrund des Verhaltens des „Play“-Buttons stehen aber der Praxistauglichkeit stehen noch ein paar Kleinigkeiten im Weg.
1.) wenn Radio-Stream läuft und der SonosPollyTTS schickt was, dann wird das ge-queued, also hintenangestellt und nicht abgespielt. Wenn man später das Radio ausmacht, dann wird in dem Moment der Polly Schnipsel dann (verspätet) abgespielt.
2.) Bei uns wird im Moment nahezu nur Radio gehört, und das per Touch Button oben eben gestartet und gestoppt. Der Play-Touch-Button spielt ja aber nur die letzte Quelle noch mal ab. Man will also das Radio anmachen und hört dann aber z.B. „Der Trockner ist fertig“, Was ja wenig hilft
Gibts dafür einen Workaround, oder wie handhabt ihr das? Klar, mit Griff zum Handy ist das Radio wieder gestartet, aber a) falls sich dieser Griff vemeiden liesse würd ichs gern tun, und b) ist das abspielen der jeweils letzten homee Meldung ja doch etwas irritierend.
eine technische Lösung kann ich dir leider nicht anbieten.
Aber von der Logik her müsste der flow doch einfach das laufende Programm am entsprechenden Lautsprecher stoppen, erst dann die Nachricht abspielen und dann wieder das alte Programm starten.
Grundsätzlich ist das ja sicher möglich. du musst nur einfach einen Schritt vor dem Abspielen einbauen und dann nachher auch wieder einen.
Frag mich aber bitte nicht, wie das funktioniert
Ich bin noch absoluter nod red Anfänger…
Die Sonos Integration ist aber bei mir das nächste was ich angehen möchte, daher klinke ich mich einfach mal ein.
Bist du evtl. so nett und schickst mir mal deinen flow zu? Dann hätte ich schon mal einen Anfang.
Soweit funktionieren die Trockenübungen ohne homee super. @spoocs auch dein Problem mit der queue kann ich nicht nachvollziehen. Ich habe allerdings den node-red-contrib-sonospollytts node durch den tts-ultimative node (wie in node red vorgeschlagen) geändert. Da scheint es ja kürzlich ein Update gegeben zu haben. Evtl. hilft dir das weiter?
Damit spielt er entsprechende Meldungen während einem laufenden Stream (in meinem Fall Radio) ab und läßt den stream anschließend weiterlaufen.
Ich habe allerdings noch ein Problem mit dem webhook. Evtl. kann mir da einer einen Tipp geben.
1
Welchen port gebe ich im webhook an? den von node red oder den vom tts-ultimate? Aktuell habe ich aber bei keinem eine entsprechende Ausgabe, daher muss der Fehler noch woanders sein. Laut Beispiel von @medicus07 ist es ja der port von node red.
2
In welchem Format gebe ich das in homee ein?
Ich habe es wie oben gezeigt versucht, aber das klappt noch nicht.
Ok, das Thema mit dem webhook habe ich lösen können.
Zum einen war es ein Problem mit der homee web app, die das hg gar nicht abgespielt hat und zum anderen war es ein schlichter Schreibfehler im webhook…
Ich habe
"{ „0n“ : „Die Waschmaschine ist fertig“ } gesendet
und nicht
{ „On“ : „Die Waschmaschine ist fertig“ }
Aber gut, Problem gelöst.
Kann ich den per webhook auch steuern, auf welchem Lautsprecher die Ansage ausgegeben wird?
Ich möchte bestimmte Meldungen nur auf bestimmten Lautsprechern ausgeben. Über den node wäre es ja immer die gleiche Einstellung für alle Ansagen.
@Shadow31 Hallo Shadow31, vor dem gleichen Problem stehe ich jetzt auch, der Webhook funktioniert nicht. Welche URL muss denn im Webhook angegeben werden ?
Und was muss eigentlich im „http in node“ in node red für eine URL angegeben werden ?
Du gibst also die IP von node red inklusive dem port von node red und /tts ein.
Methode ist Post
Content Type application/json
Und im Body z.b.
{ „On“ : „Der Trockner ist fertig“ }
http in node ist wie folgt:
Ich hatte wie oben erwähnt auch das Problem, das mein hg gar nicht abgespielt wurde. Ich hab immer nach dem Fehler in node red oder dem webhook an sich gesucht.
Ist mir erst aufgefallen, als ich im hg gesehen habe, das das zum letzten mal 2 stunden vorher abgespielt wurde. Hab das hg dann einfach gelöscht und nochmal erstellt und dann gings.
War bei mir aber die web app.
Nur noch mal der Verständlichkeit für Anfänger halber:
das „/tts“ ist natürlich ein frei wählbarer Name bzw. URL-Bestandteil (sollte URL-syntaxkonfom sein). Er muss nur auf beiden Seiten gleich sein - im http-Node und im HG-webhook.
kann man Meldungen auch nur auf bestimmten Sonos ausgeben?
Also abhängig der Meldung, sollen unterschiedliche sonos angesprochen werden.
Der Webhook sagt ja aktuell einfach nur „Spiele das ab“ und im flow sage ich, wo er was abspielen soll. Wäre ja super, wenn ich das über den Webhook definieren könnte.
weiss nicht genau, ob ich die Anforderungen richtig verstanden habe, aber sollte doch gehen: definiere Dir in dem POST body einfach noch eine Variable, z.B. „target“, die eine oder mehrere Werte enthalten kann (Bezeichner, Nummern, IPs o.ä.) und bau Dir im Flow eine Weiche, die das auswertet und an den/die entsprechenden Ausgabe-Nodes weiterleitet.
Hab im Moment noch immer kaum Zeit für Bastelei… leider.
Alles klar. Danke für die Info.
Dann hast du meine ersten Gedanken aber schon mal bestätigt.
Mals sehen, wann ich mal die Zeit habe und ein bisschen basteln kann.
Bin in node red noch nicht ganz so bewandert und weiß daher noch nicht immer, was wie funktioniert, aber da hilft basteln ja auch, um ein besseres Verständnis zu bekommen
wie ich Meldungen nur auf einer bestimmten Box ausgegeben kann, hab ich zumindest schon mal in NodeRed verstanden. Alles andere sollte dann ja über einen entsprechenden Webhook auch dann vom homee aus funktionieren.
Aber wie kann ich denn eine Meldung auf mehreren Boxen ausgeben?
wie zu sehen ist, gibt es im unteren function node noch ein Problem.
Der sieht wie folgt aus.
Mein erster Gedanke war, bei der mainplayer id einen Sonos reinpacken und die anderen dann unter setplayergrouparry reinschreiben. Das hat im ersten Schritt nicht funktioniert, daher hatte ich jetzt mal alle hintereinander bei mainplayerip gepackt. Ist aber ja wohl auch falsch.
In welcher Art uns Weise muss ich die IP´s hier aufführen, damit eine Meldung in mehreren oder allen Räumen wiedergegeben wird?
Wenn ich im tts ultimate alle Sonos „aktiviere“, kann ich mit einem entsprechenden function node auch nur bestimmte ansprechen.
Hier ein Beispiel
Einfach eine Box als Mainplayer und die anderen über PlayerGroupArray.
Besten dank für den Denkanstoß!
Wie kann ich denn eine Box per Schalter steuern?
Also sowas wie: Wenn ich Taste x drücke, dann startet eine bestimmte Playlist in einer bestimmten Lautstärke auf einer bestimmten Box?
Dann kommen natürlich noch so Sachen wie Lautstärke und Sender dazu.
Hier gibt es ja ein paar Beispiele im Forum, aber die sind auch schon älter und ggf. gibt es da ja mittlerweile auch neuere/bessere nodes?
Hast du sowas im Einsatz?
Dann müsste ich die Sonos doch wahrscheinlich erstmal über einen virtuellen homee in homee bringen, oder? Von da könnte ich ja dann bestimmte Taster mit enstprechenden Aktionen versehen
Ich versuche diesen Flow im Node-Red nachzubauen. Das Node-Red habe ich mir dazu gerade im Dockers auf meiner Synology Disk installiert. Ich muss dazu sagen, dass ich absoluter Anfänger bin was Nod-Red und Coden angeht Ich glaube aber fast am Ziel zu sein.
Muss ich die Nachricht welche vom Webhook kommt noch irgendwie „umwandeln“ mit einer Funktion? Wenn ja wie muss die aussehen? Ich würde auch gerne das ganze zuerst ohne HG direkt im Node-Red testen. Wie muss ich dazu den Inject node konfigurieren? Hat hier ev. jemand ein Beispiel?