# CANopen protocol nodes

**URL:** <https://discourse.nodered.org/t/canopen-protocol-nodes/11501>\
**Category:** General\
**Created:** [24 May 2019 12:05 UTC](https://discourse.nodered.org/t/canopen-protocol-nodes/11501 "2019-05-24T12:05:13Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![Aleksejevs](https://avatars.discourse-cdn.com/v4/letter/a/d26b3c/32.png) [@Aleksejevs](https://discourse.nodered.org/u/Aleksejevs)\
**Post date:** [24 May 2019 12:05 UTC](https://discourse.nodered.org/t/canopen-protocol-nodes/11501/1 "2019-05-24T12:05:13Z")

</div>

Hello everyone,

Who can help with advice. I have MSI controller (Node-Red inside) with CanBus port. Are there special nodes for CanOpen?

I need connect Joystick(CANopen) and radio control (CANopen).

Thank you!

---

<div class="post-metadata">

**Author:** ![zenofmud](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/zenofmud/32/316_2.png) [@zenofmud](https://discourse.nodered.org/u/zenofmud)\
**Post date:** [24 May 2019 12:58 UTC](https://discourse.nodered.org/t/canopen-protocol-nodes/11501/2 "2019-05-24T12:58:22Z")

</div>

If you have searched and not found any then it is likely there aren’t any.

---

<div class="post-metadata">

**Author:** ![Andrei](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/andrei/32/10446_2.png) [@Andrei](https://discourse.nodered.org/u/Andrei)\
**Post date:** [24 May 2019 13:29 UTC](https://discourse.nodered.org/t/canopen-protocol-nodes/11501/3 "2019-05-24T13:29:43Z")

</div>

> [@Aleksejevs](#):
>
> I have MSI controller (Node-Red inside) with CanBus port. Are there special nodes for CanOpen?

What is the model of this device or can you share a link with the specifications ?  
As Zenofmud said if you could not find anything in Node-RED library then it is likely that there is any contrib-node already available. I just add that you can search also in NPM to see the availability of Node.JS modules. If they are available and suit your needs and requirements then you can make them available to Node-RED easily.

---

<div class="post-metadata">

**Author:** ![Steve-Mcl](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/steve-mcl/32/4826_2.png) [@Steve-Mcl](https://discourse.nodered.org/u/Steve-Mcl)\
**Post date:** [25 May 2019 09:13 UTC](https://discourse.nodered.org/t/canopen-protocol-nodes/11501/4 "2019-05-25T09:13:18Z")

</div>

There is a node js implementation. you could make a node-red node for everyone to use and contribute to...

> <https://github.com/DaxBot/node-canopen/blob/master/examples/canopend.js>

---

<div class="post-metadata">

**Author:** ![syoma755](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/syoma755/32/14687_2.png) [@syoma755](https://discourse.nodered.org/u/syoma755)\
**Post date:** [13 May 2020 07:19 UTC](https://discourse.nodered.org/t/canopen-protocol-nodes/11501/5 "2020-05-13T07:19:19Z")

</div>

Would be interested in this too. I have made a setup with CanBerry extension board and RPi, which works quite fine with CAN and standard drivers for MCP2515.  
Now I want to make a kind of dashboard, which would show me latest PDOs from CANopen devices.

The question to [Steve-Mcl](https://discourse.nodered.org/u/Steve-Mcl) - can you share some manual on how to implement a node from the .js code? I have a limited knowledge there.

There is also another implementation for CanOpen: [https://github.com/CANopenNode/CANopenSocket](https://github.com/CANopenNode/CANopenSocket)  
But I have no Idea how to bind this into NodeRED. Perhaps using some file-based mechanism? E.g. one application writes into file, and NodeRED reads from it, and vice-versa?

---

<div class="post-metadata">

**Author:** ![Steve-Mcl](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/steve-mcl/32/4826_2.png) [@Steve-Mcl](https://discourse.nodered.org/u/Steve-Mcl)\
**Post date:** [13 May 2020 07:39 UTC](https://discourse.nodered.org/t/canopen-protocol-nodes/11501/6 "2020-05-13T07:39:34Z")

</div>

> [@syoma755](#):
>
> But I have no Idea how to bind this into NodeRED. Perhaps using some file-based mechanism? E.g. one application writes into file, and NodeRED reads from it, and vice-versa?

Terrible idea haha (my opinion 😉 )

> [@syoma755](#):
>
> The question to [Steve-Mcl](https://discourse.nodered.org/u/Steve-Mcl) - can you share some manual on how to implement a node from the .js code?

There is a very good example in the docs to get you started. [Creating your first node : Node-RED](https://nodered.org/docs/creating-nodes/first-node)

If you are new to programming it will take some learning to get it done but it will also be a very rewarding experience.

Give it a go & we will help when you get stuck.

---

<div class="post-metadata">

**Author:** ![syoma755](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/syoma755/32/14687_2.png) [@syoma755](https://discourse.nodered.org/u/syoma755)\
**Post date:** [13 May 2020 07:51 UTC](https://discourse.nodered.org/t/canopen-protocol-nodes/11501/7 "2020-05-13T07:51:46Z")

</div>

> [@Steve-Mcl](#):
>
> If you are new to programming it will take some learning to get it done but it will also be a very rewarding experience.  
> Give it a go & we will help when you get stuck.

Well, I'm not new to programming itself, but just to this specific approach.

The problem is that I just wanted to build a kind of quick proof of concept, which would just help me with other tasks on my project. I didn't plan to invest time into programming, as there are many other things which should play together before it works, and it would be quite disappointing if I do this work to find out later, that this implementation is not compatible with my CAN interface...

That's why I liked the file idea. Even if it sounds terrible, it can solve my(and perhaps other's) problem for less time!

---

<div class="post-metadata">

**Author:** ![Steve-Mcl](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/steve-mcl/32/4826_2.png) [@Steve-Mcl](https://discourse.nodered.org/u/Steve-Mcl)\
**Post date:** [13 May 2020 07:58 UTC](https://discourse.nodered.org/t/canopen-protocol-nodes/11501/8 "2020-05-13T07:58:31Z")

</div>

You can easily POC without writing a node-red node.

Fire up a node instance and start typing. Or use the [example](https://github.com/DaxBot/node-canopen/blob/master/examples/canopend.js) - if it works you have a few choices....

- Make a node (great for community)
- Add a reference to the nodejs lib in settings.is and do it in a function node (quick solution)
- Run it from a separate nodejs instance and use something to pass data into node red (clumsy imo- but doable)
- Find another application that has a means of sending data to node-red (UDP/TCP/rest/MQTT)

---

<div class="post-metadata">

**Author:** ![syoma755](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/syoma755/32/14687_2.png) [@syoma755](https://discourse.nodered.org/u/syoma755)\
**Post date:** [13 May 2020 18:30 UTC](https://discourse.nodered.org/t/canopen-protocol-nodes/11501/9 "2020-05-13T18:30:24Z")

</div>

Actually there are a few CAN nodes already available - such as node-red-contrib-socketcan and node-red-contrib-canbus

I'm going to try with them first, before moving to CANopen. Actually to send/receive PDOs not so much else is required.
