OK, here are the details for access:
MeteoBlue
Weather variables are clustered into data packages. The API packages can be further combined according to your preference, as one API call may deliver several data packages. You will not be charged for the individual API calls but for the amount of meteoblue credits you use.
Forecast API
https://my.meteoblue.com/packages/basic-1h_basic-day_current_clouds-1h_clouds-day?apikey=V34TIvydZROjCBl2&lat=<LAT>&lon=<LON>&asl=<ALTITUDE>&format=json&windspeed=mph
Supplying the actual altitude may give better data, it uses satellite data otherwise which may not be correct for your location.
{
"apikey": "V34TIvydZROjCBl2",
"lat": <LAT>,
"lon": <LON>,
"asl": <ALTITUDE>,
"format": "json",
"windspeed": "mph"
}
The above call example uses 22k credits, 5 calls. That helps you work out how many calls you can make per day/week/month.
For general purposes, contains the most common weather variables
basic-15min (8000 credits)
basic-1h (8000 credits)
basic-3h (8000 credits)
basic-day (4000 credits)
Weather variables:
- Temperature
- Snow fraction
- Wind speed and direction
- Relative humidity
- Sea level pressure
- Pictocode
- Convective precipitation
- Apparent temperature
- Precipitation amount and probability
- rainSPOT
[
Current weather information, including observations and measurements
current (4000 credits)
Weather variables:
- Temperature
- Wind speed
- Pictocode
[
Detailed cloud layer and sunshine duration forecasts
clouds-15min (4000 credits)
clouds-1h (4000 credits)
clouds-3h (4000 credits)
clouds-day (2000 credits)
Weather variables:
- Visibility
- Sunshine time
- Low, medium, high, total cloud cover
Information about rising and setting times of sun and moon
sunmoon (2000 credits)
Weather variables:
- Sunrise and sunset time
- Moon rise and moon set time
- Moon phase angle and name
- Moon age
- Moon phase transit time
[
Information about the brightness of the sky under clear and actual conditions
moonlight-15min (4000 credits)
moonlight-30min (4000 credits)
moonlight-1h (4000 credits)
Weather variables:
- Moonlight clear sky
- Moonlight actual
- Nightsky brightness clear sky
- Nightsky brightness actual
- Zenith angle
Image API
https://my.meteoblue.com/images/meteogram?lat=<LAT>&lon=<LON>&asl=<ALTITUDE>&tz=Europe%2FLondon&apikey=V34TIvydZROjCBl2&format=png&dpi=72&lang=en&temperature_units=C&precipitation_units=mm&windspeed_units=mph&location_name=Home
16k credits per image
[{"id":"62a1f121315aad32","type":"group","z":"d915a360.b8766","name":"MeteoBlue","style":{"fill":"#e3f3d3","fill-opacity":"0.21","label":true,"color":"#000000"},"nodes":["f0689e110956c737","a12a0bb63b07813c","41d6c8b36ca47933","eb022b60d3a4223c","8f49c26d577a1824","c9a4efa468c8e96a","309f89edbf01a924","bfbd5e7e075f02d3"],"x":54.888885498046875,"y":979,"w":1002,"h":144.4444580078125},{"id":"f0689e110956c737","type":"cronplus","z":"d915a360.b8766","g":"62a1f121315aad32","name":"Every hour 10 seconds before the hour","outputField":"payload","timeZone":"Europe/London","storeName":"","commandResponseMsgOutput":"output1","defaultLocation":"","defaultLocationType":"default","outputs":1,"options":[{"name":"schedule2","topic":"hourlyOWM-day","payloadType":"default","payload":"","expressionType":"cron","expression":"50 59,29 6-23 * * *","location":"","offset":"0","solarType":"all","solarEvents":"sunrise,sunset"},{"name":"schedule3","topic":"hourlyOWM-night","payloadType":"default","payload":"","expressionType":"cron","expression":"50 59,29 0-2 * * *","location":"","offset":"0","solarType":"all","solarEvents":"sunrise,sunset"}],"x":155,"y":1020,"wires":[[]],"l":false},{"id":"a12a0bb63b07813c","type":"change","z":"d915a360.b8766","g":"62a1f121315aad32","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"(\t $apis := $globalContext(\"weather_apis\", \"file\");\t \t {\t \"apikey\": $apis.keys.meteoblue,\t \"lat\": $apis.lat,\t \"lon\": $apis.lon,\t \"asl\": $apis.alt,\t \"format\": \"json\",\t \"windspeed\": \"mph\"\t }\t)","tot":"jsonata"},{"t":"set","p":"url","pt":"msg","to":"https://my.meteoblue.com/packages/basic-1h_basic-day_current_clouds-1h_clouds-day","tot":"str"},{"t":"set","p":"headers","pt":"msg","to":"{\"content-type\":\"application/json\",\"Accept\":\"application/json\",\"User-Agent\":\"node-red\"}","tot":"json"},{"t":"set","p":"distance","pt":"msg","to":"(\t $apis := $globalContext(\"weather_apis\", \"file\");\t\t {\t \"from\": {\t \"lat\": $apis.lat,\t \"lon\": $apis.lon\t },\t \"to\": {\t \"lat\": \"n/a\",\t \"lon\": \"n/a\"\t },\t \"units\": \"m\",\t \"howFar\": \"n/a\"\t } \t)","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":215,"y":1020,"wires":[["41d6c8b36ca47933"]],"l":false},{"id":"41d6c8b36ca47933","type":"http request","z":"d915a360.b8766","g":"62a1f121315aad32","name":"","method":"GET","ret":"obj","paytoqs":"query","url":"","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[],"x":265,"y":1020,"wires":[["eb022b60d3a4223c"]],"l":false},{"id":"eb022b60d3a4223c","type":"change","z":"d915a360.b8766","g":"62a1f121315aad32","name":"Set to lat/lon for distance calc","rules":[{"t":"set","p":"distance.to.lat","pt":"msg","to":"payload.metadata.latitude","tot":"msg"},{"t":"set","p":"distance.to.lon","pt":"msg","to":"payload.metadata.longitude","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":315,"y":1020,"wires":[["8f49c26d577a1824"]],"l":false},{"id":"8f49c26d577a1824","type":"link call","z":"d915a360.b8766","g":"62a1f121315aad32","name":"","links":["8de8d5547f88456d"],"linkType":"static","timeout":"1","x":495,"y":1020,"wires":[["c9a4efa468c8e96a"]]},{"id":"c9a4efa468c8e96a","type":"change","z":"d915a360.b8766","g":"62a1f121315aad32","name":"set global.weatherForecasts.meteoBlue","rules":[{"t":"set","p":"#:(file)::weatherForecasts.meteoBlue","pt":"global","to":"payload","tot":"msg"},{"t":"set","p":"#:(file)::weatherForecasts.meteoBlue.lastUpdate","pt":"global","to":"","tot":"date"},{"t":"move","p":"distance","pt":"msg","to":"payload.distance","tot":"msg"},{"t":"set","p":"weatherForecasts.meteoBlue.distance","pt":"global","to":"payload.distance","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":800.8888854980469,"y":1022.4444580078125,"wires":[["309f89edbf01a924"]]},{"id":"309f89edbf01a924","type":"link out","z":"d915a360.b8766","g":"62a1f121315aad32","name":"Out to home dashboard weather route","mode":"link","links":["91681904dca2a264"],"x":1015.8888854980469,"y":1022.4444580078125,"wires":[]},{"id":"bfbd5e7e075f02d3","type":"inject","z":"d915a360.b8766","g":"62a1f121315aad32","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":160.88888549804688,"y":1082.4444580078125,"wires":[["a12a0bb63b07813c"]]},{"id":"b0eb42bf8e26edf5","type":"global-config","env":[],"modules":{"node-red-contrib-cron-plus":"2.2.4"}}]
Note that you need a retained global context variable called weather_apis that contains your home location and the api keys:
The flow saves everything to another retained context variable and sends it to a UIBUILDER front end.
The front end is rather simplistic right now. When my eyesight is back to normal, it will get improved.
Oh, there is also a distance calculation that I use with any weather API call. It works out the distance from the returned weather data location to my home location. This is because some API's take data from nowhere near where you are and this can make a massive difference in some cases like mine where even a few 100 metres away can have different weather conditions due to the steep hills and location of Sheffield.