Hi zusammen,
ich versuche mittel HM-TC-IT-WM-W-EU Funk-Wandthermostaten einen Aktor (Relais für Fußbodenheizungsventil) zu steuern.
Also eine simple Fußbodenheizungssteuerung in der Art
IF Raumtemperatur < gewünschte Temperatur THEN aktiviere Aktor
Ich bekomme die measured-temp und desired-temp jedoch nicht vom HM-TC-IT-WM-W-EU Funk-Wandthermostat in die DOIF oder THRESHOLD Bedingung übertragen ...
Ich habe es in dieser Art versucht:
define TestHzReglerBuero DOIF ([Thermostat_BUERO:desired-temp] > [Thermostat_BUERO:measured-temp]) (set RELAIS on) DOELSEIF ([Thermostat_BUERO:desired-temp] < [Thermostat_BUERO:measured-temp]) (set RELAIS off)
Irgendjemand eine Idee ... gefunden habe ich nach Stunden suchen leider nichts.
VG ak323
Hi,
kannst Du mal bitte ein list TestHzReglerBuero zeigen?
Ich nehme an RELAIS ist kein HM Aktor?
Ich würde es wie das Beispiel in der Doku ansetzen https://fhem.de/commandref_DE.html#DOIF_Weitere_Anwendungsbeispiele
define TestHzReglerBuero DOIF ([Thermostat_BUERO:measured-temp] < ([Thermostat_BUERO:desired-temp]-1)) (set RELAIS on) DOELSEIF ([Thermostat_BUERO:measured-temp] > ([Thermostat_BUERO:desired-temp]) (set RELAIS off)
Wobei Du einfach auch das Reading level vom Channel _SwitchTr auswerten könntest.
Gruß Otto
Hallo Otto,
hier mein list. Achtung RELAIS ist nur ein Ersatz für "set XXX on" ! Nein kein Homematic, sondern 1-Wire ..
Ein "get Thermostat_BUERO param measured-temp" in der Kommandozeile liefert mir auch den richtigen Temperaturwert zurück !
Internals:
DEF ([Thermostat_BUERO:desired-temp] > [Thermostat_BUERO:measured-temp]) (set RELAIS on) DOELSEIF ([Thermostat_BUERO:desired-temp] < [Thermostat_BUERO:measured-temp]) (set RELAIS off)
NAME TestHzReglerBuero
NR 432
NTFY_ORDER 50-TestHzReglerBuero
STATE cmd_1
TYPE DOIF
READINGS:
2019-11-03 22:30:54 Device Thermostat_BUERO
2019-11-02 22:26:48 cmd 1
2019-11-02 22:26:48 cmd_event Thermostat_BUERO
2019-11-02 22:26:48 cmd_nr 1
2019-11-03 22:30:54 e_Thermostat_BUERO_desired-temp 24.0
2019-11-03 22:30:54 e_Thermostat_BUERO_measured-temp 22.3
2019-11-02 22:26:48 error set RELAIS on: Please define RELAIS first
2019-11-02 22:26:48 state cmd_1
condition:
0 ReadingValDoIf($hash,'Thermostat_BUERO','desired-temp') > ReadingValDoIf($hash,'Thermostat_BUERO','measured-temp')
1 ReadingValDoIf($hash,'Thermostat_BUERO','desired-temp') < ReadingValDoIf($hash,'Thermostat_BUERO','measured-temp')
devices:
0 Thermostat_BUERO
1 Thermostat_BUERO
all Thermostat_BUERO
do:
0:
0 set RELAIS on
1:
0 set RELAIS off
helper:
event desired-temp: 24.0,humidity: 50,measured-temp: 22.3,T: 22.3 desired: 24.0
globalinit 1
last_timer 0
sleeptimer -1
timerdev Thermostat_BUERO
timerevent desired-temp: 24.0,humidity: 50,measured-temp: 22.3,T: 22.3 desired: 24.0
triggerDev Thermostat_BUERO
timerevents:
desired-temp: 24.0
humidity: 50
measured-temp: 22.3
T: 22.3 desired: 24.0
timereventsState:
desired-temp: 24.0
humidity: 50
measured-temp: 22.3
state: T: 22.3 desired: 24.0
triggerEvents:
desired-temp: 24.0
humidity: 50
measured-temp: 22.3
T: 22.3 desired: 24.0
triggerEventsState:
desired-temp: 24.0
humidity: 50
measured-temp: 22.3
state: T: 22.3 desired: 24.0
internals:
itimer:
readings:
0 Thermostat_BUERO:desired-temp Thermostat_BUERO:measured-temp
1 Thermostat_BUERO:desired-temp Thermostat_BUERO:measured-temp
all Thermostat_BUERO:desired-temp Thermostat_BUERO:measured-temp
regexp:
0:
1:
all:
state:
STATE:
trigger:
Attributes:
FHEM/DOIF spricht doch mit Dir:
Please define RELAIS first :-[
Und bitte Codetags nehmen! https://forum.fhem.de/index.php/topic,71806.0.html
Meinen Vorschlag (bzw. aus der Doku) den Zusatz mit der Hysterese musst Du unbedingt einbauen!!!
Otto you made my day !
Es funktioniert mit:
define TestHzReglerBuero DOIF ([Thermostat_BUERO:measured-temp] < ([Thermostat_BUERO:desired-temp]-1)) (set IO2 PIO.0 1) DOELSEIF ([Thermostat_BUERO:measured-temp] > [Thermostat_BUERO:desired-temp]) (set IO2 PIO.0 0)
DANKE !
Naja wenn das gerät dann mal da ist, ist es ganz einfach :)
Wie gesagt: Schau Dir mal das Reading level vom Channel _SwitchTr an.
Könnte so gehen (ungetestet) oder eigentlich auch noch viel einfacher :)
define TestHzReglerBuero DOIF ([Thermostat_BUERO_SwitchTr:level] > 0 ) (set IO2 PIO.0 1) DOELSEIF ([Thermostat_BUERO_SwitchTr:level] == 0) (set IO2 PIO.0 0)
Gruß Otto