Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
BadenPower opened this issue Jan 9, 2025 · 0 comments
Labels
🐛 bug-report Something isn't working

Comments

@BadenPower
Copy link

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

@BadenPower BadenPower added the 🐛 bug-report Something isn't working label Jan 9, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🐛 bug-report Something isn't working
Projects
None yet
Development

No branches or pull requests

1 participant