Hallo,
ichn hab mir aus einem Regenmesser mit Reed-Kontakt (https://de.aliexpress.com/item/1000001838878.html?spm=a2g0o.productlist.0.0.705c1c7fyN143H&algo_pvid=802e0b78-d696-416b-acd6-b8cb2b6b26a0&algo_exp_id=802e0b78-d696-416b-acd6-b8cb2b6b26a0-0&pdp_ext_f=%7B%22sku_id%22%3A%2259746995687%22%7D&pdp_npi=2%40dis%21EUR%21%2111.75%21%21%21%21%21%400b0a050116553789035772940e05fa%2159746995687%21sea)und einem zigbee Türsensor (https://de.aliexpress.com/item/1005003874794280.html?spm=a2g0o.order_list.0.0.6e255c5fAYpSQS&gatewayAdapt=glo2deu) 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
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
Hallo,
aus http://www.fhemwiki.de/wiki/HourCounter (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.
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
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?
wer lesen kann ist im Vorteil
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
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.
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.
Siehe meine Antwort dazu in https://forum.fhem.de/index.php/topic,128058.msg1225168.html#msg1225168 (https://forum.fhem.de/index.php/topic,128058.msg1225168.html#msg1225168)
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
klappt doch, brauch nur seine Zeit und etwas Wasser
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
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