[gelöst]Regenmesser, Umrechnung für Regenmenge in pro Stunde, pro Tag

Begonnen von matze1999, 16 Juni 2022, 13:36:40

Vorheriges Thema - Nächstes Thema

matze1999

Hallo,

ichn hab mir aus einem Regenmesser mit Reed-Kontakt und einem zigbee Türsensor einen "zigbee Regenmesser" gebaut.

hier der Regenmesser:
defmod HUESensor40 HUEDevice sensor 40  IODev=CONBEE
attr HUESensor40 IODev CONBEE
attr HUESensor40 alias Regenmesser
attr HUESensor40 group HUESensor
attr HUESensor40 model DS01
attr HUESensor40 room HUEDevice


und hier der dazu angelegte HourCounter

defmod Regenmenge HourCounter HUESensor40:open HUESensor40:closed

Jetzt habe ich aber nur die klicks gezählt, aber ein klick sind 0,505050505 l/m².

wie bekomme ich im HourCounter(/?) das so hin, das ich nicht die klicks, sondern klick*0,505050505050505  l/m²" bekomme?

Geht das über ein userreading:

attr Regenmenge userReadings Niederschlagsmenge {ReadingsVal("Regenmenge","reading",0)*0,505050505050505 ." l/m²"}

Das funktioniert aber nicht.

Dann sind ja standardmäßig

countsOverall        Absolutzähler für das Auftreten des ON-Ereignisses
countsPerDay    Tageszähler für das Auftreten des ON-Ereignisses

kann man auch einen Wochenzähler definieren?


matze1999

matze1999

so das erste selbst gelöst, wr ein ","

mit diesem HourCounter bekomme ich schon mal die l/m² für einen Tag angezeigt.

defmod Regenmenge HourCounter HUESensor40:closed
attr Regenmenge room Garten
attr Regenmenge stateFormat { (ReadingsVal("Regenmenge","countsPerDay",0)*0.505050505).' l/m²'}


Ich hätte aber gern noch "pro Stunde" und "pro Woche", geht das?

matze1999

DetlefR

Hallo,

aus http://www.fhemwiki.de/wiki/HourCounter
Zitat99_UtilsHourCounter aus dem contrib-Verzeichnis der FHEM-Installation erweitert den HourCounter um folgende Funktionen:

Viel Spaß beim Testen.

matze1999

hallo,

ich habe die 99_UtilsHourCounter nach FHEM kopiert, fhem neu gestartet, trotzdem nur:

Internals:
   CFGFN     
   DEF        HUESensor40:closed
   FUUID      62ab3d0a-f33f-214e-1f72-08c7da049ad66ecc
   NAME       Regenmenge
   NR         653
   NTFY_ORDER 50-Regenmenge
   STATE      1
   TYPE       HourCounter
   VERSION    1.0.1.2 - 24.12.2014
   eventCount 4
   READINGS:
     2022-06-16 16:25:20   countsOverall   1
     2022-06-16 16:25:20   countsPerDay    1
     2022-06-16 16:25:20   state           1
     2022-06-16 16:25:20   tickChanged     1
     2022-06-16 16:24:25   tickDay         0
     2022-06-16 16:24:25   tickHour        0
     2022-06-16 16:24:25   tickMonth       0
     2022-06-16 16:25:20   tickUpdated     2
     2022-06-16 16:24:25   tickWeek        0
     2022-06-16 16:24:25   tickYear        0
     2022-06-16 16:25:20   value           1
   helper:
     OFF_Regexp
     ON_Regexp  HUESensor40:closed
     calledByEvent
     changedTimestamp 2022-06-16 16:25:20
     forceClear
     forceDayChange
     forceHourChange
     forceMonthChange
     forceWeekChange
     forceYearChange
     isFirstRun
     sdRoundHourLast 1655388000
     value      1
     cmdQueue:
Attributes:


matze1999

DetlefR

Zitatich habe die 99_UtilsHourCounter nach FHEM kopiert, fhem neu gestartet, trotzdem nur:

Auch das Notify entsprechend eingerichtet. So wie es unter der Tabelle beschrieben ist?
Und ein/zwei Regentropfen simuliert, damit auch ein paar Werte zu sehen sind?

matze1999

wer lesen kann ist im Vorteil

matze1999

matze1999

jetzt habe ich aber immer noch das Problem, dass ich die Berechnung der  l/m² für Studne, Tag und woche als separate readingsbenötige. Wenn ich StateFormat nutze, habe ich ja immer nur einen Wert, leider waren meine Versuche mit UserReadings nicht von Erfolg gekrönt, weil ich die comandref und das Wiki dazu nicht verstehe.

matze1999

DetlefR

Entweder stateFormat, so wie begonnen, erweitern. Für jeden Wert eine neue Zeile.
Oder userReadings anpassen.
regenstunde:appCountsPerHourTemp.* {ReadingsNum($name,'appCountsPerHourTemp',0)*0.505050505050505 },
regentag:appCountsPerDayTemp.* {ReadingsNum($name,'appCountsPerDayTemp',0)*0.505050505050505 },
regenwoche:appCountsPerWeekTemp.*...

Jedes einzelne userReading durch Komma trennen.
Den Rest dann entsprechend anpassen.
regenstunde, regentag ... kann ja dann in stateFormat eingetragen werden.

matze1999

hallo,

habs mit Set magic hinbekommen:

setreading CN.Regenmenge appCountsPerMonthTemp {(ReadingsNum("CN.Regenmenge","appCountsPerMonthTemp",0)*0.505050505)}

ändert mir das reading in den normierten Wert, den ich jetzt fhem weit nutzen kann, ohne noch mal zu rechnen.


matze1999

habs jetzt mit userreadings versucht, klappt aber nicht:

defmod CN.Regenmenge HourCounter HUESensor40:closed
attr CN.Regenmenge userReadings regenstunde:appCountsPerHourTemp.* {ReadingsNum($name,'appCountsPerHourTemp',0)*0.505050505050505 },\
regentag:appCountsPerDayTemp.* {ReadingsNum($name,'appCountsPerDayTemp',0)*0.505050505050505 },\
regenwoche:appCountsPerWeekTemp.*{ReadingsNum($name,'appCountsPerWeekTemp',0)*0.505050505050505 }


matze1999

matze1999


matze1999

noch einmal zusammengefasst:

mit den o.g. userreadings klappt es, ich habe normierte Werte.

Mein Fehler war, das ich "CN." nicht im Namen vorangestellt hatte, deshalb gab es die Zeiträume bei mir nicht.

Noch eine Frage am Rande:

beziehen sich die "Hour", "Day", Year" Variablen audf die absoluten Zeiten, also die aktuelle Stunde, der Tag von 0:00 - 24:00, und das Jahr auf 01.01 - 31.12.?

Bei Week ist es scheinbar so, weil die Woche mit Sonntag beginnt, laut Wiki.


matze1999

DetlefR

Zitatbeziehen sich die "Hour", "Day", Year" Variablen audf die absoluten Zeiten, also die aktuelle Stunde, der Tag von 0:00 - 24:00, und das Jahr auf 01.01 - 31.12.?
Davon gehe ich mal aus. Bei der Woche kann man sich ja streiten, ob sie am Sonntag oder Montag beginnt. Allerdings erfolgt die automatische Umstellung erst, wenn das erste Ereignis eingetreten ist. Also nicht wundern, wenn es bis Mittwoch nicht geregnet hat, dann stehen in appCountsPerWeekTemp noch die Werte von letzter Woche.
Das lässt sich manuell erzwingen mit
Zitatset CN.Regenmenge forceXXXXChange