previousnext / bom-weather
PHP lib for accessing the Australian Bureau of Meteorology (BOM) weather forecasts and observations.
1.0.0-alpha1
2018-06-25 03:52 UTC
Requires
- php: ^7.2
- ext-curl: *
- ext-xml: *
- guzzlehttp/guzzle: ~6.3
- psr/log: ~1.0
- symfony/property-access: ~4.1
- symfony/serializer: ~4.1
Requires (Dev)
- drupal/coder: ~8
- mikey179/vfsstream: ~1.0
- phpunit/phpunit: ~6.0
- symfony/phpunit-bridge: ~4.1
This package is auto-updated.
Last update: 2024-10-24 07:05:00 UTC
README
A PHP library for fetching data from the Australian Bureau of Meteorology API.
Installation
composer require previousnext/bom-weather php-http/discovery
The library requires a PSR-18 HTTP client and PSR-17 HTTP factories. We recommend using Guzzle.
Usage
Forecasts
$httpClient = new GuzzleHttp\Client(['base_uri' => 'http://www.bom.gov.au/']); $requestFactory = new Http\Factory\Guzzle\RequestFactory(); $client = new BomClient($httpClient, $requestFactory, new NullLogger()); $forecast = $client->getForecast('IDN10031'); $issueTime = $forecast->getIssueTime(); $regions = $forecast->getRegions(); $metros = $forecast->getMetropolitanAreas(); $locations = $forecast->getLocations(); foreach ($locations as $location) { $aac = $location->getAac(); $desc = $location->getDescription(); /** @var \BomWeather\Forecast\ForecastPeriod[] $periods */ $periods = $location->getForecastPeriods(); // Usually 7 days of forecast data. foreach ($periods as $period) { $date = $period->getStartTime(); $maxTemp = $period->getAirTempMaximum(); $precis = $period->getPrecis(); } }
Observations
$httpClient = new GuzzleHttp\Client(['base_uri' => 'http://www.bom.gov.au/']); $requestFactory = new Http\Factory\Guzzle\RequestFactory(); $client = new BomClient($httpClient, $requestFactory, new NullLogger()); $observationList = $client->getObservationList('IDN60901', '95757'); $refreshMessage = $observationList->getRefreshMessage(); // Get the latest observation. $observation = $observationList->getLatest(); $rain = $observation->getRainSince9am(); // Station information. $station = $observation->getStation(); $name = $station->getName(); // Temperature observations. $temperature = $observation->getTemperature(); $airTemp = $temperature->getAirTemp(); $apparentTemp = $temperature->getApparentTemp(); $relativeHumidity = $temperature->getRealtiveHumidity(); // Wind observations. $wind = $observation->getWind(); $direction = $wind->getDirection(); $speedKmh = $wind->getSpeedKmh(); $gustKmh = $wind->getGustKmh(); // Pressure observations. $pressure = $observation->getPressure(); $qnh = $pressure->getQnh(); $meanSeaLevel = $pressure->getMeanSeaLevel();
Developing
PHP CodeSniffer
./bin/phpcs
PHPUnit
./bin/phpunit
PHPStan
./bin/phpstan