Hauptmenü

Einfaches DOIF

Begonnen von sash.sc, 09 März 2017, 22:22:16

Vorheriges Thema - Nächstes Thema

sash.sc

Hallo zusammen.

Wollte mir ein einfaches DOIF schreiben, welches den Pflanzenstatus überprüft und entsprechend einen Dummy setzt.

Internals:
   CFGFN
   DEF        ([blume:moisture] > 25 ) (set blume1 ok)
DOELSEIF ([blume:moisture] < 25 and [blume:moisture] > 20) (set blume1 nunja)
DOELSEIF ([blume:moisture] < 20 and [blume:moisture] > 15) (set blume1 jetzt wird es zeit)
DOELSE
   NAME       bulmencheck
   NR         18761
   NTFY_ORDER 50-bulmencheck
   STATE      cmd_1
   TYPE       DOIF
   Readings:
     2017-03-09 22:16:10   Device          blume
     2017-03-09 22:16:06   cmd             1
     2017-03-09 22:16:06   cmd_event       blume
     2017-03-09 22:16:06   cmd_nr          1
     2017-03-09 22:16:10   e_blume_moisture 29
     2017-03-09 22:16:06   state           cmd_1
   Condition:
     0          ReadingValDoIf($hash,'blume','moisture') > 25
     1          ReadingValDoIf($hash,'blume','moisture') < 25 and ReadingValDoIf($hash,'blume','moisture') > 20
     2          ReadingValDoIf($hash,'blume','moisture') < 20 and ReadingValDoIf($hash,'blume','moisture') > 15
   Devices:
     0           blume
     1           blume
     2           blume
     all         blume
   Do:
     0:
       0          set blume1 ok
     1:
       0          set blume1 nunja
     2:
       0          set blume1 jetzt wird es zeit
     3:
       0
   Helper:
     event      batteryLevel: 73,battery: ok,temperature: 21.3,lux: 0,moisture: 29,fertility: 406,firmware: 2.9.2,active
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   blume
     timerevent batteryLevel: 73,battery: ok,temperature: 21.3,lux: 0,moisture: 29,fertility: 406,firmware: 2.9.2,active
     triggerDev blume
     timerevents:
       batteryLevel: 73
       battery: ok
       temperature: 21.3
       lux: 0
       moisture: 29
       fertility: 406
       firmware: 2.9.2
       active
     timereventsState:
       batteryLevel: 73
       battery: ok
       temperature: 21.3
       lux: 0
       moisture: 29
       fertility: 406
       firmware: 2.9.2
       state: active
     triggerEvents:
       batteryLevel: 73
       battery: ok
       temperature: 21.3
       lux: 0
       moisture: 29
       fertility: 406
       firmware: 2.9.2
       active
     triggerEventsState:
       batteryLevel: 73
       battery: ok
       temperature: 21.3
       lux: 0
       moisture: 29
       fertility: 406
       firmware: 2.9.2
       state: active
   Internals:
   Itimer:
   Readings:
     0           blume:moisture
     1           blume:moisture
     2           blume:moisture
     all         blume:moisture
   Regexp:
     0:
     All:
   State:
   Trigger:
Attributes:
   room       FlowerSens


Hier das List zur Pflanze




Internals:
   BTMAC      C4:7C:8D:62:A2:A9
   DEF        C4:7C:8D:62:A2:A9
   INTERVAL   900
   NAME       blume
   NR         409
   STATE      active
   TYPE       XiaomiFlowerSens
   VERSION    0.6.8
   Readings:
     2017-03-09 22:16:10   battery         ok
     2017-03-09 22:16:10   batteryLevel    73
     2017-03-09 22:16:10   fertility       406
     2017-03-09 22:16:10   firmware        2.9.2
     2017-03-09 22:16:10   lux             0
     2017-03-09 22:16:10   moisture        29
     2017-03-09 22:16:10   state           active
     2017-03-09 22:16:10   temperature     21.3
   Helper:
Attributes:
   devStateIcon active:scene_garden@lime unreachable:scene_garden@red
   event-min-interval .*:900
   event-on-change-reading .*
   interval   900
   room       FlowerSens




Ich wollte einfach nur die Feuchtigkeit überwachen.
Aber als ich Enter gedrückt habe, bekomme ich erzählt "Please define blume first" !!!!!

Die blume ist definiert.

Hier mal die LOG Einträge




2017.03.09 22:11:55 1: devspec2array ([blume:moisture]: Unmatched ( in regex; marked by <-- HERE in m/^( <-- HERE ([blume:moisture])$/ at fhem.pl line 1187.

2017.03.09 22:11:38 1: devspec2array ([blume:moisture]: Unmatched ( in regex; marked by <-- HERE in m/^( <-- HERE ([blume:moisture])$/ at fhem.pl line 1187.



gehe ich aber unten in die RawDefinition, lasse es dort prüfen, dann ist alles gut und das DOIF lässt sich initialisieren und es läuft. mache ich eine Änderung über den Editor trit der fehler wieder auf.

Gruß
Sascha
Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

Per

Zum eigentlichen Probem kann ich dir nicht helfen, aber statt set dummy kannst du attr cmdstate verwenden.

Ellert

Das hat vielleicht hiermit zu tun: https://forum.fhem.de/index.php/topic,68298.0.html

und hängt eventuell mit codemirror zusammen.

sash.sc

Danke.

Dan heißt es wohl abwarten.

Gruß Sascha

Gesendet von meinem E6653 mit Tapatalk

Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

Per

#4
Nochwas: bei 25, 20 und unter 15 gehts in die DOELSE-Schleife. Absicht?
Du kannst die Abfragen vereinfachen:
([blume:moisture] > 25 ) (set blume1 ok)
DOELSEIF ([blume:moisture] > 20) (set blume1 nunja)
DOELSE (set blume1 jetzt wird es zeit)

weil du die jetzt fehlenden Bedingungen ja schon durch die oberen Abfragen ausschließt.

Oder, mit cmdstate
([blume:moisture] > 25 )
DOELSEIF ([blume:moisture] > 20)
DOELSE
attr cmdstate ok|nunja|jetzt wird es zeit

Falls du aber mehrere Blumentöpfe hast, ist die Variante mit Dummies besser.

sash.sc

Danke.

Mit den Dummy hatte ich ausprobiert, weil das DOIF nicht nehmen wollte, was ja im Moment noch mit dem Editor Codemirror zusammen hängt.

Muss mal schauen wie das mit dem Sensor weiter läuft.

gruß und Danke
Sascha
Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

Ellert

mit dem heutigen Update sollte der Fehler behoben sein.

sash.sc

[emoji106]

Gesendet von meinem SM-T560 mit Tapatalk

Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb