Seite 2 von 2
Re: Shelly Steuerung über OH3 mittels MQTT
Verfasst: 5. Mai 2021 14:57
von AndRe5575
Log habe ich mir mal angeschaut. Ich habe allerdings folgendes Kommando zum starten dafür genutzt:
den Fehler bzgl commandExtension habe ich behoben. Meine http.things Datei sieht nun so aus:
Code: Alles auswählen
Thing http:url:Rollo_Timer "Zeitsteuerung Wohnzimmer" [
baseURL="http://172.16.0.14", refresh=30]{
Channels:
Type Switch : Scheduler [ stateExtension="/settings/roller/", stateTransformation="JSONPATH:$.schedule",
commandExtension="/settings/roller/0?schedule=%2$s", onValue="true", offValue="false"]
}
Das einzige, was ich festgestellt habe, ist dass nun der Status eingelesen wird. Der angezeigte Button spiegelt den Status wieder. Ich sehe auch die get Befehle im log File, es erfolgt nur kein Sendebefehl.
Re: Shelly Steuerung über OH3 mittels MQTT
Verfasst: 8. Mai 2021 09:56
von AndRe5575
Ok das Problem ist gefunden. Unter OpenHAB -> Einstellungen -> API security (show advanced) musste folgender Punkt aktiviert werden:
"Implicit user role for unauthenticated requests"
Ohne den Haken wurde nur das Ein Kommando gegeben, der Switch gab aber kein Kommando Aus. Da der Timer aktiviert war ist dies nicht aufgefallen, da der Switch ihn nur wieder eingeschaltet hatte.
Re: Shelly Steuerung über OH3 mittels MQTT (gelöst)
Verfasst: 9. Sep 2022 20:22
von MatzeMuc86
AndRe5575 hat geschrieben: ↑2. Mai 2021 00:08
Hallo zusammen,
zur Zeit verwende ich OpenHab 3 um meine Shellys (2.5) zu steuern.
mqtt.things:
Code: Alles auswählen
Bridge mqtt:broker:embedded-mqtt-broker "MQTT Bridge" [host="172.16.0.12", port="1883", secure=false, username="****", password="****"]
{
Thing topic Rollo "Rollo Wohnzimmer"
{
Channels:
Type rollershutter : Position "Rollo Prozent" [stateTopic="shellies/shellyswitch25-/roller/0/pos", transformationPattern="JS:shelly_convert_pos.js" , commandTopic="shellies/shellyswitch25/roller/0/command/pos", transformationPatternOut="JS:shelly_convert_pos.js" ]
Type rollershutter : Control "Rollo Schalter" [stateTopic="shellies/shellyswitch25/roller/0/pos", transformationPattern="JS:shelly_convert_pos.js" , commandTopic="shellies/shellyswitch25/roller/0/command", transformationPatternOut="MAP:shelly.map"]
Type number : Watts "Rollo Watt" [stateTopic="shellies/shellyswitch25/roller/0/power"]
Type number : Energy "Rollo Total" [stateTopic="shellies/shellyswitch25/roller/0/energy", transformationPattern="JS:shelly_convertkwh.js" ]
Type number : Temp "Rollo Temperatur" [stateTopic="shellies/shellyswitch25/temperature"]
Type contact : Cmd_Up "Rollo Schalter" [stateTopic="shellies/shellyswitch25/input/1"]
Type contact : Cmd_Down "Rollo Schalter" [stateTopic="shellies/shellyswitch25/input/0"]
}
}
mqtt.items:
Code: Alles auswählen
Group:Rollershutter All_Up
Group:Rollershutter Controll_All
Group:Number:SUM total_kWh
Group:Contact:OR (OPEN,CLOSED) CMD_up
Group:Contact:OR (OPEN,CLOSED) CMD_down
Rollershutter Rollo_Shutter "Rollo" (All_Up) {channel="mqtt:topic:embedded-mqtt-broker:Rollo:Position"}
Rollershutter Rollo_Switch "Rollo" (Controll_All) {channel="mqtt:topic:embedded-mqtt-broker:Rollo:Control"}
Number Rollo_MeterCurrentWatts "Rollo Watt" {channel="mqtt:topic:embedded-mqtt-broker:Rollo:Watts"}
Number Rollo_total_kWh "Rollo Total energy" (total_kWh) {channel="mqtt:topic:embedded-mqtt-broker:Rollo:Energy"}
Number Rollo_Temperatur "Rollo Temperatur" {channel="mqtt:topic:embedded-mqtt-broker:Rollo:Temp"}
Contact Rollo_CMD_up "Rollo Taste Hoch" (CMD_up) {channel="mqtt:topic:embedded-mqtt-broker:Rollo:Cmd_Up"}
Contact Rollo_CMD_down "Rollo Taste Runter" (CMD_down) {channel="mqtt:topic:embedded-mqtt-broker:Rollo:Cmd_Down"}
Sitemap:
Code: Alles auswählen
sitemap demo label="My home automation" {
Frame label="Wohnzimmer"
{
Slider item=Rollo_Shutter label="Position" icon="rollershutter"
Switch item=Rollo_Switch label="Schalter" icon="rollershutter" mappings=[0="Hoch",STOP="Stop",100="Runter"]
Selection item=Rollo_Shutter label="Feste Position" icon="rollershutter" mappings=["0"="0 - Auf","20"="20","40"="40","60"="60","80"="80","100"="100 - Zu"]
Default item=Rollo_Temperatur label="Temperatur [%.1f °C]" icon="temperature"
Default item=Rollo_MeterCurrentWatts label="akt Verbrauch [%.1f W]" icon="energy"
Text item=Rollo_MeterTotalKWH label="Zähler [%.1f kWh]" icon="energy"
}
}
Der Teil funktioniert soweit auch Einwandfrei. Nun würde ich gerne den Autotimer per Switch Ein und Aus schalten können. Leider ist dieses weder mit dem Binding noch mittels MQTT möglich (zumindest habe ich keinen Weg gefunden)
Also wollte ich es mittels http Binding versuchen:
http.things
Code: Alles auswählen
Thing http:url:Rollo_Timer "Zeitsteuerung Wohnzimmer" [baseURL="http://172.16.0.14", refresh=30]{
Channels:
Type Switch : Scheduler [ stateExtension="/settings/roller/", stateTransformation="getValue:$.schedule", commandExtension="/settings/roller/0?schedule=false", onValue="true", offValue="false"]
}
Und folgende Zeile meiner Items Datei hinzugefügt:
Code: Alles auswählen
Switch Rollo_Timer_Off "Rollo Timer Aus" {channel="http:url:Rollo_Timer:Scheduler"}
und folgende Zeile meiner Sitemap:
Code: Alles auswählen
Switch item=Rollo_Timer_Off label="Schalter" icon="switch"
Bisher leider ohne Erfolg. Ich sehe meinen offensichtlichen Fehler leider nicht.
Des Weiteren versuche ich mittels eines langen Tastendrucks alle meine Rolladen hoch bzw. runter zu fahren.
Dafür habe ich hier auch eine offenes Thema im Forum. Auch bei dem Thema komme ich nicht weiter.
(LongPress und DoublePress würde ich auch gerne für verschieden Szenarien bzgl. der Beleuchtung nutzen, wenn die Timer einmal laufen sollte die andere Anwendung ja kein Thema sein. Ggf. weiß auch jemand zu dem Thema:
viewtopic.php?f=15&t=5396 einen Rat).
Könntest du bitte noch deine shelly_convert_pos.js sowie shelly.map teilen, würde mir helfen!
Danke und Grüße
MatzeMuc86