Skip to content

Commit

Permalink
Merge branch 'beta'
Browse files Browse the repository at this point in the history
  • Loading branch information
ticed35 committed Nov 4, 2017
2 parents 9912bd4 + 992bd06 commit 0c4dc01
Show file tree
Hide file tree
Showing 23 changed files with 996 additions and 175 deletions.
7 changes: 6 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@
*.zip
*.pdn
*.ini
/nbproject/private/
/nbproject/private/
doc/images/config.png
doc/images/config_network.jpg
doc/images/settings.jpg
doc/images/network.jpg
doc/images/ip_control.jpg
7 changes: 6 additions & 1 deletion core/ajax/sonybravia.ajax.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,12 @@
ajax::init();

if (init('action') == 'startdeamon') {
sonybravia::tv_deamon_start(init('ip'), init('mac'), init('psk'));
sonybravia::tv_deamon_start(init('ip'), init('mac'), init('psk'), init('cookie'));
ajax::success();
}

if (init('action') == 'startdeamon_recuppin') {
sonybravia::tv_deamon_pin(init('ip'), init('mac'), init('psk'), init('cookie'));
ajax::success();
}

Expand Down
152 changes: 54 additions & 98 deletions core/class/sonybravia.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -43,20 +43,24 @@ public static function dependancy_install() {
public static function deamon_info() {
$return = array();
$return['log'] = 'sonybravia';
$return['launchable'] = 'ok';
$retour = true;
foreach (eqLogic::byType('sonybravia', true) as $eqLogic) {
//log::add('sonybravia', 'debug', sonybravia::tv_deamon_info("90:CD:B6:41:F5:2F"));
$_retour = sonybravia::tv_deamon_info($eqLogic->getLogicalId());
if (!$_retour)
$retour = false;
if ($eqLogic->getConfiguration('psk') == "1234"){
$return['launchable'] = 'nok';
}
}
if($retour){
$return['state'] = 'ok';
$return['launchable'] = 'ok';
//$return['launchable'] = 'ok';
}
else{
$return['state'] = 'nok';
$return['launchable'] = 'ok';
//$return['launchable'] = 'ok';
}
return $return;
}
Expand All @@ -70,7 +74,7 @@ public static function deamon_stop() {

public static function tv_deamon_stop($mac) {
log::add('sonybravia', 'info', 'Arrêt démon sonybravia : ' . $mac);
$pid_file = jeedom::getTmpFolder('sonybravia') .'/sonybravia'.$mac.'.pid';
$pid_file = jeedom::getTmpFolder('sonybravia') .'/sonybravia_'.$mac.'.pid';
if (file_exists($pid_file)) {
$pid = intval(trim(file_get_contents($pid_file)));
system::kill($pid);
Expand All @@ -92,8 +96,33 @@ public static function tv_deamon_info($mac){
}
return $return;
}

public static function tv_deamon_pin($_ip, $_mac, $_psk, $_cookie = false){
$deamon_info = self::deamon_info();
if ($deamon_info['state'] == 'ok') {
self::deamon_stop();
}
if ($deamon_info['launchable'] != 'ok') {
throw new Exception(__('Veuillez vérifier la configuration', __FILE__));
}
$sonybravia_path = realpath(dirname(__FILE__) . '/../../resources');
if ($_cookie == true){
$cmd = 'sudo /usr/bin/python3 ' . $sonybravia_path . '/sonybravia_cookie.py';
$cmd .= ' --tvip ' . $_ip;
$cmd .= ' --mac ' . $_mac;
$cmd .= ' --psk ' . $_psk;
$cmd .= ' --jeedomadress ' . network::getNetworkAccess('internal', 'proto:127.0.0.1:port:comp') . '/plugins/sonybravia/core/php/jeesonybravia.php';
$cmd .= ' --apikey ' . jeedom::getApiKey('sonybravia');
log::add('sonybravia', 'info', 'Récupération du pin : ' . $cmd);
$result = exec($cmd . ' >> ' . log::getPathToLog('sonybravia') . ' 2>&1 &');
message::removeAll('sonybravia', 'unableStartDeamon');
return true;
}
log::add('sonybravia', 'error', __('Veuillez sélectionner le mode pin'), 'unableStartDeamon');
return false;
}

public static function tv_deamon_start($_ip, $_mac, $_psk){
public static function tv_deamon_start($_ip, $_mac, $_psk, $_cookie = false){
$deamon_info = self::deamon_info();
if ($deamon_info['state'] == 'ok') {
self::deamon_stop();
Expand All @@ -102,7 +131,12 @@ public static function tv_deamon_start($_ip, $_mac, $_psk){
throw new Exception(__('Veuillez vérifier la configuration', __FILE__));
}
$sonybravia_path = realpath(dirname(__FILE__) . '/../../resources');
$cmd = 'sudo /usr/bin/python3 ' . $sonybravia_path . '/sonybravia.py';
if ($_cookie == true){
$cmd = 'sudo /usr/bin/python3 ' . $sonybravia_path . '/sonybravia_cookie.py';
}
else{
$cmd = 'sudo /usr/bin/python3 ' . $sonybravia_path . '/sonybravia.py';
}
$cmd .= ' --tvip ' . $_ip;
$cmd .= ' --mac ' . $_mac;
$cmd .= ' --psk ' . $_psk;
Expand All @@ -129,7 +163,7 @@ public static function tv_deamon_start($_ip, $_mac, $_psk){

public static function deamon_start() {
foreach (eqLogic::byType('sonybravia', true) as $eqLogic) {
self::tv_deamon_start($eqLogic->getConfiguration('ipadress'), $eqLogic->getLogicalId(),$eqLogic->getConfiguration('psk'));
self::tv_deamon_start($eqLogic->getConfiguration('ipadress'), $eqLogic->getLogicalId(),$eqLogic->getConfiguration('psk'),$eqLogic->getConfiguration('pin'));
sleep(1);
}
return true;
Expand Down Expand Up @@ -185,7 +219,7 @@ public static function deadCmd() {
}*/

public function postSave() {
$refresh = $this->getCmd(null, 'refresh');
/*$refresh = $this->getCmd(null, 'refresh');
if (!is_object($refresh)) {
$refresh = new sonybraviaCmd();
$refresh->setLogicalId('refresh');
Expand All @@ -195,7 +229,7 @@ public function postSave() {
$refresh->setType('action');
$refresh->setSubType('other');
$refresh->setEqLogic_id($this->getId());
$refresh->save();
$refresh->save();*/
}

public function copyFromEqLogic($_eqLogic_id) {
Expand Down Expand Up @@ -262,65 +296,12 @@ public function dontRemoveCmd() {
}

public function preSave() {
if ($this->getLogicalId() == 'refresh') {
return;
}
if ($this->getConfiguration('sonybraviaAction') == 1) {
$actionInfo = sonybraviaCmd::byEqLogicIdCmdName($this->getEqLogic_id(), $this->getName());
if (is_object($actionInfo)) {
$this->setId($actionInfo->getId());
}
}
if ($this->getType() == 'action') {
if ($this->getConfiguration('infoName') == '') {
throw new Exception(__('Le nom de la commande info ne peut etre vide', __FILE__));
}
$cmd = cmd::byId(str_replace('#', '', $this->getConfiguration('infoName')));
if (is_object($cmd)) {
$this->setSubType($cmd->getSubType());
} else {
$actionInfo = sonybraviaCmd::byEqLogicIdCmdName($this->getEqLogic_id(), $this->getConfiguration('infoName'));
if (!is_object($actionInfo)) {
$actionInfo = new sonybraviaCmd();
$actionInfo->setType('info');
switch ($this->getSubType()) {
case 'slider':
$actionInfo->setSubType('numeric');
break;
default:
$actionInfo->setSubType('string');
break;
}
}
$actionInfo->setConfiguration('sonybraviaAction', 1);
$actionInfo->setName($this->getConfiguration('infoName'));
$actionInfo->setEqLogic_id($this->getEqLogic_id());
$actionInfo->save();
$this->setConfiguration('infoId', $actionInfo->getId());
}
} else {
$calcul = $this->getConfiguration('calcul');
if (strpos($calcul, '#' . $this->getId() . '#') !== false) {
throw new Exception(__('Vous ne pouvez faire un calcul sur la valeur elle meme (boucle infinie)!!!', __FILE__));
}
preg_match_all("/#([0-9]*)#/", $calcul, $matches);
$value = '';
foreach ($matches[1] as $cmd_id) {
if (is_numeric($cmd_id)) {
$cmd = self::byId($cmd_id);
if (is_object($cmd) && $cmd->getType() == 'info') {
$value .= '#' . $cmd_id . '#';
}
}
}
preg_match_all("/variable\((.*?)\)/", $calcul, $matches);
foreach ($matches[1] as $variable) {
$value .= '#variable(' . $variable . ')#';
}
if ($value != '') {
$this->setValue($value);
}
}
}

public function postSave() {
Expand All @@ -330,10 +311,6 @@ public function postSave() {
}

public function execute($_options = null) {
if ($this->getLogicalId() == 'refresh') {
$this->getEqLogic()->refresh();
return;
}
switch ($this->getType()) {
case 'info':
if ($this->getConfiguration('sonybraviaAction', 0) == '0') {
Expand All @@ -359,39 +336,18 @@ public function execute($_options = null) {
}
break;
case 'action':
$sonybraviaCmd = sonybraviaCmd::byId($this->getConfiguration('infoId'));
if (!is_object($sonybraviaCmd)) {
$cmds = explode('&&', $this->getConfiguration('infoName'));
if (is_array($cmds)) {
foreach ($cmds as $cmd_id) {
$cmd = cmd::byId(str_replace('#', '', $cmd_id));
if (is_object($cmd)) {
$cmd->execCmd($_options);
}
}
return;
} else {
$cmd = cmd::byId(str_replace('#', '', $this->getConfiguration('infoName')));
return $cmd->execCmd($_options);
}
} else {
if ($sonybraviaCmd->getEqType() != 'sonybravia') {
throw new Exception(__('La cible de la commande virtuel n\'est pas un équipement de type virtuel', __FILE__));
}
if ($this->getSubType() == 'slider') {
$value = $_options['slider'];
} else if ($this->getSubType() == 'color') {
$value = $_options['color'];
} else if ($this->getSubType() == 'select'){
$value = $_options['select'];
} else {
$value = $this->getConfiguration('value');
}
$result = jeedom::evaluateExpression($value);
if ($this->getSubtype() == 'message') {
$result = $_options['title'] . ' ' . $_options['message'];
}
$sonybraviaCmd->event($result);
try {
$sonybravia = $this->getEqLogic();
$sonybravia_path = realpath(dirname(__FILE__) . '/../../resources');
$cmd = 'sudo /usr/bin/python3 ' . $sonybravia_path . '/sonybravia_send.py';
$cmd .= ' --tvip ' . $sonybravia->getConfiguration('ipadress');
$cmd .= ' --mac ' . $sonybravia->getLogicalId();
$cmd .= ' --psk ' . $sonybravia->getConfiguration('psk');
$cmd .= ' --command ' . $this->getLogicalId();
$cmd .= ' --commandparam ' . $this->getConfiguration('param');
$result = exec($cmd . ' >> ' . log::getPathToLog('sonybravia') . ' 2>&1 &');
} catch (Exception $e) {
log::add('sonybravia', 'info', $e->getMessage());
}
break;
}
Expand Down
59 changes: 49 additions & 10 deletions desktop/js/sonybravia.js
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,10 @@ $( ".deamoninfo" ).on('mouseenter', function() {
tr += '<option value="volume">Volume</option>';
tr += '<option value="source">Source</option>';
tr += '<option value="chaine">Chaine</option>';
tr += '<option value="nom_chaine">Nom Chaine</option>';
tr += '<option value="program">Programme</option>';
tr += '<option value="debut">Début du programme</option>';
tr += '<option value="duree">Durée</option>';
tr += '</select></td>';
//tr += '<td><input class="cmdAttr form-control input-sm" data-l1key="logicalId" style="width : 140px;" placeholder="{{logicalId}}"></td>';
//tr += '<td><textarea class="cmdAttr form-control input-sm" data-l1key="configuration" data-l2key="calcul" style="height : 33px;" ' + disabled + ' placeholder="{{Calcul}}"></textarea>';
Expand Down Expand Up @@ -192,22 +195,23 @@ if (init(_cmd.type) == 'action') {
tr += '<span class="subType" subType="' + init(_cmd.subType) + '"></span>';
tr += '<input class="cmdAttr" data-l1key="configuration" data-l2key="sonybraviaAction" value="1" style="display:none;" >';
tr += '</td>';
tr += '<td><input class="cmdAttr form-control input-sm" data-l1key="logicalId" style="width : 140px;" placeholder="{{logicalId}}"></td>';
tr += '<td><select id="select_actions" style="width : 140px;" class="cmdAttr form-control input-sm" data-l1key="logicalId">';
tr += '<option value="turn_on">Allumer</option>';
tr += '<option value="turn_off">Eteindre</option>';
tr += '<option value="volume_up">Vol haut</option>';
tr += '<option value="volume_down">Vol bas</option>';
tr += '<option value="mute_volume">Mute</option>';
tr += '<option value="start_app">Démarrer une application</option>';
tr += '<option value="ircc">RAW</option>';
tr += '</select></td>';
tr += '<td>';
tr += '<input class="cmdAttr form-control input-sm" data-l1key="configuration" data-l2key="infoName" placeholder="{{Nom information}}" style="margin-bottom : 5px;width : 70%; display : inline-block;" />';
tr += '<a class="btn btn-default btn-sm cursor listEquipementAction" data-input="infoName" style="margin-left : 5px;"><i class="fa fa-list-alt "></i> {{Rechercher équipement}}</a>';
tr += '<input class="cmdAttr form-control input-sm" data-l1key="configuration" data-l2key="value" placeholder="{{Valeur}}" style="margin-bottom : 5px;width : 50%; display : inline-block;" />';
tr += '<a class="btn btn-default btn-sm cursor listEquipementInfo" data-input="value" style="margin-left : 5px;"><i class="fa fa-list-alt "></i> {{Rechercher équipement}}</a>';
tr += '<input class="cmdAttr form-control input-sm" data-l1key="configuration" data-l2key="param" placeholder="{{Nom information}}" style="margin-bottom : 5px;width : 70%; display : inline-block;" />';
tr += '</td>';
tr += '<td>';
tr += '<select class="cmdAttr form-control input-sm" data-l1key="configuration" data-l2key="updateCmdId" style="display : none;margin-top : 5px;" title="Commande d\'information à mettre à jour">';
tr += '<option value="">Aucune</option>';
tr += '</select>';
//tr += '<input class="cmdAttr form-control input-sm" data-l1key="configuration" data-l2key="updateCmdToValue" placeholder="Valeur de l\'information" style="display : none;margin-top : 5px;">';
tr += '<span><label class="checkbox-inline"><input type="checkbox" class="cmdAttr checkbox-inline" data-l1key="isVisible" checked/>{{Afficher}}</label></span> ';
//tr += '<input class="tooltips cmdAttr form-control input-sm expertModeVisible" data-l1key="configuration" data-l2key="listValue" placeholder="{{Liste de valeur|texte séparé par ;}}" title="{{Liste}}" style="margin-top : 5px;">';
//tr += '<input class="tooltips cmdAttr form-control input-sm" data-l1key="configuration" data-l2key="minValue" placeholder="{{Min}}" title="{{Min}}" style="width : 40%;display : inline-block;" /> ';
//tr += '<input class="tooltips cmdAttr form-control input-sm" data-l1key="configuration" data-l2key="maxValue" placeholder="{{Max}}" title="{{Max}}" style="width : 40%;display : inline-block;" />';
tr += '</td>';
tr += '<td>';
if (is_numeric(_cmd.id)) {
Expand All @@ -234,4 +238,39 @@ if (init(_cmd.type) == 'action') {
}
});
}
}
}

if($("#checkbox_psk").is(':checked'))
{
$( 'input[data-l2key="psk"]').prop('disabled', true);
//$( '.gettvpin').removeAttr("disabled");
//$( '.startdeamontv').removeAttr("disabled");
$( '.gettvpin').hide();
$( '.startdeamontv').hide();
}


$('#checkbox_psk').change(function() {
if($("#checkbox_psk").is(':checked'))
{
$('input[data-l2key="psk"]').prop('disabled', true);
$( '.gettvpin').removeAttr("disabled");
$( '.startdeamontv').removeAttr("disabled");
$( '.gettvpin').show();
$( '.startdeamontv').show();
}
else{
$('input[data-l2key="psk"]').prop('disabled', false);
$( '.gettvpin').hide();
$( '.startdeamontv').hide();
//$( '.gettvpin').attr("disabled","disabled");
//$( '.startdeamontv').attr("disabled","disabled");
}
});

$('#checkbox_psk').change(function() {
if ($( 'input[data-l2key="psk"]').value() == ""){
$('input[data-l2key="psk"]').value("1234");
}
});

Loading

0 comments on commit 0c4dc01

Please sign in to comment.