Seite 1 von 1

Unterschiedliche Befehle für an/aus mit MQTT

Verfasst: 18. Apr 2020 11:14
von cester
Hallo zusammen,

gibt es eine Möglichkeit bei openHAB2 und MQTT unterschiedliche Befehle für an und aus zu senden?

Ich nutze den MQTT Broker von openHAB2. Damit sende ich Befehle an meinem Broadlink, der dann IR und 433 MHz Signale versendet. Ich nutze zum Teil auch Alexa über den Hue Emulator für die Befehle. Solange ich für an und aus das gleiche Signal nutzen kann, also z.B nur einen Knopf auf der Fernbedienung für an und aus habe, funktioniert das ganze sehr gut.

Wenn ich aber für an und aus unterschiedliche Signale habe, wie bei einem 433 MHz Baumarkt Stecker, habe ich das Problem, dass ich nur ein Befehl beim Item angeben kann und es dadurch nicht möglich ist über ein Item das an und aus zu schalten.

Aktuell lege ich meine Items über die PaperUI an. Streue mich aber nicht die Items über eine Konfigurationsdatei anzulegen, wenn es mein Problem löst.

Vielleicht hat jemand auch eine ganze andere Idee, wie ich das lösen kann ;-) übrigens ist der openHAB2 Server auf einem Raspberry, falls das wichtig ist.

Ich hoffe ich habe alles klar und deutlich erläutert. Ansonsten gerne noch Rückfragen stellen.

MfG

Re: Unterschiedliche Befehle für an/aus mit MQTT

Verfasst: 18. Apr 2020 15:25
von udo1toni
Ich denke, das Beste wäre, ein Beispiel für die Konfiguration zu zeigen :) denn grundsätzlich sendet openHAB immer unterschiedliche Signale zum Ein- und Ausschalten.

Re: Unterschiedliche Befehle für an/aus mit MQTT

Verfasst: 18. Apr 2020 20:36
von cester
Screenshot_20200418-202040.png
Hier mal ein Foto von einer Konfiguration eines Items in openHAB2.
Screenshot_20200418-202718.png
Und hier ist ein Foto von der App RM Plugin. In dieser App konfiguriere ich die Befehle für den Broadlink. Anschliessend schreibe ich diese Nummern in das Command topic Feld von openHAB.

Das Problem ist, dass ich je Befehl, hier "tischAN" und "tischAUS" unterschiedliche Nummern habe und bei openHAB nur eine davon eintragen kann.

Ich Frage mich also, ob ich bei einem Item unterschiedliche "topic's" für den an und aus Befehl nutzen kann.

Ich hoffe jetzt ist alles verständlich :-)

MfG

Re: Unterschiedliche Befehle für an/aus mit MQTT

Verfasst: 19. Apr 2020 06:04
von udo1toni
Ah. Unterschiedliche Topics kannst Du leider nicht auf direktem Weg verwenden. Du kannst aber mit einem Proxy Item arbeiten. Unter dem Thing legst Du zwei Channel an, einen für ON und einen für OFF. Beide Channel verlinkst Du mit einem Switch Item, also z.B. LichtAn und LichtAus.
Nun definierst Du ein weiteres Switch Item, welches Du aber nicht an irgendeinen Channel verlinkst. Nennen wir es hier mal Lichtschalter.

Zuletzt brauchst Du eine Rule:

Code: Alles auswählen

rule "Lichtschalter senden"
when
    Item Lichtschalter received command
then
    if(receivedCommand == ON)
        LichtAn.sendCommand(ON)
    else
        LichtAus.sendCommand(ON)
end
Nun kannst Du über das Item Lichtschalter das Licht ein- und ausschalten, und zwar gezielt so, wie der Schalter steht.

In der gezeigten Channel Definition ist ein Fehler, denn Du hast da als stateTopic das selbe Topic angegeben, wie es zum senden verwendet wird. Das kann so eigentlich nicht sein. Die Frage ist nun, ob Du überhaupt eine aktive Rückmeldung über den Schaltzustand bekommst, eine Rückkanal ist bei Funksteckdosen ja eher unüblich. Oder wertet die Funkbridge einfach nur die Steuerbefehle anderer Fernbedienungen aus? Dann sollte es eigentlich ein Topic geben, auf dem alle Rückmeldungen ankommen, in der Form, dass z.B. die ID geliefert wird, evtl. in JSON verpackt.

So, wie es jetzt konfiguriert ist, könntest Du über eine weitere Rule den Schaltzustand an openHAB zurückmelden:

Code: Alles auswählen

rule "Lichtschalter Rückmeldung"
when
    Item LichtAn received update or
    Item LichtAus received update
then
    if(triggeringItem.name.contains("AN"))
        Lichtschalter.postUpdate(ON)
    else
        Lichtschalter.postUpdate(OFF)
end
Für Alexa sollte der aktuelle Schaltzustand keine Rolle spielen, es sei denn, Du fragst gezielt nach dem Zustand. In der Sitemap muss der Schalter aber die richtige Stellung haben, da Du sonst nicht den passenden Befehl senden kannst (es ist ja ein Schiebeschalter)

In Verbindung mit einem Mapping in der Sitemap:

Code: Alles auswählen

Switch item=Lichtschalter mappings=[OFF="Aus",ON="AN"]
wird der Schalter mit zwei getrennten Schaltflächen gerendert, wobei die Schaltflächen jederzeit gedrückt werden können.

Re: Unterschiedliche Befehle für an/aus mit MQTT

Verfasst: 19. Apr 2020 11:17
von cester
Super ausführliche Antwort! Sogar mehr beantwortet als erwartet :-)

Mit dem zusätzlichen Item und der Rule funktioniert es wunderbar.

Ja, ich habe bei dem stateTopic spaßeshalber das gleiche eingetragen. Den Zustand bekomme ich nämlich, wie du schon geschrieben hast, nicht von der Funksteckdose und von der Funkbridge auf Anhieb auch nicht. Aktuell benötige ich das auch nicht, sobald es aber relevant für mich wird, kann ich ja nun deinen Anweisungen folgen :-)

Für mich gilt meine Anfrage als beantwortet. Vielen Dank für deine Hilfe!