Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
mqtt_for_digitalstrom [29.01.2018 10:07] – [what I want to add] Pascal Suter | mqtt_for_digitalstrom [06.07.2024 09:51] (current) – Pascal Suter | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== MQTT for digitalSTROM ====== | ====== MQTT for digitalSTROM ====== | ||
+ | **this is me, 6 years later**: i am still using Chriss Gross' gateway and it has been working great for me. Turns out the little delay that i get sometimes when a few lights have to be turned on via mqtt while the rest is directly via digitalstrom doesn' | ||
+ | i am now migrating the gateway to a new server and with that, it will be [[digitalstrom_mqtt_gateway_in_a_docker_container|running inside a docker container]], | ||
+ | |||
+ | ====== old article ====== | ||
+ | |||
I use [[http:// | I use [[http:// | ||
* DS is relatively open. the digitalSTROM Server (DSS) software is open source and comes with [[https:// | * DS is relatively open. the digitalSTROM Server (DSS) software is open source and comes with [[https:// | ||
Line 13: | Line 18: | ||
So far so good, but the problem with this MQTT bridge is, that it needs to poll your DSS every few seconds. If you set the interval too low (depends on the size of your installation and hardware-revision of your DSS, in my case i can't go below 1s) it slows down your DSS and has a negative impact on the user experience of the DSS apps and other control methods that use the API or the Web-Interface as well. Your light switches will still work normally though. | So far so good, but the problem with this MQTT bridge is, that it needs to poll your DSS every few seconds. If you set the interval too low (depends on the size of your installation and hardware-revision of your DSS, in my case i can't go below 1s) it slows down your DSS and has a negative impact on the user experience of the DSS apps and other control methods that use the API or the Web-Interface as well. Your light switches will still work normally though. | ||
- | |||
===== what I want to add ===== | ===== what I want to add ===== | ||
While the existing MQTT bridge is fine for changing room states, calling scenes etc, we need something that can enable us to react faster to events that happen on the DS bus. My Idea is, to create an MQTT bridge that connects via the VDC-API to emulate virtual digitalSTROM devices. I could then place a virtual dimmer into a room and set a value of 100% for Scene 1, 75% for Scene 2, 50% for Scene 3, 25% for Scene 4 and of course 0% for off. Now i can publish the value canges for this dimmer via MQTT. The nice thing about this solution is, that the DSS will PUSH status changes to the API and hence to MQTT and we don't need to PULL it as we do with the DSS-API variant. | While the existing MQTT bridge is fine for changing room states, calling scenes etc, we need something that can enable us to react faster to events that happen on the DS bus. My Idea is, to create an MQTT bridge that connects via the VDC-API to emulate virtual digitalSTROM devices. I could then place a virtual dimmer into a room and set a value of 100% for Scene 1, 75% for Scene 2, 50% for Scene 3, 25% for Scene 4 and of course 0% for off. Now i can publish the value canges for this dimmer via MQTT. The nice thing about this solution is, that the DSS will PUSH status changes to the API and hence to MQTT and we don't need to PULL it as we do with the DSS-API variant. | ||
Line 161: | Line 165: | ||
JSONaction=` | JSONaction=` | ||
{ | { | ||
- | 'message':'${type}', | + | "message":"${type}", |
- | 'id':'${id}', | + | "id":"${id}", |
- | 'value':100, | + | "value":100, |
- | 'tag':'${tag}', | + | "tag":"${tag}", |
}` | }` | ||
client.write(JSONaction); | client.write(JSONaction); | ||
Line 181: | Line 185: | ||
JSONaction=` | JSONaction=` | ||
{ | { | ||
- | 'message':'${type}', | + | "message":"${type}", |
- | 'id':'${id}', | + | "id":"${id}", |
- | 'value': | + | "value": |
- | 'tag':'${tag}', | + | "tag":"${tag}", |
}` | }` | ||
client.write(JSONaction); | client.write(JSONaction); |