Ich möchte immer das Äquivalent einer Radiator geöffnet haben. Dann brauche ich kein Bypass für wenn all Radiatoren geschlossen sind. Darum setze ich eine valveOffset von 5 bis 10%. Leider sehe ich immer Radiatoren mit ein valvePosition von 0%. Die Korrektur der valvePosition ist nicht gut.
Ich habe
if($shash->{type} =~ /HeatingThermostatPlus/ and $hash->{TYPE} eq "MAXLAN") {
readingsBulkUpdate($shash, "valveposition", int($valveposition*MAX_ReadingsVal($shash,"maxValveSetting")/100));
} else {
readingsBulkUpdate($shash, "valveposition", $valveposition);
}
ersetzt bei
if($shash->{type} =~ /HeatingThermostatPlus/)
{ if ($hash->{TYPE} eq "MAXLAN")
{
readingsBulkUpdate($shash, "valveposition", int(MAX_ReadingsVal($shash,"valveOffset")+$valveposition*(MAX_ReadingsVal($shash,"maxValveSetting")-MAX_ReadingsVal($shash,"valveOffset"))/100));
} else {
readingsBulkUpdate($shash, "valveposition", int(MAX_ReadingsVal($shash,"valveOffset")+$valveposition));
}
} else {
readingsBulkUpdate($shash, "valveposition", $valveposition);
}
Ich weiss nicht ob es 100% Richtig ist, aber die kleinste Öffnung von valvePosition = valveOffset.
Vielleicht is valvePosition relative zu valveOffset. Probier doch mal, welches valvePosition du bekommst, wenn du valveOffset sehr groß stellst (z.B. 50) und ob die Heizung dann warm wird.
Man kann den Soll Temperatur sehr hoch oder niedrig setzen. Die valvePosition wird die niedrigste und höchste Wert erreichen. Ohne Korrektur sind die Werte begrenzt zwischen 0 und maxValveSetting. Mit Korrektur liegen die Werte zwischen valveOffset und maxValveSetting. Weiter müssen die Werte Stabile sein, dass heisst ob via CUL oder MAXLAN ermittelt wird, die Werte müssen gleich sein.
Ich glaube das jetzt die Software Richtig ist. Ich konnte keine Abweichungen feststellen.