Hallo
verwende ein vorgestelltes Script zum Emails auswerten - Steuerung durch Emails - und dieses funkt jetzt nicht mehr - hätte schon versucht die Schreibweise an 2.5 anzupassen - davor wurde mir angezeit in welcher Zeile der Fehler ist - jetzt wird das Script nur mehr als fehlerhaft markiert! - Wo ist der Fehler oder hat vielleicht schon wer das Script angepasst?
<?
$allowedSenders = Array("mein name@adresse.xxx");
$prefix = "IPS";
//Hier im switch-case die einzelnen Kommandos einfügen. Wer nicht weiß wie, sollte die PHP Doku zu switch-case lesen
function processCommand($str)
{
switch($str)
{
case "RAFFSTOREAUF":
include("RaffstoreFunctions.php");
RaffstoreAuf(RAFFIS);
return true;
case "RAFFSTOREZU":
include("RaffstoreFunctions.php");
RaffstoreZu(RAFFIS);
return true;
case "STECKDOSEAN":
FS20_SwitchMode(15460, true);
return true;
case "STECKDOSEAUS":
FS20_SwitchMode(15460, false);
return true;
}
return false; //Fehler zurückschicken!
}
/*
* Ab hier nichts mehr ändern!
*
*/
$iid = IPS_GetParent($_IPS['SELF']);
if($_IPS['SENDER'] == "Variable")
{
$ins = IPS_GetInstance($iid);
switch($ins['ModuleInfo']['ModuleID'])
{
case "{CABFCCA1-FBFF-4AB7-B11B-9879E67E152F}":
$isIMAP = true;
break;
case "{69CA7DBF-5FCE-4FDF-9F36-C05E0136ECFD}":
$isIMAP = false;
break;
default:
die("Diese Skript muss unterhalb einer POP3 oder IMAP Instanz liegen");
}
if($isIMAP)
{
$mails = IMAP_GetCachedMails($iid);
}
else
{
$mails = POP3_GetCachedMails($iid);
}
$uid = CreateVariableByName($_IPS['SELF'], "LastRun", 1);
$last = GetValue($uid);
//$mails = array_reverse($mails);
if(sizeof($mails) == 0)
return;
$lastmail = $last;
foreach($mails as $mail)
{
if(($last > 0) && ($mail['Date'] > $last))
{
if(substr($mail['Subject'], 0, strlen($prefix)) == $prefix)
{
if(in_array($mail['SenderAddress'], $allowedSenders))
{
$cmd = substr($mail['Subject'], strlen($prefix)+1);
$status = processCommand($cmd);
if($status)
{
$message = $cmd." ausgeführt!";
} else {
$message = $cmd." ist nicht bekannt!";
}
if(IPS_InstanceExists($sendResponse))
{
SMTP_SendMailEx($sendResponse, $mail['SenderAddress'], "IP-Symcon Rückmeldung", $message);
}
} else {
if(IPS_InstanceExists($sendResponse))
{
SMTP_SendMail($sendResponse, "IP-Symcon Rückmeldung", "Unerlaubter Zugriff: ". $mail['SenderAddress'].", Befehl: ".$cmd);
}
}
}
}
$lastmail = max($lastmail, $mail['Date']);
}
SetValue($uid, $lastmail);
}
if($_IPS['SENDER'] == "Execute")
{
$vid = @IPS_GetStatusVariableID($iid, "LastMessage");
if($vid === false)
die("Irgendwie fehlt die benötigte StatusVariablen!");
$eid = @IPS_GetEventIDByName("MailUpdate", $_IPS['SELF']);
if($eid === false)
{
$eid = IPS_CreateEvent(0);
IPS_SetEventTrigger($eid, 1, $vid);
IPS_SetParent($eid, $_IPS['SELF']);
IPS_SetName($eid, "MailUpdate");
IPS_SetEventActive($eid, true);
}
IPS_SetHidden($_IPS['SELF'], true);
echo "Skript erfolgreich installiert!";
}
function CreateVariableByName($id, $name, $type)
{
// global $_IPS['SELF']; das brauche ich seit 2.5 auch nicht - oder?
$vid = @IPS_GetVariableIDByName($name, $id);
if($vid === false)
{
$vid = IPS_CreateVariable($type);
IPS_SetParent($vid, $id);
IPS_SetName($vid, $name);
IPS_SetInfo($vid, "this variable was created by script #" .$_IPS['SELF']);
}
return $vid;
}
?>
global $_IPS[‚SELF‘]; // das brauche ich seit 2.5 auch nicht - oder? hab ich im Script bereits auskommentiert!
Kann mir da jemand helfen?
Danke
Rudolf