NEWS
SayIt - Ausgabe bei Wetterwarnung (DWD)
-
Hallo Pix,
die Antwort kam ja schneller als ich zu Abend essen konnte. Danke.
Im Grunde genommen funktioniert es. Jetzt hätte ich noch zwei Fragen:
1. Wieso wird beim Datum 10. April 2016 und 10. Mai 2016 vorgelesen? Anstelle von 4. und 5. Oktober. Im Sayit-Adapter habe ich "Google Deutsch" ausgewählt.
2. Was muss ich ändern, damit auch die "description" vorgelesen wird? Einfach analog zu den anderen Werten eine Variable anlegen? Habe folgendes probiert:
var Description = getState("dwd.0.warning.description"/*Warning description*/).val; setState (idSayIt, "Achtung Wetterwarnungen " + Headline + " gültig vom " + Begin + " bis " + End + Description);
–> geht jedoch nicht. Was mache ich hier falsch?
Viele Grüße
Balu
-
Hallo Balu,
schön, dass es geht.
@baluderbär:1. Wieso wird beim Datum 10. April 2016 und 10. Mai 2016 vorgelesen? Anstelle von 4. und 5. Oktober. Im Sayit-Adapter habe ich "Google Deutsch" ausgewählt. `
Vermutlich sind die Daten im Datenpunkt des Adapters vom April. Kann sein, dass der Adapter seitdem nicht mehr korrekt gestartet wurde. Prüfe mal dessen Einstellungen. Du kannst den Wert des Datenpunktes ja im Reiter Objekte in Admin sehen. Einfach mal "dwd.0.warning.begin" eingeben.Was muss ich ändern, damit auch die "description" vorgelesen wird? Einfach analog zu den anderen Werten eine Variable anlegen? Habe folgendes probiert:
Code:
var Description = getState("dwd.0.warning.description"/Warning description/).val;
setState (idSayIt, "Achtung Wetterwarnungen " + Headline + " gültig vom " + Begin + " bis " + End + Description);
–> geht jedoch nicht. Was mache ich hier falsch? `
Der Code ist theoretisch korrekt. Man würde zwischen End und Description noch ein Leerzeichen oder zB einen Doppelpunkt setzensetState (idSayIt, "Achtung Wetterwarnungen " + Headline + " gültig vom " + Begin + " bis " + End + ': ' + Description);
Was meinst du mit geht nicht? Keine Ansage? Wird im Log die korrekte Sayit-Abarbeitung angezeigt?
Füge mal eine Logausgabe zur Kontrolle ein:````
Log ("Achtung Wetterwarnungen " + Headline + " gültig vom " + Begin + " bis " + End + ': ' + Description);Gruß Pix
-
Hallo Pix,
das Problem mit dem Datum ist, dass er wohl ein "englisches" Format nimmt. Auch heute ließt er wieder den Monat als Tag und den Tag als Monat vor.
Anstatt von 5. Oktober (05.10.) liest er 10. Mai vor. Sayit-Adapter ist auch korrekt.
Hab deine letzte Teile für die LOG-Auswertung angefügt. So richtig oder an der falschen Stelle?
var idSayIt = "sayit.0.tts.text"; var Severity = "dwd.0.warning.severity"/*Warning severity*/; on(Severity, function (obj) { if (obj.newState.val !==0) { var Begin = getState("dwd.0.warning.begin"/*Warning begin*/).val; var End = getState("dwd.0.warning.end"/*Warning end*/).val; var Headline = getState("dwd.0.warning.headline"/*Warning headline*/).val; var Description = getState("dwd.0.warning.description"/*Warning description*/).val; setState (idSayIt, "Achtung Wetterwarnungen " + Headline + " gültig vom " + Begin + " bis " + End + ': ' + Description); } if (obj.newState.val === 0) { setState(idSayIt, "Alle Wetterwarnungen des Deutschen Wetterdienstes wurden aufgehoben") ; } }); Log ("Achtung Wetterwarnungen " + Headline + " gültig vom " + Begin + " bis " + End + ': ' + Description);
Mit "keine Ansage" meinte ich, dass er nur die Headline mit Anfang und Ende vorliest - aber keine Description.
Gruß Balu
1525_anzeige.jpg
1525_objekte.jpg -
Hallo Pix,
hab es nun abgeändert in:
` > var idSayIt = "sayit.0.tts.text";var Severity = "dwd.0.warning.severity"/Warning severity/;
on(Severity, function (obj) {
if (obj.newState.val !==0) {
var Begin = getState("dwd.0.warning.begin"/Warning begin/).val;
var End = getState("dwd.0.warning.end"/Warning end/).val;
var Headline = getState("dwd.0.warning.headline"/Warning headline/).val;
var Description = getState("dwd.0.warning.description"/Warning description/).val;
setState (idSayIt, "Achtung Wetterwarnungen " + Headline + " gültig vom " + Begin + " bis " + End + ': ' + Description);
}
if (obj.newState.val === 0) {
setState(idSayIt, "Alle Wetterwarnungen des Deutschen Wetterdienstes wurden aufgehoben") ;
}
Log ("Achtung Wetterwarnungen " + Headline + " gültig vom " + Begin + " bis " + End + ': ' + Description);
}); `
Jetzt erhalte ich im Log folgendes:19:17:18.192 [info] javascript.0 Stop script script.js.common.DWD_sayit
19:17:18.213 [info] javascript.0 Start javascript script.js.common.DWD_sayit
19:17:18.214 [info] javascript.0 script.js.common.DWD_sayit: registered 1 subscription and 0 schedules
19:17:55.558 [error] host. ReferenceError: Log is not defined at Object. (script.js.common.DWD_sayit:15:5) at Object.subs.callback (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:1251:48) at /opt/iobroker/node_modules/iobroker.javascript/javascript.js:571:48 at getObjectEnums (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:3018:17) at getObjectEnums (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:3037:28) at checkPatterns (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:567:17) at Object.utils.adapter.stateChange (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:245:17) at that.states.States.change (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:2120:37) at RedisClient. (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInRedis.js:88:25) at emitThree (events.js:97:13) at RedisClient.emit (events.js:175:7)
-
Hallo Pix,
hab es nun abgeändert in:
` > var idSayIt = "sayit.0.tts.text";var Severity = "dwd.0.warning.severity"/Warning severity/;
on(Severity, function (obj) {
if (obj.newState.val !==0) {
var Begin = getState("dwd.0.warning.begin"/Warning begin/).val;
var End = getState("dwd.0.warning.end"/Warning end/).val;
var Headline = getState("dwd.0.warning.headline"/Warning headline/).val;
var Description = getState("dwd.0.warning.description"/Warning description/).val;
setState (idSayIt, "Achtung Wetterwarnungen " + Headline + " gültig vom " + Begin + " bis " + End + ': ' + Description);
}
if (obj.newState.val === 0) {
setState(idSayIt, "Alle Wetterwarnungen des Deutschen Wetterdienstes wurden aufgehoben") ;
}
Log ("Achtung Wetterwarnungen " + Headline + " gültig vom " + Begin + " bis " + End + ': ' + Description);
}); `
Jetzt erhalte ich im Log folgendes:19:17:18.192 [info] javascript.0 Stop script script.js.common.DWD_sayit
19:17:18.213 [info] javascript.0 Start javascript script.js.common.DWD_sayit
19:17:18.214 [info] javascript.0 script.js.common.DWD_sayit: registered 1 subscription and 0 schedules
19:17:55.558 [error] host. ReferenceError: Log is not defined at Object. (script.js.common.DWD_sayit:15:5) at Object.subs.callback (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:1251:48) at /opt/iobroker/node_modules/iobroker.javascript/javascript.js:571:48 at getObjectEnums (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:3018:17) at getObjectEnums (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:3037:28) at checkPatterns (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:567:17) at Object.utils.adapter.stateChange (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:245:17) at that.states.States.change (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:2120:37) at RedisClient. (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInRedis.js:88:25) at emitThree (events.js:97:13) at RedisClient.emit (events.js:175:7) `
log muss man klein schreiben -
Hallo bluefox, danke.
Zwar funktioniert nun die LOG-Ausgabe, jedoch höre ich immer noch nicht alles.
sayit-0 2016-10-05 20:06:33.149 info saying: Achtung Wetterwarnungen gültig vom 05.10.2016 20:00 bis 06.10.2016 20:00:
Datum wird immer noch falsch vorgelesen. Headline und Description fehlen.
Sobald die Meldung verschwindet erscheint folgendes im LOG:
__sayit-0 2016-10-05 20:09:57.632 info saying: Alle Wetterwarnungen des Deutschen Wetterdienstes wurden aufgehoben
host-ioBroker-Pi 2016-10-05 20:09:55.132 info instance system.adapter.dwd.0 terminated with code 0 (OK)
sayit-0 2016-10-05 20:09:54.627 info saying: /opt/iobroker/node_modules/iobroker.sayit/gong.mp3
javascript-0 2016-10-05 20:09:54.621 info script.js.common.DWD_sayit: Achtung Wetterwarnungen undefined gültig vom undefined bis undefined: undefined
dwd-0 2016-10-05 20:09:54.352 info starting. Version 2.1.1 in /opt/iobroker/node_modules/iobroker.dwd__
Gruß Balu
-
Ich glaube google hat Begrenzung auf 80 oder 100 Symbole.
-
Hallo BlueFox,
evtl. liegt es daran. Habe mal versucht, anstatt Headline Description zu nehmen und es hat funktioniert.
Bleibt nur das Problem mit dem Datum, dass es falsch vorgelesen wird. Monat und Tag vertauscht.
05.10. wird als 10. Mai vorgelesen und 06.10. wird als 10. Juni vorgelesen.
Woran kann das liegen?
Gruß Balu
-
Abweichend vom Grundthema , mal die Frage, worauf läuft bei Euch Sayit und worüber lässt ihr die Ausgabe laufen ( z.b. Raspberry interner Sound, Raspi USB-Sound…)
Gruß
Silvio
-
Hallo BlueFox,
evtl. liegt es daran. Habe mal versucht, anstatt Headline Description zu nehmen und es hat funktioniert.
Bleibt nur das Problem mit dem Datum, dass es falsch vorgelesen wird. Monat und Tag vertauscht.
05.10. wird als 10. Mai vorgelesen und 06.10. wird als 10. Juni vorgelesen.
Woran kann das liegen?
Gruß Balu `
Da jedes Text2Speech System unterschiedlich das Datum vorliegt, darfst du nicht erwarten, dass dein Datum richtig vorgelesen wird. Du musst schon mit formatDate das Datum so vorbereiten, wie es System haben will. -
Hallo,
ich habe ebenfalls das Problem, dass mir sayit zwar läuft, aber eben alles ohne description, headline oder Text ansagt:
sayit-2 2016-10-28 23:43:17.221 info saying: Wetterwarnungen : gültig vom 28.10.2016 20:15 bis 29.10.2016 10:00: sayit-1 2016-10-28 23:43:15.201 info saying: Wetterwarnungen : gültig vom 28.10.2016 20:15 bis 29.10.2016 10:00: host-bananapim2 2016-10-28 23:43:14.678 info instance system.adapter.dwd.0 terminated with code 0 (OK) sayit-2 2016-10-28 23:43:14.208 info saying: /opt/iobroker/node_modules/iobroker.sayit/gong.mp3 sayit-1 2016-10-28 23:43:14.196 info saying: /opt/iobroker/node_modules/iobroker.sayit/scifi.mp3 javascript-0 2016-10-28 23:43:14.113 info script.js.Sayit.DWD: Wetterwarnungen gültig vom 28.10.2016 20:15 bis 29.10.2016 10:00: dwd-0 2016-10-28 23:43:13.742 info starting. Version 2.1.1 in /opt/iobroker/node_modules/iobroker.dwd host-bananapim2 2016-10-28 23:43:10.541 info instance system.adapter.dwd.0 started with pid 2598 host-bananapim2 2016-10-28 23:43:10.496 info instance scheduled system.adapter.dwd.0 3 * * * *
hier mein script. Habe 2 Instanzen von sayit am laufen, eine via browser, andere via m24player mit ftpserver.
Grundsätzlich läuft sayit. es sieht für mich so aus, dass die Variablen für description, headline oder von mir zugefügtem "text" übergeben werden.
Gegen die Version mit den 70 Buchstaben spricht:
1. müsste dann gar kein Text kommen.
2. müsste die LOG die Inhalte aller Variablen anzeigen, Tatsächlich aber nur Beginn und Ende zusätzlich zum fixen Text.
Natürlich habe ich auch mal Description und Headline weggelassen und es stattdessen mit "Text", der ultrakurzen Variante probiert.
Immer wieder nur Ansage:
"Wetterwarnungen : gültig vom 28.10.2016 20:15 bis 29.10.2016 10:00"
hier das -leicht abgeänderte und hoffentlich keine Fehler enthaltende- Skript
var idSayIt = "sayit.1.tts.text"; var idSayIt2 = "sayit.2.tts.text"; var Severity = "dwd.0.warning.severity"/*Warning severity*/; on(Severity, function (obj) { if (obj.newState.val !==0) { var Begin = getState("dwd.0.warning.begin"/*Warning begin*/).val; var End = getState("dwd.0.warning.end"/*Warning end*/).val; var text = getState("dwd.0.warning.text"/*Warning text*/).val; var Headline = getState("dwd.0.warning.headline"/*Warning headline*/).val; var Description = getState("dwd.0.warning.description"/*Warning description*/).val; setState (idSayIt, "Wetterwarnungen " + ': ' + " gültig vom " + Begin + " bis " + End + ': ' + Description); setState (idSayIt2, "Wetterwarnungen " + ': ' + text + " gültig vom " + Begin + " bis " + End + ': ' + Description); //setState (idSayIt2, "Achtung Wetterwarnungen " + Headline + " gültig vom " + Begin + " bis " + End + ': ' + Description); } if (obj.newState.val === 0) { setState(idSayIt, "de;80;Alle Wetterwarnungen des Deutschen Wetterdienstes wurden aufgehoben") ; setState(idSayIt2, "de;80;Alle Wetterwarnungen des Deutschen Wetterdienstes wurden aufgehoben") ; } //log ("Achtung Wetterwarnungen " + Headline + " gültig vom " + Begin + " bis " + End + ': ' + Description); log ("Wetterwarnungen " + text + " gültig vom " + Begin + " bis " + End + ': ' + Description) });
Daten sind vorhanden, ich teste ständig im Wechsel von zwei Landkreisen. Die Entwarnung wird problemlos gesprochen.
http://www.joe-lion.de/old/dwd.JPG" /> -
Hallo,
ich habe ebenfalls das Problem, dass mir sayit zwar läuft, aber eben alles ohne description, headline oder Text ansagt:
! ````
sayit-2 2016-10-28 23:43:17.221 info saying: Wetterwarnungen : gültig vom 28.10.2016 20:15 bis 29.10.2016 10:00:
sayit-1 2016-10-28 23:43:15.201 info saying: Wetterwarnungen : gültig vom 28.10.2016 20:15 bis 29.10.2016 10:00:
host-bananapim2 2016-10-28 23:43:14.678 info instance system.adapter.dwd.0 terminated with code 0 (OK)
sayit-2 2016-10-28 23:43:14.208 info saying: /opt/iobroker/node_modules/iobroker.sayit/gong.mp3
sayit-1 2016-10-28 23:43:14.196 info saying: /opt/iobroker/node_modules/iobroker.sayit/scifi.mp3
javascript-0 2016-10-28 23:43:14.113 info script.js.Sayit.DWD: Wetterwarnungen gültig vom 28.10.2016 20:15 bis 29.10.2016 10:00:
dwd-0 2016-10-28 23:43:13.742 info starting. Version 2.1.1 in /opt/iobroker/node_modules/iobroker.dwd
host-bananapim2 2016-10-28 23:43:10.541 info instance system.adapter.dwd.0 started with pid 2598
host-bananapim2 2016-10-28 23:43:10.496 info instance scheduled system.adapter.dwd.0 3 * * * *>! hier mein script. Habe 2 Instanzen von sayit am laufen, eine via browser, andere via m24player mit ftpserver. >! Grundsätzlich läuft sayit. es sieht für mich so aus, dass die Variablen für description, headline oder von mir zugefügtem "text" übergeben werden. >! Gegen die Version mit den 70 Buchstaben spricht: >! 1\. müsste dann gar kein Text kommen. >! 2\. müsste die LOG die Inhalte aller Variablen anzeigen, Tatsächlich aber nur Beginn und Ende zusätzlich zum fixen Text. >! Natürlich habe ich auch mal Description und Headline weggelassen und es stattdessen mit "Text", der ultrakurzen Variante probiert. >! Immer wieder nur Ansage: >! "Wetterwarnungen : gültig vom 28.10.2016 20:15 bis 29.10.2016 10:00" >! hier das -leicht abgeänderte und hoffentlich keine Fehler enthaltende- Skript >! ```` var idSayIt = "sayit.1.tts.text"; var idSayIt2 = "sayit.2.tts.text"; var Severity = "dwd.0.warning.severity"/*Warning severity*/; >! on(Severity, function (obj) { if (obj.newState.val !==0) { var Begin = getState("dwd.0.warning.begin"/*Warning begin*/).val; var End = getState("dwd.0.warning.end"/*Warning end*/).val; var text = getState("dwd.0.warning.text"/*Warning text*/).val; var Headline = getState("dwd.0.warning.headline"/*Warning headline*/).val; var Description = getState("dwd.0.warning.description"/*Warning description*/).val; >! setState (idSayIt, "Wetterwarnungen " + ': ' + " gültig vom " + Begin + " bis " + End + ': ' + Description); setState (idSayIt2, "Wetterwarnungen " + ': ' + text + " gültig vom " + Begin + " bis " + End + ': ' + Description); //setState (idSayIt2, "Achtung Wetterwarnungen " + Headline + " gültig vom " + Begin + " bis " + End + ': ' + Description); } if (obj.newState.val === 0) { setState(idSayIt, "de;80;Alle Wetterwarnungen des Deutschen Wetterdienstes wurden aufgehoben") ; setState(idSayIt2, "de;80;Alle Wetterwarnungen des Deutschen Wetterdienstes wurden aufgehoben") ; } //log ("Achtung Wetterwarnungen " + Headline + " gültig vom " + Begin + " bis " + End + ': ' + Description); log ("Wetterwarnungen " + text + " gültig vom " + Begin + " bis " + End + ': ' + Description) });
Daten sind vorhanden, ich teste ständig im Wechsel von zwei Landkreisen. Die Entwarnung wird problemlos gesprochen.
http://www.joe-lion.de/old/dwd.JPG" />` ~~Hi Semenchkare,nach dem Du hier schon relativ weit gekommen bist eine Frage….
werden bei Dir auch manchmal Teile eines Satzes am Ende einfach abgeschnitten /(verschluckt)?
z.B. "Amtliche Warnung vor Stur" anstelle von "Amtliche Warnung vor Sturmböen"
Hast Du hierzu eventuell Erkenntnisse woran es liegen kann?
Gruß
Thomas~~
-
leider nein. die Beschreibung spricht mir die Google-Tante nicht.
und Ivona bekomme ich auch mit Zertifikat nicht zum laufen.
LG Seme
-
Hi,
ich hatte auch am Anfang ein kleines Problem mit Ivony.
Bei mir lag es am kopieren des Access und Secret keys.
Auf der Ivony Seite exact die keys markiert und im SayIt Adapter wurde trotzdem beim Einfügen noch ein leerzeichen davor gesetzt.
Nachdem ich das gefunden hatte klappte die Ansage bei mir.
An den Rot markierten Pfeilen war bei mir jeweils ein leerzeichen
Gruß
Mirko
-
Hallo alle
Habe auch gekämpft.
Vernünftige Ansagen bekommt man nur mit Ivona, da die google API bei 72 Zeichen Schluss macht.
D.h. längere Sätze werden erst gar nicht ausgegeben.
Gruss Ralf
-
Wie habt ihr das Gelöst damit die Ansagen nicht Nachts gemacht werden?
Oder ändert der DWD den Status in der Nacht nicht?
-
Wie habt ihr das Gelöst damit die Ansagen nicht Nachts gemacht werden?
Oder ändert der DWD den Status in der Nacht nicht? `
Hi Mirko,
ich habe die Aktualisierung (Cron) des Adapters so eingestellt, dass nachts keine Daten geholt werden.
18 6-22 * * *
Damit ist dann Ruhe.
Gruß
Thomas
-
Also holt der DWD Adapter keine Upates im Zeitraum 6-22 Uhr.
Hm,
weißt du ob es auch ne Möglichkeit gibt nur die Ansage zu verhindern?
Mir wäre es lieber der DWD Adapter wäre ständig aktuell und nur die Ansage setzt aus.
-
Also holt der DWD Adapter keine Upates im Zeitraum 6-22 Uhr.
Hm,
weißt du ob es auch ne Möglichkeit gibt nur die Ansage zu verhindern?
Mir wäre es lieber der DWD Adapter wäre ständig aktuell und nur die Ansage setzt aus. `
Von 6-22 Uhr wird aktualisiert, von 22-6 Uhr dann nicht.
Leider nein, so gut bin ich bei ioBroker noch nicht und Lösungen habe ich hier noch nicht gefunden.
Deswegen mache ich es bisher so, besser als nachts nicht nur durch den Sturm geweckt zu werden sondern auch noch von ioBroker :mrgreen:
-
OK.
Mache das jetzt auch erstmal so.
Danke