Location Control: Offset per Webfront ändern

Hallo Leute,

kann man ein Offset vom Location Control per Webfront ändern?

Nicht von Haus aus. Du kannst aber eine eigene Variable + Aktionsskript nehmen, die dies per IPS_GetProperty/IPS_SetProperty+IPS_ApplyChanges erledigt.

paresy

Danke!

Das wird mir weiterhelfen.

Hallo,

ich stehe grade leider etwas auf dem Schlauch :banghead: :confused: Kann mir jemand dazu ein Vorlag oder ein Beispiel geben?

Ich bedanke mich schon mal für eure Hilfe.

Kannst du deine Frage konkretisieren? Wobei brauchst du Hilfe?

Ich bräuchte ein Vorlage für das Aktion Script für den Befehl den parsey beschrieben hat.

z.B. so:

define('LOCATION_CONTROL_ID', 57046); //anzupassen

//Offsets auslesen
$offsets = json_decode(IPS_GetProperty(LOCATION_CONTROL_ID, 'Offsets'), true);

//neues Offset setzen
$offsets[0]['Offset'] = $_IPS['VALUE']; //der Index ist anzupassen, wenn mehr als ein Offset vorhanden ist

//Property setzen
IPS_SetProperty(LOCATION_CONTROL_ID, 'Offsets', json_encode($offsets));
IPS_ApplyChanges(LOCATION_CONTROL_ID); 

Burkhard

1 „Gefällt mir“

Vielen Dank für deine Hilfe :+1::ok_hand:

Hab das jetzt auch mal getestet.Habe eine Variable erstellt (Integer) und darunter das Aktionsskript dann bekomme ich immer eine Fehlermeldung (Bild)


Wenn ich in Zeile 12 $_IPS[‚VALUE‘] durch einen festen Wert ersetze funktioniert das Skript

Der Fehler kommt weil du das Script über die Konsole startest.
Der Wert (VALUE) wird nur bei der Bedienung der Variable aus dem Frontend gesetzt.
Also genau das, was du wolltest :wink:
Michael

Das funktioniert aber nicht das script wird aus geführt aber ich bekomme im Web Front einen Fehler eingeblendet(Bild).


Wenn ich das richtig verstehe wird das falsche Format übergeben meine Variable ist aber ein integer.

Hast du IRENDWAS an dem Script geändert? Leider sieht man die entsprechende Zeile ja nicht im Hintergrund.

eigentlich nicht

Doch hast du. Die Zeilennummern passten schon nicht mehr.
Mach mal aus

$offsets[0]['Offset'] = $_IPS['VALUE'];
$offsets[0]['Offset'] = (int)$_IPS['VALUE'];

Deine Variable ZZ schaut nach String aus. Es hilft anderen ungemein, wenn man auch zusätzlich einen Screenshot aus dem Objektbaum hat.
Michael

Ja das mit zz komt aus meinen tests die Meldung war aber immer die gleiche sorry
Est tut mit der änderung das ist die Hauptsache ich hatte aber das Skript aus diesem Beitrag weiter oben einfach kopiert da steht nicht (int)vor $_IPS hat sich da mal was geändert?
Danke noch mal.

In dem Script wir korrekterweise eine IP-Symcon Integer Variable verwendet. Da man ja sowieso nur Zahlen eingeben kann. Du zweckentfremdest hier unsinnigerweise eine String Variable.

Ja, PHP will jetzt immer den korrekten Variablen Typ haben. Was hier kein Problem ist, sofern du eine Integer Variable in Symcon angelegt hast :wink:
Michael