NEWS
Blockly…. ich versteh es nicht :-(
-
Das war es.
Ich schreibe hier mal besser noch nicht "Gelöst" vor, kommt bestimmt noch die ein oder andere Dumme frage von mir
-
So,
geht schon weiter.
Das Ipad geht jetzt an und nach 30 sek. wieder aus wenn sich der Status vom Object ändert.
Allerdings kommen jetzt, und das verstehe ich nicht, alle paar sekunden die Warnungsansagen wenn ich dieses Script dafür benutze:
! var idSprache = 'sayit.1.tts.text'; // Sprachausgabe Browser
! var idDWD = 'dwd.0.warning.description'; //Warning description
! var timer = {};
! var debug = false;
! on(idDWD, function(obj) {
! log("trigger DWD-Meldung:" + obj.newState.val);
! var description = obj.newState.val;
! if (description !== "") {
! log("aktuell DWD-Meldung:" + description);
! log("alt DWD-Meldung:" + obj.oldState.val);
! if (description !== obj.oldState.val) {
! log("Meldung geändert -> Timer clear");
! if (timer[idDWD] !== null) { clearInterval(idDWD); timer[idDWD] = null; }
! }
! var headline = getState("dwd.0.warning.headline"/Warning headline/).val;
! var message = headline +". "+description;
! var headline2 = getState("dwd.0.warning1.headline").val+". ";
! log("Headline2:"+headline2);
! var description2 = getState("dwd.0.warning1.description").val+".";
! log("description2:"+description2);
! message = message + ". "+ headline2 + description2 +". ";
! log("–>DWD-Meldung" + message);
! saySomething(idDWD, message, 60); //alle 60 min wiederholen
! } else {
! log("clear DWD-Meldung");
! if (timer[idDWD] !== null) { clearInterval(idDWD); timer[idDWD] = null; }
! }
! }
! );
! // –------------------------------------Unterprogramme --------------------------------
! function saySomething(idGeraet, text, zeit)
! {
! var zeitms = zeit 601000;
! var wiederholung = true;
! if (zeit === 0) {
! wiederholung = false;
! }
! // Sage zum ersten Mal
! var d = new Date ();
! var h = d.getHours();
! if (debug || (h < 23) && (h > 9)) // nur zwischen 9 und 23 Uhr
! {
! log('attempt Saying: ('+zeitms+"):" + text);
! if (wiederholung) {
! log ("Timer= " + timer[idGeraet] !== null);
! if (timer[idGeraet] === null) {
! log('Saying every:'+zeitms+" ms:"+text);
! timer[idGeraet] = setInterval(function() {
! if (debug || (h < 23) && (h > 9)) // nur zwischen 9 und 23 Uhr
! {
! log('Repeated Saying:'+text);
! setState(idSprache, text);
! }
! }, zeitms);
! setState(idSprache, text);
! } else
! {
! log('timer ['+idGeraet+'] already set.');
! }
! } else {
! log('Saying once:'+text);
! setState(idSprache, text);
! }
! }
! else
! {
! log("Not Saying because it's too late");
! }
! }Wenn ich mein "Blockly" Script deaktiviere, sehe ich auch im Log keine weiteren Einträge von dem Ansage script.
Verstehe nur nicht wie das zusammenhängt ?
Liegt das jetzt an dem Script oder an meinem Blockly gebastel?
-
Ich bin mir nicht sicher das du das hören willst.
Sprachausgabe am IPad ist eine furchtbare Katastrophe. Ich habe mich auch lange damit beschäftigt. Das IPad hat aber eine Menge verschiedener Schlafzustände, das es mir nicht möglich war das sauber hinzubekommen. Es ist ein Unterschied ob du das IPad aufgeweckt hast oder danach einen Tastendruck im Browser gemacht hast. Die Apps werden vom OS priorisiert und einzeln in den Hintergrund geschickt.
Meine einzige Lösung war eine USB Soundkarte am Host. Dort funktioniert die Sprachausgabe perfekt.
Lg
Günther
-
So,
geht schon weiter.
Das Ipad geht jetzt an und nach 30 sek. wieder aus wenn sich der Status vom Object ändert.
IPAD_AN_AUS.JPG
Allerdings kommen jetzt, und das verstehe ich nicht, alle paar sekunden die Warnungsansagen wenn ich dieses Script dafür benutze:
! var idSprache = 'sayit.1.tts.text'; // Sprachausgabe Browser
! var idDWD = 'dwd.0.warning.description'; //Warning description
! var timer = {};
! var debug = false;
! on(idDWD, function(obj) {
! log("trigger DWD-Meldung:" + obj.newState.val);
! var description = obj.newState.val;
! if (description !== "") {
! log("aktuell DWD-Meldung:" + description);
! log("alt DWD-Meldung:" + obj.oldState.val);
! if (description !== obj.oldState.val) {
! log("Meldung geändert -> Timer clear");
! if (timer[idDWD] !== null) { clearInterval(idDWD); timer[idDWD] = null; }
! }
! var headline = getState("dwd.0.warning.headline"/Warning headline/).val;
! var message = headline +". "+description;
! var headline2 = getState("dwd.0.warning1.headline").val+". ";
! log("Headline2:"+headline2);
! var description2 = getState("dwd.0.warning1.description").val+".";
! log("description2:"+description2);
! message = message + ". "+ headline2 + description2 +". ";
! log("–>DWD-Meldung" + message);
! saySomething(idDWD, message, 60); //alle 60 min wiederholen
! } else {
! log("clear DWD-Meldung");
! if (timer[idDWD] !== null) { clearInterval(idDWD); timer[idDWD] = null; }
! }
! }
! );
! // –------------------------------------Unterprogramme --------------------------------
! function saySomething(idGeraet, text, zeit)
! {
! var zeitms = zeit 601000;
! var wiederholung = true;
! if (zeit === 0) {
! wiederholung = false;
! }
! // Sage zum ersten Mal
! var d = new Date ();
! var h = d.getHours();
! if (debug || (h < 23) && (h > 9)) // nur zwischen 9 und 23 Uhr
! {
! log('attempt Saying: ('+zeitms+"):" + text);
! if (wiederholung) {
! log ("Timer= " + timer[idGeraet] !== null);
! if (timer[idGeraet] === null) {
! log('Saying every:'+zeitms+" ms:"+text);
! timer[idGeraet] = setInterval(function() {
! if (debug || (h < 23) && (h > 9)) // nur zwischen 9 und 23 Uhr
! {
! log('Repeated Saying:'+text);
! setState(idSprache, text);
! }
! }, zeitms);
! setState(idSprache, text);
! } else
! {
! log('timer ['+idGeraet+'] already set.');
! }
! } else {
! log('Saying once:'+text);
! setState(idSprache, text);
! }
! }
! else
! {
! log("Not Saying because it's too late");
! }
! }Wenn ich mein "Blockly" Script deaktiviere, sehe ich auch im Log keine weiteren Einträge von dem Ansage script.
Verstehe nur nicht wie das zusammenhängt ?
Liegt das jetzt an dem Script oder an meinem Blockly gebastel? `
Dein script wird immer getriggerd wen " 'dwd.0.warning.description'" eine aenderung bekommt.
Hast du schon kontrolliert das dieser wert nich alle x secunden ein update bekommt was erklaren wurden warum das script reden bleibt ?
-
Ich bin mir nicht sicher das du das hören willst.
Sprachausgabe am IPad ist eine furchtbare Katastrophe. Ich habe mich auch lange damit beschäftigt. Das IPad hat aber eine Menge verschiedener Schlafzustände, das es mir nicht möglich war das sauber hinzubekommen. Es ist ein Unterschied ob du das IPad aufgeweckt hast oder danach einen Tastendruck im Browser gemacht hast. Die Apps werden vom OS priorisiert und einzeln in den Hintergrund geschickt.
Meine einzige Lösung war eine USB Soundkarte am Host. Dort funktioniert die Sprachausgabe perfekt.
Lg
Günther `
Hi,
die Ansage, wenn das IPAD über einen Bewegungsmelder aufgeweckt wird funktioniert bei mir zur Zeit.
Habe ich heute Vormittag noch etwas ausgiebiger getestet.
http://forum.iobroker.net/viewtopic.php?p=45561#p45561
Das hier ist kein generelles Ansage Problem sondern eher ein Script thema… denke ich.
-
Das hier ist kein generelles Ansage Problem sondern eher ein Script thema… denke ich. `
hast du jetzt 1 oder 2 scripte ?
Schmeis mal bitte was du hast in diesen thread (bitte in code block !).
WEn es ein tekst script is copy/past, bei blockly bitte exportieren und dan den inhalt der datei posten dan kan ich auch mal importieren und nachschaun.
Wie oder durch was wird bei dir die variable "dwd.0.warning.descriptio" geaendert ? (ich nem an per dwd adapter ?)
wie oft wird diese aenderung im broker gepusht ? (zu sehen unter events oder mal history auf diese variable activieren)
-
Dein script wird immer getriggerd wen " 'dwd.0.warning.description'" eine aenderung bekommt.
Hast du schon kontrolliert das dieser wert nich alle x secunden ein update bekommt was erklaren wurden warum das script reden bleibt ? `
Keine Änderung erkennen können. Ansage Text war auch immer der gleiche.
Glaube das kommt aus dem Ansage Script:
[codesayit.1 2017-01-06 17:42:31.672 info sayit.1 saying: Amtliche WARNUNG vor FROST. Es tritt mäßiger Frost zwischen -2 °C und -7 °C auf.. Amtliche WARNUNG vor FROST. Es tritt mäßiger Frost zwischen -4 °C und -8 °C auf. Über Schnee sinken di
sayit.1 2017-01-06 17:42:30.670 info sayit.1 saying: /opt/iobroker/node_modules/iobroker.sayit/gong.mp3
javascript.0 2017-01-06 17:42:30.663 info javascript.0 script.js.Ansage_Wetterwarnung_9_23Uhr: Repeated Saying:Amtliche WARNUNG vor FROST. Es tritt mäßiger Frost zwischen -2 °C und -7 °C auf.. Amtliche WARNUNG vor FROST. Es tritt mäßiger Fros
Der DWD Adapter wird alle 8 minuten aktualisiert.
8,16,24,32,40,48,56 * * * *
Das Script habe ich ja schon gepostet.
Hier jetzt der Blockly Export:
<xml xmlns="http://www.w3.org/1999/xhtml"><block type="comment" id="8PJYg7b94rKU!u^JMYyz" x="37" y="13"><field name="COMMENT">IPAD An bei Ansage Wetterwarnung für 30sec zwischen 9-23Uhr</field> <next><block type="on" id="5T=oMviOQ%)0~{C|383["><field name="OID">dwd.0.warning.description</field> <field name="CONDITION">ne</field> <statement name="STATEMENT"><block type="controls_if" id="y~jg0cnPt9DBpaM3K%-F"><value name="IF0"><block type="time_compare" id="txiC}!v+SSz_uXxd0W/1"><mutation end_time="true"></mutation> <field name="OPTION">between</field> <field name="START_TIME">09:00</field> <field name="END_TIME">23:00</field></block></value> <statement name="DO0"><block type="debug" id="!7SDpXAxS0.p6-^!;{3a"><field name="Severity">log</field> <value name="TEXT"><shadow type="text" id="B8hsZude%PzGliZ=FRZv"><field name="TEXT">IPAD AN</field></shadow></value> <next><block type="control" id="7d,oL+U=f0iq/%~darHh"><mutation delay_input="false"></mutation> <field name="OID">hm-rpc.0.MEQ0201401.1.STATE</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="logic_boolean" id="/~)o}le)!qyTsQ@Foh_X"><field name="BOOL">TRUE</field></block></value> <next><block type="control" id="G1qZwXf^q7rqcA*=_7Ht"><mutation delay_input="true"></mutation> <field name="OID">hm-rpc.0.MEQ0201401.1.STATE</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">30000</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"><block type="logic_boolean" id="[E`*03ZNEy=VyBqjmJ?x"><field name="BOOL">FALSE</field></block></value></block></next></block></next></block></statement></block></statement></block></next></block></xml>
-
Kurz die kleine ins Bett jonglieren dan Schau ich mal ob ich es reproduzieren kan
Sent from my iPhone using Tapatalk
-
also ich sehe keinerlei zusammenhang zwischen dem blokly und deinen script ?!
wo hast du die 2 scripte gespeichert, zufaellig unter global ?
Ich verstehe im ganzen nicht warum das script alle par sekunden triggert, nicht zufallig irgendwo ein cron oder so laufen ?
-
Habe beides nicht unter Global laufen.
Das Ansage Script einfach nur reinkopiert. Das Blockly selber gebastelt.
Versuche mich mal mit Blockly an einem kompletten Ansagescript mit Zeiten Berücksichtigung
-
Guten Morgen zusammen,
habe mich heute mal weiter mit Blockly beschäftigt.
Habe mir das für die Ansage jetzt erstmal so gebastelt:
Blockly:
! <xml 1999/xmlns="<URL url=" http:/www.w3.org/xhtml"="">http://www.w3.org/1999/xhtml">
! <block type="comment" id="0#2N9{f1qzS.?aQjyF^t" x="62" y="6"><field name="COMMENT">Ansage Wetter Warnung</field>
! <next><block type="on" id="{(/0/XswO#kI,[z2]L"><field name="OID">dwd.0.warning.description</field>
! <field name="CONDITION">ne</field>
! <statement name="STATEMENT"><block type="comment" id="lQLZ-.DmLp46
gH#A(:"><field name="COMMENT">Ansage in Zeitraum</field>
! <next><block type="debug" id="yqjq:JM+5|2Rr9_~1S!n"><field name="Severity">log</field>
! <value name="TEXT"><shadow type="text" id="rPI@5!j.egewYu#x7o5Q"><field name="TEXT">Änderung Wetterwarnung</field></shadow></value>
! <next><block type="controls_if" id="@K{38@g4[,lRQVs1eSY*"><value name="IF0"><block type="time_compare_ex" id="Q0%APiD4]sG/K=O/XBc"><mutation end_time="true" actual_time="true"></mutation> ! <field name="USE_ACTUAL_TIME">TRUE</field> ! <field name="OPTION">between</field> ! <value name="START_TIME"><shadow type="text" id="hD]^-0=mMS5T{5B|u~s^"><field name="TEXT">09:00</field></shadow></value> ! <value name="END_TIME"><shadow type="text" id="2,#Yrkh|9-j[8)|7S)3K"><field name="TEXT">23:00</field></shadow></value></block></value> ! <statement name="DO0"><block type="debug" id=":y3?1.vBaGiqvE
Nrj8p"><field name="Severity">log</field>
! <value name="TEXT"><shadow type="text" id="f^)TeKU?Q!3_.Ej[6ivs"><field name="TEXT">IPAD AN</field></shadow></value>
! <next><block type="control" id="{WnshUZH-i@6Lg38CD3}"><mutation delay_input="false"></mutation>
! <field name="OID">hm-rpc.0.MEQ0201401.1.STATE</field>
! <field name="WITH_DELAY">FALSE</field>
! <value name="VALUE"><block type="logic_boolean" id="m6G%H?[!JtBqzsl7!Hu9"><field name="BOOL">TRUE</field></block></value>
! <next><block type="comment" id="~O]]/P%WI{x;TV.hfLc"><field name="COMMENT">Ansage mit Verzögerung</field>
! <next><block type="timeouts_settimeout" id="~T[e.?@YO)jp;c(|;!?"><field name="NAME">timeout</field>
! <field name="DELAY">2000</field>
! <statement name="STATEMENT"><block type="sayit" id="J)T;J+yr},36p,wbCt3Y"><field name="INSTANCE">.1</field>
! <field name="LANGUAGE">de</field>
! <field name="LOG">debug</field>
! <value name="VOLUME"><block type="variables_get" id="lhbkT^B0:wfs~!^pa)q"><field name="VAR">100</field></block></value> ! <value name="MESSAGE"><shadow type="text" id="o{T4nu,J5miCy=WGyjm?"><field name="TEXT">Test</field></shadow> ! <block type="text_join" id=";u-JOA:L
:Mbn-10BCYB"><mutation items="6"></mutation>
! <value name="ADD0"><block type="get_value" id="}Q!.?u,~ekR_U+eKmj2"><field name="ATTR">val</field>
! <field name="OID">dwd.0.warning.headline</field></block></value>
! <value name="ADD1"><block type="text" id="ZS/3]BbZR:Q)imJ0IwP-"><field name="TEXT">Von</field></block></value>
! <value name="ADD2"><block type="get_value" id="dlgKvcKmC}I9PM)T.Ycd"><field name="ATTR">val</field>
! <field name="OID">dwd.0.warning.begin</field></block></value>
! <value name="ADD3"><block type="text" id="T-%]nCUX:Qq(SnHAyO@2"><field name="TEXT">bis</field></block></value>
! <value name="ADD4"><block type="get_value" id="-.;_F()4hAP29[:x,sSE"><field name="ATTR">val</field>
! <field name="OID">dwd.0.warning.end</field></block></value>
! <value name="ADD5"><block type="get_value" id="w;c:G:2=V+}+8iP4(6x"><field name="ATTR">val</field>
! <field name="OID">dwd.0.warning.description</field></block></value></block></value></block></statement>
! <next><block type="debug" id="zp7aG:e4YZ4v)o1(oP"><field name="Severity">log</field>
! <value name="TEXT"><shadow type="text" id=";GIT][`[Hnfi#{((;)Vu"><field name="TEXT">IPAD aus nach 30 Sekunden</field></shadow></value>
! <next><block type="control" id="n=zNe6R.0_(QoGKI+DNu"><mutation delay_input="true"></mutation>
! <field name="OID">hm-rpc.0.MEQ0201401.1.STATE</field>
! <field name="WITH_DELAY">TRUE</field>
! <field name="DELAY_MS">30000</field>
! <field name="CLEAR_RUNNING">FALSE</field>
! <value name="VALUE"><block type="logic_boolean" id="J:+ZU*3h^KFb-6g,LMk+"><field name="BOOL">FALSE</field></block></value></block></next></block></next></block></next></block></next></block></next></block></statement></block></next></block></next></block></statement></block></next></block></xml>Javascript Code:
! var my_100, timeout;
! // Ansage Wetter Warnung
! on({id: "dwd.0.warning.description"/Warning description/, change: "ne"}, function (obj) {
! var value = obj.state.val;
! var oldValue = obj.oldState.val;
! // Ansage in Zeitraum
! console.log('Änderung Wetterwarnung');
! if (compareTime('09:00', '23:00', "between", null)) {
! console.log('IPAD AN');
! setState("hm-rpc.0.MEQ0201401.1.STATE"/HM-Dis-TD-T MEQ0201401:1.STATE/, true);
! // Ansage mit Verzögerung
! timeout = setTimeout(function () {
! setState("sayit.1.tts.text", "de;my_100;" + ([getState("dwd.0.warning.headline").val,'Von',getState("dwd.0.warning.begin").val,'bis',getState("dwd.0.warning.end").val,getState("dwd.0.warning.description").val].join('')));
! console.debug("sayIt[de][Volume - my_100]: " + ([getState("dwd.0.warning.headline").val,'Von',getState("dwd.0.warning.begin").val,'bis',getState("dwd.0.warning.end").val,getState("dwd.0.warning.description").val].join('')));
! }, 2000);
! console.log('IPAD aus nach 30 Sekunden');
! setStateDelayed("hm-rpc.0.MEQ0201401.1.STATE"/HM-Dis-TD-T MEQ0201401:1.STATE/, false, 30000, false);
! }
! });Allerdings bekomme ich keine Ansage sondern diesen Fehler im Log:
sayit.1 2017-01-07 10:24:27.784 error Cannot get file: received file is too short sayit.1 2017-01-07 10:24:27.698 info saying: Amtliche WARNUNG vor LEICHTEM SCHNEEFALLVon07.01.2017 06:00bis07.01.2017 14:00
Sayit ist so befüllt:
de;my_100;Amtliche WARNUNG vor LEICHTEM SCHNEEFALLVon07.01.2017 06:00bis07.01.2017 14:00
Sayit nutzt IVONA und wenn ich den Text ohne "de;" und ohne "my_" absende funktioniert es.
Ist das jetzt ein Fehler von dem Blockly Modul oder von SayIt?
EDIT: Das "my_" habe ich wegbekommen. Da hatte ich etwas falsches ausgewählt. Allerdings kommt immer noch das "de;" mit und sobald ich das absende funktioniert es nicht.