calvinmclean/automated-garden

Add another implementation of Weather Client using publicly-available weather API

Opened this issue · 0 comments

Description

Add another implementation of weather.Client that uses a publicly-available weather API to remove the current hardware barrier for weather-based watering.

Open Weather Map
Wunderground

Requirements

  • Allow disabling certain features of the client (maybe disable rain data if an API doesn't provide reliable data). An option for implementing this would be to have multiple interfaces and use an assertion to check if methods are available. Other option is to have empty implementation of these methods.
  • Add new interfaces to Weather Client to implement support for certain features: ForecastClient and HistoricalClient

Open Questions

  • Consider adding support for multiple Weather Clients because this allows using
    • This will be tricky to implement in a clean way
  • Consider adding support for forecasting data instead of just historical data
    • This relates to the requirement of adding clients that are partial implementations since some services might have forecast data only (or no forecast data)
    • This also relates to multiple Weather Clients, especially if some are partial implementations