Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Anfängerfrage

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Anfängerfrage

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

      Liebe Experten,

      entschuldigt die Frage, aber irgendwie komme ich nicht weiter.

      Zwei Probleme habe ich

      1.) Warum zeigt dieses Script die Id nicht korrekt an ?

      var MotionDetectId;
      var MotionDetectStatus; //=true;
      
      createState("Kamera.MotionDetectStatus", false, {
          name: "Kamera Informationen",
          type: "boolean"
      });
      
      MotionDetectId = getIdByName('javascript.1.Kamera.MotionDetectStatus');
      //MotionDetectStatus = GetState("javascript.1.Kamera.MotionDetectStatus");
      //MotionDetectStatus = GetState("javascript.1.Kamera.MotionDetectStatus").val;
      
      console.log("ID = " + MotionDetectId);
      console.log("Status = " +  MotionDetectStatus);
      console.log('Ausgabe OK');
      
      

      Ausgabe:

      20:05:36.753	[info]	javascript.1 Stop script script.js.Test_States
      20:05:39.555	[info]	javascript.1 Start javascript script.js.Test_States
      20:05:39.557	[info]	javascript.1 script.js.Test_States: ID = undefined
      20:05:39.557	[info]	javascript.1 script.js.Test_States: Status = undefined
      20:05:39.557	[info]	javascript.1 script.js.Test_States: Ausgabe OK
      20:05:39.558	[info]	javascript.1 script.js.Test_States: registered 0 subscriptions and 0 schedules
      
      

      2. Warum wird hier ein Fehler beim Starten gezeigt (und zwar unabhängig ob ich ".val" am Ende von GetState habe oder nicht)

      var MotionDetectId;
      var MotionDetectStatus; //=true;
      
      createState("Kamera.MotionDetectStatus", false, {
          name: "Kamera Informationen",
          type: "boolean"
      });
      
      //MotionDetectId = getIdByName('javascript.1.Kamera.MotionDetectStatus');
      //MotionDetectStatus = GetState("javascript.1.Kamera.MotionDetectStatus");
      
      MotionDetectStatus = GetState("javascript.1.Kamera.MotionDetectStatus").val;
      
      console.log("ID = " + MotionDetectId);
      console.log("Status = " +  MotionDetectStatus);
      console.log('Ausgabe OK');
      
      

      Ergebnis

      20:07:48.648	[info]	javascript.1 Start javascript script.js.Test_States
      20:07:48.649	[error]	javascript.1 script.js.Test_States: ReferenceError: GetState is not defined at script.js.Test_States:14:22
      
      

      Vielen Dank

      /RaBu

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

        Die ID muss zugewiesen werden. getState(id) beginnt mit kleinem "g".

        var MotionDetectId = 'javascript.1.Kamera.MotionDetectStatus';
        var MotionDetectStatus; //=true;
        
        createState("Kamera.MotionDetectStatus", false, {
            name: "Kamera Informationen",
            type: "boolean"
        });
        
        MotionDetectStatus = getState(MotionDetectId).val;
        
        log("ID = " + MotionDetectId);
        log("Status = " +  MotionDetectStatus);
        log('Ausgabe OK');
        
        
        1 Reply Last reply Reply Quote 0
        • Y
          ykuendig last edited by

          Teil 2 der Frage: Weil da ein KLEINES g hingehört -> getState()

          1 Reply Last reply Reply Quote 0
          • R
            RaBu last edited by

            Vielen Dank Euch beiden!

            ..manchmal sieht man den Wald vor lauter Bäumen nicht .. das mit dem kleinen "g" - danach hätte ich noch Stunden gesucht.

            Jetzt verstehe ich auch was "getIdByName" macht.

            Vielen Dank

            /RaBu

            1 Reply Last reply Reply Quote 0
            • E
              e-p-s last edited by

              Ich häng mich mal hier dran.

              Hab 2 Skripte mit Blockly gebaut. Es wird aber nicht ausgelöst.

              on({id: 'fritzbox.0.calls.ring', val: true}, function (obj) {
                var value = obj.state.val;
                var oldValue = obj.oldState.val;
                setState("telegram.0.communicate.response"/*Send text through telegram*/, (String('Anruf von:') + String(String(getState("fritzbox.0.calls.ringLastNumber").val) + String(String(getState("tr-064.0.callmonitor.inbound.callerName").val) + String(String(getState("tr-064.0.callmonitor.inbound.timestamp").val) + String(''))))), true);
              });
              
              

              2094_anruf.png

              1 Reply Last reply Reply Quote 0
              • E
                e-p-s last edited by

                Schade. Komm hier einfach nicht weiter.

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

                  @e-p-s:

                  Ich häng mich mal hier dran.

                  Hab 2 Skripte mit Blockly gebaut. Es wird aber nicht ausgelöst. `

                  Wird es nicht ausgelöst oder kommt nichts bei Telegram an? das sind zwei verschiedene Sachen.

                  Bau mal eine Ausgabe ins log ein und schau nach

                  on({id: 'fritzbox.0.calls.ring', val: true}, function (obj) {
                    var value = obj.state.val;
                    var oldValue = obj.oldState.val;
                    log("Das Telefon klingelt");
                    setState(..........);
                  });
                  

                  EDIT: Hast Du das Skript aktiviert? d.h. steht im log sowas wie:

                  	javascript.0 Start javascript script.js.Testing.Skript1
                  
                  1 Reply Last reply Reply Quote 0
                  • E
                    e-p-s last edited by

                    Danke für deine Hilfe.

                    Ok so hab ich rausgefunden das es nicht gestartet war, denn oben war noch ein Fehler drin.

                    Richtig:

                    on({id: 'fritzbox.0.calls.ring', val: true}, function (obj) {
                      var value = obj.state.val;
                      var oldValue = obj.oldState.val;
                      setState("telegram.0.communicate.response"/*Send text through telegram*/, (String('Anruf von:') + String(String(getState("fritzbox.0.calls.ringLastNumber").val) + String(String(getState("tr-064.0.callmonitor.inbound.callerName").val) + String(getState("tr-064.0.callmonitor.inbound.timestamp").val)))), true);
                    });
                    
                    

                    Was mich jetzt wundert, ich hatte das gestern Abend schonmal probiert, hatte aber keine Lust Screenshots zu machen.

                    Da stand im Log ebenfalls das das Teil gestartet worden wäre.

                    In dem jetzt unten eingebauten LOG stand es nichtmehr.

                    Kann man die LOG-Größe verändern?

                    Muss ich das Script ggf wie den Cloud Adapter alle X-Minuten neustarten?

                    Hatte heute Anruf bekommen, hat aber wieder nicht geklappt.

                    Wenn ich deinen Code einbauen will, zerstört es mit den Blockly-Modus.
                    2094_anruf2.png
                    2094_anruf3.png
                    2094_anruf4.png

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

                      @e-p-s:

                      Danke für deine Hilfe.

                      Ok so hab ich rausgefunden das es nicht gestartet war, denn oben war noch ein Fehler drin.

                      Richtig:

                      on({id: 'fritzbox.0.calls.ring', val: true}, function (obj) {
                        var value = obj.state.val;
                        var oldValue = obj.oldState.val;
                        setState("telegram.0.communicate.response"/*Send text through telegram*/, (String('Anruf von:') + String(String(getState("fritzbox.0.calls.ringLastNumber").val) + String(String(getState("tr-064.0.callmonitor.inbound.callerName").val) + String(getState("tr-064.0.callmonitor.inbound.timestamp").val)))), true);
                      });
                      
                      

                      Was mich jetzt wundert, ich hatte das gestern Abend schonmal probiert, hatte aber keine Lust Screenshots zu machen.

                      Da stand im Log ebenfalls das das Teil gestartet worden wäre.

                      In dem jetzt unten eingebauten LOG stand es nichtmehr.

                      Kann man die LOG-Größe verändern?

                      Muss ich das Script ggf wie den Cloud Adapter alle X-Minuten neustarten?

                      Hatte heute Anruf bekommen, hat aber wieder nicht geklappt.

                      Wenn ich deinen Code einbauen will, zerstört es mit den Blockly-Modus. `
                      Log ist der debug Block in Blockly… Ich hab das nur schnell per Hand rein geschrieben.

                      1 Reply Last reply Reply Quote 0
                      • E
                        e-p-s last edited by

                        Mal gucken was passiert:

                        on({id: 'fritzbox.0.calls.ring', val: true}, function (obj) {
                          var value = obj.state.val;
                          var oldValue = obj.oldState.val;
                          console.log((String('Anruf von:') + String(String(getState("fritzbox.0.calls.ringLastNumber").val) + String(String(getState("tr-064.0.callmonitor.inbound.callerName").val) + String(getState("tr-064.0.callmonitor.inbound.timestamp").val)))));
                          setState("telegram.0.communicate.response"/*Send text through telegram*/, (String('Anruf von:') + String(String(getState("fritzbox.0.calls.ringLastNumber").val) + String(String(getState("tr-064.0.callmonitor.inbound.callerName").val) + String(getState("tr-064.0.callmonitor.inbound.timestamp").val)))), true);
                        });
                        

                        2094_image_6.png

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

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        480
                        Online

                        31.7k
                        Users

                        79.8k
                        Topics

                        1.3m
                        Posts

                        5
                        10
                        1438
                        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