Skip to content

Commit

Permalink
v.1.3-beta
Browse files Browse the repository at this point in the history
* Добавлена поддержка локализации.
* Добавлен перевод на украинский язык.
* Добавлена группировка устройств в выпадающем списке по производителям.
  • Loading branch information
skysilver-lab committed Feb 12, 2018
1 parent 420fd91 commit d8ade0f
Show file tree
Hide file tree
Showing 5 changed files with 57 additions and 53 deletions.
11 changes: 6 additions & 5 deletions languages/xiaomimiio_ru.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,14 @@
* @author <skysilver.da@gmail.com>
* @copyright 2017-2018 Agaphonov Dmitri aka skysilver <skysilver.da@gmail.com> (c)
* @localization Alex Sokolov aka Gelezako <admin@gelezako.com> http://blog.gelezako.com
* @version 1.1.5b
* @version 1.3b
*
**/

$dictionary = array(

'XIMI_SCRIPT_NAME'=>'Название сценария',
'XIMI_APP_ABOUT' => 'Про модуль',
'XIMI_APP_ABOUT' => 'О модуле',
'XIMI_APP_CLOSE' => 'Закрыть',
'XIMI_APP_MODULE' => 'Модуль поддержки Wi-Fi устройств из экосистемы Xiaomi Mihome, взаимодействующих по протоколу miIO.',
'XIMI_APP_PROJ' => 'Проект в',
Expand All @@ -36,9 +36,10 @@
'XIMI_APP_DEBUG_TOOLTIP3' => 'Запись отладочных сообщений цикла в лог-файл log_YYYY-mm-dd-cycle_xiaomimiio.php.txt. Для вступления изменений в силу требуется перезапустить цикл.',
'XIMI_APP_RADIO' => 'Радио',
'XIMI_APP_TOKEN' => 'Токен',
'XIMI_APP_TEACH' => 'Обучить коду',
'XIMI_APP_TEACH' => 'Обучить',
'XIMI_APP_TEACH1' => 'Обучить IR-коду',
'XIMI_APP_TEACH2' => 'Обучение IR-командам',
'XIMI_APP_TEACH_TEXT' => 'Чтобы считать IR-код с пульта дистанционного управления, нажмите кнопку "Старт", направьте пульт в сторону Mi IR Remote 360 и нажмите несколько раз кнопку, код которой требуется узнать. При успешном завершении процедуры прочитанный код отобразится в логе.',
'XIMI_APP_TEACH_TEXT' => 'Чтобы считать IR-код с пульта дистанционного управления, нажмите кнопку <b>Старт</b>, направьте пульт в сторону <b>Mi IR Remote 360</b> и нажмите несколько раз кнопку, код которой требуется узнать. При успешном завершении процедуры прочитанный код отобразится в логе.',
'XIMI_APP_START' => 'Старт',
'XIMI_APP_TRAINING' => 'Режим обучения активирован',
'XIMI_APP_ERROR' => 'Проблема с получением данных от устройства',
Expand All @@ -58,7 +59,7 @@
'XIMI_APP_OPTIONS' => 'Параметры',
'XIMI_APP_GET' => 'Получить сведения miIO.info',
'XIMI_APP_REQUIRED' => 'Требуется токен устройства',
'XIMI_APP_CURRENT' => 'Получить актуальное состояние',
'XIMI_APP_CURRENT' => 'Получить актуальное состояние'

);

Expand Down
11 changes: 6 additions & 5 deletions languages/xiaomimiio_ua.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
* @author <skysilver.da@gmail.com>
* @copyright 2017-2018 Agaphonov Dmitri aka skysilver <skysilver.da@gmail.com> (c)
* @localization Alex Sokolov aka Gelezako <admin@gelezako.com> http://blog.gelezako.com
* @version 1.1.5b
* @version 1.3b
*
**/

Expand Down Expand Up @@ -37,28 +37,29 @@
'XIMI_APP_RADIO' => 'Радіо',
'XIMI_APP_TOKEN' => 'Токен',
'XIMI_APP_TEACH' => 'Навчити коду',
'XIMI_APP_TEACH1' => 'Навчити коду',
'XIMI_APP_TEACH2' => 'Навчання IR-командам',
'XIMI_APP_TEACH_TEXT' => 'Щоб отримати IR-код з пульта дистанційного керування, натисніть кнопку "Старт", направте пульт в сторону Mi IR Remote 360 і натисніть кілька разів кнопку, код якої потрібно дізнатися. При успішному завершенні процедури отриманий код відобразиться на сторінці.',
'XIMI_APP_START' => 'Старт',
'XIMI_APP_TRAINING' => 'Режим навчання активований',
'XIMI_APP_ERROR' => 'Проблема з отриманням даних від пристрою',
'XIMI_APP_TRAINING_END' => 'Сеанс навчання завершено',
'XIMI_APP_SUCCESSFULLY' => 'IR-код отримано успішно!',
'XIMI_APP_SNAP' => "Прив'язати",
'XIMI_APP_SNAP' => "Прив&#39;язати",
'XIMI_APP_ONLINE' => 'Пристрій в мережі',
'XIMI_APP_OFFLINE' => 'Пристрій не доступний',
'XIMI_APP_UNBIND' => "Відв'язати пристрій від шлюзу",
'XIMI_APP_UNBIND' => "Відв&#39;язати пристрій від шлюзу",
'XIMI_APP_LINKING' => 'Перемикання шлюзу у режим сполучення',
'XIMI_APP_LINKING2' => 'Шлюз в режимі сполучення',
'XIMI_APP_UNLINKING' => "Ви дійсно хочете відв'язати пристрій ",
'XIMI_APP_UNLINKING' => "Ви дійсно хочете відвязати пристрій ",
'XIMI_APP_UNLINKING2' => ' від шлюза?',
'XIMI_APP_DELETE' => 'Пристрій видалено',
'XIMI_APP_COMPLETE' => 'Сеанс сполучення завершено',
'XIMI_APP_TESTING' => 'Тестування API-команд',
'XIMI_APP_OPTIONS' => 'Параметри',
'XIMI_APP_GET' => 'Отримати відомості miIO.info',
'XIMI_APP_REQUIRED' => 'Потрібен токен пристрою',
'XIMI_APP_CURRENT' => 'Отримати актуальний стан',
'XIMI_APP_CURRENT' => 'Отримати актуальний стан'

);

Expand Down
4 changes: 2 additions & 2 deletions templates/xiaomimiio/action_admin.html
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ <h4 class="modal-title">Xiaomi miIO</h4>
<div class="modal-body">
<div class="float-right">
<img src="../templates/xiaomimiio/milogo.png" width="48" height="48">
<br><br><p><b>v.1.1.5b</b></p>
<br><br><p><b>v.1.3b</b></p>
</div>
<p class="float-left">
<#LANG_XIMI_APP_MODULE#><br><br>
Expand All @@ -37,7 +37,7 @@ <h4 class="modal-title">Xiaomi miIO</h4>
<li><#LANG_XIMI_APP_DONATE2#><a href="https://connect.smartliving.ru/tasks/51.html" target="_blank">Connect</a></li>
</ul>
</p>
<h6><#LANG_XIMI_APP_THANKS#>: <b>webms</b>, <b>srvsrvsrv</b>, <b>SergeJey</b>, <b>Gelezako</b>, <b>horas</b>, <b>ингвар</b>, <b>Dicont</b>, <b>shawk</b>, <b>ypiter2006</b>.</h6>
<h6><#LANG_XIMI_APP_THANKS#>: <b>webms</b>, <b>srvsrvsrv</b>, <b>SergeJey</b>, <b>Gelezako</b>, <b>horas</b>, <b>ингвар</b>, <b>Dicont</b>, <b>shawk</b>, <b>ypiter2006</b>, <b>Genplane</b>, <b>TurburatoR</b>.</h6>
</div>
<div class="modal-footer">
<div class="pull-left"><#LANG_XIMI_APP_Author#>: <a href="https://telegram.me/agafonov_d" target="_blank">skysilver</a></div>
Expand Down
80 changes: 41 additions & 39 deletions templates/xiaomimiio/miio_devices_edit_default.html
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,10 @@
<div class="col-lg-4">
<select name="device_type" class="form-control">
<option value=""></option>
<optgroup label="Aqara">
<option value="lumi.camera.aq1" [#if DEVICE_TYPE="lumi.camera.aq1"#] selected[#endif#]>Aqara Smart Camera Gateway</option>
</optgroup>
<optgroup label="Xiaomi">
<option value="zhimi.humidifier.v1" [#if DEVICE_TYPE="zhimi.humidifier.v1"#] selected[#endif#]>Mi Air Humidifier</option>
<option value="chuangmi.ir.v2" [#if DEVICE_TYPE="chuangmi.ir.v2"#] selected[#endif#]>Mi IR Remote 360</option>
<option value="xiaomi.wifispeaker.v1" [#if DEVICE_TYPE="xiaomi.wifispeaker.v1"#] selected[#endif#]>Mi Internet Speaker</option>
Expand All @@ -52,14 +56,19 @@
<option value="isa.camera.df3" [#if DEVICE_TYPE="isa.camera.df3"#] selected[#endif#]>Mi Dafang Smart Camera 120</option>
<option value="rockrobo.vacuum.v1" [#if DEVICE_TYPE="rockrobo.vacuum.v1"#] selected[#endif#]>Mi Vacuum Cleaner</option>
<option value="xiaomi.repeater.v2" [#if DEVICE_TYPE="xiaomi.repeater.v2"#] selected[#endif#]>Mi WiFi Amplifier 2</option>
</optgroup>
<optgroup label="Philips">
<option value="philips.light.ceiling" [#if DEVICE_TYPE="philips.light.ceiling"#] selected[#endif#]>Philips EyeCare Smart Ceiling Lamp</option>
<option value="philips.light.sread1" [#if DEVICE_TYPE="philips.light.sread1"#] selected[#endif#]>Philips EyeCare Smart Desk Lamp 2</option>
<option value="philips.light.bulb" [#if DEVICE_TYPE="philips.light.bulb"#] selected[#endif#]>Philips Light Bulb</option>
</optgroup>
<optgroup label="Yeelight">
<option value="yeelink.light.bslamp1" [#if DEVICE_TYPE="yeelink.light.bslamp1"#] selected[#endif#]>Yeelight Bedside Lamp</option>
<option value="yeelink.light.color1" [#if DEVICE_TYPE="yeelink.light.color1"#] selected[#endif#]>Yeelight Color Bulb</option>
<option value="yeelink.light.mono1" [#if DEVICE_TYPE="yeelink.light.mono1"#] selected[#endif#]>Yeelight White Bulb</option>
<option value="yeelink.light.ceiling1" [#if DEVICE_TYPE="yeelink.light.ceiling1"#] selected[#endif#]>Yeelight Ceiling Light</option>
<option value="yeelink.light.strip1" [#if DEVICE_TYPE="yeelink.light.strip1"#] selected[#endif#]>Yeelight LED Lightstrip</option>
</optgroup>
</select>
</div>
</div>
Expand Down Expand Up @@ -119,10 +128,10 @@
[#if DEVICE_TYPE="chuangmi.ir.v2"#]
<div class="form-group">
<label class="col-lg-3 control-label">
<#LANG_XIMI_APP_TEACH#>:
<#LANG_XIMI_APP_TEACH1#>:
</label>
<div class="col-lg-4">
<span onclick="" data-toggle="modal" data-target="#ir_learn" class="btn btn-success [#if TOKEN=="" || ONLINE==1 || DEVICE_TYPE==""#]disabled[#endif#]" title="<#LANG_XIMI_APP_TEACH#>" id="[#IP#]"><#LANG_XIMI_APP_TEACH#></span>
<span onclick="" data-toggle="modal" data-target="#ir_learn" class="btn btn-success [#if TOKEN=="" || DEVICE_TYPE==""#]disabled[#endif#]" title="<#LANG_XIMI_APP_TEACH2#>" id="[#IP#]"><#LANG_XIMI_APP_TEACH#></span>
</div>
</div>
[#endif#]
Expand Down Expand Up @@ -153,15 +162,24 @@
<button class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only"><#LANG_XXIMI_APP_CLOSE#></span></button>
<b><#LANG_XIMI_APP_TEACH2#></b>
</div>
<div class="modal-body">
<p><#LANG_XIMI_APP_TEACH_TEXT#></p>
<br>
<div>
<button class="btn btn-primary" onclick="startLearnIR();"><#LANG_XIMI_APP_START#></button>&nbsp;&nbsp;&nbsp;<b><i id="ir_learn_timer"></i></b>
<div class="modal-body">
<div class="row">
<div class="float-right">
<img src="../templates/xiaomimiio/img/mi_ir_learn.png" class="img-rounded">
</div>
<p class="float-left">
<#LANG_XIMI_APP_TEACH_TEXT#>
</p>
<br><br>
<div>
<button class="btn btn-primary" onclick="startLearnIR();"><#LANG_XIMI_APP_START#></button>&nbsp;&nbsp;&nbsp;<b><i id="ir_learn_timer"></i></b>
</div>
</div>
<br>
<div>
<pre class="pre-scrollable" id="ir_learn_log" style="word-wrap: break-word;"></pre>
<div class="row">
<br>
<div>
<pre class="pre-scrollable" id="ir_learn_log" style="word-wrap: break-word;"></pre>
</div>
</div>
</div>
</div>
Expand All @@ -175,8 +193,7 @@
var slot=getRandomInt(1,100000);
var dopt='{"key":"'+slot+'"}';
var url="/ajax/xiaomimiio.html?op=test_api_cmd&dip=[#IP#]&dtoken=[#TOKEN#]&dcmd=miIO.ir_learn&dopt="+dopt;
//var url="/ajax/xiaomimiio.html?op=test_api_cmd&dip=[#IP#]&dtoken=[#TOKEN#]&dcmd=miIO.info&dopt="+dopt;
//{"id":10,"method":"miIO.ir_learn","params":{"key":"512430662268481"}}

$("#ir_learn_log").html('');

Data = new Date();
Expand All @@ -186,7 +203,6 @@

//$('#ir_learn_log').append(Hour+":"+Minutes+":"+Seconds+' ip = '+'[#IP#]'+'<br>');
//$('#ir_learn_log').append(Hour+":"+Minutes+":"+Seconds+' token = '+'[#TOKEN#]'+'<br>');
//$('#ir_learn_log').append(Hour+":"+Minutes+":"+Seconds+' properties = '+dopt+'<br>');
//$('#ir_learn_log').append(Hour+":"+Minutes+":"+Seconds+' '+url+'<br>');

$.ajax({
Expand All @@ -198,31 +214,28 @@
if (resp !== false) {
if(typeof resp.error === 'undefined') {
if((typeof resp.result !== 'undefined') && (resp.result === 0)) {
$('#ir_learn_log').append(Hour+":"+Minutes+":"+Seconds+' <#LANG_XIMI_APP_TRAINING#><br>');
$('#ir_learn_log').append(Hour+":"+Minutes+":"+Seconds+' <#LANG_XIMI_APP_TRAINING#>.<br>');
if($("#ir_learn_timer").html()=='') {
$('#ir_learn_timer').html('10');
setTimeout('learnTimer('+slot+')', 1000);
}
} else {
$('#ir_learn_log').append(Hour+":"+Minutes+":"+Seconds+' <#LANG_STRING_ERROR#> - bad response.<br>');
}
} else {
$('#ir_learn_log').append(Hour+":"+Minutes+":"+Seconds+' <#STRING_ERROR#> - '+resp.error.message+'<br>');
$('#ir_learn_log').append(Hour+":"+Minutes+":"+Seconds+' <#LANG_STRING_ERROR#> - '+resp.error.message+'<br>');
}
} else {
$('#ir_learn_log').append(Hour+":"+Minutes+":"+Seconds+' <#LANG_XIMI_APP_ERROR#><br>');
$('#ir_learn_log').append(Hour+":"+Minutes+":"+Seconds+' <#LANG_XIMI_APP_ERROR#>.<br>');
}
}
});

//$('#ir_learn_timer').html('10');
//setTimeout('learnTimer('+slot+')', 1000);

}

function learnTimer(slot){
var obj = document.getElementById('ir_learn_timer');
var dopt='{"key":"'+slot+'"}';
var url="/ajax/xiaomimiio.html?op=test_api_cmd&dip=[#IP#]&dtoken=[#TOKEN#]&dcmd=miIO.ir_read&dopt="+dopt;
//{"id":11,"method":"miIO.ir_read","params":{"key":"512430662268481"}}

Data = new Date();
Hour = Data.getHours();
Expand All @@ -235,53 +248,44 @@
//$('#ir_learn_log').append(Hour+":"+Minutes+":"+Seconds+' '+url+'<br>');

if (obj.innerHTML == 0){
$('#ir_learn_log').append(Hour+":"+Minutes+":"+Seconds+' <#LANG_XIMI_APP_TRAINING_END#><br>');
$('#ir_learn_log').append(Hour+":"+Minutes+":"+Seconds+' <#LANG_XIMI_APP_TRAINING_END#>.<br>');
$('#ir_learn_timer').html('');
setTimeout(function(){}, 1000);
} else {

//setTimeout('learnTimer('+slot+')', 1000);

$.ajax({
url: url,
cache: false,
success: function(html){
//$('#ir_learn_log').append(Hour+":"+Minutes+":"+Seconds+' '+html+'<br>');

var resp = tryParseJSON(html);
//$('#ir_learn_log').append(Hour+":"+Minutes+":"+Seconds+' '+resp+'<br>');

if (resp !== false) {
if(typeof resp.error === 'undefined') {
if((typeof resp.result !== 'undefined') && (resp.result !== '')) {
//$('#ir_learn_log').append(Hour+":"+Minutes+":"+Seconds+' '+resp.result+'<br>');

if((typeof resp.result.code !== 'undefined') && (typeof resp.result.key !== 'undefined')) {
if((resp.result.code!=='') && (resp.result.code.length > 10) && (resp.result.key == slot)) {
$('#ir_learn_log').append(Hour+":"+Minutes+":"+Seconds+' <#LANG_XIMI_APP_SUCCESSFULLY#><br>');
$('#ir_learn_log').append(Hour+":"+Minutes+":"+Seconds+' '+resp.result.code+'<br>');
$('#ir_learn_timer').html('');
setTimeout(function(){}, 1000);
} else if (resp.result.code==='') {
//$('#ir_learn_log').append(Hour+":"+Minutes+":"+Seconds+' IR-кода нет. Слушаем дальше...<br>');
setTimeout('learnTimer('+slot+')', 1000);
}
}
}
} else {
$('#ir_learn_log').append(Hour+":"+Minutes+":"+Seconds+' <#STRING_ERROR#> - '+resp.error.message+'<br>');
$('#ir_learn_log').append(Hour+":"+Minutes+":"+Seconds+' <#LANG_STRING_ERROR#> - '+resp.error.message+'<br>');
$('#ir_learn_timer').html('');
setTimeout(function(){}, 1000);
}
} else {
$('#ir_learn_log').append(Hour+":"+Minutes+":"+Seconds+' <#LANG_XIMI_APP_ERROR#><br>');
$('#ir_learn_log').append(Hour+":"+Minutes+":"+Seconds+' <#LANG_XIMI_APP_ERROR#>.<br>');
$('#ir_learn_timer').html('');
setTimeout(function(){}, 1000);
}
}
});
//если {"result":{"key":"512430662268481","code":""},"id":11} то ИЩЕМ ДАЛЬШЕ
//если {‘error’: {‘code’: -5002, ‘message’: ‘no code for this key’}, ‘id’: 5} то КОД НЕ ПОЛУЧЕН
//если {‘error’: {‘code’: -5003, ‘message’: ‘learn timeout’}, ‘id’: 17} то ВРЕМЯ ОБУЧЕНИЯ ИСТЕКЛО
//если {"result":{"key":"512430662268481","code":"Z6VLALABAAA0AgAAmQYAAOEIAACjEQ=="},"id":15} то НАШЛИ

});
}
}

Expand All @@ -294,10 +298,8 @@
return false;
};


function getRandomInt(min, max){
return Math.floor(Math.random() * (max - min + 1)) + min;
}


</script>
4 changes: 2 additions & 2 deletions templates/xiaomimiio/miio_devices_edit_gwzigbee.html
Original file line number Diff line number Diff line change
Expand Up @@ -34,16 +34,16 @@
10: 'sensor_ht',
11: 'plug',
12: '86sw2',
13: 'curtain',
14: '86sw1',
15: 'smoke',
19: 'weather.v1',
20: 'ctrl_ln1',
21: 'ctrl_ln2',
51: 'sensor_switch.aq2',
52: 'sensor_motion.aq2',
53: 'sensor_magnet.aq2',
55: 'sensor_wleak.aq1',
1001: 'sensor_switch.aq2',
1002: 'curtain',
1003: 'natgas',
1004: '86plug'
};
Expand Down

0 comments on commit d8ade0f

Please sign in to comment.