Home Automation with NoCan Protocol

I’m starting a new thread following on from the reply I posted in Canopen (Can bus) for home automation, a good idea or not? - #50 by fastbike

To recap, I did some HA stuff a couple of years ago to add automation to my Mitsubishi heat pumps used for winter time heating.
Our house has a Lonworks based system that controls lights/ security/ occupancy etc, that is years out of support and the original installer and vendors are out of business. The good thing is that the RS485 twisted pair cabling (1 pair signal plus 1 pair DC power) already exists and would be usable for a CANBus based replacement. I’ve looked at KNX and reluctantly ruled it out due to the proprietary nature and cost.

I’ve bought a starter kit from omzlo for their NoCan project and experimented writing some code/tooling to sit on top of their protocol to do things like configuration time binding of input/output nodes. E.g. a light switch being able to control several lighting circuits (on/off/dim etc) and the output node sending status feedback to all switches bound to that dimmer channel.
I’ve used the existing Lonworks concept of network variables to get me started as this provides a standardised way of describing and binding devices together.

My next step is to build some actual hardware (4 channel trailing/leading edge dimmer, 3 channel relay, 6 channel switch input node) so I can set up a small test system and get some electrical safety assessments done. The existing output nodes all reside in a couple of DIN rail cabinets, and the switch nodes (including occupancy/temp etc) are in wall mounted flushboxes. I can reuse the existing switch plate hardware, with a new NoCan node behind.

I’ve forked the original omzlo repos in github and have made some mods. Over the next week I’ll try to get a plan together of where I want to take this, and get the repos promoted to public.
I envisage a universal control board based on the CanZero board but with a simplified power supply and IO and produced as a castellated sub board for assembly onto other input/output nodes, a bit like a NodeMCU module.


I’ve changed tack slightly here. Rather than build my own dimmers I’m looking to use something commercially available like Finder 15.11 slave dimmers, which are controlled via a 0-10v signal.
This will get me something tested and certified for safety and EMI regulations.

I’ll build a control unit to interface between the NoCan bus and the dimmers - probably make it able to control 4 dimmers given it will need a DAC to output the control voltage. There are plenty of quad channel DACs such as MCP4728 available.

Any idea yet what kind of hardware you will use behind each switch in your house?

So the existing hardware behind each “light” switch is a small Lonworks node connected via a daisy chained RS485 bus.
I’m going to use the existing faceplates, which typically have up to 6 modular apertures that can hold a elv momentary switch with an input feedback LED. Alternatively an occupancy PIR sensor can be mounted.
The switches will connect to the NoCan board via a PCB to wire push connector.

I’m progressing quite well with this project, given the amount of time I can spend. So far I’ve designed a core network module which contains the CanBus driver, a 24v to 5v/3.3v buck converter and 16 IO pins. This is is a relatively small format 36mm wide x 28mm high with pins on a 2mm pitch on one side allowing it to be piggybacked onto another board (either parallel or at right angles). Picture attached of a module.

I’ve also built a 3 channel 16A relay output board that allows for simple on/off loads to be controlled. This has ESD protection for the Can network connection along with a a reverse polarity protection circuit (see design notes over at Elliot Sound Products).
This node is designed to fit within a DIN rail mounted box within the electrical distribution board.

In prototype stage at the moment is a 6 channel switch input node which will allow for 6 of the tactile switch modules above to be connected along with a DS1820 temp sensor and an additional 2 analog devices (configured to be either security PIRs or smoke senors).
Also one of the switch inputs can be configured when the board is being assembled to connect to a 10mm occupancy PIR module so the system can detect movement and switch on lights etc accordingly.
Also being prototyped is my own version of the NoCan PiMaster HAT which has more durable network and power connections and also a slightly higher power supply capacity to allow for a SSD to be connected to the Raspberry Pi.
This is designed to be located within the cavity behind the light switch so I’ll 3D print an enclosure to make sure there is no shorting onto the metalbox behind the switch.

In design stage is a 4 channel light output node that will connect to the Finder dimmer modules. As the dimmers constantly pull around 1W this module will contain a relay to fully switch them off during periods when they are unlikely to be activated. This will live in a DIN rail mounted box.

Another module which I’ve spec’d up the requirements for - but not done any further work - is an interface board for external security keypads like the Nidac VR43 that are used to operate external doors into our garage.

Not mentioned in my post above, but of note, is that I’m doing my own small scale manufacturing using a liteplacer pick and place machine. I gave up on the the low cost (and unreliable) Chinese assembly services - they are fine for making the PCBs but if you need to assemble anything with a non standard component you’re better off elsewhere.

I see you mentioned that you were making your own alternative to the NoCAN PiMaster HAT. Do you also plan on your own nocand, or are you keeping it compatible with all original software?

I have recently been looking into using NoCAN as a base for my own sensors/buttons, but I don’t want to use a pi to manage the network. I personally was looking into some quality hardware that I could control through socketcan on linux. To support this, I wanted to create my own version of nocand which would instead communicate through socketcan with a can driver.

Unfortunately, the documentation of the NoCAN project seems to be way older than their latest software implementation. The protocol as described does not match what their nocanc client seems to communicate with. I also tried looking into the sourcecode of both nocanc and nocand, but I can’t get them compiled. They seem to depend on each other, but on different versions than their ‘latest’ branch in github.

This, together with the lack of activity on github, make it feel like the NoCAN project is dead. I’m now in doubt whether to still use NOCAN protocol.
Do you have found any indication that the project is still alive?

Hi Rob,

I designed a replacement PiMaster HAT board and ordered 5 prototype boards from JLCPCB. I have yet to assemble one but have tested that it fits to the Pi via the GPIO and stand offs.
I have also sourced a heatsink with a fan and a SSD holder (powered via USB) and checked it all for mechanical alignment.

The main changes to the Omzlo PiMaster are:

  • Larger rising clamp power connector
  • 5 way network socket (Phoenix 1757271) adjacent to the power connector to match existing connectors in the house network wiring
  • Power and PWM connector for fan speed control
  • 3A supply to the Pi (to allow for powering the SSD)
  • TC2030 Tag Connect for programming

As to the NoCanC and NoCanD software I’ve just used what was on the site as I’ve not needed to change it yet.

My changes at the moment as to the CanZero STM32F core code to enable configuration over the wire as well as the existing reprogramming over the wire. I have some working code that enabled me to change the linker to set aside a segment of the memory as static data. I need to build a utility so I can output node configuration into the binary format required.

As far as the original project, unfortunately I think it is dead as there has been no activity on that site and some spammy comments are now appearing on the blog posts. That in itself does not concern me as I’d be happy to share whatever I come up with back into the community.

My issue as always is free time - and I typically pivot to more outdoors projects over the summer (here in NZ).
I intend to get back into this next month, so watch this space.

1 Like

OK, so I’m about to pivot away from the NoCan project. I really liked it but got the feeling that I was having to change too much and reinvent a lot of stuff which is required to get a solid reliable home automation system going. And unfortunately there have been no updates on the original maker site for well over 2 years.
The final consideration was getting compliance certification for anything connected to mains voltage, so home made gear is going to take quite a bit of additional work (and $$) to obtain that.

So having done another search across the webs for existing commercial products using CANbus I re-evaluated Velbus. I had discarded it a couple of years ago as it looked quite proprietary and the control model did not fit with what I had in mind.

I’ve spent around 6 weeks doing a deep dive to get familiar with the abstract model behind it, the tools and documents available, and figuring out what I need to buy from the vendor and what I can build myself.

My conclusion is that things like relays handling mains voltage will be genuine Velbus (4 channel relays etc) as well the actual mains dimmers.
Things like switching inputs, temp/occupancy sensors, dimmer drivers etc can be custom.

They have a good easy to use configuration/diagnostics tool freely available, very detailed technical documentation and existing integrations with HA and Open HAB.

I’ve been playing around with an Arduino R4 Uno Minima, and written code to emulate some of the node types I will need. So far I have a switch node doing around 50% of what a genuine switch would do - but that 50% is sufficient for my requirements. The R4 Uno is based on the Renases RA4M1 32 bit chip Cortex ARM M4 chip and includes a built in CAN controller so is a good jumping off point for designing custom hardware.

1 Like