[UPDATE] node-red-contrib-ezo: v1.4.0

Updated to v1.4.0 which adds support for dynamic I2C bus.


Merry Christmas!

1 Like


Thank you for your continued work!!


1 Like

Hello Maddy,

during a research on how to extract data from EZO sensors running on a Raspberry Pi (mounted on a T3) I got curious doing it via Node Red. Other than you I'm not from the field of aquarium building, but want to use this setup for monitoring and controlling a biological reactor for a scientific project. I read your threads about the things your done and I have to say that it's really stunning what you manage to do with the flows and the nodes you designed.
Trying to use some parts of your flows to adapt the on my purpose (which in the end isn't so much different from an aquarium if you break it down) I directly ran into some problems concerning the i2c nodes...

Either the node-red-contrib-ezo and the "older version" create an error which tells me that there are missing "types". Some of them I found by installing new palettes, but two are still missing. The "profile" and the "ncd-comm". I tried a lot yet to solve this problem for example installing the libraries for i2c-bus and the ncd-red-comm (which includes the ncd-comm.js). But the error is still there.
Any ideas on how to solve the problem?

Just to add in case you haven't noticed yet... I'm a newbie to node red and coding in general.

Best regards,


Hi @JoSch, thanks for using the node! Although, I'm a little confused as to which project you are referencing...I haven't posted any of my projects on this forum. Also, I don't recognize "ncd-comm" or "ncd-red-comm" as neither of these are a part of node-red-contrib-ezo.

Can you expand a bit?

Hi. I use the nodes.

I have had issues with anything that uses i2c when I upgraded to Nodejs v16. I know others have had success... but I haven't looked into what failed on my end... so I've stayed at v12. Once difference between the projects that Maddy and I are working on, is that I am also using other i2c enabled boards (relay, digital input, analog io, etc..) from NCD that do rely on those libraries... (Where as he is using the TPLink over Ethernet stuff to control devices)

Ultimately when Bullseye is fleshed out completely (still issues with the official touchscreen which prevent me from adopting it) I'd like to upgrade to 64bit Bullseye on an 8GB Rpi4B, NodeJS v16, and the latest 2.1.6 of NodeRed.

Presently, I'm on Buster with NodeRED 2.1.3 and NodeJS v12. I have no issues using the EZO node. I have many Atlas-Sci instruments running a rather complex automated fishroom. I'm also working on a remote monitoring station for a lake (all water parameters) w/ other environmental data (think weather station). It's the weather station bits with NodeRED that are the challenge... the Atlas-Sci water stuff is fine!

Anyway, tell us a bit about your specific setup...

1 Like

Hello Maddy and SonoraTechnical,

I was referring to a thread in the reef2reef forum to which I got via the thread by SonoraTechnical in this forum.

A little bit more about my project:
I'm running a biological SBR reactor for a university project about wastewater cleaning. The reactor is controlled by a raspberry Pi which is coupled to a electrical control box via wlan which has 6 on/off switches for valves, pumps (circulation, feed, automatic dosage preparation and aeration). The general program used for controlling cycles is domoticz. All this is already implemented and working quite stable.
The sensors used are pH, ORP, RTD and DO. Those are connected with ezos by atlas scientific on a tentacle 3 board. The outputs of the sensors are also displayed by domoticz, but the extraction of data from there can just be performed manually.

This let me to the point to figure out how to do it in a better and more automatically way. So the idea was to extract the data from the sensors (out of i2c) and send them to a cloud (I wanted to use thingspeak). Anyway, as I already told in my initial post my knowledge of coding is quite limited, which brought me to red node and following this to your aquarium projects.

@SonoraTechnical thanks for the advice! I degraded nodeJS to v12 and now it seems to work. Unluckily I'm still a little stuck with the handling of the nodes.

I tried it using parts of the older version of your (sorry if I now speak in plural, it's because I imported flows by the two of you and don't really know from whom the flow I'm working on right now actually was) flows and extended them to a http request to send the values to the website via GET method. The thing that's causing problems is that I'm a little confused which formats are the output of the nodes and which one should it be to be compatible to the GET method...
Now, I'm thinking to try it again with the ezo node.
So my idea is a flow like this:

input -> ezo (R command to a sensor) -> function (buffer to string or to a msg."variable") -> change function (to the needed format) -> change function (set GET as method; set url to thingspeak) -> http:request (via method) -> debug

So beside the prior questions about the format (output and needed for GET method) I still ask myself how tho properly use the ezo node to perform a R command.

I hope you haven't already facepalming given up reading until this point and I wanted to say again how amazed I was reading about your projects and the possibilities that are existing if hard- and software is used properly and in a creative way by smart people.

I'm grateful for every help!

Thanks a lot already for responding and best regards,


Ah, I understand now.

I don't know much about Thingspeak API endpoints but the ezo node output is properly formatted so a conversion won't be required from buffer.

Can you share your flow?

Hello Maddy,

thanks for the quick response. I just paste together the flow as I described it. As you'll directly see I'm obviously doing foolish basics mistakes as I'm totally new to node red and have a lack of knowledge concerning some basic principles... This is the flow just for the pH-node, which I then want to extend as well for RTD, DO and ORP.

Best regards,

P.S.: I left the API address in the url, in some days I'll change it. May it also create problems, that thingspeak (in its free version) is just receiving data every 15 sec?
flows (1).json (1.7 KB)

Hello Maddy,

I just discovered that there's a thingspeak node which seems to simplify my flow a lot. I inserted it in my flow, but I'm still struggling how to properly apply the R command in the ezo node...

Best regards


flows (3).json (1.0 KB)

Hello Maddy,

I made it! I got the basic point of how to do the input for the node and it directly worked excellent!
Thanks a lot for the node and the responses, I wish you a lot of success with your projects and hope you will carry on sharing your work, it inspired and helped me a lot !

Best regards,


P.S.: Here's the final flow, so you can have a look if your interested. When I look at it now it seems really too easy!
flows (5).json (2.4 KB)


Glad you figured it out! I’ll take a look at your flow tomorrow. :grin:

Hello Maddy,

I hope it's ok if I disturb you with another question. This time its about the input command.

My idea was to implement a continuous temperature correction. For this purpose I want to take the .payload output of my RTD ezo-node add the .command "T" and sent this two to another ezo-node. What the has to be the format of the input if I want to insert these two part command? Is it a json?

Best regards,