Webfront ID auslesen

Hallo IPS Gemeinde!

Benötige ein wenig Hilfe.

Ich habe mehrere WF und benutze in ein paar scripte die WFC_SendNotification funktion.
Wie finde ich die WF ID von der aus das Script gestartet wird.

In der Hilfe unter $IPS_SENDER/Webfront gibt es die Variable $IPS_INSTANCE.
Wenn ich z.b. echo $IPS_REMOTEADDR aufrufe kommt die richtige IP zurück.
Bei $IPS_INSTANCE bekomme ich die fehlermeldung Variable undefiniert.

Wie komme ich nun zur richtigen WF ID???

Danke.
lg
Chris

Meinst du diese?

$IPS_CONFIGURATOR

Habe es mal in der Doku nachgetragen.

paresy

Danke für die schnelle Hilfe.
$IPS_CONFIGURATOR das ist genau das was ich gesucht habe.

lg
Chris

hallo zusammen,

habe recht ausfuehrlich analysiert - $IPS_CONFIGURATOR (bzw. $_IPS[‚CONFIGURATOR‘]) laesst sich nur ermitteln, falls $_IPS[‘SENDER’] = WebFront - d.h. das $IPS_CONFIGURATOR lesende skript wird manuell uebers webfront aufgerufen (soweit i.o.) - sobald dieses skript per sonstwas (skript, event, timer etc) aktiviert wird - werden meine variablen (temp. ablegen dieser systemvariablen) auf 0 gesetzt!

kann man das irgendwie realisieren? z.b. automatisches absetzen eines skript uebers webfront oder $_IPS[‘SENDER’] auf webfront biegen??

gruss stephan / regensburg

Erkläre bitte noch einmal. Ich verstehe nicht was du machen willst, oder das was du machst ergibt keinen Sinn :wink:

paresy

also - fuer WFC_SendNotifications brauche ich fuer div. webfront konfigurationen den entspr. $IPS_CONFIGURATOR.

wollte mir in einer art autoexec nach webfront start basteln, die u.a. sowas wie eine sesson-constante fuer eben $IPS_CONFIGURATOR bereitstellet.

geht halt nur mit einem manuellen skriptaufruf im webfront (klar - hat ja als $_IPS[‘SENDER’] = WebFront und kann entspr. liefern) - sonst gibts halt immer nur die 0 wenn dieses skript per (skript, event, timer etc) losgetreten wird.

gruss stephan

Wenn ich das richtig verstehe willst Du das zu letzt gestartete Webfront ermitteln ohne das dafür ein Script aus demselben gestartet werden soll?

Die ID des Konfigurators ändert sich doch nicht, oder? Dann trage die ID fest ein :slight_smile:

paresy

das ist ja das eigentliche problem - die id des konfigurators ist doch abhaengig vom aufrufenden webfront - und entspr. skripte koennen somit doch nicht mit fixer $IPS_CONFIGURATOR codiert werden.
jedoch laesst diese sich auch nicht webfront-spezifisch ermitteln - zuminderst kann ich das nicht und wenn, dann doch nicht nur ueber einen haendisch ausgefuehrten skriptaufruf??!

1 .gibt es keine moeglichkeit ein skript ueber das webfront starten zu lassen mit einer $_IPS[‘SENDER’] = WebFront?
2. oder - warum liefert $IPS_CONFIGURATOR nicht immer brav den wert des aktuellen webfronts ab - unabhaengig von der skript aktivierung?

gruss stephan

Ich glaube du versteht da irgendwas falsch. Die ID wird bei direkter Skriptausführung korrekt übermittelt.

Wenn du aber was schaltest, dann verändert sich eine Variable. Und wenn du auf die Änderung davon reagierst, ist der direkt Sender die Variable. Und der indirekte Sender das WF wird nicht gesendet. Das ist konzeptionell so gedacht. Und was auch immer du vor hast, mein Gefühl sagt mir - es geht nicht.

paresy

Stephan Du drückst Dich auch ein wenig kompliziert aus.

1 .gibt es keine moeglichkeit ein skript ueber das webfront starten zu lassen mit einer $_IPS[‘SENDER’] = WebFront?
2. oder - warum liefert $IPS_CONFIGURATOR nicht immer brav den wert des aktuellen webfronts ab - unabhaengig von der skript aktivierung?

  1. Nein, mir fällt eine Umwegmöglichkeit ein. Du mußt halt beim Aufruf des Webfronts eine Kennung in eine Datei schreiben und diese dann auswerten.
  2. Es gibt, wie paresy schon ausgeführt hat, Systemvars die nur beim Aufruf über einen bestimmten Sender existieren und bei $IPS_CONFIGURATOR ist das halt WebFront. Das ist auch logisch so.

danke erstmal fuer eure unterstuetzung!

ich versuchs mal ein wenig klarer zu formulieren:

webcam sendet eine HTTP notification ->

und ruft dabei (liegt im ordner \ip-symcon)

<?php

$soap = new SoapClient(„http://127.0.0.1:3773/wsdl/IIPSScriptEngine“);
$result = $soap->ExecuteScript(12345 /[tuwas]/, true);

?>

das skript 12345 soll abhaengig vom aktuell laufenden webfront (heisst doch -> unterschiedliche werte von $IPS_CONFIGURATOR) zu einer WFC_SendNotification in der lage zu sein.

deshalb verstehe ich zwar die zugrunde liegende logik - nur nicht dessen sinnhaftigkeit -> das $IPS_CONFIGURATOR wird zum einen fuer diverses benoetigt - nur die ermittlung geht nur sehr eingeschraenkt.

in ein file ablegen ist sicherlich ok - nur halt umstaendlich, da der wert ja zum greifen nah waere.

gruss stephan

versuchs doch mal mit „was willst Du erreichen?“ Du schreibst zwar, wie du es glaubst, erreichen zu können, aber was am Ende dabei rauskommen soll… ich habs immer noch nicht kapiert :wink:

Sende deine Kamera-Notification doch an ALLE Konfiguratoren. Im Zweifelsfall sind ja auch mehrere offen.

paresy

ok ok - du hast ja recht!

meine testkonfiguration:

  1. habe mein webfront so organisiert, dass zu beginn die auswahl von 2 konfigurationen angeboten werden.
    somit http://192.168.178.227/index.php?configuratorID=12345
    oder http://192.168.178.227/index.php?configuratorID=54321

  2. eine ip-cam reagiert auf definiertes event und soll immer (egal was bei 1. bewaehlt wurde) schoene WFC_SendNotification 's absetzen.

mein vorhaben (so sollte es laufen)

  1. moechte das skript (welches WFC_SendNotification organisiert) jedoch nicht fuer jede webfront- konfiguration ein separates (mit der entspr. 12345 bzw 54321) hardcodieren vorhalten - das sollte doch dynamisch eben ueber $IPS_CONFIGURATOR abzuwickeln sein.
    daher brauche ich - (auch perspektivisch fuer z.b. kategorie-wechsel/ -ein/ausblenden im webfront) dieses ding!

lieg ich da so daneben???

gruss stephan

Du liegst völlig daneben :wink:

Stell dir vor, du hast 100 Endgeräte. Stell dir vor diese Endgeräte haben jeweils eins von den WebFronts offen. Du weist aber nicht welches WebFront auf welchen Geräten offen sind. Praktisch sind sind jedoch beide WebFronts auf beliebig vielen Geräten offen. Woher soll ich jetzt das System wissen, welche WF ID jetzt die ist, die du gerne haben willst? Welche willst du denn überhaupt haben, wenn beide WebFronts offen sind?

Wenn du jetzt sagst, dass es egal ist, weil du eh nur 1 Endgerät hast, dann sende es an beide gleichzeitig. Das WebFront, das keine Endgeräte hat, führt die Befehle dann eh nicht weiter aus.

paresy

nochmals herzlichen dank fuer die muehe euch durch mein anscheinend nicht ips konformes gedankengut zu arbeiten.

muss mir zum letzten statement von paresy erst mal meine testumgebung anpassen - event. kommt dann die erleuchtung - nur so allmaehlich daemmerts etwas.

nur ganz beilaeufig eine trivialst standardfrage:

wie schaut eine ganz normale WFC_SendNotification anweisung in einem skript aus??

etwas in der art??

<?
.
.
.
$WebFrontConfig = $IPS_CONFIGURATOR;

WFC_SendNotification($WebFrontConfig , 'header', 'netter text', 3); 

.
.
.
?>

und wie wird sowas aufgerufen??

stephan

Hi Stephan,

grundsätzlich haben wir hier eine mittlerweile gute Doku: WFC_SendNotifications — IP-Symcon :: Automatisierungssoftware

Und weiterhin wird hier im Forum auf Groß-/Kleinschreibung wert gelegt.
Und Code bitte in PHP-Tags einschließen, das ließt sich wesentlich besser und animiert eher zum Support :wink:

Da has’de war :slight_smile:
Das Tippen auf Pads und Smartphones scheint das überflüssig erscheinen zu lassen :rolleyes:
…aber…

…ließt sich wesentlich besser und animiert eher zum Support :wink:

Darüber sollte sich jeder im Klaren sein :wink: