Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • 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. ioBroker Allgemein
  4. Zeitversatz zwischen State-Zeit und der Zeit einer Messung

NEWS

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    8
    1
    546

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    10
    1
    447

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    1.0k

Zeitversatz zwischen State-Zeit und der Zeit einer Messung

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
10 Beiträge 5 Kommentatoren 700 Aufrufe 2 Beobachtet
  • Ä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.
  • S Offline
    S Offline
    stev-io
    schrieb am zuletzt editiert von
    #1

    Hallo zusammen,

    angenommen, ich habe einen Sensor, der mir JSON Daten zu Messungen liefert. Im JSON Dokument selbst steht dann ein Zeitstempel, wann diese Messung tatsächlich erfolgte. Wenn nun das Publizieren des JSON Dokumentes aufgrund Netzwerkschwäche etc. verzögert erfolgt, würde der Zeitstempel der Messung vom Zeitstempel des States abweichen. Hier mal ein Beispiel, welche Felder ich meine, auch wenn hier gerade kein Delay in den beiden Zeitstempeln zu sehen ist:

    0ab89e3c-c7e7-40cc-bdc7-6abc958a0fe8-image.png

    Um das auszutarieren hätte ich mir zum Beispiel für Skripte eine überladene setState Funktion gewünscht, in der man den Time stamp für den State setzen könnte. Scheinbar geht aber das nicht und auch sonst finde ich keine Option, den State Zeotpunkt auf den aus dem JSON Dokument zu setzen.

    Hintergrund: Ist ein ziemlicher Edge-Case aber ich habe eine Anwendung, bei der ich die Messwerte Sekundengenau historisiert brauche. In der Historie wird dann aber jeweils der State-Zeitstempel genutzt, der im Zweifel nicht passt. Das würde dann bedeuten, ich muss mir eine aufwändigere Historisierung als die mit Hausmitteln bauen.

    Es sei denn ich habe etwas übersehen oder ihr habt noch andere Tipps ;)

    HomoranH 1 Antwort Letzte Antwort
    0
    • S stev-io

      Hallo zusammen,

      angenommen, ich habe einen Sensor, der mir JSON Daten zu Messungen liefert. Im JSON Dokument selbst steht dann ein Zeitstempel, wann diese Messung tatsächlich erfolgte. Wenn nun das Publizieren des JSON Dokumentes aufgrund Netzwerkschwäche etc. verzögert erfolgt, würde der Zeitstempel der Messung vom Zeitstempel des States abweichen. Hier mal ein Beispiel, welche Felder ich meine, auch wenn hier gerade kein Delay in den beiden Zeitstempeln zu sehen ist:

      0ab89e3c-c7e7-40cc-bdc7-6abc958a0fe8-image.png

      Um das auszutarieren hätte ich mir zum Beispiel für Skripte eine überladene setState Funktion gewünscht, in der man den Time stamp für den State setzen könnte. Scheinbar geht aber das nicht und auch sonst finde ich keine Option, den State Zeotpunkt auf den aus dem JSON Dokument zu setzen.

      Hintergrund: Ist ein ziemlicher Edge-Case aber ich habe eine Anwendung, bei der ich die Messwerte Sekundengenau historisiert brauche. In der Historie wird dann aber jeweils der State-Zeitstempel genutzt, der im Zweifel nicht passt. Das würde dann bedeuten, ich muss mir eine aufwändigere Historisierung als die mit Hausmitteln bauen.

      Es sei denn ich habe etwas übersehen oder ihr habt noch andere Tipps ;)

      HomoranH Nicht stören
      HomoranH Nicht stören
      Homoran
      Global Moderator Administrators
      schrieb am zuletzt editiert von
      #2

      @stev-io der Screenshot ist leider an der entscheidenden Stelle abgeschnitten.

      steht da noch ein Z?

      kein Support per PN! - Fragen im Forum stellen -
      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
      Das Forum freut sich über eine Spende. Benutzt dazu den Spendenbutton oben rechts. Danke!
      der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

      T paul53P CodierknechtC 3 Antworten Letzte Antwort
      0
      • HomoranH Homoran

        @stev-io der Screenshot ist leider an der entscheidenden Stelle abgeschnitten.

        steht da noch ein Z?

        T Nicht stören
        T Nicht stören
        ticaki
        schrieb am zuletzt editiert von
        #3

        @homoran sagte in Zeitversatz zwischen State-Zeit und der Zeit einer Messung:

        @stev-io der Screenshot ist leider an der entscheidenden Stelle abgeschnitten.

        steht da noch ein Z?

        Bin mir fast sicher das es so ist, das Format ist auf jeden Fall das: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toJSON

        Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

        Spenden

        1 Antwort Letzte Antwort
        0
        • HomoranH Homoran

          @stev-io der Screenshot ist leider an der entscheidenden Stelle abgeschnitten.

          steht da noch ein Z?

          paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von paul53
          #4

          @homoran sagte: steht da noch ein Z?

          Wir haben noch Sommerzeit, also müsste die Differenz zu UTC 2 Stunden betragen.

          const time = '2023-10-02T15:56:12.000Z'
          
          log(formatDate(time, 'hh:mm:ss')); // 17:56:12
          

          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
          • HomoranH Homoran

            @stev-io der Screenshot ist leider an der entscheidenden Stelle abgeschnitten.

            steht da noch ein Z?

            CodierknechtC Offline
            CodierknechtC Offline
            Codierknecht
            Developer Most Active
            schrieb am zuletzt editiert von Codierknecht
            #5

            @homoran sagte in Zeitversatz zwischen State-Zeit und der Zeit einer Messung:

            steht da noch ein Z?

            Dass da die Zeitzone nicht stimmt, ist offensichtlich.

            Er sagt aber ja auch:

            auch wenn hier gerade kein Delay in den beiden Zeitstempeln zu sehen ist

            @stev-io
            Du könntest das automatische Historisieren abschalten und den Wert manuell in die Logging-DB schreiben. Da kannst Du ja dann als Zeitstempel das mitgeben was im JSON steht.

            Alternative wäre noch, den Logging-Adapter aktiv zu lassen und nach der Änderung eines Wertes den ts des geloggten Wertes zu ändern.

            Das hier funktioniert jedenfalls nicht:

            const obj = getObject('0_userdata.0.test');
            obj.ts = new Date().getTime();
            setObject('0_userdata.0.test', obj, function (err) {
                if (err) log('Cannot write object: ' + err);
            });
            

            Wäre auch unsinnig, da der Wert zu dem Zeitpunkt längst vom Logging-Adapter in die DB geschrieben wurde.

            "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

            Proxmox 9.1.1 LXC|8 GB|Core i7-6700
            HmIP|ZigBee|Tasmota|Unifi
            Zabbix Certified Specialist
            Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

            paul53P 1 Antwort Letzte Antwort
            0
            • CodierknechtC Codierknecht

              @homoran sagte in Zeitversatz zwischen State-Zeit und der Zeit einer Messung:

              steht da noch ein Z?

              Dass da die Zeitzone nicht stimmt, ist offensichtlich.

              Er sagt aber ja auch:

              auch wenn hier gerade kein Delay in den beiden Zeitstempeln zu sehen ist

              @stev-io
              Du könntest das automatische Historisieren abschalten und den Wert manuell in die Logging-DB schreiben. Da kannst Du ja dann als Zeitstempel das mitgeben was im JSON steht.

              Alternative wäre noch, den Logging-Adapter aktiv zu lassen und nach der Änderung eines Wertes den ts des geloggten Wertes zu ändern.

              Das hier funktioniert jedenfalls nicht:

              const obj = getObject('0_userdata.0.test');
              obj.ts = new Date().getTime();
              setObject('0_userdata.0.test', obj, function (err) {
                  if (err) log('Cannot write object: ' + err);
              });
              

              Wäre auch unsinnig, da der Wert zu dem Zeitpunkt längst vom Logging-Adapter in die DB geschrieben wurde.

              paul53P Offline
              paul53P Offline
              paul53
              schrieb am zuletzt editiert von paul53
              #6

              @codierknecht sagte: Das hier funktioniert jedenfalls nicht:

              Kann es auch nicht, denn obj.ts enthält den Zeitpunkt vom Erstellen des Objektes und nicht den aktuellen Zeitstempel. Der aktuelle Zeitstempel wird ausschließlich vom js-controller gesetzt.

              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

              CodierknechtC T 2 Antworten Letzte Antwort
              1
              • paul53P paul53

                @codierknecht sagte: Das hier funktioniert jedenfalls nicht:

                Kann es auch nicht, denn obj.ts enthält den Zeitpunkt vom Erstellen des Objektes und nicht den aktuellen Zeitstempel. Der aktuelle Zeitstempel wird ausschließlich vom js-controller gesetzt.

                CodierknechtC Offline
                CodierknechtC Offline
                Codierknecht
                Developer Most Active
                schrieb am zuletzt editiert von
                #7

                @paul53
                Sowas in der Art hatte ich noch im Hinterkopf. Aber: Versuch macht klug 😁

                "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

                Proxmox 9.1.1 LXC|8 GB|Core i7-6700
                HmIP|ZigBee|Tasmota|Unifi
                Zabbix Certified Specialist
                Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                1 Antwort Letzte Antwort
                0
                • paul53P paul53

                  @codierknecht sagte: Das hier funktioniert jedenfalls nicht:

                  Kann es auch nicht, denn obj.ts enthält den Zeitpunkt vom Erstellen des Objektes und nicht den aktuellen Zeitstempel. Der aktuelle Zeitstempel wird ausschließlich vom js-controller gesetzt.

                  T Nicht stören
                  T Nicht stören
                  ticaki
                  schrieb am zuletzt editiert von ticaki
                  #8

                  @paul53 sagte in Zeitversatz zwischen State-Zeit und der Zeit einer Messung:

                  @codierknecht sagte: Das hier funktioniert jedenfalls nicht:

                  Kann es auch nicht, denn obj.ts enthält den Zeitpunkt vom Erstellen des Objektes und nicht den aktuellen Zeitstempel. Der aktuelle Zeitstempel wird ausschließlich vom js-controller gesetzt.

                  Vielleicht verstehe ich das falsch aber einen Zeitstempel kann man setzten:

                  const d = new Date().getTime() - 300000
                  setState('0_userdata.0.Test', {val:5, ack:false, ts:d})
                  

                  In diesem Fall hier, müssten man die States spiegel und die Zeit selbst setzten.
                  18:07
                  Bildschirmfoto 2023-10-02 um 18.07.23.png

                  Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                  Spenden

                  paul53P S 2 Antworten Letzte Antwort
                  2
                  • T ticaki

                    @paul53 sagte in Zeitversatz zwischen State-Zeit und der Zeit einer Messung:

                    @codierknecht sagte: Das hier funktioniert jedenfalls nicht:

                    Kann es auch nicht, denn obj.ts enthält den Zeitpunkt vom Erstellen des Objektes und nicht den aktuellen Zeitstempel. Der aktuelle Zeitstempel wird ausschließlich vom js-controller gesetzt.

                    Vielleicht verstehe ich das falsch aber einen Zeitstempel kann man setzten:

                    const d = new Date().getTime() - 300000
                    setState('0_userdata.0.Test', {val:5, ack:false, ts:d})
                    

                    In diesem Fall hier, müssten man die States spiegel und die Zeit selbst setzten.
                    18:07
                    Bildschirmfoto 2023-10-02 um 18.07.23.png

                    paul53P Offline
                    paul53P Offline
                    paul53
                    schrieb am zuletzt editiert von paul53
                    #9

                    @ticaki sagte: Zeitstempel kann man setzten:

                    Das war mir nicht bewusst. Wieder was gelernt 👍
                    An die Objekt-Version von setState() habe ich nicht mehr gedacht (zu lange her).

                    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
                    • T ticaki

                      @paul53 sagte in Zeitversatz zwischen State-Zeit und der Zeit einer Messung:

                      @codierknecht sagte: Das hier funktioniert jedenfalls nicht:

                      Kann es auch nicht, denn obj.ts enthält den Zeitpunkt vom Erstellen des Objektes und nicht den aktuellen Zeitstempel. Der aktuelle Zeitstempel wird ausschließlich vom js-controller gesetzt.

                      Vielleicht verstehe ich das falsch aber einen Zeitstempel kann man setzten:

                      const d = new Date().getTime() - 300000
                      setState('0_userdata.0.Test', {val:5, ack:false, ts:d})
                      

                      In diesem Fall hier, müssten man die States spiegel und die Zeit selbst setzten.
                      18:07
                      Bildschirmfoto 2023-10-02 um 18.07.23.png

                      S Offline
                      S Offline
                      stev-io
                      schrieb am zuletzt editiert von
                      #10

                      @ticaki Wenn das funktioniert, ist es exakt das, was ich gesucht habe. Danke! Habe ich so aus der Doku nicht herausgelesen. Der Source scheint dies aber zu bestätigen. Werde ich dann testen. Danke!

                      1 Antwort Letzte Antwort
                      0

                      Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

                      Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

                      Mit deinem Input könnte dieser Beitrag noch besser werden 💗

                      Registrieren Anmelden
                      Antworten
                      • In einem neuen Thema antworten
                      Anmelden zum Antworten
                      • Älteste zuerst
                      • Neuste zuerst
                      • Meiste Stimmen


                      Support us

                      ioBroker
                      Community Adapters
                      Donate
                      FAQ Cloud / IOT
                      HowTo: Node.js-Update
                      HowTo: Backup/Restore
                      Downloads
                      BLOG

                      463

                      Online

                      32.8k

                      Benutzer

                      82.9k

                      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