IPS_Sender Problem

Hallo Gemeinde,

ich steh gerade völlig auf dem Schlauch !

Ich lasse ein Script über 2 Ereignisse von 2 Variablen antriggern und würde gerne im Script unterscheiden könne, von welcher
Variablen getriggert wurde. Klingt einfach, ist es bestimmt auch, aber nicht für mich :slight_smile:

Hab jetzt 2 Stunden hinter mir, eventuell könnt ihr mich ja ein wenig „stupsen“ :slight_smile:

Das hier funktioniert nicht:

$_IPS['VARIABLE'] = 16664 /*[Entwicklungsbereich\MQTT Broker\MQTT Topic Root\Heizung grHalle ID1\Temperatur-Oben\Temperatur-Halle1-Oben]*/;
 if ($_IPS['SENDER'] == $_IPS['VARIABLE']){
 SetValueInteger(53305 /*[Entwicklungsbereich\MQTT Broker\Nodes\Heizung ID 1\Online Check\Online Check Temperatursensoren\Temperatursensoren\Counter Temperatur Oben]*/,0);
 }


$_IPS['VARIABLE'] = 55724 /*[Entwicklungsbereich\MQTT Broker\MQTT Topic Root\Heizung grHalle ID1\Temperatur-Unten\Temperatur-Halle1-Unten]*/;
 if ($_IPS['SENDER'] == $_IPS['VARIABLE']){
 SetValueInteger(49685 /*[Entwicklungsbereich\MQTT Broker\Nodes\Heizung ID 1\Online Check\Online Check Temperatursensoren\Temperatursensoren\Counter Temperatur Unten]*/,0);
 }

Puh…was en tach :slight_smile:
Vielen Dank für eure Hilfe
Sascha

Ich verstehe dein Script nicht so ganz, nur zum Verständnis, würde folgender Code das selbe bei dir erreichen?


 if ($_IPS['SENDER'] == 16664 ){ 
 SetValueInteger(53305 /*[Entwicklungsbereich\MQTT Broker\Nodes\Heizung ID 1\Online Check\Online Check Temperatursensoren\Temperatursensoren\Counter Temperatur Oben]*/,0); 
 } 

 if ($_IPS['SENDER'] == 55724){ 
 SetValueInteger(49685 /*[Entwicklungsbereich\MQTT Broker\Nodes\Heizung ID 1\Online Check\Online Check Temperatursensoren\Temperatursensoren\Counter Temperatur Unten]*/,0); 
 }  

Muss du $_IPS[‚VARIABLE‘] die ID’s zuordnen?

Gruß
hardlog

Danke für deine Antwort,

diese Version hatte ich auch schon ausprobiert, die hat auch nicht funktioniert.

Generell würde ich gerne folgendes machen:

EIN Script, ZWEI Ereignisse (auf variablenaktualisierung) von ZWEI Variablen (Temperaturfühler) antriggern (Dieser Teil steht :))

Jetzt hätte ich ganz grob gerne sowas:

Wenn Variable/Ereignis A ist Sender
„mache das“

Wenn Variable/Ereignis B ist Sender
„Mache jenes“

Wobei ich mir nicht sicher bin, ob das Wort „Variable“ hier richtig gewählt ist, da das Script ja über ein Ereignis, aber von einer Variablen getriggert, ausgelöst wird.

UI, jetzt muss mir noch jemand erklären, was ich gerade gemeint habe :frowning:

LG
Sascha

Nochmal zum verständis bitte :D:D

Du hast ein Script, unterhalb sind Ereignisse die eine Variable auf veränderung, aktualisierung, bestimmte Werte oä prüfen ?
Sonst mach mal ein Bild vom Objektbaum an der Stelle.

Falls ja, sollte das so funktionieren wie Sascha es gezeigt hat.
Dein Script versteh ich überhaupt nicht. Du weist jeweils vor der if-Anweisung der Systemvariable selber einen Wert zu, das sieht absolut falsch aus.

Gruß
Julian

Edit: ich hab das ehrlich gesagt noch nicht so gemacht, aber laut Doku müsste es so gehen, mit $_IPS[‚VARIABLE‘] wie oben geschrieben.
Ich prüfe in Scripten wo ich auf verschiedene Sender reagiere meistens auf das Event.

Hier die stelle in der Doku dazu: Systemvariablen — IP-Symcon :: Automatisierungssoftware

Event ist also das Ereignis selbst, Variable die dazugehörende Variable. Solange man pro ereignis nur ganz Klassich auf eine Variable prüft und nicht noch mehr bedingungen hat dürfte es im Ergbnis egal sein welchen weg man wählt ? Ich kenn mich mit diesen neumodischen ereignissen nicht aus :smiley:


Also ich machs so:

Event1 = ID des ereignisses unterhalb vom Script
Event2 = andere auslöse ID



Event1 = ID des ereignisses unterhalb vom Script
Event2 = andere auslöse ID


if(@$_IPS['EVENT'] == $Event1)

		Hier steht das, was passieren soll bei Event1;

if(@$_IPS['EVENT'] == $IDEventkey3kurz)

		Hier steht der andere Inhalt;

Ja :slight_smile: EIN Script, unterhalb 2 Ereignisse, die 2 variablen auf aktualisierung prüfen

Richtig, mit unter ein Grund, warum ich ins Forum geschrieben habe :slight_smile:

Ich glaube mich zu erinnern, dass das mit „case“ gehen müsste.
ich denke, ich habe das schon mal verwendet, ich suche das mal eben.

Alles was ich versuche, ist im Script unterscheiden zu können, welche Variable ausgelöst hat.

Liebe Grüße
Sascha

Was genau funktioniert denn an Sachas beispiel nicht ?

mit Case kannst du auch die Fallunterscheidung machen aber bei nur 2 verschiedenen ereignissen geht das mit „if“ genauso „gut“.
Dein Problem ist denke ich noch woanders.

Da immer noch keine Bilder: ich habs immer noch nicht ganz verstanden, sorry :smiley:

Also die ZWEI ereignisse unterhalb deinem Script prüfen jeweils ob sich EINE variable aktualisiert hat ?
Für mein Verständnis: wäre es also egal ob du prüfst ob die Variable ausgelost hat oder das zugehörige Ereignis ?

Ich hatte mein Post oben mittlerweile Editiert gehabt während du geantwortet hast.

Das wars :

if($_IPS['VARIABLE'] == 55724){
//Mach was, wenn Variable A getriggert hat
}

if($_IPS['VARIABLE'] == 19886){
//Mach was, wenn Variable B getriggert hat
}[

Puh,was ne Geburt.
Sorry wegen der Verwirrung

LG
Sascha

Zuerst solltest du verstehen, das ICH Sascha bin :slight_smile:

Sonst herrscht hier noch mehr Verwirrung :slight_smile:

oh, eben habe ich deinen editierten Beitrag gelesen !

Vielen Dank für das Beispiel.

Mit „Event“ gibtst du quasi die ID vom Ereignis an, richtig ?

Ich habe mit „Variable“ die ID der Variable ausgewählt.

Das heißt in meinem Fall, hätte ich auch „Event“ und die passende ID von meinen Ereignissen wählen können, richtig ?

Liebe Grüße und danke für die Hilfe :slight_smile:
Sascha

Sorry wegen der Namen, da habe ich was verwechselt :smiley: ersetze in meinen vorherigen Posts Sacha mit Hardlog.

Genau, Event ist das Ereignis selber, bzw. dessen ID, und Variable ist die im Ereignis eingestellte Variable. Es müsste beides gehen, ich kann mir gerade keinen Fall vorstellen, wo das eine mehr sinn als das andere macht, bzw. wo man unterschiedliche Ergebnisse erreichen kann und möchte, wirds aber sicher geben.

Schön dass es jetzt funktioniert !