class BuienalarmData: """The data from buienalarm.""" def __init__(self, longitude, latitude, timeframe): """Initialize the data object.""" self.longitude = longitude self.latitude = latitude self.timeframe = timeframe self.buienalarm = None self.temperature = None self.precipitation_now = None self.precipitation_forecast_total = None self.precipitation_forecast_average = None self.forecast = None self.update() @Throttle(MIN_TIME_BETWEEN_UPDATES) def update(self): """Update inverter data.""" self.buienalarm = Buienalarm( lon=self.longitude, lat=self.latitude, timeframe=self.timeframe ) self.temperature = self.buienalarm.get_temperature() self.precipitation_now = self.buienalarm.get_precipitation_now() self.precipitation_forecast_total = ( self.buienalarm.get_precipitation_forecast_total() ) self.precipitation_forecast_average = ( self.buienalarm.get_precipitation_forecast_average() ) self.forecast = json.loads(self.buienalarm.get_forecast()) _LOGGER.debug(self.buienalarm)
def update(self): """Update inverter data.""" self.buienalarm = Buienalarm(lon=self.longitude, lat=self.latitude, timeframe=self.timeframe) self.temperature = self.buienalarm.get_temperature() self.precipitation_now = self.buienalarm.get_precipitation_now() self.precipitation_forecast_total = ( self.buienalarm.get_precipitation_forecast_total()) self.precipitation_forecast_average = ( self.buienalarm.get_precipitation_forecast_average()) self.forecast = json.loads(self.buienalarm.get_forecast()) _LOGGER.debug(self.buienalarm)
async def async_setup_platform( hass: HomeAssistant, config: ConfigType, async_add_entities: AddEntitiesCallback, discovery_info: Optional[DiscoveryInfoType] = None, ) -> None: """Set up Buienalarm.""" latitude = config.get(CONF_LATITUDE, hass.config.latitude) longitude = config.get(CONF_LONGITUDE, hass.config.longitude) timeframe = timedelta(minutes=config[CONF_TIMEFRAME]) if None in (latitude, longitude): _LOGGER.error("Latitude or longitude not set in HomeAssistant config") return api = Buienalarm(longitude, latitude) def api_update(): """Fetch Buienalarm data.""" api.update(safe=True) _LOGGER.debug("New data: %s", api.data) async def async_api_update(): """Schedule fetch Buienalarm data.""" await hass.async_add_executor_job(api_update) client_name = config.get(CONF_NAME) coordinator = DataUpdateCoordinator( hass, _LOGGER, name=client_name, update_method=async_api_update, update_interval=UPDATE_INTERVAL, ) entities = [ BuienalarmSensor(coordinator, api, sensor, client_name, timeframe=timeframe) for sensor in config[CONF_MONITORED_CONDITIONS] ] async_add_entities(entities, True)
def setup_platform(hass, config, add_entities, discovery_info=None): """Set up Buienalarm.""" # import buienalarm from buienalarm.pybuienalarm import Buienalarm latitude = config.get(CONF_LATITUDE, hass.config.latitude) longitude = config.get(CONF_LONGITUDE, hass.config.longitude) timeframe = config.get(CONF_TIMEFRAME, DEFAULT_TIMEFRAME) if None in (latitude, longitude): _LOGGER.error("Latitude or longitude not set in HomeAssistant config") return False b = Buienalarm( longitude, latitude, timeframe) dev = [] for sensor in config[CONF_MONITORED_CONDITIONS]: dev.append(BaSensor(b, sensor, timeframe, config.get(CONF_NAME))) add_entities(dev)