Skip to content

Commit

Permalink
v.1.8.5-beta
Browse files Browse the repository at this point in the history
* Для Aqara AC Companion добавлен функционал чтения (обучения) IR-команд, отправки IR-команд (метрика ir_play), управления встроенным реле (метрика power), получения потребляемой мощности (метрика load_power).
* Передача параметров *NEW_VALUE* и *OLD_VALUE* в привязанный метод.
* Мелкие исправления.
  • Loading branch information
skysilver-lab committed Aug 22, 2018
1 parent be68471 commit 316ce17
Show file tree
Hide file tree
Showing 9 changed files with 407 additions and 237 deletions.
1 change: 1 addition & 0 deletions languages/xiaomimiio_default.php
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@
'XIMI_APP_TEACH1' => 'Learning IR code',
'XIMI_APP_TEACH2' => 'IR-code learning',
'XIMI_APP_TEACH_TEXT' => 'To read the IR code from the remote control, press the <b>Start</b> button, point the remote control towards <b>Mi IR Remote 360</b> and press the button whose code you want to know several times. Upon successful completion of the procedure, the code read will be displayed in the log.',
'XIMI_APP_TEACH_TEXT_AQARA' => 'To read the IR code from the remote control, press the <b>Start</b> button, point the remote control towards <b>Aqara AC Companion</b> and press the button whose code you want to know several times. Upon successful completion of the procedure, the code read will be displayed in the log.',
'XIMI_APP_START' => 'Start',
'XIMI_APP_TRAINING' => 'Learning mode activated',
'XIMI_APP_ERROR' => 'The problem with getting data from the device',
Expand Down
1 change: 1 addition & 0 deletions languages/xiaomimiio_ru.php
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@
'XIMI_APP_TEACH1' => 'Обучить IR-коду',
'XIMI_APP_TEACH2' => 'Обучение IR-командам',
'XIMI_APP_TEACH_TEXT' => 'Чтобы считать IR-код с пульта дистанционного управления, нажмите кнопку <b>Старт</b>, направьте пульт в сторону <b>Mi IR Remote 360</b> и нажмите несколько раз кнопку, код которой требуется узнать. При успешном завершении процедуры прочитанный код отобразится в логе.',
'XIMI_APP_TEACH_TEXT_AQARA' => 'Чтобы считать IR-код с пульта дистанционного управления, нажмите кнопку <b>Старт</b>, направьте пульт в сторону <b>Aqara AC Companion</b> и нажмите несколько раз кнопку, код которой требуется узнать. При успешном завершении процедуры прочитанный код отобразится в логе.',
'XIMI_APP_START' => 'Старт',
'XIMI_APP_TRAINING' => 'Режим обучения активирован',
'XIMI_APP_ERROR' => 'Проблема с получением данных от устройства',
Expand Down
1 change: 1 addition & 0 deletions languages/xiaomimiio_ua.php
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@
'XIMI_APP_TEACH1' => 'Навчити коду',
'XIMI_APP_TEACH2' => 'Навчання IR-командам',
'XIMI_APP_TEACH_TEXT' => 'Щоб отримати IR-код з пульта дистанційного керування, натисніть кнопку "Старт", направте пульт в сторону Mi IR Remote 360 і натисніть кілька разів кнопку, код якої потрібно дізнатися. При успішному завершенні процедури отриманий код відобразиться на сторінці.',
'XIMI_APP_TEACH_TEXT_AQARA' => 'Щоб отримати IR-код з пульта дистанційного керування, натисніть кнопку "Старт", направте пульт в сторону Aqara AC Companion і натисніть кілька разів кнопку, код якої потрібно дізнатися. При успішному завершенні процедури отриманий код відобразиться на сторінці.',
'XIMI_APP_START' => 'Старт',
'XIMI_APP_TRAINING' => 'Режим навчання активований',
'XIMI_APP_ERROR' => 'Проблема з отриманням даних від пристрою',
Expand Down
65 changes: 37 additions & 28 deletions modules/xiaomimiio/miio_devices_edit.inc.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
/*
* @author <skysilver.da@gmail.com>
* @copyright 2017-2018 Agaphonov Dmitri aka skysilver <skysilver.da@gmail.com> (c)
* @version 1.8b
* @version 1.8.5b
*/

if ($this->owner->name == 'panel') {
Expand All @@ -17,7 +17,7 @@

$this->getConfig();
$ok = 1;

if ($this->tab == '') {

global $title;
Expand All @@ -33,10 +33,10 @@
$out['ERR_IP'] = 1;
$ok = 0;
}

global $token;
$rec['TOKEN'] = $token;

global $device_type;
$rec['DEVICE_TYPE'] = $device_type;

Expand All @@ -45,21 +45,23 @@
if ($rec['UPDATE_PERIOD'] > 0) {
$rec['NEXT_UPDATE'] = date('Y-m-d H:i:s');
}

$commands = array('online', 'command', 'message');
if (($rec['DEVICE_TYPE'] == 'lumi.gateway.v3') || ($rec['DEVICE_TYPE'] == 'lumi.acpartner.v3')) {
$commands[] = 'add_program';
$commands[] = 'del_program';
}
if ($rec['DEVICE_TYPE'] == 'chuangmi.ir.v2') {
if ($rec['DEVICE_TYPE'] == 'chuangmi.ir.v2' || $rec['DEVICE_TYPE'] == 'lumi.acpartner.v3') {
$commands[] = 'ir_play';
//$commands[] = 'freq';
}
if ($rec['DEVICE_TYPE'] == 'xiaomi.wifispeaker.v1') {
$commands[] = 'vol_up';
$commands[] = 'vol_down';
}

if ($rec['DEVICE_TYPE'] == 'lumi.acpartner.v3') {
$commands[] = 'power';
$commands[] = 'load_power';
}
}

if ($ok) {
Expand Down Expand Up @@ -95,7 +97,13 @@
if ($rec['TOKEN'] != '' && $rec['IP'] != '') {
$this->requestInfo($rec['ID']);
// а также, если определен тип устройства, то запросим текущие параметры (статус).
if ((int)$update_period == 0 && $rec['DEVICE_TYPE'] != '') $this->requestStatus($rec['ID']);
if ($rec['DEVICE_TYPE'] != '') {
$this->requestStatus($rec['ID']);
if (($rec['DEVICE_TYPE'] == 'lumi.gateway.v3') || ($rec['DEVICE_TYPE'] == 'lumi.acpartner.v3')) {
$this->addToQueue($rec['ID'], 'get_lumi_dpf_aes_key', '[]');
$this->addToQueue($rec['ID'], 'get_zigbee_channel', '[]');
}
}
// Если тип устройства не указан, то пробуем получить тип устройства из miIO.info
if ($rec['DEVICE_TYPE'] == '') {
if ($this->config['API_LOG_DEBMES']) DebMes('Try to get device model from miIO.info for the device ' . $rec['IP'], 'xiaomimiio');
Expand Down Expand Up @@ -135,44 +143,46 @@

$new_id = 0;
global $delete_id;

if ($delete_id) {
SQLExec("DELETE FROM miio_commands WHERE ID='" . (int)$delete_id . "'");
}

if (($rec['DEVICE_TYPE'] == 'lumi.gateway.v3') || ($rec['DEVICE_TYPE'] == 'lumi.acpartner.v3')) {
// Для шлюза на вкладку data выводим только определенные свойства, т.к. для свойств радио есть отдельная вкладка
$properties = SQLSelect("SELECT * FROM miio_commands WHERE DEVICE_ID='" . $rec['ID'] . "' AND TITLE IN ('online','command','message','lumi_dpf_aes_key','zigbee_channel') ORDER BY ID");
} else {
$properties = SQLSelect("SELECT * FROM miio_commands WHERE DEVICE_ID='" . $rec['ID'] . "' ORDER BY ID");
}


if ($rec['DEVICE_TYPE'] == 'lumi.gateway.v3') {
// Для шлюза на вкладку data выводим только определенные свойства, т.к. для свойств радио есть отдельная вкладка
$properties = SQLSelect("SELECT * FROM miio_commands WHERE DEVICE_ID='" . $rec['ID'] . "' AND TITLE IN ('online','command','message','lumi_dpf_aes_key','zigbee_channel') ORDER BY ID");
} else if ($rec['DEVICE_TYPE'] == 'lumi.acpartner.v3') {
$properties = SQLSelect("SELECT * FROM miio_commands WHERE DEVICE_ID='" . $rec['ID'] . "' AND TITLE IN ('online','command','message','lumi_dpf_aes_key','zigbee_channel', 'ir_play', 'power', 'load_power') ORDER BY ID");
} else {
$properties = SQLSelect("SELECT * FROM miio_commands WHERE DEVICE_ID='" . $rec['ID'] . "' ORDER BY ID");
}

$total = count($properties);

for($i = 0; $i < $total; $i++) {
if ($properties[$i]['ID'] == $new_id) continue;

if ($this->mode == 'update') {

global ${'linked_object'.$properties[$i]['ID']};
$properties[$i]['LINKED_OBJECT'] = trim(${'linked_object'.$properties[$i]['ID']});

global ${'linked_property'.$properties[$i]['ID']};
$properties[$i]['LINKED_PROPERTY'] = trim(${'linked_property'.$properties[$i]['ID']});

global ${'linked_method'.$properties[$i]['ID']};
$properties[$i]['LINKED_METHOD'] = trim(${'linked_method'.$properties[$i]['ID']});

SQLUpdate('miio_commands', $properties[$i]);

$old_linked_object = $properties[$i]['LINKED_OBJECT'];
$old_linked_property = $properties[$i]['LINKED_PROPERTY'];

if ($old_linked_object && $old_linked_object != $properties[$i]['LINKED_OBJECT'] && $old_linked_property && $old_linked_property != $properties[$i]['LINKED_PROPERTY']) {
removeLinkedProperty($old_linked_object, $old_linked_property, $this->name);
}
}

$properties[$i]['VALUE'] = str_replace('",','", ',$properties[$i]['VALUE']);

if ($properties[$i]['LINKED_OBJECT'] && $properties[$i]['LINKED_PROPERTY']) {
Expand Down Expand Up @@ -280,7 +290,6 @@
} else {
$out['LAN_KEY'] = '';
}
//$out['LAN_KEY'] = '';
}

if ($this->tab == 'help') {
Expand Down
Loading

0 comments on commit 316ce17

Please sign in to comment.