Modul 39_ZHK.pm - Steuerung Zentralheizung (Heizkessel) mit FHEM v.0.9b

Begonnen von epsrw1, 27 Mai 2014, 12:38:51

Vorheriges Thema - Nächstes Thema

Martin Quinke

Hallo Florian,

danke für Deine Erklärungen. Beim mir läuft immer noch der Testbetrieb mit Sensoren, die Aktoren sind noch nicht scharf. Ich beobachte zurzeit, was die alte Steuerung macht und wie die neue reagieren würde. Dabei ist mir aufgefallen, dass die Kesseltemperatur immer um zhkKesselMinDiffWw über der WW-Solltemperatur liegt, auch wenn die WW-Ladepumpe überhaupt nicht an ist. Bei einer WW-Solltemperatur von 50°C liegt die Kesseltemperatur also immer bei 58°C, egal wie die Aussentemperatur ist. Das ist natürlich ziemlich viel und nicht ganz das, was ich mir vorstellen würde. Die alte Steuerung passt nur dann die Kesseltemperatur an das WW an, wenn auch die WW-Ladepumpe läuft. Verstehe ich das irgendwie falsch? Falls nicht, was ist der Hintergrund dafür?

Zitat von: epsrw1 am 10 November 2016, 08:54:15
Besser noch, einfach bei eBay einen günstigen Stellmotor für den Mischer besorgen und wie Heizung A von FHEM steuern lassen ;)
Das werde ich wahrscheinlich machen. Ich habe einen Centra ZRA Mischer.

Danke + Gruß
Martin

epsrw1

Zitat von: Martin-Nbg am 18 November 2016, 13:20:29
Dabei ist mir aufgefallen, dass die Kesseltemperatur immer um zhkKesselMinDiffWw über der WW-Solltemperatur liegt, auch wenn die WW-Ladepumpe überhaupt nicht an ist.
ein sinnvoller Ansatz für eine sinnvolle Erweiterung.....

Bei mir hat sich diese Frage nicht gestellt da die WwSollTemp ziemlich niedrig ist und der Kessel da nur im Notfall eingreift wenn Solar es nicht packt. (ich habe 35° eingestellt, dann geht der brauchwassermischer automatisch auf vollgas und die 35 kommen auch am Wasserhahn an. zu 99% ist die Ww Temp sowieso deutlich höher durch die Sonnenkollektoren.)
dass ZHK warmwasser nachheizt bei Bedarf ist eigentlich nur dem WAF geschuldet.

Welche Logik würde in Deiner Konstellation Sinn machen? Wenn der Kessel komplett kalt ist und erst startet wenn WW benötigt wird ist die Ansprechzeit mE zu lang

Ich habe keine Ahnung, aber davon wenigstens ganz viel

Martin Quinke

Zitat von: epsrw1 am 22 November 2016, 00:51:33
Welche Logik würde in Deiner Konstellation Sinn machen? Wenn der Kessel komplett kalt ist und erst startet wenn WW benötigt wird ist die Ansprechzeit mE zu lang
Also zumindest im Winter ist die Logik der alten Steuerung (Viessmann Unomatik) und - soweit ich das in Erinnerung habe - ähnlich bei den anderen mir bekannten Steuerungen, dass die Kesseltemperatur im Heizbetrieb zunächst nur über die Außentemperatur geregelt wird (bzw. ggf. in Abhängigkeit von der Vorlauftemperatur). Also beispielsweise 40°. Wenn die Temperatur der WW-Speichers unter den Sollwert fällt, wird die Heizkreispumpe abgeschaltet (WW-Vorrangschaltung, ist aber abschaltbar und bei Mischersteuerung wahrscheinlich nicht notwendig) und die Kesseltemperatur erhöht, bis diese um 7K über der Speicher-Isttemperatur liegt. Dann wird die WW-Speicherpumpe eingeschaltet und das WW aufgeheizt. Dazu sind ggf. mehrere Brenner-Zyklen notwendig, wenn die maximale Brennertemperatur zwischendurch erreicht wird (bei mir typischerweise zwei, das ist etwas unschön). Nach Erreichen der Speicher-Solltemperatur schaltet der Brenner ab und die WW-Pumpe läuft so lange nach, bis Temperaturdifferenz zwischen Kessel- und Speicherwasser kleiner als 7K ist oder bis die Kesselwassertemperatur den eingestellten Sollwert (bzw. gemäß Vorlauf / Außentemperatur) erreicht hat. Die Maximale Nachlaufzeit beträgt 12 Minuten.

Das habe ich jetzt mehr oder weniger aus Anleitung der Unomatik zitiert. Erscheint mir aber im Groben recht sinnvoll zu sein. Im Sommer gilt wahrscheinlich die gleiche Logik, d.h. es würde tatsächlich mit kaltem Kessel angefangen. Dazu sehe ich aber keine Alternative.

Typischerweise sollte die Temperatur vom WW-Speicher bei 55° bis 60° liegen (wegen Legionellen).

Danke + Gruß
Martin

osid-timo

Hallo,
zur Legionellenvorbeugung genügt es wenn 1* pro Woche/Monat die Temperatur auf 55-60°C steigt, sonst ist die Temperatur, zur Energieeinsparung,  so niedrig (40°C) wie möglich zu halten und nur zur Brennerlaufzeitoptimierung höher zu gehen.
Gruß Oswald
FHEM Pi3: 1* CUL, 30* Homematic, 10* EnOcean
FHEM Pi3: IR-Lesekopf, BT->SMA
FHEM Pi3: ZHK, 1-wire, 1* VBus   Resol DeltaSol BS

arnoL

@ osid-timo:
ich bin ähnlicher Ansicht.

Bei mir ist 40° eher ein bisschen zu wenig. Das Brauchwasser zirkuliert bei mir nicht.
In einem Reihenhaus dauert das dann im Bad (1.Stock!) schon etwas lange bis warm kommt.
Auch ist die Speichermenge nicht allzu groß. Wenn Einer duscht/badet hat der Nächste schon kalt.

Ich werde in meinem Fall jetzt erst mal hergehn und eine Pi mit FHEM parallel die Aktionen der jetzigen Steuerung
mitschreiben lassen

  • wann schaltet Ladepumpe
  • wann schaltet Heizwasserpumpe
  • wann läuft der Brenner
  • wie ist die Kesseltemperatur
  • wie ist die Außentemperatur (geholt aus dem Internet!!)
  • Vorlauf-/Rücklauftemperatur wird zusätzlich installiert

ich bin (in meinem Fall!) immer noch davon überzeugt, dass die Außentemperatur bei mir nicht
die Kesseltemperatur anhebt/senkt sondern nur die Hysterese für das Wiedereinschalten beeinflusst.

Entsprechende Plots werden da dann genaueren Aufschluss geben.
Ich melde auf jeden Fall den weiteren Verlauf.


Gruß
Arno

Martin Quinke

Hallo zusammen,

ok, das wöchentliche Aufheizen auf 55° bis 60° ist wahrscheinlich die bessere Option, sehe ich ein. Aber auch bei 45° Warmwassertemperatur und einer Mindestdifferenz von sagen wir mal 8° (zhkKesselMinDiffWw) kommt man auf eine minimale Kesseltemperatur von 53°. Was ich bei geringen Aussentemperaturen immern noch als zu hoch empfinde.

Bei mir ist der Stand inzwischen folgender: Ich habe einen Mischermotor an den vormals manuellen Mischer gebaut und steuere diesen jetzt mit den Modulen Stellmotor und PID20 an. Das funktioniert soweit ganz gut. Mit den Regelparametern bin ich jetzt noch etwas experimentieren bei P=1, I=0.6 und D=7 gelandet. Manchmal gib es aber noch ein paar böse Überschwinger. Hat jemand eventuell andere (bessere) Werte gefunden?

Die Brennersteuerung läut jetzt noch im Mischbetrieb mit alter und neuer Steuerung parallel. Die alte habe ich auf den minimalen unteren Wert gestellt (ca. 42°). Die ZHK Steuerung habe ich über einen vorhandenen Schalteingang für einen Uhrenthermostat angeschlossen. Der Brenner geht also an, wenn ein Ein-Signal von einer der beiden Steuerungen kommt. Das Aufheizen vom Warmwasser macht noch die alte Steuerung (aus den oben genannten Gründen).

Die Ausgänge steuere ich über GPIO an. Dabei hatte ich das Problem, dass die folgende Zeile im sub BrennerStartStop
my $zhkBrennerActualState = ReadingsVal($name,$zhkBrennerFhemDev,2);
immer eine 2 zurück gibt. Ich kenne mich jetzt mit Perl nicht so gut aus, aber das Problem scheint mir zu sein, dass trotz EventMap On:0 off:1 entweder "on" oder "off" zurück gelesen wird (und nicht 0 oder 1, wie es vom Programm erwartet wird) und die Syntax etwas anders sein muss. Ich habe das versucht mit folgendem Konstrukt zu lösen:

       
if(ReadingsVal($zhkBrennerFhemDev,"state",2) eq "on"){
                $zhkBrennerActualState = 0;}
else {
                $zhkBrennerActualState = 1;}


Gerne Kommentare dazu, ob das Sinn macht. Scheint auf jeden Fall zu funktionieren. Analog müsste ich das jetzt noch für die anderen Outputs machen.

Ich schalte den Brenner ein mit dem "on" State, nicht mit dem "off" state (wegen dem oben beschriebenen Eingang der alten Steuerung).

Hier noch meine aktuelle "Wunschliste" an das Projekt:

  • Verbeserung der Warmwasser-Steuerung (siehe meine Kommentare)
  • Einstellung der Commands und Logik (Brenner Ein mit "on" bzw. 1) für die GPIO Outputs (wie beim Modul "Stellmotor" da ist das gut gelöst

Danke + viele Grüße
Martin

epsrw1

Zitat von: Martin-Nbg am 28 November 2016, 22:36:14
....... mit den Modulen Stellmotor und PID20 an. Das funktioniert soweit ganz gut. Mit den Regelparametern bin ich jetzt noch etwas experimentieren bei P=1, I=0.6 und D=7 gelandet. Manchmal gib es aber noch ein paar böse Überschwinger. Hat jemand eventuell andere (bessere) Werte gefunden?
bei mir läuft es sauber mit:
P_d:
         Mydblog:
           TIME       1480333311.7497
           VALUE      0
       P_i:
         Mydblog:
           TIME       1480333311.7497
           VALUE      40.578125
       P_p:
         Mydblog:
           TIME       1480333311.7497
           VALUE      3.125


Zitat von: Martin-Nbg am 28 November 2016, 22:36:14
Die Ausgänge steuere ich über GPIO an. Dabei hatte ich das Problem, dass die folgende Zeile im sub BrennerStartStop
my $zhkBrennerActualState = ReadingsVal($name,$zhkBrennerFhemDev,2);
immer eine 2 zurück gibt. Ich kenne mich jetzt mit Perl nicht so gut aus, aber das Problem scheint mir zu sein, dass trotz EventMap On:0 off:1 entweder "on" oder "off" zurück gelesen wird (und nicht 0 oder 1, wie es vom Programm erwartet wird) und die Syntax etwas anders sein muss. Ich habe das versucht mit folgendem Konstrukt zu lösen:

der wert 2 spricht eher dafür dass Dein reading nicht gelesen werden kann. stimmt die device config auch?


Zitat von: Martin-Nbg am 28 November 2016, 22:36:14
Hier noch meine aktuelle "Wunschliste" an das Projekt:

  • Verbeserung der Warmwasser-Steuerung (siehe meine Kommentare)
  • Einstellung der Commands und Logik (Brenner Ein mit "on" bzw. 1) für die GPIO Outputs (wie beim Modul "Stellmotor" da ist das gut gelöst

mit der Wunschliste bin ich einig, macht Sinn. Ich will aber nichts versprechen was sich dann als heiße Luft erweist und daher nciht spekulieren wann ich das mal zusammenbasteln werde.

LG Florian
Ich habe keine Ahnung, aber davon wenigstens ganz viel

Martin Quinke

Zitat von: epsrw1 am 29 November 2016, 22:19:58
der wert 2 spricht eher dafür dass Dein reading nicht gelesen werden kann. stimmt die device config auch?

So sieht die Config vom GPIO aus:

define GPIO_BrennerAus RPI_GPIO 22
attr GPIO_BrennerAus active_low yes
attr GPIO_BrennerAus direction output
attr GPIO_BrennerAus eventMap on:0 off:1
attr GPIO_BrennerAus room Heizung


Hier die Config vom ZHK:

Internals:
   DEF        120
   NAME       LindisHeizung
   NOTIFYDEV  global
   NR         34
   NTFY_ORDER 50-LindisHeizung
   STATE      Kessel: hot 57.812 �C KesselSollT:51 Vorlauf: Auto 41 �C
   TYPE       ZHK
   Readings:
     2016-11-30 18:36:55   autocontrol     120
     2016-12-04 18:40:27   looptime        1480873227.60121
     2016-11-30 18:36:55   state           active
     2016-12-04 18:40:27   zhkAussenTempActualVal 0
     2016-12-04 18:40:27   zhkAussenTempAlarmTempLimit 16
     2016-12-04 18:40:27   zhkAussenTempAlarmThreshold 1
     2016-11-07 20:47:15   zhkAussenTempDelayCache 0=1478548035.5337
     2016-11-30 18:36:55   zhkAussenTempIsWarmState 0
     2016-11-07 20:30:06   zhkAussenTempTodayMax 46.562
     2016-12-04 05:40:34   zhkAussenTempTodayMin -7
     2016-12-04 00:00:02   zhkAussenTempYesterday 2016-12-3
     2016-12-04 00:00:02   zhkAussenTempYesterdayMax 46.562
     2016-12-04 00:00:02   zhkAussenTempYesterdayMin -6
     2016-12-04 18:17:08   zhkBrennerActualState 1
     2016-12-04 18:17:08   zhkBrennerLaststart 1480871828.0497
     2016-12-04 18:17:08   zhkBrennerLogLastStartDauer 304.21969294548
     2016-12-04 18:17:08   zhkBrennerLogLastStateChange 1480871828.0497
     2016-12-04 18:12:03   zhkBrennerLogLastStopDauer 3045.23125886917
     2016-12-04 18:40:27   zhkKesselActualMischerAnhebung 0
     2016-12-04 18:40:27   zhkKesselActualTemp 57.812
     2016-12-04 18:40:27   zhkKesselActualVLRLAnhebung 0
     2016-12-04 18:40:27   zhkKesselActualVLRLdiff 22.875
     2016-12-04 18:40:27   zhkKesselDesiredTemp 51
     2016-12-04 18:40:27   zhkKesselState  hot 57.812 �C
     2016-12-04 18:40:27   zhkVorlaufActualTempRL 21.437
     2016-12-04 18:40:27   zhkVorlaufActualTempVL 44.312
     2016-12-04 17:44:09   zhkVorlaufDesiredTemp 41
     2016-11-28 20:27:05   zhkVorlaufHkurveCalcFaktor 1.4
     2016-12-04 18:40:27   zhkVorlaufMischerPosActualPosition 25
     2016-12-04 17:44:09   zhkVorlaufState Auto 41 �C
     2016-12-04 18:40:27   zhkVorlaufTimerTempAdjust 0
     2016-11-07 19:59:09   zhkVorlaufTotalOnOffReqTimeOff 1478545299.71553
     2016-11-30 18:36:55   zhkVorlaufTotalOnOffState 1
     2016-11-25 17:27:59   zhkWwAlphaActualVal -0.0630000000000024
     2016-11-18 07:53:53   zhkWwBetriebsmodus Manual 50 �C
     2016-11-25 16:34:50   zhkWwBoostStatus off
     2016-11-25 17:29:00   zhkWwIstLastReading 54.812=1480091339
     2016-11-25 17:29:10   zhkWwIstTempTimestamp 1480091339
     2016-11-25 17:29:10   zhkWwIstTempVal 54.812
     2016-11-25 17:29:00   zhkWwPriorityOn 0
     2016-11-25 17:29:00   zhkWwPumpLaststart 1480091340.55513
     2016-11-25 17:29:00   zhkWwPumpStopStatus on
     2016-11-25 16:34:50   zhkWwSollTemp   30
Attributes:
   autocontrol 30
   room       Heizung
   stateFormat Kessel: zhkKesselState KesselSollT:zhkKesselDesiredTemp Vorlauf: zhkVorlaufState
   zhkAussenTempAlarmDelay 600
   zhkAussenTempAlarmTempLimit 16
   zhkAussenTempAlarmThreshold 1
   zhkAussenTempFhemDev YahooWetter
   zhkAussenTempFhemDevFallback dummyOnlineWeatherTemp
   zhkAussenTempFhemDevReading temp_c
   zhkAussenTempFhemDevReadingFallback state
   zhkAussenTempIgnoreIfFhemDev dummyDisableAussentemp
   zhkAussenTempIsWarmState 0
   zhkAussenTempMaxAge 3600
   zhkBrennerAlwaysTriggerWw 0
   zhkBrennerFhemDev GPIO_BrennerAus
   zhkBrennerTaktMinOffSec 480
   zhkBrennerTaktMinOnSec 240
   zhkGlobalIncludeAussentemp 1
   zhkGlobalIncludeHolzofen 0
   zhkGlobalIncludeKessel 1
   zhkGlobalIncludeTaktOpt 1
   zhkGlobalIncludeValvePositions 0
   zhkGlobalIncludeVorlauf 1
   zhkGlobalIncludeVorlaufZeischaltplan 1
   zhkGlobalIncludeWarmwasser 0
   zhkGlobalIncludeWwZeischaltplan 1
   zhkGlobalPollInterval 10
   zhkHolzofenAlphaThreshold 0.07
   zhkHolzofenAlphaUpAlarmDiffDeg 3
   zhkHolzofenIgnoreTempIfFhemDev dummyDisableHolzofen
   zhkHolzofenResetLowFhemDev Heizg_Wohnzimmer1
   zhkHolzofenResetLowFhemDevreading desiredTemperature
   zhkHolzofenResetLowTemp 18
   zhkHolzofenTempSensorDefaultOnFailure 20
   zhkHolzofenTempSensorFhemDev 83_WohnZi_9554CD040000
   zhkHolzofenTempSensorMinAge 300
   zhkHolzofenTempSensorReading temperature
   zhkKesselAbsoluteMaxTemp 75
   zhkKesselAbsoluteMinTemp 42
   zhkKesselMinDiffVorlauf 10
   zhkKesselMinDiffWw 8
   zhkKesselMischerErhFaktor 0
   zhkKesselTempFhemDev GPIO4_DS18B20_05168036f7ff
   zhkKesselTempFhemDevReading temperature
   zhkKesselTempMaxReadingAge 600
   zhkKesselTempSecondFhemDev GPIO4_DS1820_000802dd0035
   zhkKesselTempSecondFhemDevReading temperature
   zhkKesselThreshold 12
   zhkKesselVLRLdiffErhFaktor 0
   zhkTaktOptAbsoluteMaxOffSec 10800
   zhkTaktOptAbsoluteMaxOnSec 1200
   zhkTaktOptAbsoluteMinOffSec 300
   zhkTaktOptAbsoluteMinOnSec 210
   zhkTaktOptCalcInterval 10
   zhkVorlaufHkurveAussenMax_TH 15
   zhkVorlaufHkurveAussenMin_TL -20
   zhkVorlaufHkurveVorlaufMax_TH 55
   zhkVorlaufHkurveVorlaufMin_TL 30
   zhkVorlaufIgnoreIfFhemDev dummyDisableVorlauf
   zhkVorlaufMischerFhemDev HeizungsMischer
   zhkVorlaufMischerPosFhemDev HeizungsMischer
   zhkVorlaufMischerPosFhemDevReading position
   zhkVorlaufPumpOffFhemDev GPIO_VLPumpeAus
   zhkVorlaufRLTempFhemDev GPIO4_DS18B20_0516803658ff
   zhkVorlaufRLTempFhemDevReading temperature
   zhkVorlaufTempTriggerFhemDev VorlaufRegler
   zhkVorlaufTempTriggerFhemDevReading desired
   zhkVorlaufTempTriggerFhemDevSetting desired
   zhkVorlaufTimerScheduleDi 01:00=-5|05:45=0|07:00=-2|17:00=0|22:00=-2|23:00=-5
   zhkVorlaufTimerScheduleDo 01:00=-5|05:45=0|07:00=-2|17:00=0|22:00=-2|23:00=-5
   zhkVorlaufTimerScheduleFr 01:00=-5|05:45=0|07:00=-2|17:00=0|22:00=-2|23:00=-5
   zhkVorlaufTimerScheduleMi 01:00=-5|05:45=0|07:00=-2|17:00=0|22:00=-2|23:00=-5
   zhkVorlaufTimerScheduleMo 04:00=-3|05:45=0|07:00=-2|17:00=0|22:00=-2|23:00=-5
   zhkVorlaufTimerScheduleSa 01:00=-5|07:00=0|10:00=-1|17:00=0|22:00=-2|23:00=-5
   zhkVorlaufTimerScheduleSo 01:00=-5|07:00=0|10:00=-1|17:00=0|22:00=-3|23:00=-8
   zhkVorlaufTotalOnOffMischerDelay 150
   zhkVorlaufVLTempFhemDev GPIO4_DS18B20_04168094b3ff
   zhkVorlaufVLTempFhemDevReading temperature
   zhkWwAlphaDownAlarmDiffDeg 0.8
   zhkWwAlphaThreshold 0.42
   zhkWwAlphaUpAlarmDiffDeg 5
   zhkWwBoostFhemDev zhkWwBoostFhemDev
   zhkWwBoostStartTemp 70
   zhkWwConfortTemp 31
   zhkWwEcoTemp 37
   zhkWwPumpFhemDev GPIO_WWLadePumpeAus
   zhkWwTaktMinOnSec 60
   zhkWwTempSensorDefaultOnFailure 70
   zhkWwTempSensorFhemDev GPIO4_DS18B20_04168077b7ff
   zhkWwTempSensorMaxAge 300
   zhkWwTempSensorReading temperature
   zhkWwTimerScheduleDi 0
   zhkWwTimerScheduleDo 0
   zhkWwTimerScheduleFr 0
   zhkWwTimerScheduleMi 0
   zhkWwTimerScheduleMo 0
   zhkWwTimerScheduleSa 0
   zhkWwTimerScheduleSo 0


Wie gesagt, mit mit meiner Anpassung

if(ReadingsVal($zhkBrennerFhemDev,"state",2) eq "on"){
                $zhkBrennerActualState = 0;}
else {
                $zhkBrennerActualState = 1;}


funktioniert es ja. So bekommen ich immer ein "on" oder "off" zurück und kann das entsprechend auswerten. Oder verstehe ich hier etwas falsch? (Hinweis: Der Ausgang heißt bei mir noch "BrennerAus". Aber tatsächlich schalte ich ihn jetzt mit "on" ein. Den Namen muss ich noch ändern.)

Danke + Gruß
Martin

epsrw1

es sieht für mich so aus als würde eventMap nicht STATE ersetzen sondern nur die anzeige im GUI
da der Wert nicht lesbar ist.
ReadingsVal liest STATE aus und nicht state kleingeschrieben, andernfalls kommt der fallback-wert 2 raus.

Deine og lösung funktioniert natürlich, sauberer wäre es das reading von gpio zu fixen dass es On/Off korrekt wiedergibt. ich würde mal beobachten was gpio beim startup anzeigt und nach dem ersten schaltvorgang, evtl taucht Dein problem auch nur beim startup auf

denkbar wäre auch eine art mapping wie zB im modul STELLMOTOR, das würde allerdings ZHK noch mehr aufblähen....

LG, florian
Ich habe keine Ahnung, aber davon wenigstens ganz viel

Martin Quinke

#69
Zitat von: epsrw1 am 05 Dezember 2016, 08:36:13
ReadingsVal liest STATE aus und nicht state kleingeschrieben, andernfalls kommt der fallback-wert 2 raus.

Ich habe den Eindruck, dass die beiden Zeilen

my $zhkBrennerFhemDev = AttrVal($name, "zhkBrennerFhemDev", "P3_BrennerStop");
my $zhkBrennerActualState = ReadingsVal($name,$zhkBrennerFhemDev,2);

nicht das gewünschte Ergebnis liefern, da der zweite Parameter vom ReadingsVal doch ein Reading sein soll, aber $zhkBrennerFhemDev ein Device ist, aber kein Reading. Müsste hier nicht eher zhkBrennerActualState stehen (also ein Reading vom ZHK)?

LG
Martin

Update 06.12.:

}elsif($ZHKcmd eq "vorlauf"){
#set vorlauf manual
if(AttrVal($name,"zhkGlobalIncludeVorlauf",0) eq "0"){
#set vorlauf desired - return error if disabled=0
Log3($name, 3, "ZHK $name Attr zhkGlobalIncludeVorlauf is not present or set to 0, set vorlauf command is ignored");
return "Attr zhkGlobalIncludeVorlauf is not present or set to 0, set vorlauf command is ignored";
}
if( (lc($args[2]) eq "off") or (lc($args[2]) eq "auto") ){
$args[2] = 0;
}
if((!($args[2]=~/^\d+$/)) or ($args[2] < $zhkVorlaufHkurveVorlaufMin_TL) or ($args[2] > $zhkVorlaufHkurveVorlaufMax_TH)){
#invalid value, return min max temp
return "Error: invalid value, usage: set vorlauf [auto | ".$zhkVorlaufHkurveVorlaufMin_TL."..".$zhkVorlaufHkurveVorlaufMax_TH."]";
}else{
$args[2] = AttrVal($name, "zhkWwConfortTemp", 37);
readingsSingleUpdate($hash, "zhkVorlaufManual", $args[2], 1);
}

Gestern ist mir noch was anderes aufgefallen: Bei "set <name> vorlauf auto" bekomme ich eine Fehlermeldung. Der Grund scheint mir zu sein, dass bei "auto" im obigen code der Parameter 2 auf "0" gesetzt wird und dann im folgenden if ein Fehler ausgegeben wird, wenn der Wert kleiner zhkVorlaufHkurveVorlaufMin_TL ist. Falls man einen anderen Wert eingibt (z.B. 50), wird dieser WErt in der vorletzten Zeile mit zhkWwConfortTemp (!) überschrieben.

arnoL

hat es eigentlich einen besonderen Grund das
NOTIFYDEV  global
ist?
Das fhem-log wird damit doch sehr unübersichtlich.

Gruß
Arno

krueuw

Hallo, ich bin dabei meine Heizung von einer reinen SPS-Steuerung auf FHEM + SPS S5 mit Hilfe des S7-Moduls umzustellen. Bisher funktioniert die Einzelraumregelung der FBH per FHEM-PWM-Modul mittels 1-Wire-Temperatursensoren und per SPS geschalteten Thermoantrieben. Für die Vorlauftemperaturregelung auf einen bisher konstanten Wert benutze ich das FHEM-PID20-Modul, welches den Stellbefehl über die SPS als 0..10 V Signal an ein Siemens MXG461.25-8.0 Mischventil sendet.
define fh PWM
define EG.ku.PWMR PWMR fh 1,0 EG.ku.DS1820.TF EG.ku.M713.TAku

define PID.Test PID20 OG.hr.DS1820.Hz_VL:temperature OG.hr.MW130.Mischventil:
attr PID.Test group FBH-Mischer
attr PID.Test pidActorErrorPos 0
attr PID.Test pidActorInterval 1
attr PID.Test pidCalcInterval 20
attr PID.Test pidReverseAction 1

define OG.hr.MW130.Mischventil S7_AWrite flags 0 130 u16
attr OG.hr.MW130.Mischventil IODev s5test


Nun soll die Vorlauftemperatur in Abhängigkeit von der Außentemperatur  geregelt werden. Dazu würde ich gerne ZHK verwenden. Allerdings verwirrt und erschlägt mich die bisherige Dokumentation ;-) hier und im Wiki. Ich würde an der Überarbeitung des Wikis mitarbeiten, müsste aber erstmal einen Anfang finden :-)  Schön wäre es also, wenn ihr hier (möglichst knappe) Konfigurationsbeispiele mit etwas erklärendem Text eurer funktionierenden Implementierung   bzw. einen Realisierungsvorschlag meines Vorhabens posten könntet.

osid-timo

Hallo,
nachdem ich nun seit Monaten ZHK im Produktivbetrieb nutze und damit sehr zufrieden bin, ist die Heizperiode nun zu Ende.
jetzt kommt die Frage auf: wie kann ich ZHK so konfigurieren, damit nicht mehr geheizt wird?

aktuell wird jeden Tag 1-3* der Brenner gestartet, obwohl die Solaranlage für ausreichen warmes Wasser >45°C und auch der Heizkreis wird damit noch nachgeheizt

Auf einen Tipp freue ich mich

Gruß Osid-timo
FHEM Pi3: 1* CUL, 30* Homematic, 10* EnOcean
FHEM Pi3: IR-Lesekopf, BT->SMA
FHEM Pi3: ZHK, 1-wire, 1* VBus   Resol DeltaSol BS

epsrw1

Zitat von: osid-timo am 22 Mai 2017, 19:26:58
Hallo,
nachdem ich nun seit Monaten ZHK im Produktivbetrieb nutze und damit sehr zufrieden bin, ist die Heizperiode nun zu Ende.
jetzt kommt die Frage auf: wie kann ich ZHK so konfigurieren, damit nicht mehr geheizt wird?
aktuell wird jeden Tag 1-3* der Brenner gestartet, obwohl die Solaranlage für ausreichen warmes Wasser >45°C und auch der Heizkreis wird damit noch nachgeheizt
Auf einen Tipp freue ich mich
Gruß Osid-timo
Hallo :-) ich mache das manuell, d.h. Vorlauf und WwSollTemp beide händisch auf 1°C dann bleibt der Brenner aus. Nachteil, wenn das Wetter kippt muss man auch manuell wieder einschalten.
Eine Sommer-/Winter-Funktion ist eigentlich geplant aber ich kam noch nicht dazu.
Gruß Florian
Ich habe keine Ahnung, aber davon wenigstens ganz viel

osid-timo

Hallo Florian,
danke für den Tipp
WwSollTemp hatte ich schon mit meinem Homestate manipuliert
Vorlauf noch nicht, aber daran arbeite ich. wobei ein set MyHeizung vorlauf 1 anscheinend nur den Wertebereich [20..50] erlaubt?
Gruß Oswald
FHEM Pi3: 1* CUL, 30* Homematic, 10* EnOcean
FHEM Pi3: IR-Lesekopf, BT->SMA
FHEM Pi3: ZHK, 1-wire, 1* VBus   Resol DeltaSol BS