cannonb4ll / laravel-philips-hue
Laravel Philips Hue package to control your lights with remote support
Installs: 2 580
Dependents: 0
Suggesters: 0
Security: 0
Stars: 87
Watchers: 2
Forks: 12
Open Issues: 3
Requires
- php: ^7.1
- ext-json: *
- guzzlehttp/guzzle: ^6.5|^7.0
- illuminate/support: ^6.0|^7.0|^8.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.16
- orchestra/testbench: ^3.8|^4.0|^5.0
README
Introduction
I created this package for my company Ploi (https://ploi.io) to control our office lights. For example, when we receive a support ticket, our lights briefly light up green (Ploi's green color), fade out and in a bit.
This package makes it possible to easily manage your lights. Easily trigger your lights whenever a support ticket comes in, or if a new user signs up.
Syntax is as easy as this;
(new HueClient)->lights()->on(1)
Installation
Require the package first:
$ composer require cannonb4ll/laravel-philips-hue
Add this to the config/services.php
file:
... 'philips-hue' => [ 'client_id' => env('PHILIPS_HUE_CLIENT_ID'), 'client_secret' => env('PHILIPS_HUE_CLIENT_SECRET'), 'app_id' => env('PHILIPS_HUE_APP_ID'), 'device_id' => env('PHILIPS_HUE_DEVICE_ID'), 'user' => env('PHILIPS_HUE_USERNAME') ] ...
Sign up (or login) to Philips Hue developer:
https://developers.meethue.com/register/
Next create a new Philips Hue App:
https://developers.meethue.com/add-new-hue-remote-api-app/
Fill in the fields accordingly to their form.
Callback URL: You will have to fill in a valid callback URL (certainly in testing enviroment, or you'd have to do this in production).
This is because we will get the access and refresh tokens right away and store these in your application.
In case if you are using valet, run valet share
in your terminal to get an ngrok URL. Use this URL as callback in that case:
{NGROK_HOST}/hue/auth/receive
(Example: http://aa0515c9.ngrok.io/hue/auth/receive
)
After that, note these variables:
- AppId
- ClientId
- ClientSecret
We still need 2 variables, the device ID and username we will be using for your bridge.
Visit this URL and note the device ID: https://discovery.meethue.com/ (or visit https://account.meethue.com/bridge, you will see the bridge ID there too)
Fill in the details accordingly:
PHILIPS_HUE_CLIENT_ID=
PHILIPS_HUE_CLIENT_SECRET=
PHILIPS_HUE_APP_ID=
PHILIPS_HUE_DEVICE_ID=
PHILIPS_HUE_USERNAME= <-- We will get this in below step
Next we will have to create a user to be able to authenticate with your bridge.
The package will register 2 routes for you:
http://{app-url}/hue/auth
http://{app-url}/hue/auth/receive
Visit /hue/auth
first to start creating a user.
You will be prompted to allow your own application permissions, accept this, you will be redirected to your own application. This is the point when you redirect that you will receive the username in the view from the package.
Grab this username (this is saved in your bridge), and also enter this in your .env
file:
PHILIPS_HUE_USERNAME=
This is it! Now you should be able to execute the methods which we describe below.
You can also disable the default routes from the package by adding routes => false
to your services.php
file:
'philips-hue' => [ 'client_id' => env('PHILIPS_HUE_CLIENT_ID'), 'client_secret' => env('PHILIPS_HUE_CLIENT_SECRET'), 'app_id' => env('PHILIPS_HUE_APP_ID'), 'device_id' => env('PHILIPS_HUE_DEVICE_ID'), 'user' => env('PHILIPS_HUE_USERNAME'), 'routes' => false ]
All the access data is saved in the storage/app/hue.json
file, this contains the keys to access Philips Hue API.
Methods
$hue = new HueClient(); $hue->groups()->all(); $hue->lights()->all(); $hue->lights()->get(1); $hue->lights()->on(1); $hue->lights()->off(1); $hue->lights()->customState(1, [ "hue" => 25500, "bri" =>200, "alert" => 'select' ]);
TODO
- Ability to use without physically pressing the link button
- Add scenes resource
- Add schedules resource
- Add sensors resource
- Add rules resource
- Add capabilities resource
- Add exceptions
- Add testing
- Fix refresh token refreshing automatically
- Update readme methods
Helpful links
https://discovery.meethue.com/
https://developers.meethue.com/develop/hue-api/
https://developers.meethue.com/my-apps/
https://account.meethue.com/apps
https://account.meethue.com/bridge
This is not an official package by Philips