Продолжу рассказ о том, как я пилю свою сцену
Прошло полгода с моей публикации 1 части. Я много чего освоил, многое переделал. Хочу поделится тем, что есть сейчас. От вас в комменты жду ваши сценарии и шаблоны поведения умного дома, а так же предложения о том, что можно улучшить. Кода будет не так много, это скорее блог, чем "How is it"
Планшет висит на стене в прихожей, рядом с входной дверью. В качестве планшета используется Samsung Tab S5e Live Demo Unit =)
Заказал с алика обычные пластмаски с 3М скотчем, сделал отверстие и прибил на дюбель-гвоздь. Там же был заказан USB-C магнитный провод для зарядки за 200р. Благодоря этому, можно в любой момент снять планшет и пользоватся по дому.
Как уже писал ранее, я юзаю fully kiosk browser для управления планшетом и получения с него информации. Например, ночью при сработке датчика движения вывожу планшет из Ambient режима (Далее) и включаю экран. Для тех, кто будет юзать, конструкция вида:
if(typeof fully !== 'undefined') {
//Какой то код
}
Будет выполняться только на том устройстве, где запущен fully kiosk browser, а например на телефоне не будет. Я так узнаю о том, стоит ли показывать модальное окно, например с напоминанием о том, что может выключить свет?!
Информацию о том, есть кто дома или нет я решил получать через модуль zyxel_lan_device, ведь WiFi включен всегда и у всех...
Да немного, всего 20 сценариев в MJDM, самый большой тот, который отдает JQ почти всю инфу из MJDM. Далее JQ разбирает и раскидывает по блокам.
Есть у меня топ - 3 скриптов (Функций, сценариев), без которых я не могу обойтись и которые мне очень сильно помогают экономить время:
Очень простой сценарий, который конвертит 0 в 1 и наоборот. Присылаем Bedroom_Light.chanel_1 и оно работает. Проверок нет, ибо мне они не нужны.
$object = strip_tags($_GET['getobject']);
if(empty($object)) {
http_response_code(404);
//Умри!
die();
}
if(gg($object) >= 1) {
sg($object, '0');
} else if(gg($object) == 0) {
sg($object, '1');
}
Код sergejey, но он прям маст хэв, позволяет узнать время до сработки таймера.
function timerExists($timer) {
$timerId=timeOutExists($timer);
if($timerId) {
$timer_job = SQLSelectOne("SELECT UNIX_TIMESTAMP(RUNTIME) as TM FROM jobs WHERE ID='".$timerId."'");
$diff = (int)$timer_job['TM']-time();
return $diff;
} else {
return 0;
}
}
JS функция, через которую легко устанавливать значения
function sendValue(object, property, value) {
$.ajax({
url: '/objects/?op=set&object=' + object + '&p=' + property + '&v=' + value,
success: function(responce) {
showNoty('done', 'Для ' + object + '.' + property + ' установлено значение ' + value);
},
error: function(responce) {
showNoty('error', 'Не удалось записать настройки :(');
}
});
}
Т.к мой планшет с экранов amOLED он имеет свойство выгорать, поэтому мне пришлось заморочится с амбиент режимом, вся суть которого сводится к тому, что если включен ночной режим в системе и нет движения больше 30 минут - переводим планшет в этот режим. Выглядит так:
Если сработает ночью датчик движения - планшет вернется в стое стандартное состояние.
Пишите, что реализовано у вас и что можно реализовать мне, будет интересно почитать! Да и вообще, рассказывайте о ваших реализациях УД, я точно почитаю, ибо уже все обзоры на YouTube просмотрены =)
Нижний Новгород, Россия
На форуме: SmoKE_xDDD