Досадно, что в модуле не реализована такая фича лампочки- предложен вариант доработки модуля (до передачи пр)
Яндекс мне подарил (за 1 рубль) свою лампочку, я ее подключил в умный дом Яндекса, она стала видна в модуле МДМ YandexDevices.
Но там среди видимых свойств я не увидел возможности видеть/управлять сценами лампочки. А их там много и многие там мне нравятся - чтение, свеча, океан, ночь, романтика, тревога и т.д.
так выглядит управление цветом/яркостью
после предлагаемой правки могу управлять сценами и из МДМ
а, с точки зрения модуля, ламочка видна так:
правке подвергся только один файл модуля - .\modules\yadevices\yadevices.class.php
и в нём две функции:
sendValueToYandex
после блока, обрабатывающего devices.capabilities.range добавлен ещё аналогичный для devices.capabilities.color_setting
} else if($command_type[0].'.'.$command_type[1].'.'.$command_type[2] == 'devices.capabilities.color_setting') {
$mode = $command_type[3];
$data = array('actions' => array(
array('state' => array('instance' => $mode, 'value' => $value),
'type' => $command_type[0].'.'.$command_type[1].'.'.$command_type[2]
)));
$result = $this->apiRequest($url, 'POST', $data);
return $result;
}
вторая функция
refreshDevicesData
код приведён к виду:
if (is_bool($capability['state']['value']) == true) {
if($capability['state']['value'] == true) {
$value = 1;
} else {
$value = 0;
}
} else if($capability['state']['instance'] == 'color') {
$value = $capability['state']['value']['id'];
} else if($capability['state']['instance'] == 'scene') { //добавлено
$value = $capability['state']['value']['id']; //добавлено
} else {
if($capability['state']['value']) {
$value = $capability['state']['value'];
} else {
$value = '?';
}
}
я ещё, грешным делом, поменял capabilitie везде в коде на capability (так же ниже обошёлся с propertie/property)). Во-первых, это короче на одну букву, во-вторых, это говорит, что я немного помню английский)
Вот тут ещё закомментил иф, без этого у меня странно работало - лезли ? в свойства. Но это не обязательно, просто докладываю:
//if($new_value!=$old_value) {
$req_skills['VALUE'] = $new_value;
$req_skills['UPDATED'] = date('Y-m-d H:i:s');
SQLUpdate('yadevices_capabilities', $req_skills);
//}
И чисто косметика, это уже в темплейтах - просто поправил надписи:
Если это прокатит у других, можно пуллреквест Сергею отправить.
Домодедово, Россия
На форуме: xor