Neues Modul - THRESHOLD

Begonnen von Damian, 25 Januar 2013, 22:51:43

Vorheriges Thema - Nächstes Thema

Damian

Zitat von: michael-sp am 31 August 2014, 14:45:40
Hallo zusammen,
ich benutze das THRESHOLD-Modul um eine Wärmelampe im einem Terrarium zu schalten.
Lampe schaltet bei 20°C ein und bei 25°C wieder aus.
das funktioniert soweit.
Nun möchte ich das nur zwischen 07:00 Uhr und 17:00Uhr die Lampe über Temperatur geschaltet wird.

Temp_AU_SK:temperature:5:25.0 Licht_SK on

Nehm ich den Weekdaytimer, Heatcontrol oder schreibe ich was beim Threshold? Was muss ich eintragen?

Du kannst es über Weekdaytimer (Heating_Control) in Verbindung mit THRESHOLD realisieren. Siehe Beispiel zum zeitgesteuerten Heizen hier: http://fhem.de/commandref_DE.html#THRESHOLD

Oder gleich mit einem einzigen Modul erledigen:

define di_temp_au DOIF ([SK:temperature] > 25) (set Licht_SK off) DOELSEIF ([SK:temperature] < 20 and [07:00-17:00]) (set Licht_SK on)

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

michael-sp

Super, danke, hab es mit DOIF gemacht, funktioniert.

Gruss
Michael

grogra

Zunächst ein Super Tool! Das mir nach einigen Umwegen das IT Leben leichter gemacht hat..

ich habe schon einiges Ausprobiert und Irgendwie gefallen mir die Lösungen nicht oder Sie gehen nicht..

Wie würdest Du / Ihr folgende Aufgabe lösen:

Ich habe pro Zimmer ein TempSensor / THRESHOLD und min. ein Ventil. Im Keller eine Heizungspumpe

Wenn ein THRESHOLD das Zimmer erwärmen möchte soll die Pumpe im Keller für entsprechend Warmwasser sorgen.
Sozusagen eine OR Verknüpfung aus allen THRESHOLD

Danke schon mal für die Idee

grogra

Damian

Zitat von: grogra am 01 November 2014, 08:49:28
Zunächst ein Super Tool! Das mir nach einigen Umwegen das IT Leben leichter gemacht hat..

ich habe schon einiges Ausprobiert und Irgendwie gefallen mir die Lösungen nicht oder Sie gehen nicht..

Wie würdest Du / Ihr folgende Aufgabe lösen:

Ich habe pro Zimmer ein TempSensor / THRESHOLD und min. ein Ventil. Im Keller eine Heizungspumpe

Wenn ein THRESHOLD das Zimmer erwärmen möchte soll die Pumpe im Keller für entsprechend Warmwasser sorgen.
Sozusagen eine OR Verknüpfung aus allen THRESHOLD

Danke schon mal für die Idee

grogra

Es wird draußen kälter - die Hochsaison für THRESHOLD beginnt. Dann können wir den Thread hier wieder aufwärmen ;)

Du kannst zum Schalten deiner Aktoren mehrere Befehle absetzen z. B (siehe Beispiele in der Commandref):

define thermostat THRESHOLD sensor |set Ventil off;;set Pumpe off|set Ventil on;;set Pumpe on|1

Das würde für einen Raum funktionieren.

Wenn du für alle Räume es realisieren wolltest, dann kannst du deine Ventile in eine Structure packen. Die Structure soll offen sein, sobald ein Ventil offen ist. Dann kannst du z. B. mit DOIF auf die Structure triggern und deine Pumpe Schalten z. B:

define di_pumpe DOIF ([Ventile] eq "offen") (set Pumpe on) DOELSE (set Pumpe off)

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

grogra

Danke,

das mit der Structur war auch mein erster Ansatz. Bei mir Funk das aber nicht



define HZ_ventileAll structure Heizung \
EG.C.DR.Out01 EG.C.DR.Out02 EG.C.DR.Out03 EG.C.DR.Out04 EG.C.DR.Out05 EG.C.DR.Out06 EG.C.DR.Out07 \
OG.C.DR.Out01 OG.C.DR.Out02 OG.C.DR.Out03 OG.C.DR.Out04 OG.C.DR.Out05 OG.C.DR.Out06 OG.C.DR.Out07




Die structur EGEGHZGruppe wird von einen THRES gesteuert. Diese ist wie Du siehst an.
Aber das kommt nicht bei der HZ_ventileAll an

Damian

Zitat von: grogra am 01 November 2014, 10:11:59
Danke,

das mit der Structur war auch mein erster Ansatz. Bei mir Funk das aber nicht



define HZ_ventileAll structure Heizung \
EG.C.DR.Out01 EG.C.DR.Out02 EG.C.DR.Out03 EG.C.DR.Out04 EG.C.DR.Out05 EG.C.DR.Out06 EG.C.DR.Out07 \
OG.C.DR.Out01 OG.C.DR.Out02 OG.C.DR.Out03 OG.C.DR.Out04 OG.C.DR.Out05 OG.C.DR.Out06 OG.C.DR.Out07




Die structur EGEGHZGruppe wird von einen THRES gesteuert. Diese ist wie Du siehst an.
Aber das kommt nicht bei der HZ_ventileAll an

Dann hast du deine structure noch nicht richtig definiert. Du musst noch Attribute clientstate_behavior und ggf. clientstate_priority definieren, siehe dazu Commandref von structure.

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

grogra

vielen Dank für den Hinweis.

habe gerate bisschen mehr verstanden wie das Funk.. Muss mich erst mal mehr in die Funktion Structure einarbeiten..

Danke


DJ-Mix

hallo Damian,

habe Problem mit THRESHOLD . . .
Internals:
   CFGFN      /opt/fhem/FHEM/zzzzzzz.cfg
   DEF        CUL_HM_HM_TC_IT_WM_W_EU_261CBF_Climate:desired-temp OR Temp_aussen:state:off |set heatingDG1 off;set heatingDG2 off|set heatingDG1 on;set heatingDG2 on|2
   NAME       fussbodenDG
   NR         989
   NTFY_ORDER 50-fussbodenDG
   STATE      initialized
   TYPE       THRESHOLD
   cmd1_gt    set heatingDG1 off;set heatingDG2 off
   cmd2_lt    set heatingDG1 on;set heatingDG2 on
   cmd_default 2
   hysteresis 0
   offset     0
   operator   OR
   sensor     CUL_HM_HM_TC_IT_WM_W_EU_261CBF_Climate
   sensor2    Temp_aussen
   sensor2_reading state
   sensor2_state off
   sensor_reading desired-temp
Attributes:
   number_format %.1f
   state_cmd1_gt of
   state_cmd2_lt on
   state_format _m _dv


Irgendwie mag die Heizung nicht anspringen . . .
AussenTemp habe ich bei unterschreitung von 16°C und die Temp vom Thermometer habe ich auf mind. 21°C stehen
Jetzt war der Raum jedoch auf 18°C abgekühlt und die AussenTemp liegt ja momentan weit unter 16°C :-(
Jedoch schaltet die Heizung nicht! Wenn ich jedoch am Thermometer die Temp auf 17°C einstelle, geht die Heizung an!?

Für mich habe ich jedoch verstanden, dass die Solltemp (21°C) sobald unterschritten die Heizung auf On stellt und bei überschreiten auf off - sofern die Aussentemp unter 16°C ist!
Oder habe ich da einen Denkfehler
Danke schon aml für deine Hilfe

gruß
Markus

Damian

Zitat von: DJ-Mix am 14 November 2014, 11:36:37
hallo Damian,

habe Problem mit THRESHOLD . . .
Internals:
   CFGFN      /opt/fhem/FHEM/zzzzzzz.cfg
   DEF        CUL_HM_HM_TC_IT_WM_W_EU_261CBF_Climate:desired-temp OR Temp_aussen:state:off |set heatingDG1 off;set heatingDG2 off|set heatingDG1 on;set heatingDG2 on|2
   NAME       fussbodenDG
   NR         989
   NTFY_ORDER 50-fussbodenDG
   STATE      initialized
   TYPE       THRESHOLD
   cmd1_gt    set heatingDG1 off;set heatingDG2 off
   cmd2_lt    set heatingDG1 on;set heatingDG2 on
   cmd_default 2
   hysteresis 0
   offset     0
   operator   OR
   sensor     CUL_HM_HM_TC_IT_WM_W_EU_261CBF_Climate
   sensor2    Temp_aussen
   sensor2_reading state
   sensor2_state off
   sensor_reading desired-temp
Attributes:
   number_format %.1f
   state_cmd1_gt of
   state_cmd2_lt on
   state_format _m _dv


Irgendwie mag die Heizung nicht anspringen . . .
AussenTemp habe ich bei unterschreitung von 16°C und die Temp vom Thermometer habe ich auf mind. 21°C stehen
Jetzt war der Raum jedoch auf 18°C abgekühlt und die AussenTemp liegt ja momentan weit unter 16°C :-(
Jedoch schaltet die Heizung nicht! Wenn ich jedoch am Thermometer die Temp auf 17°C einstelle, geht die Heizung an!?

Für mich habe ich jedoch verstanden, dass die Solltemp (21°C) sobald unterschritten die Heizung auf On stellt und bei überschreiten auf off - sofern die Aussentemp unter 16°C ist!
Oder habe ich da einen Denkfehler
Danke schon aml für deine Hilfe

gruß
Markus

Die logische Verknüpfung mit AND bzw. OR gilt immer für den cmd_gt-Fall, beim Heizen also off.
Das bedeutet: bei dir wird die Heizung ausgeschaltet, wenn die desired-Temp überschritten wird oder Temp_aussen auf off steht. Die logische Negation davon, also die Bedingung für das Einschalten der Heizung, heißt dann: desired-Temp wird unterschritten und Temp_aussen auf on.

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

DJ-Mix

habe es nun so umgesetzt . . .
für die Aussen_Temp
DEF
Temperatur_aussen:temperature:1:16|on

für das Thermometer
DEF
CUL_HM_HM_TC_IT_WM_W_EU_261CBF_Climate:desired-temp OR Temp_aussen:state:off |set heatingDG1 on;set heatingDG2 on|set heatingDG1 off;set heatingDG2 off|2


habe ich das so richtig verstanden?
Gruß
Markus

Damian

Zitat von: DJ-Mix am 14 November 2014, 15:59:30
habe es nun so umgesetzt . . .
für die Aussen_Temp
DEF
Temperatur_aussen:temperature:1:16|on

für das Thermometer
DEF
CUL_HM_HM_TC_IT_WM_W_EU_261CBF_Climate:desired-temp OR Temp_aussen:state:off |set heatingDG1 on;set heatingDG2 on|set heatingDG1 off;set heatingDG2 off|2


habe ich das so richtig verstanden?
Gruß
Markus
nein.

Es sollte entsprechend dem Beispiel in der commandref funktionieren:

define Temp_aussen THRESHOLD Temperatur_aussen:temperature:0:16

Damit sollte Temp_aussen on sein, wenn die Temperatur unter 16 Grad ist, sonst off.

Dann:

CUL_HM_HM_TC_IT_WM_W_EU_261CBF_Climate:desired-temp OR Temp_aussen:state:off |set heatingDG1 off;set heatingDG2 off|set heatingDG1 on;set heatingDG2 on|2


Damit wird geheizt, wenn Zimmertemperatur unter der desired-Vorgabe und Aussen unter 16 Grad (Temp_aussen = on).
Es wird nicht geheizt, wenn Zimmertemperatur über der desired-Vorgabe oder Aussen über 16 Grad (Temp_aussen = off).

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

DJ-Mix

Hallo Damian,

so wie Du es vorschlägst, hatte ich es - damit funktioniert es leider nicht!?
wenn ich jedoch die Einstellung so wie von mir geschrieben vornehme, geht es.
Das heisst: Sobald ich das Thermometer einstelle geht die Heizung entsprechend an oder aus.

Wo kann den hier mein Fehler noch leigen?

Gruß
Markus

Damian

Zitat von: DJ-Mix am 16 November 2014, 13:29:58
Hallo Damian,

so wie Du es vorschlägst, hatte ich es - damit funktioniert es leider nicht!?
wenn ich jedoch die Einstellung so wie von mir geschrieben vornehme, geht es.
Das heisst: Sobald ich das Thermometer einstelle geht die Heizung entsprechend an oder aus.

Wo kann den hier mein Fehler noch leigen?

Gruß
Markus

In deinem letzten list <dein THRESHOLD-Modul> stand sensor2_state off, obwohl die Außen-Temperatur unter der definierten war. Da kann schon etwas nicht stimmen.

Als erstes muss das THRESHOLD zu Temperatur_aussen so funktionieren, wie ich es schon geschrieben habe.

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

tekki

Hallo Damian,

ich habe vor kurzem meine Heizungssteuerung auf Threshold und HeatinControl umgestellt. Damit bin ich bisher sehr zufrieden, nur schalten meine MAX! Fensterkontakte die zugeordneten Thermostate nicht mehr aus, sobald ein Fenster offen ist. Die MAX! Komponenten sind via einem LAN-Cube an FHEM angebunden. Die Thermostate sind im Modus manuell, da ich keine Abarbeitung via Wochenprogramm haben möchte.

Meine Frage:
kann ich bei diesem Beispiel:

define TH_WZ THRESHOLD TF_Wohnz OR TH_aussen:state:off HZ_W_Fe_li|set @ desiredTemperature off|set @ desiredTemperature on

mit einem weiteren OR noch einen Fensterkontakt abfragen?

Grüße
Ralph

Damian

Zitat von: tekki am 21 November 2014, 18:53:07
Hallo Damian,

ich habe vor kurzem meine Heizungssteuerung auf Threshold und HeatinControl umgestellt. Damit bin ich bisher sehr zufrieden, nur schalten meine MAX! Fensterkontakte die zugeordneten Thermostate nicht mehr aus, sobald ein Fenster offen ist. Die MAX! Komponenten sind via einem LAN-Cube an FHEM angebunden. Die Thermostate sind im Modus manuell, da ich keine Abarbeitung via Wochenprogramm haben möchte.

Meine Frage:
kann ich bei diesem Beispiel:

define TH_WZ THRESHOLD TF_Wohnz OR TH_aussen:state:off HZ_W_Fe_li|set @ desiredTemperature off|set @ desiredTemperature on

mit einem weiteren OR noch einen Fensterkontakt abfragen?

Grüße
Ralph

Es gibt nur ein OR, du musst deine Fensterkontakte zu einer Structure zusammenfassen, siehe dazu Beispiel in der commandref von THRESHOLD.

Gruß

Damian

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF