Skip to content
Snippets Groups Projects
Commit fe85ba0c authored by jkerdreu's avatar jkerdreu
Browse files

Switch from self._attr__xxx to attr['xxx']

git-svn-id: https://redmine.imt-atlantique.fr/svn/xaal/code/Python/branches/fork@1569 b32b6428-25c9-4566-ad07-03861ab6144f
parent 3acc6444
No related branches found
No related tags found
No related merge requests found
...@@ -5,38 +5,41 @@ from .default import build_dev ...@@ -5,38 +5,41 @@ from .default import build_dev
class Node(object): class Node(object):
def __init__(self,ID,cfg): def __init__(self,ID,cfg):
base_addr = cfg["base_addr"][:-1] base_addr = cfg["base_addr"][:-1]
group = cfg["group"]
attr = {}
# first device = bangap # first device = bangap
bg = build_dev(base_addr+'1',"voltage.basic") bg = build_dev(base_addr+'1',"voltage.basic")
bg.info = "bandgap" bg.info = "bandgap"
bg.hw_id = "%s.1" % ID bg.hw_id = "%s.1" % ID
bg.new_attribute("voltage") attr["voltage"] = bg.new_attribute("voltage")
# temp sensor # temp sensor
temp = build_dev(base_addr+'2',"thermometer.basic") temp = build_dev(base_addr+'2',"thermometer.basic")
temp.info = "SHT21/temp" temp.info = "SHT21/temp"
temp.hw_id = "%s.2" % ID temp.hw_id = "%s.2" % ID
temp.new_attribute("temperature") attr["temperature"] = temp.new_attribute("temperature")
# hum sensor # hum sensor
hum = build_dev(base_addr+'3',"hygrometer.basic") hum = build_dev(base_addr+'3',"hygrometer.basic")
hum.info = "SHT21/rh" hum.info = "SHT21/rh"
hum.hw_id = "%s.3" % ID hum.hw_id = "%s.3" % ID
hum.new_attribute("humidity") attr["humidity"] = hum.new_attribute("humidity")
self.devs = {"bg" : bg, "temp":temp, "hum":hum} self.devs = [bg,temp,hum]
self.attr = attr
for d in self.devs.values(): for d in self.devs:
d.product_id = 'minishield1' d.product_id = 'minishield1'
d.group_id = group
def parse(self,pkt): def parse(self,pkt):
try: try:
self.devs["bg"].get_attribute("voltage").value = pkt.values[0][2]/100.0 self.attr["voltage"] = pkt.values[0][2]/100.0
self.devs["temp"].get_attribute("temperature").value = pkt.values[1][2]/10.0 self.attr["temperature"] = pkt.values[1][2]/10.0
self.devs["hum"].get_attribute("humidity").value = int(round(pkt.values[2][2]/10.0)) self.attr["humidity"] = int(round(pkt.values[2][2]/10.0))
except IndexError: except IndexError:
pass pass
def get_devices(self): def get_devices(self):
return self.devs.values() return self.devs
...@@ -8,30 +8,35 @@ from .default import build_dev ...@@ -8,30 +8,35 @@ from .default import build_dev
class Node(object): class Node(object):
def __init__(self,ID,cfg): def __init__(self,ID,cfg):
base_addr = cfg["base_addr"][:-1] base_addr = cfg["base_addr"][:-1]
group = cfg["group"]
attr = {}
# first device = bangap # first device = bangap
bg = build_dev(base_addr+'1',"voltage.basic") bg = build_dev(base_addr+'1',"voltage.basic")
bg.info = "bandgap" bg.info = "bandgap"
bg.hw_id = "%s.1" % ID bg.hw_id = "%s.1" % ID
bg.new_attribute("voltage") attr["voltage"] = bg.new_attribute("voltage")
# temp sensor # temp sensor
temp = build_dev(base_addr+'2',"thermometer.basic") temp = build_dev(base_addr+'2',"thermometer.basic")
temp.info = "DS18B20" temp.info = "DS18B20"
temp.hw_id = "%s.2" % ID temp.hw_id = "%s.2" % ID
temp.new_attribute("temperature") attr["temperature"] = temp.new_attribute("temperature")
self.devs = {"bg" : bg,"temp":temp} self.devs = [bg,temp]
self.attr = attr
for d in self.devs.values(): for dev in self.devs:
d.product_id = 'temp1' dev.product_id = 'temp1'
dev.group_id = group
def parse(self,pkt): def parse(self,pkt):
try: try:
self.devs["bg"].get_attribute("voltage").value = pkt.values[0][2]/100.0 self.attr["voltage"] = pkt.values[0][2]/100.0
self.devs["temp"].get_attribute("temperature").value = pkt.values[1][2]/10.0 self.attr["temperature"] = pkt.values[1][2]/10.0
except IndexError: except IndexError:
pass pass
def get_devices(self): def get_devices(self):
return self.devs.values() return self.devs
...@@ -13,10 +13,10 @@ def build_dev(dtype,addr): ...@@ -13,10 +13,10 @@ def build_dev(dtype,addr):
dev.address = addr dev.address = addr
dev.vendor_id = "IHSEV" dev.vendor_id = "IHSEV"
dev.product_id = "OpenWeatherMap" dev.product_id = "OpenWeatherMap"
dev.info = "%s on %s" % (PACKAGE_NAME,platform.node()) dev.info = "%s@%s" % (PACKAGE_NAME,platform.node())
return dev return dev
class OWMManager: class GW:
def __init__(self,engine): def __init__(self,engine):
self.eng = engine self.eng = engine
self.cfg = tools.load_cfg_or_die(PACKAGE_NAME) self.cfg = tools.load_cfg_or_die(PACKAGE_NAME)
...@@ -24,39 +24,39 @@ class OWMManager: ...@@ -24,39 +24,39 @@ class OWMManager:
def setup(self): def setup(self):
""" create devices, register ..""" """ create devices, register .."""
cfg = self.cfg['config'] cfg = self.cfg['config']
# create devices # create devices
devs = {}
devs['temp'] = build_dev("thermometer.basic",cfg['temperature']) attr = {}
devs['temp'].new_attribute('temperature')
temp = build_dev("thermometer.basic",cfg['temperature'])
attr['temperature'] = temp.new_attribute('temperature')
devs['hum'] = build_dev("hygrometer.basic",cfg['humidity']) hum = build_dev("hygrometer.basic",cfg['humidity'])
devs['hum'].new_attribute('humidity') attr['humidity'] = hum.new_attribute('humidity')
devs['press'] = build_dev("barometer.basic",cfg['pressure']) press = build_dev("barometer.basic",cfg['pressure'])
devs['press'].new_attribute('pressure') attr['pressure'] = press.new_attribute('pressure')
self.devs = devs self.attr = attr
self.eng.add_devices(devs.values()) self.devs = [temp,hum,press]
self.eng.add_devices(self.devs)
self.eng.add_timer(self.update,RATE) self.eng.add_timer(self.update,RATE)
self.owm = pyowm.OWM(cfg['api_key']) self.owm = pyowm.OWM(cfg['api_key'])
def update(self): def update(self):
place = self.cfg['config']['place'] place = self.cfg['config']['place']
weather = self.owm.weather_at_place(place).get_weather() weather = self.owm.weather_at_place(place).get_weather()
self.devs['press'].get_attribute("pressure").value = weather.get_pressure()['press'] self.attr['temperature'].value = weather.get_temperature(unit='celsius')['temp']
self.devs['temp'].get_attribute("temperature").value = weather.get_temperature(unit='celsius')['temp'] self.attr['pressure'].value = weather.get_pressure()['press']
self.devs['hum'].get_attribute("humidity").value = weather.get_humidity() self.attr['humidity'].value = weather.get_humidity()
def run(): def run():
eng = Engine() eng = Engine()
log = OWMManager(eng) log = GW(eng)
eng.run() eng.run()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment