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

  • Der neue Monatsrückblick für Mai und Juni 2026 ist online!
    BluefoxB
    Bluefox
    8
    1
    601

  • wichtiges UPDATE für controller 7.2.2 im stable
    HomoranH
    Homoran
    10
    1
    3.3k

  • Neues YouTube-Video: Visualisierung im Devices-Adapter
    BluefoxB
    Bluefox
    16
    1
    5.1k

Zeitversatz zwischen State-Zeit und der Zeit einer Messung

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
10 Beiträge 5 Kommentatoren 822 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
      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: Asus PN 42 / N100 / 8 GB / 500 GB; Proxmox mit 2 VM (iob / openCCU)

          1 Antwort Letzte Antwort
          0
          • HomoranH Homoran

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

            steht da noch ein Z?

            CodierknechtC Online
            CodierknechtC Online
            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: Asus PN 42 / N100 / 8 GB / 500 GB; Proxmox mit 2 VM (iob / openCCU)

              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 Online
                CodierknechtC Online
                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: Asus PN 42 / N100 / 8 GB / 500 GB; Proxmox mit 2 VM (iob / openCCU)

                    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

                      234

                      Online

                      33.0k

                      Benutzer

                      83.4k

                      Themen

                      1.3m

                      Beiträge
                      Community
                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                      ioBroker Community 2014-2026
                      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