Heizkörperthermostat Heizprogramme per WebFront einstellen
Moin,
hat eigentlich mal jemand in der Richtung Programmierung Wandthermostat per WebFront was gebastelt?
Ich nutze immer noch einzelne Sachen aber hab mir noch nix bequemes (Zeitplan usw) gebaut, würde aber mal gerne auch dieses Thema erschlagen.
Aber bitte kein IPSLibrary. ;)
Liste der Anhänge anzeigen (Anzahl: 1)
Da mich gestern mein Zahnklempner noch etwas gequält hat, bin ich nicht wirklich zu irgendwas gekommen.
Und auch wenn es jetzt leider noch etwas dauert... die Scripte sind nicht wirklich publizierbar. :D
Hier schon ein Screenshot vom WF wie es aussehen könnte.
Anhang 20499
Michael
Liste der Anhänge anzeigen (Anzahl: 2)
Wandthermostat Setup per WebFront
Hallo...
meine HM-Wandthermostate (...leider habe ich damit erst drei Zimmer bestückt ... :rolleyes:) arbeiten autark. Ich verwende IPS eigentlich "nur" zur Visualisierung der Werte und zum Programmieren der Zeitprogramme. So funktioniert das ganze auch dann, wenn der Server mal down ist.
Dank vieler Hinweise und Tipps in diesem Forum habe ich hierzu ein paar Scripte "zusammengetragen" bzw. auch etwas selbst gebastelt (siehe Bilder). Bei Interesse kann ich die Scripe gerne hier zur Verfügung stellen.
Gruß
Swifty
Liste der Anhänge anzeigen (Anzahl: 10)
Scripte
Hallo...
anbei findet ihr meine Skripte und ein paar Bilder, die Euch bei der Einrichtung helfen sollten.
Die Einrichtung geht nur per Hand, d.h. alle Variablen, Profile und Assoziationen müssen manuell angelegt und zusammen mit den Aktionsskripten den Variablen zuweisen werden... ;)
- Die Skripte "HM_Heizung_Funktionen.ips" und "hmxml.inc" in den Skriptordner von IPS kopieren,
- in der Datei "hmxml.inc.php" die IP und den Port der HM-Zentrale angepasst und
- alle Variablen und Scripte gemäß Bild 1 anlegen.
Dabei bekommen alle Variablen, in der Kategorie "Zeitplan - Editieren" mit Ausnahme von "HM_Edit_Tagesprofil_Anzeige_html", "HM_Edit_WochenProfil_Anzeige_html" und HM_Edit_Profil_temporär" das nachfolgende Aktionsscript "HM_Edit" zugewiesen. Die Profile und Assoziationen der Variablen könnt Ihr den beigefügten Bildern entnehmen.
Skript "HM_Edit"
In diesem Skript müsst Ihr noch die IDs der von Euch angelegten Variablen (siehe 2.), die HM_DeviceIDs und die IDs der HM_Wochenprofile der WTe eintragen. Die Kommentare im Script sowie das Bild 1 sollten da weiterhelfen.
PHP-Code:
<?
include "HM_Heizung_Funktionen.ips.php";
include "hmxml.inc.php";
$dayArray = array("MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY","SUNDAY");
$HM_Zimmer_Auswahl_id=33994 /*[Gewerke\Heizung\Zeitplan - Editieren\HM_Edit_Zimmer_Auswahl]*/ ;
$Profil_Wochentage_id= 34509 /*[Gewerke\Heizung\Zeitplan - Editieren\HM_Edit_Wochentag_Auswahl]*/;
$Profil_Slot_Auswahl_id=17709 /*[Gewerke\Heizung\Zeitplan - Editieren\HM_Edit_TagesProfil_Slot_Auswahl]*/;
$TagesProfil_edit_Anzeige_id = 21003 /*[Gewerke\Heizung\Zeitplan - Editieren\HM_Edit_Tagesprofil_Anzeige_html]*/;
$WochenProfil_edit_Anzeige_id=42364 /*[Gewerke\Heizung\Zeitplan - Editieren\HM_Edit_WochenProfil_Anzeige_html]*/ ;
$Profil_temp_id=25362 /*[Gewerke\Heizung\Zeitplan - Editieren\HM_Edit_Profil_temporär]*/;
$Temp_edit_id=36633 /*[Gewerke\Heizung\Zeitplan - Editieren\HM_Edit_+1°C_-1°C]*/ ;
$Zeit_edit_id=17552 /*[Gewerke\Heizung\Zeitplan - Editieren\HM_Edit_+10min_-10min]*/ ;
$Slot_add_del_id=53093 /*[Gewerke\Heizung\Zeitplan - Editieren\HM_Edit_Slot_add_del]*/ ;
$Wochenprofil_speichern_id=41049 /*[Gewerke\Heizung\Zeitplan - Editieren\HM_Edit_Profil_speichern]*/ ;
$Profil_uebertragen_show_id= 32176 /*[Gewerke\Heizung\Zeitplan - Editieren\HM_Edit_Profil_übertragen]*/ ;
$Tagesprofil_kopieren_id=26219 /*[Gewerke\Heizung\Zeitplan - Editieren\HM_Edit_Tragesprofil_kopieren]*/ ;
$Wochenprofil_uebernehmen_von_id = 13687 /*[Gewerke\Heizung\Zeitplan - Editieren\HM_Edit_Wochenprofil_übernehmen_von]*/ ;
//***************************************************************************************************************************************
//***************************************************************************************************************************************
/****************************************
// $IPS_HM_DeviceIDs der Wandthermostate
*******************************/
//$IPS_HM_DeviceID[Assoziation von Variable $HM_Zimmer_Auswahl] = [id von CLIMATECONTROL_REGULATOR des jeweiligen WT]
$IPS_HM_DeviceID[1]=28913 /*[Hardware\Haus\Erdgeschoss\Küche\Heizung\HM-CC-TC - Küche\CLIMATECONTROL_REGULATOR]*/ ;
$IPS_HM_DeviceID[2]=32495 /*[Hardware\Haus\1. Etage\Arbeitszimmer\Heizung\HM-CC-TC - Arbeitszimmer\CLIMATECONTROL_REGULATOR]*/;
$IPS_HM_DeviceID[3]=52055 /*[Hardware\Haus\1. Etage\Bad\Heizung\HM-CC-TC - Bad\CLIMATECONTROL_REGULATOR]*/ ;
//$IPS_HM_Wochenprofil[Assoziation von Variable $HM_Zimmer_Auswahl] = [id des abgespeicherten Wochenprofils des WT]
$IPS_HM_Wochenprofil[1]=20249 /*[Gewerke\Heizung\Küche\Steuerung\HM_Heizung_WochenProfil]*/ ;
$IPS_HM_Wochenprofil[2]=26666 /*[Gewerke\Heizung\Arbeitszimmer\Steuerung\HM_Heizung_WochenProfil]*/;
$IPS_HM_Wochenprofil[3]=22164 /*[Gewerke\Heizung\Bad\Steuerung\HM_Heizung_Wochenprofil]*/ ;
//*********************************
if ($_IPS['SENDER']=='WebFront')
{
If ($_IPS['VARIABLE']==$Wochenprofil_speichern_id)
{
If (GetValue($Wochenprofil_speichern_id)==1) // Es liegen Änderungen zum speichern vor
{
// Teste Integrität der Tagesprofile
If (HM_WochenTempProfil_prüfen($Profil_temp_id) == "OK")
{
// echo "Alles OK !!";
$tmp=HMXML_setTempProfile($IPS_HM_DeviceID[GetValue($HM_Zimmer_Auswahl_id)], unserialize(GetValue($Profil_temp_id)));
if ($tmp==1)
{
echo "Speichern Erfolgreich";
$tmp = HMXML_getTempProfile($IPS_HM_DeviceID[GetValue($HM_Zimmer_Auswahl_id)],false, false);
Setvalue($IPS_HM_Wochenprofil[GetValue($HM_Zimmer_Auswahl_id)], serialize($tmp));
SetValue($Profil_temp_id, GetValue($IPS_HM_Wochenprofil[GetValue($HM_Zimmer_Auswahl_id)]));
// SetValue($WochenProfil_aktuell_Anzeige_id, HM_WochenTempProfil_html($Profil_temp_id));
SetValue($WochenProfil_edit_Anzeige_id, HM_WochenTempProfil_html($Profil_temp_id));
$tmp=(unserialize(Getvalue($Profil_temp_id)));
$day=GetValue($Profil_Wochentage_id);
SetValue($TagesProfil_edit_Anzeige_id, HM_TagesTempProfil_html($tmp[$dayArray[$day]], GetValue($Profil_Slot_Auswahl_id)));
SetValue($Wochenprofil_speichern_id,0); // Speicher Button zurücksetzen
}
}
else
{
echo HM_WochenTempProfil_prüfen($Profil_temp_id);
}
}
}
else
{
SetValue($_IPS['VARIABLE'],$_IPS['VALUE']);
}
Switch ($_IPS['VARIABLE'])
{
Case $HM_Zimmer_Auswahl_id ;
//33994*[Gewerke\Heizung\Zeitplan - Editieren\HM_Edit_Zimmer_Auswahl]*/
If (GetValue($HM_Zimmer_Auswahl_id)== 0) // Zurücksetzen
{
SetValue($Profil_Slot_Auswahl_id,1);
SetValue($Profil_Wochentage_id,0);
SetValue($Profil_temp_id, "");
$str = $str = "<table align='center' border=0 cellpadding=3 cellspacing=3 width=90%>
<tr height=30 ><th> Slot </th><th> Start </th><th> Ende </th><th> SollWert</th></tr>";
$str .= "<tr align='center' height=25> <td width=25%> </td><td width=25%> </td><td width=25%> </td><td width=25%> </td></tr></table>";
SetValue($TagesProfil_edit_Anzeige_id, $str);
// SetValue($WochenProfil_aktuell_Anzeige_id,"");
SetValue($WochenProfil_edit_Anzeige_id,"");
SetValue($Wochenprofil_speichern_id,0); // Speicher Button zurücksetzen
}
If (GetValue($HM_Zimmer_Auswahl_id)> 0)
{
SetValue($Profil_temp_id, GetValue($IPS_HM_Wochenprofil[GetValue($HM_Zimmer_Auswahl_id)]));
// SetValue($WochenProfil_aktuell_Anzeige_id, HM_WochenTempProfil_html($Profil_temp_id));
SetValue($WochenProfil_edit_Anzeige_id, HM_WochenTempProfil_html($Profil_temp_id, GetValue($Profil_Wochentage_id)));
$tmp=(unserialize(Getvalue($Profil_temp_id)));
$day=GetValue($Profil_Wochentage_id);
SetValue($TagesProfil_edit_Anzeige_id, HM_TagesTempProfil_html($tmp[$dayArray[$day]], GetValue($Profil_Slot_Auswahl_id)));
SetValue($Wochenprofil_speichern_id,0); // Speicher Button zurücksetzen
}
break;
Case $Profil_Slot_Auswahl_id;
If (GetValue($HM_Zimmer_Auswahl_id)!=0)
{
$tmp=(unserialize(Getvalue($Profil_temp_id)));
$day=GetValue($Profil_Wochentage_id);
SetValue($TagesProfil_edit_Anzeige_id, HM_TagesTempProfil_html($tmp[$dayArray[$day]], GetValue($Profil_Slot_Auswahl_id)));
}
break;
Case $Profil_Wochentage_id; //34509;
If (GetValue($HM_Zimmer_Auswahl_id)!=0)
{
$tmp=(unserialize(Getvalue($Profil_temp_id)));
$day=GetValue($Profil_Wochentage_id);
SetValue($TagesProfil_edit_Anzeige_id, HM_TagesTempProfil_html($tmp[$dayArray[$day]], GetValue($Profil_Slot_Auswahl_id)));
SetValue($WochenProfil_edit_Anzeige_id, HM_WochenTempProfil_html($Profil_temp_id, GetValue($Profil_Wochentage_id)));
If (IPS_GetVariableProfile("HM_Heizung_Slot")['MaxValue']<GetValue($Profil_Slot_Auswahl_id))
{
SetValue($Profil_Slot_Auswahl_id,IPS_GetVariableProfile("HM_Heizung_Slot")['MaxValue']);
}
}
break;
Case $Zeit_edit_id; //17552 *[Gewerke\Heizung\Zeitplan - Editieren\HM_Edit_+10min_-10min]*/
If (GetValue($HM_Zimmer_Auswahl_id)!=0)
{
$tmp=(unserialize(Getvalue($Profil_temp_id)));
$day=GetValue($Profil_Wochentage_id);
$Slot=GetValue($Profil_Slot_Auswahl_id);
SetValue($Wochenprofil_speichern_id,1); // Speicher Button freigeben
If ($Slot< count($tmp[$dayArray[$day]]['EndTimes'])) // Verhindert dass die Zeit des letzten Slots geändert wird (ist immer 24:00)
{
If ($Slot==1)
{
$Start = "00:00";
}
else
{
$Start = $tmp[$dayArray[$day]]['EndTimes'][$Slot-2];
}
$Ende = $tmp[$dayArray[$day]]['EndTimes'][$Slot-1];
$Ende_next = $tmp[$dayArray[$day]]['EndTimes'][$Slot];
Switch (GetValue($Zeit_edit_id))
{
Case 1; // -1h
If ((strtotime($Ende)-(60*60))> strtotime($Start))
{
$Ende = date("H:i", (strtotime($Ende)-(60*60)));
}
$tmp[$dayArray[$day]]['EndTimes'][$Slot-1]=$Ende;
SetValue($TagesProfil_edit_Anzeige_id, HM_TagesTempProfil_html($tmp[$dayArray[$day]], GetValue($Profil_Slot_Auswahl_id)));
SetValue($Profil_temp_id,serialize($tmp));
SetValue($WochenProfil_edit_Anzeige_id, HM_WochenTempProfil_html($Profil_temp_id,GetValue($Profil_Wochentage_id)));
break;
Case 2; // -10 min
If ((strtotime($Ende)-(10*60))> strtotime($Start))
{
$Ende = date("H:i", (strtotime($Ende)-(10*60)));
}
$tmp[$dayArray[$day]]['EndTimes'][$Slot-1]=$Ende;
SetValue($TagesProfil_edit_Anzeige_id, HM_TagesTempProfil_html($tmp[$dayArray[$day]], GetValue($Profil_Slot_Auswahl_id)));
SetValue($Profil_temp_id,serialize($tmp));
SetValue($WochenProfil_edit_Anzeige_id, HM_WochenTempProfil_html($Profil_temp_id, GetValue($Profil_Wochentage_id)));
break;
Case 3; // +10min
If ((strtotime($Ende)+(10*60))< strtotime($Ende_next))
{
$Ende = date("H:i", (strtotime($Ende)+(10*60)));
}
$tmp[$dayArray[$day]]['EndTimes'][$Slot-1]=$Ende;
SetValue($TagesProfil_edit_Anzeige_id, HM_TagesTempProfil_html($tmp[$dayArray[$day]], GetValue($Profil_Slot_Auswahl_id)));
SetValue($Profil_temp_id,serialize($tmp));
SetValue($WochenProfil_edit_Anzeige_id, HM_WochenTempProfil_html($Profil_temp_id, GetValue($Profil_Wochentage_id)));
break;
Case 4; // +1h
If ((strtotime($Ende)+(60*60))< strtotime($Ende_next))
{
$Ende = date("H:i", (strtotime($Ende)+(60*60)));
}
$tmp[$dayArray[$day]]['EndTimes'][$Slot-1]=$Ende;
SetValue($TagesProfil_edit_Anzeige_id, HM_TagesTempProfil_html($tmp[$dayArray[$day]], GetValue($Profil_Slot_Auswahl_id)));
SetValue($Profil_temp_id,serialize($tmp));
SetValue($WochenProfil_edit_Anzeige_id, HM_WochenTempProfil_html($Profil_temp_id, GetValue($Profil_Wochentage_id)));
break;
}
}
SetValue($Zeit_edit_id,0);
}
break;
Case $Temp_edit_id; //36633*[Gewerke\Heizung\Zeitplan - Editieren\HM_Edit_+1°C_-1°C]*/
If (GetValue($HM_Zimmer_Auswahl_id)!=0)
{
$tmp=(unserialize(Getvalue($Profil_temp_id)));
$day=GetValue($Profil_Wochentage_id);
$Slot=GetValue($Profil_Slot_Auswahl_id);
$Temperatur = $tmp[$dayArray[$day]]['Values'][$Slot-1];
SetValue($Wochenprofil_speichern_id,1); // Speicher Button freigeben
Switch (GetValue($Temp_edit_id))
{
Case 1; // -1°C min
If (($Temperatur-1)>=4.99)
{
$Temperatur=$Temperatur-1;
$tmp[$dayArray[$day]]['Values'][$Slot-1]=$Temperatur;
SetValue($TagesProfil_edit_Anzeige_id, HM_TagesTempProfil_html($tmp[$dayArray[$day]], GetValue($Profil_Slot_Auswahl_id)));
SetValue($Profil_temp_id,serialize($tmp));
SetValue($WochenProfil_edit_Anzeige_id, HM_WochenTempProfil_html($Profil_temp_id, GetValue($Profil_Wochentage_id)));
}
break;
Case 2; // -0.1°C min
If (($Temperatur-0.1)>4.9)
{
$Temperatur=$Temperatur-0.1;
$tmp[$dayArray[$day]]['Values'][$Slot-1]=$Temperatur;
SetValue($TagesProfil_edit_Anzeige_id, HM_TagesTempProfil_html($tmp[$dayArray[$day]], GetValue($Profil_Slot_Auswahl_id)));
SetValue($Profil_temp_id,serialize($tmp));
SetValue($WochenProfil_edit_Anzeige_id, HM_WochenTempProfil_html($Profil_temp_id, GetValue($Profil_Wochentage_id)));
}
break;
Case 3; // +0.1°C min
If (($Temperatur+0.1)<30.1)
{
$Temperatur=$Temperatur+0.1;
$tmp[$dayArray[$day]]['Values'][$Slot-1]=$Temperatur;
SetValue($TagesProfil_edit_Anzeige_id, HM_TagesTempProfil_html($tmp[$dayArray[$day]], GetValue($Profil_Slot_Auswahl_id)));
SetValue($Profil_temp_id,serialize($tmp));
SetValue($WochenProfil_edit_Anzeige_id, HM_WochenTempProfil_html($Profil_temp_id, GetValue($Profil_Wochentage_id)));
}
break;
Case 4; // +1°C min
If (($Temperatur+1)<=30.01)
{
$Temperatur=$Temperatur+1;
$tmp[$dayArray[$day]]['Values'][$Slot-1]=$Temperatur;
SetValue($TagesProfil_edit_Anzeige_id, HM_TagesTempProfil_html($tmp[$dayArray[$day]], GetValue($Profil_Slot_Auswahl_id)));
SetValue($Profil_temp_id,serialize($tmp));
SetValue($WochenProfil_edit_Anzeige_id, HM_WochenTempProfil_html($Profil_temp_id, GetValue($Profil_Wochentage_id)));
}
break;
}
SetValue($Temp_edit_id,0);
}
break;
Case $Slot_add_del_id;//*[Gewerke\Heizung\Zeitplan - Editieren\HM_Edit_Slot_add_del]*/
If (GetValue($HM_Zimmer_Auswahl_id)!=0)
{
$tmp=(unserialize(Getvalue($Profil_temp_id)));
$day=GetValue($Profil_Wochentage_id);
$Slot=GetValue($Profil_Slot_Auswahl_id);
$Slots = count($tmp[$dayArray[$day]]['EndTimes']);
SetValue($Wochenprofil_speichern_id,1); // Speicher Button freigeben
Switch (GetValue($Slot_add_del_id))
{
Case 1; // ZeitSlot löschen
If ($Slots >1) // letzter TimeSlot darf nicht gelöscht werden
{
array_splice($tmp[$dayArray[$day]]['EndTimes'], $Slot-1, 1);
array_splice($tmp[$dayArray[$day]]['Values'], $Slot-1, 1);
$tmp[$dayArray[$day]]['EndTimes'][$Slots-2]="24:00"; // letzten TimeSlot Ende immer 24:00
SetValue($TagesProfil_edit_Anzeige_id, HM_TagesTempProfil_html($tmp[$dayArray[$day]], GetValue($Profil_Slot_Auswahl_id)));
SetValue($Profil_temp_id,serialize($tmp));
SetValue($WochenProfil_edit_Anzeige_id, HM_WochenTempProfil_html($Profil_temp_id, GetValue($Profil_Wochentage_id)));
If (IPS_GetVariableProfile("HM_Heizung_Slot")['MaxValue']<GetValue($Profil_Slot_Auswahl_id))
{
SetValue($Profil_Slot_Auswahl_id,IPS_GetVariableProfile("HM_Heizung_Slot")['MaxValue']);
}
}
break;
Case 2; // ZeitSlot anfügen
If ($Slots <24) // max 24 TimeSlots zulässig
{
array_splice($tmp[$dayArray[$day]]['EndTimes'], $Slots, 0, "24:00");
array_splice($tmp[$dayArray[$day]]['Values'], $Slots, 0, "17");
SetValue($TagesProfil_edit_Anzeige_id, HM_TagesTempProfil_html($tmp[$dayArray[$day]], GetValue($Profil_Slot_Auswahl_id)));
SetValue($Profil_temp_id,serialize($tmp));
SetValue($WochenProfil_edit_Anzeige_id, HM_WochenTempProfil_html($Profil_temp_id, GetValue($Profil_Wochentage_id)));
If (IPS_GetVariableProfile("HM_Heizung_Slot")['MaxValue']<GetValue($Profil_Slot_Auswahl_id))
{
SetValue($Profil_Slot_Auswahl_id,IPS_GetVariableProfile("HM_Heizung_Slot")['MaxValue']);
}
}
break;
}
SetValue($Slot_add_del_id,0);
}
break;
Case $Profil_uebertragen_show_id;
//Ein- und Ausschalten der erweiterten Anzeige
IPS_SetHidden(32006 /*[Visualization\WebFront\Haus / Garten\Heizung\Zeitplan - Editieren\Zeitplan - Editieren - Anzeige recht\Profil übertragen / Prüfil übernehmen]*/, !IPS_GetObject ( 32006 /*[Visualization\WebFront\Haus / Garten\Heizung\Zeitplan - Editieren\Zeitplan - Editieren - Anzeige recht\Profil übertragen / Prüfil übernehmen]*/ )['ObjectIsHidden']);
break;
Case $Tagesprofil_kopieren_id;
If (GetValue($HM_Zimmer_Auswahl_id)!=0)
{
$tmp=(unserialize(Getvalue($Profil_temp_id)));
$day_ziel=$dayArray[GetValue($Tagesprofil_kopieren_id)];
$day_quelle=$dayArray[GetValue($Profil_Wochentage_id)];
array_splice($tmp[$day_ziel]['EndTimes'], 0, count($tmp[$day_ziel]['EndTimes']), $tmp[$day_quelle]['EndTimes']);
array_splice($tmp[$day_ziel]['Values'], 0, count($tmp[$day_ziel]['Values']), $tmp[$day_quelle]['Values']);
SetValue($Profil_temp_id,serialize($tmp));
SetValue($WochenProfil_edit_Anzeige_id, HM_WochenTempProfil_html($Profil_temp_id, GetValue($Profil_Wochentage_id)));
SetValue($Wochenprofil_speichern_id,1); // Speicher Button freigeben
}
break;
case $Wochenprofil_uebernehmen_von_id:
If (GetValue($HM_Zimmer_Auswahl_id)!=0)
{
If (GetValue($Wochenprofil_uebernehmen_von_id)!=0)
{
$tmp=(unserialize(Getvalue($IPS_HM_Wochenprofil[GetValue($Wochenprofil_uebernehmen_von_id)]))); // Wochenprofil holen
SetValue($Profil_temp_id,serialize($tmp));
SetValue($WochenProfil_edit_Anzeige_id, HM_WochenTempProfil_html($Profil_temp_id, GetValue($Profil_Wochentage_id)));
SetValue($Wochenprofil_speichern_id,1); // Speicher Button freigeben
}
}
break;
break;
}
}
if ($_IPS['SENDER']=='Variable')
{
}
//****************************************************************************************************
?>
- Je nach Anzahl der Zimmer ist das Variablenprofil "HM_Heizung_Auswahl" entsprechend anpassen.
- Als nächstes müsst Ihr für jedes WT (also für jeden Raum) die Variablen anlegen und nachfolgende Aktionsskripte zuweisen. Als Beispiel findet Ihr im Bild 1 die Struktur des Raums "Küche". In den Aktionsskripten müssen auch die IDs angepasst werden
Skript "HM_Heizung_Modus"
PHP-Code:
<?
include "hmxml.inc.php";
$IPS_DeviceID=28913 /*[Hardware\Haus\Erdgeschoss\Küche\Heizung\HM-CC-TC - Küche\CLIMATECONTROL_REGULATOR]*/ ;
if ($_IPS['SENDER']=='WebFront')
{
HMXML_setTCMode($IPS_DeviceID, $_IPS['VALUE']);
// $IPS_DeviceID: IPS Instance ID
// $nMode: INTEGER - Mode 0 = MANUAL, 1 = AUTO, 2=CENTRAL, 3 = PARTY
if (HMXML_getTCMode($IPS_DeviceID)==$_IPS['VALUE'])
{
SetValue($_IPS['VARIABLE'],$_IPS['VALUE']);
}
}
?>
Skript HM_Heizung_WochenProfil_auslesen
PHP-Code:
<?
include "hmxml.inc.php";
$IPS_DeviceID=28913 /*[Hardware\Haus\Erdgeschoss\Küche\Heizung\HM-CC-TC - Küche\CLIMATECONTROL_REGULATOR]*/ ;
$ID_tempProfile=20249 /*[Gewerke\Heizung\Küche\Steuerung\HM_Heizung_WochenProfil]*/ ;
$tempProfile = HMXML_getTempProfile($IPS_DeviceID,false, false);
// $IPS_DeviceID: IPS Instance ID
// $day: STRING - Name of day in english (not case-sensitive) or false for all days
// $echo: BOOL - if true, the Temperature profiles is output in readable format with time values
// print_r($tempProfile);
//echo HMXML_getTCMode($IPS_DeviceID);
Setvalue($ID_tempProfile, serialize($tempProfile));
?>
Skript HM_WochenProfil_Zeitplan_Anzeige
PHP-Code:
<?
include "HM_Heizung_Funktionen.ips.php";
$ID_tempProfile=20249 /*[Gewerke\Heizung\Küche\Steuerung\HM_Heizung_WochenProfil]*/ ;
$ID_html=58886 /*[Gewerke\Heizung\Küche\Steuerung\HM_Heizung_WichenProfil_Anzeige_html]*/ ;
SetValue($ID_html, HM_WochenTempProfil_html($ID_tempProfile));
?>
Achtet darauf in den Aktionsskripten die Variablen IDs anzupassen.
- Jetzt noch das Script "HM_WochenProfil_Zeitplan_Anzeige" auf eine Aktualisierung der Variable "HM_Heizung_WochenProfil" tiggern,
- die Struktur für das Webfront anlegen (siehe Bilder WF_01 und WF_02) und
- das Webfront nach eigenem Belieben gestalten ... :).
Ich hoffe, ich habe nichts vergessen.
Gruß
Swifty
Anhang 20512Anhang 20513Anhang 20514Anhang 20515Anhang 20516Anhang 20517Anhang 20518Anhang 20519Anhang 20520
Liste der Anhänge anzeigen (Anzahl: 3)
noch mehr Bilder
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo...
mit Hilfe des Project-Exporters von raketenschnecke (http://www.raketenschnecke.net/2012/...ject-exporter/ ) habe ich das ganze Projekt in ein Export-Script verpacken können, mit dessen Hilfe die Installation bei Euch recht fix gehen sollte:
- die Dateien "hmxml.inc.php" und "HM_Heizung_Funktionen.ips.php" ins Skripverzeichnis von IPS kopieren,
- in der Datei "hmxml.inc.php" die IP und der Port der HM-Zentrale anpassen,
- das Exportskript im Zielsystem importiert (Script anlegen, Export-Script-Inhalt reinkopieren),
- das Export-Script ggf. konfigurieren (Angabe der WFC-ID, optionale Kopier-Parameter),
- das Export-Scripts im Zielsystem ausführen -> Quellprojekt wird im Zielsystem angelegt,
- das Installationsprotokoll kontrollieren (befindet im Script-Meldefenster und im Instalationsprotokoll), ggf. manuell nacharbeiten,
- im neu angelegten Skript "HMEdit" Eure HM_DeviceIDs und die IDs der HM_Wochenprofile der WTe eintragen/ändern/löschen,
- je nach Anzahl der Zimmer ist das Variablenprofil "HM_Heizung_Auswahl" entsprechend anpassen,
- für jeden Raum die IDs in den Skripten "HM_Heizung_WochenProfil_auslesen", "HM_Heizung_Modus" und "HM_WochenProfil_Zeitplan_Anzeige" anpassen und
- im WF die Struktur an die von Euch gewünschte Stelle verschieben.
... theoretisch fertig ...:)
Ich konnte die Installation mittels des Exportskripes bisher noch nicht testen ... daher no risk no fun ... :D ... ne mal Spaß beiseite. Wenn jemand ein Testsystem hat, wo er das ganze mal ausprobieren könnte, wäre das echt super.
Gruß
Swifty
Liste der Anhänge anzeigen (Anzahl: 2)
Fehler
Schade zu früh gefreut.
Bei mir taucht der Fehler von den Bildern beim Auslesen der Wandthermostate auf.
Die Einstellungen scheinen beim speichern allerdings bei den Geräten anzukommen, zumindest werden diese in der Weboberfläche der CCU korrekt angezeigt.
Jemand ne Idee?
Gruß
Steffen
Liste der Anhänge anzeigen (Anzahl: 2)
vielleicht noch ein Hinweis zum Project Exporter (sorry fürs OT):
Um es Drittnutzern einfacher zu machen, die Konfiguration vorzunehmen, würde ich in jedem IPS-Projekt einen eigenen Config-Bereich anlegen. Config-Bereich heißt: eine Kategorie "Config" und darin ein Script "Config" (das script kann frei benannt werden). Das bietet folgende Vorteile:
- Scripte in der Kategorie "Config" werden bei Updates im Zielsystem nicht überschrieben (der User braucht seine Konfiguration nicht nochmal vornehmen)
- im Quellprojekt kann das Script "RS PE Export-Files" genutzt werden (wird vom Project-Exporter erzeugt, das muss dann auch in diesem Ordner liegen), mit dessen Hilfe man z.B. include-Files oder Icons mit exportieren kann. In diesem Projekt wären das die Files "hmxml.inc.php" und "HM_Heizung_Funktionen.ips.php" => das dürfte die Fehlerquote bei der Projektinstallation senken und erhöht den Installations-Komfort für den Nutzer
Im Zielprojekt wird so oder so ein Config-Ordner angelegt, in dem sich das Installations-Script und -Protokoll wiederfindet.
Hier mal der Objektbaum eines Beispielprojekts (Quellsystem) mit Export-Files Script und User-Config sowie ein User-Config-Beispiel
Anhang 20537 Anhang 20538
Liste der Anhänge anzeigen (Anzahl: 1)
Einfach mal ne etwas andere (noch unfertige) Variante der Darstellung. Ich teste noch und gerade die Ausgabe im WF möchte ich etwas weniger arbeitsintensiv, indem ich meinen Standardaufbau per Links wähle.
Bin immer noch begeistert von dem Skript. @Swifty das ist wirklich gut gemacht. ;)
LAN Adapter, keine CCU - geht es damit auch?
Hallo,
habe mich an dem Skript probiert. Hab nun ein paar Fragen:
Funktioniert das ganze nur mit der CCU oder auch nur mit dem LAN Adapter?
Wo finde ich die benötigten Variablen? Habe von den Wandreglern je eine Instanz mit :0 :1 :2 :3?
Danke für die Hilfe.
Gruß
Jan