PHP über Event starten: Name der auslösenden Instanz verwenden

Hallo,

ich möchte gerne auf den Status einer Batterievariable ein Event legen, welches den Namen des Gerätes verwendet.

Dazu habe ich ein Ereignis Script erstellt welche beim erreichen eines Wertes den folgenden PHP Code starten soll:

SMTP_SendMail(12345,„Dringend Batterie wechseln“,„Bitte umgehend Batterien „.strtoupper(IPS_GetName($_IPS[‚VARIABLE‘])).“ tauschen!\n\nStand: " . date(„d“.“.„.„m“.“.".„Y“));

Während bei dem Testscript alles einwandfrei funktionierte, funktioniert es nicht in den Produktiven echten Variablen, dort wird mir nur der Name der Obersten Instanz statt dem Gerät der Variable verwendet.

Habt ihr eine Idee, warum das nicht funktioniert?

Danke für eure Hilfe.

Kannst du mal ein Screenshot vom Objektbaum einstellen und deinen Wunsch und das aktuelle Ist markieren?

Guten Morgen @tobiasr. danke für deine Hilfe. Habe den Screenshot angehangen - ich möchte erreichen, das wenn der Status von LOWBATT (32074) den Wert „Batterie Schwach“ annimmt, das dann der PHP Code ausgeführt wird (Mail senden) - da in allem Scripten der selbe Code sein soll, will ich nicht den Namen hart eincodieren, sondern auslesen - dazu möchte ich gerne den Namen der Instanz verwenden (in dem Beispiel z.B. Flur Thermostat, ID 45674).

Noch besser wäre es, wenn ich ein Script haben (z.B. batterie-email mit der ID 12345, so das ich dann per IPS_RunScript(12345) als PHP Code in jeder Batterievariablen von allen Thermostasten hinterlegen - so brauche ich nur noch an einer Stelle z.B. Anpassungen vornehmen.

Während ich erst mal mit einer Testvariable getestet hatte, hatte alles funktioniert - nur beim Übertragen auf die echten Variablen wird mir entweder gar nichts angezeigt oder der Namen der Hauptkategorie angezeigt, bei dem Befehl: strtoupper(IPS_GetName($_IPS[‚VARIABLE‘]))

Hi,
ich habe es mal probiert:

<?php
$text = IPS_GetName(IPS_GetParent($_IPS['VARIABLE']));
SetValue(59862, $text);
?>

59862 ist eine Stringvariable so das ich schneller testen kann. Sowohl mit als auch ohne GetParent stand da immer das drin was ich wollte. Als Trigger habe ich erst eine eigene Bool und danach die Leistung einer Steckdose genommen damit sich da auch was tut. Ich konnte es nicht nachstellen.

Statt RunScript musst Du RunScriptEx benutzen damit Du die ID der Variablen übergeben kannst. Aufruf wäre dann:

IPS_RunScriptEx(59691, Array("SENDER" => "Batterie", "ID" => $_IPS['VARIABLE']);

dein Script 59691 müsste in etwa so aussehen:

<?php
switch ($_IPS['SENDER']){
    case 'Batterie':
        $ID = $_IPS['ID'];
        $text = IPS_GetName($ID);
}

btw. es gibt ein schönes Modul Batterie-/Profil-Monitor das es fast automatisch macht.

Ralf

Script ja, aber kein RunScript.
Du wählst bei der Aktion als Ziel dein Script aus und dann sind da auch alle Variablen enthalten.

Michael

Danke für eure Hilfe - und besonders anke für den Tip mit dem Modul Ralf. Wenn das funktioniert, kann ich mir den ganzen Aufwand natürlich sparen. Es ist echt schon unglaublich was wir alles feines im Modulstore haben.

Danke noch mal für eure Unterstützung :).