NEWS
SayIT probleme mit der Wiedergabe
-
@crunchip ok, der neustart vom chromecast scheint das timeoutpoblem zu lösen. Wenn 1x Nachts nicht ausreicht, werde ich per JS dann neu starten, wenn aktuell nichts auf einem Chromecast läuft.
-
@maxpd bei mir trat das Problem des Öfteren innerhalb von 6 Stunden auf, daher starte ich alle 3 Stunden aktuell
-
@crunchip sagte in SayIT probleme mit der Wiedergabe:
daher starte ich alle 3 Stunden aktuell
Das mache ich mittlerweile auch.
Nach Aussage meiner Frau gilt diese Lösung als Beispiel für das fünfte (Not)rad der Informatiker.
-
@meister-mopper ja mei, wenns aktuell nicht anders geht, was will man machen
-
-
@crunchip ok, habe mir dann einen reboot gebaut, der alle 3h stattfindet, sofern kein chromecast etwas am abspielen ist.
-
@maxpd Theoretisch könnte man mit einem JS auch Nachts einmal alle Datenpunkte des Chromecast löschen, Sekunden bevor ein Neustart des Adapters stattfindet und diese dann neu gebaut werden, oder?
Löscht ihr dann komplett den Order "0"?Also bislang kamen Ansagen, aber manchmal mit einem Versatz von bis zu mehreren Minuten nach dem Ankündigungs-Dong. Warum die Ausgabe nicht direkt kommt, sagt mir aber auch das Log nicht.
Und die Lautstärke ändert sich während der Sprachausgabe bei einer Gruppe von 100 auf .
-
Das Löschen der Datenpunkte und Neustarten des Adapters löst zudem folgendes Problem nicht, welches am meisten nervt.
Doppelte Sprachausgabe, bzw. Abspielen eines alten Files, obwohl auf dem iobroker schon eine neue MP3 liegt. Mein Test hierzu, der auch Queues löscht und alte Files aktiv löscht. Auch größere Abstände von 30 Sekunden helfen nicht. Es wird immer "Test 1" ausgegeben. Debug Ausgaben geben Test 2 und Test 3 währenddessen aus.
Was kann ich noch versuchen?
Leider kann Sayit keinen Pause Befehl, sodass wenn ich alles in eine Sprachausgabe packe, diese halt runterrasselt ohne kurze Pausen einzulegen. Bei längeren Ansagen am Morgen für die Tagesplanung unpraktisch. -
@maxpd mach mal den Haken rein bei mit Ergebnissen
Dann wir der darunterliegende Befehl erst abgearbeitet wenn der exec Befehl ausgeführt wurde -
@crunchip Du meinst ich soll Text to Speech in die neue Klammer des exec Befehls einsetzen?
Ich bin mir nicht sicher, ob das der richtige Weg ist.
Also die Datei wird nach obigem Aufbau wirklich gelöscht, das habe ich geprüft. Und der darunterliegende Text to speech Befehl auch ausgeführt. Denn es befindet sich auf dem iobroker Server nach dem Löschvorgang eine neue mp3, die Test 2 spricht. Hierzu habe ich großzügige Pausen zwischen die einzelnen Schritte gebaut, um deren Abarbeitung zu prüfen. Die neue mp3, wird auch als Abspielpfad dem Chromecast übergeben.
Trotzdem ist die Ausgabe über den Chromecast Test 1. Sodass irgendwas irgendwo gecacht werden muss. -
@maxpd sagte in SayIT probleme mit der Wiedergabe:
Du meinst ich soll Text to Speech in die neue Klammer des exec Befehls einsetzen?
Ich glaube eher, hier soll der Haken gesetzt werden:
-
@meister-mopper Ja, dann öffnet sich darunter eine neue Klammer. Und crunchip sagte, dass der darunterliegende Befehl erst dann abgearbeitet wird.
Ich habe es jetzt einfach ausprobiert. Aber das Ergebnis bleibt das Selbe.
Falls es mal jemand selbst testen möchte. Blöcke zum importieren. :
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable type="timeout" id="timeout">timeout</variable> <variable type="timeout" id="timeout2">timeout2</variable> </variables> <block type="schedule" id="m85vfeI)N2iCBHfr]nXe" x="-478" y="92"> <field name="SCHEDULE">*/40 * * * * *</field> <statement name="STATEMENT"> <block type="control" id="I;b#^_2Mx#Mqng^Lg1S,"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">sayit.2.tts.clearQueue</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="|aHwh6N^n*1(cu4}0=nT"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="control" id="h:Ae,B[!w(`}Hc0X+bvm"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">sayit.2.tts.text</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="Fp)A5G8wF=x4+Pj,}@s1"> <field name="TEXT">Test 1</field> </block> </value> <next> <block type="timeouts_settimeout" id="2tHEm}_cp{#CZtd^U|MY"> <field name="NAME">timeout</field> <field name="DELAY">15</field> <field name="UNIT">sec</field> <statement name="STATEMENT"> <block type="control" id="l=fy[=}J1CIGFU?Mc9pY"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">sayit.2.tts.clearQueue</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="k.,2+!P_+jJY(2x_IJ:L"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="exec" id="@(hzTiZ/!+!xIRAG{a(X"> <mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="true"></mutation> <field name="WITH_STATEMENT">TRUE</field> <field name="LOG"></field> <value name="COMMAND"> <shadow type="text" id="(_Uy%CmMS,-g?KLl:N9!"> <field name="TEXT">rm /opt/iobroker/iobroker-data/files/sayit.2/tts.mp3</field> </shadow> </value> <next> <block type="control" id=".uME[o,Wa~f@wYTzULaP"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">sayit.2.tts.text</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="(cfid/`$|Ezh;cMXE[b;"> <field name="TEXT">Test 2</field> </block> </value> </block> </next> </block> </next> </block> </statement> <next> <block type="timeouts_settimeout" id="=2wo`5ckRaF68X3rPT.."> <field name="NAME">timeout2</field> <field name="DELAY">30</field> <field name="UNIT">sec</field> <statement name="STATEMENT"> <block type="exec" id=":pe_MvB:GDl]jn`SiD3C"> <mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="true"></mutation> <field name="WITH_STATEMENT">TRUE</field> <field name="LOG"></field> <value name="COMMAND"> <shadow type="text" id="]yGB_#_0@W:F-,!Zin8y"> <field name="TEXT">rm /opt/iobroker/iobroker-data/files/sayit.2/tts.mp3</field> </shadow> </value> <next> <block type="control" id="tj]tan-!Qn#c2RR~Q8:%"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">sayit.2.tts.text</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="oqzj.4JTfk]V6(M1}vGQ"> <field name="TEXT">Test 3</field> </block> </value> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </xml>
oder JS
var timeout, timeout2; schedule("*/40 * * * * *", async () => { setState('sayit.2.tts.clearQueue' /* Clear queued texts */, true); setState('sayit.2.tts.text' /* Text to speech */, 'Test 1'); timeout = setTimeout(async () => { timeout = null; setState('sayit.2.tts.clearQueue' /* Clear queued texts */, true); exec('rm /opt/iobroker/iobroker-data/files/sayit.2/tts.mp3'); setState('sayit.2.tts.text' /* Text to speech */, 'Test 2'); }, 15000); timeout2 = setTimeout(async () => { timeout2 = null; exec('rm /opt/iobroker/iobroker-data/files/sayit.2/tts.mp3'); setState('sayit.2.tts.text' /* Text to speech */, 'Test 3'); }, 30000); });
-
@maxpd sagte in SayIT probleme mit der Wiedergabe:
Blöcke zum importieren
bitte auch immer einen Screenshot zeigen
-
-
-
@djmarc75 Ja, das hatte ich auch gemacht. Aber ändert nichts am Endergebnis.
-
@maxpd dann liegt die zwischengespeicherte Datei wohl trotzdem noch irgendwo im Nirwana
-
@crunchip Aber wie finde ich die? Den Pfad/die Datei habe ich aus der chromecast.0.player.announcement und kann sie auch separat im Browser öffnen. Die Ansage ist korrekt. Ich sehe aber keine weitere die irgendwo gecacht ist oder tatsächlich verwendet wird.
-
@maxpd da kann ich dir leider nicht behilflich sein, ggf ein issue beim Adapter öffnen, falls nicht schon vorhanden
-
@crunchip
https://forum.iobroker.net/topic/66410/gelöst-sayit-mp3-erzeugen-geht-nicht-mehr/76Hier hattest du mir geschrieben, wo die Datei zu finden ist.
Und dies passt weiterhin.Dort liegt immer die aktuelle mp3.