Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Verstehe die Fehlermeldung nicht

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Verstehe die Fehlermeldung nicht

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

      Hallo zusammen,
      nachdem mir meine Sonoff´s nun 4 Jahre auf die Nerven gegangen sind habe ich sie alle aus den Wänden gerupft und durch Shelly´s ersetzt. Die fühlen sich direkt wertiger an - viel weniger "verbastelt".
      Wie auch immer - ich habe mir direkt einen neuen 1PM an meinem Schuppenlicht angeschlossen. Also Bewegungsmelder an Eingang, Strahler ans Relais, Eingang als detached markiert und das aktuelle Außenbeleuchtungs-Script angepasst.
      Leider läuft es nicht, und den Fehler kann ich nicht nachvollziehen. Das Script sagt mir:

      javascript.0 (448) script.js.Aussenbeleuchtung.Aussenbeleuchtung_Türen: setForeignState(id=shelly.1.shellypro4pm#083af27d18d4#1.Relay1.Switch, state={"val":false,"ack":false,"ts":1662316800011,"q":0,"from":"system.adapter.javascript.0","lc":1662314400074,"c":"script.js.Aussenbeleuchtung.Aussenbeleuchtung_Türen"}) - wurde nicht ausgeführt, während der Debug-Modus aktiv ist
      

      Ich bin alle Objekte nochmal durchgegangen, finde den Fehler aber nicht. Die Bezeichner sind alle richtig. So sieht mein Script in JS aus:

      var Nacht, Nacht1, IstNacht, Nacht2, HintertuerAn;
      
      
      schedule({astro: "sunriseEnd", shift: 10}, async function () {
        if (getState('0_userdata.0.Automatiken.Außenbeleuchtung').val == true) {
          setState("shelly.1.shellypro4pm#083af27d18d4#1.Relay0.Switch"/*Switch*/, false);
        }
        if (getState('0_userdata.0.Automatiken.Außenbeleuchtung').val == true) {
          setState("shelly.1.shellypro4pm#083af27d18d4#1.Relay1.Switch"/*Switch*/, false);
        }
        if (getState('0_userdata.0.Automatiken.Außenbeleuchtung').val == true) {
          setState("shelly.2.SHSW-PM#BCFF4DFCBAF5#1.Relay0.Switch"/*Switch*/, false);
        }
        IstNacht = false;
        HintertuerAn = false;
      });
      schedule({astro: "sunsetStart", shift: -10}, async function () {
        if (getState('0_userdata.0.Automatiken.Außenbeleuchtung').val == true) {
          setState("shelly.1.shellypro4pm#083af27d18d4#1.Relay0.Switch"/*Switch*/, true);
        }
        if (getState('0_userdata.0.Automatiken.Außenbeleuchtung').val == true) {
          setState("shelly.1.shellypro4pm#083af27d18d4#1.Relay1.Switch"/*Switch*/, true);
        }
        IstNacht = true;
        HintertuerAn = true;
      });
      Nacht = schedule('*'.toString().trim() + ' ' + '2'.toString().trim() + ' ' + '*'.toString().trim() + ' ' + '*'.toString().trim() + ' ' + '*'.toString().trim(), async function () {
        if (getState('0_userdata.0.Automatiken.Außenbeleuchtung').val == true) {
          setState("shelly.1.shellypro4pm#083af27d18d4#1.Relay0.Switch"/*Switch*/, false);
        }
      });
      Nacht1 = schedule('*'.toString().trim() + ' ' + '20'.toString().trim() + ' ' + '*'.toString().trim() + ' ' + '*'.toString().trim() + ' ' + '*'.toString().trim(), async function () {
        if (getState('0_userdata.0.Automatiken.Außenbeleuchtung').val == true) {
          setState("shelly.1.shellypro4pm#083af27d18d4#1.Relay1.Switch"/*Switch*/, false);
        }
        HintertuerAn = false;
      });
      Nacht2 = schedule('30'.toString().trim() + ' ' + '6'.toString().trim() + ' ' + '*'.toString().trim() + ' ' + '*'.toString().trim() + ' ' + '*'.toString().trim(), async function () {
        if (getState('0_userdata.0.Automatiken.Außenbeleuchtung').val == true) {
          setState("shelly.1.shellypro4pm#083af27d18d4#1.Relay0.Switch"/*Switch*/, true);
        }
        if (getState('0_userdata.0.Automatiken.Außenbeleuchtung').val == true) {
          setState("shelly.1.shellypro4pm#083af27d18d4#1.Relay1.Switch"/*Switch*/, true);
          HintertuerAn = true;
        }
      });
      if (getState(IstNacht).val == true) {
        if (getState('shelly.2.SHSW-PM#BCFF4DFCBAF5#1.Relay0.Input').val == true) {
          if (getState('0_userdata.0.Automatiken.Außenbeleuchtung').val == true) {
            setState("shelly.2.SHSW-PM#BCFF4DFCBAF5#1.Relay0.Switch"/*Switch*/, true);
            if (getState(HintertuerAn).val == false) {
              setState("shelly.1.shellypro4pm#083af27d18d4#1.Relay1.Switch"/*Switch*/, true);
            }
          }
        }
      }
      if (getState(IstNacht).val == true) {
        if (getState('shelly.2.SHSW-PM#BCFF4DFCBAF5#1.Relay0.Input').val == false) {
          if (getState('0_userdata.0.Automatiken.Außenbeleuchtung').val == true) {
            setState("shelly.2.SHSW-PM#BCFF4DFCBAF5#1.Relay0.Switch"/*Switch*/, false);
            if (getState(HintertuerAn).val == false) {
              setState("shelly.1.shellypro4pm#083af27d18d4#1.Relay1.Switch"/*Switch*/, false);
            }
          }
        }
      }
      

      Im Grunde steuere ich damit 3 Lampen. Am 4-Pro hängt an 0 die Beleuchtung vorm Haus, am 1 die Hintertür. Der andere Shelly ist der, der am Schuppen angeschlossen ist. Der am Schuppen war früher nicht smart, über Nacht konnte also schon ab und an eine Katze mein Licht anschalten. Jetzt soll der Schuppen auch meine Hintertür "beleuchten", der Bewegungsmelder reicht bis zu der Tür.

      Kann mir da jemand helfen?

      Danke!
      Matze

      PS.: Wenn auch noch jemand sagen könnte wo ich einen Namen definiere, damit ich im Blockly nicht zig mal "Switch" sehe sondern den Namen von ebendiesem - wäre ein Traum 😉

      ? paul53 3 Replies Last reply Reply Quote 0
      • ?
        A Former User @Matze78 last edited by A Former User

        @matze78 im JavaScript editor wenn du das Skript öffnest hast du oben rechts ein schrauben Schlüssel, klickst du dadrauf ist dort ein Punkt ‚debug‘ der scheint altiviviert zu sein. Diesen deaktivieren und das Script sollte laufen 🙂

        4530AF65-7B8D-412B-9DDC-E7A57294A5F4.jpeg

        M 1 Reply Last reply Reply Quote 0
        • M
          Matze78 @Guest last edited by Matze78

          Vielen Dank @ciddi89 ,

          leider will es aber trotzdem nicht. Jetzt ist die Meldung

          21:44:14.756	warn	javascript.0 (448) at script.js.Aussenbeleuchtung.Aussenbeleuchtung_Türen:47:5
          21:44:14.756	warn	javascript.0 (448) at script.js.Aussenbeleuchtung.Aussenbeleuchtung_Türen:69:3
          21:44:14.756	info	javascript.0 (448) script.js.Aussenbeleuchtung.Aussenbeleuchtung_Türen: getState(id=undefined, timerId=undefined) => not found
          21:44:14.758	warn	javascript.0 (448) at script.js.Aussenbeleuchtung.Aussenbeleuchtung_Türen:57:5
          21:44:14.758	warn	javascript.0 (448) at script.js.Aussenbeleuchtung.Aussenbeleuchtung_Türen:69:3
          21:44:14.758	info	javascript.0 (448) script.js.Aussenbeleuchtung.Aussenbeleuchtung_Türen: registered 0 subscriptions, 5 schedules, 0 messages, 0 logs and 0 file subscriptions
          

          Das Licht schaltet nicht. Ich sehe aber durchaus den Bewegungsmelder, also der Input wechselt auf true...

          Edit: Ich glaube die Variable ist undefined. Das kann jetzt natürlich sein, die wird ja nur über Astro gesetzt. Wie löse ich das denn jetzt? In Javascript geht es iwie nicht (das ist jetzt schreibgeschützt)

          ? 1 Reply Last reply Reply Quote 0
          • ?
            A Former User @Matze78 last edited by A Former User

            @matze78 bei den definitionen ist der jetzige fehler:

            getState(IstNacht).val
            

            Das getState und das .val kannst dz weglassen also nur

            IstNacht === true 
            

            Genau so wie mit hintertueran das sind variabeln und brauchen daher nicht die funktion getState

            if (IstNacht == true) {
              if (getState('shelly.2.SHSW-PM#BCFF4DFCBAF5#1.Relay0.Input').val == true) {
                if (getState('0_userdata.0.Automatiken.Außenbeleuchtung').val == true) {
                  setState("shelly.2.SHSW-PM#BCFF4DFCBAF5#1.Relay0.Switch"/*Switch*/, true);
                  if (HintertuerAn == false) {
                    setState("shelly.1.shellypro4pm#083af27d18d4#1.Relay1.Switch"/*Switch*/, true);
                  }
                }
              }
            }
            if (IstNacht == true) {
              if (getState('shelly.2.SHSW-PM#BCFF4DFCBAF5#1.Relay0.Input').val == false) {
                if (getState('0_userdata.0.Automatiken.Außenbeleuchtung').val == true) {
                  setState("shelly.2.SHSW-PM#BCFF4DFCBAF5#1.Relay0.Switch"/*Switch*/, false);
                  if (HintertuerAn == false) {
                    setState("shelly.1.shellypro4pm#083af27d18d4#1.Relay1.Switch"/*Switch*/, false);
                  }
                }
              }
            }
            
            M 1 Reply Last reply Reply Quote 0
            • paul53
              paul53 @Matze78 last edited by

              @matze78 sagte: wo ich einen Namen definiere, damit ich im Blockly nicht zig mal "Switch" sehe

              Im Tab "Objekte" rechts auf dem Bleistift (Objekt bearbeiten) klicken und den Namen ändern.

              M 1 Reply Last reply Reply Quote 0
              • M
                Matze78 @Guest last edited by

                Ok @ciddi89, da hatte ich bei Blockly ein falsches Element genommen, das passt jetzt.

                Das einzige Problem ist jetzt die nicht gesetzte Variable. Ich setze bei Sonnenuntergang-Anfang -10 die "istNacht" auf an. Wenn ich das Script jetzt neu starte kommt er an diesen Punkt natürlich nicht mehr. Wie kann ich diesen Wert danach füllen?

                ? 1 Reply Last reply Reply Quote 0
                • M
                  Matze78 @paul53 last edited by

                  @paul53
                  2af38d66-dfbf-44dc-b886-92e53daa2391-image.png
                  Das habe ich eigentlich, in den Objekten steht ja auch der Name - nur in den Scripten nicht.

                  paul53 1 Reply Last reply Reply Quote 0
                  • ?
                    A Former User @Matze78 last edited by A Former User

                    @matze78 einfach ein falls Block einbauen der den aktuellen Stand prüft. Dies erfordert kein trigger und wird beim script start ausgeführt. ich habe in einigen Skripts sowas wie im Screenshot laufen. Somit kann man variablen neu setzen falls das Script oder iobroker Neustartet. Der timeout muss nicht sein es geht auch ohne. D15EEBB3-C523-410C-BAE4-CA1F41D19CFF.jpeg

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

                      @matze78 sagte: in den Objekten steht ja auch der Name - nur in den Scripten nicht.

                      Ich sehe zum Datenpunkt nur den Namen "Switch", der geändert werden sollte. Den Kanalnamen sieht man im Blockly-Skript nicht.

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

                        @matze78 sagte: Bewegungsmelder an Eingang,

                        Für den BWM fehlt der Trigger.
                        Habe den Trigger ergänzt (hoffe, dass es der richtige Datenpunkt ist) und das Skript vereinfacht:

                        var IstNacht = compareTime(getAstroDate("sunriseEnd", undefined, 10), getAstroDate("sunsetStart", undefined, -10), "not between", null);
                        var HintertuerAn = getState("shelly.1.shellypro4pm#083af27d18d4#1.Relay1.Switch").val;
                         
                        schedule({astro: "sunriseEnd", shift: 10}, function () {
                          if (getState('0_userdata.0.Automatiken.Außenbeleuchtung').val) {
                            setState("shelly.1.shellypro4pm#083af27d18d4#1.Relay0.Switch"/*Switch*/, false);
                            setState("shelly.1.shellypro4pm#083af27d18d4#1.Relay1.Switch"/*Switch*/, false);
                            setState("shelly.2.SHSW-PM#BCFF4DFCBAF5#1.Relay0.Switch"/*Switch*/, false);
                            HintertuerAn = false;
                          }
                          IstNacht = false;
                        });
                        
                        schedule({astro: "sunsetStart", shift: -10}, function () {
                          if (getState('0_userdata.0.Automatiken.Außenbeleuchtung').val) {
                            setState("shelly.1.shellypro4pm#083af27d18d4#1.Relay0.Switch"/*Switch*/, true);
                            setState("shelly.1.shellypro4pm#083af27d18d4#1.Relay1.Switch"/*Switch*/, true);
                            HintertuerAn = true;
                          }  
                          IstNacht = true;
                        });
                        
                        schedule('0 2 * * *', function () {
                          if (getState('0_userdata.0.Automatiken.Außenbeleuchtung').val) {
                            setState("shelly.1.shellypro4pm#083af27d18d4#1.Relay0.Switch"/*Switch*/, false);
                          }
                        });
                        
                        schedule('0 20 * * *', function () {
                          if (getState('0_userdata.0.Automatiken.Außenbeleuchtung').val) {
                            setState("shelly.1.shellypro4pm#083af27d18d4#1.Relay1.Switch"/*Switch*/, false);
                            HintertuerAn = false;
                          }
                        });
                        
                        schedule('30 6 * * *', function () {
                          if (getState('0_userdata.0.Automatiken.Außenbeleuchtung').val) {
                            setState("shelly.1.shellypro4pm#083af27d18d4#1.Relay0.Switch"/*Switch*/, true);
                            setState("shelly.1.shellypro4pm#083af27d18d4#1.Relay1.Switch"/*Switch*/, true);
                            HintertuerAn = true;
                          }
                        });
                        
                        on('shelly.2.SHSW-PM#BCFF4DFCBAF5#1.Relay0.Input', function(dp) {
                            if (IstNacht && getState('0_userdata.0.Automatiken.Außenbeleuchtung').val) {
                                setState("shelly.2.SHSW-PM#BCFF4DFCBAF5#1.Relay0.Switch"/*Switch*/, dp.state.val);
                                if(!HintertuerAn) {
                                    setState("shelly.1.shellypro4pm#083af27d18d4#1.Relay1.Switch"/*Switch*/, dp.state.val);
                                }
                            }
                        });
                        

                        Den Sinn der Abfrage von HintertuerAn verstehe ich allerdings nicht.

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

                          HintertuerAn ist ein Relikt aus alten Zeiten @paul53
                          Das Licht an der Hintertür soll bis 20 Uhr an bleiben, dann spare ich mir das Licht untem im Flur. Damit der Bewegungsmelder das Licht nun aber nicht abschaltet soll er sich merken, ob er es abschalten soll oder eben nicht.

                          7449077b-c386-4c8c-88b7-843a4ba2d3b5-image.png

                          @ciddi89 Ich habe jetzt versucht die Variablen vorzubelegen. Die Nacht wird leider nicht erkannt, das zwischen 20 Uhr und 6:30 allerdings schon...

                          paul53 3 Replies Last reply Reply Quote 0
                          • paul53
                            paul53 @Matze78 last edited by

                            @matze78 sagte: Die Nacht wird leider nicht erkannt

                            Vergleich von Astrozeiten funktioniert nicht über Mitternacht, weshalb man "nicht zwischen SA und SU" verwendet.

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

                              Danke @paul53 , das macht natürlich Sinn...

                              ? 1 Reply Last reply Reply Quote 0
                              • ?
                                A Former User @Matze78 last edited by

                                @matze78 geht nur mit „ist nicht zwischen aufgang und untergang“ wie paul schon schrieb 🙂

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

                                  @matze78 sagte: Das Licht an der Hintertür soll bis 20 Uhr an bleiben

                                  Was soll um 2:00 Uhr passieren?

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

                                    @matze78 sagte: Ich habe jetzt versucht die Variablen vorzubelegen.

                                    So ist es vollkommen ausreichend:

                                    Bild_2022-09-04_234127607.png

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

                                      @paul53 ab 2 Uhr soll das Licht an der Haustür ausbleiben. Da kommt die Zeitung bei den Nachbarn an und unser Hund schläft im Flur direkt im Lichtkegel 😉

                                      M 1 Reply Last reply Reply Quote 0
                                      • M
                                        Matze78 @Matze78 last edited by

                                        Danke schön @ciddi89 und @paul53, jetzt tut´s

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

                                        Support us

                                        ioBroker
                                        Community Adapters
                                        Donate

                                        868
                                        Online

                                        32.0k
                                        Users

                                        80.5k
                                        Topics

                                        1.3m
                                        Posts

                                        3
                                        18
                                        581
                                        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