Rolladen MQTT

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
fanavity
Beiträge: 21
Registriert: 21. Jul 2017 19:11

Rolladen MQTT

Beitrag von fanavity »

Hallo,

ich habe ein Problem beim definieren eines Rolladenaktors via MQTT

Folgendes item wurde angelegt:

Code: Alles auswählen

Rollershutter Wohnzimmer_Rolladen_Tuer "Wohnzimmertür"  (gWohnzimmer) {mqtt=">[mqttBroker:shellies/shellyswitch-32B62F/roller/0/command:command:*:MAP(shelly.map)]"}
Sitemap:

Code: Alles auswählen

sitemap rolladen label="Rolladen" {
	Frame label="Wohnzimmer" {
		Switch item=Wohnzimmer_Rolladen_Tuer
	}
}
Damit lässt sich der Rolladen problemlos hoch und runter fahren. Nun habe ich aber zwei Probleme.

1. Ich habe einen HM-Sec-RHS-2 an der Tür und möchte, dass der Rolladen nur herunter fährt, wenn die Tür geschlossen ist! Das ganze soll sowohl vom Hardwareschalter als auch geschaltet aus Openhab heraus funktionieren.
2. Ich bekomme den aktuellen Status des Rolladens nicht. Wenn ich das ganze über Openhab mache könnte ich es mir noch merken, aber ich bekomme das Schalten am Schalter nicht mit. Der Shelly liefert als aktuellen Status leider nicht geöffnet oder geschlossen sondern stop. Nur während er fährt ist der eigentliche Status korrekt

Code: Alles auswählen

MQTT in Roller mode
When configured to operate in roller mode, MQTT topics used by Shelly Switch are:

shellies/shellyswitch-<deviceid>/roller/0 reports the current state: open, close while in motion, stop when not moving.
shellies/shellyswitch-<deviceid>/roller/0/command accepts open, close and stop.
Eventuell könnt ihr mir weiterhelfen :)

Edit:
Mit folgender Regel kann ich das herunterfahren verhindern, allerdings klappt das nur bei Aktionen die von openhab selbst ausgelöst werden.

Code: Alles auswählen

rule "Wohzimmer_Rolladentuer runter "
when
	Item Wohnzimmer_Rolladen_Tuer received command DOWN
then
    if( WohnzimmerTuer_2CONTROLMODE.getState() != "CLOSED") {
      Wohnzimmer_Rolladen_Tuer.sendCommand(UP)
    }
end

grego501
Beiträge: 2
Registriert: 8. Feb 2019 10:59

Re: Rolladen MQTT

Beitrag von grego501 »

Hallo fanavity,

Habe das selbe Problem.

Konntest Du es bei Dir lösen?

Danke!

Cheers

Greg

Benutzeravatar
udo1toni
Beiträge: 13854
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Rolladen MQTT

Beitrag von udo1toni »

Das Problem ist hier, dass der shelly nicht als Rollerhutter Device konfiguriert ist. Es gibt einen Tasmota-Fork von Stefan Bode, mit dem man mehrkanalige Sonoffs für die Rollladensteuerung fit machen kann. der aktuelle Build sollte auch auf den Shellys funktionieren, ich hab allerdings selbst keine Shellys. Die Ansteuerung ist dann etwas anders, funktioniert aber bei mir mit SonoffT1/2Ch gut. Die Sonoffs melden eine Zahl zwischen 0 und 100 zurück, je nachdem, wie weit der Laden geöffnet/geschlossen wurde. Dazu werden die Fahrzeiten im Device gespeichert. Es spielt dabei keine Rolle, ob der Sonoff lokal oder ferngesteuert wurde.

Wichtig ist natürlich, dass es ein Item gibt, auf dem der aktuelle Status auch an openHAB gemeldet wird. Entweder man packt das ins selbe Item, oder man legt ein zweites Item dafür an. Wenn man aber ausschließlich ausgehende Nachrichten konfiguriert, muss man sich nicht wundern, dass man keine Rückmeldung bekommt :)
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

grego501
Beiträge: 2
Registriert: 8. Feb 2019 10:59

Re: Rolladen MQTT

Beitrag von grego501 »

Danke für die Hinweise!!

Habe es gestern hinbekommen. Jetzt bin ich dabei den Status (also subscribe) von den Topics hinzubekommen um zu sehen wie der Status des Shellies derzeit ist.

Anbei die Einstellungen für des vorhergehende Problem:

mqttConnection.things


Bridge mqtt:broker:mosquitto [ host="192.168.1.0", port=1883, secure=false, username="xyz", password="xyz" ] {
Thing topic shellies {
Channels:
Type rollershutter : shellyswitch_123456 "Roller Shutter Livingroom Right" [ stateTopic="shellies/shellyswitch-123456/roller/0" , commandTopic="shellies/shellyswitch-123456/roller/0/command" , transformationPattern="MAP:shelly.map"]
}
}


shelly.items

Rollershutter Livingroom_RollerShutter_Right "Rollershutter Right" {channel="mqtt:topic:mosquitto:shellies:shellyswitch_123456:"}

shelly.rules

rule "ROllershutter Right Living room"
when
Item Livingroom_RollerShutter_Right received command
then
val mqttActions = getActions("mqtt","mqtt:broker:mosquitto")

if(Livingroom_RollerShutter_Right.state.toString == "100") {
mqttActions.publishMQTT("shellies/shellyswitch-123456/roller/0/command","close")
}
else if (Livingroom_RollerShutter_Right.state.toString == "0") {
mqttActions.publishMQTT("shellies/shellyswitch-123456/roller/0/command","open")
}
if (receivedCommand == STOP){
mqttActions.publishMQTT("shellies/shellyswitch-123456/roller/0/command","stop")
}
end

shelly.map

UP=open
DOWN=close
STOP=stop
0=close
100=open
open=0
close=100
=stop


Cheers

Greg

Antworten