Vergleiche: Wenn ein Sensor "die Pflanze wechselt":
- das entsprechende Item editieren und dort die Gruppenzugehörigkeit anpassen
- zwei Rules (eben für die beiden betroffenen Pflanzen) anpassen und dort jeweils alles, was mit dem Item zu tun hat entfernen bzw. einfügen
Wie gesagt wäre es vermutlich sogar leicht möglich, alle Pflanzen mit einer einzigen Rule zu "erschlagen", es müssen nur die Rahmenbedingungen genau definiert sein:
- Was sind die über alle Pflanzen identischen Anforderungen
- Welche Grenzwerte müssen individuell pro Pflanze vorgegeben werden
- Welche Werte müssen individuell pro Sensor vorgegeben werden
- Welche Items (oder Gruppen von Items) sind pro Pflanze zuständig
- Die Bewässerung wird allgemein nur ausgeführt, wenn die Temperatur über +5 °C ist -> identisch, muss nur einmalig definiert werden
- Pflanze 1 braucht mindestens 60% und höchstens 70% Bodenfeuchte, Pflanze 2 braucht mindestens 40% und höchstens 60% Bodenfeuchte -> individuelle Grenzwerte, die pro Pflanze festgelegt werden
- individuelle Bewässerungsdauer pro Pflanze -> siehe vorheriger Punkt
- Temperaturdrift pro Sensor unterschiedlich -> Korrekturwert pro Sensor festlegen
- wechselnde Zuordnung der Sensoren -> Sensorgruppen pro Pflanze
Code: Alles auswählen
rule "Steuerung Pflanzen"
when
Member of gPflanzsensoren changed
then
// 1. Sensorgruppe ermitteln
// 2. Pflanze ermitteln (abhängig von 1.)
// 3. Grenzwerte und Vorgaben ermitteln (ergibt sich aus 1. und 2.)
// 4. Messwerte aus Sensorgruppe ermitteln
// 5. gewünschte Reaktion aufgrund von 4. bestimmen
// 6. Steuerelement ansteuern
end
2. ergibt sich aus _nn
3. wird entweder in einer Hahmap pro Grenzwertart fix definiert oder über Items definiert, dann kannst Du die Grenzwerte individuell pro Pflanze/Sensor vorgeben. Diese Items landen in einer weiteren Gruppe, aus der die Items leicht gefiltert werden können, um auf sie zuzugreifen. Die Items werden mit mapDB und Strategy everyChange, restoreOnStartup persistiert.
4. ergibt sich aus 1.
5. ergibt sich aus 2. und 3.
6. ergibt sich aus 2., 3. und 5.
Der Trick ist also, die Aufgabe so aufzuteilen, dass die einzelnen Aufgaben sehr einfach sind. Wichtig ist an dieser Stelle aber, dass es bestimmte Eigenschaften der Items gibt, so dass man diese eindeutig zueinander zuordnen kann. Da Sensoren unterschiedlich eingesetzt werden sollen, drängen sich individuelle Gruppen geradezu auf, da diese Zuordnung leicht innerhalb einer Rule ermitteln werden kann und sie jederzeit leicht angepasst werden kann - im Gegensatz zum Namen des Items, welcher nicht änderbar ist (außer man definiert das Item über Textdateien)