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
Уважаемый @gunner47 помогите пожалуйста. Я в програмировании вообще 0. Куда бы в ваш код правильно воткнуть :
C++:
const int threshold = 200;   // пороговое значение

void setup() {
  pinMode(14, OUTPUT); 
  digitalWrite(14, LOW);
  Serial.begin(9600);
}
void loop() {
  int analogValue = analogRead(A0);
  if (analogValue < threshold)
  digitalWrite(14, LOW);   
  if (analogValue > threshold)
  digitalWrite(14,HIGH);
  Serial.print(analogValue);
  delay(2000);
}
Причём так чтобы ничего не сломать.
Ситуация такая: я уже сделал одну лампу и там у меня блок питания на 8А, матрица обернута вокруг алюминиевой трубки и присутствует только пассивное охлаждение. После непрерывных пары часов работы с макс. яркостью в белом режиме температура алюминиевой трубки была больше 100°C.
Сейчас я делаю 2 лампу и в неё я воткну кулер, задача чтобы он включался только при температуре выше порогового значения, которое я планирую получать с аналогового входа через термистор. Проверять температуру можно вообще раз в минуту.
P.S. Я уже попробовал включать его через MOSFET_PIN и результат меня не устроил.
Костанту я бы перименовал и добавил в Constants.h (хотя это не принципиально).

Настройку пинов - последними строками функции setup.

А считывание я бы немного переделал. Во1, добавил бы некую дельту, чтобы кулер включался при threshold + delta, а выключался при threshold - delta. Условно, если порог = 60 градусов, а дельта = 10, то вкл при 70, выкл при 50. Иначе может часто щёлкать в припороговой зоне, если часто считывать показания. Во2, delay() - зло, у вас будут эффекты тормозить, если его использовать. Нужно переделывать на неблокирующий код: добавить таймаут (минута, две - сколько вам нужно) и считывать показания, если таймаут прошёл. Итого:

C++:
// в Constants.h
const int fanThreshold = 200;     // пороговое значение
const uint8_t fanTimeout = 60U;   // интервал в секундах для считывания показаний датчика, [0..255]
const uint16_t fanDelta = 50U;    // значение с потолка, нужно подбирать экспериментально, можно 0 - тогда будет без дельты

...

// перед функцией setup()
uint32_t fanMeasurementTime = 0UL;

...

// последние строки в функции setup()
pinMode(14, OUTPUT);  
digitalWrite(14, LOW);

...

// последние строки в функции loop(), но перед ESP.wdtFeed();
if ((millis() - fanTimeout * 1000U >= fanMeasurementTime) || (fanMeasurementTime == 0UL))   // будем считывать показания сразу после старта и по истечении каждых <fanTimeout> секунд
{
  int analogValue = analogRead(A0);   // считываем показания
  fanMeasurementTime = millis();      // запоминаем время считывания

  if (analogValue >= fanThreshold + fanDelta)
  {
    digitalWrite(14, HIGH);           // включаем кулер, подавая высокий уровень
  }

  if (analogValue < fanThreshold - fanDelta)
  {
    digitalWrite(14, LOW);            // выключаем кулер, подавая низкий уровень
  }
}
 
Изменено:

kostyamat

★★★★★★✩
29 Окт 2019
1,098
632
Вы это, со считыванием всяких аналоговых значений поаккуратнее. А0 в ESP8266 завязан на функциональность WiFi. Будете его дергать просто так, будете отвалы сети получать.
ESP, если включен WiFi, выдает значения от балды, потому как в это время ADC используется для внутренних измерений чего-то там в схеме WiFi, при этом, если подавать внешний сигнал, схема WiFi начинает неправильно работать (потому как вы вносите хаос внешними значениями), вплоть до отвала. Поэтому, для измерений значений на А0, WiFi нужно выключать, мерить, потом снова включать. Иначе и WiFi отвалится, и достоверных данных не получишь. Проще уж 18b20 привинтить. А ещё лучше на ESP32 переехать, там этих проблем нет, плюс блютуз, что ИМХО удобнее для приложения, WiFi стабильнее.
 
Изменено:

vvip

★★★★✩✩✩
18 Дек 2018
469
206
Вы это, со считыванием всяких аналоговых значений поаккуратнее. А0 в ESP8266 завязан на функциональность WiFi. Будете его дергать просто так, будете отвалы сети получать.
ESP, если включен WiFi, выдает значения от балды, потому как в это время ADC используется для внутренних измерений чего-то там в схеме WiFi, при этом, если подавать внешний сигнал, схема WiFi начинает неправильно работать (потому как вы вносите хаос внешними значениями), вплоть до отвала. Поэтому, для измерений значений на А0, WiFi нужно выключать, мерить, потом снова включать. Иначе и WiFi отвалится, и достоверных данных не получишь. Проще уж 18b20 привинтить. А ещё лучше на ESP32 переехать, там этих проблем нет, плюс блютуз, что ИМХО удобнее для приложения, WiFi стабильнее.
Хм... А у меня в проекте с A0 считывается фоторезистор освещенности и авторегулировка яркости.
У меня проблем не возникает, все работает, а вот некоторые пользователи жалуются, что у них WiFi отваливается.
Возможно у них резистора нет физически. Не в этом ли собака порылась?...
А вообще - можно ссылку на первоисточник, где про это почитать?
 

kostyamat

★★★★★★✩
29 Окт 2019
1,098
632
Хм... А у меня в проекте с A0 считывается фоторезистор освещенности и авторегулировка яркости.
У меня проблем не возникает, все работает, а вот некоторые пользователи жалуются, что у них WiFi отваливается.
Возможно у них резистора нет физически. Не в этом ли собака порылась?...
А вообще - можно ссылку на первоисточник, где про это почитать?
Первоисточник - форум esp8266.ru. Хотя я тут уже писал, вчера ночью, но коммент снесли, что возможно в новых версиях модулей это пофиксили. Потому как тут кто-то запостил видео с проектом, где микрофон на А0 подключен, и все работает. Вот на тот пост я и отвечал. Его тоже снесли.
Короче говоря, я не настаиваю. Вполне возможно, что и заработает. Но имел бы ввиду возможность плохого исхода.
 

serg167

✩✩✩✩✩✩✩
10 Окт 2019
21
7
Привет.. воодушевленный цветомузыкой, решил собрать Лампу!
Заказал, по ссылке в описании, Wemos d1 mini
спаял без кнопки, перемычку земля - Д2 сделал -чтобы яркость не росла..
загрузил проект, подложил библиотеки, скачал плату..
все настроил как в теме.. пл
в скетче подставил
режим
#define ESP_MODE 1
// 0 - точка доступа
// 1 - локальный
кнопку ставил и так и так
// -------- КНОПКА -------
#define USE_BUTTON 0 // 1 - использовать кнопку, 0 - нет

// -------- Менеджер WiFi ---------
#define AC_SSID "MGTS_GPON_0C**"
#define AC_PASS "*********"

загрузил скетч в платку, в окне монитора - WIFI Manager
и все..
ничего никуда не коннектится.. там должны были быть сообщения..
На роутере новых подключений не вижу..

в режиме Локальный - после старта точка доступа появлятся, иногда успеваешь к ней приконнектится и даже минут 5 поуправлять со смартфона, после чего пропадает, но чаще всего пропадает при коннекте..
после ресет кнопкой на плате - все по кругу..

нестабильный WIFI какой то..
пробовал прошивки и 1.5.0 и 1.4 - тоже самое все..
добавил вывод в монитор - где падает :

включил на true

C++:
  wifiManager.setDebugOutput(true);
C++:
Serial.print("before autoConnect ");
  Serial.print(autoConnectSSID);
   Serial.print(autoConnectPass);
    wifiManager.autoConnect(autoConnectSSID, autoConnectPass);

   Serial.print("after autoConnect ");
/*    WiFi.config(IPAddress(IP_STA[0], IP_STA[1], IP_STA[2], IP_STA[3]),
                IPAddress(192, 168, 1, 1),
                IPAddress(255, 255, 255, 0));*/
    Serial.print("Connected! IP address: ");
    Serial.println(WiFi.localIP());
    lampIP = WiFi.localIP().toString();

20:21:02.241 -> WiFi managerbefore autoConnect MGTS_GPON_0C** ******** *WM:
20:21:02.241 -> *WM: AutoConnect
20:21:02.241 -> *WM: Connecting as wifi client...
20:21:02.241 -> *WM: Using last saved values, should be faster
20:21:02.241 -> *WM: Connection result:
20:21:02.241 -> *WM: 0
20:21:02.294 -> *WM:
20:21:02.294 -> *WM: Configuring access point...
20:21:02.294 -> *WM: MGTS_GPON_0C**
20:21:02.294 -> *WM: ********
20:21:02.742 -> *WM: AP IP address:
20:21:02.742 -> *WM: 192.168.4.1
20:21:02.742 -> *WM: HTTP server started
т.е. сообщения after Autoconnect нет.. умирает в WIFi manager..
и почему адрес 4.1 - у меня роутер выдает в первой подсетке.. - смотрю на роутере.. новых подключений нет..
так мало деталей.. и не работает.. может все дело в волшеьной кнопке? и без нее никак?
еще не не понял про WIFI manager, не открывается..

пс. кстати да - отваливается на Xiaomi в локальном режиме.. на другом китайце оооочень редкj каким то чудом коннектится иногда.. и работает минуты две-три.. потом опять отваливается WIFI
браузером ни к 4.1 ни к 4.66 не подключается, хотя я в WIFI GyverLamp, мой IP смарта 4.67 , DNS - 4.66 шлюз 4.1
 
Изменено:

Koteyka 🐱

★★★★★★✩
Команда форума
27 Окт 2019
935
556
54
Днепр, Украина
firelamp.pp.ua
STA_STATIC_IP оставьте пустым. У меня с ним менеджер тоже не запускался, а без него всё законнектилось.
Приложение потом само найдет назначенный роутером IP
1573408132593.png
 

zluka_mv

✩✩✩✩✩✩✩
29 Окт 2019
17
3
Такой бестолковый вопрос, как поменять время в лампе. У меня на час отстаёт. Я так понимаю в этой строке.
#define LOCAL_OFFSET (3 * 60) // смещение локального времени относительно универсального координированного времени UTC в минутах
 

zluka_mv

✩✩✩✩✩✩✩
29 Окт 2019
17
3
@Koteyka, я меняю этот параметр "LOCAL_OFFSET (3 * 60)" на (4*60) но время всё равно на час отстаёт. Вот поэтому и возник столь глупый вопрос.
 

kostyamat

★★★★★★✩
29 Окт 2019
1,098
632
@serg167, Я так понимаю, что вы вбили ssid и password своей сети, и ожидали что лампа сразу к ней подключится? Если это так, вы плохо читали комментарии в скетче, как минимум в том месте, в котором вы меняли эти параметры.
 
  • Лойс +1
Реакции: serg167

gunner47

★★★★★✩✩
18 Июн 2019
253
393
@Koteyka, я меняю этот параметр "LOCAL_OFFSET (3 * 60)" на (4*60) но время всё равно на час отстаёт. Вот поэтому и возник столь глупый вопрос.
Прочитайте комментарий и закомментируйте строку:
C++:
//#define SUMMER_WINTER_TIME                                  // для тех, кому нужен переход на зимнее/летнее время - оставить строку, остальным - закомментировать или удалить
Тогда у вас будет работать LOCAL_OFFSET. У вас же строка с SUMMER_WINTER_TIME раскомментирована, следовательно, работает переход с летнего на зимнее время и обратно, используются константы SUMMER_OFFSET и WINTER_OFFSET вместо LOCAL_OFFSET.
 

serg167

✩✩✩✩✩✩✩
10 Окт 2019
21
7
Я так понимаю, что вы вбили ssid и password своей сети, и ожидали что лампа сразу к ней подключится? Если это так, вы плохо читали комментарии в скетче, как минимум в том месте, в котором вы меняли эти параметры.
спасибо, в комментариях ничего не написано, кроме WiFi менеджер увидев непонятный SSID и пароль, конечно поменял на свой, действительно, ожидая, что Лампа приконнектится к нему, не очень понятны эти танцы с Менеджером ВайФай..
восстановил, открылся менеджер, ввел в него ССИД и Пароль.. заработало.
 
  • Лойс +1
Реакции: Arty

kostyamat

★★★★★★✩
29 Окт 2019
1,098
632
@serg167, WiFi Manager написан таким образом, что запоминает ssid и password, введенный в него при первом подключении, когда он в режиме точки доступа, иначе у него данные по нулям (вы в нем ничего не сохраняли). Соответственно он попробовал подключится к пустой сети, с пустым паролем, что он и сделал когда сказал "пробую подключится с ранее сохраненными параметрами", которых нет. По факту - это баг, он должен бы проверить свои данные на "пустоту". Но то такое.

Когда вы поменяли дефайны, указав данные вашей сети, Вы указали данные которые WM должен использовать для создания собственной точки доступа. Он это и сделал, - не сумев подключится, создал точку доступа с аналогичными параметрами, что и у вашей сети (вы же сами так пожелали). Это и привело к конфликтам ESP VS ваш роутер. А ваш телефон рандомно подключался то к одной точке доступа, то к другой.
 
Изменено:
  • Лойс +1
Реакции: serg167

serg167

✩✩✩✩✩✩✩
10 Окт 2019
21
7
@serg167, WiFi Manager написан таким образом, что запоминает ssid и password, введенный в него при первом подключении, когда он в режиме точки доступа, иначе у него данные по нулям (вы в нем ничего не сохраняли). Соответственно он попробовал подключится к пустой сети, с пустым паролем, что он и сделал когда сказал "пробую подключится с ранее сохраненными параметрами", которых нет. По факту - это баг, он должен бы проверить свои данные на "пустоту". Но то такое.

Когда вы поменяли дефайны, указав данные вашей сети, Вы указали данные которые WM должен использовать для создания собственной точки доступа. Он это и сделал, - не сумев подключится, создал точку доступа с аналогичными параметрами, что и у вашей сети (вы же сами так пожелали). Это и привело к конфликтам ESP VS ваш роутер. А ваш телефон рандомно подключался то к одной точке доступа, то к другой.
Если я из дома принесу на работу, в другую сеть вай фай, смогу ли подключиться не перегружая скетч, и не имея кнопки? Видимо не сумев подключиться , опять запустится менеджер, и я смогу переключить в другую сеть?
 

serg167

✩✩✩✩✩✩✩
10 Окт 2019
21
7
Хорошо бы написать, в скетче прямо или на другом видном месте про эти параметры - не влезай- убьет!
 

somon

★★★✩✩✩✩
20 Авг 2019
140
123
Хорошо бы написать, в скетче прямо или на другом видном месте про эти параметры - не влезай- убьет!
Хорошо бы сначала разобраться в "теме", а затем что-то делать! А не наоборот...
Или если на электрическом щите не висит табличка - не влезай убъет!, а у вас пропал в доме свет, вы тоже сломя голову полезите в него с голыми руками...?
 

somon

★★★✩✩✩✩
20 Авг 2019
140
123
Таки да


Да нет там ничего интересного, от слова совсем, просто connected и disconnected.
Вообще то речь шла не о логах в вашем роутере, а о логах самой лампы... А там много чего интересного! Даже для меня, не сведующего в программировании...
 

somon

★★★✩✩✩✩
20 Авг 2019
140
123
Ваше замечание очень по теме. Есть такое предложение рассортировать вопросы и ответы на них по группам и сделать как в 4pda например. В шапке форума всё собрать.
Для этого здесь как минимум должен быть админ темы (имеющий достаточно времени), ну и правила как на 4pda (которых здесь вообще нет...).
По этому то, порядок в теме лежит только на сознательности посетителей...
 
Изменено:

urg2000

✩✩✩✩✩✩✩
29 Июл 2019
10
3
Не пойму что происходит, но с введением перехода времени у меня сперва нормально время показывало потом на час вперёд ушло, списал что не было синхронизации с сервером времени, сегодня будильник прозвенел на пол часа позже и время на пол часа с реальным отличается :eek:
 

gunner47

★★★★★✩✩
18 Июн 2019
253
393
Не пойму что происходит, но с введением перехода времени у меня сперва нормально время показывало потом на час вперёд ушло, списал что не было синхронизации с сервером времени, сегодня будильник прозвенел на пол часа позже и время на пол часа с реальным отличается :eek:
Проверьте настройки перехода времени в прошивке ещё раз. Я отключал переход по умолчанию, но когда тестировал, по ошибке опубликовал исходники с включенным переходом. Возможно, у вас затёрлось что-то, если забирали свежий архив с гитхаба.
Если не забирали и не перепрошивали, тогда странно. Смещение пока не конфигурируется и не хранится в энергонезависимой памяти, оно забито гвоздями в прошивке. Если синхронизации не было, будильник не сработает совсем, лампа не будет знать не только время, но и день недели (а будильники зависят от дня недели). Смещение в полчаса - это только неправильные числа в прошивке, других объяснений я не могу придумать.
 

vvip

★★★★✩✩✩
18 Дек 2018
469
206
Смещение в полчаса - это только неправильные числа в прошивке, других объяснений я не могу придумать.
Ну есть же часовые пояса с отличием в них времени на полчаса от общепринятого. Вот, например: https://ru.wikipedia.org/wiki/UTC−3:30
Афганистан - +4,5; Индия +5.5...
И даже, кажется, есть какие-то экзотические часовые пояса в которых время на 15 минут отличается.
"Так, небольшой Непал в реальности находится в том же часовом поясе, что граничащая с ним территория Индии, однако непальцы специально ввели небольшую разницу во времени, которая позволяла бы им не чувствовать дискомфорта от расхождения с солнечным временем. В результате непальское время от индийского отличается на 15 минут, а разница со временем UTC составляет 5 часов 45 минут. "
Может каким-то мусором инициализировалось как раз в этом экзотическом часовом поясе.
 

urg2000

✩✩✩✩✩✩✩
29 Июл 2019
10
3
Возможно, при тестировании и перепрошивках что-то пошло не так. Сейчас скачал последнюю прошивку установил, понаблюдаю. NTP сервер записал другой
 

t_igr

★★✩✩✩✩✩
19 Июл 2019
74
55
Добрый день. @gunner47 , подскажи куда глядеть, залил сегодня последнюю прошивку с гита, с включенным mqtt, всё залилось, лампа работает, к роутеру подключается, mqtt коннекта нет, в мониторе порта насчет mqtt тишина. До этого стояла прошивка от 12.10 числа, mqtt работал. Откатился на неё обратно mqtt клиент заработал. Сегодня Arduino IDE обновил до 1.8.10. Библиотеки все закинул в /Program Files(x86)/Arduino/libraries/.
1573481543598.png
 
Изменено: