Hallo,
ich fürchte ich benötige einen kleinen Denkanstoß bzw liegt wahrscheinlich ein Verständnisfehler vor.
Situation:
Ich habe auf dem Flur ein Xiaomi Gateway dessen dezenten RGB Ring ich als Statuslampe für diverse Zustände benutzen möchte. Derzeit sind es nur zwei - ein "Postmodus" bei dem es sich um einen Dummy Switch handelt und ein Türsensor der melden soll wenn der Kühlschrank offen gelassen wurde.
Einzeln funktionieren diese wunderbar
([ku_kuehlschranktuer:state] eq "open") (set MiSmartHome rgb FF0000, set MiSmartHome pct 100)
DOELSE (set MiSmartHome off)
([Postmodus] eq "on") (set MiSmartHome rgb FFEE00, set MiSmartHome pct 20)
DOELSE (set MiSmartHome off)
Nun möchte ich dass wenn der Postmodus aktiv ist und der Kühlschrank derweile geöffnet / geschlossen wurde die Lampe wieder zurück zum gelben Licht des Postmodus wechselt und sich nicht komplett ausschaltet wie sonst.
Also dachte ich dass es mit
([ku_kuehlschranktuer:state] eq "open") (set MiSmartHome rgb FF0000, set MiSmartHome pct 100)
DOELSEIF ([Postmodus] eq "on") (set MiSmartHome rgb EEFF00, set MiSmartHome pct 20)
DOELSE ([Postmodus] eq "off") (set MiSmartHome off)
getan sein müsste - Pustekuchen :-[
Dann hatte ich es mal mit
DOELSEIF ([Postmodus] eq "on" && [ku_kuehlschranktuer:state] eq "close") (set MiSmartHome rgb EEFF00, set MiSmartHome pct 20)
probiert aber das funktioniert auch nicht.
Wo liegt der Denkfehler?
Ich habe im Forum Beispiele gefunden wo vor der Veränderung der Zustand der Lampe in Variablen geschrieben und anschließend zurück gewechselt wird, aber dies möchte ich eigentlich vermeiden da durchaus auch mal beide Zustände gleichzeitig verändert werden können.
___
Hier noch das List der beteiligten Devices
Internals:
DEF 158d0001aaa57a sensor_magnet.aq2 MiSmartHome
IODev MiSmartHome
LASTInputDev MiSmartHome
MODEL sensor_magnet.aq2
MSGCNT 74
MiSmartHome_MSGCNT 74
MiSmartHome_TIME 2017-11-25 13:02:27
NAME ku_kuehlschranktuer
NR 64
SID 158d0001aaa57a
STATE close
TYPE XiaomiSmartHome_Device
VERSION 1.12
READINGS:
2017-11-25 11:07:52 battery 3.035
2017-11-25 11:07:52 batterystate ok
2017-11-25 11:07:52 heartbeat 158d0001aaa57a
2017-11-25 13:02:27 no_close 0
2017-11-25 13:02:27 state close
Attributes:
IODev MiSmartHome
devStateIcon open:fts_door_open@red close:fts_door@green
event-on-change-reading .*
room MiSmartHome
timestamp-on-change-reading state
Internals:
DEF 192.168.178.205
FD 21
FHEMIP 192.168.178.217
GATEWAY 192.168.178.205
GATEWAY_IP 192.168.178.205
NAME MiSmartHome
NOTIFYDEV global
NR 63
NTFY_ORDER 50-MiSmartHome
SID 34ce00853c8c
STATE off
TYPE XiaomiSmartHome
VERSION 1.12
READINGS:
2017-11-25 13:02:57 RGB 0
2017-11-25 13:05:53 heartbeat 34ce00853c8c
2017-11-25 13:02:57 illumination 849
2017-11-23 03:19:51 password dbc8jmmivv3i4w62
2017-11-25 13:02:23 pct 100
2017-11-25 13:02:27 proto_version 1.0.9
2017-11-25 13:02:27 rgb 000000
2017-11-23 02:57:55 ringtone 21
2017-11-25 13:02:27 state off
2017-11-25 13:05:53 token TMrmhB9Rxkm22lrv
2017-11-23 02:57:55 volume 10
helper:
ConnectionState Connected
host 192.168.178.205
prevrgbvalue 000000
Attributes:
devStateIcon {Color_devStateIcon(ReadingsVal($name,"rgb","000000"))}
room MiSmartHome
webCmd pct:rgb:rgb ff0000:rgb 00ff00:rgb 0000ff:on:off
Internals:
CFGFN
NAME Postmodus
NR 3480
STATE off
TYPE dummy
READINGS:
2017-11-25 12:51:32 state off
Attributes:
room flur
webCmd on:off
Für etwas Hilfe oder einen Denkanstoß wo der Fehler liegt wäre ich sehr dankbar.
Hi,
dies geht schon mal gar nicht -> DOELSE ([Postmodus] eq "off") (set MiSmartHome off)
DOELSE kennt keine Bedingung :-X
Du musst einfach die Kühlschrank Tür komplett abfragen:
Wenn Kühlschrank offen dann Lampe an
Wenn Kühlschrank zu und Post Modus an dann Lampe gelb
Wenn Kühlschrank zu und Post Modus aus dann Lampe aus.
DOIF mit zweimal DOELSEIF dahinter
Gruß Otto
Du müsstest jede Möglichkeit abbilden:
define Xiaomi_DOIF DOIF ([ku_kuehlschranktuer:state] eq "open" and [Postmodus] ne "off")(set MiSmartHome rgb FF0000, set MiSmartHome pct 100) DOELSEIF ([ku_kuehlschranktuer:state] eq "open" and [Postmodus] eq "off")")(set MiSmartHome rgb FF00FF, set MiSmartHome pct 50)DOELSEIF ([ku_kuehlschranktuer:state] ne "open" and [Postmodus] ne "off")")(set MiSmartHome rgb FFEE00, set MiSmartHome pct 20)DOELSE (set MiSmartHome off)
attr Xiaomi_DOIF do always
Vielleicht geht's auch einfacher...
Gruß Jens
Sorry wegen des doppelten Posts.
Danke, dann werde ich nachher mal versuchen alle denkbaren Zustände zu integrieren.
Zitat von: Otto123 am 25 November 2017, 13:41:29
DOELSE kennt keine Bedingung :-X
Stimmt, blöder Fehler von mir. Das muss in der späten Nacht irgendwann herausgekommen sein als ich am DOELSEIF verzweifelte und mich wunderte warum das nicht funktioniert :-X :D
Nochmals Danke für die Hilfe - nun funktioniert alles wie gewünscht. Mein grundsätzlicher Fehler war wohl auch dass ich zwei DOIF hatte - einen für die Kühlschranktür und einen für den Postmodus.
Mit obigen Beispiel von Euch funktioniert es nun wunderbar - wieder etwas gelernt :)