Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Meldung in Blockly: unsubscribe: empty name

    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

    Meldung in Blockly: unsubscribe: empty name

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

      Hallo zusammen,

      ich verzweifle an einer (jetzt anderen) Fehlermeldung.
      Ich habe ein Script geschrieben (bzw. bin noch dabei), das meinen Firmen-PlugIn Hybrid bei zu viel Solarüberschuss laden soll.

      Die gewünschten Meldungen kamen nicht, da habe ich weitere Debug-Blocklys eingebaut.
      Seitdem kam erst die Meldung: javascript.0 2020-02-21 17:06:50.130 error (11144) Error by subscription: empty ID defined. All states matched. (Vorher lief mit gleichem Blockly alles ohne Error)

      Diese stand nur im "richtigen" log, nicht im js-Editor-Log. ein debug brachte auch keine Erhellung
      Auch war nichts im Editor angemeckert.

      Ich fand dann etwas in dem js-code.
      Zu der Zeit hatte ich im Bereich "Meldung" noch aus früheren Versuchen einen Vergleich von value != lastValue drin.
      Deswegen auch das Konstrukt mit dem Trigger auf die Variable, wovon ich gar nicht weiß ob das erlaubt ist.

      Dann habe ich diese Bausteine rausgenommen, und der Fehler trat nicht mehr auf.
      Jedoch jetzt kommt beim Neustart der oben genannte Fehler.

      Hier der js-Code

      var Wolkentimer, _C3_9Cberschusszeit, konstanter_Strom;
      
      
      schedule("*/3 8-22 * * *", function () {
        // Ladesteuerung
        if (getState('hm-rpc.0.LTK0124430.1.STATE').val == false) {
          if (getState('smartmeter.0.1-0:16_7_0__255.value').val < -1500 && konstanter_Strom == true) {
            setState("hm-rpc.0.LTK0124430.1.STATE"/*Ladestrom_Auto:1.STATE*/, true);
          }
        } else if (getState('hm-rpc.0.LTK0124430.1.STATE').val == true) {
          if (getState('smartmeter.0.1-0:16_7_0__255.value').val > 500 && Wolkentimer < 3) {
            setState("hm-rpc.0.LTK0124430.1.STATE"/*Ladestrom_Auto:1.STATE*/, false);
          }
        }
      });
      // Not-Aus
      on({id: 'smartmeter.0.1-0:16_7_0__255.value', change: "ne"}, function (obj) {
        var value = obj.state.val;
        var oldValue = obj.oldState.val;
        if (getState('smartmeter.0.1-0:16_7_0__255.value').val > 1200) {
          setState("hm-rpc.0.LTK0124430.1.STATE"/*Ladestrom_Auto:1.STATE*/, false);
        }
      });
      // Meldung
      on({id: konstanter_Strom, change: "any"}, function (obj) {
        var value = obj.state.val;
        var oldValue = obj.oldState.val;
        console.log((['---007--- Der Solarüberschuss ist seit ',konstanter_Strom ? ('' + (_C3_9Cberschusszeit * 3)) : ('' + (Wolkentimer * 3)),' Minuten',konstanter_Strom ? ' ' : ' nicht ',' über 1500 Watt, das Auto kann',konstanter_Strom ? ' ' : ' nicht ','geladen werden.',Wolkentimer > 0 ? ' Achtung wolkig!' : '',getState('hm-rpc.0.LTK0124430.1.STATE').val ? ' Das Auto wird geladen!' : '','Es ist schon seit ',('' + (Wolkentimer * 3)),' Minuten bewölkt.'].join('')));
      });
      
      Wolkentimer = 0;
      _C3_9Cberschusszeit = 0;
      konstanter_Strom = false;
      schedule("*/3 8-22 * * *", function () {
        // Wolkenwächter
        if (getState('hm-rpc.0.LTK0124430.1.STATE').val == false) {
          if (getState('smartmeter.0.1-0:16_7_0__255.value').val < -1500) {
            _C3_9Cberschusszeit = _C3_9Cberschusszeit + 1;
            if (_C3_9Cberschusszeit > 5) {
              konstanter_Strom = true;
              Wolkentimer = 0;
            }
          } else if (getState('smartmeter.0.1-0:16_7_0__255.value').val >= -1500) {
            Wolkentimer = Wolkentimer + 1;
            if (Wolkentimer > 3) {
              _C3_9Cberschusszeit = 0;
              konstanter_Strom = false;
            }
          }
        } else if (getState('hm-rpc.0.LTK0124430.1.STATE').val == true) {
          if (getState('smartmeter.0.1-0:16_7_0__255.value').val < 500) {
            _C3_9Cberschusszeit = _C3_9Cberschusszeit + 1;
            if (_C3_9Cberschusszeit > 5) {
              konstanter_Strom = true;
              Wolkentimer = 0;
            }
          } else if (getState('smartmeter.0.1-0:16_7_0__255.value').val >= 500) {
            Wolkentimer = Wolkentimer + 1;
            if (Wolkentimer > 3) {
              _C3_9Cberschusszeit = 0;
              konstanter_Strom = false;
            }
          }
        }
        console.log((['Der Solarüberschuss ist seit ',konstanter_Strom ? ('' + (_C3_9Cberschusszeit * 3)) : ('' + (Wolkentimer * 3)),' Minuten',konstanter_Strom ? ' ' : ' nicht ',' über 1500 Watt, das Auto kann',konstanter_Strom ? ' ' : ' nicht ','geladen werden.',Wolkentimer > 0 ? ' Achtung wolkig!' : '',getState('hm-rpc.0.LTK0124430.1.STATE').val ? ' Das Auto wird geladen!' : '','Es ist schon seit ',('' + (Wolkentimer * 3)),' Minuten bewölkt.',_C3_9Cberschusszeit].join('')));
      });
      

      Und hier das Blockly:


      Ladekontrolle.png

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

        @Homoran sagte:

        on({id: konstanter_Strom, change: "any"}, function (obj) {

        Man kann nicht auf eine boolsche Variable triggern, sondern nur auf eine Datenpunkt-ID.

        Homoran O 2 Replies Last reply Reply Quote 0
        • Homoran
          Homoran Global Moderator Administrators @paul53 last edited by

          @paul53 Danke!
          Hatte ich befürchtet, erst war es auch eine numerische Variable. Deshalb wollte ich auch den Wertevergleich zum lastValue machen.
          Lief aber jetzt drei Tage ohne Fehlermeldung.
          Lediglich die Meldungen blieben aus.
          Da aber in den letzten Tagen nie 15 Minuten lang die Sonne am Stück schien, hatte ich auch nichts erwartet.

          Mich wundert schon, dass das heutige Einfügen von einem Debug Baustein zu dem Auftauchen der Fehlermeldung(en) führte.

          Wie kann man denn in Blockly den lastValue nutzen?
          Da ich keine andere Möglichkeit fand, bin ich auf das Konstrukt mit dem Trigger auf eine Variable gekommen

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

            @Homoran sagte:

            Wie kann man denn in Blockly den lastValue nutzen?

            Die vordefinierte Variable ist oldValue und muss beim Erstellen genau so geschrieben werden.

            Blockly_temp.JPG

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

              @paul53 Klar, aber ich habe keine ID, sondern nur die Variable.

              Dann muss ich eben noch eine Variable erstellen, und da beim Cronaufruf immer erst den Wert reinschreiben, nachdem ich den alten zum Vergleich genommen habe.

              Dann ist der "neue" beim nächsten Aufruf der "alte" 😉

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

                @paul53 sagte in Meldung in Blockly: unsubscribe: empty name:

                @Homoran sagte:

                on({id: konstanter_Strom, change: "any"}, function (obj) {

                Man kann nicht auf eine boolsche Variable triggern, sondern nur auf eine Datenpunkt-ID.

                Bin ich heute drüber gestolpert, weil ich beim Stoppen eines Skriptes folgenden Fehler erhalten habe:

                javascript.0	2022-04-27 14:50:33.650	warn	unsubscribe: empty name
                

                Ohne diesen Thread wäre ich nie darauf gekommen, woran das liegt. Komisch, dass der Fehler nur beim Stoppen des Skriptes kommt.

                Gerade stehe ich auf dem Schlauch, wie reagiere ich denn dann auf die Änderung einer Variable?

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

                  @ofbeqnpolkkl6mby5e13 sagte: wie reagiere ich denn dann auf die Änderung einer Variable?

                  Man kann nur auf die Änderung eines Datenpunktes per Trigger reagieren. Eine Variable ändert sich nicht ohne Trigger.

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

                    @paul53

                    Wenn die Änderung eines Datenpunkts zur Änderung einer Variable führt und nach Ablauf einer Zeit (Timeout oder Pause) die Variable im Skript ohne Änderung des Datenpunkts geändert wird, dann eben schon.

                    Da ich mit Blockly unterwegs bin: sollte es dann nicht besser gar nicht erst möglich sein, eine Variable in einen Triggerblock stecken zu können?

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

                      @ofbeqnpolkkl6mby5e13 sagte: sollte es dann nicht besser gar nicht erst möglich sein, eine Variable in einen Triggerblock stecken zu können?

                      Die Variable kann auch eine Datenpunkt-ID enthalten, was funktioniert. Blockly kann das nicht überprüfen.

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

                        @paul53

                        Okay. Danke!

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

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        551
                        Online

                        31.9k
                        Users

                        80.3k
                        Topics

                        1.3m
                        Posts

                        blockly
                        3
                        10
                        922
                        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