Kann ein Userreading ein DOIF triggern?

Begonnen von Jackie, 27 Juni 2024, 10:17:04

Vorheriges Thema - Nächstes Thema

Jackie

Hallo,

ich möchte gerade abhängig von der Außentemperatur meine Lüftersteuerng modifizieren, bei bestimmten Temperaturen soll die Lüftung ausgeschaltet werden. Dazu habe ich folgendes DOIF definiert:

define DisableFanAtHighTemperatures DOIF ([LWZ:outside_temp] > 23) (set LWZ p07FanStageDay 0) DOELSEIF ([LWZ:outside_temp] < 23) (set LWZ p07FanStageDay 1)
Dabei ist LWZ:outside_temp ein Userreading meiner Heizung:

attr LWZ userReadings p_HCw:sGlobal.* {((split ' ',ReadingsVal("LWZ","sGlobal",0))[89])}, Rel_humidity:sGlobal.* {((split ' ',ReadingsVal("LWZ","sGlobal",0))[92])}, return_temp:sGlobal.* {((split ' ',ReadingsVal("LWZ","sGlobal",0))[5])}, flow_temp:sGlobal.* {((split ' ',ReadingsVal("LWZ","sGlobal",0))[3])}, wanted_temp:sHC1.* {((split ' ',ReadingsVal("LWZ","sHC1",0))[11])}, heating_current_temp:sHC1.* {((split ' ',ReadingsVal("LWZ","sHC1",0))[13])}, outside_temp:sGlobal.* {((split ' ',ReadingsVal("LWZ","sGlobal",0))[1])}, dhw_temp:sGlobal.* {((split ' ',ReadingsVal("LWZ","sGlobal",0))[9])}, inside_temp:sHC1.* {((split ' ',ReadingsVal("LWZ","sHC1",0))[27])}, CopHC:sHeatHCDay.* {sprintf("%.2f", ReadingsNum("LWZ","sHeatHCDay",1) / ReadingsNum("LWZ","sElectrHCDay",1))}, CopDHW:sHeatDHWDay.* {sprintf("%.2f", ReadingsNum("LWZ","sHeatDHWDay",1) / ReadingsNum("LWZ","sElectrDHWDay",1))}, outside_temp_min:statOutside_tempDay.* {((split ' ',ReadingsVal("LWZ","statOutside_tempDay",0))[1])}, outside_temp_av:statOutside_tempDay.* {((split ' ',ReadingsVal("LWZ","statOutside_tempDay",0))[3])}, outside_temp_max:statOutside_tempDay.* {((split ' ',ReadingsVal("LWZ","statOutside_tempDay",0))[5])}, outside_temp_av_yesterday:statOutside_tempDayLast.* {((split ' ',ReadingsVal("LWZ","statOutside_tempDayLast",0))[3])}
Das wird also aus sGlobal extrahiert. Mein Problem ist nun, dass der DOIF nie triggert, also nie ausgelöst wird. Meine Vermutung war nun dass es evtl. an dem Userreading liegen könnte. Im Eventlog sehe ich nicht dass das DOIF überhaupt je ausgeführt wird. Habt ihr eine Idee wie das richtig geht? Vielen Dank!
Raspi 3 mit FHEM, LWZ 304 Trend, Fronius Symo 10.0-3-M, Conbee II Stick, Optokoppler (USB, FTDI), diverse Ikea Tradfri Komponenten,...

MadMax-FHEM

#1
ZitatKann ein Userreading ein DOIF triggern?
-> ja

Besser wäre ein komplettes list (des DOIF und) des Devices mit dem userReadings, also von LWZ?

Schon mal den Eventmonitor geöffnet und geschaut, ob Events kommen, also vom userReadings p_HCwoutside_temp?
EDIT: und nat. von sGlobal. Weil wenn das keinen Event erzeugt, dann wird das userReadings ja nie "berechnet"... Oder existiert das userReadings p_HCwoutside_temp? (all das wäre mit einem simplen list beantwortet 8) )

Evtl. event-on- Attribute gesetzt?
Würde man in einem list gesehen haben...

EDIT: wobei
Zitat von: Jackie am 27 Juni 2024, 10:17:04[LWZ:outside_temp]
-> das userReadings heißt doch nicht outside_temp ?
Ok, kommt weiter hinten im userReadings ;)


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)

Gisbert

#2
Hallo Jackie,

eine Grundvoraussetzung für ein Triggern ist das Vorhandensein eines entsprechenden Events.
Wenn ein Reading (egal ob es ein reguläres oder ein userReading ist) kein Event liefert, dann gibt es keinen Trigger für ein DOIF oder notify.
Man kann das Vorhandenseins von Events in einem Device mit event-on-change-reading und ähnlichen Attributen steuern, um bspw. die Anzahl von relevanten Events etc. zu reduzieren, was meist eine gute Idee ist.
Ob ein Event vorliegt, und wie es genau aussieht, kannst du im Event monitor sehen.
Bitte lies die entsprechenden Stichworte im Fhem Wiki oder der commandref nach, dann sollte vieles klarer werden.

Viele Grüße Gisbert

edit: Joachim war schneller
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | tuya local | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY | DEYE | JK-BMS | ESPHome

MadMax-FHEM

Zitat von: Jackie am 27 Juni 2024, 10:17:04define DisableFanAtHighTemperatures DOIF ([LWZ:outside_temp] > 23) (set LWZ p07FanStageDay 0) DOELSEIF ([LWZ:outside_temp] < 23) (set LWZ p07FanStageDay 1)
Am Rande (auch das wäre mit einem list wohl erkennbar): eine Hysterese hast du vorgesehen? Ansonsten wird das DOIF (wenn es dann mal auslöst ;) ) "ständig" hin-und-her schalten...

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)