Installation wie hier: viewtopic.php?f=26&t=75564
aber mit der neueren Version:
Code: Alles auswählen
!Schaltaktorstatus/Variablenstatus weiterleiten
!Copyleft M.Henke
!V 1.1
!Anpassungen am Script sind nicht nötig!
!- V1.0
! Akt/Last gleich, Ausgabe unterdrückt
!- V1.1
! Alle DAtenpunkte können weitergeleitet werden
!this 17500 src 17478 - für mich zum Testen
string ScriptName = "SA_VA";
boolean debug = false;
string sResult;
integer srcId = ("$src$").ToInteger();
if (srcId > 0) {
object oSrc = dom.GetObject(srcId);
if (!oSrc) { quit; };
}
else { quit; }
if (debug) {
!oSrc.Name()
sResult = "run val: "# "$val$" # " this: " # "$this$" # " " # oSrc.FullName() # " " # oSrc.TypeName() # "-" # oSrc.ValueName() # "-" # oSrc.ID();
}
object oPrg = dom.GetObject("$this$");
if (!oPrg) { quit; };
!WriteLine(oPrg.Rule().RuleConditions());
boolean found = false;
string s;
foreach(s, oPrg.Rule().RuleConditions().EnumIDs()) {
object o = dom.GetObject(s);
if (o.CndSingleCount() >= 2) {
!string cc = o.CndSingleConditions().EnumIDs();
object quelleObj = o.CndSingleConditions().GetAt(0);
var dp1 = quelleObj.LeftVal();
if (srcId == dp1) { found = true; break; }
}
}
if (!found) { quit; }
object oDP1 = dom.GetObject(dp1);
if (!oDP1) { quit; }
integer run = 1;
var setWert = oDP1.Value();
var lastWert = oDP1.LastValue();
sResult = sResult # " " # lastWert;
boolean isState = (oDP1.ValueSubType() == istBool);
if ( false ){
if ( oDP1.Type() != OT_VARDP ){
isState = (oDP1.HssType() == "STATE" );
}else
{
WriteLine ( oDP1.ValueSubType() # " " # istBool );
}
}
if ( (!quelleObj.RightVal1()) && isState ) {
setWert = (!setWert);
! WriteLine( "a " # setWert # " " # oDP1.HssType());
}
if ( setWert != lastWert ){
sResult = sResult # "->" # setWert;
if ( setWert.ToInteger() == lastWert.ToInteger() ){
sResult = sResult # "!!!";
}
}
else
{
sResult = sResult # "-G";
}
sResult = sResult # " >> ";
while (run < o.CndSingleCount().ToInteger()) {
!WriteLine(run);
object zielObj = o.CndSingleConditions().GetAt(run);
var dp2 = zielObj.LeftVal();
if (dp2) {
var ist = dom.GetObject(dp2).Value();
var setZiel = setWert;
if ( (!zielObj.RightVal1()) && isState) {
setZiel = (!setZiel);
}
sResult = sResult # "/" # ist;
if ( setZiel != ist )
{
dom.GetObject(dp2).State(setZiel);
sResult = sResult # "->" # setZiel;
}
else
{
sResult = sResult # "-G";
}
}
run = run + 1;
}
if (sResult && debug) {
WriteLine(sResult);
string lg = 'logger -t SDV-H-$ScriptName$ -p user.debug "$sResult$"';
lg = lg.Replace("$sResult$", sResult).Replace("$ScriptName$", ScriptName);
system.Exec(lg);
}