Neues Modul - THRESHOLD

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

Vorheriges Thema - Nächstes Thema

tekki

Zitat von: Damian am 21 November 2014, 19:19:27
Es gibt nur ein OR, du musst deine Fensterkontakte zu einer Structure zusammenfassen, siehe dazu Beispiel in der commandref von THRESHOLD.

Gruß

Damian
Sorry mein Fehler mein Code sieht so aus, habe zwei Zeilen beim kopieren vergessen :-(
Ich kombiniere laut der commandref zwei Threshold-Module miteinander um dann mit HeatingControl einen Raum zu bestimmten Zeiten zu heizen.

define TH_aussen THRESHOLD KS300:temperature:0:15
define TH_WZ THRESHOLD TF_Wohnz OR TH_aussen:state:off HZ_W_Fe_li|set @ desiredTemperature off|set @ desiredTemperature on
define HC_WZ Heating_Control TH_WZ 12345|10:00|20 12345|16:30|21.5 12345|18:35|5 06|12:00|21.5 06|18:00|5 set @ desired %

Nun habe ich aber wie vorher beschrieben das Problem, dass meine Fensterkontakte die via LAN-Cube an die Thermostate gebunden sind beim öffnen eines Fenster nicht mehr die Thermostate schließen. Jetzt wäre mein Versuch über ein weiteres OR zur Aussentemperatur noch den Fensterkontakt abzufragen. Da Du mir ja schon gesagt hast, dass es nur ein OR im Threshold gibt, muss ich mir eine andere Lösung überlegen. Evtl. bekomme ich es mit DOIF in den Griff.

Danke Dir dennoch
Ralph

Damian

Zitat von: tekki am 21 November 2014, 19:47:07
Sorry mein Fehler mein Code sieht so aus, habe zwei Zeilen beim kopieren vergessen :-(
Ich kombiniere laut der commandref zwei Threshold-Module miteinander um dann mit HeatingControl einen Raum zu bestimmten Zeiten zu heizen.

define TH_aussen THRESHOLD KS300:temperature:0:15
define TH_WZ THRESHOLD TF_Wohnz OR TH_aussen:state:off HZ_W_Fe_li|set @ desiredTemperature off|set @ desiredTemperature on
define HC_WZ Heating_Control TH_WZ 12345|10:00|20 12345|16:30|21.5 12345|18:35|5 06|12:00|21.5 06|18:00|5 set @ desired %

Nun habe ich aber wie vorher beschrieben das Problem, dass meine Fensterkontakte die via LAN-Cube an die Thermostate gebunden sind beim öffnen eines Fenster nicht mehr die Thermostate schließen. Jetzt wäre mein Versuch über ein weiteres OR zur Aussentemperatur noch den Fensterkontakt abzufragen. Da Du mir ja schon gesagt hast, dass es nur ein OR im Threshold gibt, muss ich mir eine andere Lösung überlegen. Evtl. bekomme ich es mit DOIF in den Griff.

Danke Dir dennoch
Ralph

Das geht dennoch mit nur einem OR. Dazu müsstest du TH_Aussen zusammen mit deinen Fenstern in eine Structure packen und so definieren, dass die Structure off ist wenn TH_Aussen off ist oder ein Fenster geöffnet.
Wenn dir die Definition der Structure zu kompliziert ist, dann kannst du alternativ das relativ einfach mit einem DOIF erledigen:

define di_heizung_aus DOIF ([KS300:temperature]>15 or [Fenster1] eq "open" or [Fenster2] eq "open"...)
attr di_heizung cmdstate off|on

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


Soviel ich weiß, gibt es keine Null für einen Wochentag bei Heating_Control. Du kannst die Zeitsteuerung, wie es in der aktuellen commandref zu THRESHOLD dargestellt ist, auch mit DOIF machen. Das unterstützt auch Arbeitstage und Wochenenden inkl. Feiertage, z. B.:

define di_wz DOIF ([10:00|8])
  (set TH_WZ desired 20)
DOELSEIF ([16:30|8] or [12:00|7])
  (set TH_WZ desired 21.5)
DOELSEIF ([18:35|8] or [18:00|7])
   (set TH_WZ desired 5)


Gruß

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

tekki

Hallo Damian,

da ich es mit der Structure nicht hinbekommen habe, hab ich es jetzt mit Deiner Variante des DOIF umgesetzt. Ich teste es gerade noch, aber es sieht schon mal gut aus. Werde dann meine Steuerung umstellen.

Zum Wochentag 0 im Modul Heating_Control meine ich das es schon geht, da ich einige Angaben damit umgesetzt habe. Eine davon ist im Bad. Die schaltet am Sonntag aber wie gewollt.

Danke Dir für Deine Hilfe
Grüße
Ralph

SpenZerX

Hallo,

ich habe meine Fußbodenheizung auf FHEM umgestellt.

Zur Zeit nutze ich Threshold und Heating Control.
Es ergeben sich aktuell 2  Probleme.

Über Heating Control habe ich zeitabhängig den Offset verändert.
Fehler: Bei -Offset hat das funktioniert, bei 0 Offset oder positiven Offset jedoch nicht.
Frage: Gibt es eine Möglichkeit bei Heating Control und Offsetveränderung zu bleiben oder am besten DOIF Befehle?

Außerdem habe ich das Problem das alle Slider die ich für den Sollwert verwende nach einem Neustart des FHEM Systems mindestens einmal bewegt werden müssen. Gibt es ein Slider Konstrukt das in Verbindung mit Threshold und einem Neustart sofort mit einem definierbaren Sollwert startet? Bis manuell der Slider geändert wird.

Mein Code:



# Dummy zur Einstellung der Solltemperatur für Heizkreis EG.Badezimmer
define EG.Badezimmer.Desired.Temp dummy
attr EG.Badezimmer.Desired.Temp room EG.Badezimmer
attr EG.Badezimmer.Desired.Temp setList state:slider,12,1,25
attr EG.Badezimmer.Desired.Temp stateFormat state  °C
attr EG.Badezimmer.Desired.Temp webCmd state
define EG.Badezimmer.Desired.Temp.Changed notify EG.Badezimmer.Desired.Temp:.* {my $a=ReadingsVal ("EG.Badezimmer.Desired.Temp", "state","6");;{fhem "set EG.Badezimmer.Thermostat desired $a";;}}

# Threshold Regelung für Heizkreis EG.Badezimmer
define EG.Badezimmer.Thermostat THRESHOLD EG.Badezimmer.Raumsensor:Temperature:1:EG.Badezimmer.Desired.Temp|set Heizkreisverteiler EG.Badezimmer.Aus|set Heizkreisverteiler EG.Badezimmer.An
attr EG.Badezimmer.Thermostat room EG.Badezimmer
attr EG.Badezimmer.Thermostat state_format IST:_s1v SOLL:_dv _m _sc

# Nachtabsenkung durch Heating Control für Heizkreis EG.Badezimmer
define EG.Badezimmer.Heating.Control Heating_Control EG.Badezimmer.Thermostat 09:00|+1 10:00|0 11:00|-1 12:00|0 13:00|+1 22:00|-4 set @ offset %
attr EG.Badezimmer.Heating.Control room EG.Badezimmer


MFG

Damian

Zitat von: SpenZerX am 29 November 2014, 16:45:09
Hallo,

ich habe meine Fußbodenheizung auf FHEM umgestellt.

Zur Zeit nutze ich Threshold und Heating Control.
Es ergeben sich aktuell 2  Probleme.

Über Heating Control habe ich zeitabhängig den Offset verändert.
Fehler: Bei -Offset hat das funktioniert, bei 0 Offset oder positiven Offset jedoch nicht.
Frage: Gibt es eine Möglichkeit bei Heating Control und Offsetveränderung zu bleiben oder am besten DOIF Befehle?

Außerdem habe ich das Problem das alle Slider die ich für den Sollwert verwende nach einem Neustart des FHEM Systems mindestens einmal bewegt werden müssen. Gibt es ein Slider Konstrukt das in Verbindung mit Threshold und einem Neustart sofort mit einem definierbaren Sollwert startet? Bis manuell der Slider geändert wird.

Mein Code:



# Dummy zur Einstellung der Solltemperatur für Heizkreis EG.Badezimmer
define EG.Badezimmer.Desired.Temp dummy
attr EG.Badezimmer.Desired.Temp room EG.Badezimmer
attr EG.Badezimmer.Desired.Temp setList state:slider,12,1,25
attr EG.Badezimmer.Desired.Temp stateFormat state  °C
attr EG.Badezimmer.Desired.Temp webCmd state
define EG.Badezimmer.Desired.Temp.Changed notify EG.Badezimmer.Desired.Temp:.* {my $a=ReadingsVal ("EG.Badezimmer.Desired.Temp", "state","6");;{fhem "set EG.Badezimmer.Thermostat desired $a";;}}

# Threshold Regelung für Heizkreis EG.Badezimmer
define EG.Badezimmer.Thermostat THRESHOLD EG.Badezimmer.Raumsensor:Temperature:1:EG.Badezimmer.Desired.Temp|set Heizkreisverteiler EG.Badezimmer.Aus|set Heizkreisverteiler EG.Badezimmer.An
attr EG.Badezimmer.Thermostat room EG.Badezimmer
attr EG.Badezimmer.Thermostat state_format IST:_s1v SOLL:_dv _m _sc

# Nachtabsenkung durch Heating Control für Heizkreis EG.Badezimmer
define EG.Badezimmer.Heating.Control Heating_Control EG.Badezimmer.Thermostat 09:00|+1 10:00|0 11:00|-1 12:00|0 13:00|+1 22:00|-4 set @ offset %
attr EG.Badezimmer.Heating.Control room EG.Badezimmer


MFG

Nimm einfach DOIF, nebenbei kannst du einfach Arbeitstage und Wochenenden inkl. Feiertage angeben. Ich habe inzwischen alle Beispiele mit Zeitsteuerung in der commanderf zu THRESHOLD auf DOIF umgestellt.

Slider benutze ich nicht, daher keine Ahnung.

Gruß

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

juppzupp

Hallo Damian,

danke für Threshold. Ist seit ein paar Tagen im Einsatz. Du hattest irgendwo geschrieben, das du die Entwicklung ursprünglich für eine Fußbodenheizung vorgenommen hattest.
Mich würde mal Interessieren, wie Du hysteresis und offset bei Dir eingestellt hast ?
Neben der eigentlichen Trägheit der Fußbodenheizung hab thermoelektrische Stellantriebe, die auch eine gewisse Trägheit mit sich bringen.
Sieht bei mir so aus, das ich mit offset und hysteresis auf 0 trotzdem einen Nachlauf von 0,5-1,2° habe, ein Beispiel dazu im Anhang.
Ich frage mich gerade, ob man das nicht noch anders lösen könnte, z.b. während der Heizphase mit einem negativen offset, bei Abkühlung aber mit Punktladung.
Als Beispiel : 22 Grad eingestellt, während der Heizphase aber bei 21,5 stoppen, während bei sinkender Temperatur und nicht betätigtem Stelltrieb aber bei 21,9 zu schalten.

Danke und Gruß !
jupp


Damian

#306
Zitat von: juppzupp am 06 Dezember 2014, 16:00:40
Hallo Damian,

danke für Threshold. Ist seit ein paar Tagen im Einsatz. Du hattest irgendwo geschrieben, das du die Entwicklung ursprünglich für eine Fußbodenheizung vorgenommen hattest.
Mich würde mal Interessieren, wie Du hysteresis und offset bei Dir eingestellt hast ?
Neben der eigentlichen Trägheit der Fußbodenheizung hab thermoelektrische Stellantriebe, die auch eine gewisse Trägheit mit sich bringen.
Sieht bei mir so aus, das ich mit offset und hysteresis auf 0 trotzdem einen Nachlauf von 0,5-1,2° habe, ein Beispiel dazu im Anhang.
Ich frage mich gerade, ob man das nicht noch anders lösen könnte, z.b. während der Heizphase mit einem negativen offset, bei Abkühlung aber mit Punktladung.
Als Beispiel : 22 Grad eingestellt, während der Heizphase aber bei 21,5 stoppen, während bei sinkender Temperatur und nicht betätigtem Stelltrieb aber bei 21,9 zu schalten.

Danke und Gruß !
jupp
Das Verhalten hängt von vielen Faktoren ab: Vorlauftemperatur, Schlaufendichte, Isolation, Estrichdicke, Aussentemperatur usw. Ich habe bei mir 1 Grad Hysterese. Ich kann bei mir keinen nennenswerten Nachlauf erkennen. Bei mir läuft die Heizung auch nur morgens und abends. Dazu synchron wird die Solltemperatur eingestellt, damit die Stellantriebe nicht unnötig offen sind, wenn die Heizung gar nicht heizt. Wenn bei uns eine Schwankung von über einem Grad irgendwo in einem Zimmer entsteht, dann nicht durch Heizung, sondern weil jemand Fenster geöffnet hat, durch Sonneneinstrahlung oder wenn man ein paar Leute zu Besuch hat ;)

Gruß

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

juppzupp

Zitat von: Damian am 06 Dezember 2014, 16:27:16
Das Verhalten hängt von vielen Faktoren ab: Vorlauftemperatur, Schlaufendichte, Isolation, Estrichdicke, Aussentemperatur usw....

Alles Faktoren, die ich nicht beeinflussen kann *g*

Ich werde mal die Thermostate tiefer anbringen, im Moment sind die auf cirka 180cm. mal schauen wie sich das verhält.

Merci!

juppzupp

Hi,

noch eine frage....wenn ich mit fenstersensoren arbeite.....gibt es die möglichkeit ein delay einzuarbeiten?
also im sinne von wenn fenster zu dann noch 900 sekunden warten bis threshold wieder anfängt zu regeln ?
umweg über nen dummy würde ich gerne vermeiden.


danke

Damian

Zitat von: juppzupp am 17 Dezember 2014, 16:36:41
Hi,

noch eine frage....wenn ich mit fenstersensoren arbeite.....gibt es die möglichkeit ein delay einzuarbeiten?
also im sinne von wenn fenster zu dann noch 900 sekunden warten bis threshold wieder anfängt zu regeln ?
umweg über nen dummy würde ich gerne vermeiden.


danke

... die Möglichkeit gibt es bestimmt, aber leider erst mal keine Zeit.

Gruß

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

HoTi

Hallo zusammen,

ich stehe gerade voll auf dem Schlauch, kann mich mal jemand da runterschubsen?

Also ich habe da zu Test ein Dummy angelegt (so sind auch meien Rollos angelegt)

define fenster_dummy dummy
attr fenster_dummy alias Rollo Testfenster
attr fenster_dummy eventMap zu:shutter_closed auf:shutter_open
attr fenster_dummy group Rollos
attr fenster_dummy room Fenster/Türen
attr fenster_dummy webCmd zu:auf


Ich habe ausserdem ein Bewegunsgmelder der mir die Helligkeit mitteilt HM-Sen-MDIR-O heißt BM_Garage und der Wert steht bei brightness.

So nun soll der Dummy bei Werten von kleiner 120 runter fahren. Das ganze aber nur Abends, da ich morgens das Rollo bei einer betimmten Zeit hochfahren lasse. Da kann die Helligkeit aber noch unter 120 liegen.

Wie mache ich das nun? Ich habe es nun mal so angelegt
Zitatdefine Threshold_test THRESHOLD BM_Garage:brightness:120

Aber wie mach ich jetzt den Befehl dahinter am besten mit einer Zeitangabe (nur ausführen von 15 - 23Uhr)
Viele Grüße aus  Oberbayern
Tim (RettungsTim)

Damian

Zitat von: RettungsTim am 08 Januar 2015, 10:31:20
Hallo zusammen,

ich stehe gerade voll auf dem Schlauch, kann mich mal jemand da runterschubsen?

Also ich habe da zu Test ein Dummy angelegt (so sind auch meien Rollos angelegt)

define fenster_dummy dummy
attr fenster_dummy alias Rollo Testfenster
attr fenster_dummy eventMap zu:shutter_closed auf:shutter_open
attr fenster_dummy group Rollos
attr fenster_dummy room Fenster/Türen
attr fenster_dummy webCmd zu:auf


Ich habe ausserdem ein Bewegunsgmelder der mir die Helligkeit mitteilt HM-Sen-MDIR-O heißt BM_Garage und der Wert steht bei brightness.

So nun soll der Dummy bei Werten von kleiner 120 runter fahren. Das ganze aber nur Abends, da ich morgens das Rollo bei einer betimmten Zeit hochfahren lasse. Da kann die Helligkeit aber noch unter 120 liegen.

Wie mache ich das nun? Ich habe es nun mal so angelegt
Aber wie mach ich jetzt den Befehl dahinter am besten mit einer Zeitangabe (nur ausführen von 15 - 23Uhr)
Hier:  http://fhem.de/commandref_DE.html#THRESHOLD

unter

Zeitgesteuertes Heizen mit Hilfe des DOIF-Moduls

ist ein Beispiel zum zeitgesteuerten Vorgeben des Schwellenwertes.

Oder besser gleich die Sache mit DOIF-Modul als Einzeiler erledigen. Dazu gibt es genügend Beispiele wie man zeit- und ereignisgesteuert etwas definiert. Siehe:

http://fhem.de/commandref_DE.html#DOIF

Gruß

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

Damian

Änderung im Modul.

set ... desired <value> aktiviert nicht mehr automatisch ein deaktiviertes THRESHOLD-Modul. Möchte man das bisherige Verhalten beibehalten, so muss man ein neues Attribut desiredActivate auf 1 setzen.

Neue Version ab morgen per Update.

Gruß

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

Motivierte linke Hände

Ich versuche, eine Meldung bei Überschreiten einer gewissen Raumtemperatur abzusetzen. Dabei habe ich 2 Probleme:

1. Der auszuführende Befehl enthält "|":

Funktioniert nicht:

define RaumZuWarm THRESHOLD Heizung_UG_Buero:measured-temp:1:23 |{fhem('set Pushbullet message Achtung, das Buero ist zu warm | Temperaturwarnung Büro | iPhone6')}

Fehlermeldung:

output of ThermostatZuWarm Thermostatwarnung @")}: Unknown command Thermostatwarnung, try help.

Funktioniert:

define RaumZuWarm THRESHOLD Heizung_UG_Buero:measured-temp:1:23 |{fhem('set Pushbullet message Temperaturwarnung Buero')}

D.h. das auszuführende Kommando wird - trotz Einschluss in ' (oder ") bei | abgeschnitten. Kann ich das Zeichen irgendwie... escapen?

2. Ich würde das gerne auf alle Räume/Thermostate ausweiten, aber das scheint auch nicht zu gehen:

define RaumZuWarm THRESHOLD .*:measured-temp:1:23 |{fhem('set Pushbullet message Temperaturwarnung @')}

Wo liegt mein Denkfehler?

Danke, Christian
FHEM 6 in einer KVM VM mit Ubuntu
HM-CFG-USB2, 2xHM-CFG-HMLAN, HM-HMUARTLGW mit 100+ HomeMatic Devices, Geofencing, Fritzbox, Unifi, HUE, Harmony-Hub, Denon-Receiver-Modul, Calendar, GardenaSmartDevice, Shelly, MQTT (zigbee2mqtt, Tasmota und Shelly) und ein wenig 1Wire.

Damian

Zitat von: Motivierte linke Hände am 19 Januar 2015, 00:57:26
Ich versuche, eine Meldung bei Überschreiten einer gewissen Raumtemperatur abzusetzen. Dabei habe ich 2 Probleme:

1. Der auszuführende Befehl enthält "|":

Funktioniert nicht:

define RaumZuWarm THRESHOLD Heizung_UG_Buero:measured-temp:1:23 |{fhem('set Pushbullet message Achtung, das Buero ist zu warm | Temperaturwarnung Büro | iPhone6')}

Fehlermeldung:

output of ThermostatZuWarm Thermostatwarnung @")}: Unknown command Thermostatwarnung, try help.

Funktioniert:

define RaumZuWarm THRESHOLD Heizung_UG_Buero:measured-temp:1:23 |{fhem('set Pushbullet message Temperaturwarnung Buero')}

D.h. das auszuführende Kommando wird - trotz Einschluss in ' (oder ") bei | abgeschnitten. Kann ich das Zeichen irgendwie... escapen?

2. Ich würde das gerne auf alle Räume/Thermostate ausweiten, aber das scheint auch nicht zu gehen:

define RaumZuWarm THRESHOLD .*:measured-temp:1:23 |{fhem('set Pushbullet message Temperaturwarnung @')}

Wo liegt mein Denkfehler?

Danke, Christian

Zu 1. Geht nur wenn, man die Befehle in eigene Funktion auslagert, Pipe lässt sich bei THRESHOLD nicht maskieren.

Zu 2. THRESHOLD Lässt sich mit * nicht generalisieren.

Gruß

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