je viens de m'acheter un doorbell. Mon portail est déjà domotisé et ce que je voulais faire était que si j'appuyais sur le cadenas (ouverture du portail) que via une règle, je puisse ouvrir mon portail. or je ne vois rien dans ce code qui puisse permettre de l'ouvrir. cela semble logique car j'ai l'impression qu'on ne peut pas recevoir sur quoi le téléphone appuie. Mais je suis vert, car je ne peux défoncer mon pilier de portail pour atteindre le contact sec.
- Code : Tout sélectionner
<?php
// Version 1 / 31 aout 2016, 1ère version par Connected Object
$eedomus_api_url = 'api.eedomus.com';
$doorbird_ip = getArg('doorbird_ip');
$action = getArg('action');
if ($action == 'test')
{
$doorbird_user = getArg('doorbird_user');
$doorbird_pass = getArg('doorbird_pass');
}
else
{
$doorbird_user = loadVariable('doorbird_user');
$doorbird_pass = loadVariable('doorbird_pass');
if ($doorbird_user == '') // au cas où l'on n'est pas cliquer sur "Tester" lors de l'installation
{
die("ERREUR : Veuillez tester le plugin au préalable, aucun identifiant doorbird initialisé.");
}
}
$headers = array('Authorization: Basic '.base64_encode("$doorbird_user:$doorbird_pass"));
if ($_GET['eedomus_controller_module_id'] != '')
{
saveVariable('action_api_code', $_GET['eedomus_controller_module_id']);
}
$action_api_code = loadVariable('action_api_code');
function sdk_save_image()
{
$ftp_server = getArg('ftp_server');
$ftp_user = getArg('ftp_user');
$ftp_pass = getArg('ftp_pass');
$url = 'http://'.$GLOBALS['doorbird_ip'].'/bha-api/image.cgi';
$img = httpQuery($url, 'GET', /*$post*/ NULL, /*$oauth_token*/ NULL, $GLOBALS['headers']);
$GLOBALS['response'] = ftpUpload($ftp_server, $ftp_user, $ftp_pass, $img, 'doorbird_img.jpg');
}
switch($action)
{
case 'test': // utilisé lors de l'installation du plugin
case 'info':
$url = 'http://'.$doorbird_ip.'/bha-api/info.cgi';
$response = httpQuery($url, 'GET', /*$post*/ NULL, /*$oauth_token*/ NULL, $headers);
break;
case 'savesnap': // images à la demande
sdk_save_image();
break;
case 'poll':
$response = '{ "error": false, "action": "'.$action.'", "value": "doorbell_off"}';
break;
case 'showsnap': // affiche l'image, debug
$url = 'http://'.$doorbird_ip.'/bha-api/image.cgi';
$img = httpQuery($url, 'GET', /*$post*/ NULL, /*$oauth_token*/ NULL, $headers);
sdk_header('image/jpg');
echo $img;
die();
break;
case 'open':
$url = 'http://'.$doorbird_ip.'/bha-api/open-door.cgi';
$response = httpQuery($url, 'GET', /*$post*/ NULL, /*$oauth_token*/ NULL, $headers);
break;
case 'light':
$url = 'http://'.$doorbird_ip.'/bha-api/light-on.cgi';
$response = httpQuery($url, 'GET', /*$post*/ NULL, /*$oauth_token*/ NULL, $headers);
break;
case 'subscribe':
$do_subscribe = true;
break;
default:
$response = '{ "error": true, "action": "none", "msg": "unknown action"}';
break;
}
$subscribed = loadVariable('subscribed');
if (($do_subscribe || $subscribed != $action_api_code) && $action_api_code != '')
{
// On commence par réinitialiser les anciennes notifications, car on a pu supprimer un événement depuis
$url = 'http://'.$doorbird_ip.'/bha-api/notification.cgi?reset=1';
$response .= httpQuery($url, 'GET', /*$post*/ NULL, /*$oauth_token*/ NULL, $headers);
if ($_GET['events'] != '')
{
// On peut se réabonner aux notifications de son choix en les modifiant manuellement depuis la liste des valeurs du module
$events = explode('|', $_GET['events']);
}
else
{
// Par défaut
$events = array('doorbell', 'motionsensor' /*, 'dooropen'*/);
}
foreach ($events as $event)
{
// Doorbird API requires a cloud URL
$notification_url = urlencode('https://'.$eedomus_api_url.'/set?action=periph.value&periph_id='.$action_api_code.'&value='.$event.getApiUser());
$url = 'http://'.$doorbird_ip.'/bha-api/notification.cgi?url='.$notification_url.'&event='.$event.'&subscribe=1&relaxation=10&user=&password=';
$response .= httpQuery($url, 'GET', /*$post*/ NULL, /*$oauth_token*/ NULL, $headers);
}
saveVariable('subscribed', $action_api_code);
saveVariable('subscribed_debug', $response);
if ($do_subscribe)
{
echo $response; die();
}
}
if (strpos($response, '<h1>401 - Unauthorized</h1>') !== false)
{
$response = '{ "error": true, "action": "'.$action.'", "msg": "Unauthorized, please verify your doorbird login & password"}';
}
else if ($action == 'test')
{
echo "<b>Connexion réussie !</b><br><br>Informations sur votre portier Doorbird : <br>".$response;
saveVariable('doorbird_user', $doorbird_user);
saveVariable('doorbird_pass', $doorbird_pass);
die();
}
sdk_header('text/xml');
echo jsonToXML($response);
?>