IoT, ESP, NODE WiFi лампа-будильник

AlexGyver

Гувер
Команда форума
30.07.2018
78
225
53
#1
Ветка обсуждения проекта Крутая WiFi лампа-будильник
Страница проекта на AlexGyver.ru: https://alexgyver.ru/gyverlamp/
Репозиторий на GitHub: https://github.com/AlexGyver/GyverLamp/
Видео:

Делитесь своими вариантами изготовления, модификациями и улучшениями!

==========================================================================
Версия прошивки от Whilser:
Постоянная ссылка: https://github.com/Whilser/GyverLamp
Демо: https://sprut.ai/client/blog/1641
  • Поддержка работы с MQTT сервером
  • Нативная интеграция с Home Assistant методом Discovery
  • Возможность ОТА обновления через сетевой порт с интересным эффектом "матрица" во время обновления
  • Возможность выбирать цвет из палитры Home Assistant либо через MQTT брокер
  • Автоматическое обнаружение подключенной сенсорной кнопки и корректная работа без нее
  • Корректная работа в случае недоступности MQTT брокера (адаптивное подключение)
  • Возможность настроить работу как с MQTT брокером, так и без него без повторной компиляции прошивки.
  • Добавлен веб интерфейс управления. Для управления нужно перейти по адресу http://ESP-ID.local/. Вместо ID нужно вписать ID чипа ESP8266. Он отображается в веб интерфейсе при начальной настройке
  • Управление по http - для интеграции с Яндекс Алисой через Домовенка Кузю

==========================================================================
Версия прошивки от gunner47:
Постоянная ссылка: https://github.com/gunner47/GyverLamp
Обновляемый пост с историей всех изменений, описанием и обсуждением: https://community.alexgyver.ru/threads/wifi-lampa-budilnik.1406/#post-10610

  • Более стабильная работа (исправлены ошибки, приводящие к циклической перезагрузке, особенно в режиме точки доступа, к частым подтормаживаниям без доступа к интернету, к самопроизвольному изменению яркости в сборках без кнопки; исправлено выключение будильника, если он сработал при изначально выключенной лампе).
  • Разработано новое android приложение с разделами Управление, Избранные эффекты, Будильник, Таймер. Умеет сканировать сеть и искать лампы, не нужно париться с поиском ip адресов. Умеет запоминать несколько ламп и переключаться между ними. Позволяет более точно выставить все параметры. Прячет или делает недоступным всё, чем нельзя управлять из-за настроек лампы или её недоступности. Раздел Избранные эффекты циклически переключает понравившиеся режимы по статическому/случайному таймеру.
  • Добавлено два новых эффекта: Светлячки со шлейфами и Белый свет.
  • Обновление прошивки по воздуху. Актуально для тех, кто уже собрал лампу, но всё ещё экспериментирует с прошивкой.
  • Включение (подача питания или перезагрузка модуля) при зажатой кнопке приводит к стиранию запомненных настроек WiFi сети.
  • При переносе лампы в новую WiFi сеть (при недоступности ранее запомненной) лампа разворачивает WiFi точку доступа для ввода имени и пароля новой WiFi сети. Не нужна перепрошивка, если не захардкожен статический IP.
  • В гитхаб репозитории выложены файлы прошивки, android приложение и файл thunkable проекта для желающих всё настроить/переделать под себя.
 

Wan-Derer

Модератор
Команда форума
31.07.2018
980
146
53
Москва
wan-derer.ru
#2
Сюда выкладываем свои реализации данного проекта.
С проблемами и вопросами идём сюда

Если Вы создали свою прошивку и хотите поделиться с народом, напишите мне:

1. Постоянную ссылку на вашу прошивку: Гитхаб, Яндекс-Диск или какой-то иной ресурс, где можно добыть актуальную версию.
2. Очень кратко о возможностях вашего варианта, грубо говоря, чем он отличается от стандартного.

У себя в репозитории не поленитесь разместить текстовый файл, в котором опишите вашу версию и напишите краткую инструкцию: как установить вашу прошивку и как ей пользоваться.

Ваша версия будет опубликована в заглавном сообщении этой ветки.
 
09.12.2018
6
5
3
#3
Месяц назад сделал 3D модель светильника для своего проекта, лента работала параллельно 6 по 9 диодов(не матрица).
Прошивка была McLighting эффектов много но не для матрицы.
Сенсорной кнопки ещё нет

IMG_20190619_223632[1].jpg IMG_20190619_223644[1].jpg IMG_20190619_223717[1].jpg
 
#4
Хочу похвастаться своим изделием.Плафон и корпус напечатал на 3D принтере. Пластик PET-g, сопло 1 мм, слой 0,6 мм.
1.JPG 3.JPG 4.JPG 5.JPG 6.JPG

Вот оно видео Ссылка на Youtub правда качество не очень.Всё таки в реале цвета гораздо сочнее и красивее.

Вот ссылка на 3D модель лампы: 3D модель
 
Последнее редактирование:
26.06.2019
8
5
3
#6
Версия на матрице 16×16 . Основа: 100я муфта разделленая пополам с 100й заглушкой . Сердцевина 50 труба . Колба: ваза прозрачная 100 рублёвая, покрашеная изнутри белым балончиком . Не греется! блок питания 5v - 5A
 

Вложения

03.07.2019
2
2
3
#7
4 меняющих цвет блюр шара, шатающиеся по матрице

C++:
// --------------------------------- lightBalls ----------------------------------
const uint8_t BorderWidth = 2;

void lightBalls()
{
  // Apply some blurring to whatever's already on the matrix
  // Note that we never actually clear the matrix, we just constantly
  // blur it repeatedly.  Since the blurring is 'lossy', there's
  // an automatic trend toward black -- by design.
  uint8_t blurAmount = dim8_raw( beatsin8(3,64,100) );
  blur2d( leds, WIDTH, HEIGHT, blurAmount);

  // Use two out-of-sync sine waves
  uint8_t  i = beatsin8(  91, BorderWidth, WIDTH-BorderWidth);
  uint8_t  j = beatsin8( 109, BorderWidth, WIDTH-BorderWidth);
  uint8_t  k = beatsin8(  73, BorderWidth, WIDTH-BorderWidth);
  uint8_t  m = beatsin8( 123, BorderWidth, WIDTH-BorderWidth);

  // The color of each point shifts over time, each at a different speed.
  uint16_t ms = millis();
  leds[XY( i, j)] += CHSV( ms / 29, 200, 255);
  leds[XY( j, k)] += CHSV( ms / 41, 200, 255);
  leds[XY( k, m)] += CHSV( ms / 73, 200, 255);
  leds[XY( m, i)] += CHSV( ms / 97, 200, 255);

}
// Trivial XY function for the SmartMatrix; use a different XY
// function for different matrix grids. See XYMatrix example for code.
uint16_t XY( uint8_t x, uint8_t y)
{
  uint16_t i;
    if( y & 0x01) {
      // Odd rows run backwards
      uint8_t reverseX = (WIDTH - 1) - x;
      i = (y * WIDTH) + reverseX;
    } else {
      // Even rows run forwards
      i = (y * WIDTH) + x;
    }

  return i;
}
 
Последнее редактирование:
05.07.2019
33
25
18
#8
Приветствую всех любителей турбореактивной тяги:)
Вопщем натянул я сову на глобус веб-интерфейс на лампу,решил поделиться с сообществом.
Для начала: я не прогер и посему могут быть глюки в работе и немало говнокода.
Что реализовано: изменение режимов, скорости, яркости, масштаба эффектов.
Что не реализовано: выключение лампы, функция рассвет (оно мне не нужно было).

Необходимые библиотеки:
arduinoWebSockets версии 2.1.1
ArduinoJson версии 5.13.5

Как прошить скетч:
Читаем как установить ESP8266 Sketch Data Upload, если он у вас не установлен (очень внимательно читать подзаголовок "Загрузка файлов в файловую систему").
После установки ESP8266 Sketch Data Upload, качаем архив из этого сообщения и распаковываем в папку с вашими скетчами Arduino.
Редактируем файл config.json из папки GyverLamp_v2.0/data. Вместо dd-wrt пишем ваш е название точки доступа. Пароль qwerty12345 также меняете на пароль от своей точки доступа.
Открываем файл GyverLamp_v2.0 в arduino ide. Идем в меню инструменты - выбираем flash size: 4M (3M SPIFFS).
Загружаем скетч на еспшку.
Идем в меню инструменты - выбираем ESP8266 Sketch Data Upload и ждем пока все файлы загрузятся.
Открываем терминал и перезагружаем устройство.
Ищем строку что то вроде этой
Все.
В браузере идем по адресу gyverlamp.local и управляем устройством в свое удовольствие :)
Если адрес gyverlamp.local не работает, то переходим по 192.168.1.57 или тому адресу, что высветится у вас в терминале.
Имейте ввиду, страница грузится не быстро, во время загрузки страницы индикация подтормаживает, но это не критично.
Всем удачи.
 

Вложения

08.12.2018
12
18
3
#9
итак мой вариант берем соединитель воздушного канала 100мм типа такого https://pvd.by/catalog/ventilyacziya/vozduxovodyi-plastikovyie/soedinitel-kruglogo-kanala-d100.html отрезаем одну часть до бортика , вторую разрезаем и отрезаем примерно 1 см .. соединяем края "термосплями" и закрепляем для надежности отрезанной частью , фиксируем вставленную часть в плафоне тремя - четырьмя каплями .
 

Вложения

03.07.2019
2
2
3
#10
Как прошить скетч:
Читаем как установить ESP8266 Sketch Data Upload, если он у вас не установлен (очень внимательно читать подзаголовок "Загрузка файлов в файловую систему").
После установки ESP8266 Sketch Data Upload, качаем архив из этого сообщения и распаковываем в папку с вашими скетчами Arduino.
Редактируем файл config.json из папки GyverLamp_v2.0/data. Вместо dd-wrt пишем ваш е название точки доступа. Пароль qwerty12345 также меняете на пароль от своей точки доступа.
Открываем файл GyverLamp_v2.0 в arduino ide. Идем в меню инструменты - выбираем flash size: 4M (3M SPIFFS).
Загружаем скетч на еспшку.
Идем в меню инструменты - выбираем ESP8266 Sketch Data Upload и ждем пока все файлы загрузятся.
не получается загрузить файлы в есп , ошибка - SPIFFS Error: esptool not found!
UPD : https://github.com/espressif/esptool качаем файл esptool.py и кидаем в папку tools
 
Последнее редактирование:

gunner47

Проходящий мимо
18.06.2019
119
122
43
#11
Я тоже перерабатываю прошивку.
Пока результаты такие:
  1. Исправлена ошибка, связанная с WiFi (сценарий: нормальная работа в режиме подключения к роутеру, потом выключение роутера и последующий перезапуск лампы по watchdog'у или кнопкой reset, но не питанием, - и циклическая вечная перезагрузка с интервалом в 8 секунд). Вообще, исправлен механизм подключения к WiFi сети: поскольку функция отключения watchdog'а не работает (именно из-за этого наблюдаются перезагрузки через 8 секунд), библиотеке WiFiManager выставлен таймаут подключения к WiFi сети в 7 секунд. Этого более, чем достаточно. По-другому обойти не смог. Также добавлен таймаут ожидания ввода SSID и пароля новой WiFi сети в конфигурационном режиме - 3 минуты.
  2. При переносе в другую WiFi сеть теперь не нужна перепрошивка, при неудачном подключении лампа развернёт WiFi точку доступа и запросит SSID и пароль от новой сети. Потом снова перезагрузится в режим подключения к роутеру для нормальной работы.
  3. Добавлена опция выключения обращений в интернет, для этого нужно удалить или закомментировать строку "#define USE_NTP"
  4. Добавлена опция использования лампы без кнопки, для этого нужно удалить или закомментировать строку "#define ESP_USE_BUTTON". Если просто не подключать кнопку, у меня возникала ошибка фальшивого длительного касания и как следствие повышения яркости до максимаьной на любом эффекте.
  5. IP адрес лампы можно просто не вводить (в строке "uint8_t STA_STATIC_IP[] ={}"), тогда роутер сам назначит ей адрес из своего настроенного диапазона адресов. Полученный IP адрес можно будет посмотреть на роутере, приложением-сканером сети типа WiFiman с телефона или компьютера или в выводе Serial порта лампы. Я, например, задал адрес на роутере (привязка по mac адресу в DHCP), а в прошивке оставил пустым.
  6. Включен вывод подробной отладки в Serial порт. Виден обмен данными с android приложением, если вдруг кто-то хочет его менять или дополнять. Отключить можно, удалив или закомментировав строку "#define GENERAL_DEBUG".
  7. Отдельно добавлен подробный вывод отладочной информации библиотеки WiFiman, как самой капризной. Виден процесс подключения к WiFi сети или разворачивания WiFi точки доступа. Отключается установкой false вместо true в строке "#define WIFIMAN_DEBUG (true)".
  8. Также немного потестировал и вложил эксель табличку с результатами тестирования.
  9. Переформатировал под себя код и добавил ещё больше комментариев (мне так удобнее, может, ещё кому-то пригодится).

В планах (если хватит времени и вдохновения):
  1. Исправление регулировки скорости некоторых эффектов.
  2. Обновление прошивки по воздуху, чтоб не расковыривать лампу при выходе новой прошивки.
  3. Портирование прошивки под esp32 (это уже в совсем нескором будущем). Ибо во1, esp32 в отличие от esp8266 двухъядерный (одно ядро выполняет все "служебные" операции, например, поддерживает WiFi подключение, второе выполняет пользовательский код, это очень повышает стабильность и практически сводит к нулю эти перезагрузки по watchdog'у); во2, быстрее. А стоит всего на пару баксов больше.
Буквы U в константах указаны там, где значения должны быть неотрицательные (unsigned). Так проще искать ошибки.

P.S. Тестировал на Wemos D1 mini. Его же выбирал как плату при прошивке.
P.P.S. Не претендую на полноту тестирования или безошибочность своих исправлений, делал, потому что мне так лучше. Если будете брать, пробуйте всё "на свой страх и риск".

UPD 27.07.2019: Прошивка перенесена на гитхаб, качайте полный архив оттуда. Требует замены оригинальной библиотеки GyverButton на доработанную мной версию, иначе не скомпилируется. Поправлено ещё несколько ошибок (1, 2), добавлено обновление по воздуху и сброс сохранённых настроек WiFi при старте модуля с зажатой кнопкой.
UPD 01.08.2019: Большое обновление. Добавлено переписанное с нуля android-приложение (пока без будильника). Добавлено 2 эффекта. Поиск и добавление лампы в сети, без ручного ввода IP адреса. Возврат к стандартной библиотеке GyverButton.
UPD 10.08.2019: Обновлена прошивка и android приложение. Добавлена точная регулировка эффектов и управление будильниками. Качать с гитхаба.
UPD 14.04.2019: Добавлена функция таймера отключения. Таймер полностью реализован в лампе (не в android приложении, откуда он только устанавливается).
UPD 26.08.2019 Добавлена функция автоматической смены избранных эффектов. Требуется перепрошивка модуля и обновление android приложения. Подробности.
UPD 31.08.2019: Добавлены 5 новых эффекта: "Радуга диагональная", "Метель", "Звездопад", "Светлячки со шлейфами" (новый) и "Блуждающий кубик". Прежний эффект "Светлячки со шлейфами" переименован в "Пейнтбол".
UPD 17.09.2019: Лампа сохраняет своё состояние (вкл/выкл) в энергонезависимую память. Эффект белого света теперь управляется не только яркостью, но и масштабом. Подробности.
 

Вложения

Последнее редактирование:
05.07.2019
33
25
18
#12
Небольшое обновление версии прошивки с веб-интерфейсом.
Что нового:
Добавлены 3 новых эффекта (один от товарища q7c и еще два найденных в сети)
При смене эффекта в веб-панели - отображаются текущие настройки эффекта (ползунки не статичны, как было раньше).
В настройках wi-fi возможно изменить адрес панели (по умолчанию http://gyverlamp.local/). Для чего это сделано? Это сделано для того, чтобы не было проблем при подключении двух и более ламп к одному роутеру.
Синхронизирована работа кнопки и веб интерфейса (попробуйте открыть панель управления эффектами и поуправлять настройками лампы с помощью кнопки :) )
После перезагрузки еспшки яркость лампы не меняется, как это было раньше.

ЗЫ. пытался еще реализовать такую фичу: при включении лампа пытается подключиться к роутеру, если роутер выключен и еспшка не может подключиться к роутеру в течении 10 сек.- еспшка переходит в режим точки доступа. и тут начинаются проблемы. Точка доступа создается, но спустя какое-то время пропадает (примерно через минуту-две). При этом есп не перезагружается и лампа работает. Но точки доступа нет. Кто разбирается - посмотрите файл wifi_init.h, где там собака зарыта.
 

Вложения

#13
Я решил повторить лампу, но в Леруа не удалось найти предложенный плафон. Видимо спрос на них действительно повысился многократно. Рядом лежали другие пласттиковые и под патрон рампы Е14. Но и тут сантехника рулит. Вот набор из которого я собрал корпус лампы.

WP_20190630_18_31_37_Pro.jpg
WP_20190630_20_21_11_Pro.jpg

Вот так он светится

 
16.05.2019
23
21
3
#14
Наконец то закончил лампу. Так как я хохол, то у меня нет возможности купить такой плафон в леруа. Купил похожий в Brille.
photo_2019-07-14_18-05-38.jpg
И через дружескую печать на сайте гайвера нашел человека, который напечатал мне подставку и крышку под этот самый плафон.
photo_2019-07-14_18-17-38.jpg photo_2019-07-14_18-17-41.jpg photo_2019-07-14_18-17-42.jpg photo_2019-07-14_18-17-45.jpg
Матрицу закрепил на куске алюминиевой трубы 50х2.
photo_2019-07-14_18-05-47.jpg
Даже косо-криво спроектированная подставка (моё первое 3д проектирование) нормально подходить под плафон и внутренний диаметр трубы. Всё сидит очень плотно.
Также добавил штекер и кнопку вкл-выкл.
photo_2019-07-14_18-27-41.jpg
И, конечно, калька, чтобы не было видно отдельных пикселей. Вид сверху)
photo_2019-07-14_18-05-49.jpg
И вот так оно красиво светится)
photo_2019-07-14_18-05-42.jpg
Спасибо Гайверу за проект. Очень классная штука получилась, не могу нарадоваться)
 
14.07.2019
2
13
3
#15
Все отлично, спасибо.

Собрал лампу с 16х16 матрицей, квадратный плафон, ножки из винных пробок.
Контроллер Sonoff SV, единственное на esp8266, что оказалось под рукой.
Шил из platformio, немного переделал прошивку, WifiManager из development с возможностью асинхронной работы, все остальное последнее из master веток.
https://github.com/CODeRUS/GyverLamp-sonoff-pio

photo_2019-07-14_23-05-44.jpg
Видео до сборки:
 
05.07.2019
33
25
18
#17
Приветствую.
Представляю следующую версию моего варианта прошивки с веб-интерфейсом.
В этом варианте добавилась возможность добавлять эффекты в "избранное".
Также появился ползунок, задающий интервал смены избранных эффектов.
Интервал настраивается в пределах от 1 до 60 минут.

Как активировать режим "избранное".
выберите эффект, который вам нравится, из выпадающего списка.
Нажмите кнопку добавить в избранное. И так со всеми вашими избранными эффектами.
Нажмите кнопку "Включить режим избранное".
Задайте интервал смены режимов (по умолчанию - 10 минут).
Если в избранном нет ни одного режима - кнопка "Включить режим избранное" не активируется.

В архив включены 2 папки.
Одна версия прошивки с поддержкой mDNS. Доступ к панели управления по адресу gyverlamp.local (можно поменять в настройках в панели управления).
Другая версия прошивки без mDNS (т.к. mDNS может не у всех работать). Доступ к панели управления по адресу http://192.168.1.87 (IP-адреса настраиваются в файле wifi_init.h).

Задать настройки для подключения к вашей точке доступа можно двумя способами.
1. До прошивки отредактировать ssid и password в файле (вместо dd-wrt название вашей ТД, вместо qwerty12345 пароль от вашей ТД).
2. Прошить как есть, через 11 секунд появится точка доступа Gyverlamp, подключиться к Gyverlamp, перейти в настройки по адресу 192.168.4.1, открыть страницу "Настройка Wi-Fi", в поле SSID и Pass ввести название вашей ТД и пароль от вашей ТД соответственно. Нажать кнопку "сохранить" и перезагрузить устройство.
После перезагрузки лампа подключится к вашей ТД.
Усё.
 

Вложения

10.07.2019
2
12
3
#18
Всем привет!
Тоже не смог удержаться!
За основу взял лампу из магазина ИКЕЯ Ссылка
Крышку напечатал на 3D принтере за 300 рублей
Внутри блок питания на 5В - 2,5А (купил на местном радиорынке) типа Ссылка
Мозги NodeMCU
NodeMCU.jpg
Кнопка в крышке, труба d=50 + заглушка d=50.
Прошивка от Уважаемого gunner47 Прошивка
Вот что получилось:
IMG_7159.JPG IMG_7163.JPG
IMG_7170.JPG
IMG_7169.JPG IMG_7162.JPG IMG_7166.JPG
 

Вложения

malec

Проходящий мимо
05.02.2019
169
46
28
#19
Здоровья всем Господа "рукоблуды". Загорелся этой лампой очень давно, но, то лишних копеек нет, то ещё какой "геморой". А после увидел ви фи лампу и ещё больше её "захотел"))) Короче заказал матрицу и ленты пяток метров ИСиПишку ну и т.д. и т.п. Не прошло и двух недель как мне пришла СМС , придите мол получите, ( я ещё всякую щнягу заказывал) и к моему удивлению пришла матрица и лента в одном пакете, хоть и заказывал в разных магазинах...Ну и на радостях поехал я в леруа, в инетмагазине плафон 400р. Заехал в один нет, в другой нет в третий тоже " борода", растроился и вдруг!!!!! Как в доброй сказке))) попался мне на глаза светильник на стойке, они там только длинной стоек и ценой отличаются. А матрица 16х16 как будто специально для этого светила... На работе нашёл огрызок трубы на 50, и понесло...вот фото проекта.
Да цена светила 900р самый маленький. Но оно того стоит)))) результат превзашол ожидание, правда ИСиПишка ещё не доехала залил тест матрицы на НАНО...)))
И перемычки распаять во внутрь трубы по моему лучше, матрица в стык ложиться без щелей и ровней...
Всем всех благ, и удачных решений)))
 

Вложения

28.06.2019
5
10
3
#20
Яблочникам посвящается. Сделал простенькое приложение под iOS, умеет все то же, что и под андроид, разве что багов чуть больше ввиду отсутствия времени, ну и делал для себя. Уже доступно в AppStore https://apps.apple.com/ru/app/arduino-lamp/id1473000797 За основу взята доработка от
gunner47