Hi Marcus,

Thanks for your fast response.  I just tested version 0.1.3, I now get 

Start of loop  21530
S1 reading 
temp =  26.5
id =  522FA9010800
present =  1
power =  0
S2 reading 
temp =  something wrong with temp
None
id =  2054A9010800
present = 
Traceback (most recent call last):
  File "./pyowfs_test1.py", line 72, in <module>
    print 'present = ',  s2.present
  File "./pyowfs_test1.py", line 36, in present
    return self.sensor.get ("present")
  File "/usr/local/lib/python2.6/dist-packages/pyowfs/owfs.py", line 95,
in get
    raise KeyError (key)
KeyError: 'present'
m...@mick-desktop:~/Documents/Controls$


What I am trying to do is to read the data from all the sensor and if
one goes missing flag it up somehow, maybe setting the 'present'
attribute to zero, but it needs to continue reading the others and if
the missing one come back it needs to start reading that one as well.

Here is the code that I am using to test, maybe there is a better way to
achieve this?


#! /usr/bin/env python
# Filename pyowfs_test1.py
# based up the code from Marcus Priesch


from pyowfs import Connection
import sys

class Sensor (object) :
    id = None
    def __init__ (self, connection):
        self.conn   = connection
        self.sensor = connection.find (id = self.id)[0]
        self.cache = 0

"""class TempSensor (Sensor) :
    def temp (self) : 
        return float (self.sensor.get ("temperature"))
        """
class TempSensor (Sensor) :
    @property
    def temp (self) : 
        try:
            return float (self.sensor.get ("temperature"))
        except TypeError:
            print 'something wrong with temp'
    @property
    def power (self) :
        try:
            return self.sensor.get ("power")
        except IOError:
            return -888
    @property
    def present (self) :
        try:
            return self.sensor.get ("present")
        except IOError:
            return -777
    @property
    def id (self) :
        try:
            return self.sensor.get ("id")
        except IOError:
            return "Cant find the id"

class Sens1 (TempSensor) :
    id = "522FA9010800"

class Sens2 (TempSensor) :
    id = "2054A9010800"

""" Start of the main program """
connection = Connection("/dev/ttyD1")
for s in connection.find () :
    print s

loop = 0
""" Need to read the sensor list and match the sensors found to the
names on the list, mark each one as present or not """
    
s1 = Sens1 (connection)
s2 = Sens2 (connection)
while loop > -1:
    print 'Start of loop ',  loop
    print 'S1 reading '
    print 'temp = ',  s1.temp
    print 'id = ',  s1.id
    print 'present = ',  s1.present
    print 'power = ',  s1.power
    print 'S2 reading '
    print 'temp = ',  s2.temp
    print 'id = ',  s2.id
    print 'present = ',  s2.present
    print 'power = ',  s2.power
    loop = loop + 1


------------------------------------------------------------------------------

_______________________________________________
Owfs-developers mailing list
Owfs-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/owfs-developers

Reply via email to