OWFS lets us read 1-wire devices via other interfaces, I2C (DS2484) in my case. I can successfully read one temperature (DS18B20s) at a time via the owhttpd interface at http://localhost:4305/28.2F3915060000
. I can also read them using the python interface:
import pyownet
ow = pyownet.protocol.proxy(host='localhost', port=4304)
for ts in ow.dir():
print(ow.read(ts + 'temperature12'))
However, I have 30 sensors. This method reads one at a time. Each takes 500-750ms, so the whole process takes maybe 17s.
One of the slick things about 1 wire is that you can request all the sensors to read in parallel at one time, which is the slow step, then have them report sequentially, which is quite fast. Does the OWFS support reading them this way somehow?