FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: gerd54 am 24 Februar 2020, 22:11:08

Titel: SVG Plots erstellen mit Abfragen und Formeln
Beitrag von: gerd54 am 24 Februar 2020, 22:11:08
Moin Gemeinde,
bin neu hier und hab direkt mal eine Anfängerfrage.
Insgesamt läuft mein FHEM schon ganz ordentlich. Habe One Wire, JeeLink und MAX Heizungssteuerung lauffähig.
jetzt möchte ich Wasseruhr und Gaszähler hinzufügen.
Benutze GPIO als Eingangssignal, bekomme auch schon fleissig Impulse, jedoch bei der Auswertung mittels Plot möchte ich Balken mit den jeweiligen Verbräuchen pro Stunde als Balken haben. Hourmodul ist bereits eingerichtet.
2020-02-24_21:00:00 Gasverbrauch tickHour: 58
2020-02-24_21:02:47 Gasverbrauch countsPerDay: 89
2020-02-24_21:02:47 Gasverbrauch countsOverall: 92448
2020-02-24_21:05:20 Gasverbrauch countsPerDay: 89
2020-02-24_21:05:20 Gasverbrauch countsOverall: 92448
2020-02-24_21:05:58 Gasverbrauch countsPerDay: 90
2020-02-24_21:05:58 Gasverbrauch countsOverall: 92449
2020-02-24_21:18:40 Gasverbrauch countsPerDay: 90
2020-02-24_21:18:40 Gasverbrauch countsOverall: 92449
2020-02-24_21:19:17 Gasverbrauch countsPerDay: 91
2020-02-24_21:19:17 Gasverbrauch countsOverall: 92450
2020-02-24_21:21:50 Gasverbrauch countsPerDay: 91
2020-02-24_21:21:50 Gasverbrauch countsOverall: 92450
2020-02-24_21:22:27 Gasverbrauch countsPerDay: 92
2020-02-24_21:22:27 Gasverbrauch countsOverall: 92451
2020-02-24_21:37:59 Gasverbrauch countsPerDay: 92
2020-02-24_21:37:59 Gasverbrauch countsOverall: 92451
2020-02-24_21:38:36 Gasverbrauch countsPerDay: 93
2020-02-24_21:38:36 Gasverbrauch countsOverall: 92452
2020-02-24_21:54:18 Gasverbrauch countsPerDay: 93
2020-02-24_21:54:18 Gasverbrauch countsOverall: 92452
2020-02-24_21:54:56 Gasverbrauch countsPerDay: 94
2020-02-24_21:54:56 Gasverbrauch countsOverall: 92453
2020-02-24_21:57:28 Gasverbrauch countsPerDay: 94
2020-02-24_21:57:28 Gasverbrauch countsOverall: 92453
2020-02-24_21:58:05 Gasverbrauch countsPerDay: 95
2020-02-24_21:58:05 Gasverbrauch countsOverall: 92454
2020-02-24_22:00:00 Gasverbrauch countsPerDay: 95
2020-02-24_22:00:00 Gasverbrauch countsOverall: 92454
2020-02-24_22:00:00 Gasverbrauch tickHour: 59

was ich brauche, ist die entsprechende Formel um den Gasverbrauch zwischen den tickHour zu errechnen.
Hat da einer ne idee, was ich bei function im PlotMonitor eintragen muss.
Die ganze Syntacs mit den  möglichen Formeln und Berechnungen erschliesst sich mir nicht und ich finde nichst aussagekräftiges im Netz

Wäre schon, wenn da einer, der es weiß, da mal helfen

Kölle Alaaf

Gerd
Titel: Antw:SVG Plots erstellen mit Abfragen und Formeln
Beitrag von: rabehd am 25 Februar 2020, 09:03:00
Hast Du keinen Wert (Reading) pro Stunde, wenn ja wird das geloggt?
Titel: Antw:SVG Plots erstellen mit Abfragen und Formeln
Beitrag von: gerd54 am 25 Februar 2020, 10:15:33
moin,
habe leider keinen Wert für countsPerHour, sollte ich haben?
lediglich tickHour erscheint jede Stunde
Titel: Antw:SVG Plots erstellen mit Abfragen und Formeln
Beitrag von: rabehd am 25 Februar 2020, 11:10:35
Du hast Impulse und möchtest Verbrauchswerte.
Das sollte ja kein Problem sein. Meine Vermutung ist Impulse mal Wert ist gleich Verbrauch.
tickhour sind wohl die Impulse pro Stunde?
Ein Userreading "VerbrauchproStunde" welche sich aus tickhour und Wert bildet. Das wird geloggt und damit wäre die Basis für die Grafik da. Das wäre dann ein Folgethema.
Titel: Antw:SVG Plots erstellen mit Abfragen und Formeln
Beitrag von: gerd54 am 25 Februar 2020, 14:41:48
genau,
tickHour -Differenz countsOverall von tickHour von vorheriger tickHour.
Krieg das nur nicht als Function im Plot Editor abgebildet.
vg
Gerd
Titel: Antw:SVG Plots erstellen mit Abfragen und Formeln
Beitrag von: KernSani am 25 Februar 2020, 14:57:09
Zitat von: gerd54 am 25 Februar 2020, 14:41:48
Krieg das nur nicht als Function im Plot Editor abgebildet.
vg
Gerd
Wie oben schon von rabehd erwähnt, bildet man das am Besten in einem userreading im hourcounter ab und loggt es. Dann sollte die Plot-Erstellung kein Problem sein.


Gesendet von iPhone mit Tapatalk
Titel: Antw:SVG Plots erstellen mit Abfragen und Formeln
Beitrag von: gerd54 am 25 Februar 2020, 18:12:18
hm, habe soeben mal ein userreading "countsPerHou"r für den hourCounter angelegt, dachte dann wir der hourcounter ein neues Reading in den readings mit auflisten. So einfach scheint es aber nicht zu sein. :-(
wie bilde ich es denn am besten ab ??
mfg
Gerd
Titel: Antw:SVG Plots erstellen mit Abfragen und Formeln
Beitrag von: KernSani am 25 Februar 2020, 18:18:51
Userreadings werden erstellt/aktualisiert, wenn die readings des Gerätes aktualisiert werden. Hast du lange genug gewartet? Poste mal win list deines Hourcounters.


Gesendet von iPhone mit Tapatalk
Titel: Antw:SVG Plots erstellen mit Abfragen und Formeln
Beitrag von: gerd54 am 25 Februar 2020, 18:27:25
hab bis zur vollen Stunde gewartet und hoffte das das neue userreading dann erscheint,hm nix?
anbei mein listing, war es das was du möchtest?

Gerd
Titel: Antw:SVG Plots erstellen mit Abfragen und Formeln
Beitrag von: KernSani am 25 Februar 2020, 19:59:16
Eigentlich dachte ich an ein list Gasverbrauch
Hast du ein leeres Userreading angelegt? Das userreading muss schon wissen, was es tun soll, sonst werden auch keine readings erstellt.


Gesendet von iPhone mit Tapatalk
Titel: Antw:SVG Plots erstellen mit Abfragen und Formeln
Beitrag von: gerd54 am 25 Februar 2020, 20:18:38
hm, äh..
hier mein listing, und wie leg ich das userreading an ...?

Internals:
   DEF        GPIOGaszaehler:on GPIOGaszaehler:off
   FUUID      5e4db939-f33f-04c2-faf9-eb179039ca022ef7
   NAME       Gasverbrauch
   NR         86
   NTFY_ORDER 50-Gasverbrauch
   STATE      88
   TYPE       HourCounter
   VERSION    1.0.1.2 - 24.12.2014
   READINGS:
     2020-02-20 13:13:26   clearDate       2020-02-20 13:13:26
     2020-02-25 20:11:44   countsOverall   92546
     2020-02-25 20:11:44   countsPerDay    88
     2020-02-25 20:11:44   pauseTimeEdge   38
     2020-02-25 20:11:44   pauseTimeIncrement 38
     2020-02-25 20:11:44   pauseTimeOverall 122555
     2020-02-25 20:11:44   pauseTimePerDay 13034
     2020-02-25 20:11:44   pulseTimeEdge   566
     2020-02-25 20:11:44   pulseTimeIncrement 0
     2020-02-25 20:11:44   pulseTimeOverall 333016
     2020-02-25 20:11:44   pulseTimePerDay 59114
     2020-02-25 20:11:44   state           88
     2020-02-25 20:11:44   tickChanged     130
     2020-02-25 18:16:33   tickDay         0
     2020-02-25 20:00:00   tickHour        2
     2020-02-25 18:16:33   tickMonth       0
     2020-02-25 20:11:44   tickUpdated     280
     2020-02-25 18:16:33   tickWeek        0
     2020-02-25 18:16:33   tickYear        0
     2020-02-25 20:11:44   value           1
   helper:
     OFF_Regexp GPIOGaszaehler:off
     ON_Regexp  GPIOGaszaehler:on
     calledByEvent
     changedTimestamp 2020-02-25 20:11:44
     forceClear
     forceDayChange
     forceHourChange
     forceMonthChange
     forceWeekChange
     forceYearChange
     isFirstRun
     sdRoundHourLast 1582657200
     value      1
     cmdQueue:
Attributes:
   group      Gaszähler
   room       Gas
   userReadings countsPerHour

vg
Gerd
Titel: Antw:SVG Plots erstellen mit Abfragen und Formeln
Beitrag von: KernSani am 25 Februar 2020, 20:25:41
Hatte vergessen zu sagen, das list bitte in code tags (das ist das # oben im Editor über den Smileys). Zum Thema userreadings:

https://wiki.fhem.de/wiki/UserReadings
Oder

https://fhem.de/commandref_DE.html#userReadings


Gesendet von iPhone mit Tapatalk
Titel: Antw:SVG Plots erstellen mit Abfragen und Formeln
Beitrag von: gerd54 am 25 Februar 2020, 20:33:31
ist das listing das, was du benötigst, oder hab ich da was falsches geschickt?

Gerd
Titel: Antw:SVG Plots erstellen mit Abfragen und Formeln
Beitrag von: KernSani am 25 Februar 2020, 21:14:47
Das list war das korrekte, aber ich konnte ja aus dem Screenshot schon entnehmen, dass das userreading unvollständig angelegt war. Kommst du mit den Links weiter?
Titel: Antw:SVG Plots erstellen mit Abfragen und Formeln
Beitrag von: gerd54 am 25 Februar 2020, 21:48:49
oh, das scheint schwierig zu werden, hab mit Programmierung wenig zu tun, da müsste ich mich erst mal reinarbeiten, es sei denn du kannst da was aus dem Arm schütteln, möglichst mit kurzer Anleitung, damit ich das auch verstehe ...:-)

Gerd
Titel: Antw:SVG Plots erstellen mit Abfragen und Formeln
Beitrag von: KernSani am 25 Februar 2020, 22:06:49
Da ich die Formel die du verwenden möchtest noch nicht ganz verstanden habe, probiere ich mich an der Erklärung.

Werte von Readings kann man mit der Perl-Funktion "ReadingsVal" abfragen, alternativ mit ReadingsNum bei Zahlen. Beide Funktionen erwarten 3 Parameter, den Namen des Devices (der praktischerweise in der Variablen $name abgelegt ist), den Namen des Readings und einen Default-Wert (falls das Reading nicht existiert o.ö.). 
Um tickHour auszulesen also sowas:

{ReadingsVal($name, "tickHour",0)}

Damit kannst du dann rechnen, das Ergebnis des Perlausdrucks geht ins userreading also z.B. (blödsinnig aber als Beispiel, die Differenz aus countOverall und tickHour in ein reading namens myReading)

myReading {ReadingsNum($name, "countsOverall",0) - ReadingsNum($name, "tickHour",0)}


Hoffe das hilft zum experimentieren...
Titel: Antw:SVG Plots erstellen mit Abfragen und Formeln
Beitrag von: gerd54 am 25 Februar 2020, 22:52:19
boah, erst mal vielen Dank für deine Ausführungen, sehr interessant, selbst wenn ich noch  nicht allers verstehe.
werde mich morgen mal dran geben um die ersten Test zu machen.
Danke

vg
Gerd
Titel: Antw:SVG Plots erstellen mit Abfragen und Formeln
Beitrag von: gerd54 am 26 Februar 2020, 11:45:53
moin KernSani,

hab mir das alles mal durchgelesen und versucht, es zu verstehen. Ich glaub das ist Geheimsprache :-) . Habe mal versucht da irgendwo in den attributen "was" einzugeben, leider ohne Erfolg, das ist auch ein bischen Stocherei.
mein Listing sieht so aus:
Internals:
   DEF        GPIOGaszaehler:on GPIOGaszaehler:off
   FUUID      5e4db939-f33f-04c2-faf9-eb179039ca022ef7
   NAME       Gasverbrauch
   NR         85
   NTFY_ORDER 50-Gasverbrauch
   STATE      51
   TYPE       HourCounter
   VERSION    1.0.1.2 - 24.12.2014
   READINGS:
     2020-02-20 13:13:26   clearDate       2020-02-20 13:13:26
     2020-02-26 11:07:56   countsOverall   92618
     2020-02-26 11:07:56   countsPerDay    51
     2020-02-26 11:07:56   pauseTimeEdge   37
     2020-02-26 11:07:56   pauseTimeIncrement 37
     2020-02-26 11:07:56   pauseTimeOverall 128138
     2020-02-26 11:07:56   pauseTimePerDay 4210
     2020-02-26 11:07:56   pulseTimeEdge   397
     2020-02-26 11:07:56   pulseTimeIncrement 0
     2020-02-26 11:07:56   pulseTimeOverall 380729
     2020-02-26 11:07:56   pulseTimePerDay 35390
     2020-02-26 11:07:56   state           51
     2020-02-26 11:00:00   tickChanged     274
     2020-02-26 11:07:56   tickDay         0
     2020-02-26 11:07:56   tickHour        0
     2020-02-26 11:07:56   tickMonth       0
     2020-02-26 11:07:56   tickUpdated     440
     2020-02-26 11:07:56   tickWeek        0
     2020-02-26 11:07:56   tickYear        0
     2020-02-26 11:07:56   value           1
   helper:
     OFF_Regexp GPIOGaszaehler:off
     ON_Regexp  GPIOGaszaehler:on
     calledByEvent
     changedTimestamp 2020-02-26 11:07:56
     forceClear
     forceDayChange
     forceHourChange
     forceMonthChange
     forceWeekChange
     forceYearChange
     isFirstRun
     sdRoundHourLast 1582711200
     value      -1
     cmdQueue:
Attributes:
   group      Gaszähler
   room       Gas
  userReadings {(ReadingsVal ($countsPerHour, "tickHour",0) }


an meiner Logdatei ändert sich nix:
2020-02-26_10:38:00 Gasverbrauch countsOverall: 92615
2020-02-26_10:45:06 Gasverbrauch countsPerDay: 48
2020-02-26_10:45:06 Gasverbrauch countsOverall: 92615
2020-02-26_10:45:44 Gasverbrauch countsPerDay: 49
2020-02-26_10:45:44 Gasverbrauch countsOverall: 92616
2020-02-26_10:52:09 Gasverbrauch countsPerDay: 49
2020-02-26_10:52:09 Gasverbrauch countsOverall: 92616
2020-02-26_10:52:46 Gasverbrauch countsPerDay: 50
2020-02-26_10:52:46 Gasverbrauch countsOverall: 92617
2020-02-26_10:59:23 Gasverbrauch countsPerDay: 50
2020-02-26_10:59:23 Gasverbrauch countsOverall: 92617
2020-02-26_11:00:00 Gasverbrauch countsPerDay: 50
2020-02-26_11:00:00 Gasverbrauch countsOverall: 92617
2020-02-26_11:00:00 Gasverbrauch tickHour: 17
2020-02-26_11:00:00 Gasverbrauch countsPerDay: 51
2020-02-26_11:00:00 Gasverbrauch countsOverall: 92618
2020-02-26_11:07:56 Gasverbrauch countsPerDay: 51
2020-02-26_11:07:56 Gasverbrauch countsOverall: 92618


ich will doch blos die Differenz der countsOverall zwischen zwei tickHour ermitteln?
vg Gerd



Titel: Antw:SVG Plots erstellen mit Abfragen und Formeln
Beitrag von: ch.eick am 26 Februar 2020, 12:09:50
Moin.

Da fehlt meines Erachtens noch der Name des reading.

   userReadings dein-wunsch-name  {(ReadingsVal ($countsPerHour, "tickHour",0) }

Dann wird das Ergebnis Deiner Formel in das reading dein-wunsch-name geschrieben.

Gesendet von meinem SM-G930F mit Tapatalk

Titel: Antw:SVG Plots erstellen mit Abfragen und Formeln
Beitrag von: KernSani am 26 Februar 2020, 12:19:53
$countsPerHour ist auch nix. Da muss $name rein.


Gesendet von iPhone mit Tapatalk
Titel: Antw:SVG Plots erstellen mit Abfragen und Formeln
Beitrag von: Beta-User am 26 Februar 2020, 12:31:36
Da fehlt m.E. bzgl. userReadings noch mehr: Ein vernünftiger trigger und "monotonic"

@gerd54: Es wir kaum ein Weg drumrum führen, du mußt dich mit der Syntax befassen, und was man braucht, steht in der commandref, hier also z.B. in https://fhem.de/commandref_modular.html#userReadings (https://fhem.de/commandref_modular.html#userReadings)

ABER: Es scheint doch bereits mehrere Readings zu geben, die Stunden- bzw. Tageswerte usw. enthalten...?!? Wo kommen die her, und warum loggst Du nicht die bzw. bereitest die dann grafisch auf?
(Das mit dem "tick" scheint aus dem hourcounter-Modul zu kommen, und so wie der erste post aussieht, ist es eigentlich nicht das, was du darstellen willst...)

Also, vermutlich (!) brauchst du etwas ganz anderes als hourcounter, nämlich
1. ein userReading am Device GPIOGaszaehler, das (nur) auf die "on"-Events reagiert (=triger) und "monotonic" zählt;
2. ein statistics-Device, das u.A. das betreffende userReading überwacht;
3. ein Logging für die von diesem statistics-Device am Device GPIOGaszaehler erzeugten Readings.

Erst letztere kann man dann grafisch aufarbeiten...
Titel: Antw:SVG Plots erstellen mit Abfragen und Formeln
Beitrag von: alanblack am 26 Februar 2020, 23:21:47
Zitat von: gerd54 am 24 Februar 2020, 22:11:08
Benutze GPIO als Eingangssignal, bekomme auch schon fleissig Impulse, jedoch bei der Auswertung mittels Plot möchte ich Balken mit den jeweiligen Verbräuchen pro Stunde als Balken haben. Hourmodul ist bereits eingerichtet.


Hallo Gerd,
wenn es Dir nur darum geht, definier mal einen Plot auf "Gasverbrauch countsOverall", trag "delta-h" in das Feld "function" ein und wähle bei "plot-type" "bars" aus.
Vielleicht reicht Dir das ja schon.
Titel: Antw:SVG Plots erstellen mit Abfragen und Formeln
Beitrag von: gerd54 am 27 Februar 2020, 13:34:31
hallo Alanblack,

prima, das sieht schon mal gut aus, jedoch was macht das delta da genau. Anfang der Messung wird kein Gas verbraucht und der countsOverall ändert ja keinen Wert, trotzdem ist in den Anfangsbalken schon etwas protokolliert?

vg
Gerd
Titel: Antw:SVG Plots erstellen mit Abfragen und Formeln
Beitrag von: gerd54 am 27 Februar 2020, 13:40:15
noch mal schnell einen Nachtrag,
habe den Range eingestellt, scheint so zu stimmen.

:-)

Gerd
Titel: Antw:SVG Plots erstellen mit Abfragen und Formeln
Beitrag von: gerd54 am 27 Februar 2020, 13:43:43
prima Tipps von euch allen, danke

Gerd