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)
示例#3
0
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)