Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Sommerzeit/Winterzeit in Script abfragen…

    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

    Sommerzeit/Winterzeit in Script abfragen…

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

      Hallo,

      das ist eine schöne Aufgabe. Ich bin leider unterwegs und kriege das nicht sofort in Javascript hin.

      Ich würde so vorgehen:

      eine Variable sommerzeit mit setTime() anlegen und sie mit dem 31. März des aktuellen Jahres befüllen ( setMonth(2) und setDate(31) setFullYear(aktuellesJahr) ).

      In einer Schleife solange einen Tag abziehen, bis getDay() 0 ergibt (also Sonntag).

      Analog dazu eine Variable winterzeit für den 31. Oktober ( setMonth(9) und setDate(31) ) anlegen und bis zum Sonntag zurückgehen.

      Dann prüfen, ob das aktuelle Datum vor dem Datum winterzeit und nach dem Datum sommerzeit liegt.

      Wenn ja, dann ist Sommerzeit, wenn nicht ist Winterzeit.

      Ich glaube, das passt noch in meinen geplanten iobroker.dateinfo Adapter 😛

      Gruß

      Pix

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

        Du bist der Hammer PIX [emoji1360] immer da und geile Ideen

        Weiter so….

        Gesendet von meinem iPhone mit Tapatalk

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

          ….wow, das wäre der Hammer wenn ioBrocker die Funktion erhält!!

          Bei uns wechselt nämlich die Müllsammelzentrum Zeit im Sommer und im Winter, eben mit der Zeitumstellung und nachdem ich mir die Infos mit VIS anzeigen lasse, wäre es cool wenn ich das automatisch wechseln lassen könnte. Derzeit stell ich selbst eine Variable auf der CCU händisch um.

          Grüße

          etv

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

            @etv: Im Prinzip kann man es ja auch über ein Programm machen, aber wie programmiere ich den letzten Sonntag im März und im Oktober?

            Dafür gibt es ein https://www.npmjs.com/package/is-it-bst.

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

              @paul53:

              @etv:

              Im Prinzip kann man es ja auch über ein Programm machen, aber wie programmiere ich den letzten Sonntag im März und im Oktober? Dafür gibt es ein [https://www.npmjs.com/package/is-it-bst](https://www.npmjs.com/package/is-it-bst).
              …OK, danke! Wenn ich das installiere kann ich dann die Abfragen in ioBrocker genau so machen wie im Beispiel auf der Seite?

              Dann müsste das Script nur ein paar Tage pro Jahr laufen - eben genau in der Zeit in der die Umstellung zu erwarten ist und wenn sich der Status ändert, dann kann ich meine DST Variable umstellen.

              Grüße

              Tom

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

                @etv:

                Wenn ich das installiere kann ich dann die Abfragen in ioBrocker genau so machen wie im Beispiel auf der Seite? `
                Ja.
                @etv:

                Dann müsste das Script nur ein paar Tage pro Jahr laufen - eben genau in der Zeit in der die Umstellung zu erwarten ist und wenn sich der Status ändert, dann kann ich meine DST Variable umstellen. `
                Das simple Script zum Setzen des State eines Datenpunktes kann auch täglich einmal (z.B. um 4:00 Uhr) laufen.

                1 Reply Last reply Reply Quote 0
                • P
                  pix last edited by

                  Oder per schedule mit (0 4 24-31 3,10 7)

                  Um 4Uhr, jeden Sonntag zwischen 24. und 31. März/Oktober 🙂

                  Pix

                  Gesendet mit Tapatalk

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

                    @pix:

                    Um 4Uhr, jeden Sonntag zwischen 24. und 31. März/Oktober `
                    Ja, das Script kann dann so aussehen:

                    // Sommerzeit ermitteln
                    var dst = require('is-it-bst');
                    
                    setState("Sommerzeit", dst());  // Script start
                    
                    schedule("0 4 24-31 3,10 7", function() {
                        setState("Sommerzeit", dst());
                    });
                    
                    
                    1 Reply Last reply Reply Quote 0
                    • etv
                      etv last edited by

                      perfekt,danke! Dann werd' ich das kommende Woche implementieren!

                      Danke und schöne Grüße

                      Tom

                      1 Reply Last reply Reply Quote 0
                      • K
                        klassisch Most Active last edited by

                        Der Thread ist schon einige Jahre alt. Ist dies noch immer die empfohlene Lösung, um herauszubekommen, ob Sommer- oder Winterzeit?

                        F 1 Reply Last reply Reply Quote 0
                        • F
                          fastfoot @klassisch last edited by

                          @klassisch sagte in Sommerzeit/Winterzeit in Script abfragen…:

                          Der Thread ist schon einige Jahre alt. Ist dies noch immer die empfohlene Lösung, um herauszubekommen, ob Sommer- oder Winterzeit?

                          Was empfohlen wird weiß ich nicht, aber für unsere Region sollte es das auch tun
                          let DST = new Date().toString().indexOf('GMT+02') >= 0;

                          K 1 Reply Last reply Reply Quote 1
                          • K
                            klassisch Most Active @fastfoot last edited by

                            @fastfoot Vielen Dank! Funktioniert hier und sieht superelegant aus. Eine Zeile mit 2 Gleichheitszeichen. Was es alles gibt.

                            Die Syntax habe ich nicht verstanden.

                            Die Semantik zielt wohl darauf ab, wie weit wir von GMT bzw. UTC entfernt sind.
                            So ein ähnlicher Ansatz wie mit "getTimeZoneOffset". Nur eben so elegant zusammengefaßt, daß gleich ein Bool rauskommt.

                            F 1 Reply Last reply Reply Quote 0
                            • F
                              fastfoot @klassisch last edited by

                              @klassisch sagte in Sommerzeit/Winterzeit in Script abfragen…:

                              @fastfoot Vielen Dank! Funktioniert hier und sieht superelegant aus. Eine Zeile mit 2 Gleichheitszeichen. Was es alles gibt.

                              Die Syntax habe ich nicht verstanden.

                              Die Semantik zielt wohl darauf ab, wie weit wir von GMT bzw. UTC entfernt sind.
                              So ein ähnlicher Ansatz wie mit "getTimeZoneOffset". Nur eben so elegant zusammengefaßt, daß gleich ein Bool rauskommt.

                              Das erste = ist die Zuweisung zu DST, das >= ist ein Vergleich

                              • new Date() liefert die jetzt Zeit als Sun Nov 01 2020 16:52:38 GMT+0100 (Mitteleuropäische Normalzeit), ist aber ein Objekt, weshalb es mit

                              • toString() in einen String gewandelt wird, den man dann mit

                              • indexOf(Suchwert) nach der Position des Offset(GMT+01) durchsuchen kann

                              • >= 0 liefert true/false je nachdem ob der Wert gefunden wurde

                              K 1 Reply Last reply Reply Quote 1
                              • K
                                klassisch Most Active @fastfoot last edited by klassisch

                                @fastfoot super, vielen Dank für die strukturierte Erklärung. Also hat man das if() eingespart. Wußte gar nicht, daß das geht.

                                Edit: es geht sogar in einer Abfrage

                                if (new Date().toString().indexOf('GMT+02') >= 0) {}
                                
                                1 Reply Last reply Reply Quote 0
                                • Basti97
                                  Basti97 Most Active last edited by

                                  Ich wollte auch nochmal Nachfragen gibt es ein fertiges Script egal ob Java oder Blockly. Wo ein Datenpunkt von false auf true sich ändert sobald Sommer oder Winterzeit ist.
                                  Danke

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

                                    @basti97 sagte: Datenpunkt von false auf true sich ändert sobald Sommerzeit

                                    schedule('1 3 * * 7', function() {
                                        setState(idSommer, new Date().getTimezoneOffset() == -120, true); // MESZ
                                    });
                                    
                                    Basti97 1 Reply Last reply Reply Quote 0
                                    • Basti97
                                      Basti97 Most Active @paul53 last edited by

                                      @paul53 Ich komme nochmal auf das Script zurück. Kann ich auch den Name des Datenpunktes ändern?

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

                                        @basti97 sagte: Kann ich auch den Name des Datenpunktes ändern?

                                        Ja. Beispiel:

                                        const idSommer = '0_userdata.0.Zeiten.Sommerzeit';
                                        
                                        schedule('1 3 * * 7', function() {
                                            setState(idSommer, new Date().getTimezoneOffset() == -120, true); // MESZ
                                        });
                                        
                                        Basti97 A 2 Replies Last reply Reply Quote 0
                                        • Basti97
                                          Basti97 Most Active @paul53 last edited by

                                          @paul53 Ich habe das Script aktiviert. Und der wechselt so bald Sommerzeit ist auf true und bei Winterzeit wieder auf False.

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

                                            @paul53 hallo, sorry falls ich ne dumme frage stellen sollte, aber skripte sind absolutes neuland für mich. habe eine variable unter 0_usredata.0.Zeiten angelegt, aber bei mir wird die variable leider nicht true. funktioniert die umschaltung nur im moment des sommer-/winterzeit-wechsels oder auch mitten drinn?

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            406
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            8
                                            22
                                            5586
                                            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