Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly…. ich versteh es nicht :-(

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Blockly…. ich versteh es nicht :-(

    This topic has been deleted. Only users with topic management privileges can see it.
    • wendy2702
      wendy2702 last edited by

      Das war es.

      Ich schreibe hier mal besser noch nicht "Gelöst" vor, kommt bestimmt noch die ein oder andere Dumme frage von mir 😉

      1 Reply Last reply Reply Quote 0
      • wendy2702
        wendy2702 last edited by

        So,

        geht schon weiter.

        Das Ipad geht jetzt an und nach 30 sek. wieder aus wenn sich der Status vom Object ändert.

        999_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?

        1 Reply Last reply Reply Quote 0
        • Jeeper.at
          Jeeper.at last edited by

          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

          1 Reply Last reply Reply Quote 0
          • Dutchman
            Dutchman Developer Most Active Administrators last edited by

            @wendy2702:

            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 ?

            1 Reply Last reply Reply Quote 0
            • wendy2702
              wendy2702 last edited by

              @Jeeper.at:

              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.

              1 Reply Last reply Reply Quote 0
              • Dutchman
                Dutchman Developer Most Active Administrators last edited by

                @wendy2702:

                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)

                1 Reply Last reply Reply Quote 0
                • wendy2702
                  wendy2702 last edited by

                  @Dutchman:

                  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> 
                  
                  1 Reply Last reply Reply Quote 0
                  • Dutchman
                    Dutchman Developer Most Active Administrators last edited by

                    Kurz die kleine ins Bett jonglieren dan Schau ich mal ob ich es reproduzieren kan

                    Sent from my iPhone using Tapatalk

                    1 Reply Last reply Reply Quote 0
                    • Dutchman
                      Dutchman Developer Most Active Administrators last edited by

                      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 ?

                      1 Reply Last reply Reply Quote 0
                      • wendy2702
                        wendy2702 last edited by

                        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

                        1 Reply Last reply Reply Quote 0
                        • wendy2702
                          wendy2702 last edited by

                          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-.DmLp46gH#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.vBaGiqvENrj8p"><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.

                          1 Reply Last reply Reply Quote 0
                          • First post
                            Last post

                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          1.0k
                          Online

                          31.7k
                          Users

                          79.7k
                          Topics

                          1.3m
                          Posts

                          4
                          13
                          1316
                          Loading More Posts
                          • Oldest to Newest
                          • Newest to Oldest
                          • Most Votes
                          Reply
                          • Reply as topic
                          Log in to reply
                          Community
                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                          The ioBroker Community 2014-2023
                          logo