E-Mail Versand im Script geht nicht

Hallo,
stehe erneut vor einem Problem. Ich habe erfolgreich eine SMTP-Instanz angelegt mit der der E-Mail Versand auch wunderbar klappt (Sende Button)

Nun möchte ich das eine E-Mail versendet wird wenn die Alarmanlage scharf ist und ein Bewegungsmelder (1 und 2 im Innenraum) Bewegung erkennt.
Habe auch ein Script dazu geschrieben, leider kommt keine E-Mail bei mir an (auch wenn ich das Script manuell ausführe)…Alarmanlage habe ich natürlich auf dem richtigen Status stehen. Der Status der Bewegungsmelder passt auch.
Fehlermeldungen gibt es nicht.

Hier ein Ausschnitt:

if ($alarmanlage == 3) //Ist Alarmanlage scharf (3scharf)? WENN JA=> IF-Überprüfung / Wenn NEIN=> Abbruch
{
	if($bw1 == 1) //Überprüfung Bewegungsmelder 1 / Status = WAHR? WENN JA=> Mailversand / Wenn NEIN=> weiter zum nächsten Bewegungsmelder
	 {
	 SMTP_SendMail($sendmail, $mailsubject, "IP-Symcon meldet: <b>ALARM - EINBRUCH!</b> Der Bewegungsmelder <b>1</b> hat um $uhrzeit Bewegung gemeldet!!"); //E-Mail Versand:  SMTP_SendMail(ID, "Betreff", "Text" oder $Variable);
	 }
	if($bw2 == 1) //Überprüfung Bewegungsmelder 2
	 {
	 SMTP_SendMail($sendmail, $mailsubject, "IP-Symcon meldet: </b>ALARM - EINBRUCH!</b> Der Bewegungsmelder <b>2</b> hat um $uhrzeit Bewegung gemeldet!!");
	 }
}

Hast du denn auch $alarmanlage und $bw1 irgendwo definiert und dir Werte per GetValue eingelesen?

paresy

fehlt in der zweiten If abfrage nicht das doppelte „==“ ?

EDIT: Hast Du wohl gerade selber gemerkt und im ersten post editiert…

Natürlich. Sonst würde ich ja Fehlermeldungen erhalten :rolleyes:
EDIT: Peinlich peinlich… (siehe Unten)

Hier:


$bw1 = GetValueBoolean(57451); 
$bw2 = GetValueBoolean(30795);

$uhrzeit = date("H:i.s"); //Uhrzeit einlesen
$sendmail = 38541;
$mailsubject = "ALARM - EINBRUCH!"; //Betreff der E-Mail
$alarmanlage = 55486; //ID der Alarmanlage

Und ja habs mit den „==“ gemerkt, geht leider auch nicht.

Poste mal dein ganzes Skript.

Hier:

<?

//Deklaration der Variablen

$bw1 = GetValueBoolean(57451);
$bw2 = GetValueBoolean(30795); 

$uhrzeit = date("H:i.s"); //Uhrzeit einlesen
$sendmail = 38541 /*[TESTS\SCRIPTE\E-Mail senden (SMTP)]*/; //E-Mail Variable für einfache Änderung
$mailsubject = "ALARM - EINBRUCH!"; //Betreff der E-Mail
$alarmanlage = 55486; //ID der Alarmanlage

//=======================================================================================Bewegungsmelder prüfen


if ($alarmanlage == 3) //Ist Alarmanlage scharf (3=ROT=scharf)? WENN JA=> IF-Überprüfung / Wenn NEIN=> Abbruch
{
	if($bw1 == 1) //Überprüfung Bewegungsmelder 1 / Status = WAHR? WENN JA=> Mailversand / Wenn NEIN=> weiter zum nächsten Bewegungsmelder
	 {
	 SMTP_SendMail($sendmail, $mailsubject, "IP-Symcon meldet: <b>ALARM - EINBRUCH!</b> Der Bewegungsmelder <b>1</b> hat um $uhrzeit Bewegung gemeldet!!"); //E-Mail Versand:  SMTP_SendMail(ID, "Betreff", "Text" oder $Variable);
	 }
	if($bw2 == 1) //Überprüfung Bewegungsmelder 2
	 {
	 SMTP_SendMail($sendmail, $mailsubject, "IP-Symcon meldet: </b>ALARM - EINBRUCH!</b> Der Bewegungsmelder <b>2</b> hat um $uhrzeit Bewegung gemeldet!!");
	 }

}//if ($alarmanlage = 3)
	 ?>

Fehlt hier nicht das GetValue ?

$alarmanlage = 55486; //ID der Alarmanlage

Weil $alaramanlage in dem Fall 55486 ist!

if ($alarmanlage == 3)

Kann also niemals stimmen !

Au backe…das wars! Ich Dussel!^^

DANKE

So auf die schnelle:

Deine Variable $alarmanlage hat immer den Wert 55486, so stehts in deinem Skript.

Was Du willst ist ja den Wert, der in der VAR steht -> $alarmanlage = getvalue (55486);

EDIT: Da war jemand etwas schneller :slight_smile:

Ich habe mich mit dem eMail Modul noch nicht befasst, aber:

Du scheinst ein Skript als eMail Instanz ID anzugeben:


$sendmail = 38541 /*[TESTS\SCRIPTE\E-Mail senden (SMTP)]*/; //E-Mail Variable für einfache Änderung 

Geb hier mal die Instanz des SMTP Moduls an, falls es das nicht ist.

Ist die ID der SMTP Instanz…da ist das Kommentar wohl etwas unklar.^^ Danke trotzdem…funktioniert jetzt alles! :slight_smile:

Hat jemand auf die schnelle vielleicht ne Idee wie ich den Text vereinfachen /automatisieren könnte sodass ich nicht für jeden Rauchmelder den Text „Rauchmelder X,Y,Z hat Bewegung erkannt“ schreiben muss? Werden noch einige mehr werden…

Auch so auf die Schnelle:

Jedem Rauchmelder im Objekt tree einen Event zuordnen, der bei Variablenänderung auf True das Skript startet.

Im Skript dann mittels IPS_SENDER -> klick


if (IPS_SENDER == "Variable"){

und


$Ausloeser = IPS_VARIABLE

Die auslösende Variable ermitteln.
Dann einfach mittels switch/case Namen der Rauchmeldervariable für den Namen in der eMail zuordnen.