I thought about trying to write a plugin even though I have never written any python and am not a programmer, lol. I didn't get too far.
I installed the pymodbus libraries from here: http://code.google.com/p/pymodbus/
I struggled for about a day to write the code below to retrieve 18 I/O from an ADAM 6050 module and to retrieve numerous power meter values from a Conserv power meter. Most of my time was spent trying to figure out python. In the end it seems to be pretty simple code for the data retrieval. I don't have time or talent to turn it into a plugin.
There are numerous IO devices available that have some advantages. Their hardware is usually rugged and industrial. They usually have builtin opto isolation on the inputs and outputs. They are comparable in cost to the EZIO devices on a per port basis.
I am glad to see Berkinet developing a Phidgets plugin. I think when somebody has time to look at Modbus it would be a nice addition to the Indigo suite.
The Moxa product line looks reasonable: http://www.moxa.com/product/ioLogik_E1212.htm
Here is another device that is reasonably priced: http://gridconnect.com/ethernet-io.html
The ADAM modules are good but require Windows OS to configure.
------ code sample ----
from pymodbus.client.sync import ModbusTcpClient as ModbusClient
from struct import *
# read digital inputs from ADAM 6050 module
print ' read digital inputs from ADAM 6050 module'
client = ModbusClient('192.168.1.44')
result = client.read_discrete_inputs(0,17)
for i in range(0, 17):
print 'bit:', i, result.bits[i]
# read power meter via lantronix Ethernet/ModbusTCP converter
print ' read Conserv power meter via lantronix Ethernet/ModbusTCP converter'
client = ModbusClient('192.168.1.91')
result = client.read_holding_registers(3900, count=100, unit=1)
for i in range(0, 56, 2):
f1 = unpack('f', pack('HH', result.registers[i], result.registers[i + 1]))
print "address:", i + 3901, "float", f1