Calendar zur Heizungssteuerung - Notify-Problem...

Begonnen von MatthiasR, 26 April 2013, 21:12:11

Vorheriges Thema - Nächstes Thema

Dietmar63

Meinst du Home Control oder Heating_Control?

Home Control kenne ich 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

AnonymousHolger


Dietmar63

ich würde die HC folgendermaßen  für jeden Raum in der fhem.cfg fest definieren:

define HeizungKueche_wt       Heating_Control HeizungKueche 05:35|25 06:15|22 06:50|18  (heizungAnAus("An", 0))
define HeizungKueche_we       Heating_Control HeizungKueche 06:45|25 07:30|22 09:00|19  (heizungAnAus("An", 1))
define HeizungKueche_uz_wt    Heating_Control HeizungKueche 05:35|25 06:15|22 06:50|16  (heizungAnAus("Ueb", 0))
define HeizungKueche_uz_we    Heating_Control HeizungKueche 06:45|25 07:30|22 08:30|16  (heizungAnAus("Ueb", 1))
define HeizungKueche_Aus      Heating_Control HeizungKueche So|00:05|off                (heizungAnAus("Aus", undef))


bei mir ist die Funktion heizungAus so definiert:

sub heizungAnAus($$) {
   my ($myState,  $testWe) = @_;

   #we ermitteln (kopierter Code)
   my ($sec,$min,$hour,$mday,$month,$year,$wday,$yday,$isdst) = localtime;
   my $we = (($wday==0 || $wday==6) ? 1 : 0);
   if(!$we) {
     my $h2we = $attr{global}{holiday2we};
     $we = 1 if($h2we && $value{$h2we} && $value{$h2we} ne "none");
   }
   $testWe = $we if (!defined($testWe));

   my $state = ReadingsVal("Heizung", "state", "Aus");
   my $ret = ($state eq $myState && $testWe == $we);
   return $ret;
}


so dass immer das Reading des dummys Heizung angibt in welchem Modus die Heizungen laufen sollen.

das dummy Heizung ist so definiert:


define Heizung                dummy
attr   Heizung                icon icoTermHaus
attr   Heizung                room  Wohnzimmer
attr   Heizung                group Commands
attr   Heizung                webCmd Aus:Ueb:An


so ist es mir schon allein über die Oberfläche möglich durch das Ändern des dummys die Heizung in die verschiedenen Modi Aus, (Ueb)ergangszeit bzw. An zu versetzen.

Wenn das über die Oberfläche läuft musst du das dummy nur noch über die Calenderfunktion verändern.
Das Modul Calender kenne ich nicht. Aber die FM deutet darauf hin, dass deine Kalendereinträge nicht richtig geparst werden können. Alle FM beziehen sich auf Abfragen der uid, der zentralen Identifikation eines ical-Kalendereintrags.

Das Problem mußt du also dort bei der Definition der Kalendereinträge suchen.
Probier mal mehr herauszufinden, indem du den loglevel des Calenders auf 3 setzt.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

AnonymousHolger

Hallo Dietmar, danke für die Erklärung.

Wenn ich deinen Code richtig interpretiere:
Dummy Heizung kann An / Aus oder Ueb sein
Den Wert Heizung setzt du dann z.B. Manuell oder Kalender
In Abhängigkeit von Status Wochenend oder Feiertag und Satus Heizung, wird eines deiner Heizprofile ausgewählt.

Ist wohl in der Tat der bessere Ansatz, als alle Heizungsparameter im Kalender zu übergeben. Ich übergebe im Kalenderevant dann halt nur die Flags.

Ich definiere mir dann, wie in deinem Beispiel ein paar Standardprofile (Wochentag, WE, Übergangszeit, Abwesend/HeizungAUs), die dann ja nachdem welche Flags (Dummies) gesetzt sind, angezogen werden.

Dann kann ich in meiner KalenderDatei z.B. diese Flags (Dummies) definieren.

Eine Zeile deines Codes verstehe ich jedoch nicht

Heating_Control HeizungKueche So|00:05|off                (heizungAnAus("Aus", undef))

Was bedeuted der So|00:05|off ???? sollte hier nicht immer mir einer Zeit begonnen werden ?



 

Dietmar63

Es handelt sich um die Definition Heizung "Aus".

in der Übersicht hatte ich noch folgendes nicht erklärt.
Es gibt bei mir noch ein notify, das bei eine Änderung des dummys Heizung die Funktion Heating_Control_SetAllTemps() ausführt.

Sie aktualisiert dann alle HC(liegen in Form eines hash vor) und wertet die aktuellen Urzeiten und den dummy-Parameter aus, und setzt die aktull gültige Temperatur.

Im Status Heizung "Aus" wird dann bei mir in der Regel die Temperatur von Sonntag 00:05 Uhr eingestellt, egal wann man das dummy  Heizung "Aus" stellt. Der Eintrag So|00:05|off gilt dann für die ganze Woche. Gleiches gilt dann auch wenn ich die das dummy Heizung wieder "An" stelle. Dann wird die für alle Definitionen gültige Temperatur eingestellt.

define HeizStatus2            notify Heizung:.*                          {Heating_Control_SetAllTemps()}
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

AnonymousHolger

Hallo Dietmar,

habe nun die ersten Schritte vorgenommen, habe aber wohl noch ein prinzipielles Problem.

Für den Anfang habe ich einmal folgendes definiert:


define FHT_UG_WohnZ_Control heating_control FHT_UG_WohnZ 06:30|24.0|07:30|21.5|15:25|24.0|22:30|19.0
attr FHT_UG_WohnZ_Control room 1_HEIZUNG
attr FHT_UG_WohnZ_Control group HEIZUNGAKTUELL


Erwartungsgemäss sollte also zu den entpsrechenden Schaltzeiten ein Kommando an die FHT abgesetzt werden.

Define scheint korrekt angenommen zu sein (siehe 1.screenshot), aber ich erhalte um 15:25 keine Ansteuerung der FHT_UG_WohnZ :-( (siehe 2.screenshot vom Log).

Wo liegt mein Denkfehler ?

Gruss

Holger

stromer-12

Zitat von: AnonymousHolger schrieb am So, 26 Mai 2013 16:22Für den Anfang habe ich einmal folgendes definiert:


define FHT_UG_WohnZ_Control heating_control FHT_UG_WohnZ 06:30|24.0|07:30|21.5|15:25|24.0|22:30|19.0

Wo liegt mein Denkfehler ?
Zu viele Pipes gesetzt.


define FHT_UG_WohnZ_Control heating_control FHT_UG_WohnZ 06:30|24.0 07:30|21.5 15:25|24.0 22:30|19.0

FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL

AnonymousHolger

Stimmt ;-) ... Tomaten auf den Augen ;-) .. Danke .... dann mach ich mal weiter und melde mich bei weiteren Problemen  ;-).

AnonymousHolger

Hallo Dietmar,

jetzt habe ich die möglichen Profile für unterschiedliche Randbedingungen eingepflegt

(Gäste da, ZuHause (entgegen der üblichen Arbeitsrhythmen), Homeoffice (Büro auch heizen, ...), Abwesend, und natürlich Wochenend, ...)

Deine Routine für die MyUtils habe ich entsprechend um meine zus. Parameter erweitert.

Scheint zu funktionieren (keine Fehlereinträge).

Das ganze schaut dann in meiner Übersicht folgendermassen aus (siehe Screenshot).

Die Parameter (bis auf Wochenend/Feiertag) kann/will ich manuell (ggf später über Kalenderabfrage) setzen.

Unübersichtlich bleibt aber auf diese Weise aktuell die Info, welches Profil bzgl. der Bedingungen aktiv ist, bzw. Inaktiv ist.

Hast du dafür Tips ?


### Sub Heizungsprofil in 99_MyUtils ReturnValues:
### Heizungsprofil(Jahreszeit(Sommer,Uebergang,Winter), WochenEnd_Feiertag(0,1), Gaeste(Ja,Nein), Homeoffice(Ja,Nein), zuHause (Ja,Nein), Abwesend (Ja,Nein)

############ Start OG GaesteZimmer & Bad Einstellung bei Nutzung (Gaeste = Ja) oder nicht (Gaeste = Nein)
####### Gäste & nichtAbwesend = "G"
define FHT_OG_Bad_Control_G heating_control FHT_OG_Bad 07:00|22.00 09:30|18.0 22:00|21.0 22:30|18.0 (Heizungsprofil(undef, undef, "Ja", undef, undef, "Nein"))
attr FHT_OG_Bad_Control_G room 1_HEIZUNG
attr FHT_OG_Bad_Control_G group HEIZUNGAKTUELL
define FHT_OG_SchlafZ_Control_G heating_control FHT_OG_SchlafZ 07:30|21.0 09:30|18.0 22:00|21.0 22:30|18.0 (Heizungsprofil(undef, undef, "Ja", undef, undef, "Nein"))
attr FHT_OG_SchlafZ_Control_G room 1_HEIZUNG
attr FHT_OG_SchlafZ_Control_G group HEIZUNGAKTUELL
######## keineGäste & nichtAbwesend = "nG"
define FHT_OG_Bad_Control_nG heating_control FHT_OG_Bad 05:00|16.0 (Heizungsprofil(undef, undef, "Nein", undef, undef, "Nein"))
attr FHT_OG_Bad_Control_nG room 1_HEIZUNG
attr FHT_OG_Bad_Control_nG group HEIZUNGAKTUELL
define FHT_OG_SchlafZ_Control_nG heating_control FHT_OG_SchlafZ 05:05|16.0 (Heizungsprofil(undef, undef, "Nein", undef, undef, "Nein"))
attr FHT_OG_SchlafZ_Control_nG room 1_HEIZUNG
attr FHT_OG_SchlafZ_Control_nG group HEIZUNGAKTUELL
############# Ende OG GaesteZimmer & Bad

############ Start OG Arbeitszimmer mit und ohne Homeoffice Definition
####### Homeoffice & nichtAbwesend = "H"
define FHT_OG_AZ_Control_H heating_control FHT_OG_AZ 07:35|21.5 18:00|14.0 (Heizungsprofil(undef, undef, undef, "Ja", undef, "Nein"))
attr FHT_OG_AZ_Control_H room 1_HEIZUNG
attr FHT_OG_AZ_Control_H group HEIZUNGAKTUELL
####### kein Homeoffice & nichtAbwesend = "nH"
define FHT_OG_AZ_Control_nH heating_control FHT_OG_AZ 05:10|16.0 (Heizungsprofil(undef, undef, undef, "Nein", undef, "Nein"))
attr FHT_OG_AZ_Control_nH room 1_HEIZUNG
attr FHT_OG_AZ_Control_nH group HEIZUNGAKTUELL
############# Ende OG GaesteZimmer & Bad




Dietmar63

Da hast du recht - ich steuere nur zwei Heizungen Küche und Wohnzimmer und habe nicht eine so detailierte Logik nötig.
Es gibt zur Zeit nichts was das darstellen kann.

Da ich der Autor des Moduls HC bin, werde ich mir etwas einfallen lassen.
Eine Idee habe ich schon.

Bei mir sieht die Übersicht so aus:

(siehe Anhang / see attachement)

Den Temeraturwerten kann man nicht ansehen, dass die ensprechenden HC nicht aktiv sind.
Es handelt sich immer um die Temperaturen, die geschaltet wären, wenn die Bedinung true wäre.

Ich könnte den state auf "inactive" setzen, wenn die Bedingung "false" ergibt.
Wenn es funzt melde ich mich.  
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Dietmar63

Wie sähe das aus? Das °C stammt von einem stateformat.

 
(siehe Anhang / see attachement)


Ich werde die Änderung noch ein wenig prüfen und dann einchecken.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

AnonymousHolger

Ich finde .... das sieht sogar sehr gut aus ;-) ....

Da mache ich gerne den BetaTester ;-).

Dietmar63

neue Version von HC eingecheckt - bitte prüfen, ob es ok ist.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

AnonymousHolger

Super, habs schon installiert.

Aktuell zeigt es für alle meine Profile Inactive an, aber das schiebe ich erst einmal auf meine fehlerhafte Routine in der MyUtils.

Ich werde Morgen noch einmal ausführlicher debuggen und mich dann noch mal melden

Vielen Dank für die schnelle Unterstützung.

Gruss

Holger

AnonymousHolger

Hallo Dietmar,

habe ein einfaches Beispiel definiert:

Dummy "Gaeste" steht auf "Ja" und Dummy "Abwesend" steht auf "Nein".


####### Gäste & nichtAbwesend = "G"
define FHT_OG_Bad_Control_G Heating_Control FHT_OG_Bad 07:00|22.00 09:30|18.0 22:00|21.0 22:30|18.0
attr FHT_OG_Bad_Control_G group HEIZUNGAKTUELL
attr FHT_OG_Bad_Control_G room 1_HEIZUNG
define FHT_OG_SchlafZ_Control_G Heating_Control FHT_OG_SchlafZ 07:30|21.0 09:30|18.0 22:00|21.0 22:30|18.0 ($Gaeste eq "Ja" && $Abwesend eq "Nein")
attr FHT_OG_SchlafZ_Control_G group HEIZUNGAKTUELL
attr FHT_OG_SchlafZ_Control_G room 1_HEIZUNG


Obwohl die FHT_OG_Bad_Control_G aufgrund der fehlenden Bedingung immer active sein sollte, wird es als inactive angezeigt.
Gleiches gilt für FHT_OG_SchlafZ_Control_G für die die Bedingung eigenlich erfüllt sein sollte.

Siehe Screenshot ...