- ioBroker Community Home
- Deutsch
- Visualisierung
- Validierungsregeln
Validierungsregeln
-
Moin zusammen,
für ein Projekt möchte ich ganz gerne die Visualisierung und die Steuerung eines Skripts über VIS machen. Allerdings benötige ich Validierungsregeln, damit Einträge nicht doppelt vorhanden sind.

Dies ist erstmal provisorisch aufgebaut. Es gibt vier Konstellationen. Links stehen die Anlagen, in der Mitte der Bahnhof, welche die Rohstoffe zu den Anlagen verteilen, und Rechts die Silos in denen die Rohstoffe Lagern.Es dürfen keine Anlagen doppelt ausgewählt sein, ein Bahnhof darf nur einmal doppelt ausgewählt sein und das Silo darf nicht doppelt ausgewählt sein.
Geschrieben hab ich das Skript mit dem JavaScript Adapter und Blockly.
var Anlage1, Anlage2, Anlage3, Anlage4, AnlagenObjKonst1, AnlagenObjKonst2, AnlagenObjKonst3, AnlagenObjKonst4; // Konstellation 1 var Anlage1_list = Array.prototype.slice.apply($("state[id=*](functions=Konst_1)")); for (var Anlage1_index in Anlage1_list) { Anlage1 = Anlage1_list[Anlage1_index]; if (('' + Anlage1).indexOf(('' + getState("0_userdata.0.Bahnhofsteuerung.Konstellation1.Anlage").val)) + 1 > 0) { AnlagenObjKonst1 = Anlage1; } } console.log(AnlagenObjKonst1); // Konstellation 2 var Anlage2_list = Array.prototype.slice.apply($("state[id=*](functions=Konst_1)")); for (var Anlage2_index in Anlage2_list) { Anlage2 = Anlage2_list[Anlage2_index]; if (('' + Anlage2).indexOf(('' + getState("0_userdata.0.Bahnhofsteuerung.Konstellation2.Anlage").val)) + 1 > 0) { AnlagenObjKonst2 = Anlage2; } } console.log(AnlagenObjKonst2); // Konstellation 3 var Anlage3_list = Array.prototype.slice.apply($("state[id=*](functions=Konst_1)")); for (var Anlage3_index in Anlage3_list) { Anlage3 = Anlage3_list[Anlage3_index]; if (('' + Anlage3).indexOf(('' + getState("0_userdata.0.Bahnhofsteuerung.Konstellation3.Anlage").val)) + 1 > 0) { AnlagenObjKonst3 = Anlage3; } } console.log(AnlagenObjKonst3); // Konstellation 4 var Anlage4_list = Array.prototype.slice.apply($("state[id=*](functions=Konst_1)")); for (var Anlage4_index in Anlage4_list) { Anlage4 = Anlage4_list[Anlage4_index]; if (('' + Anlage4).indexOf(('' + getState("0_userdata.0.Bahnhofsteuerung.Konstellation4.Anlage").val)) + 1 > 0) { AnlagenObjKonst4 = Anlage4; } } console.log(AnlagenObjKonst4); // Konstellation 1 on({id: "0_userdata.0.Bahnhofsteuerung.Konstellation1.Anlage"/*Anlage*/, change: "ne"}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; var Anlage1_list2 = Array.prototype.slice.apply($("state[id=*](functions=Konst_1)")); for (var Anlage1_index2 in Anlage1_list2) { Anlage1 = Anlage1_list2[Anlage1_index2]; if (('' + Anlage1).indexOf(('' + getState("0_userdata.0.Bahnhofsteuerung.Konstellation1.Anlage").val)) + 1 > 0) { AnlagenObjKonst1 = Anlage1; } } console.log(AnlagenObjKonst1); }); // Konstellation 2 on({id: "0_userdata.0.Bahnhofsteuerung.Konstellation2.Anlage"/*Anlage*/, change: "ne"}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; var Anlage2_list2 = Array.prototype.slice.apply($("state[id=*](functions=Konst_1)")); for (var Anlage2_index2 in Anlage2_list2) { Anlage2 = Anlage2_list2[Anlage2_index2]; if (('' + Anlage2).indexOf(('' + getState("0_userdata.0.Bahnhofsteuerung.Konstellation2.Anlage").val)) + 1 > 0) { AnlagenObjKonst2 = Anlage2; } } console.log(AnlagenObjKonst2); }); // Konstellation 3 on({id: "0_userdata.0.Bahnhofsteuerung.Konstellation3.Anlage"/*Anlage*/, change: "ne"}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; var Anlage3_list2 = Array.prototype.slice.apply($("state[id=*](functions=Konst_1)")); for (var Anlage3_index2 in Anlage3_list2) { Anlage3 = Anlage3_list2[Anlage3_index2]; if (('' + Anlage3).indexOf(('' + getState("0_userdata.0.Bahnhofsteuerung.Konstellation3.Anlage").val)) + 1 > 0) { AnlagenObjKonst3 = Anlage3; } } console.log(AnlagenObjKonst3); }); // Konstellation 4 on({id: "0_userdata.0.Bahnhofsteuerung.Konstellation4.Anlage"/*Anlage*/, change: "ne"}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; var Anlage4_list2 = Array.prototype.slice.apply($("state[id=*](functions=Konst_1)")); for (var Anlage4_index2 in Anlage4_list2) { Anlage4 = Anlage4_list2[Anlage4_index2]; if (('' + Anlage4).indexOf(('' + getState("0_userdata.0.Bahnhofsteuerung.Konstellation4.Anlage").val)) + 1 > 0) { AnlagenObjKonst4 = Anlage4; } } console.log(AnlagenObjKonst4); }); // Konstellation 1 on({id: [].concat(Array.prototype.slice.apply($("state[id=*](functions=Konst_1)"))), change: "ne"}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState(AnlagenObjKonst1).val == true) { switch (getState("0_userdata.0.Bahnhofsteuerung.Konstellation1.Bahnhof").val) { case 1: if (getState("0_userdata.0.Bahnhofsteuerung.Konstellation1.Silo").val >= 6) { setState("rpi2.0.gpio.12.state"/*GPIO 12*/, true); } else if (getState("0_userdata.0.Bahnhofsteuerung.Konstellation1.Silo").val <= 5) { setState("rpi2.0.gpio.23.state"/*GPIO 23*/, true); } break; case 2: if (getState("0_userdata.0.Bahnhofsteuerung.Konstellation1.Silo").val >= 6) { setState("rpi2.0.gpio.16.state"/*GPIO 16*/, true); } else if (getState("0_userdata.0.Bahnhofsteuerung.Konstellation1.Silo").val <= 5) { setState("rpi2.0.gpio.24.state"/*GPIO 24*/, true); } break; case 3: if (getState("0_userdata.0.Bahnhofsteuerung.Konstellation1.Silo").val >= 6) { setState("rpi2.0.gpio.20.state"/*GPIO 20*/, true); } else if (getState("0_userdata.0.Bahnhofsteuerung.Konstellation1.Silo").val <= 5) { setState("rpi2.0.gpio.25.state"/*GPIO 25*/, true); } break; } } else if (getState(AnlagenObjKonst1).val == false) { switch (getState("0_userdata.0.Bahnhofsteuerung.Konstellation1.Bahnhof").val) { case 1: if (getState("0_userdata.0.Bahnhofsteuerung.Konstellation1.Silo").val >= 6) { setState("rpi2.0.gpio.12.state"/*GPIO 12*/, false); } else if (getState("0_userdata.0.Bahnhofsteuerung.Konstellation1.Silo").val <= 5) { setState("rpi2.0.gpio.23.state"/*GPIO 23*/, false); } break; case 2: if (getState("0_userdata.0.Bahnhofsteuerung.Konstellation1.Silo").val >= 6) { setState("rpi2.0.gpio.16.state"/*GPIO 16*/, false); } else if (getState("0_userdata.0.Bahnhofsteuerung.Konstellation1.Silo").val <= 5) { setState("rpi2.0.gpio.24.state"/*GPIO 24*/, false); } break; case 3: if (getState("0_userdata.0.Bahnhofsteuerung.Konstellation1.Silo").val >= 6) { setState("rpi2.0.gpio.20.state"/*GPIO 20*/, false); } else if (getState("0_userdata.0.Bahnhofsteuerung.Konstellation1.Silo").val <= 5) { setState("rpi2.0.gpio.25.state"/*GPIO 25*/, false); } break; } } }); // Konstellation 2 on({id: [].concat(Array.prototype.slice.apply($("state[id=*](functions=Konst_1)"))), change: "ne"}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState(AnlagenObjKonst2).val == true) { switch (getState("0_userdata.0.Bahnhofsteuerung.Konstellation2.Bahnhof").val) { case 1: if (getState("0_userdata.0.Bahnhofsteuerung.Konstellation2.Silo").val >= 6) { setState("rpi2.0.gpio.12.state"/*GPIO 12*/, true); } else if (getState("0_userdata.0.Bahnhofsteuerung.Konstellation2.Silo").val <= 5) { setState("rpi2.0.gpio.23.state"/*GPIO 23*/, true); } break; case 2: if (getState("0_userdata.0.Bahnhofsteuerung.Konstellation2.Silo").val >= 6) { setState("rpi2.0.gpio.16.state"/*GPIO 16*/, true); } else if (getState("0_userdata.0.Bahnhofsteuerung.Konstellation2.Silo").val <= 5) { setState("rpi2.0.gpio.24.state"/*GPIO 24*/, true); } break; case 3: if (getState("0_userdata.0.Bahnhofsteuerung.Konstellation2.Silo").val >= 6) { setState("rpi2.0.gpio.20.state"/*GPIO 20*/, true); } else if (getState("0_userdata.0.Bahnhofsteuerung.Konstellation2.Silo").val <= 5) { setState("rpi2.0.gpio.25.state"/*GPIO 25*/, true); } break; } } else if (getState(AnlagenObjKonst2).val == false) { switch (getState("0_userdata.0.Bahnhofsteuerung.Konstellation2.Bahnhof").val) { case 1: if (getState("0_userdata.0.Bahnhofsteuerung.Konstellation2.Silo").val >= 6) { setState("rpi2.0.gpio.12.state"/*GPIO 12*/, false); } else if (getState("0_userdata.0.Bahnhofsteuerung.Konstellation2.Silo").val <= 5) { setState("rpi2.0.gpio.23.state"/*GPIO 23*/, false); } break; case 2: if (getState("0_userdata.0.Bahnhofsteuerung.Konstellation2.Silo").val >= 6) { setState("rpi2.0.gpio.16.state"/*GPIO 16*/, false); } else if (getState("0_userdata.0.Bahnhofsteuerung.Konstellation2.Silo").val <= 5) { setState("rpi2.0.gpio.24.state"/*GPIO 24*/, false); } break; case 3: if (getState("0_userdata.0.Bahnhofsteuerung.Konstellation2.Silo").val >= 6) { setState("rpi2.0.gpio.20.state"/*GPIO 20*/, false); } else if (getState("0_userdata.0.Bahnhofsteuerung.Konstellation2.Silo").val <= 5) { setState("rpi2.0.gpio.25.state"/*GPIO 25*/, false); } break; } } }); // Konstellation 3 on({id: [].concat(Array.prototype.slice.apply($("state[id=*](functions=Konst_1)"))), change: "ne"}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState(AnlagenObjKonst3).val == true) { switch (getState("0_userdata.0.Bahnhofsteuerung.Konstellation3.Bahnhof").val) { case 1: if (getState("0_userdata.0.Bahnhofsteuerung.Konstellation3.Silo").val >= 6) { setState("rpi2.0.gpio.12.state"/*GPIO 12*/, true); } else if (getState("0_userdata.0.Bahnhofsteuerung.Konstellation3.Silo").val <= 5) { setState("rpi2.0.gpio.23.state"/*GPIO 23*/, true); } break; case 2: if (getState("0_userdata.0.Bahnhofsteuerung.Konstellation3.Silo").val >= 6) { setState("rpi2.0.gpio.16.state"/*GPIO 16*/, true); } else if (getState("0_userdata.0.Bahnhofsteuerung.Konstellation3.Silo").val <= 5) { setState("rpi2.0.gpio.24.state"/*GPIO 24*/, true); } break; case 3: if (getState("0_userdata.0.Bahnhofsteuerung.Konstellation3.Silo").val >= 6) { setState("rpi2.0.gpio.20.state"/*GPIO 20*/, true); } else if (getState("0_userdata.0.Bahnhofsteuerung.Konstellation3.Silo").val <= 5) { setState("rpi2.0.gpio.25.state"/*GPIO 25*/, true); } break; } } else if (getState(AnlagenObjKonst3).val == false) { switch (getState("0_userdata.0.Bahnhofsteuerung.Konstellation3.Bahnhof").val) { case 1: if (getState("0_userdata.0.Bahnhofsteuerung.Konstellation3.Silo").val >= 6) { setState("rpi2.0.gpio.12.state"/*GPIO 12*/, false); } else if (getState("0_userdata.0.Bahnhofsteuerung.Konstellation3.Silo").val <= 5) { setState("rpi2.0.gpio.23.state"/*GPIO 23*/, false); } break; case 2: if (getState("0_userdata.0.Bahnhofsteuerung.Konstellation3.Silo").val >= 6) { setState("rpi2.0.gpio.16.state"/*GPIO 16*/, false); } else if (getState("0_userdata.0.Bahnhofsteuerung.Konstellation3.Silo").val <= 5) { setState("rpi2.0.gpio.24.state"/*GPIO 24*/, false); } break; case 3: if (getState("0_userdata.0.Bahnhofsteuerung.Konstellation3.Silo").val >= 6) { setState("rpi2.0.gpio.20.state"/*GPIO 20*/, false); } else if (getState("0_userdata.0.Bahnhofsteuerung.Konstellation3.Silo").val <= 5) { setState("rpi2.0.gpio.25.state"/*GPIO 25*/, false); } break; } } }); // Konstellation 4 on({id: [].concat(Array.prototype.slice.apply($("state[id=*](functions=Konst_1)"))), change: "ne"}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState(AnlagenObjKonst4).val == true) { switch (getState("0_userdata.0.Bahnhofsteuerung.Konstellation4.Bahnhof").val) { case 1: if (getState("0_userdata.0.Bahnhofsteuerung.Konstellation4.Silo").val >= 6) { setState("rpi2.0.gpio.12.state"/*GPIO 12*/, true); } else if (getState("0_userdata.0.Bahnhofsteuerung.Konstellation4.Silo").val <= 5) { setState("rpi2.0.gpio.23.state"/*GPIO 23*/, true); } break; case 2: if (getState("0_userdata.0.Bahnhofsteuerung.Konstellation4.Silo").val >= 6) { setState("rpi2.0.gpio.16.state"/*GPIO 16*/, true); } else if (getState("0_userdata.0.Bahnhofsteuerung.Konstellation4.Silo").val <= 5) { setState("rpi2.0.gpio.24.state"/*GPIO 24*/, true); } break; case 3: if (getState("0_userdata.0.Bahnhofsteuerung.Konstellation4.Silo").val >= 6) { setState("rpi2.0.gpio.20.state"/*GPIO 20*/, true); } else if (getState("0_userdata.0.Bahnhofsteuerung.Konstellation4.Silo").val <= 5) { setState("rpi2.0.gpio.25.state"/*GPIO 25*/, true); } break; } } else if (getState(AnlagenObjKonst4).val == false) { switch (getState("0_userdata.0.Bahnhofsteuerung.Konstellation4.Bahnhof").val) { case 1: if (getState("0_userdata.0.Bahnhofsteuerung.Konstellation4.Silo").val >= 6) { setState("rpi2.0.gpio.12.state"/*GPIO 12*/, false); } else if (getState("0_userdata.0.Bahnhofsteuerung.Konstellation4.Silo").val <= 5) { setState("rpi2.0.gpio.23.state"/*GPIO 23*/, false); } break; case 2: if (getState("0_userdata.0.Bahnhofsteuerung.Konstellation4.Silo").val >= 6) { setState("rpi2.0.gpio.16.state"/*GPIO 16*/, false); } else if (getState("0_userdata.0.Bahnhofsteuerung.Konstellation4.Silo").val <= 5) { setState("rpi2.0.gpio.24.state"/*GPIO 24*/, false); } break; case 3: if (getState("0_userdata.0.Bahnhofsteuerung.Konstellation4.Silo").val >= 6) { setState("rpi2.0.gpio.20.state"/*GPIO 20*/, false); } else if (getState("0_userdata.0.Bahnhofsteuerung.Konstellation4.Silo").val <= 5) { setState("rpi2.0.gpio.25.state"/*GPIO 25*/, false); } break; } } });Hat jemand von euch eine Idee wie ich eine solche Validierung umsetzen kann?
Vielen Dank schonmal im voraus!