Heizkörperthermostat Heizprogramme per WebFront einstellen

Es geht :wink:

Vielen Dank … Dann werd ich morgen mal weitertesten, gehe jetzt auch erstmal Schlafen.

Julian

Hallo Swifty,

danke nochmal für deine nächtliche Hilfe.

Leider habe ich immer noch Probleme mit dem Skript, es werden immer mehr anstatt das es weniger werden:(. Allerdings denke ich das es nicht an deinem Skript liegt?
Ich hatte ja deine Version, in die nur die neuen Stellmotoren aber noch nicht das WT integriert waren erfolgreich in Betrieb.
Auch mein altes WT hat prima damit gearbeitet.

Gestern hatte ich dann am alten WT das Problem, dass wenn ich mein WT von Manuell auf Automatik umstelle(über das Webfront), zwar nach einer Zeit das WT auf Automatik gesetzt wird, es wird mir aber weder im Webfront noch im WT die Soll-Temperatur gesetzt die eigentlich für das Automatik-Programm hinterlegt ist. Warum ist das so?

Heute Morgen habe ich dann alles nochmal gelöscht, auch die Vartiablenprofile und habe dann im Anschluss deine neue Version von Grund auf neu installiert.
Ich habe lediglich die hmxml.inc.php durch diese ersetzt.

Wollte nun Stück für Stück beginnen und habe erst einmal nur mein altes WT in die Konfig gesetzt.

$Zimmer[1]="Wohnzimmer";
$HM_Typ[1]="HM-CC-TC";

$IPS_HM_DeviceID[1]=11562 ;
$HM_ID_W[1]=18865  ;
$HM_ID_VD[1]=14174  ;
$HM_Wfe_ID[1]=40916 ;

4.jpg

Beim ersten auslesen des alten WT kam dann diese Fehlermeldung:

Habe dann das Profil im Editor aufgerufen und minimal verändert, als ich auf speichern geklickt habe, kam diese Meldung:

Das Profil wurde aber trotzdem im WT übernommen. Leider habe ich aber wie oben schon beschrieben, dass Problem weiterhin, dass die Soll-Temperatur, wenn ich von Manuell auf Automatik schalte nicht gesetzt wird wie hinterlegt.
Wenn ich am WT selbst von Manuell auf Auto umstelle, wird diese gesetzt.

Wenn ich z.B. von Autmoatik im Webfront auf Sommer stelle, wird ja die Soll-Temperatur gelöscht. Wenn ich aber von Sommer wieder auf Automatik zurückstellen möchte, wird zwar Auto aktiv aber es wird keine Soll-Temperatur gesetzt:(.

Woran kann denn das liegen? Soviel kann man doch eigentlich nicht falsch machen, zu mal ich das Skript ja bereits schon mal am laufen hatte.

Würde mich freuen wenn du Swifty oder gerne auch wer anderes mir helfen könnte. Vielen Dank schon mal.

Grüße
Stephan

Hallo,

helfen kann ich dir leider nicht, nur berichten, wie es bei mir funktioniert.

Ich habe eine CCU1 mit neuester Firmware und 2 Lan Adaptern in Betrieb, IPS auch aktuelle Stable.
Dazu habe ich die HM-CC-RT-DN mit Firmware 1.0 und auch welche mit 1.1,
HM-TC-IT-WM-W-EU Firmware weiss ich nicht. Ich kann die Firmwares leider auch nicht updaten mangels CCU2.

Mit den aktuellen Scripten von Swifty und der hmxml.inc.php von gestern nacht, geht alles was ich bisher getestet habe.
Dh. alle 3 Profile lassen sich ändern und werden auch vom Wandthermostaten bzw. da wo ich nur Stellantriebe habe von denen übernommen. Man kann auch Problemlos zwischen den verschiedenen Modi umstellen (Sommer, Auto, Manu, Boost). Auch Manuelle Temp. änderungen werden in alle Richtungen übernommen, bzw. wenn ein Auto Profil angewählt wird, wird die Temp. aus dem Profil übernommen.

Grüße

Julian (der jetzt gerade noch Highstock einbaut)

@firewire
Hallo… ich bin zwar gerade unterwegs und kann erst heute Abend weiterhelfen, zum Fehler in der HM_Edit kann ich jedoch sagen, dass ich gestern auch darüber stolperte bin. Da liegt ein einfacher Syntaxfehler vor (ich habe dort eine Klammer falsch gesetzt)Dies hat jedoch keine Auswirkung auf die Übertragung der Profile zum WT. Ich korrigieren das heute Abend.
Zu Deinen weitere Problemen wurde ich dazu raten, die WT und die Stellantriebe mal vollständig abzulehnen und in den Werkszustand zurückzukehren.

Gruß Swifty

Gesendet von meinem GT-I9100 mit Tapatalk

Hallo,

danke für eure Antworten.

@swifty
Schön zu hören, das zumindest ein Problem nicht mit mir zusammenhängt.

Das mit dem Ab- und Neuanlernen kann ich natürlich noch probieren. Aber theoretisch müsste es doch so sein, wenn ich den Modus z.B. von Manuell auf Automatik stelle, die Soll-Temperatur zumindest im Webfront auf die aktuell im Automatikprogramm hinterlegte Temperatur springt, oder?

Das ist bei mir nicht der Fall! Das läuft ja eigentlich unabhängig von den Geräten oder?

Hab jetzt gerade als zweites meinen neues Stellantrieb im Bad hinzugefügt. Beim auslesen und speichern des Profils gab es keine Probleme und auch beim umschalten im Webfront von Manuell auf Auto wurde sofort im Webfront die neue Settemperatur, welche im Profil hinterlegt ist angezeigt! Komisch.

Was kann das sein?

Grüße
Stephan

Ich würde dir auch empfehlen die betreffenden Aktoren auf Werkseinstellung zu setzen und dann neu einzubinden. Ich hatte das schon paar mal bei denen, das die rumgezickt haben. Nach Werkseinstellung gings dann, ist allerdings schon länger her.

Hi Inspra,

ok, dann werde ich das wohl mal machen, ein Frage noch.
Hast du auch ein altes WT im Einsatz?

Wenn ja, wie ist denn bei dir das Verhalten im Webfront. Wenn du im Webfront sagen wir mal Manuell einstellst und dann auch die Temperatur im Vergleich zum Automatikprogramm abänderst.
Dann abwartest bis alles an das WT gesendet wurde. Und dann wieder im Webfront auf Manuell drückst.

Wird dann die Soll Temperatur im Webfront im selben moment wie du auf Automatik drückst wieder auf die Temp des Automatikprogramms gesetzt?

So ist es z.B. bei meinem neuen Stellantrieb. Nur bei meinem alten WT ist das nicht so. Und da stelle ich mir die Frage ob das wirkllich mit dem WT selbst zusammenhängt oder das Skript bei mir das aus welchen Gründen auch immer nicht richtig macht??

Grüße
Stephan

Das ist normal und bekannt.

Mitlesend.

Echt? Also im Webfront wird die Soll-Temperatur nicht gleich aktualisiert bei dem alten WT?
Und beim neuen Stellantrieb schon?

Dann stimmt also echt was mit meinem WT nicht oder?

Grüße
Stephan

Warum wiederholst Du Dich? Ja, is so. Immernoch und unverändert.

Kannst ja mal nach Status emulieren googeln. Das hilft.
Hatten wir genau in diesem Threaderst zum Thema.

Hallo…

wer ähnliche Probleme hat wie firewire in #180 hier mal die korrigierte HM_Edit zum Test (Ich habe eigentlich nur in den Zeilen 134 und 162 eine falsch gesetzte Klammer verschoben):

Sollte die angepasste >>hmxml.inc.php<< von gestern und das nachfolgende Script funktionieren … bitte kurz melden. Ich passe dann den Beitrag #135 an.

<?
include "HM_Heizung_Funktionen.ips.php";
include "hmxml.inc.php";
include "HM_Heizung_Konfig.ips.php";


$dayArray = array("MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY","SUNDAY");
$parentID=IPS_GetParent ($_IPS['SELF']);

$HM_Zimmer_Auswahl_id=CreateVariableByName($parentID, "HM_Edit_Zimmer_Auswahl", 1, Profil_anlegen("HM_Heizung_Auswahl"), "HMeditZimmerAuswahl", 1);
IPS_SetVariableCustomAction($HM_Zimmer_Auswahl_id, $_IPS['SELF']);

$Praesenz_Profil_Auswahl_id=CreateVariableByName($parentID, "HM_Edit_Präsenz_Profil", 1, "Praesenz", "HMeditPraesenzProfil", 2);
IPS_SetVariableCustomAction($Praesenz_Profil_Auswahl_id, $_IPS['SELF']);

$Profil_Wochentage_id= CreateVariableByName($parentID, "HM_Edit_Wochentag_Auswahl", 1, "HM_Heizung_Wochentag", "HMeditWochentagAuswahl", 3);
IPS_SetVariableCustomAction($Profil_Wochentage_id, $_IPS['SELF']);

$Profil_Slot_Auswahl_id= CreateVariableByName($parentID, "HM_Edit_TagesProfil_Slot_Auswahl", 1, "HM_Heizung_Slot", "HMeditTagesProfilSlotAuswahl", 4);
IPS_SetVariableCustomAction($Profil_Slot_Auswahl_id, $_IPS['SELF']);

$TagesProfil_edit_Anzeige_id = CreateVariableByName($parentID, "HM_Edit_Tagesprofil_Anzeige_html", 3, "~HTMLBox", "HMeditTagesProfilAnzeigehtml", 5);

$WochenProfil_edit_Anzeige_id=CreateVariableByName($parentID, "HM_Edit_WochenProfil_Anzeige_html", 3, "~HTMLBox", "HMeditWochenProfilAnzeigehtml", 6);

$WochenProfil_Daten_edit_id=CreateVariableByName($parentID, "HM_Edit_WochenProfil_Daten", 3, "~String", "HMeditWochenProfilDaten", 7);

$Temp_edit_id=CreateVariableByName($parentID, "HM_Edit_+1°C_-1°C", 1, "HM_Heizung_Temperatur_Edit", "HMeditTemp", 8);
IPS_SetVariableCustomAction($Temp_edit_id, $_IPS['SELF']);

$Zeit_edit_id=CreateVariableByName($parentID, "HM_Edit_+10min_-10min", 1, "HM_Heizung_Zeit_Edit", "HMeditZeit", 9);
IPS_SetVariableCustomAction($Zeit_edit_id, $_IPS['SELF']);

$Slot_add_del_id=CreateVariableByName($parentID, "HM_Edit_Slot_add_del", 1, "HM_Heizung_Slot_add_del", "HMeditSlot", 10);
IPS_SetVariableCustomAction($Slot_add_del_id, $_IPS['SELF']);

$Wochenprofil_speichern_id=CreateVariableByName($parentID, "HM_Edit_Profil_speichern", 1, "HM_Heizung_Profil_speichern", "HMeditProfilspeichern", 11);
IPS_SetVariableCustomAction($Wochenprofil_speichern_id, $_IPS['SELF']);

$Profil_uebertragen_show_id= CreateVariableByName($parentID, "HM_Edit_Profil_übertragen", 1, "HM_heizung_Profil_uebertragen", "HMeditProfiluebertragen", 12);
IPS_SetVariableCustomAction($Profil_uebertragen_show_id, $_IPS['SELF']);

$Tagesprofil_kopieren_id= CreateVariableByName($parentID, "HM_Edit_Tragesprofil_kopieren", 1, "HM_Heizung_Wochentag", "HMeditTagesProfilkopieren", 13);
IPS_SetVariableCustomAction($Tagesprofil_kopieren_id, $_IPS['SELF']);

$Wochenprofil_uebernehmen_von_id =  CreateVariableByName($parentID, "HM_Edit_Wochenprofil_übernehmen_von", 1, "HM_Heizung_Auswahl", "HMeditWochenProfiluebernehmen", 14);
IPS_SetVariableCustomAction($Wochenprofil_uebernehmen_von_id, $_IPS['SELF']);

$Wochenprofil_uebernehmen_von_Praesenz_Profil_id =  CreateVariableByName($parentID, "HM_Edit_Wochenprofil_übernehmen_von_Praesenz_Profil", 1, "Praesenz", "HMeditWochenProfiluebernehmenPraesenz", 15);
IPS_SetVariableCustomAction($Wochenprofil_uebernehmen_von_Praesenz_Profil_id, $_IPS['SELF']);


//***************************************************************************************************************************************
//SetLinkByName($parentID, $name, $targetID, $position)
//SetKatByName($parentID, $name, $ident, $position)

$KatID=SetKatByName($HM_Edit_Wfe_ID, "Zeitplan - Editieren - Anzeige links oben", "", 1);
SetLinkByName($KatID, "Zimmer Auswahl", $HM_Zimmer_Auswahl_id, 1);
SetLinkByName($KatID, "Präsenz Profil Auswahl", $Praesenz_Profil_Auswahl_id, 2);
SetLinkByName($KatID, "Wochenprofil", $WochenProfil_edit_Anzeige_id, 3);

$KatID=SetKatByName($HM_Edit_Wfe_ID, "Zeitplan - Editieren - Anzeige links unten", "", 2);
SetLinkByName($KatID, "Zimmer Auswahl", $TagesProfil_edit_Anzeige_id, 1);

$KatID=SetKatByName($HM_Edit_Wfe_ID, "Zeitplan - Editieren - Anzeige rechts", "", 3);
$DumID=SetDummyByName($KatID, "Editieren", "", 1);
SetLinkByName($DumID, "Wochentag", $Profil_Wochentage_id, 1);
SetLinkByName($DumID, "Zeit-Slot", $Profil_Slot_Auswahl_id, 2);
SetDummyByName($DumID, chr(127), "", 3);
SetLinkByName($DumID, "Zeit", $Zeit_edit_id, 4);
SetLinkByName($DumID, "Temperatur", $Temp_edit_id, 5);
SetLinkByName($DumID, "ZeitSlot", $Slot_add_del_id, 6);
SetLinkByName($KatID, "Profil speichern", $Wochenprofil_speichern_id, 2);
SetLinkByName($KatID, "Profil übertragen", $Profil_uebertragen_show_id, 3);

$Dum_uebertragenID=SetDummyByName($KatID, "Profil übertragen / Profil übernehmen", "", 4);
SetLinkByName($Dum_uebertragenID, "Tragesprofil kopieren nach", $Tagesprofil_kopieren_id, 1);
SetDummyByName($Dum_uebertragenID, chr(127), "", 2);
SetDummyByName($Dum_uebertragenID, "Wochenprofil übernehmen von", "", 3);
SetLinkByName($Dum_uebertragenID, "Präsenz", $Wochenprofil_uebernehmen_von_Praesenz_Profil_id, 4);
SetLinkByName($Dum_uebertragenID, "Wochenprofil", $Wochenprofil_uebernehmen_von_id, 5);


//***************************************************************************************************************************************
Foreach ($Zimmer as $key=> $Raum)
   {
   $id = @IPS_GetCategoryIDByName ($Raum, IPS_GetParent ($parentID));
   if($id != false)
		{
		$IPS_HM_Wochenprofil[$key]=@IPS_GetObjectIDByIdent ("HMWochenprofilDaten", $id);  // id der Variable für die gespeicherten Wochenprofile mit Präsenz
		$IPS_HM_aktives_PraesenzProfil_Heizung[$key]=@IPS_GetObjectIDByIdent ("HMPraesenzProfilAuswahl", $id);
		$HM_Heizung_WochenProfil_Anzeige_html_ID[$key]=@IPS_GetObjectIDByIdent ("HMWochenprofilhtml", $id);;
		 }
	}
//***************************************************************************************************************************************

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($WochenProfil_Daten_edit_id) == "OK")
		      {
		      // echo "Alles OK !!";
		      // nur wenn editiertes Wochenprofil zur aktuellen (Heizungs)Präsenz passt, dann übertrage das Profil auch an das Thermostat
			   If (GetValue($IPS_HM_aktives_PraesenzProfil_Heizung[GetValue($HM_Zimmer_Auswahl_id)])==GetValue($Praesenz_Profil_Auswahl_id))  
					{
					If ($HM_Typ[GetValue($HM_Zimmer_Auswahl_id)]=="HM-TC-IT-WM-W-EU")
					   {
                  $tmp=HMXML_setTempProfile($IPS_HM_DeviceID[GetValue($HM_Zimmer_Auswahl_id)], unserialize(GetValue($WochenProfil_Daten_edit_id)),GetValue($Praesenz_Profil_Auswahl_id)+1);
					   }
					   else
					   {
					 	$tmp=HMXML_setTempProfile($IPS_HM_DeviceID[GetValue($HM_Zimmer_Auswahl_id)], unserialize(GetValue($WochenProfil_Daten_edit_id)));
						}
						
					if ($tmp==true)
					   {
					   echo "Speichern Erfolgreich";

						$aktProfiltmp = HMXML_getTempProfile($IPS_HM_DeviceID[GetValue($HM_Zimmer_Auswahl_id)],false, false,GetValue($Praesenz_Profil_Auswahl_id)+1);

						$Profiltemp=unserialize(GetValue($IPS_HM_Wochenprofil[GetValue($HM_Zimmer_Auswahl_id)]));

						$Profiltemp[GetValueFormatted($Praesenz_Profil_Auswahl_id)]=$aktProfiltmp; //z.B. $Profiltemp['Normal']=$aktProfiltmp
        				Setvalue($IPS_HM_Wochenprofil[GetValue($HM_Zimmer_Auswahl_id)], serialize($Profiltemp));

						$ProfilDaten= unserialize(GetValue($IPS_HM_Wochenprofil[GetValue($HM_Zimmer_Auswahl_id)]));
						SetValue($WochenProfil_Daten_edit_id, serialize(@$ProfilDaten[GetValueFormatted($Praesenz_Profil_Auswahl_id)]));

				      SetValue($WochenProfil_edit_Anzeige_id, HM_WochenTempProfil_html($WochenProfil_Daten_edit_id, GetValue($Profil_Wochentage_id)));


						$tmp=(unserialize(Getvalue($WochenProfil_Daten_edit_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
						
						SetValue($HM_Heizung_WochenProfil_Anzeige_html_ID[GetValue($HM_Zimmer_Auswahl_id)], HM_WochenTempProfil_html($WochenProfil_Daten_edit_id));
						
					   }
					 }
					 else // Wenn aktives PräsenzProfil nicht dem editierten Profil entspricht, dann wird nicht zm Thermostat übertragen sondern nur abgespeichert
					 {
					 If ($HM_Typ[GetValue($HM_Zimmer_Auswahl_id)]=="HM-TC-IT-WM-W-EU")
					   {
                  $tmp=HMXML_setTempProfile($IPS_HM_DeviceID[GetValue($HM_Zimmer_Auswahl_id)], unserialize(GetValue($WochenProfil_Daten_edit_id)),GetValue($Praesenz_Profil_Auswahl_id)+1);
					   }

					 $tmp=unserialize(GetValue($WochenProfil_Daten_edit_id));
					 $Profiltemp=unserialize(GetValue($IPS_HM_Wochenprofil[GetValue($HM_Zimmer_Auswahl_id)]));

					 $Profiltemp[GetValueFormatted($Praesenz_Profil_Auswahl_id)]=$tmp; //z.B. $Profiltemp['Normal']=$tmp
        			 Setvalue($IPS_HM_Wochenprofil[GetValue($HM_Zimmer_Auswahl_id)], serialize($Profiltemp));

					 $ProfilDaten= unserialize(GetValue($IPS_HM_Wochenprofil[GetValue($HM_Zimmer_Auswahl_id)]));
					 SetValue($WochenProfil_Daten_edit_id, serialize(@$ProfilDaten[GetValueFormatted($Praesenz_Profil_Auswahl_id)]));

				    SetValue($WochenProfil_edit_Anzeige_id, HM_WochenTempProfil_html($WochenProfil_Daten_edit_id, GetValue($Profil_Wochentage_id)));
					 $tmp=(unserialize(Getvalue($WochenProfil_Daten_edit_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($WochenProfil_Daten_edit_id);
				}
          }
  		 }
    	else
		 {
		 SetValue($_IPS['VARIABLE'],$_IPS['VALUE']);
		 }


	Switch ($_IPS['VARIABLE'])
	   {
		Case $HM_Zimmer_Auswahl_id:
		Case $Praesenz_Profil_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($WochenProfil_Daten_edit_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_edit_Anzeige_id,"");
				SetValue($Wochenprofil_speichern_id,0);  // Speicher Button zurücksetzen
				}

			If (GetValue($HM_Zimmer_Auswahl_id)> 0)
				{
            $ProfilDaten= unserialize(GetValue($IPS_HM_Wochenprofil[GetValue($HM_Zimmer_Auswahl_id)]));
				SetValue($WochenProfil_Daten_edit_id, serialize(@$ProfilDaten[GetValueFormatted($Praesenz_Profil_Auswahl_id)]));

				If (GetValue($WochenProfil_Daten_edit_id)=="N;")  //Profil ist leer
				   {
				   $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_edit_Anzeige_id,"");
					SetValue($Wochenprofil_speichern_id,0);  // Speicher Button zurücksetzen
   			   }
				   else
					{
    				SetValue($WochenProfil_edit_Anzeige_id, HM_WochenTempProfil_html($WochenProfil_Daten_edit_id, GetValue($Profil_Wochentage_id)));
					$tmp=(unserialize(Getvalue($WochenProfil_Daten_edit_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($WochenProfil_Daten_edit_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($WochenProfil_Daten_edit_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($WochenProfil_Daten_edit_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($WochenProfil_Daten_edit_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($WochenProfil_Daten_edit_id,serialize($tmp));
	      	            SetValue($WochenProfil_edit_Anzeige_id, HM_WochenTempProfil_html($WochenProfil_Daten_edit_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($WochenProfil_Daten_edit_id,serialize($tmp));
	      	            SetValue($WochenProfil_edit_Anzeige_id, HM_WochenTempProfil_html($WochenProfil_Daten_edit_id, GetValue($Profil_Wochentage_id)));
					   break;

						Case 3: // -5 min nur beim HM-TC-IT-WM-W-EU
						   If ($HM_Typ[GetValue($HM_Zimmer_Auswahl_id)]=="HM-TC-IT-WM-W-EU")
						      {
						      If ((strtotime($Ende)-(5*60))> strtotime($Start))
							   	{
								   $Ende = date("H:i", (strtotime($Ende)-(5*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($WochenProfil_Daten_edit_id,serialize($tmp));
      		   	         SetValue($WochenProfil_edit_Anzeige_id, HM_WochenTempProfil_html($WochenProfil_Daten_edit_id, GetValue($Profil_Wochentage_id)));
						      }
					   break;


						Case 4: // +5 min nur beim HM-TC-IT-WM-W-EU
						   If ($HM_Typ[GetValue($HM_Zimmer_Auswahl_id)]=="HM-TC-IT-WM-W-EU")
						      {
								If ((strtotime($Ende)+(5*60))< strtotime($Ende_next))
								   {
								   $Ende = date("H:i", (strtotime($Ende)+(5*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($WochenProfil_Daten_edit_id,serialize($tmp));
	   	               	SetValue($WochenProfil_edit_Anzeige_id, HM_WochenTempProfil_html($WochenProfil_Daten_edit_id, GetValue($Profil_Wochentage_id)));
						      }
					   break;


						Case 5: // +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($WochenProfil_Daten_edit_id,serialize($tmp));
	   	               SetValue($WochenProfil_edit_Anzeige_id, HM_WochenTempProfil_html($WochenProfil_Daten_edit_id, GetValue($Profil_Wochentage_id)));
 						break;

						Case 6: // +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($WochenProfil_Daten_edit_id,serialize($tmp));
	   	               SetValue($WochenProfil_edit_Anzeige_id, HM_WochenTempProfil_html($WochenProfil_Daten_edit_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($WochenProfil_Daten_edit_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($WochenProfil_Daten_edit_id,serialize($tmp));
   	            	SetValue($WochenProfil_edit_Anzeige_id, HM_WochenTempProfil_html($WochenProfil_Daten_edit_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($WochenProfil_Daten_edit_id,serialize($tmp));
         	   	   SetValue($WochenProfil_edit_Anzeige_id, HM_WochenTempProfil_html($WochenProfil_Daten_edit_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($WochenProfil_Daten_edit_id,serialize($tmp));
               		SetValue($WochenProfil_edit_Anzeige_id, HM_WochenTempProfil_html($WochenProfil_Daten_edit_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($WochenProfil_Daten_edit_id,serialize($tmp));
               		SetValue($WochenProfil_edit_Anzeige_id, HM_WochenTempProfil_html($WochenProfil_Daten_edit_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($WochenProfil_Daten_edit_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($WochenProfil_Daten_edit_id,serialize($tmp));
		   	      	   SetValue($WochenProfil_edit_Anzeige_id, HM_WochenTempProfil_html($WochenProfil_Daten_edit_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($WochenProfil_Daten_edit_id,serialize($tmp));
		   	      	   SetValue($WochenProfil_edit_Anzeige_id, HM_WochenTempProfil_html($WochenProfil_Daten_edit_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($Dum_uebertragenID, !IPS_GetObject ($Dum_uebertragenID)['ObjectIsHidden']);

			break;


			Case $Tagesprofil_kopieren_id:
              If (GetValue($HM_Zimmer_Auswahl_id)!=0)
			   	{
					$tmp=(unserialize(Getvalue($WochenProfil_Daten_edit_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($WochenProfil_Daten_edit_id,serialize($tmp));
            	SetValue($WochenProfil_edit_Anzeige_id, HM_WochenTempProfil_html($WochenProfil_Daten_edit_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)
			   		{
                  $ProfilDaten= unserialize(GetValue($IPS_HM_Wochenprofil[GetValue($Wochenprofil_uebernehmen_von_id)])); // Wochenprofil holen
				      $tmp=@$ProfilDaten[GetValueFormatted($Wochenprofil_uebernehmen_von_Praesenz_Profil_id)]; // Wochenprofil passend zur gewünschten Praesenz
         			SetValue($WochenProfil_Daten_edit_id,serialize($tmp));


						If (GetValue($WochenProfil_Daten_edit_id)=="N;")  //Profil ist leer
				   		{
						   $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_edit_Anzeige_id,"");
							SetValue($Wochenprofil_speichern_id,1);  // Speicher Button freigeben
   			   		}
						  else
							{
		    				SetValue($WochenProfil_edit_Anzeige_id, HM_WochenTempProfil_html($WochenProfil_Daten_edit_id, GetValue($Profil_Wochentage_id)));
							$tmp=(unserialize(Getvalue($WochenProfil_Daten_edit_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,1);  // Speicher Button freigeben							}
							}
						}
					}
			break;

			Case $Praesenz_Profil_Auswahl_id:
				SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);
			break;



		break;
		}
	}

if ($_IPS['SENDER']=='Variable')
	{

	}

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

//echo $_IPS['SENDER'];
//echo $_IPS['VARIABLE'];

//print_r($Tages_Profil);
?>

Servus,

Erstmal Danke für Deine Arbeit und der Fehler scheint jetzt weg zu sein.
Hat die Funktion aber eigentlich nicht wirklich beeinflusst.

Vorher:
WT_Fehler_2.jpg

Nachher:
WT_Fehler_3.jpg

Gibt es eigentlich eine Möglichkeit, dass der Hinweis „speichern erfolgreich“ nicht als Fehler sondern als Hinweis ausgegeben wird?

Gruß
Manfred

Hallo…

wenn’s stört, dann einfach die Zeile 122 im Skript >>HM_Edit.ips.php<< auskommentieren

echo "Speichern Erfolgreich";

oder durch diesen Befehl ersetzen. :loveips:

Gruß

Swifty

Hallo zusammen,

da es bei mir immer anders ist als bei allen anderen, taucht bei mir jedesmal wenn ich im Editorbereich bei jedem klick eine kleine Fehlermeldung auf:
1.jpg

Woran könnte das liegen? Ich hab alles nochmal neu installiert. Die Installation verlief ohne Fehler. Zeile 122 habe ich auskommentiert.
Es funktioniert soweit auch alles, nur diese Meldung stört mich.

Vielleicht jemand ne Idee?

Grüße
Stephan

P.S. Mein Problem mit meinem alten WT besteht leider immer noch. Da ich aber der Einzige bin der dieses Problem hat, werde ich es jetzt einfach ignorieren und demnächst einen auf das neue Set wechseln.

@Nall chan hat mich drauf gebracht:

Ursache war ein Leerzeichen nach dem php-Tag im Script.

Schau Dir mal das betroffene Script an.
Da wirst Du verbotener Weise so was finden:

I <?php

anstatt sowas

I<?php

(Das I ist im Beispiel nur zur Sichbarmachung linker Rand eingefügt (das taucht in Deinem Skript nicht auf))

oder eine zusätzliche Leerzeile nach dem Ende im Skript, o.ä.S.

Alles gut :cool:
Nochmal ein großes Danke :loveips:

Gruß
Manfred

Vielen Dank Boui, das entfernen des Leerzeichens brachte Abhilfe:)

Grüße
Stephan

Jetzt frage ich nochmal, auch wenn es mir wirklich unangenehm ist und ich der Einzige mit diesem Problem bin.

Mir ist aufgefallen, das auch das neue WT im Zusammenspiel mit dem neuen Stellmotor genau das selbe Verhalten an den Tag legt wie mein altes WT und Stellmotor.

Sprich wenn ich im Webfront den Modus verändere, z.B. wie in diesem Fall auf Automatik, dann wird das auch an das WT gesendet, nur der Modus wird nicht an den Stellantrieb weitergereicht.

Es sieht dann so aus bei mir in IPS:


Der Modus im WT steht also auf Automatik, nur warum steht der des Stellantriebs nach wie vor auf Manuell?
Sonst geht ja alles, die Solltemperatur wird weitergereicht nur der Modus nicht. Wie kann das denn sein?
Wenn ich den Modus ja direkt am WT verstelle, dann springt der Stellantrieb sofort auf den im WT eingestellten Modus.

Ich bin am verzweifeln und verstehe einfach nicht warum das bei mir so ist. Bei allen anderen passt das, oder? Auch nur mit dem LAN-Konfigurator?
Hat hierzu vielleicht noch jemand eine Idee?

Möchte mich auch noch entschuldigen das ich nerve! Es tut mir leid!

Danke und Grüße
Stephan

Ich habe das Skript in neuer Version nicht installiert und habe keinen neuen WT.

Mir fällt aber auf, dass Dein WT später als der Stellantrieb seine Werte gesetzt hat. Das ist in meinen Augen verwunderlich, denn wenn der WT korrekt mit dem Stellantrieb verbunden wäre, bekäme er meines Erachtens die Werte vom WT und damit nicht früher als der WT.

Wenn die richtig verbunden sind, dann benötigst Du keinen eigenen Eintrag in der Config für den Stellantrieb und dann kann dieser auch nicht unterschiedlich angesteuert werden.

So aus der Theorie gesehen.

Ich habe jetzt das Ganze nochmal ausführlicher getestet und dokumentiert.

Anbei auch einige Screenshots vom Objektbaum, ich hoffe man kann es so besser nachvollziehen?


So sieht das Kofig Skript aus:

<?
// ************************************************************************
// Bitte die nachfolgenden Beispiele durch die eigene Daten ersetzen
// Bei der Bezeichnung des $Zimmers bitte darauf achten, dass der Name mit den
// IPS-Konventionen für den Befehl IPS_SetIdent im  Einklang steht
// (d.H. keine Sonderzeichen, Umlaute oder Leerzeichen etc.)
// *************************************************************************

$HM_Edit_Wfe_ID= 52665 /*[Heizung\Heizungsregelung\WFE]*/;
//******************************************************************************
$HM_Typ[1]="HM-CC-TC";
$Zimmer[1]="Wohnzimmer";
$IPS_HM_DeviceID[1]=42207 /*[Räume\Wohnzimmer\Heizkörper\WT-Kanal 2 Wohnzimmer]*/ ;
$HM_ID_W[1]=20474 /*[Räume\Wohnzimmer\Heizkörper\WT-Kanal 1 Wohnzimmer]*/  ;
$HM_ID_VD[1]=14968 /*[Räume\Wohnzimmer\Heizkörper\HK-Ventil Wohnzimmer]*/  ;
$HM_Wfe_ID[1]=15744 /*[Heizung\Heizungsregelung\WFE\Wohnzimmer]*/ ;
//****************************************************************************
$HM_Typ[2]="HM-TC-IT-WM-W-EU";
$Zimmer[2]="Kueche";
$IPS_HM_DeviceID[2]=48753 /*[Räume\Küche\WT-Kanal 2 Küche]*/  ;
$HM_Wfe_ID[2]=20314 /*[Heizung\Heizungsregelung\WFE\Küche]*/   ;

//******************************************************************************
$HM_Typ[3]="HM-CC-RT-DN";
$Zimmer[3]="Bad";
$IPS_HM_DeviceID[3]=33334 /*[Räume\Bad\HK-Ventil Bad]*/ ;
$HM_Wfe_ID[3]=39309 /*[Heizung\Heizungsregelung\WFE\Bad]*/ ;
//****************************************************************************
?>

Hier jetzt eine Temperaturänderung von 21,0 auf 22,0 Grad:

Es dauert halt etwas bis der Stellantrieb seine Einstellungen wieder sendet. Aber das müsste doch passen.

Hier nun die Änderung des Modus:

Ich habe extra zwei Intervalle abgewartet in den der Stellantrieb seine Einstellungen sendet. Das mit dem Modus klappt bei mir einfach nicht und ich verstehe nicht warum :(!

Ist hier irgendwas erkennbar was ich falsch mache? Zur Not kann ich damit leben aber ich verstehe einfach nicht wo das Problem liegt und das macht mich wahnsinnig.

Grüße
Stephan