Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. SayIt - Ausgabe bei MOTION

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    SayIt - Ausgabe bei MOTION

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

      habe den Script "SayIt - Ausgabe bei Wetterwarnung (DWD)" laufen.

      nun wollte ich eine Ansage machen wenn der Bewegungsmelder auf der Terasse auslöst.

      Leider habe ich es wohl noch nicht verstanden

      Hier mein "nicht funktionierender" Script

      var idSayIt = "sayit.0.tts.text";
      var MOTION = "hm-rpc.0.LEQxxxxxxx.1.MOTION";
      
          subscribe(MOTION, function (obj) {
              if (obj.newState.val !==true) {
                  setState (idSayIt, "Achtung Bewegung auf der Terasse") ;
              }
              if (obj.newState.val ===false) {
                  setState (idSayIt, "Alles wieder ruhig") ;
              }
          });
      
      

      wer kann mir einen Tipp geben?

      Gruß

      Jürgen

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

        Hallo Jürgen,

        wie gut, dass ich nichts von js verstehe, aber so etwas würde ich nicht machen:
        @derAuge:

        var MOTION = "hm-rpc.0.LEQxxxxxxx.1.MOTION"; `

        Gruß

        Rainer

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

          ein paar kleine Anpassungen

          var idSayIt = "sayit.0.tts.text";
          var Bewegung = "hm-rpc.0.LEQxxxxxxx.1.MOTION";
          
              subscribe(Bewegung, function (obj) {
                  if (obj.newState.val ===true) {
                      setState (idSayIt, "Achtung Bewegung auf der Terasse") ;
                  }
                  if (obj.newState.val ===false) {
                      setState (idSayIt, "Alles wieder ruhig") ;
                  }
              });
          
          

          Gruß

          Jürgen

          1 Reply Last reply Reply Quote 0
          • S
            stephan61 last edited by

            Hallo Jürgen ich kämpfe auch noch mit JS

            probiere mal

            on('hm-rpc.0.LEQXXXXXXX.1.MOTION', function (obj) { // Bewegung überwachen
            
                if (obj.newState.val ===true) {
                        setState (idSayIt, "Achtung Bewegung auf der Terasse") ;
                    }
                    if (obj.newState.val ===false) {
                        setState (idSayIt, "Alles wieder ruhig") ;
                    }
                });
            
            

            Gruß Stephan

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

              Oder so was.

              Immer wenn man Zweifeln hat muss man Debug Ausgaben einbauen:

              var idSayIt = "sayit.0.tts.text";
              var idBewegung = "hm-rpc.0.LEQxxxxxxx.1.MOTION";
              
              on(idBewegung, function (obj) {
                      log('Bewegung: ' + JSON.stringify(obj.newState));
                      if (obj.newState.val === true || obj.newState.val === "true" || obj.newState.val === 1 || obj.newState.val === "1") {
                          setState (idSayIt, "Achtung Bewegung auf der Terasse") ;
                      } else {
                          setState (idSayIt, "Alles wieder ruhig") ;
                      }
              });
              
              
              1 Reply Last reply Reply Quote 0
              • paul53
                paul53 last edited by

                @Bluefox:

                if (obj.newState.val === true || obj.newState.val === "true" || obj.newState.val === 1 || obj.newState.val === "1") `
                Javascript macht doch implizite Typwandlungen. Genügt da nicht die Abfrage

                if (obj.newState.val)
                

                egal, welche von den 4 Varianten stimmt ?

                EDIT: Bei Zeichenketten funktioniert die implizite Typwandlung nicht, da nur leere Zeichenketten (Länge 0) ein false liefern.

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

                  @paul53:

                  @Bluefox:

                  if (obj.newState.val === true || obj.newState.val === "true" || obj.newState.val === 1 || obj.newState.val === "1") `
                  Javascript macht doch implizite Typwandlungen. Genügt da nicht die Abfrage

                  if (obj.newState.val)
                  

                  egal, welche von den 4 Varianten stimmt ?

                  EDIT: Bei Zeichenketten funktioniert die implizite Typwandlung nicht, da nur leere Zeichenketten (Länge 0) ein false liefern. `
                  Richtig. Z.B.

                  console.log(!"0")

                  liefert false.

                  Auch

                  console.log(!"false");

                  liefert false.

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

                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  709
                  Online

                  31.7k
                  Users

                  79.7k
                  Topics

                  1.3m
                  Posts

                  5
                  7
                  980
                  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