Bei Grenzwertunterschreitung einmalig Script ausführen

Hallo!

Ich muss euch schon wieder belästigen, aber ich komme hier nicht weiter.
In HomeputerCL bin ich ja relativ fit aber bei IP-Symcon hab ich noch keinen Durchblick.

Ich hab mein EM1010PC bereits integriert und erhalte Daten (dank des Beitrags von Tommi)
ich möchte jetzt wenn ein gewisser Schwellwert unterschritten wird EIN Mail senden.
Ein Mail senden kann hab ich schon hinbekommen.
Das Problem ist leider, ich bekomme alle 5 Minuten ein Mail gesendet, wie kann ich das machen das nur ein Mail gesendet wird.

Danke Gerald

Hallo.

Kannst Du mal schildern wie Dein Mailversand abgestossen wird? Um den Mechanismus zu verbessern muss man wissen wie er funktioniert.

Grüsse.

Hallo!

Also ich hab ein Script (sende_mail) angelegt

SMTP_SendMail(58407 /*[Waschmaschiene\Mail_Waschmaschine]*/, "Waschmaschine ist", "FERTIG!");

und ein Ereignis wo als Variable der Energiesensor eingetragen ist undi „Grenzunterschreitung“ Wert ist 0,01 das Script „sende_mail“
aufruft.
das war es dann auch schon.

Gruß
Gerald

Nimm im Ereignis den Haken bei „nachfolgende Ereignisse ausführen“ raus… :wink:

Ich wuerde die Systemvariable $_IPS[‚OLDVALUE‘] benutzen.

Oder der Grenzwert ist zu knapp gewählt. Meine WaMa zieht 1-2 Watt im „Ruhemodus“ - der leider auch während eine Wollwaschgangs (Stichwort: ziehen lassen) erreicht wird. Habe daher noch einen Zeitfaktor einbauen müssen.

Hallo!

Hab ich gemacht und wie es aussieht hat das funktioniert.
kannst du mir erklären was dieses „nachfolgende Ereignisse ausführen“ genau bewirkt?

Danke Gerald

Hallo Kronos!

Das mit dem Zeitfaktor hört sich gut an.
Wenn es nicht zu viel verlangt ist, könntest du mir sagen (eventuell beschreiben) wie du dein WAMA Projekt aufgebaut hast?
Ich muss mich in die Thematik erst einarbeiten.

Mich macht das fertig wenn ich hinten und vorne keine Ahnung hab.

Danke Gerald

Ich habe den thread mal einen eindeutigeren Titel verpasst und ins richtige Unter-Forum verschoben :slight_smile:

Könnte so aussehen:


<?php

//Definitionen

	//Letzter Last-Wert Geschirrspüler
		$Last = getvalue(56924 /*[Haustechnik\Plugwise\Geschirrspüler]*/);
	//Terminal EG Online für Sprachausgabe?
		$Terminal = GetValue(40754 /*[Haustechnik\Status\TouchTerminal Wohnzimmer]*/);
		$TerminalURL = "http://192.168.22.120:3773/wsdl/IIPSVariableManager";
	//Meldungstext Betreff
	   $meldung = "";
	//Schaltschwelle
	   $Schaltschwelle = 17; // Watt
	   $meldung = "";
	//Hinweistext für Spülvorgang ENDE definieren
		$Ausgabeziel = 18837; //Remote-Variable für Sprachausgabe
		$Hinweistexte = array(	"Hinweis! Der Spuelvorgang ist beendet.",
										"Der Geschirrspueler ist fertig.",
										"Bitte das saubere Geschirr aus der Maschine nehmen.",
										"Das Geschirr ist sauber und kann aufgeraumt werden.",
										"Bitte sauberes Geschirr aus dem Spueler nehmen.",
										"Das Geschirr ist fertig gespuelt. Bitte einraeumen.",
										"Der Geschirrspueler hat seine Arbeit beendet.",
										);
		$Zufall = mt_rand(0,count($Hinweistexte)-1);
		$Ausgabe = $Hinweistexte[$Zufall];

//Auswertung

switch ($_IPS['SENDER'])
	{

	case "Variable";
		if ($Last >= $Schaltschwelle)
		   {
         $meldung = "- Geschirrspüler -
Spülvorgang hat begonnen. (".$Last.")
";
         Versenden($meldung);
			SetValue(42049 /*[Skripte allgemein\Alarmscripts\Geschirrspüler Status\Spülvorgang]*/, true);
			}
		else
		   {
        	IPS_SetScriptTimer($IPS_SELF, 1500);  //Wartezeit bis Ende-Meldung
			}
	break;

  	case "TimerEvent";
   	$meldung = "- Geschirrspüler -\Spülvorgang ist beendet. (".$Last.")
";
      Versenden($meldung);
		SetValue(42049 /*[Skripte allgemein\Alarmscripts\Geschirrspüler Status\Spülvorgang]*/, false);
		IPS_SetScriptTimer($IPS_SELF, 0);
	   if ($Terminal == 0) //Terminal EG für SPrachausgabe Online?
			{
			@$soap = new SoapClient($TerminalURL);
			@$result = $soap->WriteVariableString($Ausgabeziel, $Ausgabe);
			}
	break;
	}

function Versenden($meldung)
	{
	$array = array(
	   "Betreff" => "- Geschirrspüler -",
	   "Nachrichtentext" => $meldung.date("d.m.Y",time())." / ".date("H:i",time())." Uhr.",
	   "NachrichtentextUTF8" => utf8_encode($meldung.date("d.m.Y",time())." / ".date("H:i",time())." Uhr."),
	   "application" => "IP-Symcon",
	   "priority" => 1,
	   );
	IPS_RunScriptEx(18090 /*[Email und Termine\Email Versand IP-Symcon]*/, $array); // Email versenden
	IPS_RunScriptEx(56778 /*[Skripte allgemein\Prowl Pushdienst\Prowl Ausgangsmodul]*/, $array); // Prowl versenden
	}
	
?>

Sollte einigermaßen selbsterklärend sein. Das Skript wird zum einen über eine Grenzwertunter-, zum andern über eine Grenzwertüberschreitung und durch einen Verzögerungstimer getriggert.

Danke Kronos!

Gruß Gerald

Das Häkchen bewirkt, das es nur bei der ersten Überschreitung des Grenzwertes eine Aktion ausgelöst wird. Egal, wie oft der Grenzwert anschliessend noch überschritten wird, es wird nichts mehr ausgelöst.
Erst wenn du wieder einmal zurück über den eingestellt Grenzwert bist, wird bei erneuter Überschreitung wieder ein Event ausgelöst.

MFG
Smudo