Skip to content

ReGaHSS: .State() -> Beim Aufruf von Programmen mit Verzögerung wird die Trigger-ID in den Conditions nicht angepasst #2978

@BadenPower

Description

@BadenPower

Describe the issue you are experiencing

Wird die Methode .State() mit 2. Parameter für die Verzögerungszeit aufgerufen, dann wird die ID und der Wert des Programm-Triggers in den betreffenden Conditions der einzenen Regeln des Programmes nicht auf 65535 gesetzt.
Gleiches gilt für den Aufruf des Programmes mittels .ProgramExecute().

Describe the behavior you expected

Erwartet würde, dass die ID und der Wert entprechend dem Aufruf mit der Methode .State() ohne 2. Parameter in den geprüften Conditions auf 65535 gesetzt wird.

Steps to reproduce the issue

  1. Programm mit dem Skriptbefehl ```c++
    dom.GetObject("PRG_Test")).State(1,1000);
2. Conditions mttels Skript prüfen: ```c++
WriteLine("Start");
WriteLine(dom.BuildLabel());

object lPrgObjList;
object lPrgObj;
integer lProgramsCount = 0;
string lPrgEnum;
object lRuleObjCurrent;
integer lConditionsCount = 0;
idarray lCondObjList;
object lCondObj;
string lCondEnum;
object lDestObj;
idarray lSingleCondObjList;
object lSingleCondObj;
integer lSingleConditionsCount = 0;
string lSingleCondEnum;
idarray lSingleDestObjList;
object lSingleDestObj;
integer lSingleDestinationsCount = 0;
string lSingleDestEnum;
integer lTriggerID;
string lTriggerObj;
string lTriggerValue;
var lState;
time lProgramLastExecuteTime;

lPrgObjList = dom.GetObject(ID_PROGRAMS);
if(lPrgObjList)
{
  lProgramsCount = lPrgObjList.Count();
  foreach(lPrgEnum,system.GenerateEnum(0,lProgramsCount - 1))
  {
    lPrgObj = lPrgObjList.GetAt(system.ToInt(lPrgEnum));
    if((lPrgObj) && (lPrgObj.Type() == OT_PROGRAM))
    {
      WriteLine("Programm: " # lPrgObj);
      lProgramLastExecuteTime = lPrgObj.ProgramLastExecuteTime();
      !WriteLine("letzte Ausführung: " # lProgramLastExecuteTime # " / " # lProgramLastExecuteTime.Day());
      WriteLine("  letzte Ausführung: " # lProgramLastExecuteTime);
      lState = lPrgObj.State();
      WriteLine("  State: " # lState # " / " #  lState.Type());

      lRuleObjCurrent = lPrgObj.Rule();
      while(lRuleObjCurrent)
      {
        lState = lRuleObjCurrent.State();
        WriteLine("    Regel: " # lRuleObjCurrent.ID() # " = " # lState # " / " #  lState.Type());
        lCondObjList = lRuleObjCurrent.RuleConditions();
        if(lCondObjList)
        {
          lConditionsCount = lCondObjList.Count();
          WriteLine("      lConditionsCount -> " # lConditionsCount);
          foreach(lCondEnum,system.GenerateEnum(0,lConditionsCount - 1))
          {
            lCondObj = lCondObjList.GetAt(system.ToInt(lCondEnum));
            if(lCondObj)
            {
              lState = lCondObj.State();
              WriteLine("      Condition: " # lCondObj.ID() # " = " # lState # " / " #  lState.Type());
              lTriggerID = lCondObj.DestinationObject();
              lTriggerValue = lCondObj.DestinationValue();
              WriteLine("        Trigger-ID: " # lTriggerID);
              if(lTriggerID <> ID_ERROR)
              {
                lTriggerObj = dom.GetObject(lTriggerID);
                if(lTriggerObj)
                {
                  WriteLine("        -> Trigger-Objekt: " # lTriggerObj.TypeName() # " / " # lTriggerObj.Name());
                }
                else
                {
                  WriteLine("        -> Objekt mit der Trigger-ID " # lTriggerID # " nicht gefunden");
                }
              }
              else
              {
                WriteLine("        -> kein Trigger-Objekt hinterlegt");
              }
              WriteLine("        Trigger-Value: " # lTriggerValue);
              WriteLine("        Trigger-Value-Type: " # lTriggerValue.Type());
              WriteLine("        Trigger-Value-VarType: " # lTriggerValue.VarType());
            }
          }
        }
        else
        {
          WriteLine("-> keine Condition-Liste");
        }
        lRuleObjCurrent = lRuleObjCurrent.RuleSubRule();
      }
    }
    WriteLine("--------------------");
  }
}
WriteLine("Ende");

What is the version this bug report is based on?

CCU3 mit ReGaHSS-Version R1.00.0388.0235

Which base platform are you running?

rpi3 (RaspberryPi3, ARM64/aarch64)

Which HomeMatic/homematicIP radio module are you using?

n/a

Anything in the logs that might be useful for us?

bestehend seit:
ab ReGaHss-Version R1.00.0388.0223

Additional information

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    Status

    To Do

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions