salamander070 hat geschrieben: ↑27. Nov 2018 20:45
und noch eine Frage. Wie kann ich einen weiteren Luftfeuchte Sensor per Telegramm erhalten? Einfach den zweiten Sensor dazu eintragen mit gleichen Abfrageparametern?
Da gibt es mehrere Möglichkeiten.
Zum einen kannst Du beide Sensoren als Trigger eintragen, also im Triggerteil nach
changed noch ein
or dran hängen und darunter eine zweite Zeile mit dem zweiten Sensor. Im Execute-Teil der Rule (nach dem
then) musst Du dann nur eine weitere Teleramm-Zeile hinzufügen, oder den Text, der mit Telegramm verschickt wird, um den zweiten Wert erweitern.
Eine weitere Variante ist, die Rule zu kopieren und die Kopie entsprechend anzupassen (aber darauf achten, dass alle Rules einen eindeutigen Namen haben).
Eine dritte Variante ist, die Items in einer Gruppe zusammenzufassen und diese Gruppe zu verwenden, um alle Werte auszugeben. Bei zwei Werten ist das eher unnötig kompliziert, aber schon bei drei gleichartigen Items spart man Code ein:
Code: Alles auswählen
var String sMeldung
rule "Luftfeuchte Gruppe"
when
Member of gLuftfeuchte changed // gLuftfeuchte ist der Name der Gruppe
then
sMeldung = ""
gLuftfeuchte.members.filter[m|m.state instanceof Number].forEach[l|
sMeldung = sMeldung + l.name+": "+l.state.toString+"% "
]
sendTelegram("user1", "Luftfeuchte aktuell: "+sMeldung)
end
Die Variable sMeldung muss global definiert sein, also zu Beginn der Rules-Datei. Die Rule wird getriggert, sobald eines der Items sich geändert hat. Anschließend durchläuft die Schleife alle Member der Gruppe, die einen gültigen Status haben und setzt eine Zeile zusammen, die jeweils den Namen des Items und den zugehörigen Wert enthält.
Zu beachten ist, dass die Rule bei jeder Änderung triggert, es kann also zu vielen Meldungen kommen. Eventuell ist es dann besser, die Meldungen zu begrenzen, z.B. mit einem Timer, der jedes Mal, wenn ein Telegramm verschickt wird, gestartet wird. Das Telegramm wird dann nur verschickt, wenn der Timer nicht aktiv ist.
Oder man speichert die letzte Meldung, ruft die Rule zeitgesteuert auf und kontrolliert, ob sich der zusammengesetzte Text geändert hat. Das Telegramm wird dann nur verschickt, wenn sich die Texte unterscheiden.