bin noch recht neu. habe folgendes problem, die 2. bedingung wird nicht ausgelöst (überlesen) auszug aus der fhem DEF
steuerung ist dummy schalter mit 3 zuständen
" ([steuerung] eq "on") (set pumpe on, set ventil on)
DOELSEIF ([steuerung] eq "off") (set pumpe off, set ventil off)
DOELSEIF ([steuerung] eq "auto" and ([SolarDiff]>[Hysterese:state])) (set pumpe on, set ventil on)"
also das 1. doelseif funktioniert nicht. auch wenn ich alle 3 bedingungen durchtausche um zu checken ob es an den bedingungen liegt..(unabhängig von der bedingung wird immer das markierte doelseif also die 2.bedingung nicht ausgeführt obwohl die voraussetzungen stimmen)
hier das device listing
Internals:
DEF ([steuerung] eq "on") (set pumpe on, set ventil on) DOELSEIF ([steuerung] eq "off") (set pumpe off, set ventil off) DOELSEIF ([steuerung] eq "auto" and ([SolarDiff]>[Hysterese:state])) (set pumpe on, set ventil on)
FUUID 600d963e-f33f-f419-d130-b821b2fd8220ef79
MODEL FHEM
NAME di_SOLAR
NOTIFYDEV Hysterese,global,steuerung,SolarDiff
NR 41
NTFY_ORDER 50-di_SOLAR
STATE cmd_3
TYPE DOIF
VERSION 23466 2021-01-03 17:14:46
READINGS:
2021-01-26 13:12:05 Device steuerung
2021-01-26 13:12:00 cmd 3
2021-01-26 13:12:00 cmd_event steuerung
2021-01-26 13:12:00 cmd_nr 3
2021-01-26 13:12:04 e_SolarDiff_STATE 14.1
2021-01-26 13:12:05 e_steuerung_STATE off
2021-01-26 12:41:45 mode enabled
2021-01-26 13:12:00 state cmd_3
2021-01-26 13:12:05 wait_timer 26.01.2021 13:15:05 cmd_2 steuerung
Regex:
accu:
cond:
Hysterese:
2:
state ^Hysterese$:^state:
SolarDiff:
0:
1:
2:
&STATE ^SolarDiff$
steuerung:
0:
&STATE ^steuerung$
1:
&STATE ^steuerung$
2:
&STATE ^steuerung$
attr:
cmdState:
wait:
0:
0
1:
180
waitdel:
condition:
0 ::InternalDoIf($hash,'steuerung','STATE') eq "on"
1 ::InternalDoIf($hash,'steuerung','STATE') eq "off"
2 ::InternalDoIf($hash,'steuerung','STATE') eq "auto" and (::InternalDoIf($hash,'SolarDiff','STATE')>::ReadingValDoIf($hash,'Hysterese','state'))
do:
0:
0 set pumpe on, set ventil on
1:
0 set pumpe off, set ventil off
2:
0 set pumpe on, set ventil on
3:
helper:
DEVFILTER ^global$|^Hysterese$|^SolarDiff$|^steuerung$
NOTIFYDEV global|Hysterese|SolarDiff|steuerung
event off
globalinit 1
last_timer 0
sleepdevice steuerung
sleepsubtimer 0
sleeptimer 1
timerdev steuerung
timerevent off
triggerDev steuerung
timerevents:
off
timereventsState:
state: off
triggerEvents:
off
triggerEventsState:
state: off
internals:
all steuerung:STATE SolarDiff:STATE
perlblock:
readings:
all Hysterese:state
trigger:
uiState:
uiTable:
Attributes:
wait 0:180
Internals:
FUUID 600c34ac-f33f-f419-b839-fea94760d737a296
NAME steuerung
NR 37
STATE off
TYPE dummy
READINGS:
2021-01-26 13:12:05 state off
Attributes:
room Pool
setList state:auto,on,off
webCmd auto:on:off
Hallo,
bitte beachte das https://forum.fhem.de/index.php/topic,71806.0.html
Poste in deinem Fall bitte ein list möglichst in dem Zustand wo Du meinst es funktioniert nicht.
Ein list steuerung wäre auch noch gut. Mit den bisherigen Information kann man kaum Ideen haben.
Gruß Otto
in diesem falle das ausschalten des ventils und pumpe was nicht geht.
tausche ich das gegen bspw. einschalten an diese stelle, dann klappt alles andere bis auf das einschalten. also immer die mittlere bedingung
Attribut do always setzen.
Ich sehe mal zwei Dinge:
Code-Tags fehlen!
Zitat2021-01-26 13:12:05 e_steuerung_STATE off
2021-01-26 12:41:45 mode enabled
2021-01-26 13:12:00 state cmd_3
2021-01-26 13:12:05 wait_timer 26.01.2021 13:15:05 cmd_2 steuerung
Das DOIF war im cmd_3, dann kam steuerung off, jetzt würde er 180 sec warten und 13:15:05 auf cmd_2 gehen? Das mit den 180 sec warten war nicht so gewollt?
Irgendwas passt da nicht.
Man sieht den Wait timer, aber es ist kein wait Attribut gesetzt?
Wie Otto sagt, bitte ein List in Code Tags im Fehlerfall.
Meine Vermutung des fehlenden do always bleibt aber erstmal. :-)
ZitatMan sieht den Wait timer, aber es ist kein wait Attribut gesetzt?
doch der ist
Attributes:
wait 0:180
Stimmt.
Das sind die Lists vom Dummy und vom DOIF.
wait ist drin. hab ich übersehen.
also das mit dem wait timer ist so gewollt. alle 3 minuten soll eine aktion erfolgen, solange der status unverändert bleiben. im fhem room sehe ich ja die geltenden bedingungen sobald ich den dummy schalte auch vor ablauf des wait timers. das klappt wie gesagt bei allen kombinationen sofort, nur eben beim 2. nicht
do always bewirkt was? das pack ich direkt ins doif modul?
edit---- das do always hat nicht geholfen
wie ist das mit dem list code tag gemeint?
Zitat von: vilguy am 26 Januar 2021, 15:30:36
wie ist das mit dem list code tag gemeint?
Steht doch in meinem Link? Was ist da unverständlich?
ZitatFür Code, logausgaben etc... immer code Tags (das # im Editor über den Smilies) verwenden
Also der wait Timer bewirkt, dass die zweite Aktion (also cmd_2) erst nach 3 Minuten ausgeführt wird. Wenn das so gewollt ist - was ist jetzt nicht in Ordnung?
dann habe ich das mit dem timer missverstanden. ich möchte dass das doifmodul alle 3 minuten ausgeführt wird, neu auf bedingungen prüft und den neuen oder alten schaltstatus für die nächsten 3 minuten beibehält und danch das ganze wieder von vorn. wie mache ich das?
habe den wait timer weggenommen, jetzt führt er auch alle bedingungen aus *danke dafür*
edit
habe es mit etwas probieren hinbekommen. vielen dank.
allerdings habe ich jetzt das do always wieder rausgenommen. was hatte das nochmal bewirkt? ich steuer das jetzt durch den wait timer 0:0:180 was sogar noch besser ist.
da benötige ich den do always doch nichtz oder
Wenn Du etwas zyklisch ausführen willst steht dazu dies in der Doku:
https://fhem.de/commandref_DE.html#DOIF_Zeitangaben_nach_Zeitraster_ausgerichtet
Ich denke, dass Dein Denkansatz aber "falsch" ist. Aber vielleicht hat jemand der Solarsteuerungen gemacht hat hier eine gute Idee. Vielleicht hättest Du diese spezielle DOIF Frage auch besser im DOIF Unterforum gestellt :)