Ankündigung

Einklappen
Keine Ankündigung bisher.

Neues Database Plugin

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

  • Msinn
    antwortet
    Ein, das Verhalten kenne ich nicht. Hast Du die Items mit database: yes oder mit database: init konfiguriert?

    Einen Kommentar schreiben:


  • aschwith
    antwortet
    Hallo zusammen,

    kennt ihr das Verhalten, dass die Duration im Database plugin negativ sein kann? Hier ein Auszug aus dem WebIf des DB plugins:
    ID Zeit Duration Geändert Wert
    23 Date1 14:24:33 -6562430 21.04.2020 14:56:08 0.0
    23 Date1 14:22:14 -6424154 21.04.2020 14:46:04 0.0
    23 Date1 14:04:37 None 21.04.2020 14:04:38 0.0
    23 Date1 13:58:42 -5011784 21.04.2020 14:15:52 0.0
    23 Date1 13:16:22 None 21.04.2020 13:16:23 0.0
    23 Date1 12:35:10 10729243 21.04.2020 15:34:00 0.0
    23 Date1 12:33:00 129799 21.04.2020 13:15:27 121.0
    23 Date1 12:32:09 51118 21.04.2020 12:33:01 132.0
    Ich habe die Vermutung, dass bei einem smarthomeNG Neustart die Duration unter gewissen Umständen nicht berechnet werden kann. Hat jemand mal Ähnliches beobachtet?

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Ja da gibts dann wohl einen Fehler beim Schreiben. Das Logfile sagt nix? Vielleicht mal debug log aktivieren und ähnliche Situation hier nochmals posten. Ich schau mal bei mir in die Daten ob ich was Ähnliches erkenne

    Einen Kommentar schreiben:


  • Cannon
    antwortet
    Zitat von Onkelandy Beitrag anzeigen
    Es braucht einen Eintrag mit 35 Stunden Wert 0
    Ist aber nicht vorhanden. Es gibt daher aus meiner Sicht 2 Ansätze. Entweder muss das item immer wieder in einem definierten Intervall Daten in die Datenbank schreiben, was ich persönlich für nicht sinnig halt. Oder das plugin database hat einen Fehler und man sollte den fixen.

    Vielleicht sehe ich das auch völlig falsch. Aber die Alternative die Daten händisch einzutragen, ist ja nicht die Lösung.

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Es braucht einen Eintrag mit 35 Stunden Wert 0

    Einen Kommentar schreiben:


  • Cannon
    antwortet
    Zitat von Onkelandy Beitrag anzeigen
    Da müsste doch noch ein Eintrag zwischen 15.09.2019 22:38:10 und 17.09.2019 09:37:12 sein?
    Der Tag hat keine Einträge. Da ist nichts drin. Wenn sich nichts ändern, wird ja wahrscheinlich auch nichts in die Datenbank geschrieben ....

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Da müsste doch noch ein Eintrag zwischen 15.09.2019 22:38:10 und 17.09.2019 09:37:12 sein?
    Solang da nicht der Wert 0 zwischen diesen 2 Zeiten geschrieben wird, ist der ganze regenlose Tag nicht in der Berechnung mit drin und die Ergebnisse "stimmen"

    Einen Kommentar schreiben:


  • Cannon
    antwortet
    Zitat von Onkelandy Beitrag anzeigen
    Was steht denn da dazwischen in der Datenbank:
    Das ist immer der oberste Eintrag einer Datenbankzeile. Wenn ich das richtig verstehe ist das der gestartete, aber noch nicht beendete Zeitraum oder? Kann ich aber nicht beurteilen, was das nun bedeutet.

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Was steht denn da dazwischen in der Datenbank:
    3 17.09.2019 09:37:12 9667759 17.09.2019 12:19:18 0
    3 15.09.2019 22:37:17 None 15.09.2019 22:38:10 0

    Einen Kommentar schreiben:


  • Cannon
    antwortet
    So nun regnete es wieder und es passt wieder was nicht, vielleicht kann jemand was mit den Werten anfangen. Das sind alle Werte vom 15.9. bis 17.9. (Stand jetzt). Am 16.9. regnete es nicht.

    Code:
    Item ID     Zeit     Dauer     Geändert     VAL_BOOL
    3     17.09.2019 19:56:37     None     17.09.2019 19:57:20     0
    3     17.09.2019 19:37:07     1169620     17.09.2019 19:57:20     1
    3     17.09.2019 18:59:19     2267490     17.09.2019 19:37:20     0
    3     17.09.2019 18:27:00     1939654     17.09.2019 19:00:00     1
    3     17.09.2019 17:29:14     3466097     17.09.2019 18:27:19     0
    3     17.09.2019 17:18:47     626256     17.09.2019 17:29:19     1
    3     17.09.2019 17:11:13     454406     17.09.2019 17:19:19     0
    3     17.09.2019 16:55:25     948153     17.09.2019 17:11:19     1
    3     17.09.2019 16:52:31     173972     17.09.2019 16:56:19     0
    3     17.09.2019 16:21:07     1884228     17.09.2019 16:53:19     1
    3     17.09.2019 15:51:54     1752169     17.09.2019 16:21:19     0
    3     17.09.2019 15:04:22     2852069     17.09.2019 15:52:19     1
    3     17.09.2019 14:50:18     844144     17.09.2019 15:05:18     0
    3     17.09.2019 14:13:33     2205398     17.09.2019 14:51:18     1
    3     17.09.2019 14:06:58     394643     17.09.2019 14:14:18     0
    3     17.09.2019 13:39:25     1653361     17.09.2019 14:07:18     1
    3     17.09.2019 13:14:03     1521653     17.09.2019 13:40:18     0
    3     17.09.2019 12:18:20     3343458     17.09.2019 13:14:18     1
    3     17.09.2019 09:37:12     9667759     17.09.2019 12:19:18     0
    
    3     15.09.2019 22:37:17     None     15.09.2019 22:38:10     0
    3     15.09.2019 22:27:11     605880     15.09.2019 22:38:10     1
    3     15.09.2019 12:07:03     37207535     15.09.2019 22:28:10     0
    Precision, wie gesagt auf 6 Stellen. Hier die Werte aus dem Log:

    Code:
    2019-09-17  20:00:00 INFO     logics.Bewaesserung Regendauer im Zeitraum von: 48h: 0.081973, 24h: 0.082808, 12h: 0.082808, 6h: 0.557582.
    2019-09-17  20:00:00 INFO     logics.Bewaesserung Regendauer im Zeitraum von: 48h: 236, 24h: 119, 12h: 60, 6h: 201 Minuten.
    Und hier der Code dazu:

    Code:
    regendauer_48h = sh.Zentral.Wetter.Wetterstation.Regen.db('avg', '48h')
    regendauer_24h = sh.Zentral.Wetter.Wetterstation.Regen.db('avg', '24h')
    regendauer_12h = sh.Zentral.Wetter.Wetterstation.Regen.db('avg', '12h')
    regendauer_6h = sh.Zentral.Wetter.Wetterstation.Regen.db('avg', '6h')
    logger.info('Regendauer im Zeitraum von: 48h: {}, 24h: {}, 12h: {}, 6h: {}.'.format(regendauer_48h, regendauer_24h, regendauer_12h, regendauer_6h))
    
    regendauer_48h = round((sh.Zentral.Wetter.Wetterstation.Regen.db('avg', '48h') or 0) * 2880)
    regendauer_24h = round((sh.Zentral.Wetter.Wetterstation.Regen.db('avg', '24h') or 0) * 1440)
    regendauer_12h = round((sh.Zentral.Wetter.Wetterstation.Regen.db('avg', '12h') or 0) * 720)
    regendauer_6h = round((sh.Zentral.Wetter.Wetterstation.Regen.db('avg', '6h') or 0) * 360)
    logger.info('Regendauer im Zeitraum von: 48h: {}, 24h: {}, 12h: {}, 6h: {} Minuten.'.format(regendauer_48h, regendauer_24h, regendauer_12h, regendauer_6h))

    Einen Kommentar schreiben:


  • Cannon
    antwortet
    Zitat von Onkelandy Beitrag anzeigen
    Kannst du Konvertierungsfehler komplett ausschließen? Wie sehen denn die tatsächlichen Rückgabewerte (0-1) vom Database Plugin aus? Welche Präzision hast du nun aktiv, 4 Stellen?
    Die Prezision habe ich auf 6 Stellen eingestellt. Das ergab hier beim Test genauere Ergebnisse. Konvertierungsfehler würde ich deshalb ausschließen, weil die Unterschiede fast 50% betragen und das wäre kein Konvertierungsfehler mehr. Ich werde aber die tatsächlichen Werte ermitteln, wenn es wieder Werte zu messen gibt - sprich, wenn es mal wieder irgendwann regnet. Vielleicht kommen wir dem Phänomen dann auf der Spur.

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Kannst du Konvertierungsfehler komplett ausschließen? Wie sehen denn die tatsächlichen Rückgabewerte (0-1) vom Database Plugin aus? Welche Präzision hast du nun aktiv, 4 Stellen?

    Einen Kommentar schreiben:


  • Cannon
    antwortet
    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

    Einen Kommentar schreiben:


  • Cannon
    antwortet
    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?

    Einen Kommentar schreiben:


  • Cannon
    antwortet
    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.

    Einen Kommentar schreiben:

Lädt...
X