Durchnittliche Ventilöffnung bei mehreren HK-Thermostaten
Moderator: Co-Administratoren
-
- Beiträge: 14162
- Registriert: 08.05.2013, 23:33
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Nordwürttemberg
- Hat sich bedankt: 585 Mal
- Danksagung erhalten: 1499 Mal
Re: Durchnittliche Ventilöffnung bei mehreren HK-Thermostate
Direkt unter dem Script im Originalthread steht ein Link zum Wärmeanforderungsscript v 1.4.0. Dieses habe ich bei mir eingesetzt und es läuft parallel zur klassischen Streuerung wie oben beschrieben problemlos. Das kurze Script habe ich nie probiert, weil ich die Schaltschwellen recht nützlich fand. Der Unterschied ist, dass in der neuen Version die Ventile mit einer "for each"-Schleife im Gewerk "Heizung" geprüft werden. Finde ich auch zielführender als die globale Abfrage auf einen bestimmten Datenpunkt (LeftVal). Probiere doch mal das Script aus. Solltest Du die Thermenansteuerung nicht benötigen, kannst Du ja die entsprechende Passage und die Variablendeklaration rauswerfen. Dann ist das Script fast genau so kurz wie Dein jetziges
Gruß Xel66
Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch
Re: Durchnittliche Ventilöffnung bei mehreren HK-Thermostate
So hab nubn das neue Script genommen und die Variable auf Waermeanforderung geändert aber es funktioniert immer noch nicht. Kann es an den neuen HK-Termostatenn liegen die ich habe (HM-CC-RT-DN)?
lg
Manuel
Code: Alles auswählen
! Waermeanforderung
! Version 1.4.0
! Script von Oliver Lenker - 27.10.2012
! Ergänzungen von Vasco Dunker - 22.2.2013
!
! Historie: 1.4.0 - Korrektur Abschaltbedingungen
! - Kommentare ergaenzt
! 1.3.0 - Umstellung Zugriff auf Stellantriebe von undokumentierter
! Methode zu standard bzw. dokumetierter Methode
! - Bug "ignorieren von Zeilen nach leeren Kommentarzeilen"
! fuehrt zu Problem mit 1. Konstante => behoben
!
! 1.2.0 - Korrektur Wertebereich "Waermeanforderung"
! - Umbenennung / Harmonisierung der Variablen- und Konstantennamen
! - Ergaenzung Konstanten
! - Anpassung Header
! - Anpassung Filename & Programmname
! - Kommentare ergaenzt
!
! 1.1.0 - Anpassung Abhaengigkeit Schalttrigger Ventiloeffnungen
! - Einfuehrung von Konstanten fuer Grenzwerte u.ae.
!
! 1.0.0 - Initiale Version
! Basierend auf "Waermeanforderungs-Steuerung (c) 2010 teddy278"
!
! --------------------------------------------------------------------------
! Funktion: Das Script berechnet anhand der Ventilstellungen aller erfassten
! und korrekt arbeitenden Heizungsventile die Notwendigkeit
! des Schaltens der Therme und hinterlegt diesen Wert in der
! entsprechenden Systemvariable.
! Parallel wird der Gesamtwert der Ventiloeffnungen als Pruefwert
! ausgegeben.
!
! --------------------------------------------------------------------------
!
! Es werden folgende Softwarepakete auf der CCU benoetigt:
!
! --------------------------------------------------------------------------
!
! Es werden folgende Systemvariablen benoetigt bzw. abgefragt:
!
! 1. Systemvariable Name: Waermeanforderung
! Typ: Zahl
! Range: 0 ... 800
!
! 2. Systemvariable Name: Therme
! Typ: boolean
!
! --------------------------------------------------------------------------
!
! Es werden evtl. folgende Anpassungen benoetigt:
!
! 1. Anpassung Anzahl und Namen der zu loggenden Systemvariablen
!
! 2. Anpassung Name des Gewerkes, welches die Stellantriebe beinhaltet
!
! 3. Anpassung der "Konstanten"
!
! --------------------------------------------------------------------------
! Deklaration & Initialisierung der Variablen
integer sum_i = 0;
integer vent_count_i = 0;
string itemID_s;
! Schnittstelle zur WebUI
var waermeanforderung_v = dom.GetObject("Waermeanforderung"); ! Systemvariable, Integer, zur Ueberwachung
object heizung_o = dom.GetObject("Heizung"); ! Name des Gewerkes, welches die Stellantriebe beinhaltet
! Analyse aller Ventilstellungen und setzen der entsprechenden Variablen
foreach (itemID_s, heizung_o.EnumUsedIDs()) {
if (dom.GetObject(itemID_s).HssType() == "VALVE_STATE") {
if (dom.GetObject(itemID_s).DPByHssDP("ERROR").State() == 0) {
sum_i = sum_i + dom.GetObject(itemID_s).State();
vent_count_i = vent_count_i + 1;
if (dom.GetObject(itemID_s).State() >= max_vent_sin_i_c) {
vent_sin_open_b = true;
}
if (dom.GetObject(itemID_s).State() >= min_vent_sin_i_c) {
vent_sin_close_b = false;
}
}
}
}
! Therme nach Bedarf schalten
! Therme ausschalten bei Summe aller Ventiloeffnungen <= z.B. 20% und max. 1 Ventiloeffnung <= z.B. 30%
! Therme einschalten bei Summe aller Ventiloeffnungen >= z.B.30% oder mind. 1 Ventiloeffnung >= z.B. 40%
if (waermeanforderung_v.Value() != sum_i) { ! Variable aendern in sum_vent_i um relevanten Durchschnittswert zu erhalten
waermeanforderung_v.State(sum_i); ! Variable aendern in sum_vent_i um relevanten Durchschnittswert zu erhalten
}
Manuel
-
- Beiträge: 14162
- Registriert: 08.05.2013, 23:33
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Nordwürttemberg
- Hat sich bedankt: 585 Mal
- Danksagung erhalten: 1499 Mal
Re: Durchnittliche Ventilöffnung bei mehreren HK-Thermostate
Eher nicht, denn ich setzte dieses auch mit den neuen Thermostaten ein. Ich besitze lediglich im Keller einen einzigen alten Thermostaten zur Überwachung der Temperatur und vor allem Luftfeuchte im Keller (und nebenbei als Ansteuerung für das durchgehend geschlossene Heizkörperventil im Keller/Waschraum).hofi77 hat geschrieben:Kann es an den neuen HK-Termostatenn liegen die ich habe (HM-CC-RT-DN)?
Hier mal mein (funktionierendes) Script. Ich habe mir mal erlaubt, die Historie und Anleitung etwas zu kürzen.
Code: Alles auswählen
! Waermeanforderung
! Version 1.4.0
! Script von Oliver Lenker - 27.10.2012
! Ergänzungen von Vasco Dunker - 22.2.2013
!...
! Deklaration & Initialisierung der "Konstanten"
integer max_vent_sin_i_c = 40; ! Maximaloeffnung fuer 1 Ventil ab dem die Therme einschaltet
integer max_vent_sum_i_c = 30; ! Durchschnitts-Maximaloeffnung Ventile ab dem die Therme einschaltet
integer min_vent_sin_i_c = 30; ! Minimaloeffnung fuer 1 Ventil ab dem die Therme abschaltet
integer min_vent_sum_i_c = 20; ! Durchschnitts-Minimaloeffnung Ventile unter welchem die Therme abschaltet
integer switch_delay_i_c = 600; ! Zeit in Sekunden fuer Einschaltsperre der Therme
! --------------------------------------------------------------------------
!
! Deklaration & Initialisierung der Variablen
integer sum_i = 0;
integer vent_count_i = 0;
boolean vent_sin_open_b = false;
boolean vent_sin_close_b = true;
string itemID_s;
! Schnittstelle zur WebUI
var waermeanforderung_v = dom.GetObject("Waermeanforderung"); ! Systemvariable, Integer, zur Ueberwachung
var therme_v = dom.GetObject("Therme"); ! Systemvariable zum Schalten der Therme
object heizung_o = dom.GetObject("Heizung"); ! Name des Gewerkes, welches die Stellantriebe beinhaltet
! Analyse aller Ventilstellungen und setzen der entsprechenden Variablen
foreach (itemID_s, heizung_o.EnumUsedIDs()) {
if (dom.GetObject(itemID_s).HssType() == "CLIMATECONTROL_RT_TRANSCEIVER") {
if (dom.GetObject(itemID_s).DPByHssDP("FAULT_REPORTING").State() == 0) {
sum_i = sum_i + dom.GetObject(itemID_s).DPByHssDP("VALVE_STATE").State();
vent_count_i = vent_count_i + 1;
if (dom.GetObject(itemID_s).DPByHssDP("VALVE_STATE").State() >= max_vent_sin_i_c) {
vent_sin_open_b = true;
}
if (dom.GetObject(itemID_s).DPByHssDP("VALVE_STATE").State() >= min_vent_sin_i_c) {
vent_sin_close_b = false;
}
}
}
}
! Therme nach Bedarf schalten
time timestamp_t = therme_v.Timestamp();
time now_t = system.Date("%Y-%m-%d %H:%M:%S").ToTime();
integer diff_i = now_t.ToInteger() - timestamp_t.ToInteger();
integer sum_vent_i = (sum_i / vent_count_i).ToInteger();
! Therme ausschalten bei Summe aller Ventiloeffnungen <= z.B. 20% und max. 1 Ventiloeffnung <= z.B. 30%
if (((sum_vent_i <= min_vent_sum_i_c) && vent_sin_close_b) && (therme_v.Value())) {
therme_v.State(false);
}
! Therme einschalten bei Summe aller Ventiloeffnungen >= z.B.30% oder mind. 1 Ventiloeffnung >= z.B. 40%
if (((sum_vent_i >= max_vent_sum_i_c) || vent_sin_open_b) && (diff_i > switch_delay_i_c) && !(therme_v.Value())) {
therme_v.State(true);
}
! Systemvariable Waermeanforderung aktualisieren
if (waermeanforderung_v.Value() != sum_i) { ! Variable aendern in sum_vent_i um relevanten Durchschnittswert zu erhalten
waermeanforderung_v.State(sum_i); ! Variable aendern in sum_vent_i um relevanten Durchschnittswert zu erhalten
}
Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch
Re: Durchnittliche Ventilöffnung bei mehreren HK-Thermostate
Danke für das Script aber es funktioniert nicht
haben eine Variuable "Waermeanforderung"
habe das Programm "Ventilstand 1, 2, 3,.... bei 0 oder größer" bei Aktualisierung DANN -> Script sofort
es will einfach nicht hinhaun *heul*
Irgendwas mache ich falsch und ich weis (noch) nicht was
lg
Manuel
haben eine Variuable "Waermeanforderung"
habe das Programm "Ventilstand 1, 2, 3,.... bei 0 oder größer" bei Aktualisierung DANN -> Script sofort
es will einfach nicht hinhaun *heul*
Irgendwas mache ich falsch und ich weis (noch) nicht was
lg
Manuel
-
- Beiträge: 14162
- Registriert: 08.05.2013, 23:33
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Nordwürttemberg
- Hat sich bedankt: 585 Mal
- Danksagung erhalten: 1499 Mal
Re: Durchnittliche Ventilöffnung bei mehreren HK-Thermostate
Programm und Script sind erst mal unabhängig. Wenn Du das Script im Testfenster ausführst, wird dann die Variable beschrieben? Meldet das Script einen Fehler bei der Prüfung?
Ich triggere das Script durch einen externen Auslöser. In meinem Fall ist es ein CUxD-Timer mit einer Zykluszeit von fünf Minuten. Man kann auch das Zeitmodul nehmen oder als Trigger ein anderes zyklisch auftretendes Ereignis. Bevor ich auf den Timer umgestellt habe, wurde das Script durch die zyklisch übermittelte Außentemperatur getriggert (alle drei Minuten). Ein häufigerer Scriptlauf ist auch nicht notwendig, weil sich die Stellungen ja auch nicht so schnell ändern. Ich benutzt jetzt den Timer, weil ich diesen auch außerhalb der Heizperiode oder anderen Ereignissen stoppen kann, wenn ein Scriptlauf nicht sinnvoll ist.
Gruß Xel66
Ich triggere das Script durch einen externen Auslöser. In meinem Fall ist es ein CUxD-Timer mit einer Zykluszeit von fünf Minuten. Man kann auch das Zeitmodul nehmen oder als Trigger ein anderes zyklisch auftretendes Ereignis. Bevor ich auf den Timer umgestellt habe, wurde das Script durch die zyklisch übermittelte Außentemperatur getriggert (alle drei Minuten). Ein häufigerer Scriptlauf ist auch nicht notwendig, weil sich die Stellungen ja auch nicht so schnell ändern. Ich benutzt jetzt den Timer, weil ich diesen auch außerhalb der Heizperiode oder anderen Ereignissen stoppen kann, wenn ein Scriptlauf nicht sinnvoll ist.
Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch
Re: Durchnittliche Ventilöffnung bei mehreren HK-Thermostate
Beim Testlauf wird kein Fehler gemeldet aber die Variable auch nicht beschrieben.
Hab auch extra geschaut, dass einige Ventile offen sind.
Hab auch das Programm mit dem Script einmal manuell gestartet.
Hab auch versucht im Programm unter "wenn" bei den Ventilen statt "und" einmal "oder" zu probieren.
Egal was ich mache die Variable "Waermeanforderung" bleibt hartnäckig bei 0
Lg
Manuel
Hab auch extra geschaut, dass einige Ventile offen sind.
Hab auch das Programm mit dem Script einmal manuell gestartet.
Hab auch versucht im Programm unter "wenn" bei den Ventilen statt "und" einmal "oder" zu probieren.
Egal was ich mache die Variable "Waermeanforderung" bleibt hartnäckig bei 0
Lg
Manuel
-
- Beiträge: 14162
- Registriert: 08.05.2013, 23:33
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Nordwürttemberg
- Hat sich bedankt: 585 Mal
- Danksagung erhalten: 1499 Mal
Re: Durchnittliche Ventilöffnung bei mehreren HK-Thermostate
Korrektur meinerseits. Es liegt vermutlich doch daran, denn meine Scripversion hat in der Abfrage der Ventilstellungen andere Datenpunkte drin als das Originalscript. Da das schon recht lange her ist, und ich das nicht dokumentiert habe, weiß ich nicht, ob diese Änderung auf meinem Mist gewachsen ist.Xel66 hat geschrieben:Eher nicht, denn ich setzte dieses auch mit den neuen Thermostaten ein.
Code: Alles auswählen
! Analyse aller Ventilstellungen und setzen der entsprechenden Variablen
foreach (itemID_s, heizung_o.EnumUsedIDs()) {
if (dom.GetObject(itemID_s).HssType() == "CLIMATECONTROL_RT_TRANSCEIVER") {
if (dom.GetObject(itemID_s).DPByHssDP("FAULT_REPORTING").State() == 0) {
sum_i = sum_i + dom.GetObject(itemID_s).DPByHssDP("VALVE_STATE").State();
vent_count_i = vent_count_i + 1;
if (dom.GetObject(itemID_s).DPByHssDP("VALVE_STATE").State() >= max_vent_sin_i_c) {
vent_sin_open_b = true;
}
if (dom.GetObject(itemID_s).DPByHssDP("VALVE_STATE").State() >= min_vent_sin_i_c) {
vent_sin_close_b = false;
}
}
}
}
Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch
Re: Durchnittliche Ventilöffnung bei mehreren HK-Thermostate
Danke noch einmal für die Aktualisierung.
Ich weiß zwar nicht warum aber ich bekomms einfach nicht hin. In der Variable steht immer nur null.
Der Rest mit der Pumpensteuerung würde eventuell jetzt auch interessant werden (siehe mein letztes Posting).
Was die variable angeht was ist bitte Integer?
Danke
Lg
Manuel
Ich weiß zwar nicht warum aber ich bekomms einfach nicht hin. In der Variable steht immer nur null.
Der Rest mit der Pumpensteuerung würde eventuell jetzt auch interessant werden (siehe mein letztes Posting).
Was die variable angeht was ist bitte Integer?
Danke
Lg
Manuel
-
- Beiträge: 14162
- Registriert: 08.05.2013, 23:33
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Nordwürttemberg
- Hat sich bedankt: 585 Mal
- Danksagung erhalten: 1499 Mal
Re: Durchnittliche Ventilöffnung bei mehreren HK-Thermostate
Integer bedeutet hier Ganzzahl. Und das wieder bedeutet eine Zahl ohne Kommastellen. Mit beiden könnte man aber rechnen bzw. mathematisch auswerten (z.B. vergleichen). Hast Du die Variable als String angelegt, dann kannst Du damit nicht rechnen, obwohl der Inhalt gleich ist, denn String ist eine Buchstaben-(Zahlen-)Kombination. Streng genommen ein Wort. Und dieses kannst Du nicht mathematisch benutzen (außer als Variablen, aber das ist hier nicht das Thema).hofi77 hat geschrieben:Was die variable angeht was ist bitte Integer?
Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch
-
- Beiträge: 68
- Registriert: 17.01.2017, 22:00
- Wohnort: Nordrhein-Westfalen
- Hat sich bedankt: 6 Mal
Re: Durchnittliche Ventilöffnung bei mehreren HK-Thermostaten
Hallo Homematic-Gemeinde,
aufgrund der derzeitigen Energiesituation hole ich dieses Thema noch einmal hoch. Auch ich würde gerne die Summe oder, noch besser, den Durchschnittswert der Ventilöffnungsgrade aller meiner Heizkörper sehen können, um zu kontrollieren, ob wir gerade das Energieversorgungsunternehmen glücklich machen oder nicht bzw. wie gut die Dämmung der Wohnung ist, in der wir wohnen.
Leider habe ich keine Programmierkenntnisse, aber immerhin einen Hang zum Knoblen und Tüfteln und damit schon recht viel erreicht.
Ich habe also zunächst eine SV "Ventilstellungen" angelegt: Dann habe ich das letzte Skript hier entsprechend angepasst, aber leider wird die SV nicht beschrieben. Das Skript selbst weist keine Fehlermeldung auf:
Könnte es daran liegen, dass ich in meinem Gewerk "Heizung" nicht nur Heizkörperthermostate des Typs HM-CC-RT-DN habe, sondern auch Heizungsgruppen, Wandthermostate und zwei virtuelle Schalter?
Oder anders: wie und wo müsste das Skript angepasst werden, wenn ich, sagen wir mal, zwei Heizkörperthermostate HM-CC-RT-DN im Gewerk "Eisschrank" hätte und einfach nur wollte, dass deren beider Öffnungsgrade addiert und durch 2 geteilt in der SV "Ventilstellungen" angezeigt werden?
Ich bin recht sicher, dass das jemand von Euch schon gemacht hat. Vielleicht hat @Hofi77 ja auch schon sein Ziel erreicht. Lasst ihr mich teilhaben?
Viele Grüße
Jörg
aufgrund der derzeitigen Energiesituation hole ich dieses Thema noch einmal hoch. Auch ich würde gerne die Summe oder, noch besser, den Durchschnittswert der Ventilöffnungsgrade aller meiner Heizkörper sehen können, um zu kontrollieren, ob wir gerade das Energieversorgungsunternehmen glücklich machen oder nicht bzw. wie gut die Dämmung der Wohnung ist, in der wir wohnen.
Leider habe ich keine Programmierkenntnisse, aber immerhin einen Hang zum Knoblen und Tüfteln und damit schon recht viel erreicht.
Ich habe also zunächst eine SV "Ventilstellungen" angelegt: Dann habe ich das letzte Skript hier entsprechend angepasst, aber leider wird die SV nicht beschrieben. Das Skript selbst weist keine Fehlermeldung auf:
Code: Alles auswählen
! Waermeanforderung
! Version 1.4.0
! Script von Oliver Lenker - 27.10.2012
! Ergänzungen von Vasco Dunker - 22.2.2013
!
! Historie: 1.5.0. - Variablen zur Therme entfernt und SV angepasst
! 1.4.0 - Korrektur Abschaltbedingungen
! - Kommentare ergaenzt
! 1.3.0 - Umstellung Zugriff auf Stellantriebe von undokumentierter
! Methode zu standard bzw. dokumetierter Methode
! - Bug "ignorieren von Zeilen nach leeren Kommentarzeilen"
! fuehrt zu Problem mit 1. Konstante => behoben
!
! 1.2.0 - Korrektur Wertebereich "Waermeanforderung"
! - Umbenennung / Harmonisierung der Variablen- und Konstantennamen
! - Ergaenzung Konstanten
! - Anpassung Header
! - Anpassung Filename & Programmname
! - Kommentare ergaenzt
!
! 1.1.0 - Anpassung Abhaengigkeit Schalttrigger Ventiloeffnungen
! - Einfuehrung von Konstanten fuer Grenzwerte u.ae.
!
! 1.0.0 - Initiale Version
! Basierend auf "Waermeanforderungs-Steuerung (c) 2010 teddy278"
!
! --------------------------------------------------------------------------
! Angepasste Funktion: Das Script soll den Gesamtwert aller Ventilöff-
! nungen berechnen und diesen Wert (besser noch
! den Durschnittswert) in der entsprechenden System-
! variable "Ventilstellungen" hinterlegen
! --------------------------------------------------------------------------
!
! Es werden folgende Softwarepakete auf der CCU benoetigt:
!
! --------------------------------------------------------------------------
!
! Es werden folgende Systemvariablen benoetigt bzw. abgefragt:
!
! 1. Systemvariable Name: Ventilstellungen
! Typ: Zahl
! Range: 0 ... 800
!
! --------------------------------------------------------------------------
!
! Es werden evtl. folgende Anpassungen benoetigt:
!
! 1. Anpassung Anzahl und Namen der zu loggenden Systemvariablen
!
! 2. Anpassung Name des Gewerkes, welches die Stellantriebe beinhaltet
!
!
! --------------------------------------------------------------------------
! Deklaration & Initialisierung der Variablen
integer sum_i = 0;
integer vent_count_i = 0;
string itemID_s;
! Schnittstelle zur WebUI
var ventilstellungen_v = dom.GetObject("Ventilstellungen"); ! Systemvariable, Integer, zur Ueberwachung
object heizung_o = dom.GetObject("Heizung"); ! Name des Gewerkes, welches die Stellantriebe beinhaltet
! Analyse aller Ventilstellungen und setzen der entsprechenden Variablen
! Analyse aller Ventilstellungen und setzen der entsprechenden Variablen
foreach (itemID_s, heizung_o.EnumUsedIDs()) {
if (dom.GetObject(itemID_s).HssType() == "CLIMATECONTROL_RT_TRANSCEIVER") {
if (dom.GetObject(itemID_s).DPByHssDP("FAULT_REPORTING").State() == 0) {
sum_i = sum_i + dom.GetObject(itemID_s).DPByHssDP("VALVE_STATE").State();
vent_count_i = vent_count_i + 1;
if (dom.GetObject(itemID_s).DPByHssDP("VALVE_STATE").State() >= max_vent_sin_i_c) {
vent_sin_open_b = true;
}
if (dom.GetObject(itemID_s).DPByHssDP("VALVE_STATE").State() >= min_vent_sin_i_c) {
vent_sin_close_b = false;
}
}
}
}
if (ventilstellungen_v.Value() != sum_i) { ! Variable aendern in sum_vent_i um relevanten Durchschnittswert zu erhalten
ventilstellungen_v.State(sum_i); ! Variable aendern in sum_vent_i um relevanten Durchschnittswert zu erhalten
}
Oder anders: wie und wo müsste das Skript angepasst werden, wenn ich, sagen wir mal, zwei Heizkörperthermostate HM-CC-RT-DN im Gewerk "Eisschrank" hätte und einfach nur wollte, dass deren beider Öffnungsgrade addiert und durch 2 geteilt in der SV "Ventilstellungen" angezeigt werden?
Ich bin recht sicher, dass das jemand von Euch schon gemacht hat. Vielleicht hat @Hofi77 ja auch schon sein Ziel erreicht. Lasst ihr mich teilhaben?
Viele Grüße
Jörg
Gruß,
der Narrowmatiker
__________________________________________________________________________________________________________________________________________
Die Lösung ist so nah - warum bin ich so weit weg?
der Narrowmatiker
__________________________________________________________________________________________________________________________________________
Die Lösung ist so nah - warum bin ich so weit weg?