Prepurchase questions / confusion

I’ve got some general product questions before I place an order.

I need both >24 channel SPDT relay control and >24 channel ADC input. This will be to monitor various sensors around my smart home (geothermal well temperature and pressure, air temperatures, etc) and control various devices, such as dampers, lighting, valves, etc.

To leave future expandability, I was looking at the 48-Channel 8-Bit/12-Bit Analog to Digital Converter + XR Expansion Port with an Ethernet Communications Module Web Page WebRelay Interface (ProXR Version) for communication.

I am having difficulty finding a data sheet that explains how one would read the 48 channels via the network interface. I’m a seasoned software engineer, but, I can’t find anything that presents information for more than 8 channels.

Now, for the relays. Is there a substantial difference in functionality between using a ProXR one connected to the above mentioned board’s XR expansion port vs a standalone general purpose board with its own Ethernet adapter? Basically XR Expansion SPDT 32-Relay Controller with General Purpose Relays vs 32-Channel General Purpose SPDT Relay Shield with IoT Interface. I’m somewhat also concerned that the latter doesn’t list the WebRelay card as an option under its configuration section in the store, but perhaps that’s an oversight? I’m not sure why the XR model is substantially more expensive than the board that hosts its own IoT interface.


One additional follow-up question. For the ADC board, documentation indicates not to apply voltage when the device is powered off. The only way I can see doing this is by running the power for the sensors through the device so that when the device is off, so are the sensors. Am I missing something, or is there no power output on the board. Additionally, is there no 5V reference output to use with the sensors?


The web-i isn’t great for mixing and matching functionality. In fact support was dropped for the AD1216 from the Web-i. I’ve removed the option to fix that error.

The AD1216 series (the 48-Channel ADC mentioned above) has a different command set than the standard ProXR which only has 8 channels of ADC. You can find the commands at:

The only difference you would see between splitting the communications would be if you controlled each device with a different program or on a different thread. If you’re single thread monitoring or controlling its somewhat a 6 one way and half a dozen another situation. For single threads, I’d probably recommend just an expansion if you’re going to have them located next to each other physically.

The IoT interface boards operate on a totally different technology using different parts. They are based on the I2C protocol while the Industrial Line that includes ProXR is based entirely on Serial. The IoT interface boards are designed to accept platforms like Arduino, Particle, and ESP32 so that you can write your own firmware on the board. The Industrial devices are micro-processor driven with immutable firmware that reacts to a specific API. The two are not compatible.

On the ADC boards you can pull the inputs high. This will give you +5VDC on the input which can be used to power most 0-5VDC compatible sensors. If you pull the inputs low you can connect sensor that create their own voltage or use an external power source to provide the analogue voltage being read by the board. Note that you can’t mix the two on a single board.

Thanks for the feedback and quick reply.

So, I guess my confusion is that the 48 Channel ADC board I mentioned has both an IoT interface as well as a ProXR expansion. I assume the command set you linked to is for speaking via a socket over Ethernet if I use a Ethernet Communications Module Lantronix XPort module. In that case, how would I also control the relay controller I had linked if I were to interconnect it with the ADC board via the ProXR port?

Pulling the inputs high makes sense – I’ll be reading 10K Type 2 thermistors and I had previously asked and had been told that the pull-up resistor is 10K, so that works well there. The +5V can also be used to power 4-20mA to 0-5V converters. For that sort of use case, however, is there a reference ground on the board that can be used with the +5V to complete the circuit?

In your opinion, based on the fact that I want to control everything via Ethernet and that I’m not concerned with the threading issues you mentioned since I’ll be in a single threaded environment, would you recommend using the ADC board as a bridge to the ProXR relay board, or would you recommend just going with the unassociated IoT relay board I linked with a second Ethernet IoT module? I think the only real plus for me on the former is not needing an Ethernet switch or multiple Ethernet drops to the cabinet I’m putting this all in, but the latter seems to be about $200 cheaper. Am I missing any other trade-offs given my Ethernet use case?

So the 48-Channel ADC won’t have an IoT socket. It will have a socket that shares the pinout of an Xbee® Socket. We don’t have a clever name for it, its just a communication socket designed to send and receive serial data (the ethernet modules convert TCP socket data into serial data) between the on-board microprocessor and the attached communication module.

The 32-Channel General Purpose SPDT Relay Shield with IoT Interface you referenced will have an IoT socket and it is built around the Particle Electron footprint. It is designed to send and receive data via I2C communication between the on-board ICs and the attached platform through various adapter.

The IoT socket will have two sets of double row headers where the platforms plugin while our standard communication sockets have 2 single row headers with 4 extra pins on one side.

Basically everything here: is serial based
Everything here: is I2C based

The guide referenced earlier will outline commands to send. Sending them to the board with an ethernet module is, by default, done by opening a TCP socket to the IP address on port 2101. The command set is decoupled from the transfer protocol because the main board can be used with various transfer protocols. Each communication module has its own guide and each series has its own command set.

On the 8/12 bit ProXR ADC boards there will be a GND for each input directly next to it. The wiring is outlined on the guide at:

Unfortunately the IoT interface boards don’t have a good Ethernet solution, mainly because the major platform developers are strictly wifi. To get ethernet you’ll have to stick to the Serial Based ProXR series.

If you can go WiFi I’d recommend the IoT interface boards with something like an ESP32. They’re reliable, faster, more flexible, and more fun to develop for (outside of digging through contributed code because Wire language developers seem to love their global variables). This video will give you a brief overview of the IoT:

I don’t think I was clear earlier. I see that the inputs are 2 pin, so there would be one high pin and one return pin. I can’t both power a voltage measuring device and measure the device from the same pins, because the voltage drop across the device isn’t a specific and constant amount. Voltage measuring devices need 3 wires: Power in, GND, and the variable voltage output that indicates the analog measurement value. Would I have to use an external power supply for that? Or are you suggesting that I dedicate one of the ADC channels just for power for the various sensors? That could possibly work, but what is the maximum supply current?

How does it work when you use a ProXR with an expansion? Do I need to in some way address the second device vs the first one so that the command set goes to the correct device?

One more follow-up. Do any of the boards I mentioned have cases or back mounts already made for them? I would be looking to mount these boards in a cabinet.

The input uses a voltage divider circuit to pull the pin high so that the sensor pull it down to where it should be at if it is a two wire resistance sensor. If the sensor you’re wanting to use is a 3-wire type you’ll need to power it externally and make sure it only outputs 0-5vDC and pull the inputs low. If its an inductive sensor such as a current sensor you’ll need to pull the inputs low as they create their own power to feed into the ADC.

Expansions will simply act as additional relays or additional inputs. No addressing necessary.

Unfortunately none of these boards have an enclosure or back mount.

Okay, I think I’m down to my final question. You had mentioned pull-up vs pull-down was set per board. However, it looks like there’s multiple banks of jumpers for this. Is it actually per device on board? Or possibly per side of device on board? i.e. for the 48 ADC board, can I set the up/down setting only for the whole board, or only once for each of the 3 devices for a total of 3 unique settings, or once for each device side for a total of 6 unique settings?

You’re right the ZAD12 boards have a jumper for every bank and the corresponding inputs are printed next to the jumper. Apologies I was jumping between series too much.

So there is a jumper for each terminal of 8 inputs.

Also in the documentation: it will reference “Device” as a variable to target a particular set of inputs. This might be more clear to think of as a group. The first 16 inputs are group 0, the next 16 are group 2, etc.

So to target AD input 0 the command would be bytearray(254, 195, 0), to target AD 16 bytearray(254,203, 0) where the second byte targets a group of inputs.

I just placed an order a few moments ago. Thanks for all your help!

No problem,

What language are you going to use to control them?

Most likely JavaScript.

Well we don’t have a direct library for it, but here’s some node-red code that should still work with vanilla node.js: