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
Hast Du keinen Wert (Reading) pro Stunde, wenn ja wird das geloggt?
moin,
habe leider keinen Wert für countsPerHour, sollte ich haben?
lediglich tickHour erscheint jede Stunde
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.
genau,
tickHour -Differenz countsOverall von tickHour von vorheriger tickHour.
Krieg das nur nicht als Function im Plot Editor abgebildet.
vg
Gerd
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
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
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
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
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
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
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
ist das listing das, was du benötigst, oder hab ich da was falsches geschickt?
Gerd
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?
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
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...
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
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
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
$countsPerHour ist auch nix. Da muss $name rein.
Gesendet von iPhone mit Tapatalk
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...
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.
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
noch mal schnell einen Nachtrag,
habe den Range eingestellt, scheint so zu stimmen.
:-)
Gerd
prima Tipps von euch allen, danke
Gerd