Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Verallgemeinerung zur Weiterverwendung

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    2.1k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    929

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

Verallgemeinerung zur Weiterverwendung

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
17 Beiträge 4 Kommentatoren 1.7k Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • Jey CeeJ Online
    Jey CeeJ Online
    Jey Cee
    Developer
    schrieb am zuletzt editiert von
    #2

    Wenn ich dich richtig verstanden hab möchtest du das script nehmen und der host name ist variabel aber die datenpunkte fix.

    Dann ist die Lösung den host als variable zu setzen.

    Umsetzung dann in etwa so:

    var varHost = Sonne;

    varHost + '.Sleeptimer'

    Gesendet von meinem Jolla mit Tapatalk

    Persönlicher Support
    Spenden -> paypal.me/J3YC33

    1 Antwort Letzte Antwort
    0
    • K Offline
      K Offline
      Kamikaze
      schrieb am zuletzt editiert von
      #3

      Kann ich dann auch bei setState("JavaScript.0."+Host ,-1) verwenden ?

      1 Antwort Letzte Antwort
      0
      • Jey CeeJ Online
        Jey CeeJ Online
        Jey Cee
        Developer
        schrieb am zuletzt editiert von
        #4

        Kann ich jetzt so nicht sagen weil mir nicht klar ist was damit ersetzt werden soll. Kannst du mal neu und alt gegenüber stellen?

        Gesendet von meinem Jolla mit Tapatalk

        Persönlicher Support
        Spenden -> paypal.me/J3YC33

        1 Antwort Letzte Antwort
        0
        • K Offline
          K Offline
          Kamikaze
          schrieb am zuletzt editiert von
          #5

          Aber gern.

          Alt: setState("javascript.0.Sonne.Sleeptimer", -1);

          Neu: setState("javascript.0."+Host+".Sleeptimer", -1);

          Wenn ich bei den Objekten auch Variablen verwenden kann, dann habe ich ein neues Verständnis erlangt.

          1 Antwort Letzte Antwort
          0
          • paul53P Offline
            paul53P Offline
            paul53
            schrieb am zuletzt editiert von
            #6

            @Kamikaze:

            Neu: setState("javascript.0."+Host+".Sleeptimer", -1); `
            Die ID ist lediglich ein String auf den man die String-Verkettung anwenden kann. Es sollte so funktionieren.
            16431_states.jpg
            16431_vis.jpg

            Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
            Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

            1 Antwort Letzte Antwort
            0
            • K Offline
              K Offline
              Kamikaze
              schrieb am zuletzt editiert von
              #7

              Also ich bin wirklich begeistert wie schnell das hier geht.

              Ich werde morgen das Script anpassen und das Ergebnis hier posten, damit evtl. ein Interessierte davon profitieren kann.

              Schon einmal vielen Dank.

              1 Antwort Letzte Antwort
              0
              • K Offline
                K Offline
                Kamikaze
                schrieb am zuletzt editiert von
                #8

                So langsam bekomme ich es ja hin. Leider habe ich noch ein anderes Problem.

                Ich habe eine Basis von Bluefox genommen, um einen Countdown zu erstellen, nur dass dabei im Log jeweils 4 Einträge erscheinen. Was mache ich falsch?

                function CountDown (seconds) {

                var sekunden = seconds;

                function count() {

                setTimeout(function () {

                var timer = sekunden || 10 ;

                if (timer > 1) {

                sekunden=timer-1;

                log ("Im Count " + sekunden,"info")

                count();

                } else {

                sekunden=0;

                }

                }, 1000);

                }

                count();

                }

                CountDown(10);

                2016-02-10 19:37:58.954 - info: javascript.0 script.js.Countdown: Im Count 9

                2016-02-10 19:37:58.965 - info: javascript.0 script.js.Countdown: Im Count 9

                2016-02-10 19:37:58.971 - info: javascript.0 script.js.Countdown: Im Count 9

                2016-02-10 19:37:58.994 - info: javascript.0 script.js.Countdown: Im Count 9

                2016-02-10 19:37:59.958 - info: javascript.0 script.js.Countdown: Im Count 8

                2016-02-10 19:37:59.969 - info: javascript.0 script.js.Countdown: Im Count 8

                2016-02-10 19:37:59.979 - info: javascript.0 script.js.Countdown: Im Count 8

                2016-02-10 19:38:00.000 - info: javascript.0 script.js.Countdown: Im Count 8

                2016-02-10 19:38:00.962 - info: javascript.0 script.js.Countdown: Im Count 7

                2016-02-10 19:38:00.972 - info: javascript.0 script.js.Countdown: Im Count 7

                2016-02-10 19:38:00.985 - info: javascript.0 script.js.Countdown: Im Count 7

                2016-02-10 19:38:01.005 - info: javascript.0 script.js.Countdown: Im Count 7

                2016-02-10 19:38:01.968 - info: javascript.0 script.js.Countdown: Im Count 6

                2016-02-10 19:38:01.980 - info: javascript.0 script.js.Countdown: Im Count 6

                2016-02-10 19:38:01.990 - info: javascript.0 script.js.Countdown: Im Count 6

                2016-02-10 19:38:02.008 - info: javascript.0 script.js.Countdown: Im Count 6

                2016-02-10 19:38:02.972 - info: javascript.0 script.js.Countdown: Im Count 5

                2016-02-10 19:38:02.984 - info: javascript.0 script.js.Countdown: Im Count 5

                2016-02-10 19:38:02.994 - info: javascript.0 script.js.Countdown: Im Count 5

                2016-02-10 19:38:03.011 - info: javascript.0 script.js.Countdown: Im Count 5

                2016-02-10 19:38:03.977 - info: javascript.0 script.js.Countdown: Im Count 4

                2016-02-10 19:38:03.988 - info: javascript.0 script.js.Countdown: Im Count 4

                2016-02-10 19:38:03.998 - info: javascript.0 script.js.Countdown: Im Count 4

                2016-02-10 19:38:04.014 - info: javascript.0 script.js.Countdown: Im Count 4

                2016-02-10 19:38:04.983 - info: javascript.0 script.js.Countdown: Im Count 3

                2016-02-10 19:38:04.991 - info: javascript.0 script.js.Countdown: Im Count 3

                2016-02-10 19:38:05.001 - info: javascript.0 script.js.Countdown: Im Count 3

                2016-02-10 19:38:05.017 - info: javascript.0 script.js.Countdown: Im Count 3

                2016-02-10 19:38:05.988 - info: javascript.0 script.js.Countdown: Im Count 2

                2016-02-10 19:38:05.994 - info: javascript.0 script.js.Countdown: Im Count 2

                2016-02-10 19:38:06.006 - info: javascript.0 script.js.Countdown: Im Count 2

                2016-02-10 19:38:06.023 - info: javascript.0 script.js.Countdown: Im Count 2

                2016-02-10 19:38:06.992 - info: javascript.0 script.js.Countdown: Im Count 1

                2016-02-10 19:38:07.000 - info: javascript.0 script.js.Countdown: Im Count 1

                2016-02-10 19:38:07.010 - info: javascript.0 script.js.Countdown: Im Count 1

                2016-02-10 19:38:07.027 - info: javascript.0 script.js.Countdown: Im Count 1

                1 Antwort Letzte Antwort
                0
                • blauholstenB Offline
                  blauholstenB Offline
                  blauholsten
                  Developer
                  schrieb am zuletzt editiert von
                  #9

                  Was mir auffällt ist das du setTimeout nicht an eine var über geben hast, das musst du aber tun …..

                  Var x = setTimeout (function ......

                  Findest du in der JavaScript doku bzw einige Beispiele hier im forum.

                  Gesendet vom Handy

                  Entwickler vom: - Viessman Adapter
                  - Alarm Adapter

                  1 Antwort Letzte Antwort
                  0
                  • K Offline
                    K Offline
                    Kamikaze
                    schrieb am zuletzt editiert von
                    #10

                    Da hast du recht, nur dass die Variable nur benötigt wird, wenn ich den Timeout wieder abbrechen will.

                    In meinem Fall kann dieser ruhig zu Ende laufen

                    1 Antwort Letzte Antwort
                    0
                    • paul53P Offline
                      paul53P Offline
                      paul53
                      schrieb am zuletzt editiert von
                      #11

                      count() wird innerhalb der Funktion count() aufgerufen !

                      function CountDown (seconds) {
                      	var sekunden = seconds;
                      	function count() {
                      		setTimeout(function () {
                      			var timer = sekunden || 10 ;
                      			if (timer > 1) {
                      				sekunden=timer-1;
                      				log ("Im Count " + sekunden,"info")
                      				count();      // Aufruf innerhalb von count() !
                      			} else {
                      				sekunden=0;
                      			}
                      		}, 1000);
                      	}
                      	count();
                      }
                      
                      CountDown(10);
                      
                      

                      Weshalb verwendest Du nicht setInterval() ?

                      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                      1 Antwort Letzte Antwort
                      0
                      • K Offline
                        K Offline
                        Kamikaze
                        schrieb am zuletzt editiert von
                        #12

                        Das Count ist auch notwendig, da er sonst nur einmal durchläuft.

                        Mit setIntervall habe ich noch nicht gearbeitet. Daher habe ich noch nicht den Ansatz.

                        Wenn du einen Vorschlag dafür hättest, wäre ich dir dankbar.

                        1 Antwort Letzte Antwort
                        0
                        • paul53P Offline
                          paul53P Offline
                          paul53
                          schrieb am zuletzt editiert von
                          #13

                          @Kamikaze:

                          Wenn du einen Vorschlag dafür hättest, wäre ich dir dankbar. `

                          var counter;
                          
                          function CountDown (seconds) {
                             counter = seconds;
                             var timer = setInterval(function () {
                                   if (counter > 0) {
                                      counter = counter - 1;
                                      log ("Im Count " + counter,"info")
                                   } else {
                                      clearInterval(timer);
                                      timer = null;
                                   }
                                }, 1000);
                          }
                          
                          CountDown(10);
                          

                          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                          1 Antwort Letzte Antwort
                          0
                          • K Offline
                            K Offline
                            Kamikaze
                            schrieb am zuletzt editiert von
                            #14

                            Hier habe ich aber genau das gleiche Ergebnis.

                            2016-02-10 21:39:02.290 - info: javascript.0 script.js.Countdown1: Im Count 9

                            2016-02-10 21:39:02.330 - info: javascript.0 script.js.Countdown1: Im Count 9

                            2016-02-10 21:39:02.340 - info: javascript.0 script.js.Countdown1: Im Count 9

                            2016-02-10 21:39:02.349 - info: javascript.0 script.js.Countdown1: Im Count 9

                            2016-02-10 21:39:03.294 - info: javascript.0 script.js.Countdown1: Im Count 8

                            2016-02-10 21:39:03.333 - info: javascript.0 script.js.Countdown1: Im Count 8

                            2016-02-10 21:39:03.345 - info: javascript.0 script.js.Countdown1: Im Count 8

                            2016-02-10 21:39:03.354 - info: javascript.0 script.js.Countdown1: Im Count 8

                            2016-02-10 21:39:04.298 - info: javascript.0 script.js.Countdown1: Im Count 7

                            2016-02-10 21:39:04.335 - info: javascript.0 script.js.Countdown1: Im Count 7

                            2016-02-10 21:39:04.349 - info: javascript.0 script.js.Countdown1: Im Count 7

                            2016-02-10 21:39:04.357 - info: javascript.0 script.js.Countdown1: Im Count 7

                            2016-02-10 21:39:05.304 - info: javascript.0 script.js.Countdown1: Im Count 6

                            2016-02-10 21:39:05.338 - info: javascript.0 script.js.Countdown1: Im Count 6

                            2016-02-10 21:39:05.352 - info: javascript.0 script.js.Countdown1: Im Count 6

                            2016-02-10 21:39:05.362 - info: javascript.0 script.js.Countdown1: Im Count 6

                            2016-02-10 21:39:06.309 - info: javascript.0 script.js.Countdown1: Im Count 5

                            2016-02-10 21:39:06.344 - info: javascript.0 script.js.Countdown1: Im Count 5

                            2016-02-10 21:39:06.358 - info: javascript.0 script.js.Countdown1: Im Count 5

                            2016-02-10 21:39:06.365 - info: javascript.0 script.js.Countdown1: Im Count 5

                            2016-02-10 21:39:07.315 - info: javascript.0 script.js.Countdown1: Im Count 4

                            2016-02-10 21:39:07.358 - info: javascript.0 script.js.Countdown1: Im Count 4

                            2016-02-10 21:39:07.365 - info: javascript.0 script.js.Countdown1: Im Count 4

                            2016-02-10 21:39:07.369 - info: javascript.0 script.js.Countdown1: Im Count 4

                            2016-02-10 21:39:08.320 - info: javascript.0 script.js.Countdown1: Im Count 3

                            2016-02-10 21:39:08.364 - info: javascript.0 script.js.Countdown1: Im Count 3

                            2016-02-10 21:39:08.371 - info: javascript.0 script.js.Countdown1: Im Count 3

                            2016-02-10 21:39:08.374 - info: javascript.0 script.js.Countdown1: Im Count 3

                            2016-02-10 21:39:09.324 - info: javascript.0 script.js.Countdown1: Im Count 2

                            2016-02-10 21:39:09.367 - info: javascript.0 script.js.Countdown1: Im Count 2

                            2016-02-10 21:39:09.376 - info: javascript.0 script.js.Countdown1: Im Count 2

                            2016-02-10 21:39:09.377 - info: javascript.0 script.js.Countdown1: Im Count 2

                            2016-02-10 21:39:10.328 - info: javascript.0 script.js.Countdown1: Im Count 1

                            2016-02-10 21:39:10.372 - info: javascript.0 script.js.Countdown1: Im Count 1

                            2016-02-10 21:39:10.382 - info: javascript.0 script.js.Countdown1: Im Count 1

                            2016-02-10 21:39:10.382 - info: javascript.0 script.js.Countdown1: Im Count 1

                            2016-02-10 21:39:11.330 - info: javascript.0 script.js.Countdown1: Im Count 0

                            2016-02-10 21:39:11.378 - info: javascript.0 script.js.Countdown1: Im Count 0

                            2016-02-10 21:39:11.385 - info: javascript.0 script.js.Countdown1: Im Count 0

                            2016-02-10 21:39:11.384 - info: javascript.0 script.js.Countdown1: Im Count 0

                            1 Antwort Letzte Antwort
                            0
                            • blauholstenB Offline
                              blauholstenB Offline
                              blauholsten
                              Developer
                              schrieb am zuletzt editiert von
                              #15

                              @Kamikaze:

                              Das Count ist auch notwendig, da er sonst nur einmal durchläuft.

                              Mit setIntervall habe ich noch nicht gearbeitet. Daher habe ich noch nicht den Ansatz.

                              Wenn du einen Vorschlag dafür hättest, wäre ich dir dankbar. `

                              Hi,

                              ich habe wirklich keinen Schimmer vom programmieren, aber was Paul meint ist denke ich richtig. (Wenn man seinen Beiträgen so folgt, hat er ziemlich viel Ahnung davon… :roll: )

                              Ich habe mal versucht dein Programm zu verstehen, und natürlich hast du recht das count() nochmals aufgerufen werden muss! Aber nur innerhalb der Methode/function setTimeout, und nicht direkt innerhalb der count function :?: :oops: :oops:

                              PS. hab mich mit der Variable belesen, hast recht das man sie nur zum clear.. braucht! Danke für den Tip

                              Entwickler vom: - Viessman Adapter
                              - Alarm Adapter

                              1 Antwort Letzte Antwort
                              0
                              • K Offline
                                K Offline
                                Kamikaze
                                schrieb am zuletzt editiert von
                                #16

                                Problem gelöst. Es lag an der javascript-Version. Nachdem ich auf 1.1.12 (vorher war 1.1.11 installiert) aktualisiert habe, laufen beide Lösungen.

                                Trotzdem Danke für Eure Hilfe.
                                1043_bildschirmfoto_2019-01-20_um_10.16.32.png
                                1043_bildschirmfoto_2019-01-20_um_10.16.03.png
                                1043_bildschirmfoto_2019-01-20_um_10.15.33.png

                                1 Antwort Letzte Antwort
                                0
                                • K Offline
                                  K Offline
                                  Kamikaze
                                  schrieb am zuletzt editiert von
                                  #17

                                  Ich habe ja versprochen mein Ergebnis hier bereitzustellen.

                                  Den Countdown habe ich von Bluefox übernommen und an meine Bedürfnisse angepasst. Vielen Dank an Bluefox.

                                  /* Enthaltene Funktionen:                                                                              */
                                  /* CountDown(objekt)  Stellt einen CountDown zur Verfügung und schreibt die Werte nach objekt          */
                                  /* CountDown1(sekunden,objekt)  Wie CountDown als Alternativlösung                                     */
                                  /* Rechnersysteme direkt hoch und herunterfahren                                                       */
                                  /* --------------------------------------------------------------------------------------------------  */
                                  function CountDown (objekt) {
                                  
                                     function count() {
                                        setTimeout(function () {
                                           var timer = getState(objekt).val;
                                           if (timer > 1) {
                                              timer=timer-1;
                                              if (getState(objekt).val != 0) {setState(objekt, timer)}; 
                                              count();      
                                           } else {
                                              setState(objekt, 0); 
                                           }
                                        }, 1000);
                                     }
                                     count();
                                  }
                                  /* --------------------------------------------------------------------------------------------------  */
                                  

                                  Im zweiten Teil steuere ich drei Rechnersysteme. Dies kann um weitere Systeme erweitert werden, indem in der Markierung 1 weitere Rechnernamen eingetragen werden und die on-Statements jweils kopiert und hinten angehängt werden. Die Variable i muss jeweils zweimal um eins erhöht werden. Bei Markierung 3 können die eigenen Befehle eingetragen werden, die nach Ablauf des Sleeptimers ausgeführt werden sollen.

                                  Wenn jemanden noch Verbesserungen oder Optimierungen auffallen, dann gerne kommentieren.

                                  /* –------------------------------------------------------------------------------------------------ */

                                  `var idSayIt = "sayit.0.tts.text";
                                  
                                  var hosts = [ "Sonne", "Nuc","Galaxy"];  //MARKIERUNG 1
                                  var anzahl_hosts = hosts.length;
                                  var timeout = new Array(anzahl_hosts);
                                  
                                  for (i=1;i<anzahl_hosts;i++) 0/1/3/60/{/createstate/(hosts[i]+'.sleeptimer',-1);/(hosts[i]+'.sleeptimer_dauer',15);/(hosts[i]+'.countdown',900);/(hosts[i]+'.shutdown_befehl','wget/-o/dev/null/http:/192.168.2.25/remote_'+hosts[i]/+/'_shutdown.php');/(hosts[i]+'.wol_befehl','wget/'_wol.php');/(hosts[i]+'.aktivieren',0);/}/function/start_sleeptimer(host)/setstate/(idsayit,/"sleeptimer/"/host/aktiviert/getstate("javascript.0."+host/".sleeptimer_dauer").val/minuten")/;/setstate("javascript.0."/".countdown",/*/);/countdown("javascript.0."+host/".countdown");/mytimeout="setTimeout(function" ()/timer/ist/abgelaufen")/markierung/".sleeptimer",/-1);/wert/wieder/zurücksetzen/},/getstate("javascript.0."+host+".sleeptimer_dauer").val/1000*60);/return(mytimeout)/stop_sleeptimer/(host,mytimeout)/"+host+"/gestoppt")/cleartimeout(mytimeout);/setstate("javascript.0."+host+".sleeptimer",/setstate("javascript.0."+host+".countdown",/0);/------------------------------------------------------------------------------------------------------/dies/der/auslöser/für/die/aktivierung/des/sleeptimers/wenn/sleeptimer/auf/gesetzt/wird,/wird/ein/countdown/ausgelöst/und/nach/ablauf/aktion/ausgeführt/während/aktiven/countdowns/agbebrochen/beiden/aktinen/sleelptimer/selbst/-1/gesetzt./i="0;" on("javascript.0."+hosts[i]+".sleeptimer",/function(obj)/if/(obj.newstate.val="==" 1)/timeout[i]="start_Sleeptimer(hosts[i]);" else/0)/stop_sleeptimer(hosts[i],timeout[i]);/nichts/tun/});/<e=""></anzahl_hosts;i++)>`[/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i]
                                  
                                  1 Antwort Letzte Antwort
                                  0
                                  Antworten
                                  • In einem neuen Thema antworten
                                  Anmelden zum Antworten
                                  • Älteste zuerst
                                  • Neuste zuerst
                                  • Meiste Stimmen


                                  Support us

                                  ioBroker
                                  Community Adapters
                                  Donate

                                  712

                                  Online

                                  32.6k

                                  Benutzer

                                  82.2k

                                  Themen

                                  1.3m

                                  Beiträge
                                  Community
                                  Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                  ioBroker Community 2014-2025
                                  logo
                                  • Anmelden

                                  • Du hast noch kein Konto? Registrieren

                                  • Anmelden oder registrieren, um zu suchen
                                  • Erster Beitrag
                                    Letzter Beitrag
                                  0
                                  • Home
                                  • Aktuell
                                  • Tags
                                  • Ungelesen 0
                                  • Kategorien
                                  • Unreplied
                                  • Beliebt
                                  • GitHub
                                  • Docu
                                  • Hilfe