Dobiss2mqtt

Inspired by zigbee2mqtt and after discovering the awesome mqtt integration in home assistant I created dobiss2mqtt.

I discovered how the dobiss protocol worked mostly through this thread: TCP commands for Ethernet relay. So thanks to @pergola.fabio for pointing me in the right direction.

It works by sending messages to the CAN Programmer (IP Interface). It basically polls the output state of every output on every module every X milliseconds (configurable) and it also sends a specific message when you request the state of an output to be changed (eg: turn on or off).

It has support for checking if lights/outputs are on/off as well as turning lights/outputs on/off and dimming if they are configured to be on a dimmer. Very basic for now. But it is a nice base to build additional features on. It’s built as a node service that is supposed to run in docker which connects to dobiss as well as mqtt. It uses TypeScript and the amazing RxJS.

dobiss2mqtt needs to know about your mqtt broker, the type of dobiss installation you have as well as the IP + port. It also needs to be told which modules you have and what outputs are on it. Check the example config to get an idea. Keep in mind that only relais modules that switch on/off are fully supported for now.

If configured correctly and you configured mqtt in home assistant, you should see a bunch of new devices appear under mqtt in home assistant. They should act as regular lights in home assistant.

As this project requires very specific hardware and I only have a very basic Ambiance PRO installation I am unable to implement all different versions of Dobiss in dobiss2mqtt with certainty.

For me, everything I need works and it has been running stable for 2 months. So, I am basically releasing this into the wild for you all to play with and extend.

If you’d like to see support for something please bug me in this thread with how the protocol works. Or with a potential PR on github if you don’t mind getting down to the metal. If you’re not a programmer or don’t do TypeScript/JavaScript normally, no worries. I will help.

As far as I can tell there are multiple different products being used by dobiss over the years.

Let’s all work together to get it working well for the different installation types !

1 Like

Hi, I have an Evolution pro system. I guess it’s just ambiance pro + pro master.
Just starting with Home Assistant and I am def not a programmer, but I am certainly willing to help and test where possible. I will try to install Home Assistant on my synology nas the next days.
Did you also integrate the Dobiss outdoor sensor?

The outdoor sensor is not yet integrated, you mean the light sensor? You can also read the current light value, with a manual script, I have posted the hex values in that other thread

Maybe the thread owner can post those api .pdf documents too , the ones I started with :slight_smile:

You think that light sensor will also work for Ambiance ? Because you have SX, right ?

Yup I think I added those now thx :slight_smile:

I have not tested yet, but it works, I have the hex values to read the light sensor… Also to read the programmations… I use the programmations to “fake” stuff, so I can turn something on with a switch (Niko) read that programmation, and then turn something on with HA…

So I have for example , a Niko switch, that also turn ons my led to a specific level, but also turns on Spotify :slight_smile:

@tvds cool that you are going to give it a shot. I’d like to help you with getting your dobiss working in Home Assistant. But the buttons won’t be able to work physically. As there is no way to intercept the actual keypresses of the switches. Unless you use @pergola.fabio’s clever workaround to put programmations on every button.

As said, only on/off for outputs (relais) is supported on dobiss2mqtt for now. Working on dimming now. Could do programmations after.

Is that outside sensor the light sensor Fabio mentions ? If so I’d be interesting in the message necessary to ping the controller. I can test adding it as a sensor via mqtt. Is that something you plug into a regular relais module ? Or how do you add it to dobiss ?

I don’t think it’s plugged into a relais module :wink: I dont see it there…

I think it’s plugged in into the master module itself.
If I read the documentation:
" De master Max200 is sinds oktober 2011 standaard voorzien van een 0-10V input.
Deze ingang is voorzien voor het aansluiten van een ‘willekeurige’ 0-10 V (lineair) lichtcel naar keuze. Hiermee kan desgewenst een ander bereik bekomen worden afhankelijk van de gekozen lichtcel (bereik uitgedrukt in ‘lummen’)
Wanneer deze lichtcel gekozen wordt moet de nodige setting van de dipswitch uitgevoerd worden op de mater.
SW2 zal dan op stand OFF moeten geplaatst worden.
Dus de 2de dipswitch (rechts) moet naar de positie ‘onderaan’ geplaatst worden.

Het bereik van de 0-10V lichtcel zal eveneens weer gegeven worden met waarden gaande van 0 (donker = 0 Volt) tot 100 (klaar = 10 Volt) en dit volgens het bereik van de gekozen
0-10V Lichtcel"

I think it is “lichtsensor (DO0042)” connected left under the master pro:

yeah, thats the one i have too , i use it to control my led lights on the stairs :slight_smile:
its possible to read out that state too, so you can use it in HA also
or just use the sun: platform :slight_smile:

Cool. So I could also add it easily to my home … maybe I should. Pretty nice to get almost realtime data for the brightness outside. I could dim my lights relative to the brightness. Right now there is a 5m delay which can be all the difference between appropriate dimming and odd lighting.

@pergola.fabio do you have an example message to send to the controller + an example response ? And do you know if it works the same for SX as well as Ambiance ? I guess it will be similar if it’s on the master controller.

hierbij info voor lichtcel , zelf nog niet getest… want ik gebruik hem niet voor HA

Je moet dan in de header ‘c’ ‘2’ sturen ipv ‘c’ ‘0’ (ascii codes)

HEADER 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
0xED 0x63 0x32 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0xAF 0xAF

En dan in de body 86 (0x56) en 0, aangevuld tot 48 bytes.

Thx. Enig idee van de response die je dan zou terugkrijgen ? Dat ik weet welke bytes ik moet uitlezen om de lichtwaarde te krijgen.

Hmm, nee, nog niet getest, maar kunnen we wel snel scriptje voor maken :wink:

Zou handig zijn want dan ben ik toch al iets zekerder van de functionaliteit :slight_smile:

prima, zal het straks eens even testen

ok, even getest, ik krijg dit als string terug

60 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF

is hex, dus 60 komt overeen met momenteel 97% licht sterkte

Excellent :slight_smile: Thx

dit heb ik gestuurd als string:

message3 = binascii.a2b_hex ("ED63320000000000000000000000AFAF5600FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF")