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
Zum eigentlichen Probem kann ich dir nicht helfen, aber statt set dummy kannst du attr cmdstate verwenden.
Das hat vielleicht hiermit zu tun: https://forum.fhem.de/index.php/topic,68298.0.html
und hängt eventuell mit codemirror zusammen.
Danke.
Dan heißt es wohl abwarten.
Gruß Sascha
Gesendet von meinem E6653 mit Tapatalk
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.
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
mit dem heutigen Update sollte der Fehler behoben sein.
[emoji106]
Gesendet von meinem SM-T560 mit Tapatalk