From 1c6c5df2ca1cde45d5db24f04f7fd5ed0f66616f Mon Sep 17 00:00:00 2001 From: henfri Date: Mon, 10 Dec 2018 22:01:24 +0100 Subject: [PATCH 1/2] Update blnet.py second try of higher level interface --- pyblnet/blnet.py | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/pyblnet/blnet.py b/pyblnet/blnet.py index 60ed967..d588ec2 100644 --- a/pyblnet/blnet.py +++ b/pyblnet/blnet.py @@ -106,6 +106,51 @@ def _turn(self, digital_id, value, can_node=None): else: raise EnvironmentError('Can\'t set values with blnet web disabled') + def get_value(self,type='digital', ret='value', name=None, id=None, cached=None): + """ + higher level interface to get a value or mode by name or id + ret: can be 'value', 'mode' + returns the value if ret='value' or the mode if ret='mode' as first return value + and the dictionary containing name, value, id and mode as a second return value + cached: in order to prevent polling data from BLNet with every call, + the data can be fetched once and stored and passed to this function + + + """ + val=None + dic=None + if name is None and id is None: return val + if cached==None: + cached=self.fetch() + for key,v in cached[type].items(): + if v['name']==str(name) or name==None: + if v['id']==str(id) or id==None: + val=v[ret] + dic=v + return val, dic + + def get_digital_value(self ret='value', name=None, id=None, cached=None): + val, dic=self.get_value(type='digital', ret='value', name=name, id=id, cached=cached) + return val, dic + + def get_analog_value(self ret='value', name=None, id=None, cached=None): + val, dic=self.get_value(type='analog', ret='value', name=name, id=id, cached=cached) + return val, dic + + def get_energy_value(self ret='value', name=None, id=None, cached=None): + val, dic=self.get_value(type='energy', ret='value', name=name, id=id, cached=cached) + return val, dic + + def get_speed_value(self ret='value', name=None, id=None, cached=None): + val, dic=self.get_value(type='speed', ret='value', name=name, id=id, cached=cached) + return val, dic + + def get_power_value(self ret='value', name=None, id=None, cached=None): + val, dic=self.get_value(type='power', ret='value', name=name, id=id, cached=cached) + return val, dic + + + @staticmethod def _convert_web(values): """ From 0465879061be599fecafeee9444c2bfd3ae5b550 Mon Sep 17 00:00:00 2001 From: henfri Date: Fri, 28 Dec 2018 13:06:09 +0100 Subject: [PATCH 2/2] Update blnet.py Fixes according to @nielstrons requests/comments --- pyblnet/blnet.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/pyblnet/blnet.py b/pyblnet/blnet.py index d588ec2..f330b3a 100644 --- a/pyblnet/blnet.py +++ b/pyblnet/blnet.py @@ -106,7 +106,7 @@ def _turn(self, digital_id, value, can_node=None): else: raise EnvironmentError('Can\'t set values with blnet web disabled') - def get_value(self,type='digital', ret='value', name=None, id=None, cached=None): + def get_value(self, name=None, id=None, type='digital', ret='value', cached=None): """ higher level interface to get a value or mode by name or id ret: can be 'value', 'mode' @@ -120,32 +120,32 @@ def get_value(self,type='digital', ret='value', name=None, id=None, cached=None) val=None dic=None if name is None and id is None: return val - if cached==None: + if cached is None: cached=self.fetch() for key,v in cached[type].items(): - if v['name']==str(name) or name==None: - if v['id']==str(id) or id==None: + if str(v['name'])==str(name) or name is None: + if str(v['id'])==str(id) or id is None: val=v[ret] dic=v return val, dic - def get_digital_value(self ret='value', name=None, id=None, cached=None): + def get_digital_value(self, ret='value', name=None, id=None, cached=None): val, dic=self.get_value(type='digital', ret='value', name=name, id=id, cached=cached) return val, dic - def get_analog_value(self ret='value', name=None, id=None, cached=None): + def get_analog_value(self, ret='value', name=None, id=None, cached=None): val, dic=self.get_value(type='analog', ret='value', name=name, id=id, cached=cached) return val, dic - def get_energy_value(self ret='value', name=None, id=None, cached=None): + def get_energy_value(self, ret='value', name=None, id=None, cached=None): val, dic=self.get_value(type='energy', ret='value', name=name, id=id, cached=cached) return val, dic - def get_speed_value(self ret='value', name=None, id=None, cached=None): + def get_speed_value(self, ret='value', name=None, id=None, cached=None): val, dic=self.get_value(type='speed', ret='value', name=name, id=id, cached=cached) return val, dic - def get_power_value(self ret='value', name=None, id=None, cached=None): + def get_power_value(self, ret='value', name=None, id=None, cached=None): val, dic=self.get_value(type='power', ret='value', name=name, id=id, cached=cached) return val, dic