E-Mail versenden / SMS aufs Handy

Die Endlosschleife ist zwar beseitigt, das Problem bleibt aber…
Ich möchte nämlich bei einem Alarm zwei Emails verschicken (an mein Postfach und an Clackatell). Dazu werden die Scripte SMS_Clickatell und Email_lokal aufgerufen, die wiederum die Class SMTP benutzen.



$alarmarr = Array("Rauchmelder_Kinderzimmer" => GetValueBoolean("Rauchmelder_Kinderzimmer.Status"),"Rauchmelder_Serverraum" => GetValueBoolean("Rauchmelder_Serverraum.Status"));
$SMS_Alarm = GetValueBoolean("SMS_Alarm");

foreach($alarmarr as $name => $wert) {
  if (($wert == True)&&($SMS_Alarm == false)) {
      SetValueString("SMS_Meldetext", "Alarm!!! Der ".$name." meldet Feuer!!!");
      IPS_RunScript("SMS_Clickatell");
      IPS_RunScript("Email_lokal");
      SetValueBoolean("SMS_Alarm",true);
      echo "Alarm!!! Der ".$name." meldet Feuer!!!";
  }
}


Wie löst man das Problem am geschicktesten?

Gruß
kdtk

Das wird wohl mit die ankommende version -der die jetzt in Beta lauft- ein grosseres problem glaube ich.
Die 2x angerufene scripte brauchen die gleiche php-‚bausteine‘ (also hier SMTP oder IMAP) und deshalb glaube ich das die init der php-‚bausteine‘ nicht simultan laufen können.

ich wurde mal vorschlagen eine weile zu warten zwischen beide runscript’s.
Etwas durch IPS_SLEEP(10); -> oder wie ging dieser commando wieder?

wenn dies nicht klappt, das wird es schwindlich weil dein script intern buffern soll - also erste nachricht an die erste adresse, und dann nur die 2e…

Grusse,
Fredje

Hi,

habe heute meinen Wassermelder bekommen und möchte auch gerne die Funktion, eine SMS bei Alarm aufs Handy zu schicken, realisieren.

Das Script kann ich meinen Bedürfnissen anpassen, doch leider ist in diesem Post die Sache mit den Voreinstellungen ein wenig untergegangen.

Was muss ich bei Clickatell beauftragen?

Was muss ich außer dem Script in IPS einbinden, um eine E-Mail an Clickatell zu senden, damit die ne SMS draus machen. Ich sehe zum Beispiel ein class.smtp.php. das ist standardmäßig nicht implementiert. Da fangen schon meine Probleme an. Ist das das Einzige, was ich benötige?

Vielleicht könnte jemand, bei dem dieses Verfahren läuft, ne kleine Anleitung bereitstellen, damit auch andere Community-Mitglieder davon profitieren können.

Das Post ist leider so aufgebaut… ich mach dies… ne mach es anders…

… aber nicht, wie mache ich es anfangs richtig :frowning: Step by step.

Danke im Voraus.

Gruß Jimmy

www.clickatell.com ein account machen, creditkarte bereithalten (z.b. american express), credits laden und gut.

ist eigentlich supereinfach damit was zu realsieren - habe damit z.b. auf webseiten sms dienste schon realisiert. bei interesse habe ich da noch ein beispiel (siehe unten).

kann man eigentlich bei dennen immernoch einen wunschabsender angeben statt der telefonnumer (z.b. statt beim empfang die telefonnummer anzuzeigen wird www.domain.de angezeigt)? früher ging das mal.

sms1.jpg

sms2.jpg

Hallo Peter,

danke für die prompte Antwort aber eine Frage hab ich noch: was hat das mit der SMTP class aus dem Script auf sich? Runterladen und in den Ordner \scripts verbannen?

Mal nebenbei, Du wolltest mir noch ein Beispiel-php für den PDA schicken.

Schönen Abend noch.

Gruß

Jimmy

So, habe Script angepasst, einen Account bei Clickatell erstellt, die SMTP class heruntergeladen und in den Ordner \scripts kopiert.

Ich habe der Variablen eine Text zugewiesen und dann das Script mal gestartet.

Es kommt folgende Fehlermeldung:

<br />
<b>Warning</b>: main(scripts/class.smtp.php) [<a href=‚function.main‘>function.main</a>]: failed to open stream: No such file or directory in <b>C:\Programme\IP-Symcon\scripts.currentscript</b> on line <b>34</b><br />
<br />
<b>Warning</b>: main() [<a href=‚function.include‘>function.include</a>]: Failed opening ‚scripts/class.smtp.php‘ for inclusion (include_path=’.;C:\php5\pear’) in <b>C:\Programme\IP-Symcon\scripts.currentscript</b> on line <b>34</b><br />
<br />
<b>Fatal error</b>: Class ‚SMTP‘ not found in <b>C:\Programme\IP-Symcon\scripts.currentscript</b> on line <b>36</b><br />

Bitte um Hilfestellung, was zu tun ist.

Gruß

Jimmy

Nur nebenbei:

Ich schreibe ein IPS-Modul, mit dem du direkt über ein angeschlossenes altes, ausrangiertes Handy SMS senden und empfangen kannst. Die empfangenen SMS können dann direkt Scripte triggern.

BTW:
Jemand interessiert dafür für mich als Beta-Tester zu arbeiten? :wink:

Toni

Hi Toni,

kannst mich schon mal notieren:D.

Steuerst Du das Handy eigentlich direkt an, oder muss die zugehörige Software installiert werden?

Momentan arbeite ich mit nem richtigen GSM-Modem (siemens M20T) . Da genügt ein Com-Port.

Das Handy muss Hayes Befehlssatz unterstützen und du brauchst ein Datenkabel, dass du dein Handy über nen Comport anschließen kannst. Ggf. genügt auch ein virtueller Comport der Handysoftware. Dann würde u.U. eine Verbindung auch über USB oder Bluetooth funken… Muss aber erst getestet werden.

In wieweit das so geht will ich erst testen. Es scheint aber Probleme mit einigen Simkarten zu geben…

Toni

Ich finde den Fehler einfach nicht. Habe die Vermutung, dass es an dem C:\php5\pear liegt. Muss ich zusätzlich noch php installiert haben?

Hi,

habe einen Fehler gefunden, nach dem IPS-Update musste der include-Befehl geändert werden. Habe ihn folgendermaßen abgeändert:

include(IPS_GetScriptFile(„class.smtp“));

Doch es bleibt noch folgender Fehler:

<br />
<b>Warning</b>: main() [<a href=‚function.include‘>function.include</a>]: Failed opening ‚‘ for inclusion (include_path=’.;C:\php5\pear’) in <b>C:\Programme\IP-Symcon\scripts.currentscript</b> on line <b>34</b><br />
<br />
<b>Fatal error</b>: Class ‚SMTP‘ not found in <b>C:\Programme\IP-Symcon\scripts.currentscript</b> on line <b>36</b><br />

Kann mir keiner helfen?

Gruß

jimmy

[b]Installation[/b]
Copy class.phpmailer.php into your php.ini include_path. 
If you are using the SMTP mailer then place class.smtp.php in your path as well. 
If you do not have control of the include directory and you are running PHP 4.0 or higher you can use this function to set it to the correct directory: 

ini_set("include_path", ".:/path/to/phpmailer/dir");

Or this:

$mail->PluginDir = "/path/to/phpmailer/dir";


Also setze entweder den include_path in der php.ini oder im Script mit ini_set zu den Pfad, wo Du die Scripte abgelegt hast.

Tommi

Hallo Tommi,

dumme Frage, wo muss ich die Anpassung vornehmen? Und woher weiss ich, was mein include-path ist?

Ich verwende das Script von steiner. Ich habe die class.smtp.php incl. aller Dateien und Unterverzeichnisse ins \script Verzeichnis kopiert.

Gruß

Jimmy

Hab jetzt folgende Zeile in mein Script aufgenommen:

ini_set(„include_path“, „C:\Programme\IP-Symcon\scripts“);

Gleiche Fehlermeldung. Ich raff es einfach nicht.

Bitte habt Mitleid mit einem php-noob.

Gruß

Jimmy

Hallo Jimmy,

versuch es mal so

ini_set(„include_path“, „C:/Programme/IP-Symcon/scripts“);

Gleiches Ergebnis :frowning:

Hier noch mein Script. Benutzernamen und PWs durch xxx ersetzt.

<?
/*
*******************************
 IP-SYMCON Event Scripting
*******************************
File     : SMS_Clickatell.ips.php
Trigger  : 
Interval : 
*/
ini_set("include_path", "C:/Programme/IP-Symcon/scripts");
//Mail konfiguration
$mailserver = "post.strato.de";
//Benutzername/Passwort
$username = "xxx";
$password = "xxx";
//Absender
$sendermail = "xxx";
$sendername = "";
//Empänger
$receivemail = "sms@messaging.clickatell.com";
$receivename = "";
//Betreff
$subject = "";
//Meldung
$message ="user:xxx
";
$message.="password:xxx
";
$message.="api_id:xxx
";
//$message.="to:xxx
";
$mtext = GetValueString("SMS_Meldetext");
$message.="text:$mtext
";
   //--- Script für Mailversand ---
   //* Keine weitere Konfiguration nötig
   //Klasse für Mailversand importieren
   //(c) by http://phpmailer.sourceforge.net/
   include(IPS_GetScriptFile("class.smtp"));
   //Object erstellen
   $mail = new SMTP();
   //Zum SMTP Server verbinden
   if(!$mail->Connect($mailserver)) {
       echo "Error connecting to MAIL SERVER";
      exit;
   }
   //Handshake

   if(!$mail->Hello()) {
       echo "Error in HELO";
       exit;
   }
    //Anmelden
   if(!$mail->Authenticate($username, $password)) {
       echo "Error in AUTH";
       exit;
   }
   //Mail generieren

   $CRLF = "
";
   $header ="From: \"$sendername\" <$sendermail>".$CRLF;
   $header.="To: \"$receivename\" <$receivemail>".$CRLF;
   $header.="Subject: $subject".$CRLF;
   $header.=$CRLF;
    //Absender angeben
   if(!$mail->Mail($sendermail)) {
       echo "Sender not Accepted";
   } else {      //empänger
       if(!$mail->Recipient($receivemail)) {
         echo "Receptor not accepted!";
      } else {
           if(!$mail->Data($header.$message)) {
                 echo "Error Sending MAIL!";
           }
      }
   }
?>

und die dazugehörige Fehlermeldung:

<br />
<b>Warning</b>: main() [<a href=‚function.include‘>function.include</a>]: Failed opening ‚‘ for inclusion (include_path=‚C:/Programme/IP-Symcon/scripts‘) in <b>C:\Programme\IP-Symcon\scripts.currentscript</b> on line <b>35</b><br />
<br />
<b>Fatal error</b>: Class ‚SMTP‘ not found in <b>C:\Programme\IP-Symcon\scripts.currentscript</b> on line <b>37</b><br />

versuche es mal mit


ini_set('include_path', ini_get('include_path').';.;C:/Programme/IP-Symcon/scripts'); 

was steht denn in C:\Programme\IP-Symcon\scripts.currentscript ?

Tommi

In .currentscript steht immer das Script, was du per Execute startest.

paresy

wer ruft nun was auf: das .currentscript das Mailscript (dann muss ini_set dort rein) oder umgedreht?

Tommi