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, проблема с загрузкой скетча
Читайте (ЧИТАЙТЕ! Не пишите!) эти темы, там уже есть решение вашей проблемы.
Здесь подобные вопросы считаются оффтопом и молча удаляются, а авторы получают баллы нарушений.
 

bablja

✩✩✩✩✩✩✩
17 Июл 2019
12
0
Всем привет! У меня проблема с включением лампы. Собрал схему без сенсорной кнопки. Использую esp8266 LoLin. Для удобства монтажа модуля esp, на плату установил разъемы куда esp втыкается и соединяется со светодиодной матрицей и питанием идущем с неё. Так вот, если подключаю к usb на esp питание, а потом втыкаю esp в разъем на плате и подаю 5 в на светодиодную матрицу и esp, то все запускается и работает. Если подаю 5 в на уже воткнутую в разъем esp (то есть когда схема собрана) то не включается ни матрица ни esp.

Вопрос: Может ли схема работать без сенсорной кнопки? Если нет,то как заставить её работать без сенсорной кнопки?
 

gunner47

★★★★★✩✩
18 Июн 2019
253
393
Странно, почти 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 и попробуйте воспроизвести ошибку с запущенным терминалом. По данным терминала будет ясно куда копать
У меня почему-то были ошибки с файлом настроек, json-объект в нём дублировался при вызове метода сохранения jsonWrite().
JSON:
{"effect":0,"ssidAP":"LedLamp","url":"ledlamp","passwordAP":"...","ssid":"...","password":"...","volume":10}{"effect":18,"ssidAP":"LedLamp","url":"ledlamp","passwordAP":"...","ssid":"...","password":"...","volume":10}{"effect":17,"ssidAP":"LedLamp","url":"ledlamp","passwordAP":"...","ssid":"...","password":"...","volume":10}{"effect":6,"ssidAP":"LedLamp","url":"ledlamp","passwordAP":"...","ssid":"...","password":"...","volume":10}
Поймал девтулами браузера. Возможно, это было из-за проблем с библиотекой ArduinoJSON на моём компьютере. Снёс её, поставил последнюю версию и переписал под неё код работы с json'ом. Всё работает. Попутно вступил в "SPIFFS Error: esptool not found!". Решил способом, описанным тут (удалил python 2.7, поставил 3.7), другие способы не помогали, включая подсовывание esptool.exe из IDF фреймворка для esp32. До этого поведение было такое же, как описывали выше - сразу после перезаливки SPIFFS всё работало, но после первой операции через web переставали инициализироваться слайдеры и работать кнопки, web-консоль ругалась на invalid token. В общем, сейчас всё гуд. Только... кнопки Вкл/Выкл и не предполагалось в интерфейсе?
 

gunner47

★★★★★✩✩
18 Июн 2019
253
393
Доброго времени суток. Проблема в режиме точка доступа. Телефон XIAOMI MI 9SE подключается и сразу отключается, и так несколько раз. Потом совсем отключается. С другим телефоном все отлично работает. в чем может быть проблема
Похоже на то, что лампа перезагружается по каким-то причинам. Точка доступа падает и пересоздаётся.
 

gunner47

★★★★★✩✩
18 Июн 2019
253
393
Всем привет! У меня проблема с включением лампы. Собрал схему без сенсорной кнопки. Использую esp8266 LoLin. Для удобства монтажа модуля esp, на плату установил разъемы куда esp втыкается и соединяется со светодиодной матрицей и питанием идущем с неё. Так вот, если подключаю к usb на esp питание, а потом втыкаю esp в разъем на плате и подаю 5 в на светодиодную матрицу и esp, то все запускается и работает. Если подаю 5 в на уже воткнутую в разъем esp (то есть когда схема собрана) то не включается ни матрица ни esp.

Вопрос: Может ли схема работать без сенсорной кнопки? Если нет,то как заставить её работать без сенсорной кнопки?
Проверьте напряжение питания esp.
Без кнопки вполне работает, но входной пин дрейфует, прошивка будет определять это как длительное касание к фантомной кнопке и задирать яркость до максимума. Я в своей версии прошивки вставил строку #define USE_BUTTON, которую можно закомментировать или удалить, тогда всё будет работать правильно и без кнопки.
 

Vapes

✩✩✩✩✩✩✩
17 Июл 2019
1
0
Проверьте напряжение питания esp.
Аналогичная ситуация. Второй день борюсь. Использую ленту на 256 пикс. Питание ленты и ESP в порядке. Перегружаю питание ленты - ESP продолжает работать. Перегружаю питание ESP при включенном питании ленты - виснет, пока не передернешь управляющий от ленты и питание ESP.
 

Александр Вайдуров

★✩✩✩✩✩✩
11 Июл 2019
22
42
По дефолту с сенсора приходит нолик а в момент нажатия единичка, значит для исключения помех достаточно вместо кнопки прицепить вход на общий.
 

Максим-ka

✩✩✩✩✩✩✩
14 Июл 2019
8
1
вопрос к Евгению Пахтусову, 3d модель которую Алекс Гайвер разместил у себя на страничке: у вас есть файл "Lamp_Down_DC-output". под какой разьем вы проектировали данную модель? ссылку можно?
 
  • Лойс +1
Реакции: Vigroo

МихаилУ

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

gunner47

★★★★★✩✩
18 Июн 2019
253
393
хороший вариант
но у меня происходит замирание эффектов и в точке доступа и в сети
особенно хорошо видно на огне
Это прискорбно. Но нужны уточнения. Какую прошивку используете? В режиме WiFi клиента есть интернет или нет (если нет, то его не было до старта лампы или он исчез после)? В режиме точки доступа... даже пока предположений нет, там и таймер то не используется. Хотя и интервалы вроде как не 3 секунды, судя по видео. При возможности потестирую. Если есть возможность посмотреть, что в Serial выводится, покажите.
 

Andrew Haronych

★✩✩✩✩✩✩
17 Июл 2019
64
37
Москва
Приветствую.
Представляю следующую версию моего варианта прошивки с веб-интерфейсом.
В этом варианте добавилась возможность добавлять эффекты в "избранное".
Также появился ползунок, задающий интервал смены избранных эффектов.
Интервал настраивается в пределах от 1 до 60 минут.
Подробнее тут
Шикарно всё работает!
Добавил в Ваш скетч еще один эффект "Белый" которого мне так не хватало
C++:
void whitecolor() {
  for (int i = 0; i < NUM_LEDS; i++) {
    leds[i] = CHSV(0, 0, 255);
  }
}
Прописал под 21 номером. Всё в порядке. Единственное что при переборе кнопкой по кругу он не включается, пока не нашел где поправить. Уже нашел )
Не сильно он белый конечно получается, но тем не менее уже кое что )
Вот только может еще подскажете как его допилить чтобы ползунком "Масштаб" регулировалась температура цвета?
 
Изменено:

МихаилУ

★✩✩✩✩✩✩
8 Дек 2018
18
42
Это прискорбно. Но нужны уточнения. Какую прошивку используете? В режиме WiFi клиента есть интернет или нет (если нет, то его не было до старта лампы или он исчез после)? В режиме точки доступа... даже пока предположений нет, там и таймер то не используется. Хотя и интервалы вроде как не 3 секунды, судя по видео. При возможности потестирую.
GyverLamp_v2.0_without_mDNS
вернул точку доступа
поставил GButton touch(BTN_PIN, HIGH_PULL, NORM_OPEN) (возможно клинило без сенсора)дефект пропал
но потом соединение надежно не устанавливается
точка создается
но потом отключается
 

lakec

★✩✩✩✩✩✩
5 Июл 2019
33
41
Вот только может еще подскажете как его допилить чтобы ползунком "Масштаб" регулировалась температура цвета?
Попробуйте так
C++:
void whitecolor() {
  for (int i = 0; i < NUM_LEDS; i++) {
    leds[i] = CHSV(modes[21].scale * 2.5, 35, 255);
  }
}
Прикинуть интенсивность можно по палитре
Вместо 35 ставите значение, которое вам больше подходит

поставил GButton touch(BTN_PIN, HIGH_PULL, NORM_OPEN) (возможно клинило без сенсора)дефект пропал
но потом соединение надежно не устанавливается
Если нет кнопки - просто притяните пин BTN_PIN резистором к земле.
точка создается
но потом отключается
Этот косяк пока, к сожалению, победить не могу.
А плата у вас какая используется? Замирания на всех эффектах?

Если причина в кнопке - попробуйте GButton touch(BTN_PIN, HIGH_PULL, NORM_OPEN) вернуть как было и подтяжку на землю
 
  • Лойс +1
Реакции: Andrew Haronych

Andrew Haronych

★✩✩✩✩✩✩
17 Июл 2019
64
37
Москва
Попробуйте так
C++:
void whitecolor() {
  for (int i = 0; i < NUM_LEDS; i++) {
    leds[i] = CHSV(modes[21].scale * 2.5, 35, 255);
  }
}
Прикинуть интенсивность можно по палитре
Вместо 35 ставите значение, которое вам больше подходит
Не, на ползунки никак не реагирует.
Сделал!
C++:
void whitecolor() {
  for (int i = 0; i < NUM_LEDS; i++) {
    leds[i] = CHSV(56, modes[21].scale * 2.5, 255);
  } 
}
Спасибо что пнули в нужном направлении!
Прилагаю Ваш вариант с добавленным эфектом "Белый" ) Ползунком "Масштаб" регулируется температура цвета. Доработка простейшая конечно, но мне этого режима очень не хватало! ) Хотя белый там конечно нифига не белый... Нужно таки на другой ленте собирать
 

Вложения

Изменено:
  • Лойс +1
Реакции: kDn

Aleksys77

✩✩✩✩✩✩✩
17 Июл 2019
2
1
Залил прошивку версии 1.4 , открываю монитор порта и что делать дальше чтобы посмотреть IP адреса модуля ? С ESP модулями первое знакомство, не пинайте. СПС
 

gunner47

★★★★★✩✩
18 Июн 2019
253
393
Залил прошивку версии 1.4 , открываю монитор порта и что делать дальше чтобы посмотреть IP адреса модуля ? С ESP модулями первое знакомство, не пинайте. СПС
Собственно, просто смотреть в монитор порта, там должен появиться текст с ip адресом модуля сразу после его загрузки (можете перезапустить модуль кнопкой reset, не отключая его от компьютера). Проверьте, чтобы baudrate монитора порта был 115200.
Если есть доступ к роутеру, можете посмотреть список клиентов WiFi, там тоже будут ip адреса указаны. Или поставьте на телефон любой LAN сканер, он найдёт все устройства в сети с их адресами и достаточно понятными названиями.
 

ermilin

★✩✩✩✩✩✩
10 Июл 2019
2
49
  • Лойс +1
Реакции: NikZ

Andrew Haronych

★✩✩✩✩✩✩
17 Июл 2019
64
37
Москва
@lakec, просьба. Если еще будете дорабатывать свой вариант можно ли предусмотреть управление через GET запросы?
По сути нужно реализовать команды "on/off/status" и "режим,яркость,скорость,масштаб"
on/off соответственно вкл/выкл, status возвращает текущее состояние лампы ну и включение любого режима с заданными параметрами.
Плюсь после любого изменения отправлять статус.
Если это реализовать то лампу можно легко интегрировать в любой умный дом!
Я сейчас пытаюсь это сам реализовать но с моим скиллом это долгая и печальная история...
 

lakec

★✩✩✩✩✩✩
5 Июл 2019
33
41
@Andrew Haronych, Пока обновлений не планирую, но посмотрите main.js, к примеру для управления яркостью по запросу
C++:
 $.ajax( "/volume?volume=" + data.from );
где в data.from передаете ваше значение. Или это не то?
 
  • Лойс +1
Реакции: Andrew Haronych

Andrew Haronych

★✩✩✩✩✩✩
17 Июл 2019
64
37
Москва
Прошивка от @lakec с добавленной возможностью включения/выключения через веб морду и режимом белого света.
Из косяков при выключении/включении кнопкой в веб-морде не отображаются изменения. Сделал
З.Ы. Если код кривой в пиониста не стрелять, играет как умеет ))) С моим скиллом странно что вообще что-то получается )))
Screenshot_2019-07-19 Gyverlamp settings.png
 

Вложения

Изменено:

Andrew Haronych

★✩✩✩✩✩✩
17 Июл 2019
64
37
Москва
@Andrew Haronych, Пока обновлений не планирую, но посмотрите main.js, к примеру для управления яркостью по запросу
C++:
 $.ajax( "/volume?volume=" + data.from );
где в data.from передаете ваше значение. Или это не то?
Не совсем. На примере объясню. У меня свет подключен через есп-шку с реле, прошивка там ESPEasy. Для того чтобы включить свет я могу отправить запрос вида:
http://192.168.1.196/control?cmd=GPIO,12,1
Чтобы выключить:
http://192.168.1.196/control?cmd=GPIO,12,0
Ну и есп-шка после того как у нее изменится состояние не важно через запрос или кнопкой отправляет на сервер статус вот таким образом:
http://192.168.1.37:8080/json.htm?param=udevice&type=command&idx=49&nvalue=1 -Включено
http://192.168.1.37:8080/json.htm?param=udevice&type=command&idx=49&nvalue=0 -Выключено
И на сервере в итоге имеем выключатель:
Screenshot_2019-07-20 Domoticz.png
который можно использовать в сценариях по своему усмотрению.
Данная лампа если это реализовать будет давать огромные возможности по применению. Можно будет организовать реакцию на разные события включением разных эффектов и цветов
 

Feelleen

✩✩✩✩✩✩✩
20 Июл 2019
4
0
Проект как всегда шикарный. А можно это как то переложить на обычную ардуину ? Эффекты нравятся, а вот управление в принципе кнопочное достаточно. Ви-фи не нужно. и будильник тоже...
Уже удалось реализовать упрощенный проект?
 

Stmf

★✩✩✩✩✩✩
28 Июн 2019
6
22
Яблочникам посвящается. Сделал простенькое приложение под iOS, умеет все то же, что и под андроид, разве что багов чуть больше ввиду отсутствия времени, ну и делал для себя. Уже доступно в AppStore https://apps.apple.com/ru/app/arduino-lamp/id1473000797 За основу взята доработка от
gunner47
 

Pavick

✩✩✩✩✩✩✩
19 Июл 2019
1
0
Здравствуйте, мне нужна помощь, NodeMCU не прошивается. Я правильно все подключил, но прошивка не хочет устанавливаться. Делал все по инструкции. После нажатия кнопки "Загрузить", в конце, появляется сообщение как на скриншоте.screenshot javaw_8F6MS2bIxL.png
Так же, при первом включении после сборки (без прошивки), 2 угловых сетодиода начали светится белым и зеленым, а после неудачной прошивки некоторые светодиоды начали моргать белым и, иногда, один зеленым. Плату в настройках ArduinoIDE выбрал правильную, такую же, как в названии товара на алиэкспресе.