Learn Config Control Rules - aliconnect/aliconnect.sdk GitHub Wiki

YAML Rule Configuration

YAML Rule Configuration


State model

state = state || init;
oldstate = state;
switch state {
  case '1':
    if () state=2;
    break;
  case '2':
    break;
  case '3':
    break;
  case '4':
    break;
  case '5':
    break;
}

// if state changed then init uitvoeren
if (oldstate!=state) {

}

Verkeerslichten:
  states:
    init:
      entry:
        - Verkeerslichten.bestuurbaar = ja
        - Verkeerslichten.ingestelde_stand = gedoofd
        - Verkeerslichten.Verkeerslicht[].SetStand(rood)
      exit: ~
      gedoofd:
        - Verkeerslichten.Verkeerslicht[].stand = gedoofd;
    gedoofd:
      entry:
        - Verkeerslichten.Verkeerslicht[].SetStand(gedoofd)
    j32_aan:
      entry:
        - Verkeerslichten.J32[].SetStand(aan)
        - WAIT Verkeerslichten.tijd_j32
      next:

    geel_knipperen:
      IF state = init AND Verkeerslichten.Verkeerslicht[].stand = geel_knipperen
      OR state = j32_aan AND Verkeerslichten.J32[].stand = aan
      AND Verkeerslichten.timerPassed

      init:
        Verkeerslichten.Verkeerslicht[].stand = geel_knipperen
      j32_aan:
        Verkeerslichten.J32[].stand = aan
        AND Verkeerslichten.timerPassed
      groen:
        Verkeerslichten.stand_gewenst = geel_knipperen
        AND Verkeerslichten.timerPassed
      geel:
        Verkeerslichten.stand_gewenst = geel_knipperen
        AND Verkeerslichten.timerPassed
      rood:
        Verkeerslichten.stand_gewenst = gedoofd
        AND Verkeerslichten.timerPassed
        OR Verkeerslichten.STORING_ROOD_ACTIEVE_LICHTEN = true
      entry:
        - Verkeerslichten.lfv_Verkeerslicht_Verkeersbuis[].SetStand(geel_knipperen)
        - WAIT Verkeerslichten.tijd_geel_knipperen
        # tijd pas starten als de gewenste stand is bereikt????

    zet_op_geel_knipperen:
      entry:
        - Verkeerslichten.Verkeerslicht[].SetStand(geel_knipperen)
      next:
        wacht_geel_knipperen:
          - Verkeerslichten.Verkeerslicht[].stand = geel_knipperen
    wacht_geel_knipperen:

        WAIT
        WAIT Verkeerslichten.tijd_geel_knipperen;
        this.timerSet(this.tijd_geel_knipperen); // tijd pas starten als de gewenste stand is bereikt????

      exit:
        Verkeerslichten.Verkeerslicht[].SetStand(gedoofd)
      trigger:
        init:
          -
          - Verkeerslichten.Verkeerslicht[].stand_gewenst = gedoofd AND Verkeerslichten.timerPassed
          -
        geel_knipperen(): function () {
              return checkAll(this.lfv_Verkeerslicht_Verkeersbuis, "stand_gewenst", "gedoofd") && this.timerPassed
            },
          },
          entry: function () {
            console.debug('gedoofd entry');
            //forAll(this.lfv_J32_Verkeersbuis, "SetStand", "uit");
            forAll(this.lfv_Verkeerslicht_Verkeersbuis, "SetStand", "gedoofd");
          },
          do: function () {
            console.debug('gedoofd do');
          },
          exit: function () {
            console.debug('gedoofd exit');
          },
        },
        j32_aan: {
          trigger: {
            gedoofd: function () { return this.stand_gewenst != "gedoofd" },
          },
          entry: function () {
            console.debug('j32_aan entry');
            forAll(this.lfv_J32_Verkeersbuis, "SetStand", "aan");
            this.timerSet(this.tijd_j32);
          },
          do: function () {
            console.debug('j32_aan do');
          },
          exit: function () {
            console.debug('j32_aan exit');
          },
        },
        geel_knipperen: {
          trigger: {
            init: function () {
              return checkAll(this.lfv_Verkeerslicht_Verkeersbuis, "stand", "geel_knipperen")
            },
            j32_aan: function () {
              return checkAll(this.lfv_J32_Verkeersbuis, "stand", "aan") && this.timerPassed
            },
            groen: function () {
              return this.stand_gewenst == "geel_knipperen" && this.timerPassed
              //return this.lfv_Verkeerslichten_Verkeersbuis.stand_gewenst == "geel_knipperen" && this.timerPassed
            },
            geel: function () {
              //console.debug('TRIGGER GEEL', this, this.stand_gewenst);
              //return this.lfv_Verkeerslichten_Verkeersbuis.stand_gewenst == "geel_knipperen" && this.timerPassed
              return this.stand_gewenst == "geel_knipperen" && this.timerPassed
            },
            rood: function () {
              //return this.lfv_Verkeerslichten_Verkeersbuis.stand_gewenst == "gedoofd" && this.timerPassed || this.lfv_Verkeerslichten_Verkeersbuis.STORING_ROOD_ACTIEVE_LICHTEN == true
              return this.stand_gewenst == "gedoofd" && this.timerPassed || this.STORING_ROOD_ACTIEVE_LICHTEN == true
            }, // Kan dit zo?
          },
          entry: function () {
            console.debug('geel_knipperen entry');
            forAll(this.lfv_Verkeerslicht_Verkeersbuis, "SetStand", "geel_knipperen");
            this.timerSet(this.tijd_geel_knipperen); // tijd pas starten als de gewenste stand is bereikt????
          },
          do: function () {
            console.debug('geel_knipperen do');
          },
          exit: function () {
            console.debug('geel_knipperen exit');
          },
        },
        geel: {
          trigger: {
            init: function () { return checkAll(this.lfv_Verkeerslicht_Verkeersbuis, "stand", "geel") },
            geel_knipperen: function () { return checkAll(this.lfv_Verkeerslicht_Verkeersbuis, "stand", "geel_knipperen") && this.timerPassed },
            groen: function () { return this.stand_gewenst == "rood" && this.timerPassed },
          },
          entry: function () {
            console.debug('geel entry');
            forAll(this.lfv_Verkeerslicht_Verkeersbuis, "SetStand", "geel");
            this.timerSet(this.tijd_geel);
          },
          do: function () {
            console.debug('geel do');
          },
          exit: function () {
            console.debug('geel exit');
          },
        },
        rood: {
          trigger: {
            init: function () { return checkAll(this.lfv_Verkeerslicht_Verkeersbuis, "stand", "rood") },
            geel: function () { return checkAll(this.lfv_Verkeerslicht_Verkeersbuis, "stand", "geel") && this.timerPassed },
            vrijgave_afsluitboom: function () {
              return this.stand_gewenst == "gedoofd" || this.stand_gewenst == "geel_knipperen" || this.stand_gewenst == "groen"
            },
          },
          entry: function () {
            //console.debug('rood entry', this.lfv_Verkeerslicht_Verkeersbuis);
            forAll(this.lfv_Verkeerslicht_Verkeersbuis, "SetStand", "rood");
            this.timerSet(this.tijd_rood); // Tweede timer nodig, tbv afsluitboom vrijgave!!!
          },
          do: function () {
            console.debug('rood do');
          },
          exit: function () {
            console.debug('rood exit');
          },
        },
        groen: {
          trigger: {
            init: function () { return checkAll(this.lfv_Verkeerslicht_Verkeersbuis, "stand", "groen") },
            geel_knipperen: function () {
              //return this.lfv_Verkeerslichten_Verkeersbuis.stand_gewenst == "groen" && this.timerPassed
              return this.stand_gewenst == "groen" && this.timerPassed
            },
            rood: function () {
              //return this.lfv_Verkeerslichten_Verkeersbuis.stand_gewenst == "groen" && this.timerPassed
              return this.stand_gewenst == "groen" && this.timerPassed
            },
          },
          entry: function () {
            console.debug('groen entry');
            forAll(this.lfv_Verkeerslicht_Verkeersbuis, "SetStand", "groen");
            this.timerSet(this.tijd_groen);
          },
          do: function () {
            console.debug('groen do');
          },
          exit: function () {
            console.debug('groen exit');
          },
        },
        vrijgave_afsluitboom: {
          trigger: {
            rood: function () { return checkAll(this.lfv_Verkeerslicht_Verkeersbuis, "stand", "rood") && this.timerPassed },
          },
          entry: function () {
            console.debug('vrijgave_afsluitboom entry');
            // SetVrijgaveAfsluitboom(aan)
          },
          do: function () {
            console.debug('vrijgave_afsluitboom do');
          },
          exit: function () {
            console.debug('vrijgave_afsluitboom exit');
            // SetVrijgaveAfsluitboom(uit)
          },
        },