Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. BLOCKLY Zeit nach UTC konvertieren.

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    BLOCKLY Zeit nach UTC konvertieren.

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

      @paul53 Naja ich habe die Zulu Zeit am Objekt. Die ist immer gleich - ob Sommer oder Winter. Ich möchte prüfen ob die Zeitdifferenz die mir als Zulu-Zeit vorliegt sich um mehr als 30 Minuten von der aktuellen Zeit, die ich als CET habe abweicht. Hard-Coden macht keinen Sinn wegen der Sommer-Winterzeit-Geschichte...

      Deine Idee mit den ms versteh ich nicht.

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

        @cyrano330
        Wandle den DP-Wert in ms und subtrahiere ihn von der aktuellen Zeit in ms.
        Das Datum-Objekt enthält immer die ms seit 1.1.1970 0:00 Uhr UTC.

        Blockly_temp.JPG

        C 1 Reply Last reply Reply Quote 0
        • mickym
          mickym Most Active @cyrano330 last edited by mickym

          @cyrano330 man braucht keine Uhrzeit zur Überwachung. Die Teile melden sich innerhalb von 2 Stunden mind. einmal. Starte einfach einen Timer, wenn er sich gemeldet hat und gib Alarm aus, wenn er sich nicht innerhalb von 2 Std. gemeldet hat. Dazu brauche ich keine Uhrzeiten.

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

            @paul53 Ich hab nen Knoten im Kopf... Wenn ich das so mache hab ich einen negativen Wert.... Als imm kleiner als die 180000....

            paul53 1 Reply Last reply Reply Quote 0
            • C
              cyrano330 @mickym last edited by

              @mickym Sind die 2h sicher?

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

                @cyrano330 sagte: hab ich einen negativen Wert..

                Das wundert mich. Ist der String im Datenpunkt nicht JS-konform? Die Wandlungsfunktion sollte am "Z" erkennen, dass es sich um die UTC-Zeit handelt.

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

                  @paul53

                  baa5c8de-34a1-4af5-9626-0d0cf2c88049-image.png

                  Logfile: script.js.Skript_1: Differenz aktuelle Zeit - Datenpunkt -2782300 Messpunkt: 1675002562301 aktuelle Zeit: 1674999780001

                  34dded85-5fa0-489a-a93e-07294d7f6c47-image.png

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

                    @cyrano330
                    Der Wert liegt in der Zukunft. Poste bitte mal den Datenpunktwert, da ich solche Datenpunkte nicht habe.

                    EDIT: Habe mal mit einem String "2023-01-29T14:00:24.000Z" (= heute 15:00:24 MEZ) getestet: Bei mir funktioniert die Konvertierung richtig.

                    1 Reply Last reply Reply Quote 0
                    • mickym
                      mickym Most Active @cyrano330 last edited by mickym

                      @cyrano330 sagte in BLOCKLY Zeit nach UTC konvertieren.:

                      @mickym Sind die 2h sicher?

                      Bei mir funktioniert das nun seit 2 Jahren so.

                      Wenn sich die Temperatur ändert dann sogar um so häufiger. Hier meine 3 AQURAs aus der Küche.

                      2 überwachen den Kühlschrank. Da ist sogar Kurve mit dabei. Ich lass mir immer ausgeben von wann der Wert war. 😉 - Aber das mache ich wie bei den zigbee Teilen generell. Das heißt wenn sich irgendein Gerät meldet, dann ermittle ich nur die Differenz. Ich speichere das aber selbst. Mach das auch nicht mit Blockly.

                      74575f70-8a36-4167-97d5-87f2c334f46f-image.png

                      1 Reply Last reply Reply Quote 0
                      • B
                        bb61 last edited by bb61

                        Hi,
                        angelockt vom Titel des Threads über die Suche, hab ich's mit der hier vorgeschlagenen Lösung versucht, allerdings vergeblich. Ich bekam immer nur eine Differenz von einer Stunde heraus, nie die korrekte von 2 Stunden (wir haben gerade Sommerzeit). Was mir dabei auffiel: Die alten Beispiele oben, zumindest deren Postings, fanden i.d.R. zur Winterzeit statt.

                        Deshalb hier eine kleine, 3-Zeiler-Lösung für Blockly, die immer korrekt das Ergebnis als Differenz zur aktuellen Systemzeit liefert. JS selbst hat da den passenden Befehl, den man per Blockly-Funktion fix einbinden kann:

                        toffset-1.PNG
                        Inhalt der Funktion (Klick auf die 3 Punkte rechts):
                        toffset-2.PNG
                        ....und hier die Einbindung:
                        toffset-3.PNG
                        Um wie bei mir gewollt aus UTC die lokale Zeit zu bilden, werden lediglich die Offset-Minuten als Millisekunden (* 60 * 1000) addiert. Umgekehrt geht's natürlich genauso mit anderem Vorzeichen.

                        Anwendung bei mir ist übrigens eine Ansage eines Zeitabstandes (nebst berechneter absoluter Zielzeit) zum gelieferten Prognoseergebnis einer Trendanalyse, also wann bei gleichbleibendem Trend ein Grenzwert erreicht würde. Diese habe ich, ausgehend von den SQL-Historien im Broker auf dem ohnehin dafür genutztem SQL-Server ermitteln lassen (kleiner IBM-NUC). Die Zeiten dort kommen aber wg. Modularität stets als UTC. Diese waren dann in Abfrage- oder Alarmansagen (gebildet in Blockly) in lokalTZ zu wandeln.

                        (Off topic, aber vielleicht für einige interessant?)
                        Das ganze ist übrigens komplett modular (liefernder Datenpunkt + "projektabhängig" Limits bzw. Ergebnis-Schweregrad-Klassen als Parameter), in konkreter Anwendung bisher bei mir im Einsatz für

                        • Diabtetes-Wert (Adapter: libre.; Sorry, die internen "Trends" dort sind keine bzw. sinnlos weil nicht look-ahead. Z.B. zum Wecken bei Unterzuckerung absolut ungeeignet). Warum Trend? Sorry, ich esse stochastische Kohlehydratmengen in stochastischen Zeitabständen, nebst stochastischer körperlicher Betätigung 🙂

                        • Ermittlung Sturm-/Starkwind-Ende für Dachfenster, Stoff-Markiesen usw. (Einfahren bei Boe über Limit ist easy, aber eine Böenpause ist noch kein Indiz fürs Wieder-Ausfahren, obwohl Schatten-Bedarf noch besteht. Hier hilft ein Trend sehr! 2 Adapter: WU (WeatherUnderground) und Netatmo

                        • Regenwasser-Zisternen für Gartenbewässerung, Füllstand rechtzeitig evtl. umschalten auf Frischwasser, BEVOR neuer Zyklus beginnt (oder wenn manuell umschalten: VOR dem Urlaub, Dienstreise usw.). Hardware: LevelJet von ProJet (Ultraschall-Sensor), angebunden per USB an Raspi (zzgl. 2 systemeigener Funkstrecken auf dem Weg dahin: Zisterne->Controller und von dort USB->Funk->USB->Raspi). Trend hier besser, da Bewässerung selbst (und damit Mengenentnahme) stochastisch (überhaupt? Zeitdauer?) aus Verdunstungsberechnung zzgl. aktueller Regenereignissen, -mengen, -zeitabständen usw. Kein Adapter, empfangener Raspi triggert kleines Script für Werteaktualisierung

                        • Wasserdruck Heizungsanlage, Rohrsystem aus den 1960ern mit leichten Verlusten (diese aber Nutzungs- bzw. letztlich Umgebungs-Temperatur-abhängig -> Trendanalyse nötig), das ganze in Pflegewohnung >100km entfernt, natürlich "unter Limit" (Gefahr der Abschaltung -> Wasser nachfüllen) nach Monaten, immer genau dann, wenn man gerade zu Besuch war, auf Dienstreise ist oder Glatteissturm usw. herrscht... Adapter: Vaillant, Absolute Werte (immer der aktuelle) als Limit nützt leider wenig, weil die Heizungsanlage selbst mit ihrer bedarfsweisen Zykluspumpe Werte dann im gesamten Min-Max-Bereich) nochmal für Stochastik im System sorgt. -> Trendanalyse über Tage hilft.

                        Völlig unterschiedliche Anwendungen, Einheiten, Zeitabstände, Ergebnisbehandlung, aber alle nutzen gleiches Modul zur Berechnung, bei Ansagen, Alarmauskopplungen usw.

                        Vielleicht veröffentliche ich hier mal im Forum den ganzen Kram, so Interesse besteht. An der Doku als Lehrmaterial arbeite ich bereits.

                        Gruß bb61 (=GW in den Release-Kommentaren)

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

                          @bb61 sagte: Ich bekam immer nur eine Differenz von einer Stunde heraus

                          Bezug ist der 1.1.1970, also keine Sommerzeit.

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

                            @paul53
                            klar. DAS Datum ist stabil. Aber auch immer =0, Sommers wie winters.

                            Aber es geht hier ja nun nicht um diesen fixen Ursprung (1.1.70 00:00:00) in der gesuchten Zeitkoordinate, sondern um dessen Differenz zum anderen Ende des Zeitstrahls, also um den "Nutz-Zeitwert" aus der realen Welt. Und der "floatet" natürlich durch das reale Jahr, je nach Anwendungsfall.

                            Entstammend aus realen Eventzeitpunkt in lokaler oder Systemzeit (also "anderes Zeit-Koordinatensystem"), liegt dieser dann aber sehr wohl ursprünglich in Sommer- oder Winterzeit, bevor der dann in die "Sommerzeitumschaltungslose" UTC umgerechnet wird. Also mal mit und mal ohne SZ-Zeitverschiebung, je nach Event-Zeit.

                            Genau das berücksichtig aber zum Glück der JS Befehl in der genannten Function.. Ohne dem muss man das aber selber nachbilden. Oder es funktioniert dann eben nur ...ähm... zeitweise.

                            Egal, Zeitberechnungen haben so manch lustige Effekte, wenn man mal mehr ins Detail schaut. Das hier ist noch einer der einfachsten.

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

                            Support us

                            ioBroker
                            Community Adapters
                            Donate

                            586
                            Online

                            31.7k
                            Users

                            79.8k
                            Topics

                            1.3m
                            Posts

                            5
                            15
                            811
                            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