Noch einmal eine "kleine" Verständnis-frage zu der folgenden Rule. Ist das so, wie ich es geschrieben habe, richtig (alles in einzelne if-Abfragen setzen, oder sollte/müsste ich das mit else if machen).
Wie ist es programmtechnisch besser?
Code: Alles auswählen
rule "Telegramm verschicken für Müll"
when
Item grau_muell changed to ON or
Item gelb_muell changed to ON or
Item gruen_muell changed to ON or
Item blau_muell changed to ON
then
if (grau_muell.state == ON && gelb_muell == OFF && gruen_muell == OFF && blau_muell == OFF) //Rest
{
sendTelegram("holger", "Restmülltonne für Morgen raus stellen")
}
if (grau_muell.state == ON && gelb_muell == ON && gruen_muell == OFF && blau_muell == OFF) //Rest & Gelb
{
sendTelegram("holger", "Restmülltonne und gelbe Säcke für Morgen raus stellen")
}
if (grau_muell.state == ON && gelb_muell == ON && gruen_muell == ON && blau_muell == OFF) //Rest & Gelb & Grün
{
sendTelegram("holger", "Restmüll-, Komposttonne und gelbe Säcke für Morgen raus stellen")
}
if (grau_muell.state == ON && gelb_muell == ON && gruen_muell == ON && blau_muell == ON) //Rest & Gelb & Grün & Blau
{
sendTelegram("holger", "Restmüll-, Grüne, Blaue Tonne und glebe Säcke für Morgen raus stellen")
}
if (grau_muell.state == ON && gelb_muell == OFF && gruen_muell == ON && blau_muell == OFF) //Rest & Grün
{
sendTelegram("holger", "Restmüll- und Blaue Tonne für Morgen raus stellen")
}
if (grau_muell.state == ON && gelb_muell == OFF && gruen_muell == ON && blau_muell == ON) //Rest & Grün & Blau
{
sendTelegram("holger", "Restmüll-, Grüne und Blaue Tonne für Morgen raus stellen")
}
if (grau_muell.state == ON && gelb_muell == OFF && gruen_muell == OFF && blau_muell == ON) //Rest & Blau
{
sendTelegram("holger", "Restmüll- und Blaue Tonne für Morgen raus stellen")
}
if (grau_muell.state == OFF && gelb_muell == ON && gruen_muell == OFF && blau_muell == OFF) //Gelb
{
sendTelegram("holger", "Gelbe Säcke für Morgen raus stellen")
}
if (grau_muell.state == OFF && gelb_muell == ON && gruen_muell == ON && blau_muell == OFF) //Gelb & Grün
{
sendTelegram("holger", "Gelbe Säcke und Komposttonne für Morgen raus stellen")
}
if (grau_muell.state == OFF && gelb_muell == ON && gruen_muell == ON && blau_muell == ON) //Gelb & Grün & Blau
{
sendTelegram("holger", "Gelbe Säcke, Kompost- und Blaue Tonne für Morgen raus stellen")
}
if (grau_muell.state == OFF && gelb_muell == ON && gruen_muell == OFF && blau_muell == ON) //Gelb & Blau
{
sendTelegram("holger", "Gelbe Säcke und Blaue Tonne für Morgen raus stellen")
}
if (grau_muell.state == OFF && gelb_muell == OFF && gruen_muell == ON && blau_muell == OFF) //grün
{
sendTelegram("holger", "Komposttonne für Morgen raus stellen")
}
if (grau_muell.state == OFF && gelb_muell == OFF && gruen_muell == ON && blau_muell == ON) // Grün & Blau
{
sendTelegram("holger", "Kompost- und Blaue Tonne für Morgen raus stellen")
}
if (grau_muell.state == OFF && gelb_muell == OFF && gruen_muell == OFF && blau_muell == ON) //Blau
{
sendTelegram("holger", "Blaue Tonne für Morgen raus stellen")
}
if (muellabfuhr == ON)
{
muellabfuhr.sendCommand(ON)
}
end
In meinem Google-Kalender habe ich ja jetzt die einzelnen Abfuhrtermine (Natürlich einen Tag vor dem eigentlichen Termin) eingepflegt, allerdings als Einzeltermin, also 1 x Gelber Sack, 1x Blaue Tonne und 1 x Komposttonne. Dementsprechend habe ich dann 3 Termine, die alle zur gleichen Zeit auslösen, aber wie wir ja alle wissen, nicht exakt Zeitgenau vom Binding entgegen genommen werden.
Jetzt bekomme ich ja 3 Telegramme.
1.
Code: Alles auswählen
if (grau_muell.state == OFF && gelb_muell == ON && gruen_muell == OFF && blau_muell == OFF) //Gelb
{
sendTelegram("holger", "Gelbe Säcke für Morgen raus stellen")
}
Code: Alles auswählen
if (grau_muell.state == OFF && gelb_muell == ON && gruen_muell == OFF && blau_muell == ON) //Gelb & Blau
{
sendTelegram("holger", "Gelbe Säcke und Blaue Tonne für Morgen raus stellen")
}
Code: Alles auswählen
if (grau_muell.state == OFF && gelb_muell == ON && gruen_muell == ON && blau_muell == ON) //Gelb & Grün & Blau
{
sendTelegram("holger", "Gelbe Säcke, Kompost- und Blaue Tonne für Morgen raus stellen")
}
Also
1 x "Gelbe Säcke für morgen raus stellen"
1 x "Blaue Tonne für morgen raus stellen"
1 x "Komposttonne für morgen raus stellen".
Hat jemand eine bessere Idee?
Edit: Vielleicht einen "Cron" statt "or" oben im "when" Abschnitt? Vielleicht jeden Tag um 11.00 Uhr?
Stehe im Moment auf der Leitung.