I'm having a problem using the python interface in ownet (from CVS) for
reading a few DS18S20 thermometers. A very basic program (shown below)
finds all sensors with a "temperature" attribute and then polls them
continuously until the crash occurs. Sometimes this takes minutes,
sometimes hours, sometimes all day. The error output is:
Traceback (most recent call last):
File "showbug.py", line 21, in <module>
thaddr = therm.address
File "/usr/lib/python2.5/site-packages/ownet/__init__.py", line 252, in
__getattr__
attr = self._connection.read(self._attrs[name])
File "/usr/lib/python2.5/site-packages/ownet/connection.py", line 139, in
read
data = s.recv(payload_len)
ValueError: negative buffersize in recv
which really seems like a code problem in connection.py, probably resulting
from some kind of error condition on the bus, given that it's so sporadic. A
similar monitoring program based on bash and owfs does not seem to suffer
from this problem so I'm guessing that it's just a bug in ownet/python.
Not sure how to proceed from here - I'm not going to be able to use Python
if this can't be fixed.
=================================================
Relevant hunk of monitoring program...
r = ownet.Sensor('/uncached', server=sys.argv[1], port=int(sys.argv[2]))
r.useCache(False)
therms = [sensor for sensor in r.sensors() if any(att == 'temperature' for
att in sensor.entries ()) ]
tempflakes = 0
for i in range(10000000):
r._connection.write('/simultaneous/temperature',1)
print i,tempflakes,
for therm in therms :
thaddr = therm.address
thtemp = therm.temperature
if thtemp :
print '%s: %7.3f ' % (thaddr, thtemp),
else :
tempflakes += 1
print ''
============================================
Output with crash after only a few minutes:
... many lines of output ...
209 0 1060412F00080080: 20.562 10D44A2F0008002B: 20.438
109B512F00080076: 20.375 108F522F000800BF: 20.625
210 0 1060412F00080080: 20.562 10D44A2F0008002B: 20.500
109B512F00080076: 20.375 108F522F000800BF: 20.625
211 0
Traceback (most recent call last):
File "showbug.py", line 21, in <module>
thtemp = therm.temperature
File "/usr/lib/python2.5/site-packages/ownet/__init__.py", line 252, in
__getattr__
attr = self._connection.read(self._attrs[name])
File "/usr/lib/python2.5/site-packages/ownet/connection.py", line 139, in
read
data = s.recv(payload_len)
ValueError: negative buffersize in recv
------------------------------------------------------------------------------------------------------
Output with crash after a few more minutes:
... many lines of output ...
318 0 1060412F00080080: 21.438 10D44A2F0008002B: 21.312
109B512F00080076: 21.500 108F522F000800BF: 21.500
319 0 1060412F00080080: 21.438 10D44A2F0008002B: 21.375
109B512F00080076: 21.562 108F522F000800BF: 21.562
320 0 1060412F00080080: 21.438 10D44A2F0008002B: 21.375
109B512F00080076: 21.562 108F522F000800BF: 21.500
321 0
Traceback (most recent call last):
File "showbug.py", line 21, in <module>
thaddr = therm.address
File "/usr/lib/python2.5/site-packages/ownet/__init__.py", line 252, in
__getattr__
attr = self._connection.read(self._attrs[name])
File "/usr/lib/python2.5/site-packages/ownet/connection.py", line 139, in
read
data = s.recv(payload_len)
ValueError: negative buffersize in recv
----------------------------------------------------------------------------------------------------
... nearly 40-thousand lines of output ...
39562 0 0 1060412F00080080: 20.438 10D44A2F0008002B: 20.375
109B512F00080076: 20.312 108F522F000800BF: 20.625
39563 0 0 1060412F00080080: 20.438 10D44A2F0008002B: 20.375
109B512F00080076: 20.312 108F522F000800BF: 20.625
39564 0 0 1060412F00080080: 20.438 10D44A2F0008002B: 20.375
109B512F00080076: 20.312 108F522F000800BF: 20.562
39565 0 0 1060412F00080080: 20.375
Traceback (most recent call last):
File "showbug.py", line 21, in <module>
thaddr = therm.address
File "/usr/lib/python2.5/site-packages/ownet/__init__.py", line 252, in
__getattr__
attr = self._connection.read(self._attrs[name])
File "/usr/lib/python2.5/site-packages/ownet/connection.py", line 139, in
read
data = s.recv(payload_len)
ValueError: negative buffersize in recv
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Owfs-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/owfs-developers