Как управлять светом на Xiaomi Gateway используя сторонний датчик движения HCSR501

Существуем много разных производителей различной техники домашней автоматизации и у всех своя реализация, все они редко бывают совместимы друг с другом из коробки. Хотя есть несколько устройств, которые совместимы между собой и я уже писал о них и делал видео. Например это светодиодная лента Yeelight Led Strip и голосовой контроллер устройств Amazon Alexa. В прошивку Yeelight Led Strip встроена возможность управлять ею голосом с помощью Amazon Alexa, так же примером такой кооперации является умная розетка Wi-Fi Smart Socket и всё та же Amazon Alexa. Но вот Xiaomi Gateway никак не совместим с другими производителями устройствами для умного дома, хотя может управлять светодиодной лентой Yeelight Led Strip, которая входит в состав эко системы от компании Xiaomi. В этой статье я хочу продемонстрировать что можно создать своё собственное устройство и управлять световыми диодами встроенными в Xiaomi Gateway. Для этого нам необходимы:

Как передать в Majordomo событие что было совершено движение я уже писал вот в этом посте. Что бы Majordomo мог получить доступ к Xiaomi Gateway необходимо установить модуль XiaomiHome из маркета дополнений и привязать к какому-нибудь свойству значения rgb и brightness. После этого вы сможете менять их из Majordomo.

Исходные коды:
Плавное включение и затухание светового индикатора красного цвета три раза. Количество можно регулировать выставив в цикле соответствующую цифру.
Включение режима диско, попеременная смена цвета.

Голосовое управление любой светодиодной лентой за 3 бакса

Недавно я показывал как управлять светодиодной лентой Yeelight Led Strip с помощью Amazon (покупал тут), но стоимость этого навороченного устройства более $30 и длинна всего 1 метр. Это слишком дорого. Недавно я купил за $3 на алиэкспрес обычную светодиодную ленту, прикрутил к ней БУшный блок питания на 12 вольт и вставил в умную розетку Wi-Fi Smart Socket, которая тоже поддерживает управление через Amazon Alexa. Эта сборка мне обошлась в $17 что намного дешевле, а результат тот же. Тем более что эта лента была длинной 4.8 метра. В итоге получаем голосовое управление светодиодной ленты за $17. Но стоит отметить что у этой ленты только белый цвет и нельзя регулировать яркость. Для этих целей я купил димер, но что бы его прикрутить нужно будет ещё повозится и без микроконтроллера менять яркость не получится. Но как показала практика изменять яркость и цвет мне не так часто необходимо.

Как программно перезагрузить ардуино через каждый час

Всем привет, столкнулся с проблемой что из-за зависаний по не известным мне пока причинам перестаёт выполняться определённый код на ардуино. Кнопка ресет на микроконтроллере сразу приводит его в чёвство. Я много времени потратил на поиск фикса, но низкий скил в программировании ардуино не позволил мне это сделать. Поэтому на данном этапе я решил перегружать каждый час арудину. Для всех кто ищет готовое простое решение:

unsigned long time;

void setup() {
Serial.begin(9600);
time = millis();
}

void loop() {
if(millis() - time > 3600000){
Serial.print("reboot");
asm volatile("jmp 0x00");
}
}

Есть множество других решений программной перезагрузки, но они более сложные. Конечно будут случаи когда этот способ вам не подойдёт, тогда вам необходимо гуглить про watchdog.

Привязываем датчик движения SR501 HC-SR501 к Majordomo

Я уже писал про говорящие датчики дыма, а в этой статье я хотел бы описать похожую реализацию, но уже с датчиком движения. На алиекспрес я купил датчик SR501 HC-SR501 вот тут всего за $2.22. Это самая дешёвая цена, которую я смог найти на момент покупки. Так же для реализации своего проекта говорящего датчика движения вам необходимо купить микроконтроллер Arduino Nano, купил я его вот тут за $2.80. Что удобно, продавец за эту цену прилагает и USB кабель для подключения к компьютеру для заливки прошивки и питания одновременно. И Ethernet шилд для передачи данных с самого датчика в сеть. Я его купил вот тут за $3.84. Итого выходит $8.86. Вы скажите, что зачем мне городить весь этот конструктор если я могу купить за теже $10 датчик движения Xiaomi. Я купил и собрал оба варианта и вот вам моя сравнительная характеристка плюсов и минусов.

Кастомный датчик своими руками.
датчик температуры и влажности

Плюсы:
– работоспособность не зависит от китайского сервера
– нет жёсткой привязки по софту к экосистеме от Xiaomi
– не требует дополнительный шлюз (+$28) и полностью автономен
– данные передаются не по воздуху, а по кабелю
– возможность разобрать комплектующие и применять в других проектах
– возможность переписывать прошивку под новые проекты
– прокачка в сборке умных вещей и создание прошивок :)

Минусы:
– стоимость соизмерима с готовым коммерческим решением
– нет красивого дизайна и коробки
– занимает больше места
– сложность в сборке для новичка

Датчик от Xiaomi
датчик движения Xiaomi

Плюсы:
– красивый дизайн
– соизмеримая стоимость с кастомной реализацией
– возможность быстро добавить в сценарии экосистемы Xiaomi
– лёгкость в настройке и подключение

Минусы:
– работа зависит от китайского сервера
– для работы необходим шлюз (+$28)
– если не заставили работать плагин Majordomo то датчик можно использовать исключительно в экосистеме Xiaomi (как у меня :)

Если несмотря на все трудности вы всё таки решили собрать свой датчик, то читаем дальше.
Как подключать сами провода к микроконтроллеру я описывать не буду, в сети множество статей и видео на эту тему. Я же просто предложу использовать мою версию прошивки. Как она работает? Когда датчик зафиксирует движение, то значение 1 будет передано по протоколу MQTT в брокер. В своём примере я использую бесплатный сервис cloudmqtt.com, но вам настоятельно рекомендую использовать свой сервер. Например Mosquitto. В скетче, вот в этой строке

if (client.connect("Client", "login", "password"))

вам нужно будет указать свой логин и пароль к брокеру. В Majordomo у вас должен быть установлен модуль MQTT.

mqtt

Его так же нужно настроить на ваш брокер указав все настройки. После этого в Majordomo будет приходит значение 1 всякий раз когда ваш датчик зафиксирует движение. В настройках модуля MQTT Majordomo, нужно приязать значение в какому-нибуть свойству, после чего вы сможете использовать его в своих сценариях. Либо вы можете сразу указать что бысрабатывал метод, как только значение измениться. А в самом методе написатьчто-то в роде:

if(gg("Kitchen.HCSR501")=='1'){
say("Зафиксировано движение",2);}
sg("Kitchen.HCSR501","0");

где Kitchen.HCSR501 имя свойства указанное в модуле MQTT куда приходит значение с датчика.
Вот и всё, если у вас возникли какие-нибуть вопросы, то задавайте в коментариях,я постараюсь ответить. Так же рекомендую посмотреть видео, ссылку на которое я оставил в самом начале поста. В нём я детально показываю всё тоже самое, но с датчиками дыма.

Управление светодиодной лентой Yeelight Led Strip голосом с помощью Amazon Echo (Alexa)

В предидущем посте я рассказал и показал в видео как управлять голосом цветной лампочкой от компании Yeelught. В этом посте я хотел бы показать что с такой же лёгкостью можно управлять голосом и светодиодной лентой от той же компании. В отличие от лампочки, у ленты есть механическая кнопка для управления включением, выключением и сменой цвета. Хотя сложно представить что бы у лампочки была такая кнопка :). С точки зрения настройки процесс ни чем кардинально не отличается, всё так же в оригинальном приложении нужно добавить устройство, переименовать так как бы вы хотели к нему обращаться и добавить нужные сценарии с нужным именем. К сожалению имя нельзя давать на кирилице, вернее имя дать можно, но Алекса его не распознает. Двлее в панели Алекы делаем новый поиск в разделе Skills вот и всё, можно пользоваться.