PopUp Script

Hallo Gemeinde,

ich benutze folgendes Script um bei einer Temperatur von mehr als 26 Grad ein PopUp im Webfront anzeigen zu lassen.
Dabei hab ich als Ereignis den Status „bei Variablen Änderung“ Script Starten.

Soweit so gut! Funktioniert auch bestens, nur wenn ich zb 26,1 Grad habe oder 26,2Grad oder 26,3 Grad usw…
Kommt immer der Alarm!

Ich wollte aber das der Alarm nur einmal bei 26 Grad ausgegeben wird, dann wenn die Temperatur höher wird nicht mehr der Alarm kommt, jedoch erst wieder wenn er darunter ist, und wieder steigt :slight_smile:

Lässt sich das im Script ändern?
Wenn ja bitte um Hilfe!!

Folgendes Script benutze ich:

<?

$integer	=  getvalue(58522 /*[Haustechnik\Temperatur Luftfeuchte\Schlafzimmer (Osten)\Temperatur]*/);
print $integer."
"; //kontrolle
$volume  =  getvalue(45027 /*[Multimedia\Media Player\Media Player\Lautstärke]*/);
$id_sound= 23681 /*[Multimedia\Media Player\Media Player]*/;     #ID des Mediaplayers (zb vom radio mitbenutzt)

if($integer >= 25) //100
    {
                $datei1         =  IPS_GetKernelDir()."/sound/alarm.wav";
                WAC_SetVolume($id_sound,$volume);
                WAC_PlayFile($id_sound, $datei1);
 WFC_SendNotification(28160 /*[WebFront Configurator]*/, 'ACHTUNG', 'Hohe Temperatur im Schlafzimmer', 'Warning', 0);
}
?>

if($integer >= 26 and $_IPS['OLDVALUE']< 26)

Diese Zeile ersetzen. Allerdings glaube ich eher das Deine Temperatur als Float und nicht als Integer kommt.

Dann sollte das so sein:


if((integer)$integer >= 26 and (integer)$_IPS['OLDVALUE']< 26)

Achtung: Scripttrigger durch Temperaturvariable!

Moin…

… beim Ereignis den Haken bei „Nachfolgende Ereignisse ausführen“ entfernen.

Siehe Link…

http://www.ip-symcon.de/service/dokumentation/konzepte/ereignisse/

Dadurch wird das Ereignis erst wieder nach unterschreiten und erneuten Überschreiten des Wertes einmalig ausgeführt!

Gruß,
Peter

Was doch IPS nicht alles kann.:smiley:

Hej,

bei der Option „Variablen Änderung“ lässt sich dies leider nicht verwirklichen?!

Danke, ja die Temp ist „Float“.
Was bedeutet „Scripttrigger durch Temperaturvariable“ genauer gesagt???

Jetzt bekomm ich diese Fehlermeldung :frowning:

27.3 PHP-Error-Notice: Undefined index: OLDVALUE Error in Script C:\IP-Symcon\scripts\41386.ips.php on Line 8
Notice: Undefined index: OLDVALUE in C:\IP-Symcon\scripts\41386.ips.php on line 8

Der Fehler kommt, weil Du das Script, nicht wie geschrieben, durch die Temperaturvariable getriggert (ausgeführt) hast.
In $_IPS[‚OLDVALUE‘] ist der vorhergehende Temperaturwert bei Scriptausführung gespeichert.

Ok, was müsst ich da jetzt umändern? Das gesamte Script?

Nein, nur die Zeile die ich gepostet habe. Und dann lässt Du das Script über ein Ereignis „bei Variablenänderung“ der Temperaturvariable ausführen.

Nun das hab ich gemacht!
-Die Zeile ausgetauscht in:

if((integer)$integer >= 26 and (integer)$_IPS['OLDVALUE']< 26) 

-Dann unter dem Script, das Ereignis „Bei Variablenänderung“ ausführen.

der Fehler ist aber immer noch da!

Was wenn ich bei Ereigniss „Grenzwert überschreiten“ definiere und dann dadurch das Script starte?

  1. Welche IPS Version hast Du?
  2. Wie hast Du das Script gestartet?
  3. Ist bei Scriptereignis auch die Variable 58522 eingetragen?

Was doch IPS nicht alles kann.

Wenn ich jetzt nicht ganz daneben liege kannst Du das Skript doch mit IPS-Bordmitteln :loveips: antriggern wenn ein Grenzwert überschritten wurde und nicht jedesmal bei einer Variablenänderung/-aktualisierung. Dann den Haken bei nachfolgenden Ereignissen raus und Du kannst Dir die Abfragelogik im Skript sparen.

Ja richtig, das hatte ja Peter auch schon geschrieben und auch richtig verlinkt. Ich wollte lediglich den Scriptweg beschreiben. Sowas ist mir persönlich immer lieber.

Ja so hab ich es jetzt gemacht! :slight_smile:
Funktioniert!

Danke!!