Denkblockade bei IF-Bedingung -

Begonnen von kblc, 29 April 2017, 20:20:30

Vorheriges Thema - Nächstes Thema

kblc

Guten Abend,

ich habe wieder eine Frage. Es geht um eine Heizungssteuerung mit eigenen Sensoren (Firmata). Der Sensor soll einen Wert liefern und bei einem bestimmten soll dann eine Aktion ausgeführt werden.

Aber nur so viel am Rande.

Meine Frage bezieht sich erst mal nur auf einen kleinen Bereich meines Vorhabens:

Ich habe mehrere Dummys zum testen programmiert:

  • Schalter01
  • Schalter02 (wird für die Frage nicht gebraucht)
  • Slider1

Wenn ich den Sliderbutton bewege, ändert sich in Readings das state. Nun möchte ich dieses state hernehmen und eine if Bedingung dazu schreiben, die den Schalter01 Dummy einschaltet.
Ich habe einen Code geschrieben, aber der geht nicht.
Kann mir wieder mal jemand bei meinen Denkfehler helfen? Ich würde gerne verstehen, was ich schon wieder falsch gemacht habe.

Hier der Code:

define Schalter01 dummy
attr  Schalter01 room Firmata
attr Schalter01  webCmd on:off

define Schalter02 dummy
attr  Schalter02 room Firmata
attr Schalter02  webCmd on:off

define Slider1 dummy
attr Slider1 alias Heizung
attr Slider1 eventMap on:100% off:0%
#attr Slider1 fp_Wohnzimmer 353,161,2,dy_SZ_Heizung_Slider,
#attr Slider1 group Heizungsregelung
attr Slider1 room Firmata
attr Slider1 setList state:slider,0,0.5,100
attr Slider1 sortby 01
attr Slider1 webCmd state

define Schalter_Notify notify Slider1:state:.* {\
  if (ReadingsVal("Slider1", "state", "") >= "35" && ReadingsVal("Schalter01", "state", "off") eq "off")  {\
    fhem("set Schalter01 on");;\
  }\
  else {\
    if (ReadingsVal("Slider1", "state", "") < "35" && ReadingsVal("Schalter01", "state", "off") eq "off")  {\
  fhem("set Schalter01  off");;\
}\
   }\
}


Vielen herzlichen Dank

Kai aus Oberfranken
SPS, Arduino, Controllino, Sensortechnik, Elektronik

Thorsten Pferdekaemper

Hi,
vermutlich triggert das gar nicht weil im Event das Wort "state" gar nicht vorkommt.
Also entweder das state rausnehmen, oder beim notify das Attribut addStateEvent setzen.
...oder aber mit richtigen Readings arbeiten und nicht mit state.
Gruß,
   Thorsten
FUIP

kblc

Vielen Dank für die schnelle Antwort.

Ja danke mit dem Attribut addStateEvent funktioniert es. Super! Das ist echt gut.

Ich muss trotzdem eine Verständnisfrage stellen: 
Aber unter Readings kommt doch state vor, oder schaue ich da verkehrt? (siehe Bild)

Kai
SPS, Arduino, Controllino, Sensortechnik, Elektronik

Thorsten Pferdekaemper

Zitat von: kblc am 29 April 2017, 23:47:17Ich muss trotzdem eine Verständnisfrage stellen: 
Aber unter Readings kommt doch state vor, oder schaue ich da verkehrt? (siehe Bild)
Du hast Recht, das kommt vor. Aus irgendwelchen Gründen (Abwärtskompatibilität?) wird aber der Namen des Readings "state" selbst standardmäßig aus Events (etc.) entfernt. Wenn es irgendwie geht, dann verwende ich das Reading state nicht und würde das auch niemandem empfehlen. D.h. wenn es ein zu state alternatives Reading (wie z.B. level) gibt, dann ist das oft vorzuziehen.
Gruß,
   Thorsten 
FUIP

kblc

Vielen Dank Thorsten. Das war wieder mal ein AHA-Moment für mich. Super.  :)
SPS, Arduino, Controllino, Sensortechnik, Elektronik