FHEM > Codeschnipsel

FHT-Boost - erweiterte Version

<< < (2/4) > >>

Jumbo:
hi Mathias,

kannst du deinen Code bitte mal ganz posten ?

danke dir

broadway:

--- Zitat von: maeb3 schrieb am Di, 22 Januar 2013 18:05 ---Wichtiger Hinweis:
damit die oben vorgestellte Lösung korrekt funktioniert, darf man nicht gleichzeitig die Funktion "addlog" verwenden, um die desired-temp in regelmäßigen Abständen ins Logfile zu schreiben.

In einem anderen Beitrag wird "addLog" empfohlen, damit im Temperatur-Plot die desired-temp keine Lücken aufweist (z.B. vom Tagesbeginn bis zur ersten Änderung des Tages bzw. von der letzten Änderung bis zum aktuellen Zeitpunkt).

  define desiredTemp_writer at +*00:30 {addLog("Thermostat_19","desired-temp")}

Wenn man diese Funktion nutzt, übernimmt das Boost-Konstrukt die 30 C nach einem addLog-Eintrag als tatsächliche Zieltemperatur. Wer das nicht berücksichtigt, heizt sich ordentlich ein (hatte gestern schon 26 C in der Wohnung als ich nach Hause kam ;-).

Nach Abschalten von addLog funktioniert Boost bei mir aber prima.

Grüße,
 Matthias
--- Ende Zitat ---


Hallo Matthias,

Ich verwende die Funktion nicht. Aber das Verhalten wundert mich insofern, da mit

--- Code: ---if($soll lt 30.0){\
            fhem "set Bd.Boost.Target $soll";;\
--- Ende Code ---


(also "Sollwert kleiner 30 -> aktualisiere Target") verhindert wird, dass die "reservierte" Boost Temperatur von 30° als Target gesetzt wird. Da müsste ja addLog() schon schreibend auf die desired-temp zugreifen?

sengelking:
Also theoretisch müsste für Ventilöffnung 100% die desired-temp auf 30.5 gestellt werden, so geht der FHT dann auf "on" bei 30 geht er nur auf 30 und öffnet die Ventile nicht bis auf 100%. Zumindest war das meine Erfahrung, daher habe ich meinen boost damals auch auf 30.5 gestellt...

broadway:

--- Zitat von: sengelking schrieb am Mi, 23 Januar 2013 19:54 ---Also theoretisch müsste für Ventilöffnung 100% die desired-temp auf 30.5 gestellt werden, so geht der FHT dann auf "on" bei 30 geht er nur auf 30 und öffnet die Ventile nicht bis auf 100%. Zumindest war das meine Erfahrung, daher habe ich meinen boost damals auch auf 30.5 gestellt...
--- Ende Zitat ---


Diese klitzekleine Optimierung kann man natürlich schnell selbst einfügen. Mein Ventil öffnet mit 30° auf 97%.

maeb3:
Hallo,

Meine fhem.cfg sah folgendermaßen aus:


--- Zitat ---
define TC_boost_State dummy
define TC_boost_Target dummy

define TC_boost_Notify notify Thermostat_19E4EA:desired-temp:.* {\
     my $soll=ReadingsVal("Thermostat_19E4EA", "desired-temp", 0);;\
     if($soll lt 30.0){\
            fhem "set TC_boost_Target $soll";;\
            if(Value("TC_boost_State") ne "on"){\
                my $ist=ReadingsVal("Thermostat_19E4EA", "measured-temp", 0);;\
                if(($soll-$ist) gt 1.5){\
                   fhem "set Thermostat_19E4EA desired-temp 30.0";;\
                   fhem "set TC_boost_State on";;\
                   fhem "attr TC_boost_Check disable 0";;\
                }\
            }\
    }\
}

define TC_boost_Check at *00:02:00 {\
 if(Value("TC_boost_State") eq "on"){\
          if((Value("TC_boost_Target") - ReadingsVal("Thermostat_19E4EA", "measured-temp", 0)) lt 1){\
                my $daytemp=Value("TC_boost_Target");;\
                fhem "set Thermostat_19E4EA desired-temp $daytemp";;\
                fhem "set TC_boost_State off";;\
                fhem "attr TC_boost_Check disable 1";;\
          }\
     }\
 else {\
          fhem "set TC_boost_State off";;\
          fhem "attr TC_boost_Check disable 1";;\
 }\
}
attr TC_boost_Check disable 1

--- Ende Zitat ---


Dies habe ich mehr oder weniger direkt von oben übernommen.

Außerdem habe ich noch:


--- Zitat ---
define Thermostat_19E4EA CUL_HM 19E4EA
attr Thermostat_19E4EA actCycle 000:10
attr Thermostat_19E4EA actStatus unknown
attr Thermostat_19E4EA alias Thermostat
...
define FileLog_Thermostat_19E4EA FileLog ./log/%Y-%m-Thermostat_19E4EA.log Thermostat_19E4EA
attr FileLog_Thermostat_19E4EA logtype text
attr FileLog_Thermostat_19E4EA room Logfiles
...
define desiredTemp_writer at +*00:30 {addLog("Thermostat_19E4EA","desired-temp")}

--- Ende Zitat ---


Durch die letzte Zeile (desiredTemp_writer) wird im Logfile alle 30 Minuten die aktuelle desired-temp geschrieben, selbst wenn diese sich nicht geändert hat.

Nach meinem Verständnis passiert folgendes:
- Mit jedem Update der desired-temp schlägt TC_boost_notify an (z.B. desired-temp=20,5)
- Wenn dann das Delta > 1,5 und desired < 30 ist (z.B. measured=18, desired=20,5) wird TC_boost_Target auf 20,5 gesetzt und desired auf 30
- außerdem wird dann TC_boost_State on gesetzt und der TC_boost_check gestartet
- Alle 2 Minuten wird geprüft, ob measured bis auf 1 C an TC_boost_Target rangekommen ist (damit wird dann der Boost beendet)
- Wenn in der Zwischenzeit aber der desiredTemp_writer zuschlägt (alle 30 Minuten), wird die aktuelle desired Temp (30 C) geschrieben
Damit ist beim TC_boost_notify $soll=30 und somit die erste Bedingung nicht erfüllt ( if($soll lt 30.0) ) und dann wird geheizt, bis die 30 erreicht sind.

Oder habe ich was falsch verstanden?

Grüße,
 Matthias

P.S.: So sieht meine addlog-Routine aus:


--- Zitat ---
sub
addLog($$) {
    my ($logdevice, $reading) = @_;  # device and reading to be used
    my $logentry  = ReadingsVal($logdevice,$reading,"addLog: invalid reading");
    if ($reading =~ m,state,i) {
        fhem "trigger $logdevice $logentry";
    } else {
        fhem "trigger $logdevice $reading: $logentry";
    }
}

--- Ende Zitat ---

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln