[Модуль] MagicHome (magichome)

Разработка дополнительных модулей, подключение различных приложений.

Модератор: immortal

directman66
Сообщения: 2801
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 380 раз
Поблагодарили: 693 раза
Контактная информация:

[Модуль] MagicHome (magichome)

Сообщение directman66 » Чт сен 06, 2018 8:39 am

В маркете опубликован модуль управления RGB диммерами китайского производства с логотипом MagicHome.
СпойлерПоказать
mc.png
mc.png (52.06 КБ) 9660 просмотров
Протестировано:
1) поиск устройства;
2) включение/выключение
3) выбор цвета из предложенных вариантов (красный, синий, зеленый, голубой, белый, желтый).

Привязка к кнопке mi home (WXKG02LM zigbee)
1) Создаем простое устройство RGB с именем RGB01 или другим.
2) Привязываем в модуле mihome метрику нужной кнопки включения/выключения к нужному объекту RGB01, поле status оставляем пустым. В поле метода выбираем switch.
3) Добавляем контроллер в модуле MagicHome. В свойствах контроллера на вкладке данные привязываем наше устройство к ПУ RGB01 к свойству status.

Изменение цвета ленты в цикле при нажатии кнопки (WXKG02LM zigbee) :
1) В классе простых устройств создаем метод Changecolor. В методе "changecolor" объекта (RGB01), привязанного к RGB устройству Magichome прописываем следующий код:

Код: Выделить всё

$this->setProperty('command','changecolor');
2) В модуле Magichome в режиме просмотра метрик привязываем для метрики "command" связку с объектом RGB01 и свойством command.
3) Теперь при вызове метода объекта cm('RGB01.changecolor'); цвет ленты будет меняться в цикле.
4) Метод changecolor можно привязать к кнопке MiHome (повесить на двойное нажатие правой кнопки беспроводного выключателя).

Также этот процесс можно вызвать из сценария:

Код: Выделить всё

include_once(DIR_MODULES . 'magichome/magichome.class.php');
$mh = new magichome();
$mh->changecolordevice($deviceid); 
где $deviceid -номер устройства модуля.


Предуставленные эффекты можно включить из метода или сценария:

include_once(DIR_MODULES . 'magic
СпойлерПоказать
home/magichome.class.php');
$mh = new magichome();
$mh->set_command($deviceid,$value, '01');


где:
$deviceid -номер устройства модуля.
$value - номер эффекта
01 - скорость изменения эффекта.



Ссылки, где можно заказать устройства:

Контроллер RGB(W) на 12-24в https://ru.aliexpress.com/item/16-Wi-Fi ... 7ca2NNWpxf

Контроллер RGB(W) для SPI ленты на 12-24в
https://ru.aliexpress.com/item/DC5V-DC1 ... 9ccdd491-0

на 5 в для гирлянды почему-то не работает.




этим модулем можно управлять еще кучей устройств. Кто-нибудь пробовал? Чтобы добавить их поддержку, нужны метрики.

Теоретически этим же модулем можно будет управлять и другими контроллерами:
1) RGBW waterproff
https://ru.aliexpress.com/item/DC12V-24 ... autifyAB=0

2) Wifi led downlight
https://ru.aliexpress.com/item/Super-Br ... autifyAB=0

3) WIFI RGBW 5w bulb
https://ru.aliexpress.com/item/BLYN-WIF ... autifyAB=0
4) WIFI RGBW DIMMER
https://ru.aliexpress.com/item/DC12V-24 ... autifyAB=0

5) Wifi led bulb 15w
https://ru.aliexpress.com/item/Wi-Fi-BR ... autifyAB=0
Последний раз редактировалось directman66 Ср май 15, 2019 12:31 pm, всего редактировалось 12 раз.
За это сообщение автора directman66 поблагодарили (всего 13):
Step40 (Чт сен 06, 2018 8:45 am) • Igor.P (Чт сен 06, 2018 9:33 am) • odinvolk (Чт сен 06, 2018 11:56 am) • Vit (Чт сен 06, 2018 4:01 pm) • Mobidi (Пт сен 07, 2018 9:06 am) • Taras81 (Сб сен 08, 2018 6:45 am) • dengi.76 (Ср сен 26, 2018 6:26 pm) • chip (Пт окт 05, 2018 6:50 pm) • Sapizdullin (Чт ноя 22, 2018 11:05 pm) • VAD07 (Чт дек 06, 2018 11:24 pm) и ещё 3
Рейтинг: 15.12%
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
directman66
Сообщения: 2801
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 380 раз
Поблагодарили: 693 раза
Контактная информация:

Re: [Модуль] MagicHome

Сообщение directman66 » Пт сен 07, 2018 7:23 am

Ночью выложил небольшое обновление.
1) Добавлена возможность получения информации с контролера ( текущий цвет, состояние контроллера вкл/выкл).
3) Оптимизирован код запросов.
3) Можно выставить кастомный цвет get запросом http:\\ip\admin.php?&md=magichome&view_mode=custom50@50@50&id=3
где 50@50@50 - цвет красный@зеленый@синий, id=3 вашего устройства, можно посмотреть в строке запроса внизу браузера.
Чуть позже сделаю привязку к объектам и вызов через функцию модуля, как принято в мажордомо.

Считаю, что железяку можно покупать.
За это сообщение автора directman66 поблагодарили (всего 4):
pdmitry2 (Пт сен 07, 2018 12:34 pm) • AeroS (Пт сен 07, 2018 5:39 pm) • Taras81 (Сб сен 08, 2018 6:47 am) • chimik (Ср сен 12, 2018 3:54 pm)
Рейтинг: 4.65%
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
dksobol
Сообщения: 53
Зарегистрирован: Вт июл 24, 2018 12:01 pm
Благодарил (а): 6 раз
Поблагодарили: 1 раз

Re: [Модуль] MagicHome

Сообщение dksobol » Ср сен 12, 2018 1:13 am

Неделю назад заказал такой только по мощнее. Можно сказать мне свезло. Но есть еще вопрос. В простые устройства будет возможность добавить?
Брал такое. http://s.aliexpress.com/UBNzuUFz
directman66
Сообщения: 2801
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 380 раз
Поблагодарили: 693 раза
Контактная информация:

Re: [Модуль] MagicHome

Сообщение directman66 » Ср сен 12, 2018 7:15 am

По поводу ПУ думаю проблем дописать не будет. Пока завис по темплейте, добавил на форму RGB-пикер,

Код: Выделить всё

                <link rel='stylesheet' href='<#ROOTHTML#>js/spectrum/spectrum.min.css' />
                <script src='<#ROOTHTML#>js/spectrum/spectrum.min.js'></script>
                <link rel='stylesheet' href='?view_mode=changeсolor_[#VALUE#]&id=[#ID#]&tab=info' />
                <input type="text" value="[#CCOLOR#]" name="[#PARAM_NAME#]_value" class="form-control" id="[#PARAM_NAME#]_value">
                <script type="text/javascript">
                    $("#[#PARAM_NAME#]_value").spectrum({
                        preferredFormat: "hex",
                        showInput: true,
                        chooseText: "OK",
                        cancelText: "<#LANG_CANCEL#>"
                    });
                </script>
Но не могу понять, как задать действие при нажатии кнопки OK. Надо как то передать выбранный цвет.
За это сообщение автора directman66 поблагодарили (всего 2):
chimik (Ср сен 12, 2018 3:55 pm) • Samir77 (Пн окт 01, 2018 2:28 pm)
Рейтинг: 2.33%
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
Аватара пользователя
tarasfrompir
Сообщения: 3216
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 223 раза
Поблагодарили: 815 раз

Re: [Модуль] MagicHome

Сообщение tarasfrompir » Ср сен 12, 2018 7:33 am

directman66 писал(а):
Ср сен 12, 2018 7:15 am
По поводу ПУ думаю проблем дописать не будет. Пока завис по темплейте, добавил на форму RGB-пикер,

Код: Выделить всё

                <link rel='stylesheet' href='<#ROOTHTML#>js/spectrum/spectrum.min.css' />
                <script src='<#ROOTHTML#>js/spectrum/spectrum.min.js'></script>
                <link rel='stylesheet' href='?view_mode=changeсolor_[#VALUE#]&id=[#ID#]&tab=info' />
                <input type="text" value="[#CCOLOR#]" name="[#PARAM_NAME#]_value" class="form-control" id="[#PARAM_NAME#]_value">
                <script type="text/javascript">
                    $("#[#PARAM_NAME#]_value").spectrum({
                        preferredFormat: "hex",
                        showInput: true,
                        chooseText: "OK",
                        cancelText: "<#LANG_CANCEL#>"
                    });
                </script>
Но не могу понять, как задать действие при нажатии кнопки OK. Надо как то передать выбранный цвет.
а из пу ргб шаблончик смотрел ?

Вот и он

Код: Выделить всё

<script src='/js/spectrum/spectrum.min.js'></script>
<link rel='stylesheet' href='/js/spectrum/spectrum.min.css' />

<div class="device-widget controller" onClick='callMethod("%.object_title%.switch");'>
    <div class="device-icon %.status|"off;on"%"></div>
<div class="device-header"><span>%.object_description%</span>
    <input type="text" id="color%.object_id%" class="colorpicker" value="%.colorSaved%" onChange='callMethod("%.object_title%.setColor","color="+encodeURIComponent(this.value));'/>
</div>
<script>
    $("#color%.object_id%").spectrum({
        preferredFormat: "hex",
        showInput: true,
        chooseText: "OK",
        cancelText: "<#LANG_CANCEL#>"
    });
</script>
</div>
За это сообщение автора tarasfrompir поблагодарил:
directman66 (Ср сен 12, 2018 7:40 am)
Рейтинг: 1.16%
Спасибо нам ПОМОЖЕТ..!
directman66
Сообщения: 2801
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 380 раз
Поблагодарили: 693 раза
Контактная информация:

Re: [Модуль] MagicHome

Сообщение directman66 » Чт сен 13, 2018 6:33 am

Если в onChange добавить alert(this.value); - отрабатывает как нужно. Но сколько не пытался вызвать url разными методами, никакой реакции не происходит.

И еще не пойму, как корректно сделать наследуемость.
СпойлерПоказать
Безымянный34434.png
Безымянный34434.png (59.4 КБ) 9428 просмотров
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
Аватара пользователя
tarasfrompir
Сообщения: 3216
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 223 раза
Поблагодарили: 815 раз

Re: [Модуль] MagicHome

Сообщение tarasfrompir » Чт сен 13, 2018 7:05 am

Вот функция рваботающая на аяксе -

Код: Выделить всё

 function selectServers(){
   var types = $('select[name="selectType"]').val();
    $.ajax({
            type: "POST",
            url: "/modules/devices/SMediaRenderer_urllist.php",
            data: {action: 'SERVERS', types: types },
            cache: false,
            success: function(responce){ $('div[name="selectDataServer"]').html(responce); }
            });
 };
а вот вызов ее

Код: Выделить всё

<select size="1" name="selectType" ' onChange="selectServers()" style="width:160px;">
За это сообщение автора tarasfrompir поблагодарил:
directman66 (Чт сен 13, 2018 7:56 am)
Рейтинг: 1.16%
Спасибо нам ПОМОЖЕТ..!
directman66
Сообщения: 2801
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 380 раз
Поблагодарили: 693 раза
Контактная информация:

Re: [Модуль] MagicHome

Сообщение directman66 » Чт сен 13, 2018 12:25 pm

Пример из файла SRGB.html производит вызов метода объекта.

Код: Выделить всё

<script src='/js/spectrum/spectrum.min.js'></script>
<link rel='stylesheet' href='/js/spectrum/spectrum.min.css' />

<div class="device-widget controller" onClick='callMethod("%.object_title%.switch");'>
    <div class="device-icon %.status|"off;on"%"></div>
<div class="device-header"><span>%.object_description%</span>
    <input type="text" id="color%.object_id%" class="colorpicker" value="%.colorSaved%" onChange='callMethod("%.object_title%.setColor","color="+encodeURIComponent(this.value));a'/>
</div>
<script>
    $("#color%.object_id%").spectrum({
        preferredFormat: "hex",
        showInput: true,
        chooseText: "OK",
        cancelText: "<#LANG_CANCEL#>"
    });
</script>
</div>
В нашем случае объекта как такогового нет, требуется передать viewmode классу модуля.

Поковырявшись в сети, нашел более интересныый класс, который вызывается вот так
<script src="<#ROOTHTML#>templates/magichome/jscolor.js"></script>
<input class="jscolor" onchange="update(this.jscolor)" value="[#CCOLOR#]" size="5">

наследуется без проблем, выглядит куда лучше спектрума, а вызов функции

Код: Выделить всё

<script>
function update(jscolor) {
window.document.location.href='?action=magichome&data_source=<#DATA_SOURCE#>&view_mode=customhex_'+jscolor+'&id=[#ID#]&tab=info'
}
</script>
Основной класс magichome вроде как вызывается, но почему-то view_mode пустой. Извиняюсь, я с явой вообще не работал никогда.

Выглядит этот вроде получше.
СпойлерПоказать
Безымянныйsd.png
Безымянныйsd.png (53.43 КБ) 9404 просмотра
Вложения
jscolor.js
(52.83 КБ) 601 скачивание
За это сообщение автора directman66 поблагодарил:
tarasfrompir (Чт сен 13, 2018 12:30 pm)
Рейтинг: 1.16%
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
Аватара пользователя
tarasfrompir
Сообщения: 3216
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 223 раза
Поблагодарили: 815 раз

Re: [Модуль] MagicHome

Сообщение tarasfrompir » Чт сен 13, 2018 12:30 pm

Класс всегда такое искал но как то поисковик из мена неочень
Спасибо нам ПОМОЖЕТ..!
directman66
Сообщения: 2801
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 380 раз
Поблагодарили: 693 раза
Контактная информация:

Re: [Модуль] MagicHome

Сообщение directman66 » Чт сен 13, 2018 12:35 pm

Модуль обновил, чтоб устройство появилось, если нет железяки, можно добавить что-нить в таблицу magichome_devices. Тогда можно будет потестировать )
Не работает пока моя функция. В строке браузера

Код: Выделить всё

http://myip/admin.php?action=magichome&data_source=&view_mode=customhex_78e0ff&id=1&tab=info
вроде все параметры и view_mode есть, но они в класс почему-то не попадают.

Пикер работает только при первом обращении к странице. Если потыкать повключать разные цвета, то он почему-то перестат работать.

Полезная картинка по jquery
СпойлерПоказать
6cf6217263d8717f20f8d163330c5991.gif
6cf6217263d8717f20f8d163330c5991.gif (23.31 КБ) 9383 просмотра
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
Ответить