NEWS
Sayit-Block funktioniert nicht mehr
-
Hallo zusammen,
seit einiger Zeit habe ich Probleme mit dem Aussprechen- bzw. SayIt-Block.
Ich verwende drei Google Home Nest Hubs, die alle einwandfrei Sprache über den iobroker ausgeben können. Jeder Nest Hub hat eine eigene SayIt-Instanz, der Test über den Adapter funktioniert bei allen dreien einwandfrei.
Aber selbst einfache Blöcke funktionieren nicht mehr:

Es steht zwar was im Log, es wird aber nichts wiedergegeben:

Bei folgendem Block bzw. Skirpt funktioniert es aber:

Dort wird es auch im Protokoll geloggt:

Manche Sachen gehen also, manche nicht.
Gestern habe ich sayit.2 für den dritten Nest Hub hinzugefügt, dabei kam auch nur manchmal die folgende Meldung:
sayit.2
2023-07-04 17:30:44.733
error
Error: The module '/opt/iobroker/node_modules/mdns/build/Release/dns_sd_bindings.node'was compiled against a different Node.js version usingNODE_MODULE_VERSION 83. This version of Node.js requiresNODE_MODULE_VERSION 108. Please try re-compiling or re-installingthe module (for instance, usingnpm rebuildornpm install).npm rebuild hat auch nichts gebracht.
Was kann ich noch machen?
Viele Grüße
Bender275@bender275 sagte in Sayit-Block funktioniert nicht mehr:
seit einiger Zeit habe ich Probleme
@bender275 sagte in Sayit-Block funktioniert nicht mehr:
was compiled against a different Node.js version
ist die "einige Zeit" seit einem node.js Update?
iob fixprobiert?
-
@bender275 sagte in Sayit-Block funktioniert nicht mehr:
seit einiger Zeit habe ich Probleme
@bender275 sagte in Sayit-Block funktioniert nicht mehr:
was compiled against a different Node.js version
ist die "einige Zeit" seit einem node.js Update?
iob fixprobiert?
-
Tja, seit einiger Zeit - ich weiß es nicht genau, weil es ja auch nicht sofort auffält.
Möglich, dass es mit dem Node.js-Update zusammenhängt.
iob fixHalf leider nicht, obwohl mehrmals versucht.
@bender275 sagte in Sayit-Block funktioniert nicht mehr:
dass es mit dem Node.js-Update zusammenhängt
iob diag -
Hallo zusammen,
seit einiger Zeit habe ich Probleme mit dem Aussprechen- bzw. SayIt-Block.
Ich verwende drei Google Home Nest Hubs, die alle einwandfrei Sprache über den iobroker ausgeben können. Jeder Nest Hub hat eine eigene SayIt-Instanz, der Test über den Adapter funktioniert bei allen dreien einwandfrei.
Aber selbst einfache Blöcke funktionieren nicht mehr:

Es steht zwar was im Log, es wird aber nichts wiedergegeben:

Bei folgendem Block bzw. Skirpt funktioniert es aber:

Dort wird es auch im Protokoll geloggt:

Manche Sachen gehen also, manche nicht.
Gestern habe ich sayit.2 für den dritten Nest Hub hinzugefügt, dabei kam auch nur manchmal die folgende Meldung:
sayit.2
2023-07-04 17:30:44.733
error
Error: The module '/opt/iobroker/node_modules/mdns/build/Release/dns_sd_bindings.node'was compiled against a different Node.js version usingNODE_MODULE_VERSION 83. This version of Node.js requiresNODE_MODULE_VERSION 108. Please try re-compiling or re-installingthe module (for instance, usingnpm rebuildornpm install).npm rebuild hat auch nichts gebracht.
Was kann ich noch machen?
Viele Grüße
Bender275@bender275 sagte in Sayit-Block funktioniert nicht mehr:
npm rebuild hat auch nichts gebracht.
Wie genau wo ausgeführt?
Aber erstmal die Ausgabe voniob diag -
Habe möglicherweise dasselbe Problem.
Alle vorhanden scripte mit Sprachausgabe funktionieren, ändere ich in einem Script z.B: nur den Trigger Datenpunkt geht danach die Ansage nicht mehr. Auch wenn ich auf den alten DP zurück ändere keine Ansage mehr.
Habe heute diese Upgrades gemacht:
2023-07-05 11:20:14.710 - [32minfo[39m: host.iobroker iobroker upgrade yahka@1.0.3 --debug 2023-07-05 11:23:00.598 - [32minfo[39m: host.iobroker iobroker upgrade sayit@3.0.5 --debug 2023-07-05 11:23:59.153 - [32minfo[39m: host.iobroker iobroker upgrade javascript@7.1.1 --debugRestart aller betroffenen Instanzen erfolglos.
Upload aller betroffenen Instanzen erfolglos.
Aktuell läuft ein kompletter upload.
EDIT: Upload all hat nicht geholfen.
-
Habe möglicherweise dasselbe Problem.
Alle vorhanden scripte mit Sprachausgabe funktionieren, ändere ich in einem Script z.B: nur den Trigger Datenpunkt geht danach die Ansage nicht mehr. Auch wenn ich auf den alten DP zurück ändere keine Ansage mehr.
Habe heute diese Upgrades gemacht:
2023-07-05 11:20:14.710 - [32minfo[39m: host.iobroker iobroker upgrade yahka@1.0.3 --debug 2023-07-05 11:23:00.598 - [32minfo[39m: host.iobroker iobroker upgrade sayit@3.0.5 --debug 2023-07-05 11:23:59.153 - [32minfo[39m: host.iobroker iobroker upgrade javascript@7.1.1 --debugRestart aller betroffenen Instanzen erfolglos.
Upload aller betroffenen Instanzen erfolglos.
Aktuell läuft ein kompletter upload.
EDIT: Upload all hat nicht geholfen.
@wendy2702 sagte in Sayit-Block funktioniert nicht mehr:
Habe möglicherweise dasselbe Problem
Dann geh mal auf die Version 7.0.3 vom JavascriptAdapter zurück und teste nochmal.
-
@wendy2702 sagte in Sayit-Block funktioniert nicht mehr:
Habe möglicherweise dasselbe Problem
Dann geh mal auf die Version 7.0.3 vom JavascriptAdapter zurück und teste nochmal.
-
Jetzt auch mit Sayit auf die vorherige Version zurück.
Alte scripte funktionieren noch, das eine indem der Trigger geändert wurde immer noch nicht.
Habe einmal einen DNS Fehler im Log gefunden.
2023-07-05 18:38:39.377 - info: sayit.0 (1808) saying: Garagentor rechtsauf 2023-07-05 18:38:48.641 - info: sayit.0 (1808) saying: Garagentor rechtszu 2023-07-05 18:39:01.568 - error: sayit.0 (1808) Error: dns service error: unknown 2023-07-05 18:39:10.021 - info: sayit.0 (1808) saying: Hallo 2023-07-05 18:40:10.599 - debug: javascript.0 (1212) script.js.common.Ansagen.Test_Ansage: Executed sayit.0: : Garagentor links auf 2023-07-05 18:40:19.349 - debug: javascript.0 (1212) script.js.common.Ansagen.Test_Ansage: Executed sayit.0: : Garagentor links zu 2023-07-05 18:40:50.141 - info: sayit.0 (1808) saying: Garagentor rechtsauf 2023-07-05 18:41:07.645 - info: sayit.0 (1808) saying: Garagentor rechtszu -
Ich konnte es für mich lösen.
Habe eine zusätzliche Sayit Instanz installiert, Google deutsch und Browser eingestellt.
Diese Instanz im Script ausgewählt und script einmal getriggert. Ansage erfolgt mit Google deutsch, dann zurück auf die Ursprüngliche Sayit instanz und es funktioniert wieder.Allerdings habe ich jetzt noch die alten Sayit und Javascript Versionen laufen.
jetzt mal wieder Upgrade wagen.
-
So,
gestern noch die Upgrades gemacht und alles läuft.
Heute dann in einem anderen Script den Trigger geändert und schon kommt keine Ansage mehr.
So sieht das simple Blockly aus:

Hier das JS dazu:
on({ id: [].concat(['hm-rpc.0.REQ0571844.1.STATE']), change: 'ne' }, async (obj) => { let value = obj.state.val; let oldValue = obj.oldState.val; console.log(('Garagentor rechts' + String((obj.state ? obj.state.val : "") ? 'auf' : 'zu'))); sendTo("sayit.0", "say", { text: ('Garagentor rechts' + String((obj.state ? obj.state.val : "") ? 'auf' : 'zu')) }); console.log("Executed sayit.0: : " + ('Garagentor rechts' + String((obj.state ? obj.state.val : "") ? 'auf' : 'zu'))); });So das Debug log vom Sayit Adapter wenn es nicht funktioniert:
2023-07-06 12:35:50.766 - info: javascript.0 (6141) script.js.common.Ansagen.Voice_Feedback_Garagentor_Rechts: Executed sayit.0: : Garagentor rechtsaufUnd so für ein Script bei dem die Ausgabe geht:
2023-07-06 12:36:46.001 - info: sayit.0 (24351) saying: Garagentor links aufiob diag:
@apollon77 welche logs können hier helfen und wo soll ich dann ein Issue öffnen?
EDIT: wenn ich ein neues Blockly mit einfachem Trigger erstelle geht auch keine Ansage. Erstelle ich ein einfaches per Rules geht die Ansage.
Das Rules in JS sieht so aus:
let cond0 = false; on({id: "hm-rpc.0.REQ0571844.1.STATE", change: "ne"}, async function (obj) { _sendToFrontEnd(1688649159665, {val: obj.state.val, ack: obj.state.ack, valOld: obj.oldState && obj.oldState.val, ackOld: obj.oldState && obj.oldState.ack}); const _cond = true; if (_cond) { // Sayit Hallo const subActionVar1688649250057 = "de-DE_AP_Female;100;Hallo".replace(/%s/g, obj.state.val).replace(/%id/g, obj.id).replace(/%name/g, obj.common && obj.common.name).replace(/%old/g, obj.oldState.val); _sendToFrontEnd(1688649250057, {text: subActionVar1688649250057}); await setStateAsync("sayit.0.tts.text", subActionVar1688649250057); // Log My device triggered const subActionVar1688649275246 = "My device triggered".replace(/%s/g, obj.state.val).replace(/%id/g, obj.id).replace(/%name/g, obj.common && obj.common.name).replace(/%old/g, obj.oldState.val); _sendToFrontEnd(1688649275246, {text: subActionVar1688649275246}); console.log(subActionVar1688649275246); } else { } });EDIT:
Jetzt mal in Rules komplett erstellt und Ansage geht:
let cond0 = false; on({id: "hm-rpc.0.NEQ0529935.3.STATE", change: "ne"}, async function (obj) { _sendToFrontEnd(1688649159665, {val: obj.state.val, ack: obj.state.ack, valOld: obj.oldState && obj.oldState.val, ackOld: obj.oldState && obj.oldState.ack}); const subCondVar1688657308886 = obj.state.val; const subCond1688657308886 = subCondVar1688657308886 == false; const _cond = (subCond1688657308886); _sendToFrontEnd(1688657308886, {result: subCond1688657308886, value: subCondVar1688657308886, compareWith: "false"}); if (cond0 === false && _cond) { cond0 = true; // Sayit Garagentor rechts zu const subActionVar1688649250057 = "de-DE_AP_Female;100;Garagentor rechts zu".replace(/%s/g, obj.state.val).replace(/%id/g, obj.id).replace(/%name/g, obj.common && obj.common.name).replace(/%old/g, obj.oldState.val); _sendToFrontEnd(1688649250057, {text: subActionVar1688649250057}); await setStateAsync("sayit.0.tts.text", subActionVar1688649250057); // Log Garage rechts zu const subActionVar1688649275246 = "Garage rechts zu".replace(/%s/g, obj.state.val).replace(/%id/g, obj.id).replace(/%name/g, obj.common && obj.common.name).replace(/%old/g, obj.oldState.val); _sendToFrontEnd(1688649275246, {text: subActionVar1688649275246}); console.log(subActionVar1688649275246); } else if (cond0 === true && !_cond) { cond0 = false; // Sayit Garagentor rechts auf const subActionVar1688657531936 = "de-DE_AP_Female;100;Garagentor rechts auf".replace(/%s/g, obj.state.val).replace(/%id/g, obj.id).replace(/%name/g, obj.common && obj.common.name).replace(/%old/g, obj.oldState.val); _sendToFrontEnd(1688657531936, {text: subActionVar1688657531936}); await setStateAsync("sayit.0.tts.text", subActionVar1688657531936); // Log Garage rechts auf const subActionVar1688658103726 = "Garage rechts auf".replace(/%s/g, obj.state.val).replace(/%id/g, obj.id).replace(/%name/g, obj.common && obj.common.name).replace(/%old/g, obj.oldState.val); _sendToFrontEnd(1688658103726, {text: subActionVar1688658103726}); console.log(subActionVar1688658103726); } });
Sobald ich das in Blockly oder JS mache kommt keine Ansage.
EDIT: Issue erstellt, ob es bei Sayit richtig ist werden wir sehen: https://github.com/ioBroker/ioBroker.sayit/issues/269
-
So,
gestern noch die Upgrades gemacht und alles läuft.
Heute dann in einem anderen Script den Trigger geändert und schon kommt keine Ansage mehr.
So sieht das simple Blockly aus:

Hier das JS dazu:
on({ id: [].concat(['hm-rpc.0.REQ0571844.1.STATE']), change: 'ne' }, async (obj) => { let value = obj.state.val; let oldValue = obj.oldState.val; console.log(('Garagentor rechts' + String((obj.state ? obj.state.val : "") ? 'auf' : 'zu'))); sendTo("sayit.0", "say", { text: ('Garagentor rechts' + String((obj.state ? obj.state.val : "") ? 'auf' : 'zu')) }); console.log("Executed sayit.0: : " + ('Garagentor rechts' + String((obj.state ? obj.state.val : "") ? 'auf' : 'zu'))); });So das Debug log vom Sayit Adapter wenn es nicht funktioniert:
2023-07-06 12:35:50.766 - info: javascript.0 (6141) script.js.common.Ansagen.Voice_Feedback_Garagentor_Rechts: Executed sayit.0: : Garagentor rechtsaufUnd so für ein Script bei dem die Ausgabe geht:
2023-07-06 12:36:46.001 - info: sayit.0 (24351) saying: Garagentor links aufiob diag:
@apollon77 welche logs können hier helfen und wo soll ich dann ein Issue öffnen?
EDIT: wenn ich ein neues Blockly mit einfachem Trigger erstelle geht auch keine Ansage. Erstelle ich ein einfaches per Rules geht die Ansage.
Das Rules in JS sieht so aus:
let cond0 = false; on({id: "hm-rpc.0.REQ0571844.1.STATE", change: "ne"}, async function (obj) { _sendToFrontEnd(1688649159665, {val: obj.state.val, ack: obj.state.ack, valOld: obj.oldState && obj.oldState.val, ackOld: obj.oldState && obj.oldState.ack}); const _cond = true; if (_cond) { // Sayit Hallo const subActionVar1688649250057 = "de-DE_AP_Female;100;Hallo".replace(/%s/g, obj.state.val).replace(/%id/g, obj.id).replace(/%name/g, obj.common && obj.common.name).replace(/%old/g, obj.oldState.val); _sendToFrontEnd(1688649250057, {text: subActionVar1688649250057}); await setStateAsync("sayit.0.tts.text", subActionVar1688649250057); // Log My device triggered const subActionVar1688649275246 = "My device triggered".replace(/%s/g, obj.state.val).replace(/%id/g, obj.id).replace(/%name/g, obj.common && obj.common.name).replace(/%old/g, obj.oldState.val); _sendToFrontEnd(1688649275246, {text: subActionVar1688649275246}); console.log(subActionVar1688649275246); } else { } });EDIT:
Jetzt mal in Rules komplett erstellt und Ansage geht:
let cond0 = false; on({id: "hm-rpc.0.NEQ0529935.3.STATE", change: "ne"}, async function (obj) { _sendToFrontEnd(1688649159665, {val: obj.state.val, ack: obj.state.ack, valOld: obj.oldState && obj.oldState.val, ackOld: obj.oldState && obj.oldState.ack}); const subCondVar1688657308886 = obj.state.val; const subCond1688657308886 = subCondVar1688657308886 == false; const _cond = (subCond1688657308886); _sendToFrontEnd(1688657308886, {result: subCond1688657308886, value: subCondVar1688657308886, compareWith: "false"}); if (cond0 === false && _cond) { cond0 = true; // Sayit Garagentor rechts zu const subActionVar1688649250057 = "de-DE_AP_Female;100;Garagentor rechts zu".replace(/%s/g, obj.state.val).replace(/%id/g, obj.id).replace(/%name/g, obj.common && obj.common.name).replace(/%old/g, obj.oldState.val); _sendToFrontEnd(1688649250057, {text: subActionVar1688649250057}); await setStateAsync("sayit.0.tts.text", subActionVar1688649250057); // Log Garage rechts zu const subActionVar1688649275246 = "Garage rechts zu".replace(/%s/g, obj.state.val).replace(/%id/g, obj.id).replace(/%name/g, obj.common && obj.common.name).replace(/%old/g, obj.oldState.val); _sendToFrontEnd(1688649275246, {text: subActionVar1688649275246}); console.log(subActionVar1688649275246); } else if (cond0 === true && !_cond) { cond0 = false; // Sayit Garagentor rechts auf const subActionVar1688657531936 = "de-DE_AP_Female;100;Garagentor rechts auf".replace(/%s/g, obj.state.val).replace(/%id/g, obj.id).replace(/%name/g, obj.common && obj.common.name).replace(/%old/g, obj.oldState.val); _sendToFrontEnd(1688657531936, {text: subActionVar1688657531936}); await setStateAsync("sayit.0.tts.text", subActionVar1688657531936); // Log Garage rechts auf const subActionVar1688658103726 = "Garage rechts auf".replace(/%s/g, obj.state.val).replace(/%id/g, obj.id).replace(/%name/g, obj.common && obj.common.name).replace(/%old/g, obj.oldState.val); _sendToFrontEnd(1688658103726, {text: subActionVar1688658103726}); console.log(subActionVar1688658103726); } });
Sobald ich das in Blockly oder JS mache kommt keine Ansage.
EDIT: Issue erstellt, ob es bei Sayit richtig ist werden wir sehen: https://github.com/ioBroker/ioBroker.sayit/issues/269
@wendy2702
Super, danke! So ist es bei mir auch, nur dass ich das mit Rules nicht getestet hatte.
Auch danke für den Issue in Github! -
bei mir das gleiche Problem.
nach downgrade des javascript Adapter auf 6.2.0 funktionieren die Sprachansagen wieder.
-
Ich habe nur ein downgrade gemacht und dann funktionierte es wieder.
-
-
Ein Downgrade vom SayIt-Adapter auf 3.0.4 sollte eher helfen - Wichtig ist: Nach dem Downgrade die betroffenen Skripte editieren/neu speichern. Das Problem entsteht, weil seit SayIt-Version 3.0.5 die Skript-Blöcke in Blockly anders übersetzt werden. Die Übersetzung findet jedoch erst statt wenn ein Blockly-Skript geändert oder neu erstellt wird, daher funktionieren "alte" Blockly-Skripte weiterhin.
Statt ursprünglich den Wert von [SayIt-Instanz].tts.text per "setStateDelayed" zu ändern wird ab 3.0.5 per "sendTo" mit dem Adapter kommuniziert. Bei mir reagiert der Adapter jedoch auch nicht auf den SendTo-Befehl - Siehe auch https://github.com/ioBroker/ioBroker.sayit/issues/267 -
-
Ein Downgrade vom SayIt-Adapter auf 3.0.4 sollte eher helfen - Wichtig ist: Nach dem Downgrade die betroffenen Skripte editieren/neu speichern. Das Problem entsteht, weil seit SayIt-Version 3.0.5 die Skript-Blöcke in Blockly anders übersetzt werden. Die Übersetzung findet jedoch erst statt wenn ein Blockly-Skript geändert oder neu erstellt wird, daher funktionieren "alte" Blockly-Skripte weiterhin.
Statt ursprünglich den Wert von [SayIt-Instanz].tts.text per "setStateDelayed" zu ändern wird ab 3.0.5 per "sendTo" mit dem Adapter kommuniziert. Bei mir reagiert der Adapter jedoch auch nicht auf den SendTo-Befehl - Siehe auch https://github.com/ioBroker/ioBroker.sayit/issues/267@d0nnergurke
Werde ich probieren, vielen Dank! -
@bender275
Desktop ausknipsen
Updates einspielen
Adapter auf Stand bringenDann kucken wir mal weiter
