Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Datenpunkt aus mehreren Tagen Erzeugen

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Datenpunkt aus mehreren Tagen Erzeugen

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

      Moin zusammen,

      gibt es eine Möglichkeit einen Datenpunkt zu erzeugen, der auf unterschiedliche Datenpunkte je nach Datum zurück greift?

      vor folgendem Problem stehe ich:

      der Fronius Adapter spuckt die geleisteten Wh je Tag als eigenen Datenpunkt aus.

      Beispiel für den 14. Juni:

      fronius-solarweb.0.de1fbbf8-cbcb-4039-8911-63555240ad4e.day.EnergyProductionTotal.values.14
      

      Dieser Datenpunkt wird dann am 14. Juli, 14 August usw wieder überschrieben.

      Kann ich ein Blockly (oder ggf einen anderen Weg gehen) der mir einen Datenpunkt erzeugt, der immer auf den Tagesaktuellen Datenpunkt zugreift und diesen 1:1 weiter gibt?

      Der Sinn dahinter ist, das ich gerne einen Datenpunkt hätte, den ich in InfluxDB und dann weiter in Grafana relativ einfach verarbeiten kann.

      Schöne Grüße

      mickym paul53 2 Replies Last reply Reply Quote 0
      • mickym
        mickym Most Active @weserjunge last edited by

        @weserjunge wenn du den in der influx dB hast, dann hast du doch automatisch die Historie. In der influx musst du dann doch nur das Maximum pro Tag auswerten

        W 1 Reply Last reply Reply Quote 0
        • W
          weserjunge @mickym last edited by

          @mickym wenn ich das in Grafana je Tag als Balkendiagramm darstellen will, habe ich bis jetzt noch keinen anderen weg gefunden das hin zu bekommen. Deswegen war jetzt mein Gedanke, einen Datenpunkt zu erzeugen welcher sich einfach von Tag zu Tag ändert. Wie mein Strom oder Gaszähler wo Grafana mit einem Datenpunkt jeden tag neu anfängt.

          mickym T 2 Replies Last reply Reply Quote 0
          • mickym
            mickym Most Active @weserjunge last edited by mickym

            @weserjunge Ich bin da nicht so fit in influxdb - vielleicht kann Dir @Marc-Berg helfen. Aber in meinen Augen brauchst Du nur eine Abfrage, die Dir das Maximum je Tag ausgibt. Grafana stellt einfach das dar, wie die Abfrage zur Influx defiiniert ist.

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

              @mickym

              Um ganz ehrlich zu sein, verstehe ich das Ziel des TE nicht so richtig. Aber vielleicht wird ihm im Grafana Forum geholfen, wo er gestern die gleiche Frage gestellt hat:

              https://community.grafana.com/t/verarbeitung-unterschiedlicher-daten-fur-unterschiedliche-tage/90486

              W 1 Reply Last reply Reply Quote 0
              • T
                ticaki Developer @weserjunge last edited by

                @weserjunge

                Wenn du einen aufsteigenen Zähler in influx hast kannst du dir das pro Tag anzeigen lassen

                Hier ein Beispiel:

                SELECT non_negative_difference(last("value")) FROM "autogen"."shelly.0.SHEM-3#C45BBE6C597F#1.Total.ConsumedPower" WHERE $timeFilter GROUP BY time(1d) fill(previous) tz('Europe/Berlin')
                

                Kann man in im Builder zusammenklicken

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

                  @weserjunge sagte: geleisteten Wh je Tag als eigenen Datenpunkt aus.

                  Einmal am Tag am Tagesende?
                  Einen DP mit dem aktuellen Tag (gestern) gibt es nicht?
                  Dann kann man RegExp zum Triggern verwenden, um den den Wert des Tages in einen Datenpunkt für gestern zu übertragen.

                  const idsTag = new RegExp('fronius-solarweb.0.de1fbbf8-cbcb-4039-8911-63555240ad4e.day.EnergyProductionTotal.values.*');
                  const idGestern = '0_userdata.0.Fronius.Produktion.gestern'; // ID anpassen!
                  
                  on({id: idsTag}, function(dp) {
                      setState(idGestern, dp.state.val, true);
                  });
                  
                  1 Reply Last reply Reply Quote 0
                  • W
                    weserjunge @Marc Berg last edited by

                    @marc-berg ich sehe da jetzt kein Problem drin nach mehrer Lösungen parallel zu suchen. Viele Wege führen nach Rom, nur ist englisch nicht besonders meine Paradedisziplin, und das Grafana-Forum ist nun rein Englisch, worauf man mich ja auch netter weise hingewiesen hat 😉

                    1 Reply Last reply Reply Quote 0
                    • W
                      weserjunge @ticaki last edited by

                      @ticaki said in Datenpunkt aus mehreren Tagen Erzeugen:

                      @weserjunge

                      Wenn du einen aufsteigenen Zähler in influx hast kannst du dir das pro Tag anzeigen lassen

                      Hier ein Beispiel:

                      SELECT non_negative_difference(last("value")) FROM "autogen"."shelly.0.SHEM-3#C45BBE6C597F#1.Total.ConsumedPower" WHERE $timeFilter GROUP BY time(1d) fill(previous) tz('Europe/Berlin')
                      

                      Kann man in im Builder zusammenklicken

                      Meine Idee war, einen Datenpunkt zu erzeugen, welcher je nach Datum auf einen anderen Datenpunkt zugreift, diesen dann über die DB abzugreifen. Da die Bereitgestellten Datenpunkte kumuliert je Tag erstellt werden, braucht man eigentlich nicht weiter tätig werden:
                      BSP.:

                      1. April auf den Datenpunkt
                      fronius-solarweb.0.de1fbbf8-cbcb-4039-8911-63555240ad4e.day.EnergyProductionTotal.values.1
                      
                      1. April auf den Datenpunkt
                      fronius-solarweb.0.de1fbbf8-cbcb-4039-8911-63555240ad4e.day.EnergyProductionTotal.values.2
                      

                      17 Juni auf den Datenpunkt

                      fronius-solarweb.0.de1fbbf8-cbcb-4039-8911-63555240ad4e.day.EnergyProductionTotal.values.27
                      

                      vielleicht ist meine Idee auch völliger Quatsch.

                      Gruß

                      David G. 1 Reply Last reply Reply Quote 0
                      • David G.
                        David G. @weserjunge last edited by David G.

                        @weserjunge

                        Ich finde den Vorschlag von @paul53 am Sinnigsten.
                        Das hätte ich in der Art auch versucht.

                        So hast du alles sauber in einem DP in der History.

                        Das Skript lässt sich schnell in js oder Blockly umsetzen.

                        EDIT
                        Ich hätte es vermutlich mit "IDs vom Selektor" in Blockly gemacht anstatt "RegExp".

                        Hab aber keine Ahnung wo der Unterschied ist.

                        T paul53 2 Replies Last reply Reply Quote 0
                        • T
                          ticaki Developer @David G. last edited by ticaki

                          @weserjunge
                          Pauls Lösung ist optimal

                          @david-g sagte in Datenpunkt aus mehreren Tagen Erzeugen:

                          Hab aber keine Ahnung wo der Unterschied ist.

                          RegEx finde Datenpunkten zum Laufzeit, Selector beim Start des Skripts.

                          David G. 1 Reply Last reply Reply Quote 0
                          • paul53
                            paul53 @David G. last edited by

                            @david-g sagte: wo der Unterschied ist.

                            @ticaki sagte in Datenpunkt aus mehreren Tagen Erzeugen:

                            RegEx finde Datenpunkten zum Laufzeit, Selector beim Start des Skripts.

                            ... und Selektor.on() reagiert nur auf Wertänderung, der gezeigte Trigger auch auf Aktualisierung (des Zeitstempels).

                            T 1 Reply Last reply Reply Quote 0
                            • T
                              ticaki Developer @paul53 last edited by

                              @paul53 sagte in Datenpunkt aus mehreren Tagen Erzeugen:

                              ... und Selektor.on() reagiert nur auf Wertänderung, der gezeigte Trigger auch auf Aktualisierung (des Zeitstempels).

                              also ist es change:'any'?

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

                                @ticaki sagte: also ist es change:'any'?

                                Ja, change: 'any' ist default, wenn das Muster ein Objekt ist. Wenn das Muster ein ID-String ist, wird auf change: 'ne' reagiert.

                                1 Reply Last reply Reply Quote 0
                                • David G.
                                  David G. @ticaki last edited by

                                  @ticaki sagte in Datenpunkt aus mehreren Tagen Erzeugen:

                                  RegEx finde Datenpunkten zum Laufzeit, Selector beim Start des Skripts.

                                  Was bedeutet das?
                                  Den Selektor habe ich (wenn ich mich nicht irre) auch schon in einem Skript benutzt um Listen zu erstellen. Also als trigger und zum auslesen der DPs in einem Skript.

                                  Oder hab ich das falsch in Erinnerung?

                                  Im Hier genannten Fall, könnte ich doch auch mit dem Selektor arbeiten oder?

                                  paul53 1 Reply Last reply Reply Quote 0
                                  • paul53
                                    paul53 @David G. last edited by

                                    @david-g sagte: könnte ich doch auch mit dem Selektor arbeiten oder?

                                    Nur, wenn bei Skriptstart schon alle DP (1 ... 31) vorhanden sind. Nicht getriggert wird allerdings, wenn der Wert im aktuellen Monat zufällig mit dem im letzten Monat identisch ist.

                                    David G. 1 Reply Last reply Reply Quote 0
                                    • David G.
                                      David G. @paul53 last edited by

                                      @paul53

                                      Ah, okay.
                                      Das verstehe ich.

                                      Dann macht RegeEx ja eigentlich fast immer mehr Sinn als der Selektor oder (da er mehr Eventualitäten abdeckt)?

                                      Langsam was offtopic..

                                      paul53 T 2 Replies Last reply Reply Quote 0
                                      • paul53
                                        paul53 @David G. last edited by

                                        @david-g sagte: Dann macht RegeEx ja eigentlich fast immer mehr Sinn als der Selektor

                                        Den Selektor benötigt man, wenn man innerhalb des Triggers alle selektierten DP in einer Schleife abklappern muss (Beispiel: alle Fenster geschlossen?).

                                        1 Reply Last reply Reply Quote 0
                                        • T
                                          ticaki Developer @David G. last edited by ticaki

                                          @david-g sagte in Datenpunkt aus mehreren Tagen Erzeugen:

                                          @paul53

                                          Ah, okay.
                                          Das verstehe ich.

                                          Dann macht RegeEx ja eigentlich fast immer mehr Sinn als der Selektor oder (da er mehr Eventualitäten abdeckt)?

                                          Langsam was offtopic..

                                          Nein, der selector findet nur Änderungen und wenn dich nur Änderungen interessieren, was häufig der Fall ist, ist es RegEx vorzuziehen. Benutze aber selbst für gleiche DP ebenfalls regex mit change: 'was auch immer'.

                                          In deinem Fall ist es möglich, wenn auch nicht wahrscheinlich, das am z.B. 14. April die gleiche Leistung wie am 14 Mai gemessen wird, dann verändert sich der Wert des State nicht und dir fehlen Werte. Das könnte man dann wieder auffangen in dem man die Protokollierung der Werte auf Nur Änderungen und gleicher Wert nach 86.400 + x Sekunden protokoliert. Das würde dann nur nach 86400/x Fällen in Folge zu einem Fehler führen.

                                          em ok 😉

                                          kurz: nimm das von paul53

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

                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          525
                                          Online

                                          31.7k
                                          Users

                                          79.8k
                                          Topics

                                          1.3m
                                          Posts

                                          6
                                          19
                                          457
                                          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