Ankündigung

Einklappen
Keine Ankündigung bisher.

Neues Database Plugin

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Zitat von Onkelandy Beitrag anzeigen
    Das avg bezieht sich auf die Dauer und nicht die Schaltvorgänge
    Also bei mir nicht.

    Code:
    sh.Zentral.Wetter.Wetterstation.Regen.db('avg', '24h', 'now')
    Als Ergebnis erhalte ich 0.51. Das heißt es hat in den letzten 24 Stunden mehr als 12 Stunden geregnet. Was natürlich quatsch ist. ;-) Die Datenbank passt aber.

    Code:
     [TABLE="border: 0, cellpadding: 0, cellspacing: 0, width: 478"]
     	 		[TR]
     			[TD="class: xl65, width: 52"]Item ID[/TD]
     			[TD="class: xl65, width: 203"]Zeit[/TD]
     			[TD="class: xl65, width: 96"]Dauer[/TD]
     			[TD="class: xl65, width: 215"]Geändert[/TD]
     			[TD="class: xl65, width: 72"]VAL_BOOL[/TD]
     		[/TR]
     		[TR]
     			[TD="class: xl66, width: 52, align: right"]3[/TD]
     			[TD="class: xl67, width: 203, align: right"]29.07.2019 20:42[/TD]
     			[TD="class: xl66, width: 96"]None[/TD]
     			[TD="class: xl67, width: 215, align: right"]29.07.2019 20:42[/TD]
     			[TD="class: xl66, width: 72, align: right"]0[/TD]
     		[/TR]
     		[TR]
     			[TD="class: xl66, width: 52, align: right"]3[/TD]
     			[TD="class: xl67, width: 203, align: right"]29.07.2019 20:29[/TD]
     			[TD="class: xl66, width: 96, align: right"]753130[/TD]
     			[TD="class: xl67, width: 215, align: right"]29.07.2019 20:42[/TD]
     			[TD="class: xl66, width: 72, align: right"]1[/TD]
     		[/TR]
     		[TR]
     			[TD="class: xl66, width: 52, align: right"]3[/TD]
     			[TD="class: xl67, width: 203, align: right"]29.07.2019 20:16[/TD]
     			[TD="class: xl66, width: 96, align: right"]773599[/TD]
     			[TD="class: xl67, width: 215, align: right"]29.07.2019 20:30[/TD]
     			[TD="class: xl66, width: 72, align: right"]0[/TD]
     		[/TR]
     		[TR]
     			[TD="class: xl66, width: 52, align: right"]3[/TD]
     			[TD="class: xl67, width: 203, align: right"]29.07.2019 20:00[/TD]
     			[TD="class: xl66, width: 96, align: right"]983385[/TD]
     			[TD="class: xl67, width: 215, align: right"]29.07.2019 20:17[/TD]
     			[TD="class: xl66, width: 72, align: right"]1[/TD]
     		[/TR]
     		[TR]
     			[TD="class: xl66, width: 52, align: right"]3[/TD]
     			[TD="class: xl67, width: 203, align: right"]29.07.2019 19:51[/TD]
     			[TD="class: xl66, width: 96, align: right"]558017[/TD]
     			[TD="class: xl67, width: 215, align: right"]29.07.2019 20:00[/TD]
     			[TD="class: xl66, width: 72, align: right"]0[/TD]
     		[/TR]
     		[TR]
     			[TD="class: xl66, width: 52, align: right"]3[/TD]
     			[TD="class: xl67, width: 203, align: right"]29.07.2019 19:07[/TD]
     			[TD="class: xl66, width: 96, align: right"]2589094[/TD]
     			[TD="class: xl67, width: 215, align: right"]29.07.2019 19:51[/TD]
     			[TD="class: xl66, width: 72, align: right"]1[/TD]
     		[/TR]
     		[TR]
     			[TD="class: xl66, width: 52, align: right"]3[/TD]
     			[TD="class: xl67, width: 203, align: right"]29.07.2019 18:52[/TD]
     			[TD="class: xl66, width: 96, align: right"]948041[/TD]
     			[TD="class: xl67, width: 215, align: right"]29.07.2019 19:08[/TD]
     			[TD="class: xl66, width: 72, align: right"]0[/TD]
     		[/TR]
     		[TR]
     			[TD="class: xl66, width: 52, align: right"]3[/TD]
     			[TD="class: xl67, width: 203, align: right"]29.07.2019 18:17[/TD]
     			[TD="class: xl66, width: 96, align: right"]2059637[/TD]
     			[TD="class: xl67, width: 215, align: right"]29.07.2019 18:52[/TD]
     			[TD="class: xl66, width: 72, align: right"]1[/TD]
     		[/TR]
     		[TR]
     			[TD="class: xl66, width: 52, align: right"]3[/TD]
     			[TD="class: xl67, width: 203, align: right"]29.07.2019 18:17[/TD]
     			[TD="class: xl66, width: 96, align: right"]5232[/TD]
     			[TD="class: xl67, width: 215, align: right"]29.07.2019 18:27[/TD]
     			[TD="class: xl66, width: 72, align: right"]0[/TD]
     		[/TR]
     		[TR]
     			[TD="class: xl66, width: 52, align: right"]3[/TD]
     			[TD="class: xl67, width: 203, align: right"]29.07.2019 17:27[/TD]
     			[TD="class: xl66, width: 96"]None[/TD]
     			[TD="class: xl67, width: 215, align: right"]29.07.2019 17:28[/TD]
     			[TD="class: xl66, width: 72, align: right"]1[/TD]
     		[/TR]
     	 [/TABLE]

    Kommentar


      Gib mal bei der plugin.yaml Config noch ein "precision: 4" dazu.
      Standard ist glaub 2 - da kann es tatsächlich sein, dass bei längerer Dauer die Rundungsfehler zu solch einem Blödsinn führen..?

      Kommentar


        Hatte mal so etwas ohne db gebastelt:

        Code:
                        counter_s:
                            name: Zeitzähler in Sekunden
                            type: num
                            visu_acl: ro
                            eval: sh..() + int(sh...prev_value()) * sh...prev_age()
                            eval_trigger: ..
                            database@db01: 'yes'

        Kommentar


          Zitat von Onkelandy Beitrag anzeigen
          Gib mal bei der plugin.yaml Config noch ein "precision: 4" dazu.
          Standard ist glaub 2 - da kann es tatsächlich sein, dass bei längerer Dauer die Rundungsfehler zu solch einem Blödsinn führen..?
          Leider keinen Unterschied. Aber mir erscheint es auch nicht logisch, dass avg den Mittelwert aus der Zeit berechnen soll, sondern nur aus den Werten. Das ist ja bei anderen Datenbanken auch nicht anders.

          Zitat von gama Beitrag anzeigen
          Hatte mal so etwas ohne db gebastelt:
          Ja solche Lösungen habe ich auch. Allerdings kann ich damit nie bestimmte Zeiträume abfragen. Deshalb will ich die Datenbank nutzen.


          ->

          Ich könnte natürlich überlegen alle 5 Minuten einen Schreibvorgang in die DB zu "erzwingen". Elegant finde ich das aber nicht.

          Kann man denn die Datensätze auch einzeln auslesen, durchintterieren und dann auswerten? Mir ist nicht ganz klar, wie ich an die Daten komme. Mit series geht das ja evtl. aber wie ich das genau nutze ist mir nicht klar.

          Kommentar


            Hast du mal so einen Test versucht wie von mir beschrieben? Eventuell weiß @ohinckel was. Funktionieren sollte das "time weighted average" auf jeden Fall.

            Kommentar


              Zitat von Onkelandy Beitrag anzeigen
              Hast du mal so einen Test versucht wie von mir beschrieben?
              Ich teste das mit deinen Codezeilen ... ja klar ... nur der Zeitraum ist ein anderer, weil ich nicht nur ein paar Minuten teste, sondern mehrere Stunden abfrage.

              Kommentar


                Hallo zusammen,

                'integrate' integriert nicht die Zeit sondern den Datenbank Wert (also Temperatur, Leistung etc. ) auf. Was du für die Dauer brauchst ist das Attribut 'on'. Es gibt dir als Faktor zwischen 0 un 1 zurück, wie lange das Element im Abfragezeitrum (z.B. 15i = 15 min) an war:
                Code:
                 
                 sh.steckdosen.eg.bad_heizung.sa.db('on','15i', 'now') * 15
                Gruß

                Kommentar


                  Cannon ich meinte eben mit kürzerem Zeitfenster. So zum Test.
                  Was mir bei deinen Daten aufgefallen ist: du hast einen None Wert und postest ca 4 Stunden. Dabei wars 2 Stunden ein => 0.5

                  oder sind vor 18.17 noch mehrere Schaltaktionen mit Einträgen zu „Dauer“?

                  Ich behaupte bei bool ist avg und on das gleiche Ergebnis

                  Kommentar


                    Zitat von aschwith Beitrag anzeigen
                    Hallo zusammen,

                    'integrate' integriert nicht die Zeit sondern den Datenbank Wert (also Temperatur, Leistung etc. ) auf. Was du für die Dauer brauchst ist das Attribut 'on'. Es gibt dir als Faktor zwischen 0 un 1 zurück, wie lange das Element im Abfragezeitrum (z.B. 15i = 15 min) an war:
                    Code:
                    sh.steckdosen.eg.bad_heizung.sa.db('on','15i', 'now') * 15
                    Gruß
                    Ich versteh das nicht. Bei allen gehts irgendwie nur bei mir nicht. Das mit dem on, hat onkelandy auch mal gesagt. Aber da kommt bei mir immer 0.0 raus. Vielleicht ist ja das Problem doch ganz woanders zu suchen.

                    Kommentar


                      Zitat von Onkelandy Beitrag anzeigen
                      Cannon ich meinte eben mit kürzerem Zeitfenster. So zum Test.
                      Was mir bei deinen Daten aufgefallen ist: du hast einen None Wert und postest ca 4 Stunden. Dabei wars 2 Stunden ein => 0.5

                      oder sind vor 18.17 noch mehrere Schaltaktionen mit Einträgen zu „Dauer“?

                      Ich behaupte bei bool ist avg und on das gleiche Ergebnis
                      None ist die Dauer, da der Wert sich noch nicht verändert hat. Gepostet habe ich den ganzen letzten Tag. Heute hat es nicht geregnet, damit gab es auch keien zusätzlichen Werte. Und vor 18:17 gab es auch keienn Regen, deshalb nicht mehr Werte. Das sind alle Werte, die dann innerhalb von 24 Stunden angefallen waren. Vielleicht wird auch der noch nicht abgeschlossene Wert nicht mit berechnet, was natürlich sein könnte. Damit muss man aber mit so langen Zeitperioden testen, weil der Fehler bei kurzen Perioden ja gar nicht prüfbar wäre.

                      Dennoch kann ich mal mit kurzen Zeitfenster testen ... das wäre ja machbar. Werde ich mal probieren.

                      Kommentar


                        Du könntest nochmal versuchen, den die Abfrage in ein float zu wandeln, sprich so:

                        Code:
                        float(sh.steckdosen.eg.bad_heizung.sa.db('on','15i', 'now'))*15
                        VG

                        Kommentar


                          Poste doch bitte nochmals einen aktuellen 24h check inkl. Ergebnis und allen db Werten in 24h

                          ich meinte das None um 17.27. da stimmte wohl was nicht.

                          Kommentar


                            Ich habs mal auf 12h begrenzt, dann ist das nicht tagesübergreifend und leichter zu sehen. Also mit 'on' kommt bei mir immer 0.0. Bei avg kommt zumindest was.

                            Hier die Daten:

                            Code:
                            Item ID     Zeit     Dauer     Geändert     VAL_BOOL
                            3     01.08.2019 20:46:42     None     01.08.2019 20:47:35     0     
                            3     01.08.2019 20:25:22     1280649     01.08.2019 20:47:35     1     
                            3     01.08.2019 20:05:18     1203171     01.08.2019 20:25:35     0     
                            3     01.08.2019 19:38:16     1622659     01.08.2019 20:05:34     1     
                            3     01.08.2019 13:58:30     20385768     01.08.2019 19:38:34     0     
                            3     01.08.2019 13:54:31     55150     01.08.2019 13:55:26     0     
                            3     01.08.2019 13:23:55     353886     01.08.2019 13:29:49     0     
                            3     01.08.2019 13:14:37     456168     01.08.2019 13:22:13     0     
                            3     01.08.2019 12:40:45     2006881     01.08.2019 13:14:11     0     
                            3     01.08.2019 12:32:42     456234     01.08.2019 12:40:19     0     
                            3     01.08.2019 09:17:53     11663000     01.08.2019 12:32:16     0     
                            3     01.08.2019 08:51:30     1255106     01.08.2019 09:12:25     0     
                            3     01.08.2019 08:34:35     654841     01.08.2019 08:45:29     0     
                            3     01.08.2019 08:23:11     655258     01.08.2019 08:34:07     0     
                            3     01.08.2019 08:10:45     254912     01.08.2019 08:15:00     0     
                            3     01.08.2019 08:04:22     354049     01.08.2019 08:10:16     0     
                            3     01.08.2019 08:01:20     154901     01.08.2019 08:03:55     0     
                            3     01.08.2019 02:33:12     None     01.08.2019 02:33:41     0     
                            3     01.08.2019 02:13:08     1204287     01.08.2019 02:33:41     1     
                            3     01.08.2019 00:10:40     7347357     01.08.2019 02:13:41     0
                            Bei 12h ergibt das hier:

                            Code:
                            sh.Zentral.Wetter.Wetterstation.Regen.db('avg', '12h', 'now') * 720
                            50.400000000000006

                            Es ist jetzt 20:51 Uhr. Und anscheinend haut das ungefähr hin, weil:

                            1. Zeile 4: 27 Minuten und 28 Sekunden sind.
                            2. Zeile 2: 22 Minuten und 13 Sekunden sind

                            Warum das jetzt besser geht, weiß ich nicht, muss man aber mal nach und nach prüfen.

                            Allerdings ist mir folgendes aufgefallen:

                            Auch, wenn es regnet und der "Vorgang" noch nicht beendet ist, wird dieser "unvollständige" Datensatz bei der Berechnung berücksichtigt. Dennoch gibt es eine Ungenauigkeit, die ich nicht ganz nachvollziehen kann. Entweder stimmt was nicht oder es passt gerade zufällig jetzt so halbwegs.

                            Ich habe das jetzt auch noch mal in einem Zeitfenster gerechnet, was Zeile 2 entsprechen soll. Haut aber anscheinend nicht richtig hin. Denn anscheinend ergibt die Messung von (Zeile 2) nur 21.3499.

                            Kommentar


                              Ich habe jetzt noch mal den Test mit 24h gemacht, da der Zeitraum jetzt überschaubarer ist und die gleichen Datensätze ihre Gültigkeit behalten, weil es keine weietren Datensätze zu schreiben gab.

                              Ausgehend von 9:00 Uhr, sollte sich der Wert vom gestrigen nicht unterscheiden. Nachdem ich auch noch mal ein wenig mit der precision in der plugin.yaml probiert habe, habe ich die nun auf 6 umgestellt. Und das liefert danns chon she rgute Ergebnisse. Die Werte sind jetzt stimmig.

                              Ich werde das aber dennoch weiter beobachten, denn zu Anfang ging es nicht wirklich, obwohl die Abfrage der Datenbank dennoch so gemacht wurde.

                              'on' liefert allerdings dennoch immer nur 0.0. Die Frage ist wieso?

                              Kommentar


                                Ich habe jetzt ein wenig mehr Daten zur Verfügung und so richtig scheint es doch noch nicht zu funktionieren. Siehe hier, stündlich ermittelt:

                                2019-08-21 00:00:00 INFO logics.Bewaesserung Regendauer im Zeitraum von: 48h: 15, 24h: 7, 12h: 4, 6h: 18 in Minuten.
                                2019-08-21 01:00:00 INFO logics.Bewaesserung Regendauer im Zeitraum von: 48h: 29, 24h: 14, 12h: 7, 6h: 35 in Minuten.
                                2019-08-21 02:00:00 INFO logics.Bewaesserung Regendauer im Zeitraum von: 48h: 74, 24h: 37, 12h: 18, 6h: 92 in Minuten.
                                2019-08-21 03:00:00 INFO logics.Bewaesserung Regendauer im Zeitraum von: 48h: 82, 24h: 41, 12h: 20, 6h: 106 in Minuten.
                                2019-08-21 04:00:00 INFO logics.Bewaesserung Regendauer im Zeitraum von: 48h: 79, 24h: 40, 12h: 20, 6h: 106 in Minuten.
                                2019-08-21 05:00:00 INFO logics.Bewaesserung Regendauer im Zeitraum von: 48h: 77, 24h: 38, 12h: 19, 6h: 106 in Minuten.
                                2019-08-21 06:00:00 INFO logics.Bewaesserung Regendauer im Zeitraum von: 48h: 75, 24h: 37, 12h: 106, 6h: 88 in Minuten.
                                2019-08-21 07:00:00 INFO logics.Bewaesserung Regendauer im Zeitraum von: 48h: 72, 24h: 36, 12h: 106, 6h: 71 in Minuten.

                                Merkwürdig erscheint, dass es im Zeitraum von 12 h weniger geregnet hat, als im Zeitraum von 6h. Das ist unlogisch. Hier die Database-Logs:

                                Code:
                                Item ID     Zeit     Dauer     Geändert     VAL_BOOL
                                3     21.08.2019 02:13:33     None     21.08.2019 02:14:10     0
                                3     21.08.2019 01:15:57     3456148     21.08.2019 02:14:10     1
                                3     21.08.2019 01:15:53     4238     21.08.2019 01:16:10     0
                                3     21.08.2019 01:02:18     814821     21.08.2019 01:16:10     1
                                3     21.08.2019 00:25:53     2185410     21.08.2019 01:03:10     0
                                3     21.08.2019 00:15:45     607366     21.08.2019 00:26:08     1
                                3     21.08.2019 00:07:03     521957     21.08.2019 00:16:08     0
                                3     20.08.2019 23:56:48     615570     21.08.2019 00:07:08     1
                                3     20.08.2019 23:18:22     2305634     20.08.2019 23:57:08     0
                                3     20.08.2019 23:04:01     861645     20.08.2019 23:19:07     1
                                3     20.08.2019 17:43:59     19201739     20.08.2019 23:04:07     0

                                Kommentar

                                Lädt...
                                X