homebridge-weatherOpenWeatherMap Plugin for Homebridge
homebridge-weather
Homebridge plugin for displaying the weather, humidity and min- or max-temperature from openweathermap.org
If you find my work useful you can buy me a coffee, I am very thankful for your support.
Installation
- Install Homebridge using: 
(sudo) npm install -g --unsafe-perm homebridge - Install this plugin using: 
(sudo) npm install -g homebridge-weather - Get an API-Key from openweathermap.org
 - Find your city (make sure the query only returns a single result!). Alternatively you can use a different query parameter (see 'Fields')
 - Update your Homebridge 
config.jsonusing the sample below (append in the block 'accessories' not 'platforms'). 
Configuration
Weather
Example for configuration by City
"accessories": [
    {
      "accessory": "Weather",
      "apikey": "YOUR_KEY_HERE",
      "location": "Stuttgart,de",
      "name": "OpenWeatherMap Temperature"
    }
]
By ID
replace location with
"locationById": "2172797",
By Coordinates
replace location with
"locationByCoordinates": "lat=48.70798341&lon=9.17019367",
Celsius/Fahrenheit (you probably don't have to change anything here)
iOS should take care of the correct unit, HomeApp converts the values internally.
If you want a different unit than your OS' settings, you can change the unit explicitly by adding unit with one of the following values:
"unit": "metric",
for Celsius (default)
or
"unit": "imperial",
for Fahrenheit
Forecast
To show daily min/max values, you have to add two additional accessories:
"accessories": [
  {
     "accessory":"Weather",
     "apikey":"YOUR_KEY_HERE",
     "locationByCoordinates":"lat=48.70798341&lon=9.17019367",
     "name":"Today Min",
     "type":"min"
  },
  {
     "accessory":"Weather",
     "apikey":"YOUR_KEY_HERE",
     "locationByCoordinates":"lat=48.70798341&lon=9.17019367",
     "name":"Today Max",
     "type":"max"
  }
]
Cloudiness
To show cloudiness in percent configure as follows:
"accessories": [
  {
     "accessory":"Weather",
     "apikey":"YOUR_KEY_HERE",
     "locationByCoordinates":"lat=48.70798341&lon=9.17019367",
     "name":"Cloudiness",
     "type":"clouds"
  }
]
Wind-speed
To show wind-speed in meter/sec configure as follows:
"accessories": [
  {
     "accessory":"Weather",
     "apikey":"YOUR_KEY_HERE",
     "locationByCoordinates":"lat=48.70798341&lon=9.17019367",
     "name":"Wind",
     "type":"windspeed"
  }
]
To display in miles/hour additionally configure
   "unit": "imperial"
Sunrise/noon/sunset
This type publishes a value between 0 and 100 that indicates how far through the day we are where 0% is the sunrise (and everything before) and 100% is sunset (and everything after). 50% is noon accordingly.
For using this value as trigger, you have to define a "pollingInterval" as well, otherwise the value only gets updated while having HomeApp in foreground.
"accessories": [
  {
     "accessory":"Weather",
     "apikey":"YOUR_KEY_HERE",
     "locationByCoordinates":"lat=48.70798341&lon=9.17019367",
     "name":"Sun",
     "type":"sun",
     "pollingInterval": 10
  }
]
Hint
You can add multiple accessories if you want to display additional information like min/max or the temperature of different locations. Just make sure that the field name is unique
Polling
By default, no polling-interval is specified. That means, the temperature is only updated when the Home-App is opened. There might be scenarios though, where you would want to periodically update the temperature e.g. as source for trigger-rules.
OpenWeatherMap has a generous amount of free calls per API-key: you can poll the temperature up to 60 times a minute. Beware that just because you can doesn't mean you should
I'd also suggest that you add a polling-interval only for the type current, since min and max are forecasts and probably won't change throughout the day.
Temperature profile with Elgato Eve App (FakeGato support)
With the enableHistory flag, the FakeGato-service is used to log temperature and humidity. This doesn't work with the default Home-App, you have to use the Elgato Eve App.
Since FakeGato requires to log an entry at least every 10 minutes, this feature only becomes active if you set enableHistory to true AND define an pollingInterval!
I suggest the following settings:
"accessories": [
    {
       "accessory": "Weather",
       "apikey": "YOUR_KEY_HERE",
       "location": "Stuttgart,de",
       "name": "OpenWeatherMap Temperature",
       "pollingInterval": 10,
       "enableHistory": true
     }
]
Config file
Take a look at the example config.json
Fields:
-  
accessorymust be "Weather" (required). -  
apikeyAPI-Key for accessing OpenWeatherMap API (required). -  
locationcity-name query string (resembles to q-parameter) (required). - OR 
locationByIdcityid query string (resembles to cityid-parameter) (required). - OR 
locationByCoordinatesgeo query string (resembles to geo-parameter) (required). - OR 
locationByZipzip query string (resembles to zip-parameter) (required). -  
nameis the name of the published accessory (required). -  
showHumidityweather or not show the humidity (optional, only works for current weather not forecast, defaults to true). -  
nameHumidityhumidity can have a different name (optional, only works ifshowHumidityis true, defaults to the same asname). -  
showTemperatureweather or not show the temperature (optional, setting to false only makes sense ifshowHumidityos set to true, defaults to true). -  
typethe type of the displayed value, eithermin,max,current,clouds,sunorwindspeed(optional, defaults tocurrent) -  
pollingIntervalthe time (in minutes) for periodically updating the temperature (optional, defaults to 0 which means polling only happens when opening the Home-App) -  
enableHistoryflag for enabling the FakeGato-service (see above) for temperature and humidity logging (optional, defaults to false, only works when polling is enabled) -  
unitchange the temperature unit to Celsius or Fahrenheit explicitly (optional, defaults tometric(Celsius), for Fahrenheit useimperial. Beware that iOS usually does the job correctly) 
Known Issues
- Default Home-App can't trigger scenes: try Hesperus App instead
 
Advanced usage
If you need more features like a more detailed forecast, take a look at homebridge-weather-plus (here), it now supports OpenWeatherMap as well.
(c) Screenshots are taken from the Elgato Eve app



