Hallo, in einem DOIF Module steht folgender Vergleich: (["powerMeter:power:"] < 1.0) (set dyEcoFlow_up on)
Dieses funktioniert nur für Vergleichswerte >/= 1.1 , nicht aber für kleinere Werte.
Sobald ich 1.0 oder kleinere Werte eintrage, funktioniert es nicht mehr, auch nicht mit ganzen Zahlen.
Ich möchte auch negative Werte benutzen, also z.B. (["powerMeter:power:"] < -1.0). In diesem Fall wird (set dyEcoFlow_up on) nicht ausgeführt.
Gibt es dafür eine Erklärung?
Vielen Dank!
defmod diEcoFlowControl DOIF (["powerMeter:power:"] < 1.0) (set dyEcoFlow_up on)
attr diEcoFlowControl addStateEvent 1
attr diEcoFlowControl do always
attr diEcoFlowControl room EcoFlow
setstate diEcoFlowControl initialized
setstate diEcoFlowControl 2025-09-28 13:08:40 Device powerMeter
setstate diEcoFlowControl 2025-09-28 12:57:00 cmd 0
setstate diEcoFlowControl 2025-09-28 12:57:00 mode enabled
setstate diEcoFlowControl 2025-09-28 12:57:00 state initialized
efine diEcoFlowControl DOIF (["powerMeter:power:"] < 1.0) (set dyEcoFlow_up on)
attr diEcoFlowControl addStateEvent 1
attr diEcoFlowControl do always
attr diEcoFlowControl room
# CFGFN
# DEF (["powerMeter:power:"] < 1.0) (set dyEcoFlow_up on)
# FUUID 68d8ece6-f33f-907d-75ce-8f6e52f532b7e93f
# MODEL FHEM
# NAME diEcoFlowControl
# NOTIFYDEV .*(powerMeter).*,global
# NR 270
# NTFY_ORDER 50-diEcoFlowControl
# STATE initialized
# TYPE DOIF
# VERSION 29460 2024-12-29 20:25:48
# eventCount 110
# READINGS:
# 2025-09-28 13:02:18 Device powerMeter
# 2025-09-28 12:57:00 cmd 0
# 2025-09-28 12:57:00 mode enabled
# 2025-09-28 12:57:00 state initialized
# Regex:
# accu:
# bar:
# barAvg:
# collect:
# cond:
# :
# 0:
# "powerMeter:power:" powerMeter:power:
# attr:
# cmdState:
# wait:
# waitdel:
# condition:
# 0 ::EventDoIf('powerMeter',$hash,'power:',0) < 1.0
# do:
# 0:
# 0 set dyEcoFlow_up on
# 1:
# helper:
# NOTIFYDEV .*(powerMeter).*,global
# event power: -472.194781873793
# globalinit 1
# last_timer 0
# sleeptimer -1
# triggerDev powerMeter
# triggerEvents:
# power: -472.194781873793
# current_L1: 2.25
# current_L3: 0.57
# voltage_L1: 236.6
# voltage_L2: 240.5
# voltage_L3: 237.6
# power_L2: 37
# power_L3: 20
# triggerEventsState:
# power: -472.194781873793
# current_L1: 2.25
# current_L3: 0.57
# voltage_L1: 236.6
# voltage_L2: 240.5
# voltage_L3: 237.6
# power_L2: 37
# power_L3: 20
# hmccu:
# internals:
# readings:
# trigger:
# uiState:
# uiTable:
#
setstate diEcoFlowControl initialized
setstate diEcoFlowControl 2025-09-28 13:02:18 Device powerMeter
setstate diEcoFlowControl 2025-09-28 12:57:00 cmd 0
setstate diEcoFlowControl 2025-09-28 12:57:00 mode enabled
setstate diEcoFlowControl 2025-09-28 12:57:00 state initialized
Wieso triggerst du mit diesen Anführungszeichen? (Ich glaube, das ist dann regex?)
Mach einfach ganz normal:([powerMeter:power] < 1.0) (set dyEcoFlow_up on)
Dann funktioniert das, auch mit negativen Werten in der Bedingung.
Du triggerst auf den Event, nicht auf den Wert. Möchtest du beides, brauchst du einen Vorgabewert:
(["powerMeter:power:",0] < 1.0)
Danke, das war die Ursache.
Ich hatte irgendwo aus den Dokumentationen etwas Passendes herauskopiert und angepasst.
Leider waren dort Anführungszeichen enthalten.