Hallo zusammen,
endlich habe ich mal wieder etwas Zeit für fhem - und natürlich gleich ein Problem.
Meine Gartenbewässerung soll mit folgendem doif gesteuert werden:
([09:30|Mo Mi Fr] and [d_48h.kein.Regen] eq "on") (set 04.06.SW4.02_Sw_01 on-for-timer 600)
Also Mo Mi Fr um 9:30 wenn es 48h nicht geregnet hat. Ob es JETZT regnet sagt mir meine Homematic Wetterstation mit dem Reading isRaining. Das kann ich auch abfragen und nutzen.
Wie aber bekomme ich den dummy d_48h.kein.Regen für 48h auf off? Mit set off-for-timer 172800 geht es leider nicht, da geht der state immer direkt auf off.
Wie macht ihr das so? Habt ihr eine Idee für mich?
Vielen Dank und Gruß
Michael
define set48h DOIF ([Wetterstation:isRaining] ne "yes") (set d_48h.kein.Regen on) DOELSE (set d_48h.kein.Regen off)
attr set48h wait 172800:0
na das ging ja schnell und einfach.... ich werde es direkt mal testen
DANKE!
Oder ohne extra Dummy:
define d_48h.kein.Regen DOIF ([Wetterstation:isRaining] ne "yes") ()
DOELSE ()
attr d_48h.kein.Regen wait 172800:0
attr d_48h.kein.Regen cmdState yes|no
[/quote]
Danke.
Ich warte mal den nächsten Regenschauer ab ob das erste klappt. Danach teste ich noch die 2. Variante
Zitat von: Per am 27 Mai 2019, 15:16:34
Oder ohne extra Dummy:
define d_48h.kein.Regen DOIF ([Wetterstation:isRaining] ne "yes") ()
DOELSE ()
attr d_48h.kein.Regen wait 172800:0
attr d_48h.kein.Regen cmdState yes|no
Das erinnert mich was... ;)
Zitat von: Per am 27 Mai 2019, 15:16:34
Oder ohne extra Dummy:
define d_48h.kein.Regen DOIF ([Wetterstation:isRaining] ne "yes") ()
DOELSE ()
attr d_48h.kein.Regen wait 172800:0
attr d_48h.kein.Regen cmdState yes|no
Was passiert wenn innerhalb der 48h FHEM neu gestartet wird? Der Timer ist dann weg, oder?
Zitat von: Christoph Morrison am 27 Mai 2019, 21:43:34
Was passiert wenn innerhalb der 48h FHEM neu gestartet wird? Der Timer ist dann weg, oder?
Wait-Timer sind nach dem Neustart immer weg und müssen neu gesetzt werden.
Alternative:
DOIF ([09:30|Mo Mi Fr] and [?Wetterstation:isRaining] ne "yes" and [?Wetterstation:isRaining:sec] > 172800) (set 04.06.SW4.02_Sw_01 on-for-timer 600)
attr do always
Das ist ja noch viel besser!
PS: das :sec in Form von ([:sec] < 3600 ) habe ich gleich mal statt eines separaten Watchdogs verwendet. Macht mein DOIF gleich irgendwie einfacher ;)
Hallo,
ich wollte nochmal Rückmeldung geben:
Dass der waitfor beim reboot zurückgesetzt wird ist in meinem Fall nicht so tragisch. Auf jeden fall hat es funktioniert!
Vielen Dank!
Gruß
H-Man
Hallo zusammen,
ich versteh das nicht.
Gestern hat es geregnte, meine HomeMatic Wetterstation ist bei isRaining auf 1 egsprungen - soweit so gut.
mein DOIF mit dem Inhakt
([Wetterstation:isRaining] eq 0) (set d_48h.kein.Regen on) DOELSE (set d_48h.kein.Regen off)
hat aber nicht geschaltet => mein dummy steht nach wie vor auf on :-(
Kann mir jemand den fehler sagen - Danke!
Zitat von: h-man-kl am 04 Juni 2019, 12:57:10Kann mir jemand den fehler sagen - Danke!
Poste ein List, dann sieht man mehr.
Wetterstation:
Internals:
CHANGED
DEF 4B0FE3
FUUID 5c44ac25-f33f-627b-a449-909319ad03cf9617
HmUART_01_MSGCNT 8784
HmUART_01_RAWMSG 05000047AF86704B0FE300000000995A19980000418125
HmUART_01_RSSI -71
HmUART_01_TIME 2019-06-05 06:06:34
HomeMatic_MSGCNT 7161
HomeMatic_RAWMSG E4B0FE3,0000,1482C42C,FF,FFAE,AE86704B0FE300000000995A19980000418123
HomeMatic_RSSI -82
HomeMatic_TIME 2019-06-05 06:04:08
IODev HmUART_01
LASTInputDev HmUART_01
MSGCNT 15945
NAME Wetterstation
NOTIFYDEV global
NR 764
NTFY_ORDER 50-Wetterstation
STATE T: 15.3 H: 90 W: 0 R: 1932.84 IR: 0 WD: 325 WDR: 0 S: 129 B: 37
TYPE CUL_HM
chanNo 01
lastMsg No:AF - t:70 s:4B0FE3 d:000000 00995A19980000418125
protLastRcv 2019-06-05 06:06:34
protRcv 8792 last_at:2019-06-05 06:06:34
rssi_at_HmUART_01 cnt:8784 min:-80 max:-68 avg:-72.01 lst:-71
rssi_at_HomeMatic cnt:7161 min:-105 max:-79 avg:-86.08 lst:-82
READINGS:
2019-05-20 14:13:17 Activity alive
2017-05-29 10:27:58 CommandAccepted yes
2017-04-18 16:38:25 D-firmware 1.6
2017-04-18 16:38:25 D-serialNr NEQ0343849
2017-05-29 10:27:58 PairedTo 0x1511AB
2017-05-29 10:12:52 R-burstRx off
2017-04-18 16:40:13 R-pairCentral 0x1511AB
2017-05-29 10:12:53 R-stormLowThresh 5
2017-05-29 10:12:53 R-stormUpThresh 20
2017-05-29 10:12:53 R-sunThresh 50
2017-05-29 10:12:53 R-windSpeedRsltSrc max
2017-05-29 10:27:58 RegL_00. 01:00 02:01 0A:15 0B:11 0C:AB 18:00 00:00
2017-05-29 10:27:59 RegL_01. 05:32 06:14 07:05 0A:01 00:00
2019-06-05 06:06:34 battery ok
2019-06-05 06:06:34 brightness 37
2019-06-05 06:06:34 humidity 90
2019-06-05 06:06:34 isRaining 0
2019-06-05 06:06:34 rain 1932.84
2019-06-05 06:06:34 state T: 15.3 H: 90 W: 0 R: 1932.84 IR: 0 WD: 325 WDR: 0 S: 129 B: 37
2019-06-05 06:06:34 sunshine 129
2019-06-05 06:06:34 temperature 15.3
2019-06-05 06:06:34 windDirRange 0
2019-06-05 06:06:34 windDirection 325
2019-06-05 06:06:34 windSpeed 0
helper:
HM_CMDNR 175
mId 00AE
peerFriend peerAct,peerVirt
peerOpt 1p:THSensor,4:THSensor,p:THSensor
regLst 0,1,1p,4p
rxType 140
supp_Pair_Rep 0
expert:
def 1
det 0
raw 1
tpl 0
io:
newChn +4B0FE3,00,00,00
nextSend 1559707594.67571
rxt 2
vccu VCCU
p:
4B0FE3
00
00
00
prefIO:
HmUART_01
mRssi:
mNo AF
io:
HmUART_01:
-69
-69
HomeMatic:
-82
prt:
bErr 0
sProc 0
q:
qReqConf
qReqStat
role:
chn 1
dev 1
rssi:
at_HmUART_01:
avg -72.0145719489979
cnt 8784
lst -71
max -68
min -80
at_HomeMatic:
avg -86.0854629241727
cnt 7161
lst -82
max -79
min -105
shadowReg:
tmpl:
Attributes:
IODev HmUART_01
IOgrp VCCU:HmUART_01
actCycle 000:10
actStatus alive
autoReadReg 4_reqStatus
event-on-change-reading temperature
expert 2_raw
firmware 1.6
group Klima
model HM-WDS100-C6-O-2
msgRepeat 1
peerIDs 00000000,
room Außenbereich,Garten,Wetter & Verkehr,_CUL_HM
serialNr NEQ0343849
subType THSensor
dummy:
Internals:
CFGFN
DEF 00000FFFFF FF F0
FUUID 5cebc00f-f33f-627b-5b87-b811a18b9d783cf9
IODev FS20.Cube
NAME d_48h.kein.Regen
NR 15248
STATE on
TYPE IT
XMIT 00000fffff
XMITdimdown 00
XMITdimup 00
XMIToff f0
XMITon ff
CODE:
1 00000fffff
READINGS:
2019-05-27 12:53:46 protocol V1
2019-05-29 14:57:39 state on
Attributes:
IODev FS20.Cube
devStateIcon on:rc_GREEN off:rc_RED
group Klima
room Garten,d_dumm
bin gespannt was man daraus lesen können soll....
Gruß
H-Man
event-on-change-reading temperature
Eindeutiger geht es nicht. Kein Event für isRaining
Gut, dass Du ein "list" von Wetterstation gepostet hast. Damit konnte CoolTux sofort einen Fehler finden.
Aber eigentlich war ein "list" des DOIF gemeint. Falls es nach Korrektur von event-on-change-reading immer noch nicht geht, dann bitte auch ein "list" des DOIFs, wenn er deiner Meinung nach nicht im richtigen Zustand ist.
Zitatbin gespannt was man daraus lesen können soll....
In einem "list" sieht man viel mehr als mit einem Copy/Paste des define Befehls:
- man sieht alle Attribute (wie z.B. ein falsches event-on-change-readings, das Ereignisse verhindert). Insbesondere wichtig bei einem DOIF.
- man sieht die Readings und wann die letztens aktualisiert worden sind
- man sieht die Internals, die auch das Verhalten des Devices erklären
- und man sieht alle Helpers
Bei einem DOIF kann man dann sofort sehen, was der Zustand ist, wovon er getriggert wurde, welche Bedingungen waren dabei wahr oder falsch.
Fazit: ein "list" wird nicht umsonst von denjeningen angefordert, die versuchen, dir zu helfen: aus einem list "soll" man viel debug Information auslesen können. Deswegen bei Problemen bitte immer ein "list" der betroffenen Devices posten statt nur:
([09:30|Mo Mi Fr] and [d_48h.kein.Regen] eq "on") (set 04.06.SW4.02_Sw_01 on-for-timer 600)
:-)
na klar.... CoolTux... wer sonst :-)
DANKE!
kleines reading große Wirkung. Ich hab mal das isRaining ergänzt. Mal sehen ob es nun geht.
PERFEKT!
Heute Nacht hat es geregnet und mein DOIF hat genau das gemacht was es soll. Mal sehen ob es in zwei Tagen wieder zurückspringt... sofern es trocken bleibt
Gruß
H-Man
Der Tip mit dem Event-on-Change-reading von CoolTux ist super... da ging bei mir gerade ein ganzer Kronleuchter an... danke dafür !!
Ich lasse meine Beregnung nachts ab 04:00 Uhr laufen.
Dann hat sich der Boden von der Hitze des Vortags abgekühlt, die Chance das Fußgänger von meiner Vorgartenberegnung mitgewässert werden ist geringer, und an sonnigen Tagen wird bei uns um 09:30 Uhr das meiste Wasser schon verdunstet sein, bevor es in den Boden eindringt.... just my 2cents
Zitat von: Bartimaus am 06 Juni 2019, 08:32:25
Ich lasse meine Beregnung nachts ab 04:00 Uhr laufen.
Ich beneide dich. Unsere Nachbarsprinzessin hört die Grillen husten und sogar das sehr leise Klacken eines Gardena-Rasensprengers - vor 7 an Werktagen und 9 am Wochenende ist da nix. Am liebsten hätte sie es, wenn wir wie alle Idioten in der Nachbarschaft brav am frühen Abend anmachen, wo der Boden schön warm ist und die Sonne noch knallt.
</rant>
Isch 'abe gar kaine Gardena-Regner Signor.... sondern Rainbird, und der ist absolut lautlos...
Zitat von: Bartimaus am 06 Juni 2019, 10:34:17
Isch 'abe gar kaine Gardena-Regner Signor.... sondern Rainbird, und der ist absolut lautlos...
Stell dir die Laustärke ungefähr so vor, als würdest du eine dicke Tafel Schokolade brechen ...
Bau Dir die Versenkregner ein, dann sucht sich die Prinzessin am nächsten Tag nen Wolf
Rainbird Versenkregner kann ich auch nur Empfehlen, habe ich auch vor zwei Jahren im Rasen verbuddelt. Tatsächlich fast lautlos.
Hallo,
leider scheint da immernoch etwas nicht gelkappt zu haben.... :-(
bei den letzten Regenschauern wurde immer wieder der Timer verlängert, was mir auch als logisch erscheint. Zuletzt wurde am 12.6. um 10:41 der timer neu geschrieben, demnach hätte heute um 10:41 geschaltet werden müssen. Leider ist mein dummy immernoch auf "off" und das doif steht beim cmd2
Internals:
DEF ([Wetterstation:isRaining] < 1) (set d_48h.kein.Regen on) DOELSE (set d_48h.kein.Regen off)
FUUID 5cebb297-f33f-627b-895b-78ee0bf456b99236
MODEL FHEM
NAME di_es.regnet
NR 1361
NTFY_ORDER 50-di_es.regnet
STATE cmd_2
TYPE DOIF
VERSION 19303 2019-05-01 08:47:16
READINGS:
2019-06-14 11:21:02 Device Wetterstation
2019-06-11 01:37:57 cmd 2
2019-06-11 01:37:57 cmd_event Wetterstation
2019-06-11 01:37:57 cmd_nr 2
2019-06-12 10:41:05 e_Wetterstation_isRaining 0
2019-06-05 07:42:57 mode enabled
2019-06-11 01:37:57 state cmd_2
2019-06-12 10:41:05 wait_timer 14.06.2019 10:41:05 cmd_1 Wetterstation
Regex:
accu:
attr:
wait:
0:
172800
1:
0
condition:
0 ::ReadingValDoIf($hash,'Wetterstation','isRaining') < 1
devices:
0 Wetterstation
all Wetterstation
do:
0:
0 set d_48h.kein.Regen on
1:
0 set d_48h.kein.Regen off
helper:
event temperature: 17.8
globalinit 1
last_timer 0
sleeptimer -1
triggerDev Wetterstation
triggerEvents:
temperature: 17.8
triggerEventsState:
temperature: 17.8
internals:
itimer:
perlblock:
readings:
0 Wetterstation:isRaining
all Wetterstation:isRaining
trigger:
uiState:
uiTable:
Attributes:
alias Sonne oder Regen?
devStateIcon cmd_2:weather_rain_light cmd_1:weather_sun
group Klima
icon helper_doif
room Garten,_doif
wait 172800:0
Hat jemand ne Idee? So komplex ist das doif doch garnicht.
PS: Ich hab auch Rainbird Versenkregner :-)
Wenn ich keinen Denkfehler habe...
Du schaltest, wenn es nicht regnet deinen Dummy auf on (es regnet nicht) und nach 24h auf off (es regnet). Müsste anders herum sein.
Ich würde dies verständlicher definieren.
Wenn es regnet >Dummy "Regen ja" nach 24h "Regen nein" > beregnen
Warum nimmst du nicht die elegante Lösung von Damian?
Zitat von: Damian am 27 Mai 2019, 22:25:38
DOIF ([09:30|Mo Mi Fr] and [?Wetterstation:isRaining] ne "yes" and [?Wetterstation:isRaining:sec] > 172800) (set 04.06.SW4.02_Sw_01 on-for-timer 600)
Wobei ich es für Abbruch bei Regen dahingehend erweitern würde:
DOIF ([09:30|Mo Mi Fr] and [?Wetterstation:isRaining] ne "yes" and [?Wetterstation:isRaining:sec] > 172800)
(set 04.06.SW4.02_Sw_01 on-for-timer 600)
DOELSEIF ([Wetterstation:isRaining] eq "yes" and [04.06.SW4.02_Sw_01] ne "off")
(set 04.06.SW4.02_Sw_01 off)
DOELSEIF ([09:29|Mo Mi Fr])
Letzte Zeile statt do always, kann je nach Wetter ein paar Schaltvorgänge sparen.
@frober:
Ich wollte eine Anzeige, die mir zeigt obe in den letzten 24 NICHT geregnet hat und ich hatte am Anfang etwas zu kompliziert um die Ecke gedacht.
@Per:
warum ich das von Damian nicht nehme? - ich wollte mein eigens gerne am laufen haben.
Auch wenn ich noch nicht verstanden habe warum es nicht geschaltet hat werde ich jetzt mal die Lösung probieren. Danke
Ist halt schon komisch, dass mir cmd1 angezeigt wird wenn ich auf set ... checkall klicke.
Naja Versuch macht kluch
Gruß
H-Man
Dein doif setzt den Timer wenn es NICHT regnet zurück, also dummy on (cmd1) und nach 48h auf off (cmd2).
Wenn mehrere Regenschauer waren, wie du schreibst, dann passierte bei Regen nichts, nach dem Regen wurde der Timer zurückgesetzt.
Probiere israining = 1
Nachtrag: vergiss es, ich habe den Timer falsch interpretiert
Hallo zusammen,
ich habe mein DOIF
([Wetterstation:isRaining] eq "0") (set d_48h.kein.Regen on) DOELSE (set d_48h.kein.Regen off)
immer noch nicht ans laufen bekommen, dabei ist das doch nur eine Zeile :-(
...und werde wohl jetzt doch das andere Beispiel testen.
Aber kann mir zum besseren Verständnis mal jemand sagen was die "?" vor Wetterstation sollen und was es mit dem "sec" aufsich haben soll?
Die Homematic Wetterstation kann nur isRaining 1 oder 0
DOIF ([09:30|Mo Mi Fr] and [?Wetterstation:isRaining] ne "yes" and [?Wetterstation:isRaining:sec] > 172800) (set 04.06.SW4.02_Sw_01 on-for-timer 600)
Danke!
Wenn Du in der Direkthilfe zu DOIF nach Fragezeichen oder [? und :sec suchst, dann findest Du die Erklärungen.
Die Direkthilfe findest in der Detailansicht unter dem Link Device specific help.