Ein freundliches Hallo an vielen Experten hier.
Ich habe ein Problem mit folgender DOIF:
(set Kueche_Rollladen pct 90)\
\
DOELSEIF ([Kueche_Rollladen:AutoStatus] eq "unten" and [Kueche.Lampe] eq "on" and [Kueche.Fenstersensor] eq "closed") \
(set Kueche_Rollladen pct 90)\
\
DOELSEIF ([Kueche_Rollladen:AutoStatus] eq "unten" and [Kueche.Lampe] eq "on" and [Kueche.Fenstersensor] ne "open") \
(set Kueche_Rollladen up)\
\
DOELSEIF ([Kueche_Rollladen:AutoStatus] eq "unten" and [Kueche.Lampe] eq "off" and [Kueche.Fenstersensor] ne "closed") \
(set Kueche_Rollladen pct 20)\
\
DOELSEIF ([Kueche_Rollladen:AutoStatus] eq "unten" and [Kueche.Lampe] eq "off" and [Kueche.Fenstersensor] eq "closed") \
(set Kueche_Rollladen down)
attr di_KuecheRollladen wait 0 : 120
Wenn ich das Reading Kueche_Rollladen:AutoStatus von "oben" auf "unten" ändere startet das DOIF nicht.
Erst wenn ich unmittelbar danach FHEM mit "shutdown restart" neu starte verarbeitet es das Event.
Ich habe vieles probiert aber keinen Hinweise gefunden was da los ist.
Ich hoffe, dass von Euch jemand Rat weis.
Viele Grüße
Dieter
Hallo,
Viel zu wenig Informationen. Ein list aller beteiligten Devices, ein Logauszug, Hast Du mal über den Eventmonitor geschaut ob auch ein Event ausgelöst wird. Kommt beim DOIF überhaupt etwas an.
Löse mal aus und dann mache ein list vom DOIF.
Grüße
Danke.
hier die Antwort auf liste Kueche_Rolladen
Internals:
DEF 234B89
HMLAN1_MSGCNT 2
HMLAN1_RAWMSG R2825F680,0001,17ACC457,FF,FFCD,02A410234B892BAC750601C8004B
HMLAN1_RSSI -51
HMLAN1_TIME 2016-04-18 08:54:17
INTRIGGER 1
IODev HMLAN1
LASTInputDev HMLAN1
MSGCNT 2
NAME Kueche_Rollladen
NR 29
NTFY_ORDER 50-Kueche_Rollladen
NTFY_TRIGGERTIME 2016-04-18 08:54:04
STATE A: unten; S: yes
TYPE CUL_HM
lastMsg No:02 - t:10 s:234B89 d:2BAC75 0601C8004B
protLastRcv 2016-04-18 08:54:17
protSnd 2 last_at:2016-04-18 08:54:17
protState CMDs_done
rssi_HMLAN1 min:-75 cnt:1 max:-75 lst:-75 avg:-75
rssi_at_HMLAN1 max:-51 lst:-51 cnt:2 min:-51 avg:-51
CHANGED:
sunExposure: yes
recentStateType: info
deviceMsg: up (to VCCU)
level: 100
motor: stop:up
pct: 100
up
timedOn: down
AutoStatus: oben
sunExposure: yes
AutoStatus: oben
sunExposure: yes
AutoStatus: oben
sunExposure: yes
AutoStatus: oben
sunExposure: yes
AutoStatus: oben
sunExposure: yes
AutoStatus: oben
AutoStatus: unten
AutoStatus: oben
AutoStatus: unten
AutoStatus: oben
AutoStatus: unten
AutoStatus: oben
AutoStatus: unten
CHANGEDWITHSTATE:
Readings:
2016-04-18 09:25:39 AutoStatus unten
2016-04-18 08:21:05 CommandAccepted yes
2016-04-05 09:11:11 D-firmware 2.2
2016-04-05 09:11:11 D-serialNr KEQ0714217
2016-04-11 16:20:35 PairedTo 0x2BAC75
2015-06-09 10:59:18 R-driveDown 21 s
2015-06-09 10:59:18 R-driveTurn 0.5 s
2015-06-09 10:59:18 R-driveUp 21 s
2015-06-09 10:59:17 R-pairCentral 0x2BAC75
2015-06-09 10:59:18 R-sign off
2016-04-11 16:20:35 RegL_00. 02:01 0A:2B 0B:AC 0C:75 15:FF 18:00 00:00
2016-04-11 16:20:36 RegL_01. 08:00 09:00 0A:00 0B:00 0C:D2 0D:00 0E:D2 0F:05 10:00 30:06 57:06 00:00
2016-03-20 19:42:12 autolevel 0
2016-04-18 08:54:17 deviceMsg on (to VCCU)
2016-04-18 08:54:17 level 100
2016-04-13 20:40:04 levelMissed desired:0
2016-04-18 08:54:17 motor stop:on
2016-04-18 08:54:17 pct 100
2016-04-05 08:26:28 powerOn 2016-04-05 08:26:28
2016-04-18 08:54:17 recentStateType info
2016-04-18 08:54:17 state on
2016-04-18 09:26:00 sunExposure yes
2016-04-18 08:54:17 timedOn off
Helper:
HM_CMDNR 2
cSnd ,012BAC75234B89010E
mId 006A
rxType 1
Dir:
cur stop
Expert:
def 1
det 0
raw 1
tpl 0
Io:
newChn +234B89,00,00,00
nextSend 1460962457.25731
prefIO
rxt 0
vccu
p:
234B89
00
00
00
Mrssi:
mNo 02
Io:
HMLAN1 -49
Prt:
bErr 0
sProc 0
Rspwait:
Q:
qReqConf
qReqStat
Role:
chn 1
dev 1
prs 1
Rpt:
IO HMLAN1
flg A
ts 1460962457.04198
ack:
HASH(0x24a4270)
0280022BAC75234B8900
Rssi:
Hmlan1:
avg -75
cnt 1
lst -75
max -75
min -75
At_hmlan1:
avg -51
cnt 2
lst -51
max -51
min -51
Attributes:
IODev HMLAN1
alias Küche.Rollladen
autoReadReg 5_readMissing
devStateIcon up:fts_shutter_10@green down:fts_shutter_100@black 9\d.*:fts_shutter_10 8\d.*:fts_shutter_20 7\d.*:fts_shutter_30 6\d.*:fts_shutter_40 5\d.*:fts_shutter_50 4\d.*:fts_shutter_60 3\d.*:fts_shutter_70 2\d.*:fts_shutter_80 1\d.*:fts_shutter_90 0\d.*:fts_shutter_100
directSunlight -100:-45,8:90
event-on-change-reading .*
eventMap on:up off:down
expert 2_full
firmware 2.2
fp_Erdgeschoss 44,298,0,,
group Rollos
model HM-LC-Bl1PBU-FM
pct50 66
peerIDs 00000000,
room Home,Küche
serialNr KEQ0714217
sortby 200
stateFormat A: AutoStatus; S: sunExposure
subType blindActuator
userattr pct50 Hoehe directSunlight
webCmd pct
Wenn ich "setreading Kueche_Rollladen AutoStatus oben" oder "setreading Kueche_Rollladen AutoStatus unten" als Kommando eingebe wird im Eventmonitor nichts angezeigt.
Was ist mit list vom DIOF? Muss ich verstehen warum Du setreading verwendest? Wieso Du also ausgerechnet in ein Device noch ein Reading auf die Art reinschreiben willst?
Du hast ein pct von 100, daraus ergibt sich zwangsläufig ein unten.
Hier die Antwort auf list di_KuecheRolllade:
Internals:
DEF ([Kueche_Rollladen:AutoStatus] eq "unten" and [Kueche.Lampe] eq "on" and [Kueche.Fenstersensor] eq "closed" and [?06:30-19:30])
(set Kueche_Rollladen pct 90)
DOELSEIF ([Kueche_Rollladen:AutoStatus] eq "unten" and [Kueche.Lampe] eq "on" and [Kueche.Fenstersensor] eq "closed")
(set Kueche_Rollladen pct 90)
DOELSEIF ([Kueche_Rollladen:AutoStatus] eq "unten" and [Kueche.Lampe] eq "on" and [Kueche.Fenstersensor] ne "open")
(set Kueche_Rollladen up)
DOELSEIF ([Kueche_Rollladen:AutoStatus] eq "unten" and [Kueche.Lampe] eq "off" and [Kueche.Fenstersensor] ne "closed")
(set Kueche_Rollladen pct 20)
DOELSEIF ([Kueche_Rollladen:AutoStatus] eq "unten" and [Kueche.Lampe] eq "off" and [Kueche.Fenstersensor] eq "closed")
(set Kueche_Rollladen down)
NAME di_KuecheRollladen
NR 176
NTFY_ORDER 50-di_KuecheRollladen
STATE cmd_5
TYPE DOIF
Readings:
2016-04-18 08:54:16 Device Kueche.Lampe
2016-04-18 08:21:04 cmd_event Kueche_Rollladen
2016-04-18 08:21:04 cmd_nr 5
2016-04-18 08:54:16 e_Kueche.Lampe_STATE off
2016-04-18 08:54:04 e_Kueche_Rollladen_AutoStatus unten
2016-04-18 08:21:04 state cmd_5
2016-04-18 08:54:00 timer_1_c1 19.04.2016 06:30:00
2016-04-18 08:54:00 timer_2_c1 18.04.2016 19:30:00
2016-04-18 08:54:00 wait_timer no timer
Condition:
0 ReadingValDoIf($hash,'Kueche_Rollladen','AutoStatus','','',AttrVal($hash->{NAME},'notexist',undef)) eq "unten" and InternalDoIf($hash,'Kueche.Lampe','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) eq "on" and InternalDoIf($hash,'Kueche.Fenstersensor','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) eq "closed" and DOIF_time($hash,$hash->{realtime}{0},$hash->{realtime}{1},$wday,$hms,"")
1 ReadingValDoIf($hash,'Kueche_Rollladen','AutoStatus','','',AttrVal($hash->{NAME},'notexist',undef)) eq "unten" and InternalDoIf($hash,'Kueche.Lampe','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) eq "on" and InternalDoIf($hash,'Kueche.Fenstersensor','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) eq "closed"
2 ReadingValDoIf($hash,'Kueche_Rollladen','AutoStatus','','',AttrVal($hash->{NAME},'notexist',undef)) eq "unten" and InternalDoIf($hash,'Kueche.Lampe','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) eq "on" and InternalDoIf($hash,'Kueche.Fenstersensor','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) ne "open"
3 ReadingValDoIf($hash,'Kueche_Rollladen','AutoStatus','','',AttrVal($hash->{NAME},'notexist',undef)) eq "unten" and InternalDoIf($hash,'Kueche.Lampe','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) eq "off" and InternalDoIf($hash,'Kueche.Fenstersensor','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) ne "closed"
4 ReadingValDoIf($hash,'Kueche_Rollladen','AutoStatus','','',AttrVal($hash->{NAME},'notexist',undef)) eq "unten" and InternalDoIf($hash,'Kueche.Lampe','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) eq "off" and InternalDoIf($hash,'Kueche.Fenstersensor','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) eq "closed"
Days:
Devices:
0 Kueche_Rollladen Kueche.Lampe Kueche.Fenstersensor
1 Kueche_Rollladen Kueche.Lampe Kueche.Fenstersensor
2 Kueche_Rollladen Kueche.Lampe Kueche.Fenstersensor
3 Kueche_Rollladen Kueche.Lampe Kueche.Fenstersensor
4 Kueche_Rollladen Kueche.Lampe Kueche.Fenstersensor
all Kueche_Rollladen Kueche.Lampe Kueche.Fenstersensor
Do:
0:
0 set Kueche_Rollladen pct 90
1:
0 set Kueche_Rollladen pct 90
2:
0 set Kueche_Rollladen up
3:
0 set Kueche_Rollladen pct 20
4:
0 set Kueche_Rollladen down
Helper:
event deviceMsg: off (to VCCU),level: 0,pct: 0,off,timedOn: off
globalinit 1
last_timer 2
sleeptimer -1
timerdev Kueche.Lampe
timerevent deviceMsg: off (to VCCU),level: 0,pct: 0,off,timedOn: off
triggerDev Kueche.Lampe
timerevents:
deviceMsg: off (to VCCU)
level: 0
pct: 0
off
timedOn: off
triggerEvents:
deviceMsg: off (to VCCU)
level: 0
pct: 0
off
timedOn: off
Internals:
0 Kueche.Lampe:STATE Kueche.Fenstersensor:STATE
1 Kueche.Lampe:STATE Kueche.Fenstersensor:STATE
2 Kueche.Lampe:STATE Kueche.Fenstersensor:STATE
3 Kueche.Lampe:STATE Kueche.Fenstersensor:STATE
4 Kueche.Lampe:STATE Kueche.Fenstersensor:STATE
all Kueche.Lampe:STATE Kueche.Fenstersensor:STATE
Interval:
0 -1
1 0
Itimer:
Localtime:
0 1461040200
1 1461000600
Readings:
0 Kueche_Rollladen:AutoStatus
1 Kueche_Rollladen:AutoStatus
2 Kueche_Rollladen:AutoStatus
3 Kueche_Rollladen:AutoStatus
4 Kueche_Rollladen:AutoStatus
all Kueche_Rollladen:AutoStatus
Realtime:
0 06:30:00
1 19:30:00
Regexp:
0:
1:
2:
3:
4:
All:
State:
Time:
0 06:30:00
1 19:30:00
Timecond:
0 0
1 0
Timer:
0 0
1 0
Trigger:
Triggertime:
1461000600:
localtime 1461000600
Hash:
1461040200:
localtime 1461040200
Hash:
Attributes:
wait 0 : 120
100% bedeuten bei meinen Rolläden immer oben.
Ich versuche zu verstehen wofür Dein AutoStatus ausgerechnet als Reading da ist. Stellst Du den Status des Readings nur zu Testzwecken von Hand oder soll das in der tat so sein.
Wenn das generell von Hand sein soll, dann meine Empfehlung.
Mach einen Dummy den Du AutoStatus nennst und wo Du mit setList unten und oben auswählen kannst.
Einen direkten Fehler kann ich so erstmal nicht erkennen in Deiner Def.
cmd_event Kueche_Rollladen
2016-04-18 08:54:04 e_Kueche_Rollladen_AutoStatus unten
Zu mindest triggert er anscheinend Dein Kueche_Rollladen_AutoStatus
Hallo,
das reading AutoStatus wird von einer anderen DOIF für alle Rollläden in Abhängigkeit von Zeit, Dunkelheit, Urlaub etc gestzt. Das funtioniert auch einwandfrei.
Für jeden Rolladen gibt es eine DOIF die wiederum in Abhängigkeit von AutoStaus, Beleuchtung, Sonnenstand, Innentemperatur, Fensteröffnung, etc den Rollladen in die entsprechende Position fährt. Letzteres funktioniert eben nur nach einen "shutdown restart".
Ah ok. Verstehe. Wie gesagt, getriggert wird anscheinend korrekt. Und geschalten hat er ja wohl auch. cmd5 stand da vorhin
Hallo und Danke.
Ich habe jetzt folgendes probiert: Ich habe das Reading AutoStatus in eine neue Dummy-Variable (Als reading) geschrieben. Eine Veränderung dieses Readings triggert das nachfolgende DOIF ordnungsgemäß. Ich werde jetzt wohl für jeden Rollladen noch eine Dummyvariable anlegen. Das wollte ich eigentlich vermeiden weil das System so immer unübersichtlicher wird.
Die Ursache liegt wohl bei FHEM. Offensichtlich wird auf selbst angelegte Reading nicht so getriggert wie auf die natürlich vorhanden. Ich werde versuchen das Problem einzukreisen um es nochmal zu posten.
Nochmals viele Dank.