https://github.com/dnsimmons/openweather
OpenWeather is a Laravel package simplifying working with the free Open Weather Map APIs.
https://github.com/dnsimmons/openweather
laravel openweather php weather weather-api
Last synced: 5 months ago
JSON representation
OpenWeather is a Laravel package simplifying working with the free Open Weather Map APIs.
- Host: GitHub
- URL: https://github.com/dnsimmons/openweather
- Owner: dnsimmons
- Created: 2019-02-24T07:19:11.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2024-01-25T19:44:42.000Z (over 2 years ago)
- Last Synced: 2025-08-20T01:22:40.679Z (10 months ago)
- Topics: laravel, openweather, php, weather, weather-api
- Language: PHP
- Homepage:
- Size: 31.3 KB
- Stars: 20
- Watchers: 1
- Forks: 9
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
README
# OpenWeather
[](https://packagist.org/packages/dnsimmons/openweather)
[](https://packagist.org/packages/dnsimmons/openweather)
[](https://packagist.org/packages/dnsimmons/openweather)
[](https://packagist.org/packages/dnsimmons/openweather)
## About
OpenWeather is a [Laravel](https://laravel.com) package simplifying working with the free [Open Weather Map](https://openweathermap.org) APIs.
OpenWeather takes care of making requests to various free Open Weather Map APIs and
returns well-structured easy to use weather data including conditions, temperatures, humidity,
pressure, wind, location, and timestamp data.
Take a look at the Example Usage section output below for a typical structured response.
### Supported APIs
The package supports the following free Open Weather Map APIs:
- [Current Weather](https://openweathermap.org/current)
- [4 Day 3 Hour Forecast](https://openweathermap.org/api/hourly-forecast)
- [Onecall Forecast](https://openweathermap.org/api/one-call-api)
- [5 Day Historical](https://openweathermap.org/api/one-call-api#history)
### Free API Limitations
- 60 calls/minute up to 1,000,000 calls/month
- 1000 calls/day when using Onecall requests
### Requirements
- A valid Open Weather Maps API Key (AppID).
## Install
Use [composer](http://getcomposer.org) to install the package
$ composer require dnsimmons/openweather
For Laravel >= 5.5 the package is auto-discovered.
For older Laravel versions prior to 5.5 add the service provider to your `config/app.php` along with an alias:
'providers' => [
...
Dnsimmons\OpenWeather\OpenWeatherServiceProvider::class,
];
'aliases' => [
...
'OpenWeather' => Dnsimmons\OpenWeather\OpenWeather::class,
];
Publish the required package configuration file using the artisan command:
$ php artisan vendor:publish
Edit the `.env` file in your Laravel instance add the following environment variables and add your OpenWeather API key:
OPENWEATHER_API_KEY="your-api-key"
OPENWEATHER_API_LANG="en"
OPENWEATHER_API_DATE_FORMAT="m/d/Y"
OPENWEATHER_API_TIME_FORMAT="h:i A"
OPENWEATHER_API_DAY_FORMAT="l"
## Example Usage
In the example below we fetch the current weather by postal code.
$weather = new OpenWeather();
$current = $weather->getCurrentWeatherByPostal('02111');
print_r($current);
**Output**
Array
(
[formats] => Array
(
[lang] => en
[date] => m/d/Y
[day] => l
[time] => h:i A
[units] => imperial
)
[datetime] => Array
(
[timestamp] => 1593387767
[timestamp_sunrise] => 1593335394
[timestamp_sunset] => 1593390304
[formatted_date] => 06/28/2020
[formatted_day] => Sunday
[formatted_time] => 11:42 PM
[formatted_sunrise] => 09:09 AM
[formatted_sunset] => 12:25 AM
)
[location] => Array
(
[id] => 4930956
[name] => Boston
[country] => US
[latitude] => 42.36
[longitude] => -71.06
)
[condition] => Array
(
[id] => 801
[name] => Rain
[desc] => light rain
[icon] => https://openweathermap.org/img/w/10d.png
)
[wind] => Array
(
[speed] => 11.5
[deg] => 113
[direction] => SE
)
[forecast] => Array
(
[temp] => 67
[temp_min] => 64
[temp_max] => 68
[pressure] => 1007
[humidity] => 88
)
)
## Methods
All methods return an array on success and FALSE on failure.
### Current Weather Methods
**getCurrentWeatherByCityName**(*string $city*, *string $units*)
**Params**
- City Name (example: Boston)
- Units (imperial (default), metric, or kelvin)
**getCurrentWeatherByCityId**(*int $id*, *string $units*)
**Params**
- City ID
- Units (imperial (default), metric, or kelvin)
**getCurrentWeatherByCoords**(*string $latitude*, *string $longitude*, *string $units*)
**Params**
- Latitude
- Longitude
- Units (imperial (default), metric, or kelvin)
**getCurrentWeatherByPostal**(*string $postal*, *string $units*)
**Params**
- US Postal Code
- Units (imperial (default), metric, or kelvin)
### 4 Day 3 Hour Forecast Methods
**getForecastWeatherByCityName**(*string $city*, *string $units*)
**Params**
- City Name (example: Boston)
- Units (imperial (default), metric, or kelvin)
**getForecastWeatherByCityId**(*int $id*, *string $units*)
**Params**
- City ID
- Units (imperial (default), metric, or kelvin)
**getForecastWeatherByCoords**(*string $latitude*, *string $longitude*, *string $units*)
**Params**
- Latitude
- Longitude
- Units (imperial (default), metric, or kelvin)
**getForecastWeatherByPostal**(*string $postal*, *string $units*)
**Params**
- US Postal Code
- Units (imperial (default), metric, or kelvin)
### Onecall Request Methods
**getOnecallWeatherByCoords**(*string $latitude*, *string $longitude*, *string $units*, *string $exclude*)
**Params**
- Latitude
- Longitude
- Units (imperial (default), metric, or kelvin)
- Exclude (optional comma separated values: current,hourly,daily)
### Onecall Historical Request Methods
**getHistoricalWeatherByCoords**(*string $latitude*, *string $longitude*, *string $date*, *string $units*)
**Params**
- Latitude
- Longitude
- Date (example: 7/12/2020)
- Units (imperial (default), metric, or kelvin)