Hallo,
ich möchte mit Hilfe meines Wettersensors einen Dummy "Regen" bei Regen einschalten (isRaining reicht mir vollkommen) und soll späeter 10 Minuten nach dem es aufgehört hat, wieder Ausschalten.
Ich scheiter schon beim entsprechenden "notify" fürs Einschalten. Das Ausschalten soll später mal mit einem "Watchdog" geschehen.
Hier main notify, so wie nach mehreren Versuchen im Moment aussieht:
define n_Regen_on notify Wetterstation:isRaining:.*{if (ReadingsVal("Wetterstation", "isRaining", "") eq "1" {fhem("set Regen on");;}}else {if (ReadingsVal("Wetterstation", "israining", "") eq "0" {fhem("set Regen off");;}}}
... und hier meine Wetterstation (Mofdul "Rain" läuft auch):
Internals:
COC_MSGCNT 774
COC_RAWMSG A13F58670399B9F00000000765B07E0C01213470A::-93:COC
COC_RSSI -93
COC_TIME 2017-08-14 00:00:16
DEF 399B9F
HMLAN1_MSGCNT 772
HMLAN1_RAWMSG E399B9F,0000,1B451AEC,FF,FFB6,F58670399B9F00000000765B07E0C01213470A
HMLAN1_RSSI -74
HMLAN1_TIME 2017-08-14 00:00:16
IODev COC
LASTInputDev HMLAN1
MSGCNT 1546
NAME Wetterstation
NOTIFYDEV global
NR 357
STATE T: 11.8 H: 91 W: 1.8 R: 594.72 IR: 0 WD: 95 WDR: 67.5 S: 71 B: 10
TYPE CUL_HM
lastMsg No:F5 - t:70 s:399B9F d:000000 00765B07E0C01213470A
protCmdDel 36
protLastRcv 2017-08-14 00:00:16
protResnd 18 last_at:2017-08-13 19:34:11
protResndFail 6 last_at:2017-08-13 19:36:20
protSnd 24 last_at:2017-08-13 19:36:18
protState CMDs_done_Errors:1
rssi_at_COC avg:-92.06 min:-94 max:-90.5 lst:-93 cnt:774
rssi_at_HMLAN1 avg:-74.9 min:-79 max:-73 lst:-74 cnt:772
READINGS:
2017-08-12 15:23:11 Activity alive
2016-06-28 22:34:37 CommandAccepted yes
2017-06-28 03:06:18 D-firmware 1.4
2017-06-28 03:06:18 D-serialNr MEQ0655185
2017-08-13 19:29:05 R-sunThresh set_50
2017-07-31 23:30:49 battery ok
2017-08-14 00:00:16 brightness 10
2017-08-14 00:00:16 humidity 91
2017-08-14 00:00:16 isRaining 0
2016-12-03 14:55:50 powerOn 2016-12-03 14:55:50
2017-08-14 00:00:16 rain 594.72
2017-08-13 11:25:50 rain_calc_all cH: 0.0 lH: 0.0 cD: 0.0 lD: 0.9 IR: 1 Rnow: 0.0 Rdif: 0
2017-08-13 11:25:50 rain_calc_d_curr 0.0
2017-08-13 07:30:51 rain_calc_d_last 0.9
2017-08-13 07:30:51 rain_calc_d_start 594.7
2017-08-13 07:30:51 rain_calc_d_trig_tsecs 1502688600
2017-08-13 11:25:50 rain_calc_h_curr 0.0
2017-08-13 10:30:03 rain_calc_h_last 0.0
2017-08-13 10:30:03 rain_calc_h_start 594.7
2017-08-13 10:30:03 rain_calc_h_trig_tsecs 1502616600
2017-08-13 11:25:50 rain_calc_now_diff 0
2017-08-13 11:25:50 rain_calc_now_rate 0.0
2017-08-13 11:25:50 rain_calc_now_value 594.7
2017-08-13 11:25:50 rain_calc_tsecs 1502616350.13513
2016-12-03 14:55:50 recentStateType info
2016-06-28 22:34:37 sabotageAttackId_ErrIoId_2EF067 cnt:12
2016-06-28 22:34:37 sabotageAttack_ErrIoAttack cnt 6
2017-08-14 00:00:16 state T: 11.8 H: 91 W: 1.8 R: 594.72 IR: 0 WD: 95 WDR: 67.5 S: 71 B: 10
2017-08-08 18:08:07 storm quiet
2017-08-14 00:00:16 sunshine 71
2017-08-14 00:00:16 temperature 11.8
2017-08-08 18:08:07 trig_09 HM_2EF067
2017-08-08 18:08:07 trigger_cnt 180
2016-12-03 14:55:50 unknown 06000000
2017-08-14 00:00:16 windDirRange 67.5
2017-08-14 00:00:16 windDirection 95
2017-08-14 00:00:16 windSpeed 1.8
helper:
HM_CMDNR 245
getCfgList all
getCfgListNo ,1
mId 0040
rxType 12
supp_Pair_Rep 0
expert:
def 1
det 0
raw 1
tpl 0
io:
newChn +399B9F,00,00,00
nextSend 1502661616.25231
rxt 0
vccu VCCU
p:
399B9F
00
00
00
mRssi:
mNo F5
io:
COC -91
HMLAN1 -74
prt:
bErr 0
sProc 0
q:
qReqConf
qReqStat
role:
chn 1
dev 1
rssi:
at_COC:
avg -92.0600775193798
cnt 774
lst -93
max -90.5
min -94
at_HMLAN1:
avg -74.9093264248705
cnt 772
lst -74
max -73
min -79
shadowReg:
RegL_01. 05:32
tmpl:
Attributes:
IODev HMLAN1
IOgrp VCCU
actCycle 000:10
actStatus alive
autoReadReg 4_reqStatus
expert 2_raw
firmware 1.4
model HM-WDS100-C6-O
room Wetter,CUL_HM
serialNr MEQ0655185
subType THSensor
Vielleicht kann mir jemand sagen was ich falsch mache.
Danke
Gruß
Volker
define n_Regen_on notify Wetterstation:isRaining:.(0|1) { fhem("set Regen " . ($EVTPART1 == "1" ? "on" : "off")) }
Ist bisschen einfacher.
Schau dann mal ob das Notify überhaupt getriggert wird
Hallo Leon,
das mit dem vereinfachten notify funktioniert. Ich habe mir noch eines für die Zeit wo es nicht regnet erstellt, das funktioniert auch:
define n_Trocken_on notify Wetterstation:isRaining:.(0|1) { fhem("set Trocken " . ($EVTPART1 == "0" ? "on" : "off")) }
Nun möchte ich damit meinen Gardena-Mäher bei Regen in sein Häuschen schicken, bzw. den Zeitplan unterbrechen und nach dem es 15 Minuten aufgehört hat zu regnen wieder den Zeitplan weiter abarbeiten lassen. Dazu möchte ich den watchdog nutzen. Der watchdog zum Unterbrechen des Zeitplans funktioniert.
define wd_Regen_on watchdog Regen:on.* 00:01:00 Regen:off.* set Gisberth parkUntilFurtherNotice;; trigger wd_Regen_on .
Der watchdog nachdem es aufgehört zu regnen, der funktioniert nicht.
define wd_Trocken_on watchdog Trocken:on.* 00:15:00 Trocken:off.* set Gisberth startResumeSchedule;; trigger wd_Trocken_on .
Einziger Unterschied den ich erkennen kann: Bei den Readings von wd_Regen_on stehen ACTIVATED und TRIGGERED jeweils mit einer Uhrzeit. Bei den Readings von wd_Trocken_on steht nur ACTIVATED mit Uhrzeit.
Was mache ich da falsch.
Gruß
Volker
Zitat von: VolkerL am 22 August 2017, 11:21:18
Hallo Leon,
das mit dem vereinfachten notify funktioniert. Ich habe mir noch eines für die Zeit wo es nicht regnet erstellt, das funktioniert auch:
define n_Trocken_on notify Wetterstation:isRaining:.(0|1) { fhem("set Trocken " . ($EVTPART1 == "0" ? "on" : "off")) }
Hallo Volker,
Da haben wir uns nicht ganz verstanden. Dieses Notify ist ja für beide Fälle. Ok ich gebe zu ich habe es doof benannt.
Erstelle einen Dummy der da heist dummyRegen
Dann erstelle ein Notify
define n_regen_janein notify Wetterstation:isRaining:.(0|1) { fhem("set Trocken " . ($EVTPART1 == "0" ? "es regnet" : "es regnet nicht")) }
Hoffe so ist es deutlicher. Kannst auch was anderes setzen lassen. Deine Fantasie.
Zitat von: VolkerL am 22 August 2017, 11:21:18
Nun möchte ich damit meinen Gardena-Mäher bei Regen in sein Häuschen schicken, bzw. den Zeitplan unterbrechen und nach dem es 15 Minuten aufgehört hat zu regnen wieder den Zeitplan weiter abarbeiten lassen. Dazu möchte ich den watchdog nutzen. Der watchdog zum Unterbrechen des Zeitplans funktioniert.
define wd_Regen_on watchdog Regen:on.* 00:01:00 Regen:off.* set Gisberth parkUntilFurtherNotice;; trigger wd_Regen_on .
Der watchdog nachdem es aufgehört zu regnen, der funktioniert nicht.
define wd_Trocken_on watchdog Trocken:on.* 00:15:00 Trocken:off.* set Gisberth startResumeSchedule;; trigger wd_Trocken_on .
Einziger Unterschied den ich erkennen kann: Bei den Readings von wd_Regen_on stehen ACTIVATED und TRIGGERED jeweils mit einer Uhrzeit. Bei den Readings von wd_Trocken_on steht nur ACTIVATED mit Uhrzeit.
Was mache ich da falsch.
Gruß
Volker
Der kann ja auch nicht gehen. Wie gesagt bedeutete in meinem Beispiel off kein Regen on Regen. Du triggerst aber auf on für das aktivieren des watchdogs. Du musst da genau andersrum triggern. Also triggern auf off und nach dem ablauf der Zeit prüfen auf on. Oder halt eben was Du immer da auch nehmen willst im dummy. Wie erwähnt es reicht ein notify und ein dummy. Das notify macht ja schon die Fallunterscheidung und schreibt je nach dem entsprechend in den Dummy.
Grüße
Verständnisfrage.
Du hast einen Dummy "Regen" und einen Dummy "Trocken".
Beide werden durch ein Event der Wetterstation und zwar IsRaining ausgelöst.
Sie werden immer gegeneinander geschaltet, also wenn der eine on ist der andere off.
Ist das so?
Warum?
Und noch ein kleiner Hinweis: Bei leichtem Regen dauert es immer etwas bis IsRainingg auf on/1 steht.
Hallo,
Ihr habt beide recht, das war irgendwie "doppelt gemoppelt" :) von mir.
Ich lösche den dummy Trocken und das notify für Trocken, passe alles andere an und versuche damit mal mein Glück.
Das mit dem watchdog, dass er nicht nach 15 Minuten "kein Regen" den Mäher wieder losschickt, könnte doch auch daran liegen, dass er während der laufenden 15 Minuten, jedes mal, wenn die Wetterstation ausgelesen wird, wieder neu gestartet wird, da das notify wieder (im Moment bei mir noch) ein "Trocken on" rausgibt und das dadurch nicht als zusammenhängende Zeit ansieht.
@rabehd: das mit dem Zeitverzug bis zur Regenerkennung ist unkritisch, da der Gardena-Mäher grundsätzlich auch bei Regen mähen kann/darf, ich das aber nicht unbedingt möchte.
Gruß
Volker
Zitat von: VolkerL am 22 August 2017, 14:14:37
Das mit dem watchdog, dass er nicht nach 15 Minuten "kein Regen" den Mäher wieder losschickt, könnte doch auch daran liegen, dass er während der laufenden 15 Minuten, jedes mal, wenn die Wetterstation ausgelesen wird, wieder neu gestartet wird, da das notify wieder (im Moment bei mir noch) ein "Trocken on" rausgibt und das dadurch nicht als zusammenhängende Zeit ansieht.
Ich denke eher nicht. Bin mir da aber unsicher. Was Du machen kannst ist, Readings die Du von Deiner Wetterstation tatsächlich brauchst in event-on-change-readings ein zu tragen.
ZitatReadings die Du von Deiner Wetterstation tatsächlich brauchst in event-on-change-readings ein zu tragen.
Auch mein erster Gedanke
Das habe ich jetzt mal alles geändert und beobachte alles mal.
Danke
Hallo,
So, ich habe das isRaining in der Wetterstation als event-on-change-reading eingetragen und seitdem funktioniert der watchdog korrekt und zeigt auch nach der eingestellten Zeit TRIGGERED an. (zumindest wenn man es per Hand testet) Die unnötigen Dinge habe ich raus geschmissen.
Das der watchdog wd_Regen_on schon immer funktioniert hat, hängt damit zusammen, dass dort die Zeit auf 1 Minute eingestellt ist und zwischen zwei Aktualisierungen der Wetterstation die Zeitspanne größer als 1 Minute ist.
Ich denke bei Regen funktioniert es genauso.
Gruß
Volker