From 5d18529f0fd000e44fe649e3de72f75d02efa36c Mon Sep 17 00:00:00 2001 From: jkerdreux-imt <jerome.kerdreux@imt-atlantique.fr> Date: Wed, 27 Nov 2024 17:39:24 +0100 Subject: [PATCH] Format --- .../ESPHome/xaal/esphome/bindings.py | 23 +++--- devices/weather/OpenWeatherMap/xaal/owm/gw.py | 73 ++++++++++--------- 2 files changed, 53 insertions(+), 43 deletions(-) diff --git a/devices/protocols/ESPHome/xaal/esphome/bindings.py b/devices/protocols/ESPHome/xaal/esphome/bindings.py index 4b8a8a20..30f91475 100644 --- a/devices/protocols/ESPHome/xaal/esphome/bindings.py +++ b/devices/protocols/ESPHome/xaal/esphome/bindings.py @@ -1,12 +1,10 @@ -from xaal.lib import tools,Device -from xaal.schemas import devices - -from pprint import pprint -from aioesphomeapi import APIClient, APIConnectionError,model - import asyncio import logging +from aioesphomeapi import APIClient, APIConnectionError, model + +from xaal.lib import Device, tools +from xaal.schemas import devices logging.getLogger('aioesphomeapi').setLevel(logging.INFO) logger = logging.getLogger(__name__) @@ -18,7 +16,9 @@ class ESPDevice: self.port = cfg.get('port',6053) self.key = cfg.get('key',None) self.passwd = cfg.get('passwd',None) - self.base_addr = tools.get_uuid(cfg.get('base_addr')) + addr = tools.get_uuid(cfg.get('base_addr')) + assert addr, "Invalid base_addr" + self.base_addr = addr self.embedded = [] self.disconnected = asyncio.Event() @@ -91,10 +91,12 @@ def find_device_class(info): if type_ == model.LightInfo: return Lamp elif type_ == model.SwitchInfo: - return PowerRelay + return PowerRelay elif type_ == model.SensorInfo: - if info.device_class == 'signal_strength': return WifiMeter - if info.device_class == 'power': return PowerMeter + if info.device_class == 'signal_strength': + return WifiMeter + if info.device_class == 'power': + return PowerMeter elif type_ == model.BinarySensorInfo: return Contact @@ -121,6 +123,7 @@ class EntityMixin(object): return self.info.key def setup_device_description(self): + assert self.dev, "Device not setup" self.dev.vendor_id = 'ESPHome' self.dev.product_id = self.info.unique_id self.dev.hw_id = self.info.key diff --git a/devices/weather/OpenWeatherMap/xaal/owm/gw.py b/devices/weather/OpenWeatherMap/xaal/owm/gw.py index 9434e88a..cb663804 100644 --- a/devices/weather/OpenWeatherMap/xaal/owm/gw.py +++ b/devices/weather/OpenWeatherMap/xaal/owm/gw.py @@ -1,73 +1,78 @@ -import platform import logging +import platform import pyowm from pyowm.exceptions import OWMError -from xaal.lib import tools -from xaal.schemas import devices -from xaal.lib import helpers +from xaal.lib import helpers, tools +from xaal.schemas import devices PACKAGE_NAME = "xaal.owm" -RATE = 300 # update every 5 min +RATE = 300 # update every 5 min API_KEY = '3a5989bac31472cd41d69e92838bd454' logger = logging.getLogger(PACKAGE_NAME) + def setup_dev(dev): - dev.vendor_id = "IHSEV" + dev.vendor_id = "IHSEV" dev.product_id = "OpenWeatherMap" - dev.info = "%s@%s" % (PACKAGE_NAME,platform.node()) - dev.url = "https://www.openweathermap.org" - dev.version = 0.3 + dev.info = "%s@%s" % (PACKAGE_NAME, platform.node()) + dev.url = "https://www.openweathermap.org" + dev.version = 0.3 return dev + class GW: - def __init__(self,engine): + def __init__(self, engine): self.eng = engine engine.on_stop(self.save_config) cfg = tools.load_cfg(PACKAGE_NAME) - if cfg == None: + if cfg is None: logger.info('New config file') cfg = tools.new_cfg(PACKAGE_NAME) cfg['config']['base_addr'] = str(tools.get_random_base_uuid()) self.cfg = cfg - self.setup() self.update() def setup(self): - """ create devices, register ..""" + """create devices, register ..""" cfg = self.cfg['config'] base_addr = tools.get_uuid(cfg['base_addr']) + if base_addr is None: + logger.error('Invalid base_addr') + return # devices - d1 = devices.thermometer(base_addr +0) - d2 = devices.hygrometer(base_addr +1) - d3 = devices.barometer(base_addr +2) - d4 = devices.windgauge(base_addr +3) + d1 = devices.thermometer(base_addr + 0) + d2 = devices.hygrometer(base_addr + 1) + d3 = devices.barometer(base_addr + 2) + d4 = devices.windgauge(base_addr + 3) d4.unsupported_attributes.append('gust_angle') - d4.del_attribute(d4.get_attribute('gust_angle')) - self.devs = [d1,d2,d3,d4] + gust = d4.get_attribute('gust_angle') + if gust: + d4.del_attribute(gust) + self.devs = [d1, d2, d3, d4] # gw gw = devices.gateway(tools.get_uuid(cfg['addr'])) gw.attributes['embedded'] = [dev.address for dev in self.devs] - group = base_addr + 0xff - for dev in (self.devs + [gw,]): + group = base_addr + 0xFF + for dev in self.devs + [gw,]: setup_dev(dev) if dev != gw: dev.group_id = group self.eng.add_devices(self.devs + [gw,]) # OWM stuff - self.eng.add_timer(self.update,RATE) + self.eng.add_timer(self.update, RATE) # API Key - api_key = cfg.get('api_key',None) + api_key = cfg.get('api_key', None) if not api_key: cfg['api_key'] = api_key = API_KEY - # Place - self.place = cfg.get('place',None) + # Place + self.place = cfg.get('place', None) if not self.place: cfg['place'] = self.place = 'Brest,FR' # We are ready @@ -78,18 +83,19 @@ class GW: try: self._update() except OWMError as e: - logger.warn(e) + logger.warning(e) def _update(self): weather = self.owm.weather_at_place(self.place).get_weather() - self.devs[0].attributes['temperature'] = round(weather.get_temperature(unit='celsius').get('temp',None),1) - self.devs[1].attributes['humidity'] = weather.get_humidity() - self.devs[2].attributes['pressure'] = weather.get_pressure().get('press',None) - wind = weather.get_wind().get('speed',None) - if wind: wind = round(wind * 3600 / 1000, 1) # m/s => km/h + self.devs[0].attributes['temperature'] = round(weather.get_temperature(unit='celsius').get('temp', None), 1) + self.devs[1].attributes['humidity'] = weather.get_humidity() + self.devs[2].attributes['pressure'] = weather.get_pressure().get('press', None) + wind = weather.get_wind().get('speed', None) + if wind: + wind = round(wind * 3600 / 1000, 1) # m/s => km/h self.devs[3].attributes['wind_strength'] = wind - self.devs[3].attributes['wind_angle'] = weather.get_wind().get('deg',None) - self.devs[3].attributes['gust_strength'] = weather.get_wind().get('gust',None) + self.devs[3].attributes['wind_angle'] = weather.get_wind().get('deg', None) + self.devs[3].attributes['gust_strength'] = weather.get_wind().get('gust', None) def save_config(self): cfg = tools.load_cfg(PACKAGE_NAME) @@ -97,6 +103,7 @@ class GW: logger.info('Saving configuration file') self.cfg.write() + def setup(engine): gw = GW(engine) return True -- GitLab