Soll Ist vergleich . Aber wie?

Sorry stehe gerade voll auf dem Schlauch .
Ich möchte einfach ein Vergleich der Soll ist Temperatur machen .

Also SOLL Temperatur (SETPOINT) per Webfront auf 22,5 C gestellt

und IST Temperatur (TEMPERATURE) noch 21,0 C .

Sobald IST Temperatur (TEMPERATURE) 22,5 C ist sende TTS Nachricht oder Ähnliches.

So wie ich es mache klappt das nicht wirklich . Bin mir auch nicht sicher wo ich einen Ausgelöstes Ereignis legen muss.

Seit nett zu mir , stehe erst am Anfang zur einer großen Programmier Karriere :smiley:


<?
 
include ("45525.ips.php");
	

	$isttemp  =  GetValue(42625 /*[System\Hardware\WEATHER\TEMPERATURE]*/);
	$solltemp =  GetValue(19776 /*[System\Hardware\CLIMATECONTROL_REGULATOR\SETPOINT]*/);

	$temp = $isttemp;
	$ort = 'Badezimmmer';
	 if($solltemp > $isttemp){

	 IPS_SetScriptTimer($IPS_SELF, 60);

	}

	 else {

		createTTSTemp($temp , $ort );
		echo "TEST";
		IPS_SetScriptTimer($IPS_SELF, 0);
	 }





?>


ganz locker bleiben, das bekommen wir hin.
Beschreib bitte nochmal ausführlich, was das Script machen soll (also nicht was Du glaubst was es macht, sondern was es machen soll)

Hallo,

habe ich wie folgt gelöst:

  1. Skript anlegen, das die Befehle enthält, die ausgeführt werden sollen wenn der Wert überschritten ist, also z.B. Deine TTS-Meldung etc.

  2. Für dieses Skript einen ausgelösten Event anlegen, wenn IST-Tempertaur ( bei Dir war das 42625 ) > 20. („20“ ist erst einmal temporär).
    Häkchen für Event wiederholen rausnehmen.

  3. In dem Skript, in dem Du über Webfront / Setpoint den Solltwert setzt oder änderst, diesen Wert als Grenze für das o.a. Ereigniss setzen via :


IPS_SetEventTriggerValue( $EventID,$IPS_VALUE);

$EventID ist hierbei die ID des Events ( nicht des Skripts !)

Auf die Art und Weise änderst Du einfach per Webfront die Bedingungen für die Auslösung des o.a. Skripts auf die gewünschte Soll-Temp.

Gruß
Walter

Danke schön Walter so funktioniert das genau wie ich möchte.

@Raketenschnecke . Hat sich damit erledigt , der Walter versteht mich. Trotzdem Danke

Ich habe das Ganze nochmal ein bisschen angepasst . Weil
Folgendes Problem auftritt . Das Homematic Wandthermostat aktualisiert natürlich nicht bei jedem 0,1 Grad. Daher kann sein das mein Ausgewählter Wert die erreicht wird.

Daher kann ich beim Ausgelösten Ereignis nicht beim nicht " Bei Bestimmten Wert nehmen " sondern muss bei „Grenzüberschreitung“ nehmen.
Damit kann wenn ich Setpoint 22 Grad ausgewählt habe mein Skript auch bei 22,1 Grad gestart werden. (TTS generieren oder Ähnliches).

Aber dann tritt natürlich das Problem auf das wenn ich den Setpoint auf 14,5 Grad stelle , damit nicht mehr geheizt wird. Ist ja auch eine „Grenzüberschreitung“ da.

Also setze ich wenn der Sollwert sowieso schon überschritten ist durch den Istwert. Den Grenzwert auf einen nicht erreichbaren Wert.



<?
$ISTTEMP = GetValue (42625 /*[System\Hardware\WEATHER\TEMPERATURE]*/);

 if ($IPS_VALUE  >  $ISTTEMP ){

 IPS_SetEventTriggerValue( 12066 /*[System\Skripte	empTTS\]*/ ,$IPS_VALUE);
 
 }
 
 else{
 IPS_SetEventTriggerValue( 12066 /*[System\Skripte	empTTS\]*/ ,50);
 }
 


?>


Dann mach es doch einfach mit IPS_SetEventTrigger.

Dann wird das Sript ausgeführt wenn Dein „IST“ unter/über dem Wert „Soll“ ist.

[url=http://www.ip-symcon.de/service/dokumentation/befehlsreferenz/ereignisverwaltung/ips-seteventtrigger/.

Gruß,

Peter

jiepp, das sehe ich :wink:

Wenn ich das Richtig verstehe kommt das doch aufs selbe raus

Ich möchte 22 grad haben , der Raum hat aber mometan 21 Grad. Also wird aufgeheizt und das Ereignis wird auf den Wert 22 Grad gesetzt.

Wenn die 22 grad erreicht sind ist alles Gut , es ist warm und mein Skript Startet . Dann wäre für IPS_SetEventTriggerSubsequentExecution auch alles OK weil der Wert ja einmal erreicht ist.

Jetzt ist mir aber zu Warm oder ich verlasse das Haus und ich Stelle es auf 17 Grad . Dann wird doch mein Ereignes auf 17 Grad gesetzt . Und dann würde wieder direkt mein Skript auslösen weil der Istwert noch 22 Grad ist .

Oder?

Jupp… aber Du ersparst Dir das Vergleichen im Script. Hast Du den Trigger auf 21,5 gesetzt und und dein Homematic sendet Dir 21,8 ( hatte davor z.B. 21,0 ) wird das Script ausgeführt und weil der Wert von 21,5 überschritten wurde.
Thats all…

Sollte nur ein Tip sein… klar führen viele Wege zum gleichen Ziel! :smiley:

Schönen Sonntag,

Peter