A quick summary of Shelly Dimmer integration into OpenHAB using default firmware and control over MQTT.
Device description can be found here https://shelly-api-docs.shelly.cloud/#shelly-dimmer-sl
mqtt.things
// Shelly dimmer
Thing mqtt:topic:shelly_dimmer1 "Light" @ "Buro" {
Channels:
Type switch : power "Power" [ stateTopic="shellies/shellydimmer-XXXXXX/light/0/status", transformationPattern="JS:shelly_dimmer-status.js", commandTopic="shellies/shellydimmer-XXXXXX/light/0/command", on="on", off="off" ]
Type dimmer : dimmer "Dimmer" [ stateTopic="shellies/shellydimmer-XXXXXX/light/0/status", transformationPattern="JSONPATH:$.brightness", commandTopic="shellies/shellydimmer-XXXXXX/light/0/set", transformationPatternOut="JS:shelly_dimmer-brightness.js"]
Type number : temperature "Temperature" [ stateTopic="shellies/shellydimmer-XXXXXX/temperature"]
Type number : energy "Energy" [ stateTopic="shellies/shellydimmer-XXXXXX/light/0/power"]
mqtt.items
Switch Shelly_dimmer1_Power "Dimmer1 Light []" <light> (gPers_Change_Hour) {channel="mqtt:topic:shelly_dimmer1:power"}
Dimmer Shelly_dimmer1_Dimmer "Dimmer1 [%d %%]" <light> (gPers_Change_Hour) {channel="mqtt:topic:shelly_dimmer1:dimmer"}
Number Shelly_dimmer1_Temp "Temperature [%.1f°C]" <temp> (gPers_Change_Hour, gTempSocket) {channel="mqtt:topic:shelly_dimmer1:temperature"}
Number Shelly_dimmer1_Energy "Power [%.1f W]" <energy> (gPers_Change_Hour) {channel="mqtt:topic:shelly_dimmer1:energy"}
shelly_dimmer-status.js
(function(jsonString) {
var data = JSON.parse(jsonString);
var isonState = data.ison;
if (isonState === null) isonState = UNDEF;
if (isonState == true) isonState = 'ON';
if (isonState == false) isonState = 'OFF';
return isonState;
})(input)
shelly_dimmer-brightness.js
(function(brightness) {
if (brightness > 0) {
var shellyobj = { "turn":"on", "brightness":brightness};
} else {
var shellyobj = { "turn":"off", "brightness":0 };
}
var data = JSON.stringify(shellyobj);
return data;
})(input)