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. :wink:

Auch Moin,

da gabs noch Ernie der extra was für HM gemacht hat

Gruß
Bruno

Ich glaube Boui möchte die Thermostaten von IPS aus programmieren und das Zeitprogramm dann dort autark abarbeiten lassen für den Fall das IPS mal schwächelt. Ernies Lösung ist eine tolle Sache und funktioniert bei mir perfekt - IPS muss aber halt zu 100% Online sein sonst bleibt die Bude kalt oder sehr warm :rolleyes:.

Kronos hat es genau getroffen. :wink:

Ich habe da was, ist allerdings erst zu 80% fertig.
Es fehlt ‚nur‘ noch das kopieren von Zeitprofilen, damit nicht jeder Tag einzeln eingestellt werden muss.
Habe allerdings nur Ver.2.x WTs. Ob es mit kleiner Ver.2 geht kann ich also nicht sagen.
Vielleicht komme ich heute abend ja dazu hier was halbwegs fertiges zu posten.
Michael

Gesendet von meinem TAB-PROTAB2XXL(4) mit Tapatalk 2

Die BidCos Datenpunkte haben sich nicht geändert - zumindest sind in der Doku keine Änderungen vermerkt. Es sollte/müsste/könnte :eek: daher auch mit älteren Firmwareständen gehen.

Na das hört sich doch schon mal so an, als ob meine Woche gerettet wäre. Da bin ich sehr gespannt.
Cool! Danke.

@Kronos: Hast ja fast alle Modalverben genannt. Vielleicht noch „düfte“ LOL

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. :smiley:
Hier schon ein Screenshot vom WF wie es aussehen könnte.


Michael

Das schaut doch schon mal gut aus. :slight_smile:
Laß Dir Zeit und den IPS RS Project Exporter kennst Du sicher auch.

Kennen ja, aber noch nicht benutzt. Hatte mich auch schon mit RS über ein/zwei Sachen ausgetauscht welche ich im Exporter vermisse. Aber anderer Fred.
Versuche gerade das Chaos meiner Scripte zu verstehen… das kommt davon wenn man lange nicht daran gearbeitet hat, und 0,0005% dokumentiert hat :smiley:
Michael

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

Hallo,
sieht ja super aus. Hätte Interesse an den Scripten.
Gruß
Jan

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… :wink:

[ol]
[li]Die Skripte „HM_Heizung_Funktionen.ips“ und „hmxml.inc“ in den Skriptordner von IPS kopieren,[/li][li]in der Datei „hmxml.inc.php“ die IP und den Port der HM-Zentrale angepasst und[/li][li]alle Variablen und Scripte gemäß Bild 1 anlegen.[/li]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.

<?
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')
	{

	}


//****************************************************************************************************

?>

[li]Je nach Anzahl der Zimmer ist das Variablenprofil „HM_Heizung_Auswahl“ entsprechend anpassen.[/li][li]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[/li]
Skript „HM_Heizung_Modus“

<?
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

<?

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

<?
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.

[li]Jetzt noch das Script „HM_WochenProfil_Zeitplan_Anzeige“ auf eine Aktualisierung der Variable „HM_Heizung_WochenProfil“ tiggern,[/li][li]die Struktur für das Webfront anlegen (siehe Bilder WF_01 und WF_02) und[/li][li]das Webfront nach eigenem Belieben gestalten … :).[/li][/ol]

Ich hoffe, ich habe nichts vergessen.

Gruß

Swifty

Bild02 - Profil Slot.jpgBild03 - Profil Wochentag.jpg

Skripte.zip (7.17 KB)

Servus swifty

also zur grafischen Darstellung des Heizplanes muß ich dir gratulieren.
Hab mir schon lange überlegt wie man die zugrundeliegende Zahlenkolonne gut leserlich darstellen kann.

Deine grafische Lösung find ich echt gut. Denke die bringt dir viele viele WAF Punkte.

gruß
bb

Da freu ich mich auch schon auf den Test am WE. Damke

Hallo…

mit Hilfe des Project-Exporters von raketenschnecke (http://www.raketenschnecke.net/2012/09/25/ips-rs-project-exporter/ ) habe ich das ganze Projekt in ein Export-Script verpacken können, mit dessen Hilfe die Installation bei Euch recht fix gehen sollte:

[ol]

[li]die Dateien „hmxml.inc.php“ und „HM_Heizung_Funktionen.ips.php“ ins Skripverzeichnis von IPS kopieren,[/li][li]in der Datei „hmxml.inc.php“ die IP und der Port der HM-Zentrale anpassen,[/li][li]das Exportskript im Zielsystem importiert (Script anlegen, Export-Script-Inhalt reinkopieren),[/li][li]das Export-Script ggf. konfigurieren (Angabe der WFC-ID, optionale Kopier-Parameter),[/li][li]das Export-Scripts im Zielsystem ausführen -> Quellprojekt wird im Zielsystem angelegt,[/li][li]das Installationsprotokoll kontrollieren (befindet im Script-Meldefenster und im Instalationsprotokoll), ggf. manuell nacharbeiten,[/li][li]im neu angelegten Skript „HMEdit“ Eure HM_DeviceIDs und die IDs der HM_Wochenprofile der WTe eintragen/ändern/löschen,[/li][li]je nach Anzahl der Zimmer ist das Variablenprofil „HM_Heizung_Auswahl“ entsprechend anpassen,[/li][li]für jeden Raum die IDs in den Skripten „HM_Heizung_WochenProfil_auslesen“, „HM_Heizung_Modus“ und „HM_WochenProfil_Zeitplan_Anzeige“ anpassen und[/li][li]im WF die Struktur an die von Euch gewünschte Stelle verschieben.[/li][/ol]

… theoretisch fertig …:slight_smile:

Ich konnte die Installation mittels des Exportskripes bisher noch nicht testen … daher no risk no fun … :smiley: … ne mal Spaß beiseite. Wenn jemand ein Testsystem hat, wo er das ganze mal ausprobieren könnte, wäre das echt super.

Gruß

Swifty

Skripte_2013-03-15.zip (28 KB)

Hallo Zusammen,
ich habe gerade das Script ausprobiert, nachdem ich natürlich schon zu 90% mit dem geklimper fertig war. :mad:

Egal… gleich das Script getestet und geschaut ob es Probleme gibt.

Die Nachbessrungen in den Einzelnen Scripten waren etwas nervig, gingen aber recht gut von der Hand. Hier wäre vielleicht noch etwas Doku notwendig aber soweit so gut. Da ich mich seit Tagen selbst damit beschäftige war das für mich kein Thema.

Mit den 3 Räumen funktioniert es nach den Anpassungen gut. Wo ich etwas ausprobieren musste war bei der Erweiterung auf 4 Räume. Das geht gerade mit dem Web Konfigurator nicht so leicht von der Hand. Inzwischen läuft aber auch das.

Die Arbeit von dir Swifty finde ich klasse. Du hast mir gerade einiges an Arbeit abgenommen. :D:D:D :loveips:

Wünsche/Verbesserungen:
Die IP Adresse der CCU solltest du ins Konfig File mit aufnehmen. Ich habe das etwas länger gesucht bis ich auf die Idee mit dem Script gekommen bin.

Die beiden include Skripte in den Exporter mit aufnehmen.

Ist es möglich, für verschiedene Anwesenheitsprofile auch verschiedene Wochenprofile zu speichern? Habe mir noch nicht alle deine Scripts durchgeschaut. Wäre das eine Idee? Ich habe gesehen, dass du in deiner Oberfläche das auch integiert hast. Wie überträgst du dies auf die Heizungssteuerung?

Gruß
Steffen

P.S. RS freut sich immer wenn sein Exporter verwendet wird. :cool:

Hallo…

ich entnehme Deinen Worten, dass das Skript bei Dir funktioniert … ist ja super … :smiley:

Wünsche/Verbesserungen:
Die IP Adresse der CCU solltest du ins Konfig File mit aufnehmen. Ich habe das etwas länger gesucht bis ich auf die Idee mit dem Script gekommen bin.

Ist es möglich, für verschiedene Anwesenheitsprofile auch verschiedene Wochenprofile zu speichern? Habe mir noch nicht alle deine Scripts durchgeschaut. Wäre das eine Idee? Ich habe gesehen, dass du in deiner Oberfläche das auch integiert hast. Wie überträgst du dies auf die Heizungssteuerung?

IP Adresse:
Da ich die Datei „hmxml.inc.php“ auch in anderen Skripten verwende, möchte ich die IP und den Port der HM-Zentrale nicht in das Heizungsscript übernehmen. Ich werde dennoch gleich Hinweis in die Beschreibung aufnehmen… danke

Anwesenheitsprofile:
Da triffst du genau ins Schwarze. Mit dem Gedanken, in Abhängigkeit vom jeweiligen Anwesenheitsprofil unterschiedliche Wochen bzw. Tagesprofile für die einzelnen Räumen zu aktivieren ringe ich bereits seit langem. Jedoch fehlte mir bisher immer die Zeit dieses Ansinnen umzusetzen. … Ich hab mir jedoch fest vorgenommen, dies noch vor der nächsten Heizperiode zu integrieren…:rolleyes:

Klasse Arbeit und Dank auch an Schneckchen.

Der Run war erfolgreich. Momentan such ich mir noch die IDs zusammen.

Später:
So, passt.
Wird eigentlich der Modus auch ausgelesen? Bei mir steht in jedem Raum Manuell, obwohl die in der WT auf Auto stehen.