Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. [gelöst] wie mit sendTo History.0 Werte im Voraus übergeben?

    NEWS

    • Neues Video "KI im Smart Home" - ioBroker plus n8n

    • Neues Video über Aliase, virtuelle Geräte und Kategorien

    • Wir empfehlen: Node.js 22.x

    [gelöst] wie mit sendTo History.0 Werte im Voraus übergeben?

    This topic has been deleted. Only users with topic management privileges can see it.
    • Homoran
      Homoran Global Moderator Administrators last edited by Homoran

      @klassisch hatte in dem Thread https://forum.iobroker.net/post/1294967 folgendes javascript Snippet

      // Neue Werte in die History schreiben
       
              myResultSteps.forEach(entry => {
       
                  setState(id, {
                      val: entry.val,
                      ts: entry.ts, 
                      ack: true 
                  });
      

      gezeigt um morgens die Daten der Tagesvorhersage als Kurve in Flot darzustellen.

      dies habe ich versucht mit Blockly nachzubilden, jedoch ohne Erfolg
      Screenshot_20250918-134546_Firefox.jpg

      Das generierte javascript sieht auch nicht identisch aus

      var id;
      
      
      id = 'Messwerte.0.Solaranlage.Prognosen.clearSkyHourly';
      sendTo('history.0', 'send', {
        'id': id,
        'val': getState('brightsky.0.hourly.03.solar_estimate').val,
        'ts': getState('brightsky.0.hourly.03.timestamp').val,
        'ack': true,
      });
      

      geht das mit Blockly überhaupt?

      paul53 3 Replies Last reply Reply Quote 0
      • paul53
        paul53 @Homoran last edited by paul53

        @homoran sagte: geht das mit Blockly überhaupt?

        Versuche es mal so:

        Blockly_temp.JPG

        Sollte laut Adapter-Doku so funktionieren.

        1 Reply Last reply Reply Quote 1
        • paul53
          paul53 @Homoran last edited by paul53

          @homoran
          Besser geeignet ist Beispiel 2 mit Übergabe eines Arrays, das in einer Schleife gefüllt wird:

          // 2.
          sendTo('history.0', 'storeState', {
              id: 'mbus.0.counter.xxx',
              state: [
                  {
                      ts: 1589458809352,
                      val: 123,
                      ack: false,
                      from: 'system.adapter.whatever.0'
                  },
                  {
                      ts: 1589458809353,
                      val: 123,
                      ack: false,
                      from: 'system.adapter.whatever.0'
                  }
              ]
          }, result => console.log('added'));
          

          Blockly_temp.JPG

          1 Reply Last reply Reply Quote 1
          • paul53
            paul53 @Homoran last edited by

            @homoran sagte: folgendes javascript Snippet

            Das würde in Blockly so aussehen:

            Blockly_temp.JPG

            Homoran 1 Reply Last reply Reply Quote 1
            • Homoran
              Homoran Global Moderator Administrators @paul53 last edited by

              @paul53 vielen lieben Dank Paul!

              @paul53 sagte in wie mit sendTo History.0 Werte im Voraus übergeben?:

              Besser geeignet ist Beispiel 2

              so in der Art hätte ich mir mein Endergebnis vorgestellt und um 05:15 einmalig gestartet

              Dazu einige Fragen:
              ich muss natürlich entsprechend viele Stunden Forecast im Adapter freischalten, wie im Sommer die Sonne scheinen wird.
              Ist die Anzahl idiese Anzahl existierender Datenpunke?
              ist <10 die Anzahl der Sonnenstunden? EDIT: Das sind die führenden 0 bei einstelligen Namen!

              Werde ich so umsetzen!
              DANKE!

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

                @homoran sagte: Ist die Anzahl idiese Anzahl existierender Datenpunke?

                Ich habe angenommen, dass die ID die Stunde der Uhrzeit enthält? Deshalb i von 3 bis 22.

                Homoran 1 Reply Last reply Reply Quote 0
                • Homoran
                  Homoran Global Moderator Administrators @paul53 last edited by

                  @paul53 sagte in wie mit sendTo History.0 Werte im Voraus übergeben?:

                  dass die ID die Stunde der Uhrzeit enthält?

                  leider nein.
                  die wird kontinuierlich geändert:
                  0 = aktuelle Stunde
                  1 = nächste Stunde
                  usw...

                  wenn ich das Skript um 05:15 laufen lasse, ist 00, die Stunde 05:00-05:59

                  in dem jeweiligen Verzeichnis gibt es einen DP Timestamp.

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

                    @homoran sagte: ist 00, die Stunde 05:00-05:59

                    Dann lass i von 0 bis 16 laufen. Oder ist die Anzahl der Datenpunkte abhängig von der Jahreszeit?

                    Blockly_temp.JPG

                    Homoran 2 Replies Last reply Reply Quote 1
                    • Homoran
                      Homoran Global Moderator Administrators @paul53 last edited by Homoran

                      @paul53 sagte in wie mit sendTo History.0 Werte im Voraus übergeben?:

                      Oder ist die Anzahl der Datenpunkte abhängig von der Jahreszeit?

                      nein! die würde ich entsprechend dem maximal im Sommer benötigtem konfigurieren

                      @paul53 sagte in wie mit sendTo History.0 Werte im Voraus übergeben?:

                      lass i von 0 bis 16

                      das wäre 5:00-21:59 Uhr.
                      das sollte passen
                      Screenshot_20250919-114509_Firefox.jpg

                      1 Reply Last reply Reply Quote 0
                      • Homoran
                        Homoran Global Moderator Administrators @paul53 last edited by Homoran

                        @paul53 so, dann warte ich mal auf morgen!
                        Screenshot_20250919-160947_Firefox.jpg
                        Die Variable id lag noch rum, da hab ich sie recycelt 😉
                        hourly 0...16 existieren

                        Homoran 1 Reply Last reply Reply Quote 0
                        • Homoran
                          Homoran Global Moderator Administrators @Homoran last edited by Homoran

                          @homoran das konnte ja nicht funktionieren! 😢

                          ich hatte doch das array für weitere Bearbeitung gesichert, da steht jetzt

                          [{"val":"brightsky.0.hourly.00.solar_estimate","ts":"brightsky.0.hourly.00.timestamp","ack":true},{"val":"brightsky.0.hourly.01.solar_estimate","ts":"brightsky.0.hourly.01.timestamp","ack":true},{"val":"brightsky.0.hourly.02.solar_estimate","ts":"brightsky.0.hourly.02.timestamp","ack":true},{"val":"brightsky.0.hourly.03.solar_estimate","ts":"brightsky.0.hourly.03.timestamp","ack":true},{"val":"brightsky.0.hourly.04.solar_estimate","ts":"brightsky.0.hourly.04.timestamp","ack":true},{"val":"brightsky.0.hourly.05.solar_estimate","ts":"brightsky.0.hourly.05.timestamp","ack":true},{"val":"brightsky.0.hourly.06.solar_estimate","ts":"brightsky.0.hourly.06.timestamp","ack":true},{"val":"brightsky.0.hourly.07.solar_estimate","ts":"brightsky.0.hourly.07.timestamp","ack":true},{"val":"brightsky.0.hourly.08.solar_estimate","ts":"brightsky.0.hourly.08.timestamp","ack":true},{"val":"brightsky.0.hourly.09.solar_estimate","ts":"brightsky.0.hourly.09.timestamp","ack":true},{"val":"brightsky.0.hourly.10.solar_estimate","ts":"brightsky.0.hourly.10.timestamp","ack":true},{"val":"brightsky.0.hourly.11.solar_estimate","ts":"brightsky.0.hourly.11.timestamp","ack":true},{"val":"brightsky.0.hourly.12.solar_estimate","ts":"brightsky.0.hourly.12.timestamp","ack":true},{"val":"brightsky.0.hourly.13.solar_estimate","ts":"brightsky.0.hourly.13.timestamp","ack":true},{"val":"brightsky.0.hourly.14.solar_estimate","ts":"brightsky.0.hourly.14.timestamp","ack":true},{"val":"brightsky.0.hourly.15.solar_estimate","ts":"brightsky.0.hourly.15.timestamp","ack":true},{"val":"brightsky.0.hourly.16.solar_estimate","ts":"brightsky.0.hourly.16.timestamp","ack":true}]
                          

                          Da hab ich auch ganz schnell meinen Fehler gefunden.
                          Schnell geändert:
                          Screenshot_20250920-090222_Firefox.jpg
                          Also noch bis morgen warten

                          EDIT:
                          Wird auch nicht klappen.
                          der Timestamp muss noch konvertiert werden

                          [{"val":0.527,"ts":"2025-09-20T07:00:00+00:00","ack":true},{"val":1.211,"ts":"2025-09-20T08:00:00+00:00","ack":true},{"val":1.993,"ts":"2025-09-20T09:00:00+00:00","ack":true},{"val":2.449,"ts":"2025-09-20T10:00:00+00:00","ack":true},{"val":2.532,"ts":"2025-09-20T11:00:00+00:00","ack":true},{"val":2.293,"ts":"2025-09-20T12:00:00+00:00","ack":true},{"val":1.823,"ts":"2025-09-20T13:00:00+00:00","ack":true},{"val":1.276,"ts":"2025-09-20T14:00:00+00:00","ack":true},{"val":0.78,"ts":"2025-09-20T15:00:00+00:00","ack":true},{"val":0.506,"ts":"2025-09-20T16:00:00+00:00","ack":true},{"val":0.178,"ts":"2025-09-20T17:00:00+00:00","ack":true},{"val":0,"ts":"2025-09-20T18:00:00+00:00","ack":true},{"val":0,"ts":"2025-09-20T19:00:00+00:00","ack":true}]
                          

                          da steht jetzt verständlicherweise NaN

                          1 Reply Last reply Reply Quote 0
                          • Homoran
                            Homoran Global Moderator Administrators last edited by Homoran

                            Hab noch einiges geändert
                            Screenshot_20250920-093755_Firefox.jpg

                            obwohl das Array jetzt so aussieht

                            [{"val":527,"ts":1758351600000,"ack":true},{"val":1211,"ts":1758355200000,"ack":true},{"val":1993,"ts":1758358800000,"ack":true},{"val":2449,"ts":1758362400000,"ack":true},{"val":2532,"ts":1758366000000,"ack":true},{"val":2293,"ts":1758369600000,"ack":true},{"val":1823,"ts":1758373200000,"ack":true},{"val":1276,"ts":1758376800000,"ack":true},{"val":780,"ts":1758380400000,"ack":true},{"val":506,"ts":1758384000000,"ack":true},{"val":178,"ts":1758387600000,"ack":true},{"val":0,"ts":1758391200000,"ack":true},{"val":0,"ts":1758394800000,"ack":true}]
                            

                            wird jetzt nur noch der 9 Uhr Wert eingetragen.

                            den max. - Wert hab ich schon von 100 auf 10000 hochgesetzt

                            {
                              "common": {
                                "name": "clearSkyHourly",
                                "desc": "Manuell erzeugt",
                                "role": "state",
                                "type": "number",
                                "read": true,
                                "write": true,
                                "def": 0,
                                "custom": {
                                  "history.0": {
                                    "enabled": true,
                                    "aliasId": "",
                                    "debounceTime": 0,
                                    "blockTime": 0,
                                    "changesOnly": true,
                                    "changesRelogInterval": 0,
                                    "changesMinDelta": "0",
                                    "ignoreBelowNumber": "",
                                    "disableSkippedValueLogging": false,
                                    "retention": "0",
                                    "customRetentionDuration": 365,
                                    "maxLength": "10",
                                    "enableDebugLogs": false,
                                    "debounce": "1000"
                                  }
                                },
                                "min": 0,
                                "max": 10000
                              },
                              "type": "state",
                              "native": {},
                              "_id": "Messwerte.0.Solaranlage.Prognosen.clearSkyHourly",
                              "acl": {
                                "object": 1636,
                                "state": 1636,
                                "owner": "system.user.admin",
                                "ownerGroup": "system.group.administrator"
                              },
                              "from": "system.adapter.admin.0",
                              "user": "system.user.admin",
                              "ts": 1758353664668
                            }
                            

                            EDIT:
                            beim nächsten Start nach 10:00 wird wieder der erste Wert, also für 10:00 in die history eingetragen.

                            Ein neuer Testdatenpunkt, um auszuschließen dass es Probleme mit dem History.json gibt, wird genauso behandelt.

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

                              @homoran sagte: Start nach 10:00 wird wieder der erste Wert, also für 10:00 in die history eingetragen.

                              Hats du die Schleife entsprechend auf 0 bis <= 11 verkürzt?

                              @homoran sagte in wie mit sendTo History.0 Werte im Voraus übergeben?:

                              Wert hab ich schon von 100 auf 10000 hochgesetzt

                              Der Datenpunkt wird hoffentlich nicht geschrieben? Die History wird mit sendTo() gefüllt.

                              Alternativ zu sendTo() kannst du es mal mit setState() versuchen, der um 5:15 Uhr 17 mal hintereinander den Datenpunkt schreibt:

                              Blockly_temp.JPG

                              Homoran 1 Reply Last reply Reply Quote 0
                              • Homoran
                                Homoran Global Moderator Administrators @paul53 last edited by Homoran

                                @paul53 sagte in wie mit sendTo History.0 Werte im Voraus übergeben?:

                                Hats du die Schleife entsprechend auf 0 bis <= 11 verkürzt?

                                ja!

                                @paul53 sagte in wie mit sendTo History.0 Werte im Voraus übergeben?:

                                Der Datenpunkt wird hoffentlich nicht geschrieben?

                                richtig!
                                hab ihn sogar gelöscht, neu angelegt. Da steht noch die initiale gelbe 0

                                @paul53 sagte in wie mit sendTo History.0 Werte im Voraus übergeben?:

                                Alternativ

                                wäre eine Möglichkeit.

                                Aber im Moment verstehe ich folgendes nicht:
                                gemäß der Historykonfiguration des Datenpunktes, Verlaufsdaten

                                zuerst wurde gar nichts geschrieben... ist klar, keine Zahlen
                                Anschließend (ohne timestamp-Konvertierung) standen alle Werte drin, mit Timestamp: Datum Uhrzeit .NaN für Millisekunden.
                                jetzt passt der Timestamp, aber nur der erste Wert wird in der History angezeigt!

                                ist seltsam

                                Achtung, es wird noch seltsamer
                                gerade sehe ich nochmal nach, da stehen alle Daten der vergangenen und der aktuellen Stunde drin, aber keine in der Zukunft!

                                Screenshot_20250920-122316_Firefox.jpg

                                Als ob das Array erst "zeitgerecht" abgearbeitet wird.... 🤔

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

                                  @homoran sagte: da stehen alle Daten der vergangenen und der aktuellen Stunde drin

                                  Die vergangenen Stunden stehen noch drin, oder hast du die History inzwischen gelöscht?

                                  @homoran sagte in wie mit sendTo History.0 Werte im Voraus übergeben?:

                                  keine in der Zukunft!

                                  Die Liste ist aber korrekt? Vielleicht lässt History mit sendTo() keine zukünftigen Daten zu?

                                  Homoran 2 Replies Last reply Reply Quote 0
                                  • Homoran
                                    Homoran Global Moderator Administrators @paul53 last edited by

                                    @paul53 sagte in wie mit sendTo History.0 Werte im Voraus übergeben?:

                                    Die vergangenen Stunden stehen noch drin, oder hast du die History inzwischen gelöscht?

                                    als ich das letzte mal teingesehen hatte standen nur 0900 und 1000 drin.
                                    jetzt sind ohne weitere Aktivitäten meinerseits (war zwischenzeitlich Fliesen abschlagen 😉) die Werte von 1100 und 1200 aufgetaucht

                                    1 Reply Last reply Reply Quote 0
                                    • Homoran
                                      Homoran Global Moderator Administrators @paul53 last edited by Homoran

                                      @paul53 sagte in wie mit sendTo History.0 Werte im Voraus übergeben?:

                                      Die Liste ist aber korrekt?

                                      die um 10:07:59 geschriebene und gesendete Liste
                                      Screenshot_20250920-123704_Firefox.jpg

                                      [{"val":1253,"ts":1758355200000,"ack":true},{"val":1920,"ts":1758358800000,"ack":true},{"val":2368,"ts":1758362400000,"ack":true},{"val":2515,"ts":1758366000000,"ack":true},{"val":2293,"ts":1758369600000,"ack":true},{"val":1823,"ts":1758373200000,"ack":true},{"val":1299,"ts":1758376800000,"ack":true},{"val":790,"ts":1758380400000,"ack":true},{"val":513,"ts":1758384000000,"ack":true},{"val":185,"ts":1758387600000,"ack":true},{"val":0,"ts":1758391200000,"ack":true},{"val":0,"ts":1758394800000,"ack":true}]
                                      

                                      @paul53 sagte in wie mit sendTo History.0 Werte im Voraus übergeben?:

                                      Vielleicht lässt History mit sendTo() keine zukünftigen Daten zu?

                                      @klassisch kann es aber 😢 mit js

                                      EDIT:
                                      das gleiche in dem einmalig testweise beschriebenen Datenpunkt
                                      Screenshot_20250920-123954_Firefox.jpg

                                      EDIT2:
                                      damit liegen aber zumindest in flot die zukünftigen Daten vor
                                      Screenshot_20250920-124219_Firefox.jpg

                                      Möglicherweise ist doch das heutige json vom Original-DP durch diese Spielereien "verbrannt"
                                      hab aber keine Lust mir das rauszusuchen und zu analysieren

                                      paul53 2 Replies Last reply Reply Quote 0
                                      • paul53
                                        paul53 @Homoran last edited by paul53

                                        @homoran sagte: das gleiche in dem einmalig testweise beschriebenen Datenpunkt

                                        Schau dir mal die Endzeit an: Die zukünftigen Werte werden nur nicht angezeigt, sind aber in der .json-Datei enthalten?

                                        Homoran 1 Reply Last reply Reply Quote 0
                                        • Homoran
                                          Homoran Global Moderator Administrators @paul53 last edited by

                                          @paul53 siehe edit2 bitte!

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

                                            @homoran sagte: @klassisch kann es aber mit js

                                            Das ist die Version mit "steuere" ohne sendTo().

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            887
                                            Online

                                            32.1k
                                            Users

                                            80.7k
                                            Topics

                                            1.3m
                                            Posts

                                            2
                                            22
                                            260
                                            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