1. Go to this page and download the library: Download syntaxseed/phue library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
syntaxseed / phue example snippets
nt = new \Phue\Client('10.0.1.1', 'yourusername');
$client = new \Phue\Client('10.0.1.31', 'yourbridgeusername');
try {
$client->sendCommand(
new \Phue\Command\Ping
);
} catch (\Phue\Transport\Exception\ConnectionException $e) {
echo 'There was a problem accessing the bridge';
}
try {
$ping = new \Phue\Command\Ping;
$ping->send($client);
} catch (\Phue\Transport\Exception\ConnectionException $e) {
echo 'There was a problem accessing the bridge';
}
$isAuthenticated = $client->sendCommand(
new \Phue\Command\IsAuthorized
);
echo $isAuthenticated
? 'You are authenticated!'
: 'You are not authenticated!';
// Push the bridge's link button prior to running this
try {
$response = $client->sendCommand(
new \Phue\Command\CreateUser
);
echo 'New user created: ' . $response->username;
} catch (\Phue\Transport\Exception\LinkButtonException $e) {
echo 'The link button was not pressed!';
}
// From the client
foreach ($client->getLights() as $lightId => $light) {
echo "Id #{$lightId} - {$light->getName()}", "\n";
}
// Or from command
$lights = $client->sendCommand(
new \Phue\Command\GetLights
);
foreach ($lights as $lightId => $light) {
echo "Id #{$lightId} - {$light->getName()}", "\n";
}
// Retrieve light of id 3 from convenience method
$lights = $client->getLights();
$light = $lights[3];
echo $light->getName(), "\n";
// Manually send command to get light of id 3
$light = $client->sendCommand(
new \Phue\Command\GetLightById(3)
);
echo $light->getName(), "\n";
// Get a specific light
$lights = $client->getLights();
$light = $lights[3];
// Retrieving light properties:
echo $light->getId(), "\n",
$light->getName(), "\n",
$light->getType(), "\n",
$light->getModelId(), "\n",
$light->getSoftwareVersion(), "\n",
$light->isOn(), "\n",
$light->getAlert(), "\n",
$light->getBrightness(), "\n",
$light->getHue(), "\n",
$light->getSaturation(), "\n",
$light->getXY()['x'], "\n",
$light->getXY()['y'], "\n",
$light->getRGB()['red'], "\n",
$light->getRGB()['green'], "\n",
$light->getRGB()['blue'], "\n",
$light->getEffect(), "\n",
$light->getColorTemp(), "\n",
$light->getColorMode(), "\n";
// Setting name
$light->setName('Living Room #1');
// Setting on/off state (true|false)
$light->setOn(true);
// Setting alert (select|lselect)
$light->setAlert('lselect');
// Setting brightness (0 for no light, 255 for max brightness)
$light->setBrightness(255);
// Set hue (0 to 65535), pairs with saturation, changes color mode to 'hs'
$light->setHue(56000);
// Set saturation (0 min, 255 max), pairs with hue, changes color mode to 'hs'
$light->setSaturation(255);
// Set xy, CIE 1931 color space (from 0.0 to 1.0 for both x and y)
// Changes color mode to 'xy'
$light->setXY(0.25, 0.5);
// Set rgb (0 to 255 each), is converted to XY and brightness
$light->setRGB(30, 100, 50);
// Set color temp (153 min, 500 max), changes color mode to 'ct'
$light->setColorTemp(300);
// Set effect (none|colorloop)
$light->setEffect('colorloop');
// Retrieve light
$lights = $client->getLights();
$light = $lights[3];
// Setting the brightness, hue, and saturation at the same time
$command = new \Phue\Command\SetLightState($light);
$command->brightness(200)
->hue(0)
->saturation(255);
// Transition time (in seconds).
// 0 for "snapping" change
// Any other value for gradual change between current and new state
$command->transitionTime(3);
// Send the command
$client->sendCommand(
$command
);
// Create group with list of ids, and get group
$groupId = $client->sendCommand(
new \Phue\Command\CreateGroup('Office Lights', array(1, 2))
);
$groups = $client->getGroups();
$group = $groups[$groupId];
// Create group with list of lights, and get group
$groupId2 = $client->sendCommand(
new \Phue\Command\CreateGroup(
'Office Lights #2',
array(
$client->getLights()[1],
$client->getLights()[2],
)
)
);
$groups = $client->getGroups();
$group = $groups[$groupId2];
// Convenient way of retrieving groups
foreach ($client->getGroups() as $groupId => $group) {
echo $group->getId(), ' - ',
$group->getName(), "\n";
}
// Manual command for retrieving groups
$groups = $client->sendCommand(
new \Phue\Command\GetGroups
);
foreach ($groups as $groupId => $group) {
echo $group->getId(), ' - ',
$group->getName(), "\n";
}
// Convenient way of retrieving a single group by id
$groups = $client->getGroups();
$group = $groups[1];
echo $group->getId(), ' - ',
$group->getName(), "\n";
// Manual command for retrieving group by id
$group = $client->sendCommand(
new \Phue\Command\GetGroupById(1)
);
echo $group->getId(), ' - ',
$group->getName(), "\n";
// Get a specific group
$groups = $client->getGroups();
$group = $groups[1];
// Retrieving group properties:
echo $group->getId(), "\n",
$group->getName(), "\n",
implode(', ', $group->getLightIds()), "\n",
$group->isOn(), "\n",
$group->getBrightness(), "\n",
$group->getHue(), "\n",
$group->getSaturation(), "\n",
$group->getXY()['x'], "\n",
$group->getXY()['y'], "\n",
$group->getRGB()['red'], "\n",
$group->getRGB()['green'], "\n",
$group->getRGB()['blue'], "\n",
$group->getColorTemp(), "\n",
$group->getColorMode(), "\n",
$group->getEffect(), "\n";
// Setting name
$group->setName('Office');
// Setting lights
$lights = $client->getLights();
$group->setLights(array(
$lights[1],
$lights[2]
));
// Setting on/off state (true|false)
$group->setOn(true);
// Setting brightness (0 for no light, 255 for max brightness)
$group->setBrightness(255);
// Set hue (0 to 65535), pairs with saturation, changes color mode to 'hs'
$group->setHue(56000);
// Set saturation (0 min, 255 max), pairs with hue, changes color mode to 'hs'
$group->setSaturation(255);
// Set xy, CIE 1931 color space (from 0.0 to 1.0 for both x and y)
// Changes color mode to 'xy'
$group->setXY(0.25, 0.5);
// Set rgb (0 to 255 each), is converted to XY and brightness
$group->setRGB(30, 100, 50);
// Set color temp (153 min, 500 max), changes color mode to 'ct'
$group->setColorTemp(300);
// Set effect (none|colorloop)
$group->setEffect('colorloop');
// Retrieve group
$groups = $client->getGroups();
$group = $groups[1];
// Setting the brightness, color temp, and transition at the same time
$command = new \Phue\Command\SetGroupState($group);
$command->brightness(200)
->colorTemp(500)
->transitionTime(0);
// Send the command
$client->sendCommand(
$command
);
// Retrieve group and delete
$groups = $client->getGroups();
$group = $groups[1];
$group->delete();
// Send command
$client->sendCommand(
new \Phue\Command\DeleteGroup(1)
);
// Get all group
$allGroup = $client->sendCommand(
new \Phue\Command\GetGroupById(0)
);
// Set brightness on all bulbs
$allGroup->setBrightness(255);
// Create command to dim all lights
$groupCommand = new \Phue\Command\SetGroupState(0);
$groupCommand->brightness(30);
// Create schedule command to run 10 seconds from now
// Time is a parsable DateTime date.
$scheduleCommand = new \Phue\Command\CreateSchedule(
'Dim all lights',
'+10 seconds',
$groupCommand
);
// Set a custom description on the schedule, defaults to name
$scheduleCommand->description('Dims all lights in house to 30');
// Send the schedule to bridge
$client->sendCommand($scheduleCommand);
// Show list of schedules
$command = $schedule->getCommand();
foreach ($client->getSchedules() as $scheduleId => $schedule) {
echo $schedule->getId(), "\n",
$schedule->getName(), "\n",
$schedule->getDescription(), "\n",
$schedule->getTime(), "\n",
$command['address'], "\n",
$command['method'], "\n",
json_encode($command['body']), "\n";
}
// Delete a given schedule
$schedules = $client->getSchedules();
$schedule = $schedules[2];
$schedule->delete();
// Instantiate a client object
$client = new \Phue\Client('10.0.1.1', 'yourusername');
// Override the default transport
$client->setTransport(
new \Phue\Transport\Adapter\Streaming
);
vendor/autoload.php
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.