HM Fensterkontakt magnetisch und Drehgriff

Begonnen von ahstax, 05 November 2019, 20:42:42

Vorheriges Thema - Nächstes Thema

ahstax

Hallo,

an einem Fenster sind zwei HM Fensterkontakte. Einer magnetisch, einer am Drehgriff.

Es sollen je nach Kombination der Zustände der beiden unterschiedliche Aktionen erfolgen, die in diesem Notify programmiert sind:

(FK.HM.Bad.unten.Sensor.*):.* {
if ( ReadingsVal('FK.HM.Bad.unten.Sensor.Dreh', 'state', 'undef') eq 'open'){
fhem ("set FK.HM.Bad.unten.Zustand.dummy openSchwenk");
}
if (( ReadingsVal('FK.HM.Bad.unten.Sensor.Dreh', 'state', 'undef') eq 'tilted') && ( ReadingsVal('FK.HM.Bad.unten.Sensor.Magnet', 'state', 'undef') eq 'open') && ( ReadingsVal('FK.HM.Bad.unten.OffenLang', 'state', 'undef') eq 'long')){
fhem ("set FK.HM.Bad.unten.Zustand.dummy openLong");
}
if (( ReadingsVal('FK.HM.Bad.unten.Sensor.Dreh', 'state', 'undef') eq 'tilted') && ( ReadingsVal('FK.HM.Bad.unten.Sensor.Magnet', 'state', 'undef') eq 'open') && ( ReadingsVal('FK.HM.Bad.unten.OffenLang', 'state', 'undef') eq 'off')){
fhem ("set FK.HM.Bad.unten.Zustand.dummy open");
}
if (( ReadingsVal('FK.HM.Bad.unten.Sensor.Dreh', 'state', 'undef') eq 'closed') && ( ReadingsVal('FK.HM.Bad.unten.Sensor.Magnet', 'state', 'undef') eq 'closed')){
fhem ("set FK.HM.Bad.unten.OffenLang off");
fhem ("set FK.HM.Bad.unten.Zustand.dummy closed");
}
if (( ReadingsVal('FK.HM.Bad.unten.Sensor.Magnet', 'state', 'undef') eq 'closed') && ( ReadingsVal('FK.HM.Bad.unten.Sensor.Dreh', 'state', 'undef') eq 'closed')){
fhem ("set FK.HM.Bad.unten.OffenLang off");
fhem ("set FK.HM.Bad.unten.Zustand.dummy closed");
}
}


Bedauerlicherweise funktioniert nur dieser Teil:
if ( ReadingsVal('FK.HM.Bad.unten.Sensor.Dreh', 'state', 'undef') eq 'open'){
fhem ("set FK.HM.Bad.unten.Zustand.dummy openSchwenk");
}


Weiß jemand warum? Wenn noch Infos fehlen --> ich liefere gerne nach!!!

Nebenfrage:
Wie kann ich
if (( ReadingsVal('FK.HM.Bad.unten.Sensor.Dreh', 'state', 'undef') eq 'tilted') && ( ReadingsVal('FK.HM.Bad.unten.Sensor.Magnet', 'state', 'undef') eq 'open') && ( ReadingsVal('FK.HM.Bad.unten.OffenLang', 'state', 'undef') eq 'long')){
mit Zeilenumbrüchen versehen?

Neugierige Grüße,
Andreas

MadMax-FHEM

Ich würde ja Logausgaben von den ganzen ReadingsVal-Abfragen einbauen bzw. die Werte 1x abfragen zu beginn und dann in Variablen schreiben, diese ausgeben (Log) und dann mit den abgefragten Werten (Variablen) arbeiten...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

ahstax

Wie bekommt man denn die RadingVals in eine Variable in dem Notify-Block? Könntest Du mir bitte ein Beispiel einer Variablenbelegung schreiben?

Du würdest dann die "kurzen" Variablen miteinander vergleichen statt der "langen" ReadingVals?

Dadurch wird aber auch noch nicht erreicht, dass der Code vollständig funktioniert...

ODER(!!) ich verstehe Dich nicht...

Otto123

Zeilenumbrüche kannst Du eigentlich beliebig machen.

Gibt es ein Log für die Dummys? Werden die in Folge eventuell mehrfach gesetzt?
Hast Du den Eventmonitor beobachtet?
Ich würde den Code zusammenkürzen und die if Blöcke separat testen.

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

MadMax-FHEM

#4
my $Variablenwert1 = ReadingsVal('FK.HM.Bad.unten.Sensor.Dreh', 'state', 'undef');

EDIT: und dann eben
if($Variablenwert1 eq 'open'){}

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

ahstax

Hallo miteinander,

die Lösung des Problems ist, allem Voran, die Verwendung der richtigen Bezeichnungen für die Readings. Dann "klappts auch mit dem Nachbarn"...

Der Tipp mit den Variablen hat mir sehr geholfen und ich nehme den sehr gerne für die Zukunft ins Repertoire auf.
Auch der Hinweis, die Sache schrittweise zu machen war sehr gut.

DANKE Euch beiden!

Herzliche Grüße,
Andreas