Hilfe benötigt bei Auswertung mit $_IPS['SENDER'];

Guten Morgen,
ich bin schon wieder am programmieren und glaub ich gerade richtrig auf dem Schlauch.

Ich schreibe gerade ein Skript, mit dem ich den Button eines Danfoss-Thermostats auswerten möchte bzw. auswerten möchte, wenn dieser gedrückt wird.

Hierzu frage ich per $_IPS[‚SENDER‘] die Auslösevariable ab, also die ID die den Button auswertet.

Mein Skript hierzu:

<?

#Auswertung Danfoss Wandthermostat Button


$sender = $_IPS['SENDER'];

if ($sender == 15277)
	{
		   SetValueInteger(46979,2);
		   WFC_SendPopup(25206, "Test", "Eine nette <br> Meldung");
	}
?>

Es funktioniert aber leider noch nicht. Habe mich auch schon durch diverse andere Threads gelesen, aber nichts gefunden. Wahrscheinlich werde ich mich gleich selbst ärgern, weil es einfach nur ein simpler Fehler ist.

Zum Debuggen kannst Du $sender mal auf der Konsole ausgeben, dann siehst Du, was beim Script ankommt.

bin mir nicht sicher, aber müsste es nicht $_IPS[‚VARIABLE‘] sein?

https://www.symcon.de/service/dokumentation/konzepte/skripte/systemvariablen/#Variable

Gruß Stephan

@DerStandart: Wenn ich die $sender per echo ausgeben lasse erhalte ich nur „Execute“ als Info.

@da8ter:
Guter Hinweis, probiere ich aus.

Wie folgt geändert:

<?

#Auswertung Danfoss Wandthermostat Button


$sender = $_IPS['VARIABLE'];

if ($sender == 15277)
	{
		   SetValueInteger(46979,2);
		   WFC_SendPopup(25206, "Test", "Eine nette <br> Meldung");
	}
	
echo $sender;
?>

Erhalte die Fehlermeldung:
Notice: Undefined index: VARIABLE in /var/lib/symcon/scripts/57070.ips.php on line 6

Richtig. Daran ist zu erkennen, das $_IPS[‚SENDER‘] evtl. nicht der richtige Weg für Dein Vorhaben ist, sondern $_IPS[‚VARIABLE‘]. Wenn Du jetzt noch den Link aufmerksam liest, den d8ter gepostet hast, dann steht dort:

Wenn das Skript durch ein Variablenereignis ("ausgelöstes Ereignis") ausgeführt wurde.

Heißt also, dass $_IPS[‚VARIABLE‘] nur zur Verfügung steht, wenn das Script ausgelöst wurde.

Sind das nicht Dinge, die man als Integrator wissen sollte?

Grüße,
Christoph

Ich hätte jetzt, auch wenn das Skript nicht durch ein Variablenereignis („ausgelöstes Ereignis“) ausgeführt wurde, erwartet, das ich keine Fehlermeldung erhalte sondern das einfach nichts passiert.

Wie auch beim ersten Versuch mit „$sender = $_IPS[‚SENDER‘];“ hab ich das Skript auch versucht auszuführen durch die Auslösung per Variable und nicht im Skript direkt, wie von d8ter beschrieben bzw. verlinkt.
Hierzu habe ich in meinem Objektbaum einen „Test-Button“ zu Verfügung, mit dessen Veränderung ich das Skript auslöse.

Auch mit $_IPS[‚VARIABLE‘] ausgelöst durch ein Ereigniss, hat es leider noch nicht funktioniert.
(Um zu sehen ob es funktioniert, lasse ich den Status einer Variablen wechseln und auch ein PopUp über das Webfrontend aufgehen.)

Aktueller Status:
Das Skript wird per Button getriggert, aber die Aktionen werden nicht ausgeführt.

Mit diesen beiden Funktionien habe ich noch nicht soviel gearbeitet und bin beim lesen der Dokumentation gleich bei $_IPS[‚SENDER‘] stehen geblieben weil dort Stand, Beschreibung = Auslöser des Skriptes. Daher habe ich mich daran erst einmal versucht.

Klar, aber auch ich als Integrator habe mal fragen und übege mir, ob ich sie stelle oder eher nicht aufgrund dessen, das ich Integrator bin. Ab und an hat man einfach mal ein Brett vor dem Kopf. Dann poste ich einen Beitrag auch mal, wie im eingangspost erwähnt, wenn ich mich wahrscheinlich selbst ägern werde da es einfach simple war. Im Gegenzug helfe ich aber auch anderen Mitgliedern der Community.

Fehler bzw. Lösung gefunden:
Es bestand ein Problem durch die Überschneidung mit einem anderen Skript.

Danke euch beiden für die Hilfe und auch die konsturktive Kritik.

Bei solchen Problemen helfe ich mir immer dabei, dass ich mir möglichst viel ausgeben lasse. So stellt man schnell fest, was in den Variablen wirklich enthalten ist :wink:

Grüße,
Christoph