Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. [gelöst] Manchmal geht es, manchmal nicht???

    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

    [gelöst] Manchmal geht es, manchmal nicht???

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

      @skorpil sagte:

      NUR und EINMALIG im Zeitraum morgens in einem definierten Zeitraum ausgeführt werden, wenn der Bewegungsmelder anspricht.

      var aufstehen = false;
      on(idBM, function(dp) {
         if(dp.state.val && compareTime('6:00', '10:00', 'between') && !aufstehen) {
            aufstehen = true;
            // Aktionen bei erster Bewegung morgens
         }
      });
      schedule('0 3 * * *', function() {
         aufstehen = false;
      });   
      
      S 3 Replies Last reply Reply Quote 1
      • S
        skorpil @paul53 last edited by

        @paul53

        ich bin Dir sehr dankbar. Es ist wirklich außergewöhnlich, wie Du Dich der Probleme anderer Nutzer stets aus Neue so uneigennützig annimmst.

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

          @paul53

          nachdem Feedback ja bekanntlich breakfast for champions ist: heute morgen habe ich das Skript mit Deinen Hinweisen erstmals laufen lassen. Es hat super funktioniert. Danke!

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

            @paul53

            ich habe noch eine Verständnisinnige (für meine zukünftigen Programmierversuche)_

            Was ist der Unterschied zwischen

            on(idBM, function(dp) {
               if(dp.state.val
            

            und

            on({id: idBM, val: false}, function (data) {
            

            Also es geht mich nicht um die if Funktion. Das verstehe ich. Es geht mir um die Verwendung von "dp.state.val" im Vergleich zu "{id: idBM, val: false}". Was ist der Unterschied?

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

              @skorpil

              on(idBM, function(dp) {
              

              triggert nur bei Wertänderung.

              on({id: idBM, val: false}, function (data) {
              

              triggert bei jeder Zustandsänderung (Änderung Zeitstempel genügt), wenn der Wert false ist.

              S 2 Replies Last reply Reply Quote 2
              • S
                skorpil @paul53 last edited by

                @paul53 danke

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

                  @paul53

                  Ich habe noch weitere Ereignisse/ Programmteile, die ich über den gleichen Trigger (Bewegungsmelder) im gleichen Zeitraum hintereinander auslösen möchte.

                  Ist es klug, diese ganzen Teile in ein Programm zu packen (unübersichtlich!) ? Oder ist es sinnvoller, neue Programme mit dem gleichen Trigger zu schreiben (funktioniert das) ?

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

                    @skorpil sagte:

                    Ist es klug, diese ganzen Teile in ein Programm zu packen

                    Vom Ressourcen-Verbrauch her gesehen: Ja.

                    @skorpil sagte in [gelöst] Manchmal geht es, manchmal nicht???:

                    neue Programme mit dem gleichen Trigger zu schreiben (funktioniert das) ?

                    Ja, das funktioniert, wenn man die Übersicht über mehrere Skripte behält.

                    S 1 Reply Last reply Reply Quote 1
                    • S
                      skorpil @paul53 last edited by

                      @paul53 Empfehlung? Wie würdest Du es machen?

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

                        @skorpil sagte:

                        Wie würdest Du es machen?

                        Ich würde es in ein Skript packen.

                        1 Reply Last reply Reply Quote 1
                        • S
                          skorpil last edited by

                          @paul53

                          ich schon wieder... Folgende Frage:

                          ich habe einen Datenpunkt, Typ String aus openweathermap

                          var idWindGeschw = 'openweathermap.0.forecast.current.windSpeed'/*Forecast for wind speed*/;
                          var idWindGeschwWert = idWindGeschw.state;
                          

                          Ich möchte in der Variablen"idWindGeschwWert " den INHALT des Datenpunktes, also den Wert, zuweisen. Und daran scheitere ich immer wieder. Weder mit ".state" noch mit ".val" noch mit ".state.val" bekomme ich das gewünschte Ergebnis. Ich produziere Fehlermeldungen.

                          Was mache ich falsch? Das Problem habe ich quasi immer wieder. Ich begreife einfach nicht, wie ich der Variablen "idWindGeschwWert "den Inhalt/ Wert zuweise. Bitte um Erklärung.

                          Dankeschön.

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

                            @skorpil sagte:

                            wie ich der Variablen "idWindGeschwWert "den Inhalt/ Wert zuweise.

                            getState(id).val

                            const idWindGeschw = 'openweathermap.0.forecast.current.windSpeed'/*Forecast for wind speed*/;
                            var WindGeschwWert = getState(idWindGeschw).val; // Initialisierung bei Script start
                            
                            on(idWindGeschw, function(dp) { // triggert bei Wertänderung
                               WindGeschwWert = dp.state.val;
                               // Auswertung der Variablen
                            });
                            
                            S 2 Replies Last reply Reply Quote 0
                            • S
                              skorpil @paul53 last edited by

                              @paul53

                              Danke. getState. Klar Ich hätte es wissen müssen.

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

                                @paul53

                                ...und nochmal ich...

                                In dem schon mehrfach diskutierten Skript habe ich mir timeouts eingebaut. Was ich erreichen will:

                                die drei Teile des Skripts sollen in einer bestimmten zeitlichen Reihenfolge ausgeführt werden:

                                on(idBM, function(dp) {
                                   if(dp.state.val && compareTime('6:00', '10:00', 'between') && !aufstehen) {
                                      aufstehen = true;
                                    
                                
                                    setTimeout(function() {
                                
                                    // ************************************************
                                    //  nach 12 Sekunden starten
                                    // ************************************************
                                
                                   Script  Teil 1
                                
                                
                                   }, 12000);
                                   // Ende timeout/ Verzögerung
                                
                                
                                setTimeout(function() {
                                    // ************************************************
                                    //  nach 45 Sekunden starten
                                    // ************************************************
                                
                                Script  Teil 2
                                
                                 }, 45000);
                                   // Ende timeout für Start
                                
                                setTimeout(function() {
                                    // ************************************************
                                    // Befehl zum stop nach 45 Minuten
                                    // ************************************************
                                
                                Script  Teil 3
                                
                                }, 2700000);
                                // Ende timeout für Stop
                                
                                
                                   }
                                   // Ende If
                                   
                                });
                                

                                Der erste Teil nach 12 Sekunden, der zweite Teil des Skripts nach 45 Sekunden, der dritte Teil nach 45 Minuten.

                                Ich kann das ja wg. der On Anweisung immer nur einmal morgens testen. Und heute morgen mindestens klappte Teil 1 des Skripts nicht.

                                Ist das so richtig?
                                Oder sollte ich das besser in drei verschiedenen Skripten abbilden?

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

                                  @skorpil
                                  Das Rücksetzen der Variable aufstehen ist vorhanden ?

                                  schedule('0 3 * * *', function() {
                                     aufstehen = false;
                                  });
                                  
                                  S 3 Replies Last reply Reply Quote 0
                                  • S
                                    skorpil @paul53 last edited by

                                    @paul53 ja

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

                                      @paul53

                                      Nochmal zurück zu meiner Frage: ist das Skript von Grundsatz her so richtig?

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

                                        @skorpil sagte:

                                        ist das Skript von Grundsatz her so richtig?

                                        Ja, zusammen mit dem Rücksetzen von aufstehen.

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

                                          @paul53

                                          Könntest Du Dir mal diese Fehlermeldung ansehen und mir sagen, was da falsch läuft?

                                          Link Text

                                          Ich verstehe diese Fehlermeldungen nicht.

                                          Danke u. frohe Pfingsten

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

                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          449
                                          Online

                                          31.9k
                                          Users

                                          80.2k
                                          Topics

                                          1.3m
                                          Posts

                                          javascript
                                          2
                                          25
                                          978
                                          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