Handbedienung LCN-Relais aus dem WebFront erkennen

Moin Moin,
ich stelle mich irgendwie zu doof an …

Ich habe ein LCN Relais, das über einen LCN-Regler geschaltet wird. Der aktuelle Zustand wird wunderbar im Symcon angezeigt.
Wenn ich dieses Relais jetzt über das WebFront schalte (was ja geht), kommt nach max. 2 Minuten der Regler und stellt es wieder entsprechend (eben meist wieder „aus“).
Ich müsste also eine Schaltung über das WebFront erkennen (was ja prinzipiell auch geht) und damit dann den Regler sperren (Kommando dafür gibt es ja auch).
Das will mir aber nicht gelingen - ein Aktionsskript verhindert dann u.a. auch eine Anzeige einer Änderung vom LCN(Regler).

Wenn da mal jemand einen Tipp für mich hat … :loveips:

Grüße, Uwe

Kenne zwar jetzt nicht die LCN Eigenheiten, aber ein Aktions-Skript hat keinen Einfluss auf den Rückkanal von Hardware zu Symcon. Somit sollte die Anzeige schon funktionieren.

Michael

Moin Michael,
mit dem Aktionsskript schalte ich die Standardfunktion ab - damit kann ich das Relais vom WebFront nicht mehr schalten - und die Variable ist dann ‚read only‘, so dass auch ein LCN_SwitchRelay im Skript nicht mehr will.
Mit einem beliebigen Skript (was die Änderung des Relais als Ereignis hat) kann ich aber den Sender nicht erkennen.

Nur für’s Protokoll - ich teste das im Vorfürkoffer - der hat Beta (also 6.0).

Grüße, Uwe

Ein LCN_SwitchRelay kannst du damit eigentlich nicht abschalten. Nutzt du LCN_SwitchRelay vielleicht weiterhin auf die Variable (wie mittlerweile von RequestAction gewöhnt) anstelle der Instanz (wie die früheren Jahre notwendig)?

Bitte zeigt einmal dein Aktions-Skript, ich glaube @tobiasr vermutet das gleiche.
Du darfst natürlich noch immer nicht SetValue benutzen, sondern musst in deinem Aktions-Skript die LCN Befehle verwenden, dann kannst du die Variable auch wieder aus dem WebFront schalten.
Zusätzlich muss dann die Abfrage in dein Aktions-Skript, ob der Sender das WebFront, VoiceControl oder Variable (Ereignis) war.
Entsprechend kannst du dann bei Sender WebFront zusätzlich das LCN Kommando für die Sperre des Regler senden.
Michael

Der Unterschied zwischen LCN_xx und RequestAction war mir schon klar - versuche ich das mit RequestAction kann ich das Symcon rebooten …
Hier mal das gerade aktuelle Skript - den Fehler (Parse error: syntax error, unexpected end of file in /var/lib/symcon/scripts/45698.ips.php on line 39) sehe ich aber auch nicht …

<?php
//Documentation: https://www.symcon.de/en/service/documentation/concepts/scripts/action-scripts/
#SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);

$target = 16715;
$statusID = 22146;
$value  = GetValue(22146);
$relayID = 58390;

if ($_IPS['SENDER']=="Execute")
{     exit;
}


if (($_IPS['SENDER']=="StatusEvent")and($value==1))
{##RequestAction($statusID, true);
    LCN_SwitchRelay(relayID,true); 
     #exit;
}

if (($_IPS['SENDER']=="StatusEvent")and($value==0))
{##RequestAction($statusID, false);
    LCN_SwitchRelay(relayID,false); 
     #exit;

if (($_IPS['SENDER']=="WebFront")and($value==1))
{##RequestAction($statusID, true);
    LCN_SwitchRelay(relayID,true); 
    LCN_LockTargetValue($target,2);
 #exit;
}
if (($_IPS['SENDER']=="WebFront")and($value==0))
{##RequestAction($statusID, false);
    LCN_SwitchRelay(relayID,false); 
    LCN_ReleaseTargetValue($target,2);
 #exit;
}


Ich versuche das derweil noch mal mit Brille putzen :sunglasses:
LG, Uwe

Ist leider falsch bei Sender WebFront. Das ist doch der alte Wert.
Der neue Wert steht immer in $_IPS[‚VALUE‘].
Und hier fehlt bei relayID immer das $.

Sicher das Sender StatusEvent benötigt wird?

Michael

Moin Michael,
brauche ich den StatusEvent nicht falls Änderungen vom LCN kommen (da tut ja der Regler, wenn er nicht gesperrt ist)?

Das fehlende $ habe ich nicht gesehen, aber auch mit bleibt der Syntax Error wenn ich den StatusEvent drin lasse - irgendwo habe ich da dann wohl noch einen Fehler eingebaut (nein, nicht sicher).
Ohne den StatusEvent läuft das Skript und tut vom Prinzip genau das was ich brauche …

Danke und Grüße, Uwe

Änderung von der Hardware in die Variablen von Symcon laufen nie über das Aktions-Skript (dann hätte Symcon ja eine eigene Endlosschleife ab Werk dabei).
Wenn du einen Ereignis meinst, dann ist der Sender entweder Variable (Ereignis triggert von Variablenänderung/Aktualisierung) oder Timerevent (zyklisches Ereignis).
Der Sender StatusEvent kommt nur bei Skripten zum Einsatz, welche im Event-Control eingetragen sind und auf Veränderungen von IOs/Splitter reagieren.
Michael

Versuch es Mal so:

<?php
$target = 16715;
$value  = $_IPS['VALUE'];
$relayID = 58390;

if ($_IPS['SENDER']=="Execute")
{     exit;
}

if ($_IPS['SENDER']=="WebFront")
{
    LCN_SwitchRelay($relayID,$value); 
    if ($value)
    {
        LCN_LockTargetValue($target,2);
    } else {
        LCN_ReleaseTargetValue($target,2)
    }
}

Michael

Jetzt ist meine Scheuklappe abgefallen, die Brille geputzt, der Sonntag gerettet … :loveips:

Die Lösung hat sich etwas minmiert:

`<?php

$targetID = 16715;
$relayID = 58390;

if (($_IPS[‚SENDER‘]==„WebFront“)and($_IPS[‚VALUE‘]==1))
{ LCN_SwitchRelay($relayID,true);
LCN_LockTargetValue($targetID,2);
}
if (($_IPS[‚SENDER‘]==„WebFront“)and($_IPS[‚VALUE‘]==0))
{ LCN_SwitchRelay($relayID,false);
LCN_ReleaseTargetValue($targetID,2);
}
`

Läuft …
Uwe