Denkanstoss benötigt - Status LED (RGB) mit mehreren Zuständen

Begonnen von leif, 25 November 2017, 13:06:51

Vorheriges Thema - Nächstes Thema

leif

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.

Otto123

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
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

JensS

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.
Debian auf APU2C4, HM-CFG-USB2, SIGNALduino, HM-ES-PMSw1-Pl, TFA 30.3121, TFA 30.3125, ITS-150, PIR-5000, configurable Firmata USB & LAN, 1-wire: DS-18B20, DS-18S20, DS-2408, DS-2413, diverse I2C-Komponenten, zigbee2mqtt, ESPEasy etc.

leif

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


leif

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  :)