I present to you my web app using my PHP class for Telldus API
URL :
http://files.manticus.info/telldus/telldus-live/
I've named my devices :
Chambre - Néon
Chambre - Chauffage
....
And the application splits names on the " - " to create groups of devices (you can create groups in groups in groups if you want )
PREVIEW :
I'm working on a "remote" in my desktop (Widget Windows Vista/7) but for the moment I have a problem with login/password ...
I will share this widget to you when I will resolve this issue
My PHP Class for Telldus LIVE API :
Code: Select all
<?php
CLASS TELLDUS_LIVE
{
private $consumer;
public function __construct()
{
$this->consumer = new HTTP_OAuth_Consumer(constant('TELLDUS_KEY'), constant('TELLDUS_SECRET'), $_SESSION['accessToken'], $_SESSION['accessTokenSecret']);
}
public function getDevices()
{
$params = array('supportedMethods' => constant('TELLSTICK_TURNON') | constant('TELLSTICK_TURNOFF'));
return json_decode($this->consumer->sendRequest(constant('REQUEST_URI').'/devices/list', $params, 'GET')->getBody());
}
public function getDevice($id, $supportedMetods = '', $extras = '')
{
$params = array('id' => $id);
if($supportedMetods)
{
$params['supportedMethods'] = $supportedMetods;
}
if($extras)
{
$params['extras'] = $extras;
}
return json_decode($this->consumer->sendRequest(constant('REQUEST_URI').'/device/info', $params, 'GET')->getBody());
}
public function addDevice($idClient, $name, $protocol, $model)
{
$params = array(
'clientId'=>$idClient,
'name'=>$name,
'protocol'=>$protocol,
'model'=>$model
);
return json_decode($this->consumer->sendRequest(constant('REQUEST_URI').'/device/add', $params, 'GET')->getBody());
}
public function learnDevice($id)
{
$params = array('id'=>$id);
return json_decode($this->consumer->sendRequest(constant('REQUEST_URI').'/device/learn', $params, 'GET')->getBody());
}
public function removeDevice($id)
{
$params = array('id'=>$id);
return json_decode($this->consumer->sendRequest(constant('REQUEST_URI').'/device/remove', $params, 'GET')->getBody());
}
public function turnOnDevice($id)
{
$params = array('id'=>$id);
return json_decode($this->consumer->sendRequest(constant('REQUEST_URI').'/device/turnOn', $params, 'GET')->getBody());
}
public function turnOffDevice($id)
{
$params = array('id'=>$id);
return json_decode($this->consumer->sendRequest(constant('REQUEST_URI').'/device/turnOff', $params, 'GET')->getBody());
}
public function upDevice($id)
{
$params = array('id'=>$id);
return json_decode($this->consumer->sendRequest(constant('REQUEST_URI').'/device/up', $params, 'GET')->getBody());
}
public function downDevice($id)
{
$params = array('id'=>$id);
return json_decode($this->consumer->sendRequest(constant('REQUEST_URI').'/device/down', $params, 'GET')->getBody());
}
public function stopDevice($id)
{
$params = array('id'=>$id);
return json_decode($this->consumer->sendRequest(constant('REQUEST_URI').'/device/stop', $params, 'GET')->getBody());
}
public function setParameterDevice($id, $parameter, $value)
{
$params = array(
'id'=>$id,
'parameter'=>$parameter,
'value'=>$value
);
return json_decode($this->consumer->sendRequest(constant('REQUEST_URI').'/device/setParameter', $params, 'GET')->getBody());
}
public function dimDevice($id, $level)
{
$params = array(
'id'=>$id,
'level'=>$level,
);
return json_decode($this->consumer->sendRequest(constant('REQUEST_URI').'/device/dim', $params, 'GET')->getBody());
}
public function commandDevice($id, $method, $value)
{
$params = array(
'id'=>$id,
'method'=>$method,
'value'=>$value
);
return json_decode($this->consumer->sendRequest(constant('REQUEST_URI').'/device/command', $params, 'GET')->getBody());
}
public function bellDevice($id)
{
$params = array('id'=>$id);
return json_decode($this->consumer->sendRequest(constant('REQUEST_URI').'/device/bell', $params, 'GET')->getBody());
}
public function setProtocolDevice($id, $protocol)
{
$params = array(
'id'=>$id,
'protocol'=>$protocol,
);
return json_decode($this->consumer->sendRequest(constant('REQUEST_URI').'/device/setProtocol', $params, 'GET')->getBody());
}
public function setModelDevice($id, $model)
{
$params = array(
'id'=>$id,
'model'=>$model,
);
return json_decode($this->consumer->sendRequest(constant('REQUEST_URI').'/device/setModel', $params, 'GET')->getBody());
}
public function setNameDevice($id, $name)
{
$params = array(
'id'=>$id,
'name'=>$name
);
return json_decode($this->consumer->sendRequest(constant('REQUEST_URI').'/device/setName', $params, 'GET')->getBody());
}
public function getSensors()
{
$params = array();
return json_decode($this->consumer->sendRequest(constant('REQUEST_URI').'/sensors/list', $params, 'GET')->getBody());
}
public function getSensor($id)
{
$params = array('id'=>$id);
return json_decode($this->consumer->sendRequest(constant('REQUEST_URI').'/sensor/info', $params, 'GET')->getBody());
}
public function setSensorName($id, $name)
{
$params = array('id'=>$id, 'name'=>$name);
return json_decode($this->consumer->sendRequest(constant('REQUEST_URI').'/sensor/setName', $params, 'GET')->getBody());
}
public function getClients($extras = '')
{
$params = array();
if($extras)
{
$params['extras'] = $extras;
}
return json_decode($this->consumer->sendRequest(constant('REQUEST_URI').'/clients/list', $params, 'GET')->getBody());
}
public function getClient($id, $uuid = '', $code = '', $extras = '')
{
$params = array('id'=>$id);
if($uuid)
{
$params['uuid'] = $uuid;
}
if($code)
{
$params['code'] = $code;
}
if($extras)
{
$params['extras'] = $extras;
}
return json_decode($this->consumer->sendRequest(constant('REQUEST_URI').'/client/info', $params, 'GET')->getBody());
}
public function removeClient($id)
{
$params = array('id'=>$id);
return json_decode($this->consumer->sendRequest(constant('REQUEST_URI').'/client/remove', $params, 'GET')->getBody());
}
public function registerClient($id, $uuid)
{
$params = array(
'id'=>$id,
'uuid'=>$uuid
);
return json_decode($this->consumer->sendRequest(constant('REQUEST_URI').'/client/register', $params, 'GET')->getBody());
}
public function setNameClient($id, $name)
{
$params = array(
'id'=>$id,
'name'=>$name
);
return json_decode($this->consumer->sendRequest(constant('REQUEST_URI').'/client/setName', $params, 'GET')->getBody());
}
public function jobInfoScheduler($id)
{
$params = array('id'=>$id);
return json_decode($this->consumer->sendRequest(constant('REQUEST_URI').'/scheduler/jobInfo', $params, 'GET')->getBody());
}
public function jobListScheduler()
{
$params = array();
return json_decode($this->consumer->sendRequest(constant('REQUEST_URI').'/scheduler/jobList', $params, 'GET')->getBody());
}
public function removeJobScheduler($id)
{
$params = array('id'=>$id);
return json_decode($this->consumer->sendRequest(constant('REQUEST_URI').'/scheduler/removeJob', $params, 'GET')->getBody());
}
public function setJobScheduler($id, $deviceId, $method='2', $methodValue='0', $type='time', $hour=date('H'), $minute=date('i'), $offset='0', $randomInterval='0', $retries='3', $retryInterval='0', $reps='1', $weekdays='1,2,3,4,5,6,7')
{
$params = array(
'id'=>$id,
'deviceId'=>$deviceId,
'method'=>$method,
'methodValue'=>$methodValue,
'type'=>$type,
'hour'=>$hour,
'minute'=>$minute,
'offset'=>$offset,
'randomInterval'=>$randomInterval,
'retries'=>$retries,
'retryInterval'=>$retryInterval,
'reps'=>$reps,
'weekdays'=>$weekdays
);
return json_decode($this->consumer->sendRequest(constant('REQUEST_URI').'/scheduler/setJob', $params, 'GET')->getBody());
}
}
?>
Code: Select all
<?php
if(isset($_GET))
{
require_once 'common.php';
require_once 'class_telldus_live.php';
$telldus_api = new TELLDUS_LIVE();
}
if(isset($_GET))
{
require_once('common.php');
require_once('class_telldus_live.php');
$telldus_api = new TELLDUS_LIVE();
if(isset($_GET['PHPSESSID']))
{
setcookie('PHPSESSID', $_GET['PHPSESSID']);
header('Location: index.php');
}
}
if (isset($_GET['clear'])) {
session_destroy();
header('location:index.php');
exit();
}
if(!isset($_GET['ajax']) || !isset($_SESSION['accessToken']))
{
?>
<!DOCTYPE html>
<html>
<head>
<title>Telldus remote</title>
<link rel="stylesheet" href="remote.css" />
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
<script type="text/javascript">
function request(sUrl, sId)
{
var responseHtml = '';
responseHtml = $.ajax(
{
url:'?ajax&'+sUrl,
async:false
}
).responseText;
if(sId)
{
$('#'+sId).hide();
$('#'+sId).html(responseHtml);
$('#'+sId).slideDown();
}
else
{
alert(responseHtml);
}
}
</script>
<meta charset="utf-8">
</head>
<body>
<!--<h1>Telldus remote</h1>-->
<?php
if (!isset($_SESSION['accessToken'])) {
?>
<h2>Session :</h2>
No access token: <a href="getRequestToken.php">connexion</a><?php
exit();
}
}
if(!empty($_SESSION['token']) && !empty($_SESSION['tokenSecret']) && !isset($_GET['ajax'])) {
$oClients = $telldus_api->getClients();
echo '<div id="clients">';
foreach($oClients->client as $client)
{
if(isset($_POST['origin']) && $_POST['origin'] == 'widget_windows')
{
echo '<h2 class="client" onclick="changeContent(\'?getDevices&idClient='.$client->id.'\');">'.$client->name.'</h2>';
echo '<a href="javascript:changeContent(\'?getDevices&idClient='.$client->id.'\');">'.$client->name.'</a>';
}
else
{
echo '<h2 class="client" onClick="request(\'getDevices&idClient='.$client->id.'\', \'client'.$client->id.'\');">'.$client->name.'</h2>';
}
echo '<div id="client'.$client->id.'"></div>';
}
echo '</div>';
}
if(isset($_GET['getDevices']))
{
$oSensors = $telldus_api->getSensors()->sensor;
if($oSensors != array())
{
foreach($oSensors as $sensor)
{
$oSensor = $telldus_api->getSensor($sensor->id);
echo '<div class="sensor tab">
<h3>'.ucfirst($oSensor->name).'</h3>
<span class="tab">'.$oSensor->data[0]->value.'°C ('.date('d M H\hi\ms\s', $oSensor->lastUpdated).')</span>
<hr />
</div>';
}
}
$oDevices = $telldus_api->getDevices();
if(isset($_GET['idClient']) && is_numeric($_GET['idClient']))
{
echo '<div id="devices">';
$lastGroup = '';
$group = '';
foreach($oDevices->device as $device)
{
if($device->client == $_GET['idClient'])
{
$nbTab = 0;
if(strpos($device->name, ' - '))
{
$group = explode(' - ', $device->name);
if(count($group) > 1)
{
for($i=0; $i<count($group)-1; $i++)
{
if(!isset($lastGroup[$i]) || $lastGroup[$i] != $group[$i])
{
echo '<div class="tab"><h2>'.$group[$i].'</h2>';
$nbTab++;
}
else
{
echo '<div class="tab">';
$nbTab++;
}
}
$name = $group[count($group)-1];
}
else
{
$name = $device->name;
}
$lastGroup = $group;
}
echo '<div class="device tab state'.$device->state.'">
<h3>'.$name.'</h3>
<span onClick="request(\'deviceOff&idDevice='.$device->id.'\')"><img title="Off" alt="[ Off ]" src="http://live.telldus.com/img/state/state_2.png" /></span>
<span onClick="request(\'deviceOn&idDevice='.$device->id.'\')"><img title="On" alt="[ On ]" src="http://live.telldus.com/img/state/state_1.png" /></span>
</div>';
}
for($i=0; $i<$nbTab;$i++)
{
echo '</div>';
}
}
echo '</div>';
}
}
if (isset($_GET['deviceOn']))
{
if(isset($_GET['idDevice']) && is_numeric($_GET['idDevice']))
{
echo $telldus_api->turnOnDevice($_GET['idDevice'])->status;
}
}
if (isset($_GET['deviceOff']))
{
if(isset($_GET['idDevice']) && is_numeric($_GET['idDevice']))
{
echo $telldus_api->turnOffDevice($_GET['idDevice'])->status;
}
}
if(!isset($_GET['ajax']) || !isset($_SESSION['accessToken']))
{
?>
</body>
</html>
<?php
}
?>