Neues Modul - Heating_Control, WeekdayTimer

Begonnen von Dietmar63, 04 Januar 2013, 19:42:26

Vorheriges Thema - Nächstes Thema

tomspatz

SORRY das schnalle ich jetzt nicht ....
Hast du mal ein Beispiel für ein solches notify?

persching

Ich hab auch eine Verständnisfrage zum Attribut delayedExecutionCond. Ich hab einen dummy der 4 verschiedene Heating_Control je Heizkörper unterscheidet. Das habe ich direkt in der Definition mit if dahinter gehängt. Jetzt wollte ich noch delayedExecutionCond nutzen, wenn meine Umwälzpumpe aus ist brauche ich auch nicht die Heizung hoch schalten, denn dann kann es auch nicht warm werden. Ich hab dazu einen Fensterkontakt als digitalen Eingang genutzt. Somit ist das dann als ReadingsVal onoff erfasst. Leider schaltet das Heating_Control unabhängig von der delayedExecutionCond.

Internals:
   COMMAND    { fhem("set $NAME desiredTemperature $EVENT") if (ReadingsVal("HC_Bad_Off_Profile", "state", "") eq "Minimal")}
   CONDITION
   DEF        OG_Bad_T mo-fr|05:05|23 mo-fr|06:30|18 mo-fr|19:10|17.5 $we|08:00|20 $we|19:00|18 { fhem("set $NAME desiredTemperature $EVENT") if (ReadingsVal("HC_Bad_Off_Profile", "state", "") eq "Minimal")}
   DEVICE     OG_Bad_T
   GlobalDaylistSpec
   LANGUAGE   de
   NAME       HC_Bad_Min
   NR         175
   Profil 0: Sonntag 08:00:00 20, 19:00:00 18
   Profil 1: Montag 05:05:00 23, 06:30:00 18, 19:10:00 17.5
   Profil 2: Dienstag 05:05:00 23, 06:30:00 18, 19:10:00 17.5
   Profil 3: Mittwoch 05:05:00 23, 06:30:00 18, 19:10:00 17.5
   Profil 4: Donnerstag 05:05:00 23, 06:30:00 18, 19:10:00 17.5
   Profil 5: Freitag 05:05:00 23, 06:30:00 18, 19:10:00 17.5
   Profil 6: Samstag 08:00:00 20, 19:00:00 18
   Profil 7: Wochenende 08:00:00 20, 19:00:00 18
   STATE      17.5
   STILLDONETIME 0
   TYPE       Heating_Control
   Readings:
     2016-06-03 19:10:01   currValue       17.5
     2016-06-03 19:10:01   nextUpdate      2016-06-04 08:00:00
     2016-06-03 19:10:01   nextValue       20
     2016-06-03 19:10:01   state           17.5
   SWITCHINGTIMES:
     mo-fr|05:05|23
     mo-fr|06:30|18
     mo-fr|19:10|17.5
     $we|08:00|20
     $we|19:00|18
   Timer:
     Hc_bad_min_2:
       HASH       HC_Bad_Min
       MODIFIER   2
       NAME       HC_Bad_Min_2
       immerSchalten 1
     Hc_bad_min_3:
       HASH       HC_Bad_Min
       MODIFIER   3
       NAME       HC_Bad_Min_3
     Hc_bad_min_settimerofday:
       HASH       HC_Bad_Min
       MODIFIER   SetTimerOfDay
       NAME       HC_Bad_Min_SetTimerOfDay
       SETTIMERATMIDNIGHT 1
     Hc_bad_min_delayed:
       HASH       HC_Bad_Min
       MODIFIER   delayed
       NAME       HC_Bad_Min_delayed
   Daynumber:
     !$we       8
     $we        7
     di         2
     do         4
     fr         5
     mi         3
     mo         1
     sa         6
     so         0
   Helper:
     daysRegExp (so|mo|di|mi|do|fr|sa|\$we|\!\$we)
     daysRegExpMessage (so|mo|di|mi|do|fr|sa|$we|!$we)
     Switchingtime:
       0:
         08:00:00   20
         19:00:00   18
       1:
         05:05:00   23
         06:30:00   18
         19:10:00   17.5
       2:
         05:05:00   23
         06:30:00   18
         19:10:00   17.5
       3:
         05:05:00   23
         06:30:00   18
         19:10:00   17.5
       4:
         05:05:00   23
         06:30:00   18
         19:10:00   17.5
       5:
         05:05:00   23
         06:30:00   18
         19:10:00   17.5
       6:
         08:00:00   20
         19:00:00   18
       7:
         08:00:00   20
         19:00:00   18
   Longdays:
     de:
       Sonntag
       Montag
       Dienstag
       Mittwoch
       Donnerstag
       Freitag
       Samstag
       Wochenende
       Werktags
     en:
       Sunday
       Monday
       Tuesday
       Wednesday
       Thursday
       Friday
       Saturday
       weekend
       weekdays
     fr:
       Dimanche
       Lundi
       Mardi
       Mercredi
       Jeudi
       Vendredi
       Samedi
       weekend
       jours de la semaine
   Profil:
     1:
       EPOCH      1464923100
       PARA       23
       TIME       05:05
       TAGE:
         1
         2
         3
         4
         5
     2:
       EPOCH      1464928200
       PARA       18
       TIME       06:30
       TAGE:
         1
         2
         3
         4
         5
     3:
       EPOCH      1464973800
       PARA       17.5
       TIME       19:10
       TAGE:
         1
         2
         3
         4
         5
     4:
       EPOCH      1464933600
       PARA       20
       TIME       08:00
       TAGE:
         7
     5:
       EPOCH      1464973200
       PARA       18
       TIME       19:00
       TAGE:
         7
   Profile_idx:
     0:
       08:00:00   4
       19:00:00   5
     1:
       05:05:00   1
       06:30:00   2
       19:10:00   3
     2:
       05:05:00   1
       06:30:00   2
       19:10:00   3
     3:
       05:05:00   1
       06:30:00   2
       19:10:00   3
     4:
       05:05:00   1
       06:30:00   2
       19:10:00   3
     5:
       05:05:00   1
       06:30:00   2
       19:10:00   3
     6:
       08:00:00   4
       19:00:00   5
     7:
       08:00:00   4
       19:00:00   5
   Shortdays:
     de:
       so
       mo
       di
       mi
       do
       fr
       sa
       $we
       !$we
     en:
       su
       mo
       tu
       we
       th
       fr
       sa
       $we
       !$we
     fr:
       di
       lu
       ma
       me
       je
       ve
       sa
       $we
       !$we
Attributes:
   delayedExecutionCond ( { if (ReadingsVal("Umwaelzpumpe", "onoff", "") == 0) } )
   group      Profile
   room       R02 Badezimmer
   switchInThePast 1
   windowSensor OG_Bad_Fensterkontakt 

C0mmanda

Moin,

habe mal eine grundlegende Frage zu der ich auch nach durchsuchen des kompletten Threads keine wirkliche Antwort gefunden habe:

Ich versuche HeatingControl mit einem command UND einer condition zu definieren was jedoch nicht klappt.

Ist es grundsätzlich möglich command UND condition zu definieren? Ich habe das Gefühl es geht nur eines von beiden.....
Falls es doch geht wäre bitte jemand so freundlich und würde mir den GENAUEN Syntax anhand eines Beispiels schreiben?
Ich versuche es seit ca. 1 Stunde und bekomme es nicht hin. Und ja, Commandref und Wiki habe ich gelesen, mehr als einmal, komme dennoch nicht klar....

Vielen Dank.

grtz
CmdA

Dietmar63

mach mal ein Beispiel wie du dir das vorstellst
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

C0mmanda

Zitat von: Dietmar63 am 23 August 2016, 12:43:25
mach mal ein Beispiel wie du dir das vorstellst

Mein Gedanke ging in diese Richtung:

define HC_Kueche Heating_Control eg_KUE_Clima 12345|6:00|day 12345|22:00|night {(subHC($NAME,$EVENT))}|(ReadingsVal("HCAutomatik", "state", "") eq "on")

Ist nur ein Beispiel.
Ich dachte mir das so dass Heating_Control die Sub (command) nach Zeitplan ausführt wenn HCAutomatik wahr ist (condition).
Andernfalls nicht.

Wobei sich mir dann als nächstes die Frage stellt ob die sub ausgeführt wird wenn die condition erst innerhalb des Zeitplans wahr wird.
(Im Beispiel also z.B. um 7Uhr).

Für mich liest sich der Syntax define <name> Heating_Control <device> [<language>] <wochentage;] <profile> <command>|<condition> grundsätzlich so als könne ich beides definieren.

Es steht auch nirgendwo geschrieben das nur eines von beiden geht. (command oder condition).
Ist auch alles kein Problem für mich um das Modul zu nutzen, ich wollte nur grundsätzlich wissen ob das vorgesehen ist weil es in meinen Augen per Syntax möglich ist, ich es aber nicht hinbekomme.

Danke.

grtz
CmdA

Dietmar63

{(subHC($NAME,$EVENT))}|(ReadingsVal("HCAutomatik", "state", "") eq "on")

so wie du es verstanden hast ist es nicht gemeint, man kann entweder einen
<command>
{fhem("set $NAME $EVENT") if(ReadingsVal("HCAutomatik", "state", "") eq "on")}
oder eine
<condition>
(ReadingsVal("HCAutomatik", "state", "") eq "on")
angeben.

Wenn du dich für <command> entscheidest musst du die Blaupause für den zu sendenden Befehl selbst angeben. $NAME $EVENT werden durch den Gerätenamen  bzw. Parameter ersetzt.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

C0mmanda

Alles klar.

Vielen Dank für die Rückmeldung. Jetzt habe ich es verstanden.

SVBE

Hallo zusammen,

erstmal vielen Dank für das tolle Modul, ich bin noch in der Anfängerphase habe aber Profianforderung :D...

Ich habe da eine Frage, ich habe keine Heizkörper da ich eine Elektrofußbodenheizung habe. Die einzelnen Heizkreise
habe ich an Homematic Aktoren angeschlossen die ich einzeln schalten kann. Einen weiteren Kreis habe ich an einen ZWave Schaltaktor angeschlossen.

Soweit so gut.

Die Temperatur nehme ich mit unterschiedlichen Sensoren auf. Erschwerend kommt hinzu das ich einen Kachelofen in Betrieb habe der die Hauptwärme
erzeugt, der Fußboden soll also nur "Fußwarm" werden...

1. Temperatur Sensor Boden
2. Verschiedene Temperatur Sensor für die Luft

Ich bräuchte also zum einen eine Abhängig von der Tageszeit und zum anderen von der Temperatur des Bodensensors.

Ist das möglich?


Vielen Dank für die Unterstützung und ein schönen Abend.

Grüße
Sven
--------------------------------------------------------
FHEM auf Raspberry
ZWAVE, DUOFERN und Homematic Funktionen: Elektro Fußbodenheizung, Rollladensteuerung, Anwesenheitsüberwachung, Alarmanlage, Lichtsteuerung
Danke an das großartige Forum!
Planung: NUKI, Homematic IP, OSRAM Lightify

Dietmar63

Ich glaube eher nicht dass dieses Modul gut geeignet ist deine Anforderung umzusetzen.

Es geht grundsätzlich davon aus, dass einem Thermostat zu den verschiedenen Tageszeiten nur eine Solltemperatur vorgegeben wird und sich dann das Thermostat selbst um die Regelung kümmert.

Du benötigst eher ein Modul, das sich ständig mit Soll- Istvergleichen einem Soll nähert.
Ein Modul, das so etwas kann ist HCS, HCS kann als device ein Heating_Control schalten.

PID20 kommt vielleicht auch in Frage. Allerdings habe ich lange nichts hier im Forum mehr zum Modul gelesen.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Hans Franz

ZitatAllerdings habe ich lange nichts hier im Forum mehr zum Modul gelesen.
Ich benutze PID20 seit drei Wintern zur Ansteuerung meiner Heizkörper mittels des Heating_Control-Moduls.
Obwohl PID-Regler, glaube ich, eigentlich optimal für schnellregelnde System sind (Motorsteuerung im PKW) wird bei meiner trägen Heizung eine Ist-Temperatur erreicht, die in der Regel maximal nur um ein halbes Grad Celsius vom Soll-Wert abweicht mit schönem, finde ich, Einschwingverhalten.
Heating_Control setzt den Sollwert in einen dummy (damit auch manuell eine abweichende Solltemperatur angeben werden kann). Ein notify auf den dummy setzt den Sollwert im PID20.
Weitere Optimierungen sollten hier im notify kein Problem sein.
Ich find's optimal! 

Gruß
Hans
Raspi
CUL, Nano-CUL
FHT8V, FHT80B, S300TH
WM1000WZ, ELRO
LW12, LD382,DS18B20

Dietmar63

 HCS kann als device ein Heating_Control schalten.

Es ist genau verdreht. Heating_Control kann HCS und pid20 steuern.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

hietzi

Hallo alle zusammen.
Ich komme hier nicht weiter evtl. hab ihr eine Lösung für mich oder aber sie ist eh einfach dann entschuldigt bitte bin noch ziemlich frisch in fhem.

Ich habe folgendes Script im Einsatz
#############Kontrolle der Gastherme ueber MAX-Schaltkontakt Beginn##################
#### Heizung: Winterbetrieb Sommerbetrieb
define HA_Heizung_Modus dummy
attr HA_Heizung_Modus alias Betriebsmodus
attr HA_Heizung_Modus group Betriebsmodus
attr HA_Heizung_Modus room System
attr HA_Heizung_Modus setList state:Winter,Sommer
attr HA_Heizung_Modus userReadings HCS_TEMP { if (ReadingsVal("HA_Heizung_Modus","state","Unbekannt") eq "Winter"){return 0} else {return 30};;}
attr HA_Heizung_Modus webCmd state
#Versuch mit HCS-Modul
define HCS_System HCS HA_Heizung_Schalter
attr HCS_System alias Heizungssteuerung
attr HCS_System deviceCmdOff desiredTemperature auto 17
attr HCS_System deviceCmdOn desiredTemperature auto 21
attr HCS_System event-on-change-reading state,devicestate,eco,overdrive
attr HCS_System exclude HA_Heizung_Schalter
attr HCS_System idleperiod 5
attr HCS_System interval 1
attr HCS_System mode valve
attr HCS_System room System
attr HCS_System sensor HA_Heizung_Modus
attr HCS_System sensorReading HCS_TEMP
attr HCS_System sensorThresholdOff 20
attr HCS_System sensorThresholdOn -1
attr HCS_System thermostatThresholdOff 0.5
attr HCS_System thermostatThresholdOn 0.5
attr HCS_System valveThresholdOff 10
attr HCS_System valveThresholdOn 40
#############Kontrolle der Gastherme ueber MAX-Schaltkontakt Ende####################


Funktioniert auch bestens nur reichen die Credits niee da ja HCS jede Minute den Status abfrägt.

Jetzte habe ich folgendes gefunden

https://forum.fhem.de/index.php/topic,37980.0.html

In diesem Fred hat jemand einen Dummy erstellt der die Credits schont :-)
define CV_Schakelaar dummy
attr CV_Schakelaar devStateIcon off:sani_heating@blue on:sani_heating@red
attr CV_Schakelaar setList state:on,off
attr CV_Schakelaar webCmd state
set CV_Schakelaar off

define CV_Schakelaar_Changed notify CV_Schakelaar {my $r1 = $value{"CV_Schakelaar"};; my $r2 = ReadingsVal("CV_Relais","desiredTemperature","off");; if ($r1 ne $r2) {fhem "set CV_Relais desiredTemperature $r1"}}

define CV_Relais Max HeatingThermostat 0d25b0

define CV_Controller HCS CV_Schakelaar
set CV_Controller interval 1
attr CV_Controller devStateIcon idle:sani_heating@blue demand:sani_heating@red
attr CV_Controller deviceCmdOn on
attr CV_Controller deviceCmdOff off
attr CV_Controller exclude CV_Relais
attr CV_Controller idleperiod 3


Nur ich habe leider keinen schimmer wie ich die beiden Scripte miteinander verbinde.
Es wäre der über drüber Hammer wenn mir hier wer helfen könnte.

Vielen Dank und lg
Chris

Andre0909

Vielleicht kann mir auch jmd helfen.
Habe diverese Weekdaytimer die auch richtig funktionieren.
Trotzdem bekomme ich bei allen mit Tag "7" einen LOG-Eintrag "in daylist now means $we(weekend) - see dokumentation!!!"
Wie bekomme ich das weg? Eine holiday-Datei ist beschrieben, die "Änderung" des WD ist bekannt, aber das Log schreibt mir da alle paar Stunden 10-12 mal die gleiche Zeile rein. Was mache ich falsch?

Dietmar63

Du verwendest vermutlich als Codierung für den Tag eine 7.
Die 7 hat sich von der Bedeutung vor einiger Zeit geändert.

Du könntest auf Symbole So-Sa oder so umstellen. Ich könnte den Hinweis herausnehmen, sollte sich ja jetzt herumgesprochen haben
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Andre0909

Ja genau nutze 7 und habe gedacht ich mache as falsch wegen dem Log-Eintrag :) Wenn das Standardmäßig kommt ist das ja dann kein Fehler. Rausnehmen wäre natürlich super. Habe gleich noch eine 2. Frage. Leider reagieren meine Somfy-Rolläden nicht immer direkt, manchmal muss der Befehl ein zweites Mal raus. Jetzt habe ich gelesen das ein repeat nicht vorgesehen ist, gibt es andere Möglichkeiten als den WD Timer einfach 2 min später nochmal zu setzen?