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)
},
},