Neues Modul - Heating_Control, WeekdayTimer

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

Vorheriges Thema - Nächstes Thema

Mitch

schau dir doch mal bitte das Commandref an:

ZitatdelayedExecutionCond
defines a delay Function. When returning true, the switching of the device is delayed until the function retruns a false value. The behavior is just like a windowsensor.

Example:
    attr hc delayedExecutionCond isDelayed("%HEATING_CONTROL","%WEEKDAYTIMER","%TIME","%NAME","%EVENT") 
   
the parameters %HEATING_CONTROL(timer name) %TIME %NAME(device name) %EVENT are replaced at runtime by the correct value.

Example of a function:
    sub isDelayed($$$$$) {
       my($hc, $wdt, $tim, $nam, $event ) = @_;
       
       my $theSunIsStillshining = ...
   
       return ($tim eq "16:30" && $theSunIsStillshining) ;   
    }
   

Das mit disable und enable war "damals" ein Workaround
FHEM im Proxmox Container

lenn1

Ok, danke für den Hinweis.
Das Wiki ist dann ja schon etwas veraltet.

Wenn das behavior just like a windowsensor ist, kann ich doch auch einfach bei windowsensor meinen hinzufügen oder?

Mitch

FHEM im Proxmox Container

ripperle

Kann man dem heating control device auch mehrere geräte zuordnen?
Habe im wohnzimmer 2 Thermostate welche den gleichen Heizplan haben sollen...

Dietmar63

man kann soweit ich weiß eine Gruppe definieren.
Dann wird die Gruppe aber nicht automatisch als Heizung erkannt.

Du kannst dann dass commandTemplate  vorgeben:
attr HeizungKueche_an_wt commandTemplate set $NAME desired-temp $EVENT ;
und eventuell noch switchInThePast auf 1 setzen:
attr HeizungKueche_an_wt switchInThePast 1
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

ToKa

Hallo zusammen,

ich habe ein Problem mit $we und Feiertagen. Heute am Karfreitag erkennt Heating_Control über $we, dass ein Feiertag ist und benutzt dann aber sowohl die Einstellungen für Freitag als auch die für das Wochenende. Ist das so gewollt?

Internals:
   COMMAND    { myHeatingControl($NAME,$EVENT) }
   CONDITION
   DEF        E2.ez.HR.Heizung de Mo-Fr|06:00|comfort Mo-Fr|07:30|eco Mo-Fr|15:30|comfort Mo-Fr|00:30|eco $we|08:00|comfort $we|01:00|eco { myHeatingControl($NAME,$EVENT) }
   DEVICE     E2.ez.HR.Heizung
   GlobalDaylistSpec
   LANGUAGE   de
   NAME       hc.01.E2.ez.HR.Heizung
   NR         214
   Profil 0: Sonntag 01:00:00 eco, 08:00:00 comfort
   Profil 1: Montag 00:30:00 eco, 06:00:00 comfort, 07:30:00 eco, 15:30:00 comfort
   Profil 2: Dienstag 00:30:00 eco, 06:00:00 comfort, 07:30:00 eco, 15:30:00 comfort
   Profil 3: Mittwoch 00:30:00 eco, 06:00:00 comfort, 07:30:00 eco, 15:30:00 comfort
   Profil 4: Donnerstag 00:30:00 eco, 06:00:00 comfort, 07:30:00 eco, 15:30:00 comfort
   Profil 5: Freitag 00:30:00 eco, 01:00:00 eco, 06:00:00 comfort, 07:30:00 eco, 08:00:00 comfort, 15:30:00 comfort
   Profil 6: Samstag 01:00:00 eco, 08:00:00 comfort
   Profil 7: Wochenende 01:00:00 eco, 08:00:00 comfort
   STATE      nächste Schaltung: 2017-04-14 15:30:00 comfort ==> comfort
   STILLDONETIME 0
   TYPE       Heating_Control
   Readings:
     2017-04-14 09:45:02   currValue       comfort
     2017-04-13 16:47:38   desired-temp    18.0
     2017-04-13 17:02:02   disabled        0
     2017-04-14 09:45:02   nextUpdate      2017-04-14 15:30:00
     2017-04-14 09:45:02   nextValue       comfort
     2017-04-14 09:45:02   state           comfort
   SWITCHINGTIMES:
     Mo-Fr|06:00|comfort
     Mo-Fr|07:30|eco
     Mo-Fr|15:30|comfort
     Mo-Fr|00:30|eco
     $we|08:00|comfort
     $we|01:00|eco
   Timer:
     Hc.01.e2.ez.hr.heizung_3:
       HASH       hc.01.E2.ez.HR.Heizung
       MODIFIER   3
       NAME       hc.01.E2.ez.HR.Heizung_3
     Hc.01.e2.ez.hr.heizung_5:
       HASH       hc.01.E2.ez.HR.Heizung
       MODIFIER   5
       NAME       hc.01.E2.ez.HR.Heizung_5
       immerSchalten 1
     Hc.01.e2.ez.hr.heizung_settimerofday:
       HASH       hc.01.E2.ez.HR.Heizung
       MODIFIER   SetTimerOfDay
       NAME       hc.01.E2.ez.HR.Heizung_SetTimerOfDay
       SETTIMERATMIDNIGHT 1
     Hc.01.e2.ez.hr.heizung_delayed:
       HASH       hc.01.E2.ez.HR.Heizung
       MODIFIER   delayed
       NAME       hc.01.E2.ez.HR.Heizung_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:
         01:00:00   eco
         08:00:00   comfort
       1:
         00:30:00   eco
         06:00:00   comfort
         07:30:00   eco
         15:30:00   comfort
       2:
         00:30:00   eco
         06:00:00   comfort
         07:30:00   eco
         15:30:00   comfort
       3:
         00:30:00   eco
         06:00:00   comfort
         07:30:00   eco
         15:30:00   comfort
       4:
         00:30:00   eco
         06:00:00   comfort
         07:30:00   eco
         15:30:00   comfort
       5:
         00:30:00   eco
         01:00:00   eco
         06:00:00   comfort
         07:30:00   eco
         08:00:00   comfort
         15:30:00   comfort
       6:
         01:00:00   eco
         08:00:00   comfort
       7:
         01:00:00   eco
         08:00:00   comfort
   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      1492142400
       PARA       comfort
       TIME       06:00
       TAGE:
         1
         2
         3
         4
         5
     2:
       EPOCH      1492147800
       PARA       eco
       TIME       07:30
       TAGE:
         1
         2
         3
         4
         5
     3:
       EPOCH      1492176600
       PARA       comfort
       TIME       15:30
       TAGE:
         1
         2
         3
         4
         5
     4:
       EPOCH      1492122600
       PARA       eco
       TIME       00:30
       TAGE:
         1
         2
         3
         4
         5
     5:
       EPOCH      1492149600
       PARA       comfort
       TIME       08:00
       TAGE:
         7
     6:
       EPOCH      1492124400
       PARA       eco
       TIME       01:00
       TAGE:
         7
   Profile_idx:
     0:
       01:00:00   6
       08:00:00   5
     1:
       00:30:00   4
       06:00:00   1
       07:30:00   2
       15:30:00   3
     2:
       00:30:00   4
       06:00:00   1
       07:30:00   2
       15:30:00   3
     3:
       00:30:00   4
       06:00:00   1
       07:30:00   2
       15:30:00   3
     4:
       00:30:00   4
       06:00:00   1
       07:30:00   2
       15:30:00   3
     5:
       00:30:00   4
       01:00:00   6
       06:00:00   1
       07:30:00   2
       08:00:00   5
       15:30:00   3
     6:
       01:00:00   6
       08:00:00   5
     7:
       01:00:00   6
       08: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:
   alias      Zeitschaltung
   commandTemplate set $NAME desired-temp $EVENT
   disable    0
   group      Heizungssteuerung
   room       Zentrale Steuerung
   sortby     2
   stateFormat nächste Schaltung: nextUpdate currValue ==> nextValue


Gruß
Torsten
RaspberryPi3 mit RaZberry2 und Conbee II
Fibaro: FGWPE/F-101 Switch & FIBARO System FGWPE/F Wall Plug Gen5, FGSD002 Smoke Sensor
EUROtronic: SPIRIT Wall Radiator Thermostat Valve Control
Shelly2.5 Rollladenaktoren
Zipato Bulb 2, Osram und InnrLight

Dietmar63

Ich befürchte, dadurch dass du neben der Definition für Fr auch $we abgeben hast, wird beides geschaltet.
Intern überstehen we Angaben sonstige Angaben nicht
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

ToKa

Hallo Dietmar,

klar gibt es Einträge für Freitag und für $we (siehe List im vorherigen Post). Ich habe erwartet, dass bei einem Feiertag, der auf einen Wochentag fällt (und damit ist ja $we gesetzt) die Wochenendeinstellungen die normalen Einstellungen überschreiben. Jetzt werden beide Einstellungen für den Freitag übernommen, was zu unsinnige Schaltungen führt.

Gruß
Torsten
RaspberryPi3 mit RaZberry2 und Conbee II
Fibaro: FGWPE/F-101 Switch & FIBARO System FGWPE/F Wall Plug Gen5, FGSD002 Smoke Sensor
EUROtronic: SPIRIT Wall Radiator Thermostat Valve Control
Shelly2.5 Rollladenaktoren
Zipato Bulb 2, Osram und InnrLight

Dietmar63

Ja,

Und welche Wochentagsschaltung soll durch eine we-Angabe nicht ausgeführt werden?
Die erste, die zweite oder die dritte? Alle?

Ich habe deshalb we und !we voneinander getrennt.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

ToKa

Hallo Dietmar,

z.B. am Karfreitag darf m.E. keine der Wochentagsschaltungen ausgeführt werden, sondern nur alle vom "Wochenende=Feiertag".

Verstehe ich Dich aber richtig, dass man mit der Kombination von $we und !$we das von mir erwartete Verhalten erreichen kann?

Gruß
Torsten
RaspberryPi3 mit RaZberry2 und Conbee II
Fibaro: FGWPE/F-101 Switch & FIBARO System FGWPE/F Wall Plug Gen5, FGSD002 Smoke Sensor
EUROtronic: SPIRIT Wall Radiator Thermostat Valve Control
Shelly2.5 Rollladenaktoren
Zipato Bulb 2, Osram und InnrLight

Dietmar63

#865
Ich habe deshalb mehrere Profile definiert {we,!we}x{übergang, aus, ein}x{Küche, Wohnzimmer}
Zwischen denen automatisch oder per Dummy gewechselt wird.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

ToKa

Hallo Dietmar,

habe es jetzt mit der Kombination aus $we und !$we probiert. Das sieht für mich gut aus, der nächste Freitag wird seit heute Nacht wieder als Wochentag behandelt und der Ostermontag wird als Feiertag/Wochenende behandelt.

Beste Grüße
Torsten
RaspberryPi3 mit RaZberry2 und Conbee II
Fibaro: FGWPE/F-101 Switch & FIBARO System FGWPE/F Wall Plug Gen5, FGSD002 Smoke Sensor
EUROtronic: SPIRIT Wall Radiator Thermostat Valve Control
Shelly2.5 Rollladenaktoren
Zipato Bulb 2, Osram und InnrLight

lenn1


BadezimmerFensterkontakt:doorWindow:.* {
if (ReadingsVal("HCAutomatik", "state", "") eq "on") {
  if ((Value("BadezimmerFensterkontakt") eq "open")) {
    fhem("define at_bad_fensteroffentimer at +00:02:00 set BadezimmerThermostat thermostatSetpointSet 4");
  }  else  {
    fhem("set BadezimmerThermostat thermostatSetpointSet 18");
    fhem("delete at_bad_fensteroffentimer") if (defined($defs{'at_bad_fensteroffentimer'}));;;;
  }
}
}


Also,

mein Problem liegt nun darin, dass die Temperatur sobald das Fenster wieder geschlossen wird, nicht auf die Heizplantemperatur gestellt wird, sondern auf eine von mir im notify definierte.
Den Fensterkontakt hab ich als Attribut drin und er meldet auch {"open","closed"}

Ich suche im Grunde eine Möglichkeit den Heizplan wieder zu starten, ähnlich wie wenn man ihn gerade definiert hat, damit die Temperaturen richtig eingestellt werden.



Grüße
Lennart

PS: Ich hab das commandref gelesen. (bevor wieder der Hinweis darauf kommt.. ::))



FHEM_Starter

#868
Hallo Toka, hallo Dietmar,

auch ich bin bisher davon ausgegangen, dass an einem Feiertag (ermittelt über eine holiday Datei) bei gesetzem $we immer die Zeiten des WeekdayTimers aus dem Wochenende ausgeführt werden.
@Dietmar: Ist es in Deinem Modul nicht möglich, die Variable $we höher zu behandeln als den $wday?
@Toka Kannst Du Deine Definition hier bitte posten?

Ich arbeite mit vielen WeekDayTimern und würde eine generische Lösung vor einem Workaround bevorzugen. Hier ein Beispiel mit dem Ergebnis, dass am Ostermontag um 06:xx Uhr geschaltet wurde.
define Timer_test WeekdayTimer UG_AZ_Licht_Schrank MO-FR|{sunrise(+40,"06:00:40","08:05:40")}|on SA|{sunrise(+40,"08:00:40","08:05:40")}|on SO|{sunrise(+40,"08:30:40","08:35:40")}|on (ReadingsVal("Besuch_WZI", "state", "") ne "heute")

Edit:
define Timer_test WeekdayTimer UG_AZ_Licht_Schrank !$we|{sunrise(+40,"06:00:40","08:05:40")}|on SA|{sunrise(+40,"08:00:40","08:05:40")}|on SO|{sunrise(+40,"08:30:40","08:35:40")}|on (ReadingsVal("Besuch_WZI", "state", "") ne "heute")

Mit der letzten Änderung bin ich einen Schritt weiter. Aber die Frage, wenn ein Feiertag auf einen Samstag fällt, ist damit immer noch nicht gelöst. Schön wäre z.B ein Konstrukt wie:
$we außer Samstag oder !$we außer Mittwoch etc.


Danke und weiterhin frohe Ostern.
Wolfgang

ToKa

Hallo Wolfgang,

da ich nur zwischen Wochentagen und Wochenende unterscheide, klappt das bei mir mit $we und !$we.

E2.ez.HR.Heizung de !$we|06:00|comfort !$we|07:30|eco !$we|15:30|comfort !$we|00:30|eco $we|08:00|comfort $we|01:00|eco { myHeatingControl($NAME,$EVENT) }

Ich stimme Dir aber zu, dass eine generelle Lösung (höhere Priorisierung von $we gegenüber wday) aus Anwendersicht besser wäre, als mit mehreren HC od WDT zu arbeiten. Was für mich auch noch ginge, wäre wenn man im Ausführungsteil $we und den aktuellen Tag der Ausführung an eine eigene Funktion übergeben könnte.

Beste Grüße
Torsten
RaspberryPi3 mit RaZberry2 und Conbee II
Fibaro: FGWPE/F-101 Switch & FIBARO System FGWPE/F Wall Plug Gen5, FGSD002 Smoke Sensor
EUROtronic: SPIRIT Wall Radiator Thermostat Valve Control
Shelly2.5 Rollladenaktoren
Zipato Bulb 2, Osram und InnrLight