NEWS
Sayit-Block funktioniert nicht mehr
-
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
-
Wie funktioniert der Downgrade auf die 3.0.4?
Mir wird über den Expertenmodus egal ob Stable oder Beta Repo lediglich die 3.0.0 oder 3.0.5 angezeigt ? -
also ich bekomms auch nicht ans laufen, auch der "downgrade" nach der Anleitung klappt irgendwie nicht, was mache ich falsch?
root@iobroker:~# iobroker install sayit@3.0.4 NPM version: 9.6.7 Installing iobroker.sayit@3.0.4... (System call) Try to solve ENOTEMPTY error automatically Could not handle ENOTEMPTY, because no deletable files were found npm ERR! code ENOTEMPTY npm ERR! syscall rename npm ERR! path /opt/iobroker/node_modules/@aws-sdk/types npm ERR! dest /opt/iobroker/node_modules/@aws-sdk/.types-qurPIL6Q npm ERR! errno -39 npm ERR! ENOTEMPTY: directory not empty, rename '/opt/iobroker/node_modules/@aws-sdk/types' -> '/opt/iobroker/node_modules/@aws-sdk/.types-qurPIL6Q' npm ERR! A complete log of this run can be found in: /home/iobroker/.npm/_logs/2023-10-20T20_14_46_855Z-debug-0.log host.iobroker Cannot install iobroker.sayit@3.0.4: 217 root@iobroker:~#