… na hoffentlich steigst du da durch …
//Script zur Steuerung/Abgleich der Panasonic Aquarea und KNX nach Wochenplänen
// ==================== Konfiguration ====================
$ID_Wochenplan_Sommer = 18935; // EventID vom Sommer Wochenplan
$ID_Wochenplan_Winter = 22148; // EventID vom Winter Wochenplan
$ID_Waermepumpe = 55859; // Wärmepumpe AN/AUS
$ID_WP_Modus = 10467; // Wärmepumpenmodus setzen (0=Heat only, 1=Cool only, 2=Auto, 3=DHW only, 4=Heat+DHW, 5=Cool+DHW, 6=Auto+DHW)
$ID_Ruhemodus = 16650; // Ruhemodus setzen (0-3)
$ID_WW_SOLL = 30310; // ID WW Solltemperatur
$ID_Temperaturverschiebung_Heizkurve = 22372; // Temperaturverschiebung/Sollwert Heizkurve
$ID_Temperaturverschiebung_Kuehlkurve = 40751; // Temperaturverschiebung/Sollwert Kühlkurve
$ID_HVAC = 32055; // Gebäude HVAC KNX setzen (1=Comfort, 2=Standby/Abwesend, 3=Economy/Nacht, 4= BuildingProtection/Frostschutz)
$ID_Leistungsbegrenzung = 39549; // Leistung Analog-Aktor KNX setzen (0-100%)
$ID_SommerWinter = 58094; // Variable ID Sommer-/Winterumschaltung (Sommermodus=0, Wintermodus=1)
$ID_Kuehlung = 32301; // Variable ID Kühlmodus
$ID_Wochenplan = 21887; // Variable ID Wochenplan AN/AUS
$ID_DreiWegeVentil = 35540; // ID 3-Wege Ventil (WW=true, Heizwasser=false)
$ID_Instanz_alleVentileZwangsstellung = 25815; // Instanz ID alle Ventile Zwangsstellung (100%)
$ID_Instanz_EG_VentileZwangsstellung = 38625; // Instanz ID EG Ventile Zwangsstellung (100%)
$ID_Instanz_OG_VentileZwangsstellung = 48900; // Instanz ID OG Ventile Zwangsstellung (100%)
$ID_Instanz_Keller_VentileZwangsstellung = 39254; // Instanz ID Keller Ventile Zwangsstellung (100%)
$Status_Waermepumpe = GetValue(36761); // Wärmepumpe an/aus
$Status_Verdichter = GetValue(15004); // Verdichter an/aus
$Status_Waermepumpenmodus = GetValue(53786); // Modus der Wärmepumpe (0-8)
$Status_WW_SOLL = GetValue(20598); // Sollwert Warmwasser
$Status_Aussentemperatur = GetValue(16734); // Lufttemperatur außen
// ======================= Regelung ========================
// Aktivierung der Wochenpläne für Sommer/Winter (AN/AUS)
if ($_IPS['SENDER'] == "Variable") {
if ($_IPS['VARIABLE'] == $ID_Wochenplan) {
if ($_IPS['VALUE'] == false) { // wenn ausgeschaltet
IPS_SetEventActive($ID_Wochenplan_Sommer, false);
IPS_SetEventActive($ID_Wochenplan_Winter, false);
} else { // wenn eingeschaltet
if (GetValue($ID_SommerWinter) == false) { // wenn Sommermodus
IPS_SetEventActive($ID_Wochenplan_Sommer, true);
IPS_SetEventActive($ID_Wochenplan_Winter, false);
} else { // wenn Wintermodus
IPS_SetEventActive($ID_Wochenplan_Sommer, false);
IPS_SetEventActive($ID_Wochenplan_Winter, true);
}
}
}
}
// Umschaltung der Wochenpläne Sommer/Winter (Sommer=false, Winter=true)
if ($_IPS['SENDER'] == "Variable") {
if ($_IPS['VARIABLE'] == $ID_SommerWinter) {
if(GetValue($ID_Wochenplan) == true) { // nur umschalten wenn Steuerung aktiv, sonst bleiben die Events inaktiv
if ($_IPS['VALUE'] == false) { // Sommer=false, Winter=true
IPS_SetEventActive($ID_Wochenplan_Sommer, true);
IPS_SetEventActive($ID_Wochenplan_Winter, false);
RequestAction($ID_WP_Modus, 3); // nur Warmwasser
IPS_Sleep(3000);
RequestAction($ID_WW_SOLL, $Status_WW_SOLL); // WW-Temperatur setzen
KNX_WriteDPT20($ID_HVAC, 4); // alle Raumregler auf Building Protection/Frostschutz
} else {
IPS_SetEventActive($ID_Wochenplan_Sommer, false);
IPS_SetEventActive($ID_Wochenplan_Winter, true);
RequestAction($ID_WP_Modus, 4); // Heizwasser & Warmwasser
IPS_Sleep(3000);
RequestAction($ID_Temperaturverschiebung_Heizkurve, 0); // Temperaturverschiebung der Heizkurve auf 0°C
IPS_Sleep(3000);
RequestAction($ID_WW_SOLL, $Status_WW_SOLL); // WW-Temperatur setzen
KNX_WriteDPT20($ID_HVAC, 1); // alle Raumregler auf Comfort/Anwesend
}
}
}
}
// Umschaltung Kühlmodus
if ($_IPS['SENDER'] == "Variable") {
if ($_IPS['VARIABLE'] == $ID_Kuehlung) {
if ($_IPS['VALUE'] == false) { // wenn Kühlmodus ausgeschaltet wird
KNX_WriteDPT1($ID_Instanz_alleVentileZwangsstellung, false); // alle Ventile Zwangsstellung 0%
RequestAction($ID_WP_Modus, 3); // nur Warmwasser
} else { // wenn Kühlmodus eingeschaltet wird
}
}
}
// Regelung Wintermodus
if ($_IPS['SENDER'] == "TimerEvent") {
if ($_IPS['EVENT'] == $ID_Wochenplan_Winter) {
switch ($_IPS['ACTION']) {
case 1: //ID 1 - nur Heizwasser
RequestAction($ID_Waermepumpe, 1); // Wärmepumpe ein
IPS_Sleep(3000);
RequestAction($ID_WP_Modus, 0); // nur Heizwasser
IPS_Sleep(3000);
RequestAction($ID_Temperaturverschiebung_Heizkurve, 0); // Temperaturverschiebung der Heizkurve auf 0K
KNX_WriteDPT20($ID_HVAC, 1); // alle Raumregler auf Comfort/Anwesend
break;
case 2: //ID 2 - Warmwasser & Heizwasser
RequestAction($ID_Waermepumpe, 1); // Wärmepumpe ein
IPS_Sleep(3000);
RequestAction($ID_WP_Modus, 4); // Heizwasser & Warmwasser
IPS_Sleep(3000);
RequestAction($ID_Temperaturverschiebung_Heizkurve, 0); // Temperaturverschiebung der Heizkurve auf 0K
IPS_Sleep(3000);
RequestAction($ID_WW_SOLL, $Status_WW_SOLL); // WW-Temperatur setzen
KNX_WriteDPT20($ID_HVAC, 1); // alle Raumregler auf Comfort/Anwesend
break;
case 3: //ID 2 - Nachtbetrieb
if ($Status_Aussentemperatur < 0) { // wenn Außentemperatur kleiner als 0°C, WP an lassen
RequestAction($ID_Waermepumpe, 1); // Wärmepumpe ein
IPS_Sleep(3000);
RequestAction($ID_Temperaturverschiebung_Heizkurve, -2); // Temperaturverschiebung der Heizkurve auf -2K
} else {
RequestAction($ID_Waermepumpe, 0); // Wärmepumpe aus
}
IPS_Sleep(3000);
RequestAction($ID_WP_Modus, 0); // nur Heizwasser
KNX_WriteDPT20($ID_HVAC, 3); // alle Raumregler auf Economy/Nacht
break;
}
}
}
// Regelung Sommermodus
if ($_IPS['SENDER'] == "TimerEvent") {
if ($_IPS['EVENT'] == $ID_Wochenplan_Sommer) {
switch ($_IPS['ACTION']) {
case 1: //ID 1 - nur Kühlwasser
if (GetValue($ID_Kuehlung) == true) { // wenn Kühlung eingeschaltet
RequestAction($ID_Waermepumpe, 1); // Wärmepumpe ein
IPS_Sleep(3000);
RequestAction($ID_WP_Modus, 1); // nur Kühlwasser
IPS_Sleep(3000);
RequestAction($ID_Temperaturverschiebung_Kuehlkurve, 0); // Temperaturverschiebung der Kühlkurve auf 0°C
KNX_WriteDPT1($ID_Instanz_EG_VentileZwangsstellung, true); // EG Ventile Zwangsstellung 100%
IPS_Sleep(100);
KNX_WriteDPT1($ID_Instanz_OG_VentileZwangsstellung, true); // OG Ventile Zwangsstellung 100%
} else {
RequestAction($ID_Waermepumpe, 0); // Wärmepumpe aus
IPS_Sleep(3000);
RequestAction($ID_WP_Modus, 3); // nur Warmwasser
KNX_WriteDPT20($ID_HVAC, 4); // alle Raumregler auf Building Protection/Frostschutz
KNX_WriteDPT1($ID_Instanz_EG_VentileZwangsstellung, false); // EG Ventile Zwangsstellung 0%
IPS_Sleep(100);
KNX_WriteDPT1($ID_Instanz_OG_VentileZwangsstellung, false); // OG Ventile Zwangsstellung 0%
}
break;
case 2: //ID 2 - Warmwasser & Kühlwasser
RequestAction($ID_Waermepumpe, 1); // Wärmepumpe ein
IPS_Sleep(3000);
if (GetValue($ID_Kuehlung) == true) { // wenn Kühlung eingeschaltet
RequestAction($ID_WP_Modus, 5); // Kühlwasser & Warmwasser
IPS_Sleep(3000);
RequestAction($ID_WW_SOLL, $Status_WW_SOLL); // WW-Temperatur setzen
IPS_Sleep(3000);
RequestAction($ID_Temperaturverschiebung_Kuehlkurve, 0); // Temperaturverschiebung der Kühlkurve auf 0°C
KNX_WriteDPT1($ID_Instanz_EG_VentileZwangsstellung, true); // EG Ventile Zwangsstellung 100%
IPS_Sleep(100);
KNX_WriteDPT1($ID_Instanz_OG_VentileZwangsstellung, true); // OG Ventile Zwangsstellung 100%
} else {
RequestAction($ID_WP_Modus, 3); // nur Warmwasser
IPS_Sleep(3000);
RequestAction($ID_WW_SOLL, $Status_WW_SOLL); // WW-Temperatur setzen
KNX_WriteDPT20($ID_HVAC, 4); // alle Raumregler auf Building Protection/Frostschutz
KNX_WriteDPT1($ID_Instanz_EG_VentileZwangsstellung, false); // EG Ventile Zwangsstellung 0%
IPS_Sleep(100);
KNX_WriteDPT1($ID_Instanz_OG_VentileZwangsstellung, false); // OG Ventile Zwangsstellung 0%
}
break;
case 3: //ID 3 - Nachtbetrieb
RequestAction($ID_Waermepumpe, 0); // Wärmepumpe aus
IPS_Sleep(3000);
RequestAction($ID_WP_Modus, 3); // nur Warmwasser
KNX_WriteDPT20($ID_HVAC, 4); // alle Raumregler auf Building Protection/Frostschutz
KNX_WriteDPT1($ID_Instanz_EG_VentileZwangsstellung, false); // EG Ventile Zwangsstellung 0%
IPS_Sleep(100);
KNX_WriteDPT1($ID_Instanz_OG_VentileZwangsstellung, false); // OG Ventile Zwangsstellung 0%
break;
}
}
}
// aktive Leistungsbegrenzung durch 3-Wege Ventil
if ($_IPS['SENDER'] == "Variable") {
if ($_IPS['VARIABLE'] == $ID_DreiWegeVentil) {
if ($_IPS['VALUE'] == true) {
KNX_WriteDPT5($ID_Leistungsbegrenzung, 50); // bei Warmwasserbereitung Leistungsbegrenzung auf 50%
} else {
KNX_WriteDPT5($ID_Leistungsbegrenzung, 30); // bei Heizwasserbereitung Leistungsbegrenzung auf 30%
}
}
}