NEWS
Sayit-Block funktioniert nicht mehr
-
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:~# -
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:~#@sebi2ndpc sagte in Sayit-Block funktioniert nicht mehr:
was mache ich falsch?
root Login ist falsch.
Als user hantieren undiob fixausführen.
-
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:~# -
@sebi2ndpc sagte in Sayit-Block funktioniert nicht mehr:
was mache ich falsch?
root Login ist falsch.
Als user hantieren undiob fixausführen.
@thomas-braun danke, das war der richtige hinweis :-) jetzt hat es geklappt.