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

epsrw1

update:


Internals:
   DEF        30
   NAME       zhk4
   NOTIFYDEV  global
   NR         181
   NTFY_ORDER 50-zhk4
   STATE      active
   TYPE       ZHK
   Readings:
     2014-06-04 07:03:53   autocontrol     30
     2014-06-04 07:03:53   firstload       1401858233.91879
     2014-06-04 07:04:55   looptime        1401858295.63006
     2014-06-04 07:03:53   state           active
     2014-06-04 07:04:55   zhkAussenTempActualVal 11.3125
     2014-06-04 07:04:55   zhkAussenTempAlarmTempLimit 16
     2014-06-04 07:04:55   zhkAussenTempAlarmThreshold 1
     2014-06-03 13:31:21   zhkAussenTempDelayCache 0=1401795081.46363
     2014-06-04 07:03:59   zhkAussenTempIsWarmState 0
     2014-06-03 13:31:21   zhkAussenTempTodayMax 14.5625
     2014-06-04 07:04:15   zhkAussenTempYesterday 2014-6-3
     2014-06-04 07:04:15   zhkAussenTempYesterdayMax 14.5625
     2014-06-04 07:04:15   zhkAussenTempYesterdayMin 0
     2014-06-03 13:33:01   zhkBrennerActualState 0
     2014-06-03 13:33:01   zhkBrennerLaststart 0
     2014-06-04 07:04:15   zhkHolzofenAlphaActualVal -0.00451527452869134
     2014-06-04 07:04:15   zhkHolzofenResetLowTemp 18
     2014-06-03 13:49:16   zhkHolzofenState 0
     2014-06-04 07:04:15   zhkHolzofenTempHistoryCache 18.25=1401800113 17.375=1401858249
     2014-06-04 07:04:15   zhkHolzofenTempSensorActValue 17.375
     2014-06-04 07:04:15   zhkHolzofenTempSensorTimestamp 1401858249
     2014-06-04 07:04:55   zhkVorlaufActualTempRL 23.0625
     2014-06-04 07:04:55   zhkVorlaufActualTempVL 24.0625
     2014-06-04 07:04:24   zhkVorlaufDesiredTemp 23
     2014-06-04 07:04:55   zhkVorlaufMischerPosActualPosition 0
     2014-06-04 07:04:24   zhkVorlaufState Auto 23 °C
     2014-06-04 07:04:55   zhkVorlaufTimerTempAdjust 0
     2014-06-03 13:31:07   zhkVorlaufTotalOnOffState 1
     2014-06-04 07:04:15   zhkWwAlphaActualVal -0.0283564914952166
     2014-06-03 13:33:01   zhkWwBoostStatus off
     2014-06-04 07:04:53   zhkWwIstLastReading 42.6875=1401858287
     2014-06-04 07:04:55   zhkWwIstTempTimestamp 1401858287
     2014-06-04 07:04:55   zhkWwIstTempVal 42.6875
     2014-06-04 07:04:53   zhkWwPriorityOn 0
     2014-06-03 15:00:55   zhkWwPumpLaststart 1401800455.18465
     2014-06-03 13:31:21   zhkWwPumpStopStatus off
     2014-06-04 07:03:59   zhkWwSollTemp   0
     2014-06-04 07:04:55   zhkWwTimerLastSetValue 0
Attributes:
   zhkAussenTempAlarmDelay 600
   zhkAussenTempAlarmTempLimit 16
   zhkAussenTempAlarmThreshold 1
   zhkAussenTempFhemDev 81_Aussen_D745CE040000
   zhkAussenTempFhemDevFallback dummyOnlineWeatherTemp
   zhkAussenTempFhemDevReading temperature
   zhkAussenTempFhemDevReadingFallback state
   zhkAussenTempIgnoreIfFhemDev dummyDisableAussentemp
   zhkAussenTempIsWarmState 0
   zhkAussenTempMaxAge 1200
   zhkBrennerFhemDev P3_BrennerStop
   zhkBrennerLogLastStateChange 0
   zhkBrennerTaktMinOffSec 30
   zhkBrennerTaktMinOnSec 300
   zhkGlobalIncludeAussentemp 1
   zhkGlobalIncludeHolzofen 1
   zhkGlobalIncludeKessel 1
   zhkGlobalIncludeValvePositions 1
   zhkGlobalIncludeVorlauf 1
   zhkGlobalIncludeVorlaufZeischaltplan 1
   zhkGlobalIncludeWarmwasser 1
   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 70
   zhkKesselAbsoluteMinTemp 30
   zhkKesselMinDiffVorlauf 10
   zhkKesselMinDiffWw 8
   zhkKesselMischerErhFaktor 0
   zhkKesselTempFhemDev 4_14_Kessel_E3CD97050000
   zhkKesselTempFhemDevReading temperature
   zhkKesselTempMaxReadingAge 600
   zhkKesselTempSecondFhemDev 0
   zhkKesselTempSecondFhemDevReading temperature
   zhkKesselThreshold 5
   zhkKesselVLRLdiffErhFaktor 0
   zhkVorlaufHkurveAussenMax_TH 15
   zhkVorlaufHkurveAussenMin_TL -20
   zhkVorlaufHkurveVorlaufMax_TH 50
   zhkVorlaufHkurveVorlaufMin_TL 20
   zhkVorlaufIgnoreIfFhemDev dummyDisableVorlauf
   zhkVorlaufMischerFhemDev VorlaufMischer
   zhkVorlaufMischerPosFhemDev MischerPosition
   zhkVorlaufMischerPosFhemDevReading position
   zhkVorlaufPumpOffFhemDev P6_PumpOff
   zhkVorlaufRLTempFhemDev 2_12_Ruecklauf_56B897050000
   zhkVorlaufRLTempFhemDevReading temperature
   zhkVorlaufTempTriggerFhemDev VorlaufRegler
   zhkVorlaufTempTriggerFhemDevReading desired
   zhkVorlaufTempTriggerFhemDevSetting desired
   zhkVorlaufTimerScheduleDi 0
   zhkVorlaufTimerScheduleDo 0
   zhkVorlaufTimerScheduleFr 0
   zhkVorlaufTimerScheduleMi 0
   zhkVorlaufTimerScheduleMo 0
   zhkVorlaufTimerScheduleSa 0
   zhkVorlaufTimerScheduleSo 0
   zhkVorlaufTotalOnOffMischerDelay 150
   zhkVorlaufVLTempFhemDev 1_17_Vorlauf_D1F798050000
   zhkVorlaufVLTempFhemDevReading temperature
   zhkWwAlphaDownAlarmDiffDeg 0.8
   zhkWwAlphaThreshold 0.42
   zhkWwAlphaUpAlarmDiffDeg 5
   zhkWwBoostFhemDev P2_WwBoost
   zhkWwBoostStartTemp 45
   zhkWwConfortTemp 31
   zhkWwEcoTemp 37
   zhkWwPumpFhemDev P7_WwStop
   zhkWwTaktMinOnSec 60
   zhkWwTempSensorDefaultOnFailure 70
   zhkWwTempSensorFhemDev 5_15_WarmWasser_EB6F98050000
   zhkWwTempSensorMaxAge 300
   zhkWwTempSensorReading temperature
   zhkWwTimerScheduleDi 0
   zhkWwTimerScheduleDo 0
   zhkWwTimerScheduleFr 0
   zhkWwTimerScheduleMi 0
   zhkWwTimerScheduleMo 0
   zhkWwTimerScheduleSa 0
   zhkWwTimerScheduleSo 0
Ich habe keine Ahnung, aber davon wenigstens ganz viel

ph1959de

Würdest Du bitte das aktuelle Modul immer in den ersten Beitrag dieses Threads stellen (und alte Versionen entsprechend kennzeichnen oder entfernen)? Als Thread-Eröffner solltest Du das dürfen und es erspart die zwangsläufig sonst über kurz oder lang auftretende Frage "Welches / Wo ist die aktuelle Version des Moduls". Außerdem kommen auf die Art und Weise nicht permanent noch alte Versionen in Umlauf.

Gruß, Peter
Aktives Mitglied des FHEM e.V. | Moderator im Forenbereich "Wiki"

epsrw1

ZitatWürdest Du bitte das aktuelle Modul immer in den ersten Beitrag dieses Threads stellen
erledigt  :)

Zitat(und alte Versionen entsprechend kennzeichnen oder entfernen)?  Als Thread-Eröffner solltest Du das dürfen und es erspart die zwangsläufig sonst über kurz oder lang auftretende Frage "Welches / Wo ist die aktuelle Version des Moduls". Außerdem kommen auf die Art und Weise nicht permanent noch alte Versionen in Umlauf.
bin ich eh' schon ständig am weglöschen...

gruß, florian
Ich habe keine Ahnung, aber davon wenigstens ganz viel

epsrw1

update:
get <name> attrHelp <attr-name>
gibt eine kurzbeschreibung des wertes bzw seiner verwendung aus.

download im ersten beitrag des themas.


# $Id: 98_ZHK.pm 5251 2014-06-04 08:48:00Z Florian Duesterwald $
####################################################################################################
#
# 99_ZHK.pm
Ich habe keine Ahnung, aber davon wenigstens ganz viel

cwagner

Zitat von: Thorsten Pferdekaemper am 28 Mai 2014, 09:39:46
Bei mir läuft das momentan so: Wenn die Ventile weit offen sind, dann geht die Vorlauftemperatur hoch, wenn sie eher geschlossen sind, dann geht die Vorlauftemperatur runter. Dafür verwende ich ein PID20, welches als Istwert den Ventilöffnungsgrad des maximal geöffneten Ventils hat. Der Sollwert dafür ist 75%. Steuergröße ist die Soll-Vorlauftemperatur. Ich musste zwar ein bisschen mit dem Parametern spielen, aber das klappt ganz gut.

Hallo Thorsten,

das finde ich einen interessanten Ansatz, PID20 zur Regelung der Vorlauf-/Rücklauftemperatur zu verwenden. Wie Du auch bin ich von einer Außentemperatursteuerung abgekommen und steuere derzeit den konkreten Vorlauf mit einer einfach Heizkurve nach der Stellung des jeweils am weitesten geöffneten Heizkörperventils (8 STück im Haus).

Das mache ich mit einem kleinen Codeschnipsel, der immer dann aktiv ist, wenn HCS mit "demand" meldet. Wenn HCS (in Valve-Steuerung) keinen Bedarf meldet, wird zugleich die Umwälzpumpe gestoppt.

Ist es möglich, dass Du mal Deine Parameter postest und: Wie ermittelst Du das am weitesten geöffnete Ventil?

Herzliche Grüße

Christian
PI 2B+/3B+ Raspbian 12, Perl 5.36.0, FHEM 6.3: 295 Module in ConfigDB: Steuerung Heizkessel, FBH, Solarthermie, kontr. Lüftung mit WRG. Smarthome u.a. HMCUL, 1-Wire (FT232RL ; DS2480B), EnOcean (TCM EPS3), MQTT2. DOIF, PID20, Threshold, OWX; Micropelt IRTV, Volkszähler, SolarForecast; MariaDB

cwagner

Zitat von: epsrw1 am 27 Mai 2014, 12:38:51

wer würde ein solches modul verwenden wollen, und was muß es dafür können? habt ihr irgendwelchen komplizierten speicher/zusatzpuffer oder zig-pumpen-installationen? wer kann mir sagen was ich vergessen bzw. nicht bedacht habe?

Hallo Florian,

das ist ein ehrgeiziges Projekt, das Du da gestartet hast und es wird den Heizungsoptimierern in der FHEM-Gemeinde sicher viel Diskussionsstoff und Anregung bieten. Für mich war schon Dein Modul MIschersteuerung eine Bereicherung und ich werde Dein Projekt sehr aufmerksam verfolgen. Derzeit regele ich den Brenner meiner Uralt-Ölheizung über ein THRESHOLD, dessen Vorgabewert (desired) über eine Heizkurve in Abhängigkeit zur größten Öffnung der 8 Funkheizkörperthermostate geregelt wird.
Warmwasser wird über heating_control im Winter vorrangig frühmorgens und am Abend (wenn größter Heizbedarf ist) erzeugt, um möglichst lange Brennerlaufzeiten hinzubekommen.

Im Sommer lasse ich das frühe Nachheizen weg, weil an den allermeisten Tagen die Solaranlage im Laufe des Tages den beim morgendlichen Duschen verbrauchten Warmwasserteil wieder nachheizt. Wir nehmen Warmwasser auch für Waschmaschine und Geschirrspüler, die konsequenterweise nur nachmittags/abends laufen (geplant: Steuerung in Abhängigkeit zur mit Umweltsensor gemessenen solaren Einstrahlung, um den Strom aus den Solarpanels möglichst optimal selbst zu verbrauchen).

Überschüssige Wärme aus dem Solarkollektor benutze ich, um den Rücklauf meiner Heizungsanlage vor dem Mischer anzuheben und somit Brennerstarts zu vermeiden. Beispiel Rücklauf ist 30 Grad. Heizung würde anspringen, da aber mit der Wärme aus der Solaranlage der Rücklauf auf 40 Grad angehoben wird, springt der Kessel-THRESHOLD nicht an. Ein extern getriggerter THRESHOLD regelt das. Die Bude kriegt 40 Grad Vorlauf.

Habe ich im Sommer völligen Überschuss an Solarwärme, pumpe ich die ab 80 Grad (gesteuert über einen weiteren THRESHOLD) geradewegs im Keller in die Waschküche, die auf diese Weise durch die "Hitze" trockner wird bzw. Wäsche auch im Sommer dort schneller trocknet (ist zwar schon komisch, eine Waschküche von 23 Grad, aber kostet ja nur 7 W-Hocheffizienz-Pumpe pro Stunde).

Grüße

Christian


PI 2B+/3B+ Raspbian 12, Perl 5.36.0, FHEM 6.3: 295 Module in ConfigDB: Steuerung Heizkessel, FBH, Solarthermie, kontr. Lüftung mit WRG. Smarthome u.a. HMCUL, 1-Wire (FT232RL ; DS2480B), EnOcean (TCM EPS3), MQTT2. DOIF, PID20, Threshold, OWX; Micropelt IRTV, Volkszähler, SolarForecast; MariaDB

epsrw1

hallo christian,

ZitatWarmwasser wird über heating_control im Winter vorrangig frühmorgens und am Abend (wenn größter Heizbedarf ist) erzeugt, um möglichst lange Brennerlaufzeiten hinzubekommen.
die idee ist nicht schlecht, da werde ich gleich mal einen extra schalter einbauen, um das warmwasser an die brennerstarts selektiv mit dranzuhängen.

ZitatDerzeit regele ich den Brenner meiner Uralt-Ölheizung über ein THRESHOLD, dessen Vorgabewert (desired) über eine Heizkurve in Abhängigkeit zur größten Öffnung der 8 Funkheizkörperthermostate geregelt wird.
das habe ich auch vorgesehen, allerdings als kombi, man kann valveposition/vl-Rl-differenz/aussentemp mit einstellbarer gewichtung kombinieren, und zum schluß wird noch der zeitplan draufgerechnet(oder abgezogen) wür die desired-temp.

die brennerlaufzeit optimiere ich durch auswertung der on/off dauer des brenners über ein extra untermodul, welches dann den threshold wert dynamisch nachregelt um das takten aufs absolute minimum zu bringen.

ZitatIm Sommer lasse ich das frühe Nachheizen weg, weil an den allermeisten Tagen die Solaranlage...
im augenblick ist das bei mir noch nicht gut gelöst, man kann zusätzliche energiequelle (noch) nicht gewichten, schon gar nicht nach zeitplan unterschiedlich bevorzugen. ist eine menge arbeit.... kommt aber irgendwann auch noch ;)

ZitatÜberschüssige Wärme aus dem Solarkollektor benutze ich, um den Rücklauf meiner Heizungsanlage vor dem Mischer anzuheben und somit Brennerstarts zu vermeiden. Beispiel Rücklauf ist 30 Grad. Heizung würde anspringen, da aber mit der Wärme aus der Solaranlage der Rücklauf auf 40 Grad angehoben wird, springt der Kessel-THRESHOLD nicht an. Ein extern getriggerter THRESHOLD regelt das. Die Bude kriegt 40 Grad Vorlauf.
auch eine gute idee, hab ich sofort in die todo liste aufgenommen.

grüße, florian
Ich habe keine Ahnung, aber davon wenigstens ganz viel

epsrw1

update:

(download im ersten beitrag des themas)

Internals:
   DEF        30
   NAME       zhk4
   NOTIFYDEV  global
   NR         182
   NTFY_ORDER 50-zhk4
   STATE      active
   TYPE       ZHK
   Readings:
     2014-06-04 18:26:58   autocontrol     30
     2014-06-05 00:00:30   looptime        1401919230.95335
     2014-06-04 18:26:58   state           active
     2014-06-05 00:00:30   zhkAussenTempActualVal 12.25
     2014-06-05 00:00:30   zhkAussenTempAlarmTempLimit 16
     2014-06-05 00:00:30   zhkAussenTempAlarmThreshold 1
     2014-06-03 13:31:21   zhkAussenTempDelayCache 0=1401795081.46363
     2014-06-04 18:27:05   zhkAussenTempIsWarmState 0
     2014-06-04 13:02:40   zhkAussenTempTodayMax 15.75
     2014-06-05 00:00:00   zhkAussenTempYesterday 2014-6-4
     2014-06-05 00:00:00   zhkAussenTempYesterdayMax 15.75
     2014-06-05 00:00:00   zhkAussenTempYesterdayMin 0
     2014-06-04 21:45:21   zhkBrennerActualState 1
     2014-06-04 21:45:21   zhkBrennerLaststart 1401911121.42217
     2014-06-04 21:45:21   zhkBrennerLogLastStartDauer 512.056618928909
     2014-06-04 21:45:21   zhkBrennerLogLastStateChange 1401911121.42217
     2014-06-04 21:36:49   zhkBrennerLogLastStopDauer 8642.77262306213
     2014-06-04 23:45:13   zhkHolzofenAlphaActualVal -0.0519390581717451
     2014-06-04 23:57:18   zhkHolzofenResetLowTemp 18
     2014-06-03 13:49:16   zhkHolzofenState 0
     2014-06-04 23:57:18   zhkHolzofenTempHistoryCache 18.3125=1401918672 18.3125=1401919032
     2014-06-04 23:57:18   zhkHolzofenTempSensorActValue 18.3125
     2014-06-04 23:57:18   zhkHolzofenTempSensorTimestamp 1401919032
     2014-06-05 00:00:30   zhkKesselActualMischerAnhebung 0
     2014-06-05 00:00:30   zhkKesselActualTemp 42.0625
     2014-06-05 00:00:30   zhkKesselActualVLRLAnhebung 0
     2014-06-05 00:00:30   zhkKesselActualVLRLdiff 0.8125
     2014-06-05 00:00:30   zhkKesselDesiredTemp 39
     2014-06-05 00:00:30   zhkKesselState  hot 42.0625 °C
     2014-06-05 00:00:30   zhkVorlaufActualTempRL 22.75
     2014-06-05 00:00:30   zhkVorlaufActualTempVL 23.5625
     2014-06-04 21:57:21   zhkVorlaufDesiredTemp 22
     2014-06-05 00:00:30   zhkVorlaufMischerPosActualPosition 0
     2014-06-04 21:57:21   zhkVorlaufState Auto 22 °C
     2014-06-05 00:00:30   zhkVorlaufTimerTempAdjust 0
     2014-06-04 18:26:59   zhkVorlaufTotalOnOffState 1
     2014-06-04 23:52:46   zhkWwAlphaActualVal -0.375
     2014-06-04 19:18:09   zhkWwBetriebsmodus Manual 31 °C
     2014-06-04 18:26:58   zhkWwBoostStatus off
     2014-06-05 00:00:29   zhkWwIstLastReading 35.6875=1401919225
     2014-06-05 00:00:30   zhkWwIstTempTimestamp 1401919225
     2014-06-05 00:00:30   zhkWwIstTempVal 35.6875
     2014-06-05 00:00:29   zhkWwPriorityOn 0
     2014-06-04 21:49:49   zhkWwPumpLaststart 1401911389.15886
     2014-06-04 21:49:49   zhkWwPumpStopStatus on
     2014-06-04 19:18:09   zhkWwSollTemp   31
     2014-06-04 12:09:28   zhkWwTimerLastSetValue -1
Attributes:
   autocontrol 30
   room       OWX,Unsorted,Z_PiFace
   zhkAussenTempAlarmDelay 600
   zhkAussenTempAlarmTempLimit 16
   zhkAussenTempAlarmThreshold 1
   zhkAussenTempFhemDev 81_Aussen_D745CE040000
   zhkAussenTempFhemDevFallback dummyOnlineWeatherTemp
   zhkAussenTempFhemDevReading temperature
   zhkAussenTempFhemDevReadingFallback state
   zhkAussenTempIgnoreIfFhemDev dummyDisableAussentemp
   zhkAussenTempIsWarmState 0
   zhkAussenTempMaxAge 1200
   zhkBrennerFhemDev P3_BrennerStop
   zhkBrennerTaktMinOffSec 30
   zhkBrennerTaktMinOnSec 300
   zhkGlobalIncludeAussentemp 1
   zhkGlobalIncludeHolzofen 1
   zhkGlobalIncludeKessel 1
   zhkGlobalIncludeValvePositions 1
   zhkGlobalIncludeVorlauf 1
   zhkGlobalIncludeVorlaufZeischaltplan 1
   zhkGlobalIncludeWarmwasser 1
   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 70
   zhkKesselAbsoluteMinTemp 30
   zhkKesselMinDiffVorlauf 10
   zhkKesselMinDiffWw 8
   zhkKesselMischerErhFaktor 0
   zhkKesselTempFhemDev 4_14_Kessel_E3CD97050000
   zhkKesselTempFhemDevReading temperature
   zhkKesselTempMaxReadingAge 600
   zhkKesselTempSecondFhemDev 0
   zhkKesselTempSecondFhemDevReading temperature
   zhkKesselThreshold 5
   zhkKesselVLRLdiffErhFaktor 0
   zhkVorlaufHkurveAussenMax_TH 15
   zhkVorlaufHkurveAussenMin_TL -20
   zhkVorlaufHkurveVorlaufMax_TH 50
   zhkVorlaufHkurveVorlaufMin_TL 20
   zhkVorlaufIgnoreIfFhemDev dummyDisableVorlauf
   zhkVorlaufMischerFhemDev VorlaufMischer
   zhkVorlaufMischerPosFhemDev MischerPosition
   zhkVorlaufMischerPosFhemDevReading position
   zhkVorlaufPumpOffFhemDev P6_PumpOff
   zhkVorlaufRLTempFhemDev 2_12_Ruecklauf_56B897050000
   zhkVorlaufRLTempFhemDevReading temperature
   zhkVorlaufTempTriggerFhemDev VorlaufRegler
   zhkVorlaufTempTriggerFhemDevReading desired
   zhkVorlaufTempTriggerFhemDevSetting desired
   zhkVorlaufTimerScheduleDi 0
   zhkVorlaufTimerScheduleDo 0
   zhkVorlaufTimerScheduleFr 0
   zhkVorlaufTimerScheduleMi 0
   zhkVorlaufTimerScheduleMo 0
   zhkVorlaufTimerScheduleSa 0
   zhkVorlaufTimerScheduleSo 0
   zhkVorlaufTotalOnOffMischerDelay 150
   zhkVorlaufVLTempFhemDev 1_17_Vorlauf_D1F798050000
   zhkVorlaufVLTempFhemDevReading temperature
   zhkWwAlphaDownAlarmDiffDeg 0.8
   zhkWwAlphaThreshold 0.42
   zhkWwAlphaUpAlarmDiffDeg 5
   zhkWwBoostFhemDev P2_WwBoost
   zhkWwBoostStartTemp 45
   zhkWwConfortTemp 31
   zhkWwEcoTemp 37
   zhkWwPumpFhemDev P7_WwStop
   zhkWwTaktMinOnSec 60
   zhkWwTempSensorDefaultOnFailure 70
   zhkWwTempSensorFhemDev 5_15_WarmWasser_EB6F98050000
   zhkWwTempSensorMaxAge 300
   zhkWwTempSensorReading temperature
   zhkWwTimerScheduleDi 0
   zhkWwTimerScheduleDo 0
   zhkWwTimerScheduleFr 0
   zhkWwTimerScheduleMi 0
   zhkWwTimerScheduleMo 0
   zhkWwTimerScheduleSa 0
   zhkWwTimerScheduleSo 0
Ich habe keine Ahnung, aber davon wenigstens ganz viel

Thorsten Pferdekaemper

Zitat von: cwagner am 04 Juni 2014, 14:27:06Ist es möglich, dass Du mal Deine Parameter postest
Hier ist ein list von meinem Regler:

Internals:
   DEF        HeizRegler:valveMax HeizRegler:dummy
   NAME       HeizRegler
   NR         79
   NTFY_ORDER 50-HeizRegler
   STATE      processing
   TYPE       PID20
   Readings:
     2014-06-05 10:50:17   actuation       24
     2014-06-05 10:50:17   actuationCalc   9.61900000000185
     2014-06-05 10:50:17   delta           74.9
     2014-06-05 10:50:17   desired         75
     2014-06-05 08:41:17   lastNonzero     2014-06-05 08:41:17
     2014-06-05 10:50:17   measured        0.1
     2014-06-05 10:50:17   p_d             0
     2014-06-05 10:50:17   p_i             47.0690000000018
     2014-06-05 10:50:17   p_p             -37.45
     2014-06-05 10:50:17   state           processing
     2014-06-05 10:50:17   valveMax        0.1
   Helper:
     actor      HeizRegler
     actorCommand dummy
     actorErrorAction freeze
     actorErrorPos 0
     actorInterval 60
     actorKeepAlive 60
     actorLimitLower 24
     actorLimitUpper 75
     actorThreshold 1
     actorTimestamp 2014-06-05 10:50:17
     actorValueDecPlaces 0
     adjust     
     calcInterval 60
     deltaTreshold 0
     desiredName desired
     disable    0
     factor_D   0
     factor_I   0.02
     factor_P   0.5
     isWindUP   1
     measuredName measured
     reading    valveMax
     regexp     ^([\+,\-]?\d+\.?\d*$)
     reverseAction 1
     sensor     HeizRegler
     sensorTimeout 3600
     sensorTsOld
     stopped    0
     updateInterval 600
Attributes:
   disable    1
   group      HeizraumSonstiges
   pidActorInterval 60
   pidActorKeepAlive 60
   pidActorLimitLower 24
   pidActorLimitUpper 75
   pidCalcInterval 60
   pidFactor_I 0.02
   pidFactor_P 0.5
   pidReverseAction 1
   room       Heizraum

Das ganze ist aber mit Vorsicht zu genießen. Ich steuere das ganze über den Außentemperatur-Eingang meiner Anlage. Das Ding mittelt das aber nochmal über 2 Stunden. (Ganz abschalten kann man das nicht.) Wenn man das ganze direkt weitergeben kann und die Anlage dann sofort reagiert, dann muss man wahrscheinlich den I-Faktor verkleinern.

Zitatund: Wie ermittelst Du das am weitesten geöffnete Ventil?
Ganz genau genommen gar nicht. Ich ermittle nur den Ventilstellungsgrad des am weitesten geöffnete Ventil. Das läuft über ein at, das jede Minute läuft:

Internals:
   DEF        +*00:01:00 {myUtils_maxValve()}
   NAME       MaxValveUpdate
   NR         80
   NTM        10:56:17
   REP        -1
   STATE      Next: 10:56:17
   TRIGGERTIME 1401958577.37978
   TRIGGERTIME_FMT 2014-06-05 10:56:17
   TYPE       at
Attributes:
   group      HeizraumSonstiges
   room       Heizraum

Die myUtils_maxValve() sieht so aus:

sub myUtils_maxValve(){

# groesster Ventiloeffnungsgrad ermitteln
# PID20 bug (?), deshalb nicht genau 0
  my $ventilMax = 0.1;
  my @names = sort keys %defs;  # sort benoetigt?
  foreach my $d (@names) {
    if(AttrVal($d, "model", "none") ne "HM-CC-RT-DN"){ next; };
    my $ventil = ReadingsVal($d, "actuator", 0);
#   remove "%" 
    $ventil =~ s/%| //g;   
    if($ventil > $ventilMax){ $ventilMax = $ventil; };
  }
  readingsSingleUpdate($defs{"HeizRegler"},"valveMax", $ventilMax, 1);
}

Das geht natürlich nur, wenn man die Homematic-Ventile HM-CC-RT-DN hat. Die Funktion setzt direkt das Reading "valveMax" des HeizRegler-Device. Damit kann der PID20 leicht darauf zugreifen.
In der anderen Richtung geht's dann ähnlich: Der PID20 setzt nicht direkt die Vorlauftemperatur, sondern ein weiterer at holt sich alle 2,5 Minuten den "actuation" Wert vom HeizRegler ab und schickt das dann der Anlage.

Gruß,
  Thorsten
FUIP

epsrw1

ZitatDas geht natürlich nur, wenn man die Homematic-Ventile HM-CC-RT-DN
ich meine im wiki unter development gibt es vorgaben welches reading überall vorhanden ist (sein sollte) bei device type thermostat. theoretisch sollte es einfacher bzw schneller sein sich am device type zu orientieren statt alle @names durchzunudeln.
list type=HeatingThermostat [valveposition]
(oder so ähnlich)


so ähnlich hatte ich auch mal eine lösung, mit lauter dummies, at, notify devices. es ist schön und funktioniert auch, aber mir war es auf die dauer zu unübersichtlich.
mir persönlich geht es so daß ich dann irgendwann vergessen habe welcher dummy nochmal für was war, und ständig nachforschen muß.


Thorsten,
kannst Du mir mal ein listing von irgendeinem Deiner :
"model" "HM-CC-RT-DN"
posten? vllt kann ich das gleich von vorneherein dynamisieren und die HM mit auslesen bei valvePos regler
danke !

und noch eine frage:
warum steuert der pid20 bei Dir einen dummy, und dann ein verzögertes at erst den poti an der heizung? kann nicht der pid20 direkt den poti regeln?

grüße, florian
Ich habe keine Ahnung, aber davon wenigstens ganz viel

Thorsten Pferdekaemper

Zitat von: epsrw1 am 05 Juni 2014, 11:27:59theoretisch sollte es einfacher bzw schneller sein sich am device type zu orientieren statt alle @names durchzunudeln.
Das ist gut möglich, aber das war die Möglichkeit, die ich als erstes gefunden habe bzw. die als erstes funktioniert hat. Ich habe mir danach keine Gedanken mehr darüber gemacht.

Zitatso ähnlich hatte ich auch mal eine lösung, mit lauter dummies, at, notify devices. es ist schön und funktioniert auch, aber mir war es auf die dauer zu unübersichtlich.
mir persönlich geht es so daß ich dann irgendwann vergessen habe welcher dummy nochmal für was war, und ständig nachforschen muß.
Bei mir ist das (momentan noch) einfach gehalten. Allerdings bin ich momentan ganz stark an der Planung einer Arduino-basierten Steuerung, die meine Giematic-Regelung vollständig ersetzen soll. Dann muss ich das ganze sowieso ändern.

Zitatkannst Du mir mal ein listing von irgendeinem Deiner :
"model" "HM-CC-RT-DN"
posten?
Hier ist das Listing von einem Device:

Internals:
   DEF        21FBB2
   HMLAN1_MSGCNT 9918
   HMLAN1_RAWMSG E21FBB2,0000,083493A8,FF,FFD6,16861021FBB20000000AB0DF0D0020
   HMLAN1_RSSI -42
   HMLAN1_TIME 2014-06-05 11:39:16
   IODev      HMLAN1
   LASTInputDev HMLAN1
   MSGCNT     9918
   NAME       og_ku_Heizung
   NR         24
   STATE      CMDs_done
   TYPE       CUL_HM
   channel_01 og_ku_Heizung_Weather
   channel_02 og_ku_Heizung_Climate
   channel_03 og_ku_Heizung_WindowRec
   channel_04 og_ku_HeizungOp
   channel_05 og_ku_Heizung_ClimaTeam
   channel_06 og_ku_Heizung_Remote
   lastMsg    No:16 - t:10 s:21FBB2 d:000000 0AB0DF0D0020
   protLastRcv 2014-06-05 11:39:16
   protSnd    19 last_at:2014-06-04 19:44:54
   protState  CMDs_done
   rssi_HMLAN1 avg:-44 min:-44 max:-44 lst:-44 cnt:1
   rssi_at_HMLAN1 avg:-49.79 min:-87 max:-41 lst:-42 cnt:9918
   Readings:
     2014-05-18 22:27:23   Activity        alive
     2014-05-28 12:17:11   CommandAccepted yes
     2014-03-04 19:41:28   D-firmware      1.2
     2014-03-04 19:41:28   D-serialNr      KEQ0508161
     2014-03-04 19:42:58   PairedTo        0x23A3F4
     2013-12-28 19:42:59   R-backOnTime    10 s
     2014-03-04 19:42:58   R-btnLock       lock
     2014-03-04 19:28:32   R-burstRx       on
     2014-03-04 19:28:32   R-cyclicInfoMsg on
     2014-03-04 19:28:32   R-cyclicInfoMsgDis 0
     2014-03-04 19:28:32   R-globalBtnLock off
     2014-03-04 19:28:32   R-localResDis   off
     2013-12-28 19:42:59   R-lowBatLimitRT 2.1 V
     2014-03-04 19:28:32   R-modusBtnLock  off
     2014-03-04 19:28:32   R-pairCentral   0x23A3F4
     2014-03-04 19:42:58   RegL_00:        01:01 02:01 09:01 0A:23 0B:A3 0C:F4 0E:0A 0F:01  11:00 12:15 16:00 18:00 19:00 1A:00 00:00
     2014-04-10 22:18:40   RegL_07:        0
     2014-06-05 11:39:16   actuator        0
     2014-06-05 11:39:16   battery         ok
     2014-06-05 11:39:16   batteryLevel    2.8
     2014-06-05 11:39:16   desired-temp    22.0
     2014-06-05 11:39:16   measured-temp   22.3
     2013-12-28 19:41:39   noReceiver      src:21FBB2 8610 0AB0DC104518
     2014-03-04 19:26:18   powerOn         -
     2014-03-04 19:26:18   recentStateType info
     2014-01-22 21:42:15   smoothActuator  46.5553288735172
     2014-06-04 19:44:54   state           CMDs_done
     2014-01-21 19:40:01   test            22
     2014-06-04 19:44:54   time-request    -
   Helper:
     cSnd       1123A3F421FBB2820422201C0E14040E56
     mId        0095
     rxType     140
     Io:
       newChn     +21FBB2,00,01,1E
       nextSend   1401961156.67742
     Prt:
       bErr       0
       sProc      0
       sleeping   1
       Rspwait:
     Q:
       qReqConf   
       qReqStat   
     Role:
       dev        1
     Rssi:
       Hmlan1:
         avg        -44
         cnt        1
         lst        -44
         max        -44
         min        -44
       At_hmlan1:
         avg        -49.7934059286146
         cnt        9918
         lst        -42
         max        -41
         min        -87
     Shregw:
       07         04
Attributes:
   IODev      HMLAN1
   actCycle   000:10
   actStatus  alive
   autoReadReg 4_reqStatus
   expert     2_full
   firmware   1.2
   group      og_Kueche
   model      HM-CC-RT-DN
   peerIDs   
   room       og_Kueche
   serialNr   KEQ0508161
   subType    thermostat
   webCmd     getConfig:burstXmit

...aber normalerweise arbeitet man nicht mit dem Device selbst, sondern mit Channel 04:

Internals:
   DEF        21FBB204
   HMLAN1_MSGCNT 9887
   HMLAN1_RAWMSG E21FBB2,0000,0836D6D8,FF,FFD6,17861021FBB20000000AB0DF0D0020
   HMLAN1_RSSI -42
   HMLAN1_TIME 2014-06-05 11:41:44
   LASTInputDev HMLAN1
   MSGCNT     9887
   NAME       og_ku_HeizungOp
   NR         28
   STATE      T: 22.3 desired: 22.0 valve: 0
   TYPE       CUL_HM
   chanNo     04
   device     og_ku_Heizung
   Readings:
     2014-05-28 12:17:12   CommandAccepted yes
     2014-01-02 14:13:46   R-boostPeriod   5 min
     2014-01-02 14:13:46   R-boostPos      80 %
     2014-04-10 09:53:55   R-btnNoBckLight off
     2014-01-02 14:13:46   R-dayTemp       22 C
     2014-04-10 09:53:55   R-daylightSaveTime on
     2014-04-10 09:53:55   R-decalcTime    11:00
     2014-04-10 09:53:55   R-decalcWeekday Sat
     2014-04-10 09:53:55   R-modePrioManu  all
     2014-04-10 09:53:55   R-modePrioParty all
     2014-01-02 14:13:46   R-nightTemp     17 C
     2014-04-10 09:53:55   R-noMinMax4Manu off
     2014-04-10 09:53:55   R-regAdaptive   on
     2014-04-10 09:53:55   R-reguExtI      18
     2014-04-10 09:53:55   R-reguExtP      33
     2014-04-10 09:53:55   R-reguExtPstart 45
     2014-04-10 09:53:55   R-reguIntI      15
     2014-04-10 09:53:55   R-reguIntP      30
     2014-04-10 09:53:55   R-reguIntPstart 30
     2014-04-10 09:53:55   R-showInfo      time
     2014-04-10 09:53:55   R-showWeekday   off
     2014-04-10 09:53:50   R-sign          off
     2014-01-02 14:13:46   R-tempMax       30.5 C
     2014-01-02 14:13:46   R-tempMin       4.5 C
     2014-04-10 09:53:55   R-tempOffset    0.0K
     2014-01-02 14:13:46   R-valveErrPos   15 %
     2014-01-02 14:13:46   R-valveMaxPos   100 %
     2014-02-08 17:40:56   R-valveOffsetRt 0 %
     2014-04-10 09:53:55   R-winOpnBoost   off
     2014-01-02 14:13:46   R-winOpnDetFall 1.4 K
     2014-04-10 09:53:55   R-winOpnMode    on
     2014-01-02 14:13:46   R-winOpnPeriod  15 min
     2014-01-02 14:13:46   R-winOpnTemp    12 C
     2014-04-10 09:53:55   R_0_tempListSat 05:30 22.0 24:00 22.0
     2014-04-10 09:53:55   R_1_tempListSun 05:30 22.0 24:00 22.0
     2014-04-10 09:53:55   R_2_tempListMon 05:30 22.0 24:00 22.0
     2014-04-10 09:53:55   R_3_tempListTue 05:30 22.0 24:00 22.0
     2014-04-10 09:53:55   R_4_tempListWed 05:30 22.0 24:00 22.0
     2014-04-10 09:53:55   R_5_tempListThu 05:30 22.0 24:00 22.0
     2014-04-10 09:53:55   R_6_tempListFri 05:30 22.0 24:00 22.0
     2014-04-10 09:53:55   R_tempList_State verified
     2014-06-05 11:41:44   ValvePosition   0
     2014-06-05 11:41:44   desired-temp    22.0
     2014-06-05 11:41:44   measured-temp   22.3
     2014-06-05 11:41:44   mode            auto
     2014-06-05 11:41:44   motorErr        ok
     2014-05-28 12:17:12   recentStateType ack
     2014-03-05 10:08:05   smoothActuator  69.9556851076422
     2014-06-05 11:41:44   state           T: 22.3 desired: 22.0 valve: 0
     2014-03-20 20:32:23   tempList_State  verified
   Helper:
     Role:
       chn        1
     Shregr:
       07         00
Attributes:
   expert     1
   group      og_Kueche
   model      HM-CC-RT-DN
   peerIDs    00000000,
   room       og_Kueche


Zitatwarum steuert der pid20 bei Dir einen dummy, und dann ein verzögertes at erst den poti an der heizung? kann nicht der pid20 direkt den poti regeln?
Da ist kein Dummy, ich benutze einfach das actuator-Reading.
Soweit ich mich erinnere, will der PID20 sowas machen wie "set <device> <name> <actuator>" Dazu müsste ich aber etwas haben, was darauf reagiert. Meine Heizanlage ist aber selbst nicht wirklich ein FHEM-Device (zum Abfragen der Werte benutze ich ein HTTPMOD). Stattdessen ruft das at eine Funktion auf, die aus dem Soll-Vorlauf die "Fake-Außentemperatur" berechnet und das dann per HttpUtils_NonblockingGet an den Arduino schickt, der wiederum die Digitalpotis bedient.
Ich bin mir sicher, dass das auch eleganter geht...
Wie schon gesagt, soll das in Zukunft anders werden, so dass der Arduino komplett die Brennersteuerung übernimmt und ich dem Arduino nur noch Vorlauf-Soll, Warmwasser-Soll und Heizbedarf (ja/nein) übermittle.
Gruß,
   Thorsten

FUIP

epsrw1

danke.
auch bei HM ist das passende kompatible reading vorhanden:
2014-06-05 11:41:44   ValvePosition   0
(würde bei Dir die regex die das % abschneidet einsparen)
Ich habe keine Ahnung, aber davon wenigstens ganz viel

Thorsten Pferdekaemper

Zitat von: epsrw1 am 05 Juni 2014, 12:43:36
auch bei HM ist das passende kompatible reading vorhanden:
2014-06-05 11:41:44   ValvePosition   0
(würde bei Dir die regex die das % abschneidet einsparen)
Jetzt schon, aber das war früher mal anders.
Gruß,
  Thorsten
FUIP

epsrw1

ZitatWarmwasser wird über heating_control im Winter vorrangig frühmorgens und am Abend (wenn größter Heizbedarf ist) erzeugt, um möglichst lange Brennerlaufzeiten hinzubekommen.

der schalter ist eingebaut, und über attr zu bedienen.
Ich habe keine Ahnung, aber davon wenigstens ganz viel

epsrw1

aktueller plot mit temp.kessel und warmwasser, noch etwas testen dann kommt version 1.0 nebst etwas doku.
LG, florian


PS: möchte sich vielleicht jemand an der doku beteiligen? ich kann das nicht so besonders gut...
Ich habe keine Ahnung, aber davon wenigstens ganz viel