ESP, IoT WiFi лампа-будильник. Обсуждение проекта

Сообщение изъято на правах администрации
ВНИМАНИЕ !!!
те кто живой и хочет увидеть ссылку на свое исполнение, прошу централизовать все свои доработки и сообщения. Далее в теме пишем сообщение с ссылкой на ваше сообщение (с проектом), с пометкой @mechanic .


В данной ветке обсуждаются только сия проект. Общие вопросы, доработки и проблемы, не относящиеся к конкретным прошивкам!. Вопросы по прошивкам решаем в темах самих прошивок. Здесь такие разговоры оффтоп.
Всякий любой вопрос не по теме сразу удаляется БЕЗ объяснения причины!
Для этого есть соответствующие ветки форума. Вопрос почему удалили мой пост? также удаляется.

  • Общаясь на форуме будьте взаимно вежливы!
  • Обратите внимание на то, что у нас принято говорить Спасибо путём повышения репутации, нажав на кнопочку
    .
  • Если есть претензии то нажмите кнопку .
  • Запрещено писать красным цветом в ваших постах - этот цвет только для Модераторов .
  • Вопросы, ответ на которые есть в шапке или в FAQ, будут удаляться. За повторный вопрос пользователь может быть наказан.
  • Убедительная просьба придерживаться тематики ветки, избегать флуда и оффтопа!
Очень часто при первом запуске лампы, при подключении к сети лампы не открывается менеджер сетей WIFI.
Помогает комментирование строки #define ESP_USE_BUTTON (отключение кнопки) и заливка скетча выставив Erase flash в All Flash Content
После того, как вы подключили лампу к сети эту строку можно раскомментировать и залить скетч с параметром Erase flash установленным в Only Sketh
Наш участник собрал много полезной информации по блокам питания для лампы. Качественное питание - необходимое условие надёжной работы любого устройства. Изучаем: https://community.alexgyver.ru/threads/nebolshoj-opus-po-bp-dlja-gyverlamp-wifi-lampa-budilnik.3523/

ВНИМАНИЕ! Если у вас не компилируется или не загружается скетч - значит вы сделали что-то неправильно. Специально для вас созданы две темы:
ESP8266, проблема с компиляцией скетча
ESP8266, проблема с загрузкой скетча
Читайте (ЧИТАЙТЕ! Не пишите!) эти темы, там уже есть решение вашей проблемы.
Здесь подобные вопросы считаются оффтопом и молча удаляются, а авторы получают баллы нарушений.
 

Комментарии

recoshet

★✩✩✩✩✩✩
15 Июн 2019
1
14
Сообщение изъято на правах администрации
ВНИМАНИЕ !!!
те кто живой и хочет увидеть ссылку на свое исполнение, прошу централизовать все свои доработки и сообщения. Далее в теме пишем сообщение с ссылкой на ваше сообщение (с проектом), с пометкой @mechanic .


В данной ветке обсуждаются только сия проект. Общие вопросы, доработки и проблемы, не относящиеся к конкретным прошивкам!. Вопросы по прошивкам решаем в темах самих прошивок. Здесь такие разговоры оффтоп.
Всякий любой вопрос не по теме сразу удаляется БЕЗ объяснения причины!
Для этого есть соответствующие ветки форума. Вопрос почему удалили мой пост? также удаляется.

  • Общаясь на форуме будьте взаимно вежливы!
  • Обратите внимание на то, что у нас принято говорить Спасибо путём повышения репутации, нажав на кнопочку
    .
  • Если есть претензии то нажмите кнопку .
  • Запрещено писать красным цветом в ваших постах - этот цвет только для Модераторов .
  • Вопросы, ответ на которые есть в шапке или в FAQ, будут удаляться. За повторный вопрос пользователь может быть наказан.
  • Убедительная просьба придерживаться тематики ветки, избегать флуда и оффтопа!
Очень часто при первом запуске лампы, при подключении к сети лампы не открывается менеджер сетей WIFI.
Помогает комментирование строки #define ESP_USE_BUTTON (отключение кнопки) и заливка скетча выставив Erase flash в All Flash Content
После того, как вы подключили лампу к сети эту строку можно раскомментировать и залить скетч с параметром Erase flash установленным в Only Sketh
Наш участник собрал много полезной информации по блокам питания для лампы. Качественное питание - необходимое условие надёжной работы любого устройства. Изучаем: https://community.alexgyver.ru/threads/nebolshoj-opus-po-bp-dlja-gyverlamp-wifi-lampa-budilnik.3523/

ВНИМАНИЕ! Если у вас не компилируется или не загружается скетч - значит вы сделали что-то неправильно. Специально для вас созданы две темы:
ESP8266, проблема с компиляцией скетча
ESP8266, проблема с загрузкой скетча
Читайте (ЧИТАЙТЕ! Не пишите!) эти темы, там уже есть решение вашей проблемы.
Здесь подобные вопросы считаются оффтопом и молча удаляются, а авторы получают баллы нарушений.
 

gunner47

★★★★★✩✩
18 Июн 2019
253
393
Это замечательно! А что с белым светом? Можно ли лампу включить просто как обычный светильник?
Технически матрица на это способна, белым светом светит будильник перед отключением. Вопрос в том, как включить белый свет? И что при этом будет показывать android приложение? Были бы его иходники, тогда без проблем.
 

Stmf

★✩✩✩✩✩✩
28 Июн 2019
6
22
И что при этом будет показывать android приложение? Были бы его иходники, тогда без проблем.
В целом приложение - просто оболочка для UDP команд, отправляешь на IP: PORT в ASCII и парсишь ответ, если нужно обновлять интерфейс. Вот основные из них:

BRI1 (1-255 яркость)
SPD1 (1-255 скорость)
SCA1 (1-100 масштаб)
EFF0 (0-17 эффект)
P_OFF (выключить)
P_ON (включить)
DAWN1 (1-9 рассвет за (5,10,15,20,25,30,40,50,60))
ALM_SET1 ON (1-7 ON-OFF) включить выключить один из будильников
ALM_SET1 810 (часы: floor(810/60), минуты: 810 - часы * минуты, 810 = 13:30)
GET получить настройки (режим, яркость, скорость, масштаб, флаг включения)
DEB получаем OK + текущее время. Для проверки доступности.
 

Pro-xor

✩✩✩✩✩✩✩
23 Май 2019
10
3
Проект отличный, игрушка классная! Собрал за вечер. Все строго по видеоролику, прокручивая части по несколько раз. С плафонами в июне был напряг, но следил по интернету за поступлениями в Леруа и купил в июле. Единственный затык был с роутером, был включен режим "Изоляция клиентов". Но выключив данный режим, лампа стала управляться со смартфона.
 
Изменено:

Vincent

✩✩✩✩✩✩✩
2 Ноя 2018
8
2
Уважаемые знатоки, есть вопрос.
Версия GyverLamp была урезана для Arduino Nano с управлением кнопкой. Цветовая гамма установлена GRB. Все эффекты работают как надо, вот только эффект огня зеленого цвета (если ставить RGB, то скорее розовый, чем красный). В каком месте кода нужно внести коррекцию?
 
  • Лойс +1
Реакции: Samuelli1997

gunner47

★★★★★✩✩
18 Июн 2019
253
393
Уважаемые знатоки, есть вопрос.
Версия GyverLamp была урезана для Arduino Nano с управлением кнопкой. Цветовая гамма установлена GRB. Все эффекты работают как надо, вот только эффект огня зеленого цвета (если ставить RGB, то скорее розовый, чем красный). В каком месте кода нужно внести коррекцию?
За цвет огня отвечает scale (масштаб).Непонятно, как вы управляете масштабом с помощью кнопки.
Если никак, то можно захардкодить значения для естественного цвета огня, это scale = 0. Для этого в файле effects.ino найдите:
modes[1].scale * 2.5 + pgm_read_byte(&(hueMask[y][newX])),
и замените на:
pgm_read_byte(&(hueMask[y][newX])),
и ещё чуть ниже:
modes[1].scale * 2.5 + pgm_read_byte(&(hueMask[0][newX])),
на:
pgm_read_byte(&(hueMask[0][newX])),
 

Vincent

✩✩✩✩✩✩✩
2 Ноя 2018
8
2
Непонятно, как вы управляете масштабом с помощью кнопки.
А я и не управляю) это ночник сыну будет, поэтому и нужно пофиксить цвет.
Спасибо за информацию, как исправлю - отпишу. Ну и как ночник сделаю выложу в соответствующей теме.
 

kasaraev

✩✩✩✩✩✩✩
12 Июл 2019
6
3
Делайте себе матрицу из ленты SK6812-RGBW . Это улучшенный вариант ленты WS2812B, в неё добавлен 4-ый, белый светодиод. Из этой ленты легко реализовать белый режим светильника. Тем более это будет более экономично, чем включать сразу три RGB светодиода.
Согласен!
 

Romas654

★✩✩✩✩✩✩
5 Мар 2019
22
16
Привет! А можешь выложить часть кода, которую ты добавил? Я бы в свою сборную солянку пихнул, а то программировать не хватает духу выучиться, а копи/пейст фроде норм.
Да там кода-то...
###В начало###
#define ResWiFiPin 5

###В секции setup() ###
pinMode(ResWiFiPin, INPUT_PULLUP);
if(digitalRead(ResWiFiPin) == LOW){wifiManager.resetSettings();}
 
  • Лойс +1
Реакции: SES и Dr Shats

Kutuzoff

✩✩✩✩✩✩✩
12 Июл 2019
6
0
А я и не управляю) это ночник сыну будет, поэтому и нужно пофиксить цвет.
Спасибо за информацию, как исправлю - отпишу. Ну и как ночник сделаю выложу в соответствующей теме.
Я этот вопрос задавал когда управлял лампой только с кнопки. Потом подключил приложение и там масштабом меняется цвет пламени.
 

kasaraev

✩✩✩✩✩✩✩
12 Июл 2019
6
3
Исправлена ошибка выключения будильника, если перед его срабатыванием был активен эффект "матрица" (или другой эффект, где задействовано мало светодиодов). Наблюдалось остаточное неправильное заполнение матрицы светодиодов.
Добавлено обновление по воздуху. Работает только в режиме WiFi клиента и при подключенной кнопке (потому что режим прошивки активируется кнопкой). Нужно для тех, кто собрал уже лампу, поставил подальше от компа, но всё ещё часто её перепрошивает. Кому не нужно, можно не использовать или отключить фичу, закомментировав строку "#define OTA".
Инструкция по использованию:
1. Обновите библиотеку GyverButton на версию из этого архива. Скопируйте поверх прежней в c:\Program Files (x86)\Arduino\libraries\GyverButton или туда, где она у вас установлена. В эту версию добавлена одна функция обработки четверного нажатия.
2. Для перехода в режим обновления нужно дважды сделать четверной тап по кнопке: 4 последовательных касания, пауза от 1 до 30 секунд, потом ещё 4 последовательных касания. Если что-то пошло не так, через 30 секунд esp вернётся в исходное состояние. Если всё пошло так, то esp в течение 5 минут будет ждать перепрошивку. Потом перезагрузится (даже если не дождётся, просто чтобы выйти в основной режим).
3. Перепрошивка производится из Arduino IDE. В меню Инструменты - Порт появится дополнительный элемент "Сетевые порты" и под ним что-то типа "GyverLamp-xxxxxxx at 192.168.0.2". Нужно выбрать этот сетевой порт вместо ранее выбранного COM<цифра>. Если сетеврой порт не появился, перезапустите Arduino IDE, должен появиться. Компьютер с Arduino IDE должен быть в той же сети, куда подключается esp'шка.
4. Во время ожидания прошивки лампа работает как обычно, ей можно управлять, менять режимы и т.д.
5. Подключены дополнительные библиотеки ArduinoOTA и ESP8266mDNS, но отдельно их устанавливать не нужно, они устанавливаются при установке поддержки платы esp8266.
6. При заливке другой прошивки, функция обновления по воздуху исчезнет (если другая прошивка её не поддерживает).
Здорово, сейчас порпробую! А как менять настройки если я поменяю роутер? Насколько я помню они записаны в файле конфига. Перезаливать его? Или есть возможность указать в скетче?
 

gunner47

★★★★★✩✩
18 Июн 2019
253
393
Здорово, сейчас порпробую! А как менять настройки если я поменяю роутер? Насколько я помню они записаны в файле конфига. Перезаливать его? Или есть возможность указать в скетче?
Если лампа не сможет подключиться к WiFi сети, она поднимет WiFi точку доступа. Подключитесь к ней с телефона, откройте браузер, вбейте http://192.168.4.1 (если не меняли в прошивке) и введите имя/пароль от новой WiFi сети. Лампа сохранит их, перезагрузится и подключится к указанной сети. Не нужно ничего перепрошивать, перезаливать и т.д. Лучше почитайте комментарии в коде, там написано это и многое другое.
 
  • Лойс +1
Реакции: Vedun

kasaraev

✩✩✩✩✩✩✩
12 Июл 2019
6
3
Если лампа не сможет подключиться к WiFi сети, она поднимет WiFi точку доступа. Подключитесь к ней с телефона, откройте браузер, вбейте http://192.168.4.1 (если не меняли в прошивке) и введите имя/пароль от новой WiFi сети. Лампа сохранит их, перезагрузится и подключится к указанной сети. Не нужно ничего перепрошивать, перезаливать и т.д. Лучше почитайте комментарии в коде, там написано это и многое другое.
Спасибо, да , все есть плохо читал.
 

Pro-xor

✩✩✩✩✩✩✩
23 Май 2019
10
3
Доброго времени суток. Столкнулся с нехорошим эффектом: при отключении интернета от роутера, лампа через каждые 3 секунды начинает замирать на 1 секунду. Прошивка стандартная с гитхаба v 1.4. Проявляется на всех режимах. При восстановлении интернета, работа восстанавливается.
 

gunner47

★★★★★✩✩
18 Июн 2019
253
393
Доброго времени суток. Столкнулся с нехорошим эффектом: при отключении интернета от роутера, лампа через каждые 3 секунды начинает замирать на 1 секунду. Прошивка стандартная с гитхаба v 1.4. Проявляется на всех режимах. При восстановлении интернета, работа восстанавливается.
Причина в том, что ntp client пытается получить точное время из интернета для работы будильника. И хотя интервал синхронизации в оригинальной прошивке задан в 1 минуту (я менял на 30 минут), если время не было синхронизировано ни разу, эти попытки будут повторяться с периодичностью срабатывания таймера, т.е., раз в 3 секунды. На время, пока лампа безуспешно ждёт ответ из интернета, матрица залипает, не перерисовывается.
Я частично поправил это. Теперь модуль будет проверять подключение к интернету раз в 5 минут, это не так заметно. Если попытка неуспешна, матрица будет замораживаться на 1,5 секунды. Так будет длиться до первой успешной попытки синхронизации времени (т.е., если интернет пропадёт уже после включения лампы, ничего подвисать не должно). Всё это время будильник срабатывать не будет (и плохо, что приложение это никак не отображает). После первой успешной синхронизации время будет запрашиваться раз в полчаса. Попросил Алекса выложить файл thunkable проекта. Если повезёт, попробую подправить и приложение.
 

Вложения

  • Лойс +1
Реакции: МихаилУ и Dr Shats

Dr Shats

✩✩✩✩✩✩✩
13 Июл 2019
4
2
Причина в том, что ntp client пытается получить точное время из интернета для работы будильника. И хотя интервал синхронизации в оригинальной прошивке задан в 1 минуту (я менял на 30 минут), если время не было синхронизировано ни разу, эти попытки будут повторяться с периодичностью срабатывания таймера, т.е., раз в 3 секунды. На время, пока лампа безуспешно ждёт ответ из интернета, матрица залипает, не перерисовывается.
Я частично поправил это. Теперь модуль будет проверять подключение к интернету раз в 5 минут, это не так заметно. Если попытка неуспешна, матрица будет замораживаться на 1,5 секунды. Так будет длиться до первой успешной попытки синхронизации времени (т.е., если интернет пропадёт уже после включения лампы, ничего подвисать не должно). Всё это время будильник срабатывать не будет (и плохо, что приложение это никак не отображает). После первой успешной синхронизации время будет запрашиваться раз в полчаса. Попросил Алекса выложить файл thunkable проекта. Если повезёт, попробую подправить и приложение.
Круто!
Предлагаю сюда же добавить функцию кнопки ресет - при нажатой кнопки во время подачи питания, чтобы сбрасывались настройки WiFi, там раньше товарищ кусочек кода на пару строчек кидал. Я пользуюсь, работает круто, с такой функцией получается более законченное устройство.Вопрос, есть ли возможность менять GMT без перезаливки прошивки?
 

Dante_reg45

✩✩✩✩✩✩✩
16 Июл 2019
1
0
Господа, доброго времени суток, есть проблема с проектом...начал с того что собрал и подключил электронику по гайду(попутно обнаружил что в прошивке LED_PIN указан тот что соответствует пину кнопки на схеме), но система не заработала и хотелось бы выяснить в чем проблема. Прошивка залилась без проблем, к вафле зацепился и даже приложение подключил, но на матрице никакой реакции вообще нет. Матрицу проверил подключением к Arduino Nano c тестовой прошивкой. Пробовал играть с настройками прошивки и реакции аналогично никакой. В какую сторону посоветуете копать?
 
Господа, доброго времени суток, есть проблема с проектом...начал с того что собрал и подключил электронику по гайду(попутно обнаружил что в прошивке LED_PIN указан тот что соответствует пину кнопки на схеме), но система не заработала и хотелось бы выяснить в чем проблема. Прошивка залилась без проблем, к вафле зацепился и даже приложение подключил, но на матрице никакой реакции вообще нет. Матрицу проверил подключением к Arduino Nano c тестовой прошивкой. Пробовал играть с настройками прошивки и реакции аналогично никакой. В какую сторону посоветуете копать?
Я собирал как на схеме, всё заработало сразу и до сих пор работает! А в прошивке 1,4 действительно пины не соответствуют схеме. Странно, но это работает. Пробовал в прошивке поменять местами пины, лампа сразу переставала работать.
IMG_20190716_131900.jpg
 
Изменено:

Roman-RV

★✩✩✩✩✩✩
21 Июн 2019
51
13
45
У NODE MCU например, пин GPIO2 выведен на D4, GPIO4 на D2, вот и путаница. В скетче как раз определены пины GPIO, компилятор их так видит.
 
  • Лойс +1
Реакции: Egen_M
У NODE MCU например, пин GPIO2 выведен на D4, GPIO4 на D2, вот и путаница. В скетче как раз определены пины GPIO, компилятор их так видит.
Спасибо за разъяснение. Как говорится - Век живи, век учись!
 

lakec

★✩✩✩✩✩✩
5 Июл 2019
33
41
Приветствую.
Представляю следующую версию моего варианта прошивки с веб-интерфейсом.
В этом варианте добавилась возможность добавлять эффекты в "избранное".
Также появился ползунок, задающий интервал смены избранных эффектов.
Интервал настраивается в пределах от 1 до 60 минут.
Подробнее тут
 
  • Лойс +1
Реакции: Dizalexxx

Shura2000

★★✩✩✩✩✩
2 Июл 2019
40
51
Приветствую.
Представляю следующую версию моего варианта прошивки с веб-интерфейсом.
В этом варианте добавилась возможность добавлять эффекты в "избранное".
Также появился ползунок, задающий интервал смены избранных эффектов.
Интервал настраивается в пределах от 1 до 60 минут.
Подробнее тут
не работает режим избранного.
прошивка "без".

после выключения не сохраняется интервал и режим избранного. Так и должно быть?


не переключается на следующий эффект. раз зависло.

UPD: после нескольких перегрузок заработало

UPD: как то странно работает. через раз.
 
Изменено:

lakec

★✩✩✩✩✩✩
5 Июл 2019
33
41
UPD: после нескольких перегрузок заработало
Странно, почти 2 дня гонял этот режим с разными параметрами - ни одного глюка.
Ели вдруг еще будут глюки замените
C++:
//////////////////////////////////////////////// favorite   
    
    if(    changefavflag){
        iii = 0;
        for (byte cheff = 0; cheff < MODE_AMOUNT; cheff++) {
            if( EEPROM.read(210 + cheff) == 1){
                favbuff[iii] = cheff;
                iii++;
            }
        }
        changefavflag = false;
    
    }   
    
    
    if(    favonflag){
        if(iii<1){favonflag = false;    webSocket.sendTXT(0,  "favon");}
        if (millis()-prevMillis>_delay*60000){
            loadingFlag = true;
            settChanged = true;
            currentMode = favbuff[_iii];
            _iii++;
            if( _iii >= iii) _iii = 0;
            prevMillis = millis();
            
            webSocket.sendTXT(0,  String("effect") + currentMode);
            webSocket.sendTXT(0,  String("volume") + EEPROM.read(3 * currentMode + 40));
            webSocket.sendTXT(0,  String("speed") + EEPROM.read(3 * currentMode + 41));
            webSocket.sendTXT(0,  String("scale") + EEPROM.read(3 * currentMode + 42));   
            
            if(EEPROM.read(210 + currentMode) == 1){
                webSocket.sendTXT(0,  String("delfav") + currentMode);   
            }else{
                webSocket.sendTXT(0,  String("addtofav") + currentMode);   
            }
         }
     }
    
    
    //////////////////////////////////////////////// favorite
на
C++:
 //////////////////////////////////////////////// favorite    
    
    if(    changefavflag){
        iii = 0;
        for (byte cheff = 0; cheff < MODE_AMOUNT; cheff++) {
            if( EEPROM.read(210 + cheff) == 1){
                
                favbuff[iii] = cheff;
                
                Serial.print("favbuff ");
                Serial.print(iii);
                Serial.print(" = ");
                Serial.println(cheff);
                iii++;
            }
        }
        changefavflag = false;
        Serial.println(iii);
        Serial.println(favonflag);
    
    }    
    
    
    if(    favonflag){
        if (millis()-prevMillis>_delay*60000){
            loadingFlag = true;
            settChanged = true;

            currentMode = favbuff[_iii];
            
            Serial.print("currentMode = ");
            Serial.println(currentMode);
    
            Serial.print("_iii = ");
            Serial.println(_iii);
            
            Serial.print("iii = ");
            Serial.println(iii);
    
            Serial.print("favbuff[_iii] = ");
            Serial.println(favbuff[_iii]);
            /**/
            _iii++;    
            if( _iii >= iii) _iii = 0;
            prevMillis = millis();
            
            webSocket.sendTXT(0,  String("effect") + currentMode);
            webSocket.sendTXT(0,  String("volume") + EEPROM.read(3 * currentMode + 40));
            webSocket.sendTXT(0,  String("speed") + EEPROM.read(3 * currentMode + 41));
            webSocket.sendTXT(0,  String("scale") + EEPROM.read(3 * currentMode + 42));    
            
            if(EEPROM.read(210 + currentMode) == 1){
                webSocket.sendTXT(0,  String("delfav") + currentMode);    
            }else{
                webSocket.sendTXT(0,  String("addtofav") + currentMode);    
            }
         } 
     } 
//////////////////////////////////////////////// favorite
в GyverLamp_v2.0_without_mDNS.ino и попробуйте воспроизвести ошибку с запущенным терминалом. По данным терминала будет ясно куда копать
 

coder-alex

✩✩✩✩✩✩✩
17 Июл 2019
6
1
Прошу помочь: всё собрал, прошил версию 1.4. Плата NodeMCU 1.0. Ядро ESP8266 2.5.2. В мониторе порта вижу такую картину . В чем может быть проблема?
 

Вложения

Изменено:

aleksey1985

✩✩✩✩✩✩✩
3 Июл 2019
1
0
Доброго времени суток. Проблема в режиме точка доступа. Телефон XIAOMI MI 9SE подключается и сразу отключается, и так несколько раз. Потом совсем отключается. С другим телефоном все отлично работает. в чем может быть проблема