Notify Status 1.00 und 0.00 auswerten

Begonnen von bug, 18 März 2016, 21:53:55

Vorheriges Thema - Nächstes Thema

bug

Hallo,
Ich habe ein Notify, welcher auf einen Statuswechsel Lauscht. Der Status wechselt von 1.00 auf 0.00. ich möchte aber dass dieser Notify nur auf ein 1.00 Lauscht. Bisherige Versuche schlugen alle fehl.
define TEST_PIR MQTT_DEVICE PIR
attr TEST_PIR IODev MyBroker
attr TEST_PIR room test
attr TEST_PIR subscribeReading_status /hooks/devices/2/SensorData/taster
define TEST_PIRN notify TEST_PIR:status:.* {fhem("set SZ_Stehlampen2 on ;;delete SZ_StehlampenAus;; define SZ_StehlampenAus at +00:00:15 set SZ_Stehlampen2 off")}

Eventlog:
2016-03-18 21:52:50 MQTT_DEVICE TEST_PIR transmission-state: incoming publish received
2016-03-18 21:52:50 dummy SZ_Stehlampen2 on
2016-03-18 21:52:50 at SZ_StehlampenAus Next: 21:53:05
2016-03-18 21:52:50 Global global DEFINED SZ_StehlampenAus
2016-03-18 21:52:50 MQTT_DEVICE TEST_PIR status: 1.00
2016-03-18 21:53:05 MQTT_DEVICE TEST_PIR transmission-state: incoming publish received
2016-03-18 21:53:05 dummy SZ_Stehlampen2 on
2016-03-18 21:53:05 Global global DELETED SZ_StehlampenAus
2016-03-18 21:53:05 at SZ_StehlampenAus Next: 21:53:20
2016-03-18 21:53:05 Global global DEFINED SZ_StehlampenAus
2016-03-18 21:53:05 MQTT_DEVICE TEST_PIR status: 0.00

chris1284

#1
mit VALUE() kannst du den status-wert lesen und mit if testen:

define TEST_PIRN notify TEST_PIR:status:.* {
if(Value(TEST_PIR) == 1.00) {
        fhem("set SZ_Stehlampen2 on");
        fhem("delete SZ_StehlampenAus");
        fhem("define SZ_StehlampenAus at +00:00:15 set SZ_Stehlampen2 off");}
}

justme1968

das event bekommt man in $EVENT oder schon aufbereitet in $EVTPART. den wert des auslösend readings noch mal auszulesen ist unnötiger overhead.

mit Value kann man nur STATE abfragen. um ein eeading auszulesen gibt es ReadingsVal(). das reading hier könnte auch status heißen.

wenn nur auf bestimmte werte reagieren will ist es oft besser das direkt in die regex des notify zu schreiben:

  define TEST_PIRN notify TEST_PIR:status..1.* {...}

und sich das if zu sparen.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

bug

#3
Danke schonmal,
nur leider funktionieren keine der beiden vorschläge.

Zudem will die zeitsteuerung nicht, könntet ihr mir dabei auch helfen?
define TEST_PIR MQTT_DEVICE PIR
attr TEST_PIR IODev MyBroker
attr TEST_PIR room test
attr TEST_PIR subscribeReading_status /hooks/devices/2/SensorData/pir
define TEST_PIRN notify TEST_PIR:status:.* {my $now = sprintf("%%02d:%%02d",$hour,$min);;if($now > "15:10:00" ||  $now < "6:00:00"){fhem("set SZ_Stehlampen2 on ;;delete SZ_StehlampenAus;; define SZ_StehlampenAus at +00:00:15 set SZ_Stehlampen2 off")}}