Sonoff Relay добавление поддержки датчика движения
Vložit
- čas přidán 27. 08. 2024
- Скетч для реле Sonoff обзавелся поддержкой датчика движения.
Все подробности остального функционала скетча, а также его первичной загрузки, смотрите в предыдущих 2-х роликах серии "Sonoff Relay".
Код из видео: drive.google.c...
Если у вас после прошивки модуль не работает, то в конфигурации платы в Arduino IDE измените Flash Мode на "DOUT" и прошейте модуль еще раз (спасибо за решение Сергею Тучкину).
Актуальная версия скетча в ролике • Прошивка для Sonoff Ba...
Я тоже считаю, что из Sonoff много не выжать. Единственное - это повысить универсальность устройства, добавив IR датчик (есть в вашем предыдущем проекте). Для этого есть и место и свободный пин. Ждем чего-то глобального.
Спасибо за вашу работу. отличны идеи для умного дома)). Жаль только, что прекращаете разработку проекта. мне почему-то казалось, что обзор датчика освещенности TSL2561 и расширителя портов STM8 был логическим началом глобального грандиозного проекта. Но, в любом случае, спасибо за вашу работу, всегда с нетерпением ждал ваши новые видео.))
Вот именно чтобы перейти к глобальному грандиозному проекту и нужно от мелочей отойти. :)
Можно без PIR сенсора сделать wi-fi sniffer, а можно и в связке с ним, тогда будет и по движению реагировать и засекать имеющую мобилку у того кто заходит в зону покрытия wi-fi, а мобильные телефоны с wi-fi сейчас у каждого, затем в журнале логов смотреть кто заходил в зону и с каким телефоном по базе mac адресов, iphone только малину может испортить, но они не у всех имеются :)
у iphone есть защита от "нюхача", политика у них такая чтобы их не могли учетные сервисы посетителей в магазинах посчитать.
Великолепно
Добрый день спасибо за труд что вы проделали. Вопрос о применении такой логики пир датчика крайне ограничен. Вы написали что хотите идею расширения. Хотелось бы защиту от ложных (вернее руки моешь а свет выключился) срабатываний было возможность установить время второго срабатывания в период сразу за первым чтоб не махать руками как мы все делаем каждые 15 сек . И желательно выбор что делать с реле после окончания выставленного времени (можно обрабатывать логикой умного дома)!
А минуту или две установить не пробовали? Чтобы руками не махать. :)
Подскажите совсем для чайника, какой файл из архива скейч или надо как то все файлы загружать?
"Хотелка" #2 реализована! Спасибо огромное!!! Теперь вопрос. Что нужно поправить в коде, чтобы в топик помимо 1 публиковался и 0 ( когда движения нет). Значение "0" необходимо, т.к. более сложная логика срабатывания реле идёт через "умный дом".
Ох уж эти женщины... :)
Перекачайте архив со скетчем.
Но "0" прилетает буквально через секунду-другую после "1", как датчик импульс завершает.
Alex Morozov Нет предела совершенству ;) Ещё раз огромное спасибо!!! Ждём новых ваших творений.
Это Вы что. в обычное реле Sonoff, не TH, вживили датчик температуры? Можно попросить мастер-класс про это?
В самом первом видео о прошивке Sonoff czcams.com/video/lZOYQSDSoJw/video.html
Все доступно и понятно, спасибо. Вот только вопрос, как можно в Вашем проекте rfid мультиканальный подправить вкладку setup control, чтоб выглядела как в этом проекте.(чтоб pir подвесить) Если не сложно, подскажите пожалуйста. Спасибо.
Вероятно взять нужный кусок кода из процедуры обработки страницы handleControlConfig.
Alex Morozov, спасибо за ответ. попробую разобраться. У Вас замечательные идеи и проекты. Возникает желание отблагодарить Вас финансово за проделанную работу.
Здравствуйте. Sonoff RF (установленный на улице) подвязался к беспроводным датчикам движения (находящимся внутри дома) и включается - выключается при срабатывании датчиков движения. Цель была другая (включать/выключать освещение на улице). В настройках в приложении не могу найти как это отключить. Подскажите как мне отвязать датчики? Заранее спасибо.
А почему вы мне этот вопрос задаете? Моя прошивка не для RF, а как работает базовая - я понятия не имею.
Задал вопрос надеясь что вы подскажите... как побороть проблему...
И будет ли вообще работать отдельно от датчиков движения? Можно ли сделать работу не в совокупности? Спасибо
У меня нет Sonoff RF, так что увы, не подскажу.
Подскажите, пожалуйста, где искать головной файл "DHT.h" в модернизированной кастомной прошивке и в прошивке, поддерживающей датчик PIR? Без него, что очевидно, компиляция скетча не происходит: #include "DHT.h" compilation terminated.
ОТВЕТИТЬ
Установить из репозитория Arduino IDE библиотеки DHT Sensor Library (Adafruit) и Adafruit Unified Sensor.
Большое спасибо! Все заработало.
Здравствуйте. Спасибо за выполненную работу. Хотел бы попросить Вас о помощи. В общем, применительно к датчику движения, нужно чтобы реле выключалось при появлении движения, выжидало определенное время и если движения нет - включалось. В общем задача обратная той, что вы показывали. У меня если честно на этой прошивке не получилось так настроить реле. Заранее благодарен.
Так а как же на счет поддержки настенного выключателя, без изменения разводки.
В общем я у себя так в люстру сделал:
Сам блок управления 3-мя релюшками расположен в люстре.
Но я могу выключателем на стене либо включить принудительно свет, либо выключить.
Алгоритм такой:
- Выключатель всегда находится в состоянии включено (и люстра естественно всегда онлайн)
- Если нужно переключить реле, я выключатель перевожу в состояние выключено, затем через секунды 3 включаю и свет включается,
- если нужно выключить, то опять щелкаю выключателем свет выключается - выключатель опять в нормальном состоянии включено и т.д.
В общем основано за счет EEPROM памяти. Так же предусмотрен режим, аварийного отключения электричества в доме, что бы когда вновь включат электричество, то реле находилось в выключенном состоянии - работает так, если после подачи питания в люстру проходит более 5 секунд, то состояние реле (в ячейку EEPROM) записывается выключено и при следующей перезагрузке по питанию, будет восстановлено из EEPROM состояние реле выключено.
Таким образом что бы переключать реле, выключателем нужно щелкать с интервалом между откл . вкл не более 3 секунд.
Такая функция есть у многих китайских радио-реле, но в некоторых не предусмотрен режим аварийного отключения электричества и придя домой с работы, можно узнать что отключали электричество в доме, ведь вас будет приветствовать постоянно включенный свет. :)
Я понимаю что у вас есть датчик движения сейчас, но иногда есть моменты когда нужно свет включить на постоянной основе, пока сам не выключишь, вот с помощью данной функции можно настенным выключателем переключать режимы (их может быть не только 2, но и более).
Надо бы реальный EEPROM использовать для таких целей, хотя бы в той же STM8. У него ресурс 300К записей, а у флеша дай Бог 10К.
Я правильно понял, что выключатель у Вас обычный проводной? Интересное решение. Но тут народ системами "умного дома" страдает в основном, им "малая механизация" ни к чему, хотя автономность Вашей конструкции в разы выше.
да, самый обычный проводной выключатель, он по дэфолту был установлен в стене.
Сначала купил готовый китайский выключатель с датчиком движения и освещенности и думал его вместо этого подключить (кстати он тоже 2-х проводной), но кое кому это не сильно понравилось т.к. необходим был режим "постоянно включено". :)
И тут все понеслось - блок управления люстрой на 3 раздельных канала, с датчиком движения, радио-брелком (315Мгц), управлением по mqtt (тут вообще куча режимов, можно выбрать конкретно с каким каналом что бы работал датчик движения, установить время свечения после сработки датчика движения, видно сколько времени прошло с момента последнего движения, раздельное управление каждым каналом).
С радио-брелка управление такое: 4 кнопки есть, A,B,C - раздельно управляют 3-мя лампами, режимы переключаются по кругу (1- лампа выключена и датчик движения для ее тоже, 2- лампа включена, датчик движения выключен, 3- режим лампа включена и датчик движения тоже, при активации 3-ого режима мигает 2 раза данной лампой), кнопка D делает тоже самое только одновременно со всеми лампами.
Настенный выключатель имеет всего 2 режима у меня: 1-ый все 3 лампы либо выключены, либо управляются датчиком движения (зависит от установок при помощи MQTT или радио-брелка, если управление по датчику то все 3 лампы мигнут 2 раза), 2-ой все 3 лампы включены, датчик движения выключен. При этом настенный выключатель так же синхронизирован с MQTT, ну в смысле видно что лампы принудительно включены и не потухнут сами ни когда, пока их вручную не выключить.
Вот бы еще добавить поддержку Sonoff RF - версии.
У производителя даже wiki есть по такому модулю:
www.itead.cc/wiki/Sonoff_RF
www.itead.cc/wiki/433Mhz_RF_receiver
Я по фотографии не гадаю. :)
Там радиомодуль подключен параллельно кнопке на 15 пин. Нопри этом умеет програмироватся для запоминания пульта.
Чтобы вогнать его в этот режим (из инструкции www.itead.cc/blog/user-guide-for-sonoff-slampher):
1) Быстро нажмите кнопку «SET» на Sonoff дважды, светодиод на Sonoff моргнет один раз, а затем одну из кнопок пульта один раз зажать на несколько секунд для сопряжения.
2) Чтобы отменить сопряжение, вам нужно быстро нажать кнопку «SET» на Sonoff 3 раза.
Так вот если я не ошибаюсь, в вашем коде предусмотрено двойное нажатие - включается нагрузка с автовыключением. При этом возникает некий конфликт: радиомодуль одновременно с этим входит в режим программирования пульта))).
Поменять логику радиомодуля не представляется возможным, т.к. за это отвечает EFM8BB10F2G-A-QFN20 на плате со своей собственной отдельной прошивкой.
Может имеет смысл както поменять логику включения нагрузки с таймером отключения?
Или позволить через web отключать данный режим для Sonoff RF?
Alex, подскажите, пожалуйста, еще момент: при срабатывании датчика движения его статус публикуется в mqtt, а статус включения реле - нет. Причем, после окончания установленного периода статус выключения реле в mqtt публикуется. Куда что дописать?
PIR обрабатывается с помощью прерывания, в котором нельзя вызывать код, способный подвесить модуль, коим является публикация в MQTT. Поэтому реле включается согласно настройкам, но его статус не публикуется. А сам статус движения помещается в очередь событий и обрабатывается (публикуется в MQTT) в главном цикле программы.
А если статус с задержкой публиковать (например, через 1000 мс), после цикла обработки PIR? Дело в том, что в умном доме при срабатывании датчика движения не обновляются кнопки соответствующих светильников: по факту лампочка горит, а кнопка в системе умного дома находится в выключенном состоянии.
Проще тогда в ISR только в очередь событий помещать новое событие, а при разборе очереди в основном цикле программы дергать реле. То же самое можно сделать и для кнопки. Но я так не сделал изначально, потому что если модуль будет ждать таймаута, например, MQTT брокера, и в этот момент будет нажата кнопка или сработает PIR, то реакция реле наступит только по окончании таймаута, а не мгновенно как сейчас.
В .ino-файле в начале метода loopExtra в цикле обработки событий ("while (Events::event_t *evt = events->getEvent())..." добавить publishRelay() перед publishMotion(), т.е.
} else if (evt->type == Events::EVT_MOTION) {
publishMotion(evt->data);
станет
} else if (evt->type == Events::EVT_MOTION) {
publishRelay();
publishMotion(evt->data);
Alex, отлично! Все заработало. Протестил - реле, вроде, не виснет.
У меня три типа разных PIR сенсоров (мини, как у Вас, и один емкостный) все подключаю происходят жуткие беспорядочные ложные срабатывания. За 3 минуты по 50-100 включений. Я думал проблема в питании сенсоров, но нет. Если их подключать к ардуино нано все отрабатывает четко, ложных срабатываний нет. В чем может быть загвоздка?
Практически все PIR датчики питаются от 5 В и дико глючат на 3.3 В, так что все-таки питание.
А у кого нибудь есть опыт привязки реле Sonoff с этим скетчем к domoticz?
Как привязать на sonoff rf две веспроводные кнопки 433 получилось только одну это что то с прошивкой? Возможно это исправит?
Это прошивки для Basic версии реле, не для RF!
Алексей, а как добавить датчик освещенности? думаю вместе с датчиком PIR он был бы очень в тему, может прикрутить менюшку вместо (рядом) с DHT?
Именно LDR никак, ему нужен аналоговый вход, а он не разведен. А цифровой датчик освещенности потребует уже 2 ноги. Можно, конечно, завести I2C на RX и TX, но как-то не канонично... :)
нет, айтуси точно будет в ущерб уже имеющемуся функционалу, хочется чтобы PIR срабатывал только в темное время. Будем подумать как прикрутить фотодиод или фоторезистор к PIR :)
На моих PIR-сенсорах есть штатное посадочное место для LDR, вот только надо будет делитель правильный подобрать для срабатывания при нужном уровне освещенности. Причем и на микроволновых датчиках движения тоже часто место под LDR разведено.
а можно ссылочку на ваши PIR, воизбежание так сказать недоразумений, и маркировку ПМ LDP, можно в личку tu4kin@inbox.ru, но думаю народу и здесь будет интересно.
Я их больше года назад покупал, так что ссылка бесполезна. LDR у меня из комплектов, которые китайцы формируют как Arduino Enhanced Kit, так что точный номинал тоже неизвестен, но это как раз не беда, потому что резистор для делителя все равно по "месту" надо подбирать.
Вот вроде товарищ иностранец все расписывает в своем ролике czcams.com/video/2dxhbXHYEG0/video.html
У меня распаян вроде 105 (1 МОм), возможно его придется или заменить или в параллель подстроечник напаять и потом замерить, что именно нужно напаять сверху для коррекции под конкретный LDR и конкретные условия освещения.
Добрый вечер! Спасибо за труд. Использую данный код немного не по назначению. Буду очень признателен, если будет возможность показать где можно вставить вывод времени и показаний датчика на LCD 16X2 скажем раз в 1 сек. А также если возможно дополнительный клиент MQTT для чтения других показаний на том же MQTT брокере. С уважением Андрей.
Смотрите ролик про добавление LDR к умному реле, там подобный фреймворк рассмотрен в деталях.
Здравствуйте. А где найти такой датчик движения?
Там же, где и все остальное. На aliexpress и т.п.
Заметил ложные срабатывания датчика движения. Настройка чувствительности помогла снизить частоту ложных срабатываний, но на минимальных настройках они все же остались. Как можно побороть данную проблему?
Вероятно заменой датчика движения!
Или вы думаете, что прерывание само ложно вызывается и это ошибка в коде? :)
По идее питать PIR нужно от 5 вольт, на них обычно стоит стабилизатор на 3.3, который при 3.3 на входе естественно просаживает напряжение, может быть это влияет на его работу. Но тогда лучше убедиться, что с сигнальной ноги уровень не превышает 3.3, иначе можно спалить вход ESP. Мой датчик под осциллографом вел себя весьма хаотично в плане уровней на сигнальной ноге...
Во-первых, у нормального PIR нет дребезга на ноге. А во-вторых, дребезг бы и не мешал, датчик же только на включение работает, а дребезг опасен ложными срабатываниями только на переключении вкл-выкл. Хотя если на осциллограмме будут короткие выбросы помимо четкой логической единицы, то тогда можно уйти от прерывания на тикер (как обрабатывается кнопка) и реагировать только на устойчивое состояние сигнальной ноги.
В любом случае, надо подключить PIR отдельно и посмотреть на его поведение. И если он глючный, то попробовать другой.
Да, скорее всего связано с питанием, но к сожалению нет ноги на плате с 5в. на модуле. Вариант только пайки напрямую. А защита от "дребезга" может помочь или это вообще с другой оперы?
Понятно, просто пробовал на нескольких датчиках, ситуация аналогичная.
Дребезг не мог бы вызвать ложное срабатывание.
Можете попробовать подправить в коде процедуру pirISR, добавив в самое ее начало код и проверить вину дребезга:
static uint32_t lastChanged;
if (millis() - lastChanged < 10)
return;
lastChanged = millis();
И подключите датчик отдельно и посмотрите, как он себя ведет.