DALI Lighting + Home Assistant + Atios SmartCore = Accidental Panelized Lighting System (ESP32s, Forbes & Lomax, 80+ GPIOs

Photos: https://imgur.com/a/3fQOhay - I can only embed one photo since I am a new member.

Thought I would share some progress updates on a remodel project I hope will one day be finished! This is going to be a long post, so TL;DR: first:

I’m using the Atios SmartCore to integrate DALI2 tunable lighting into Home Assistant, paired with ESP32-based controls using Forbes & Lomax buttons and 0–10V rotary dimmers. With ~80+ GPIOs across keypads and motion sensors, I built a commissioning tool to streamline setup. The SmartCore made DALI integration with Home Assistant easy, and the Atios team was very helpful when I had issues.

A little more organized but will cut a lot of the extra cable once everything is wired up.

Longer: (like really long; maybe a few of you nerds will read this :wink: )

This project started more as a spec/ investment project, then turned into my wife saying, “I think we should live here.” This meant my more straightforward plan of nice quality light fixtures and basic RA3 controls morphed into more advanced automation that I enjoy in my own home but would not necessarily do for a third party. My background is that I started in theatrical lighting design, which morphed more into digital imaging and workflow system design in the film industry. I also still do some lighting design and consulting work, but generally for commercial projects. I like to use myself as a guinea pig to learn and test new things that I can apply to my other work projects. Mainly, I am a lighting nerd at heart. Posting from a new account because I don’t want to dox myself with photos of my home. Moving into and remodeling my new place, I had a few priorities:

  • I wanted to use Home Assistant for automation control.
  • I wanted tunable lighting throughout the house but also wanted to elevate the fixtures beyond what Hue offers in terms of the ceiling aesthetics and quality of light output.
  • I expected to use Lutron RA3 keypads for wall control of scenes and any conventional lighting loads but that changed (my wife had other plans; she wanted Forbes & Lomax push buttons, which are effectively just attractive wired contact closures).
  • Integrate a lot of motion sensors throughout the house. I am using wired sensors by Faradite. These are also basically contact closures that close on motion and open when no motion is detected.

After exploring the tunable lighting options, I landed on DMF DALI2 tunable fixtures. These offer some great features (1,800 - 4,000k CCT, 0.1% dimming, different lens options with adjustable focusing) and a price point below their next closest competitors (Ketra, Rania, Lucifer, etc.).

Since I knew I was committing to DALI, I could also use various DALI2 drivers/ dimmers for things like LED tape and conventional lighting loads.

I considered using Lutron Lumaris tape for the LED tape, but the bedroom closet uses A LOT of tape, and it was frankly just too expensive. I also thought about using Hue light strips, which I have done in the past, soldering extensions where needed, but I didn’t really want to deal with it for this project, and figuring out the millwork logistics with the wiring was an additional consideration. I ended up going with tunable tape from Environmental Lights, which has good output and matches the DMF fixtures really well. I am using DALI LED controllers from a company called MiBoxer. I think it will be discontinued soon, but it seems to work well.

For conventional lighting loads such as wall sconces, etc., I am using DALI line-voltage dimmers with warm dimming bulbs from EmeryAllen.

To keep with the panelized control theme, I was able to use the relays built into the SmartCore to control on/ off loads such as bathroom exhaust fans, mirror defog, etc.

The challenge was integrating DALI with Home Assistant in a relatively easy way. Thankfully, I found a product called the Atios SmartCore that, in addition to many other features, acts as a DALI gateway and creates Apple HomeKit lighting entities for the various light fixtures and groups. I can then use the HomeKit integration in Home Assistant to control all of these entities. It works great and took about 5 minutes to get up and running. Below are some notes for more advanced functionality, but I was pleasantly surprised that something just worked. (I have no affiliation with Atios; I bought their product at full price, and I appreciate that people are making devices like this for a relatively niche use, so I do want to support them. They have spent A LOT of time with me both before I purchased and after, often helping me troubleshoot issues that have nothing to do with their product.)

Again, I had originally planned to use RA3 keypads and dimmers for our wall controls. Our house is older, and the designer (my wife) felt the switch work that Forbes & Lomax offered was a better fit in terms of design. Though it made my life exponentially harder and our budget to increase (explode), I agree with her; they do look better for our specific house. Her other priority was she really wanted a rotary-style knob that could dim the lights in a very analog way. I also agree with her on this and frankly consider it the holy grail - smooth, native-style dimming within a more complex automation environment such as Home Assistant. I had never been able to achieve this until figuring it out on this project.

The Forbes & Lomax controls consist of scene buttons that are just simply momentary push buttons. They offer both line voltage and 0-10v dimmers. This means I have to run low-voltage wiring to each switch location. I used either one or two sets of 6-conductor wire per switch location. For push-buttons, you can have five buttons + common on six conductors. I did pre-wire all the lighting to the boxes as well so you could revert everything to normal light switches without tearing all the walls open. The push buttons are obviously pretty easy to integrate. In fact, you can wire them directly into the Atios SmartCore and assign that input to a DALI address, which gives you push dimming, etc. It works great. That said, I needed many more inputs than the 12 on the SmartCore. ESP32s with MCP expansion boards offered a lot of GPIO for little money.

I also needed to figure out how to use the 0-10v dimmers as control inputs for my DALI lights. The 0-10v dimmers are only two wires; there is no wiper pin. So, to use them with the ADCs on the ESP32, I used a resistor between the GPIO pin and the ground. The software I made that runs on the ESP32 uses noise filtering to avoid flooding Home Assistant with commands. There is adjustable gamma to tune the dimming curve for optimal dimming response as well. The input is assigned to a Home Assistant light entity, and it works great. Very responsive dimming that feels analog.

With the large number of contact inputs between the keypads and motion sensors, I was concerned about how I would keep track of the various inputs and then how much work it would take to create each Home Assistant entity and update the code running on the ESP32s. I decided to build a commissioning tool that I am pretty happy with.

Basically, I start the installation with commissioning firmware running on the ESP32s. This firmware hosts a simple webpage that lists every input on the board and its current status. After wiring everything, all I have to do is walk to the various control points with my phone, push a keypad button, and watch which input changes. I can then name the input whatever I want (e.g., Bedroom Natural Scene, Bedroom Bright, etc) on that same page. When I am done, there is a commission button that, when pressed, will create all the YAML code for the entities and new ESP32 code that maps the input to the appropriate Home Assistant entity that was just created. This probably took longer than just trying to keep track of my inputs, but I figure if I ever do this again, it will be a very useful tool.

I was hoping to make a post when the project was completed, but I realized that won’t be for a long time haha, so I thought I would share my progress. This post is already too long, but hopefully, I can share the finished project that also goes through the networking, motorized drapes, and distributed AV stuff.

A few quirks to be aware of:

  • I like to use longer transitions/ fades for circadian lighting automations. If you are used to Lutron dimmers, Hue bulbs, etc., you can do this easily with Home Assistant by setting the transition time. DALI supports long fade times, but the transition time attribute in Home Assistant will not translate. The only way I was able to achieve this was by sending a WebSocket command to the SmartCore with the DALI-specific sequence of commands to change the fade time. I do this in Home Assistant with a Python script and Pyscript add-on. I am sure there is a better way to do this; if anyone has other suggestions, I am all ears. Maybe Atios will add the ability to send advanced DALI commands in the future. They could maybe emulate a virtual accessory that, when turned “on” triggers the command you pre-define?
  • There is no way to set the color temperature range of your fixture for the HomeKit light entities that the SmartCore creates via the GUI. There is a pretty easy fix: you just download the JSON config file, change the values, and re-upload it into the SmartCore.
  • There are some products by Lunatone that use eDALI and some proprietary commands that are not currently supported by the SmartCore. They may be adding support, which would be great as there are a number of useful DALI accessories they make that are not currently supported.
  • DALI bus power supplies and different voltage thresholds for DALI communication can differ between manufacturers. Due to the number of devices on my DALI loop, I need to use an external power supply. I had weird issues with the DMF fixtures dropping from my network when I added one. This was difficult to troubleshoot, and the Atios guys spent a lot of time trying to help me troubleshoot. Ultimately, DMF suggested adding a resistor to the output of the external power supply, which solved the issue, thankfully. Both companies were very helpful in getting it working.
  • I am based in the US, and though DALI is somewhat common, especially in commercial projects, it is far less common here than in other countries. Thus, sourcing materials can have longer lead times. KNX supply has been pretty fast, and I have also had good luck with eBay.

This is a long post. It is worth noting that this project is not done; we are in the middle of it, so the wiring may change some, but it will get a bit neater. It will never be that clean because the plan sort of evolved as I was putting the components together. If I were to start over, I don’t think I would change all that much, but I haven’t lived with the system yet. I definitely would have used something like Industrial Shields industrial PLC-style ESP32s instead of my mess of DIN rail terminal blocks that take up a lot more space.

You could also have gone fully Lutron HomeWorks for a nice panelized lighting system, and they also support DALI. For me, it is just too expensive, and I knew I would be using Home Assistant for automation/ conditional logic. If the budget allows, HomeWorks + Ketra would be extremely good, but I would also be extremely broke! The DMF fixtures are very nice; I love being able to dim to .1% for things like a nightlight, etc.

1 Like

Very interesting and informative. I’m looking at buying a Smartcore - thank you for the info.

1 Like

Very nice to see how people use our products in action. Nice project and very well done so far, congratulations.

A few inputs from my side:

If I were to start over, I don’t think I would change all that much, but I haven’t lived with the system yet.

I will start with this. In Europe, Middle East and Asia such a project would probably be realised with KNX. Some things would have been probably easier (rotary dimming, nice designer push buttons), some things like changing the fade time on the fly probably even harder than what they are now.

That said, I needed many more inputs than the 12 on the SmartCore. ESP32s with MCP expansion boards offered a lot of GPIO for little money.

Another option would be to use DALI-2 binary inputs, see here, there exist even models that allow 8 push buttons to be connected. Considering that a DALI-2 system supports 64x DALI-2 sensors (next to the 64 DALI lamps), that would be a theoretical maximum of 512 push buttons which must be more than enough.

Integrate a lot of motion sensors throughout the house. I am using wired sensors by Faradite. These are also basically contact closures

Same goes for these Motion Sensors, you could have used DALI-2 binary inputs, and would then have much easier wiring through the house. A single open loop (all topologies allowed, e.g. star, tree,…) can interconnect all DALI lights, and sensors. There even native DALI-2 motion detectors, that at the same time have integrated sensors for humidity, brightness, temperature and air quality. See here.

I also needed to figure out how to use the 0-10v dimmers as control inputs for my DALI lights. The 0-10v dimmers are only two wires; there is no wiper pin. So, to use them with the ADCs on the ESP32, I used a resistor between the GPIO pin and the ground.

Rotary dimmers are indeed so holy grail, congrats on your solution on how to implement that. Another option would be to use rotary encoders, instead of 0-10V sensors, meaning you can endlessly rotate and have no absolute values. This allows to dimm the light (imagine you first twisted the knob to 10V, then dimmed down using HA, and want to dimm up again by twisting) in any situation. There exist some DALI-2 solutions, that can often be fitted right into the metal plates and knobs by companies such as Forbes and Lomax (we have done this multiple times with Meljac), or see here a solution for KNX with 4 external rotary knobs.

Anyways, huge congrats on your project, looking forward to more insights. Especially how you will do Blinds, Curtains, HVAC and Door Access. All interesting extensions that could be realised in many ways, one of them being Atios SmartCore :slight_smile:

Thank you! Yes, for sure, I think there are likely better ways to approach this, especially with eDALI support. I have some devices that fit in the electrical box behind the buttons by Lunatone that give multiple contact and 0-10v inputs and then just the DALI signal wires need to run into the box.

Will definitely be testing more!

This sounds like a fantastic project. Congrats!

My setup is much, much simpler. I just have three Dali lines with a bunch of Dali lights and Dali controllers (Lunatone MC and Rot) each. I did most of it myself. But this could be the installation that you get from your electrician (at least in Switzerland where I live).

My goal was to integrate my existing Dali setup in HA. And here comes the Atios SmartCore. After wasting hours (days …) with other products, I was so delighted with SmartCore’s plug’n’play capability. And its modern web interface. Just conntected it, configured it. And boom :slight_smile:

While one feature was missing when I initially got the product, everything I need is implemented now.

So I can control my Dali lights via Dali controllers, via HA Lovelace and via anything else connected to HA. It’s always in sync and it just works. Imagine a use case where I turn on the light via Dali rotary controller, then I trigger a scene via HA that dims the light. And then I dim it even more with the rotary controller. All of these states are correctly reflected in HA. So the extension possibilities are just endless now.

1 Like