welcher Weg der einfachste ist, ist immer etwas schwer abzuschätzen. Ich könnte mir z.B. vorstellen, dass Du mit Tasmota Rules dafür sorgen kannst, dass ein Topic jeweils den letzten On-Befehl sendet (also 1,2,3,4)
Ich habe aber überhaupt keine Erfahrung mit Tasmota Rules. Vermutlich wäre das eine Frage für den Discord Support.
Rein mit openHAB Mitteln würde ich die einzelnen Relais Zustände über Channel einsammeln (evtl. gibt es auch hier eine Abkürzung, kommt aber drauf an, welche Topics im Moment des Schaltvorgangs gepublished werden).
Anschließend sorgt dann eine Rule dafür, dass je nach Eingangssignal ein Number Item entsprechend geschaltet wird.
Wie sieht es mit dem Rückweg aus? Soll openHAB die Pumpe auch steuern können?
Grundsätzlich so:
Item:
Code: Alles auswählen
Group Item gPumpe (nicht verlinkt, kein Typ)
Switch Pumpe_1 (gPumpe) {Channel 1 RW}
Switch Pumpe_2 (gPumpe) {Channel 2 RW}
Switch Pumpe_3 (gPumpe) {Channel 3 RW}
Switch Pumpe_4 (gPumpe) {Channel 4 RW}
Number Pumpe (nicht verlinkt)
Das RW steht für Read/Write, also sowohl das commandTopic als auch das stateTopic setzen (cmnd/POWER1-4 und stat/POWER1-4, bitte nicht tele/)
Rules:
Code: Alles auswählen
var Boolean bPumpe = false
rule "Pumpe recv"
when
Member of gPumpe changed // eines der Relais hat angezogen oder ist abgefallen
then
if(newState == ON) { // angezogen?
bPumpe = true // dann sperren
var strNew = triggeringItem.name.split("_").get(1) // Ziffer aus Itemnamen extrahieren
Pumpe.postUpdate(strNew) // Und dem Item zuweisen
} else // abgefallen?
bPumpe = false // Sperre aufheben
end
rule "Pumpe send"
when
Item Pumpe received command
then
if(bPumpe) // Falls gesperrt
return; // sofort abbrechen
switch(receivedCommand as Number) {
case 1: Pumpe_1.sendCommand(ON)
case 2: Pumpe_2.sendCommand(ON)
case 3: Pumpe_3.sendCommand(ON)
case 4: Pumpe_4.sendCommand(ON)
}
end
Die erste Rule kümmert sich um ankommende Zustandsänderungen, die zweite Rule sendet den Schaltbefehl.
Dazu kommt dann noch ein Widget, welches die vier Zustände auf die Zahlen 1 - 4 umsetzt und anzeigt.