Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Error in Blockly bei setstate()??

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    SOLVED Error in Blockly bei setstate()??

    This topic has been deleted. Only users with topic management privileges can see it.
    • Homoran
      Homoran Global Moderator Administrators last edited by Jey Cee

      Hallo zusammen,

      ich versuche mir gerade ein etwas komplexeres Blockly zur Poolpumpensteuerung zusammenzuklicken und bekomme den folgenden Fehler:

      18:38:49.799	info	javascript.0 Stop script script.js.Pool.Poolsteuerung
      18:38:49.812	info	javascript.0 Start javascript script.js.Pool.Poolsteuerung
      18:38:49.812	info	javascript.0 script.js.Pool.Poolsteuerung: registered 1 subscription and 0 schedules
      18:39:33.938	info	javascript.0 script.js.Pool.Poolsteuerung: Die Sonne steht bei 265°, die Lufttemperatur beträgt 30.8°C, die Wassertemperatur beträgt 26.3°C, Regen ist 0
      18:39:33.938	warn	javascript.0 at Object.<anonymous> (script.js.Pool.Poolsteuerung:6:5)
      18:40:00.029	info	javascript.0 script.js.Pool.Poolsteuerung: Die Sonne steht bei 266°, die Lufttemperatur beträgt 30.8°C, die Wassertemperatur beträgt 26.3°C, Regen ist 0
      18:40:00.029	warn	javascript.0 at Object.<anonymous> (script.js.Pool.Poolsteuerung:6:5)
      18:41:33.516	info	javascript.0 script.js.Pool.Poolsteuerung: Die Sonne steht bei 266°, die Lufttemperatur beträgt 30.7°C, die Wassertemperatur beträgt 26.3°C, Regen ist 0
      18:41:33.516	warn	javascript.0 at Object.<anonymous> (script.js.Pool.Poolsteuerung:6:5)
      

      Der Code (für @paul53 😉 )

      on({id: new RegExp('hm-rpc\\.0\\.KEQ0963583\\.4\\.TEMPERATURE' + "|" + 'javascript\\.0\\.Sonnenstand\\.Azimut' + "|" + 'hm-rpc\\.0\\.KEQ1022589\\.1\\.STATE' + "|" + 'hm-rpc\\.0\\.JEQ0140901\\.1\\.TEMPERATURE'), change: "ne"}, function (obj) {
          console.log((['Die Sonne steht bei ',getState("javascript.0.Sonnenstand.Azimut").val,'°, die Lufttemperatur beträgt ',getState("hm-rpc.0.JEQ0140901.1.TEMPERATURE").val,'°C, die Wassertemperatur beträgt ',getState("hm-rpc.0.LEQ0773306.2.TEMPERATURE").val,'°C, Regen ist  ',getState("hm-rpc.0.KEQ1022589.1.STATE").val].join('')));
        if (getState("javascript.0.Sonnenstand.Azimut").val > 125 && getState("javascript.0.Sonnenstand.Azimut").val < 300 && getState("hm-rpc.0.KEQ0963583.4.TEMPERATURE").val > 8 && getState("hm-rpc.0.JEQ0140901.1.TEMPERATURE").val > 20) {
          setState("Object ID", (getState("hm-rpc.0.JEQ0646431.1.STATE").val == true));
        } else if (getState("javascript.0.Sonnenstand.Azimut").val < 100 || getState("javascript.0.Sonnenstand.Azimut").val > 300 || getState("hm-rpc.0.KEQ0963583.4.TEMPERATURE").val < 3 && getState("hm-rpc.0.KEQ0963067.4.TEMPERATURE").val < 3 || getState("hm-rpc.0.KEQ1022589.1.STATE").val == 1 || getState("hm-rpc.0.JEQ0140901.1.TEMPERATURE").val < 18 || getState("hm-rpc.0.LEQ0773306.2.TEMPERATURE").val > 28) {
          setState("Object ID", (getState("hm-rpc.0.JEQ0646431.1.STATE").val == false));
        }
      });
      

      und für die visuellen wie mich:
      Poolblockly01.png

      In Zeile 6 erkenne ich nur den State des 4-fach Schaltaktors.
      Da habe ich bereits 0/1 und false/true probiert

      Was habe ich übersehen?

      paul53 1 Reply Last reply Reply Quote 0
      • paul53
        paul53 @Homoran last edited by paul53

        @Homoran sagte:

        Was habe ich übersehen?

        Bei steuere fehlt noch die Zuweisung der Datenpunkt-ID.

        Was ist "hm-rpc.0.KEQ1022589.1.STATE" ?

        Homoran 1 Reply Last reply Reply Quote 0
        • Homoran
          Homoran Global Moderator Administrators @paul53 last edited by Homoran

          @paul53
          :An-Den-Kopf-Klatsch:

          Danke - da sucht man und sucht man und sieht das Naheliegende nicht

          @paul53 sagte in Error in Blockly bei setstate()??:

          Was ist "hm-rpc.0.KEQ1022589.1.STATE" ?

          Das ist die ID!

          paul53 1 Reply Last reply Reply Quote 0
          • paul53
            paul53 @Homoran last edited by

            @Homoran sagte:

            Das ist die ID!

            Das ist mir klar, aber was ist das für ein "STATE", der mit einer Zahl(1) verglichen wird ?

            Homoran 1 Reply Last reply Reply Quote 0
            • Homoran
              Homoran Global Moderator Administrators @paul53 last edited by

              @paul53 sagte in Error in Blockly bei setstate()??:

              Das ist mir klar,

              Sorry Paul!
              Aber es stimmt nicht.

              Ich meinte natürlich die ID, die in dem Block hätte stehen sollen - ist sie aber nicht

              KEQ1022589.1.state ist ein Regensensor

              paul53 1 Reply Last reply Reply Quote 0
              • paul53
                paul53 @Homoran last edited by

                @Homoran sagte:

                Regensensor

                OK, der liefert eine Werteliste mit 0, 1.

                Homoran 1 Reply Last reply Reply Quote 0
                • Homoran
                  Homoran Global Moderator Administrators @paul53 last edited by

                  @paul53 sagte in Error in Blockly bei setstate()??:

                  OK, der liefert eine Werteliste mit 0, 1.

                  Ja 😉 und der Schaltaktor ein true/false

                  javascript.0 script.js.Pool.Poolsteuerung: Die Sonne steht bei 270°, die Lufttemperatur beträgt 30.4°C, die Wassertemperatur beträgt 26.3°C, Regen ist 0 und die Pumpe ist false
                  

                  kann man das einfach in "normale" Sprache wandeln?
                  Ist nur ein Schönheits"fehler".
                  Wenn nicht ist auch gut

                  paul53 1 Reply Last reply Reply Quote 0
                  • paul53
                    paul53 @Homoran last edited by

                    @Homoran sagte:

                    kann man das einfach in "normale" Sprache wandeln?

                    Ja.

                    Blockly_temp.JPG

                    1 Reply Last reply Reply Quote 2
                    • Homoran
                      Homoran Global Moderator Administrators last edited by Homoran

                      SUPER!

                      Danke!

                      EDIT:

                      javascript.0 script.js.Pool.Poolsteuerung: Die Sonne steht bei 275°, die Lufttemperatur beträgt 29.9°C, die Wassertemperatur beträgt 26.3°C, kein Regen und die Pumpe ist aus
                      

                      Jetzt kommt das Feintuning - Laufzeitüberwachung, Temperaturgewinn am Absorber....

                      1 Reply Last reply Reply Quote 0
                      • Homoran
                        Homoran Global Moderator Administrators last edited by

                        Ich habe leider immer noch Fehler.
                        Dabei weiß ich nicht ob diese zusammenhängen.

                        Die Debug-Bausteine habe ich jetzt umgewandelt in Text, der in einen Datenpunkt vom Typ Zeichenkette geschrieben wird.
                        Das passiert seit kurzem nicht mehr.

                        Pool-Log.png

                        ich dachte erst es läge daran, dass in einem anderen (Sub) Programm auf die Änderung des Pumpenstatus ebenfalls etwas in den State geschrieben wird und habe den Eintrag um 1 Sekunde verzögert. Hat aber nicht geholfen.

                        Poolblockly03.png

                        on({id: new RegExp('hm-rpc\\.0\\.KEQ0963583\\.4\\.TEMPERATURE' + "|" + 'javascript\\.0\\.Sonnenstand\\.Azimut' + "|" + 'hm-rpc\\.0\\.KEQ1022589\\.1\\.STATE' + "|" + 'hm-rpc\\.0\\.JEQ0140901\\.1\\.TEMPERATURE' + "|" + 'Messwerte\\.0\\.Pool\\.Not-Aus'), change: "ne"}, function (obj) {
                           if (getState("javascript.0.Sonnenstand.Azimut").val > 120 && getState("javascript.0.Sonnenstand.Azimut").val < 300 && getState("hm-rpc.0.KEQ0963583.4.TEMPERATURE").val > 8 && getState("hm-rpc.0.JEQ0140901.1.TEMPERATURE").val > 20 && getState("Messwerte.0.Pool.Not-Aus").val == false && getState("hm-rpc.0.JEQ0646431.1.STATE").val == false) {
                           setStateDelayed("Messwerte.0.Pool.Logdaten"/*Logdaten*/, (['Automatischer Start!','\r\n','Die Sonne steht bei ',getState("javascript.0.Sonnenstand.Azimut").val,'°, die Lufttemperatur beträgt ',getState("hm-rpc.0.JEQ0140901.1.TEMPERATURE").val,'°C, die Wassertemperatur beträgt ',getState("hm-rpc.0.LEQ0773306.2.TEMPERATURE").val,getState("hm-rpc.0.KEQ1022589.1.STATE").val ? '°C, es regnet ' : '°C, kein Regen ',getState("hm-rpc.0.JEQ0646431.1.STATE").val ? ' und die Pumpe läuft.' : ' und die Pumpe ist aus.'].join('')), true, 200, false);
                           setStateDelayed("hm-rpc.0.JEQ0646431.1.STATE"/*Poolpumpe.STATE*/, true, 1000, false);
                         } else if ((getState("javascript.0.Sonnenstand.Azimut").val < 100 || getState("javascript.0.Sonnenstand.Azimut").val > 300 || getState("hm-rpc.0.KEQ0963583.4.TEMPERATURE").val < 3 && getState("hm-rpc.0.KEQ0963067.4.TEMPERATURE").val < 3 || getState("hm-rpc.0.KEQ1022589.1.STATE").val == 1 || getState("hm-rpc.0.NEQ0532193.4.TEMPERATURE").val < -0.5 && getState("Messwerte.0.Pool.Pumpenlaufzeit").val > 180 || getState("hm-rpc.0.JEQ0140901.1.TEMPERATURE").val < 18 || getState("hm-rpc.0.LEQ0773306.2.TEMPERATURE").val > 28) && getState("hm-rpc.0.JEQ0646431.1.STATE").val == true) {
                           setStateDelayed("Messwerte.0.Pool.Logdaten"/*Logdaten*/, (['Automatischer Stop!!','\r\n','Die Sonne steht bei ',getState("javascript.0.Sonnenstand.Azimut").val,'°, die Lufttemperatur beträgt ',getState("hm-rpc.0.JEQ0140901.1.TEMPERATURE").val,'°C, die Wassertemperatur beträgt ',getState("hm-rpc.0.LEQ0773306.2.TEMPERATURE").val,getState("hm-rpc.0.KEQ1022589.1.STATE").val ? '°C, es regnet ' : '°C, kein Regen ',getState("hm-rpc.0.JEQ0646431.1.STATE").val ? ' und die Pumpe läuft.' : ' und die Pumpe ist aus.','\r\n','Die Pumpe lief bisher ',getState("Messwerte.0.Pool.Pumpenlaufzeit").val,' Minuten.'].join('')), true, 200, false);
                           setStateDelayed("hm-rpc.0.JEQ0646431.1.STATE"/*Poolpumpe.STATE*/, false, 1000, false);
                         }
                        });
                        

                        Es erscheint aber zeitgleich im ioBroker-log

                        hm-rpc.0	2019-08-28 18:14:27.416	error	Error: XML-RPC fault: Failure
                        hm-rpc.0	2019-08-28 18:14:27.416	error	xmlrpc -> setValue ["1","STATE",false] BOOL
                        

                        wie kann ich herausfinden welcher Befehl dahintersteckt - und wenn ich den habe, was ist da falsch?

                        paul53 1 Reply Last reply Reply Quote 0
                        • paul53
                          paul53 @Homoran last edited by paul53

                          @Homoran sagte:

                          welcher Befehl dahintersteckt

                          Das kann nur der letzte sein (steuere Poolpumpe mit falsch), wenn es aus diesem Skript kommt.

                          Homoran 1 Reply Last reply Reply Quote 0
                          • Homoran
                            Homoran Global Moderator Administrators @paul53 last edited by Homoran

                            @paul53
                            Das habe ich auch gedacht - aber daran ist doch nichts falsch, oder muss da doch 0/1 drin stehen?

                            EDIT:
                            Muss doch was dran sein, aber was?
                            der Zustand im Objekt ist rot, die Pumpe ist aber aus.
                            poolpumpe_object.png

                            paul53 1 Reply Last reply Reply Quote 0
                            • paul53
                              paul53 @Homoran last edited by paul53

                              @Homoran sagte:

                              der Zustand im Objekt ist rot, die Pumpe ist aber aus.

                              Fehlende Rückmeldung von der CCU ? Am Skript liegt es sicherlich nicht.

                              Homoran 1 Reply Last reply Reply Quote 0
                              • Homoran
                                Homoran Global Moderator Administrators @paul53 last edited by Homoran

                                @paul53
                                Danke, dann ist es wohl ein Fall für @foxriver76

                                Hast du eine Ahnung warum der Eintrag nicht in den log-Datenpunkt geschrieben wird.
                                Am "Erstelle Text-Aus" Block liegt es nicht, der läuft in einem separaten Skript problemlos, dann sieht es auch aus wie gewünscht:
                                Pool-Log02.png

                                Außerdem bekomme ich den erzwungenen Zeilenumbruch mit nichts hin

                                paul53 foxriver76 2 Replies Last reply Reply Quote 0
                                • paul53
                                  paul53 @Homoran last edited by

                                  @Homoran sagte:

                                  Hast du eine Ahnung warum der Eintrag nicht in den log-Datenpunkt geschrieben wird.

                                  Nein.

                                  @Homoran sagte in [gelöst] Error in Blockly bei setstate()??:

                                  Außerdem bekomme ich den erzwungenen Zeilenumbruch mit nichts hin

                                  Wo wird der Datenpunkt angezeigt ? Hast Du es mal mit <br> versucht ?

                                  Homoran 1 Reply Last reply Reply Quote 0
                                  • Homoran
                                    Homoran Global Moderator Administrators @paul53 last edited by Homoran

                                    @paul53 sagte in [gelöst] Error in Blockly bei setstate()??:

                                    Wo wird der Datenpunkt angezeigt ?

                                    in einem eventlist widget (s.o. im Screenshot)
                                    "Automatischer Stop!" und "Die Pumpe lief..." sollten je in einer eigenen Zeile sein

                                    @paul53 sagte in [gelöst] Error in Blockly bei setstate()??:

                                    Hast Du es mal mit <br> versucht ?

                                    nein, es gibt dafür extra einen Block in dem du \n, \r\n und \r auswählen kannst.

                                    EDIT:
                                    <br> klappt

                                    und schon wieder: DANKE!

                                    1 Reply Last reply Reply Quote 0
                                    • foxriver76
                                      foxriver76 Developer @Homoran last edited by foxriver76

                                      @Homoran kommt der Fehler auch wenn du über Objekte schaltest und kommt er bei jedem Versuch? Was ist das für ein Aktor, den du dort schaltest?

                                      Homoran 1 Reply Last reply Reply Quote 0
                                      • Homoran
                                        Homoran Global Moderator Administrators @foxriver76 last edited by

                                        @foxriver76
                                        Ich hoffe ich kann Entwarnung geben.

                                        Es ist ein 4fach schaltaktor hutschiene.

                                        Der hängt in der Werkstatt im Installationskanal.
                                        Die Werkstatt ist im Keller durch zwei Wände getrennt.

                                        Daher war der Aktor mal wieder in Kommunikation ist gestört Modus.

                                        Habe jetzt ein rf Gateway direkt an die Wand platziert.
                                        Danach war die Kommunikation wieder ok, der Wert unter Objekte schwarz, und die Meldung tauchte anscheinend seit dem nicht mehr auf.

                                        Sorry für den Wind!

                                        foxriver76 1 Reply Last reply Reply Quote 0
                                        • foxriver76
                                          foxriver76 Developer @Homoran last edited by

                                          @Homoran kein Ding, die Fehlermeldung könnte man trotzdem mal aussagekräftiger gestalten. 😉

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

                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          814
                                          Online

                                          31.9k
                                          Users

                                          80.3k
                                          Topics

                                          1.3m
                                          Posts

                                          3
                                          19
                                          1022
                                          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