Bureau of Meteorology weather data: Difference between revisions

From Sensors in Schools
Jump to navigation Jump to search
Line 45: Line 45:
* In this instance it is - '''https://api.weather.bom.gov.au/v1/locations/r1r0fs/forecasts/daily'''
* In this instance it is - '''https://api.weather.bom.gov.au/v1/locations/r1r0fs/forecasts/daily'''
* You can copy this link and enter it into a Web Browser to test that it works.
* You can copy this link and enter it into a Web Browser to test that it works.
[[File:Screen Shot 2022-01-01 at 8.48.01 am.png]]
=== Retrieve BOM data using Node-Red HTTP-In node ===
* Create a flow in Node-Red using the nodes:
** '''Inject''' – timestamp
** '''http request''' – this will request data using the daily API
** '''debug''' – to display the output of the API in the debug window
[[File:Screen Shot 2022-01-01 at 8.51.44 am.png]]
* Double click on the '''HTTP request''' node and enter the following details.
* To copy the API request from the Web Browser use the '''right mouse button Copy''' function.
* Paste the API into notepad or a text editor to ensure that it has copied correctly.
* You may need to paste the API into a text editor on the Raspberry Pi.
* Failing this, enter the API directly.
* Ensure that the '''Return is a parsed JSON Object'''
* Give the '''Name - BOM daily'''
[[File:Screen Shot 2022-01-01 at 8.53.24 am.png]]
* '''Deploy''' the program then click on the input to the '''inject node''' to run the program.
* The output should appear in the '''debug''' window on the right.
* Click on the small expansion '''arrows''' to show more of the data content.
[[File:Screen Shot 2022-01-01 at 8.54.41 am.png]]
=== Collecting Day 0 rain data ===
* Add a function node and debug node and arrange the nodes as shown below.
[[File:Screen Shot 2022-01-01 at 8.55.37 am.png]]
* Double click on the function node and enter the following code.
* The code will extract '''day 0 (zero) max rainfall''' and place it in the variable rain.
* '''Name''' the function node '''Day 0 (zero) rain'''
[[File:Screen Shot 2022-01-01 at 8.56.42 am.png]]
* '''Deploy the code'''.
* Clear the Debug window and then click on the inject node to run the program.
* Your output will be different because it will be based on the daily weather forecast.
* This result shows that today ('''day 0''') there will be a maximum of '''2.2 mm of rain'''.
[[File:Screen Shot 2022-01-01 at 8.58.00 am.png]]
=== Collecting Day 1 rain data ===
* Copy the '''Day 0 rain''' function node by entering the shortcut '''Ctrl+C'''
* Enter '''Ctrl-V''' to paste a copy of the node.
* Then '''double click''' on the new function node to edit it.
[[File:Screen Shot 2022-01-01 at 8.59.24 am.png]]

Revision as of 21:59, 31 December 2021

Overview

  • The aim of this lesson is to learn how to retrieve weather data from the Bureau of Meteorology (BOM) using an API (Application Programming Interface).
  • An API is simply a URL that will automatically request data from a server.
  • In this example we will extract rain data from the daily weather forecast.
  • The daily weather forecast includes rain forecast data up to 7 days in advance.
  • We will use this data for our smart rainwater tank.
  • Smart rainwater tanks need to know rain events up to 7 days in advance so that they can discharge tank water before a storm arrives.

Learning Objectives

  • Learn how to use the Developer tools in a Web Browser to find an API
  • Learn how to use an API with HTTP Request node in Node-Red
  • Learn how to extract data from a larger data sets using the function node
  • Learn how to prepare data for a chart node

Obtaining BOM rain forecast data

  • This lesson will demonstrate how to extract data from the Bureau of Meterology using an API (Application Programming Interface).

Find Bureau of Meteorology API for daily weather forecast data

  • Open a Web Browser.
  • Enter the search term weather.bom.gov.au

  • Select Melbourne VIC as the weather location.

  • Ensure that Development Tools is selected under Preferences for your Browser settings.
  • Under the Develop menu select Connect Web Inspector.
  • This will open up an addition window to show some of the inner-workings of the web page.

  • In the Development Tools window click on the Network Tab.
  • Refresh the web browser.
  • In the window on the left search for a file named daily
  • Daily holds data related to current and future weather forecasts including 7 day rain predictions.
  • You can scroll in the Previous window to see all the retrieved data presented in JSON format.

Retrieve BOM data using Node-Red HTTP-In node

  • Create a flow in Node-Red using the nodes:
    • Inject – timestamp
    • http request – this will request data using the daily API
    • debug – to display the output of the API in the debug window

  • Double click on the HTTP request node and enter the following details.
  • To copy the API request from the Web Browser use the right mouse button Copy function.
  • Paste the API into notepad or a text editor to ensure that it has copied correctly.
  • You may need to paste the API into a text editor on the Raspberry Pi.
  • Failing this, enter the API directly.
  • Ensure that the Return is a parsed JSON Object
  • Give the Name - BOM daily

  • Deploy the program then click on the input to the inject node to run the program.
  • The output should appear in the debug window on the right.
  • Click on the small expansion arrows to show more of the data content.

Collecting Day 0 rain data

  • Add a function node and debug node and arrange the nodes as shown below.

  • Double click on the function node and enter the following code.
  • The code will extract day 0 (zero) max rainfall and place it in the variable rain.
  • Name the function node Day 0 (zero) rain

  • Deploy the code.
  • Clear the Debug window and then click on the inject node to run the program.
  • Your output will be different because it will be based on the daily weather forecast.
  • This result shows that today (day 0) there will be a maximum of 2.2 mm of rain.

Collecting Day 1 rain data

  • Copy the Day 0 rain function node by entering the shortcut Ctrl+C
  • Enter Ctrl-V to paste a copy of the node.
  • Then double click on the new function node to edit it.