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

ЗДЕСЬ ОБСУЖДАЕМ ТОЛЬКО ДАННУЮ ПРОШИВКУ
ВСЕ ЧТО НЕ ПО СИЯ ТЕМЕ И ПРОШИВКЕ, ВСЕ СНОСИТСЯ НА@@@!

Очень просим не делать репост "ЦИТИРОВАНИЕ" сообщений! Делать только в КРАЙНЕЙ необходимости, удаляя лишний текст (у нас не ЧАТ)!
Иначе опять будет 160 страниц и 0 пользы ....

Для ответа КОНКРЕТНОМУ пользователю, достаточно нажать " ОТВЕТ"

При описании проблемы обязательно, как можно подробнее, описывайте ход своих действий до ее возникновения. Телепатов (как я думаю) среди участников нет. Потом 20 постов будет только для того, чтобы Вас понять.
Если Вы считаете ваше сообщение важным и его нужно поднять в шапку, пишите мне в личку с пометкой "Сообщение в шапку"


ПО ВОПРОСАМ РАБОТЫ ПРИЛОЖЕНИЯ ОТ KOTEYKA ИДЕМ В ЭТУ ТЕМУ

Голосовое управление лампой Гайвера, через Яндекс Алису (прошивка Gunner47).

Яндекс диск Файл ПДФ. Актуально на 27.01.2020г
наш сервер НЕ ОБНОВЛЯЕТСЯ, от 27.01.2020г
Прошивка gunner47 v.2 "86 эффектов в 1" или уже больше - разработку ведет @Сотнег
Прошивка gunner47 v.2.X_web : веб-интерфейс (без необходимости перепрошивки) - разработку ведет @alvikskor
Прошивка от Shaitan с поддержкой mp3 и пульта (тут не обсуждается. Обсуждается в теме прошивки)
Прошивка FireLamp with Remote Control - разработку ведет @SlingMaster

Для тех у кого умный дом Home Assistant есть отличный компонент

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

Комментарии

mechanic

★★★★✩✩✩
Команда форума
31 Июл 2018
403
202
ЗДЕСЬ ОБСУЖДАЕМ ТОЛЬКО ДАННУЮ ПРОШИВКУ
ВСЕ ЧТО НЕ ПО СИЯ ТЕМЕ И ПРОШИВКЕ, ВСЕ СНОСИТСЯ НА@@@!

Очень просим не делать репост "ЦИТИРОВАНИЕ" сообщений! Делать только в КРАЙНЕЙ необходимости, удаляя лишний текст (у нас не ЧАТ)!
Иначе опять будет 160 страниц и 0 пользы ....

Для ответа КОНКРЕТНОМУ пользователю, достаточно нажать " ОТВЕТ"

При описании проблемы обязательно, как можно подробнее, описывайте ход своих действий до ее возникновения. Телепатов (как я думаю) среди участников нет. Потом 20 постов будет только для того, чтобы Вас понять.
Если Вы считаете ваше сообщение важным и его нужно поднять в шапку, пишите мне в личку с пометкой "Сообщение в шапку"


ПО ВОПРОСАМ РАБОТЫ ПРИЛОЖЕНИЯ ОТ KOTEYKA ИДЕМ В ЭТУ ТЕМУ

Голосовое управление лампой Гайвера, через Яндекс Алису (прошивка Gunner47).

Яндекс диск Файл ПДФ. Актуально на 27.01.2020г
наш сервер НЕ ОБНОВЛЯЕТСЯ, от 27.01.2020г
Прошивка gunner47 v.2 "86 эффектов в 1" или уже больше - разработку ведет @Сотнег
Прошивка gunner47 v.2.X_web : веб-интерфейс (без необходимости перепрошивки) - разработку ведет @alvikskor
Прошивка от Shaitan с поддержкой mp3 и пульта (тут не обсуждается. Обсуждается в теме прошивки)
Прошивка FireLamp with Remote Control - разработку ведет @SlingMaster

Для тех у кого умный дом Home Assistant есть отличный компонент

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

Gogy

★✩✩✩✩✩✩
14 Апр 2019
80
14
@Shaitan, Напрашивается писать с нуля? Кто возьмет на себя столь не благодарное обязательство? :unsure:
 

kostyamat

★★★★★★✩
29 Окт 2019
1,097
630
Вот тут, имхо, зреет лучшее решение для лампы https://community.alexgyver.ru/threads/proshivka-firelamp_jeeui-gpl.2739/#post-29213
Приложение не нужно вообще, ссылку на портал лампы можно просто выставить на рабочий стол андроид как ярлык, из того же хрома, и рулить в браузере без проблем.
 

Palpalych

★★★★★✩✩
24 Дек 2019
765
404
@kostyamat, для ESP32 может быть, но не для нашей... кстати, я тут тоже недалек к выпуску своей беты. В последние дни много что проделал, по большей части в плане функционала и удобного подключения новых эффектов и конфигурирования старых. Вроде и проблем с памятью пока не предвидится. ;)
 

kostyamat

★★★★★★✩
29 Окт 2019
1,097
630
для ESP32 может быть, но не для нашей...
Почему же, основной упор там таки на ESP8266, но совместимо с ESP32.
Хотя один фиг на ESP32 нужно переходить, имхо, за этим будущее проекта. Она лишена глюков esp8266, ресурсов больше, и по цене далеко не убежала.
 

kDn

★★★★★✩✩
18 Ноя 2019
1,103
437
Вроде и проблем с памятью пока не предвидится.
Ну в моем случае текущая ситуация такая в режиме отладки:
RAM: [===== ] 50.3% (used 41180 bytes from 81920 bytes)
Flash: [==== ] 43.9% (used 458076 bytes from 1044464 bytes)
А проблемы не столько с наличием памяти, как с несколько э... неэкономным использованием памяти писателями стороннего кода (как следствие - фрагментация кучи и нестабильная работа распределения памяти). Например, причиной тому - избыточное использование глобальных/статических переменных или стека, а также без контрольное использование динамической памяти. Но это все решаемо, перепишу и сторонний код, в общем-то за прогрессом проекта может наблюдать любой. :)

* В общем-то я об этом говорил ранее, но походу никто не услышал. Но то такое, как только нарветесь (а это неизбежно), так поймете о чем я говорю.
Но в любом случае у меня есть запасной вариант в виде использования есп32, вам бы я тоже порекомендовал писать проект сразу на две платформы. Мало ли... вдруг пригодится :)
 

Николай_викт

✩✩✩✩✩✩✩
13 Янв 2020
20
1
@Shaitan, Спасибо . После "комментов" Прекрасно скомпилировалась и залилась по воздуху . Приложение работает .Модуля DF Player пока нет, в заберу в понедельник ,буду с ним пробовать .
 

kDn

★★★★★✩✩
18 Ноя 2019
1,103
437
А проблемы не столько с наличием памяти, как с несколько э... неэкономным использованием памяти писателями стороннего кода (как следствие - фрагментация кучи и нестабильная работа распределения памяти). Например, причиной тому - избыточное использование глобальных/статических переменных или стека, а также без контрольное использование динамической памяти.
Чуток поправил фреймворк JeeUI2, так что в есп8266 будет по-стабильнее работать. Вернусь к этому вопросу еще позже, пока же нужно еще вывод текста запилить, NTP как резервную синхронизацию прикрутить и еще всякое-разное по мелочам :)
 

Palpalych

★★★★★✩✩
24 Дек 2019
765
404
@kDn, подожди мою бету... там текст с различными фейдерами можно организовать будет :cool:
 

kDn

★★★★★✩✩
18 Ноя 2019
1,103
437
@kDn, подожди мою бету... там текст с различными фейдерами можно организовать будет :cool:
Да в общем-то не проблема сделать хоть фейдеры, хоть разукрашку, хоть подпрыгивание или наоборот статический текст. Другое дело, что на все это требуется время. Я пока делаю базовый движок с полным текущим фунционалом, а доработки будут позже. Тем более, что разные доп. модули (микрофон, плеер, мосфеты, зигбее) уже приехали и их можно прикрутить.
 

kDn

★★★★★✩✩
18 Ноя 2019
1,103
437
Ну как хочешь... ))) Выложу, можешь поковыряться...
Ну я обязательно погляжу, просто ждать у меня времени нет... Лучше сделаю, а потом если что-то интересное и полезное будет - дополню свой вариант вашими наработками.
 

kostyamat

★★★★★★✩
29 Окт 2019
1,097
630
как следствие - фрагментация кучи
Известная проблема при конкатенации (или другом случае изменения длинны String) строковых переменных, больше всего проявляется именно с классом String, менее с классическими С строками, но тоже проблема. А в фреймворка, похоже String String-ом поганяют.
Вот интересная полемика на эту тему http://arduino.ru/forum/programmirovanie/perepolnenie-string
Интересное решение для обнуления памяти занятого String
http://arduino.ru/forum/programmirovanie/perepolnenie-string#comment-193409 ,потому как просто String Var = ""; похоже не освобождает место в куче, и не приводит к дефрагментации.
А такие вещи как
String Var = "Hello";
Var += " World!"; вообще противопоказаны, хотя как бы работают. Для такой операции есть специальное https://www.arduino.cc/reference/en/language/variables/data-types/string/functions/concat/
 
Изменено:

kDn

★★★★★✩✩
18 Ноя 2019
1,103
437
@kostyamat, спасибо, но вы не по адресу предлагаете почитать ;) , я как бы в курсе как все устроено.

В случае JeeUI2 - там целая грядка проблем, одно лишь тягание объектов через стек чего стоит. Я это уже поправил передачей константных ссылок, ну а конкатинации - позже перепишу, там область видимости - внутри функции и по выходу деструктор отработает, в любом случае количество копирований уже сильно снижено и есп8266 живет снова. :)
Screenshot_20200315-042627.png
* вот крутится, утром проверю кучу :)
 

mjba

✩✩✩✩✩✩✩
26 Янв 2020
23
1
@tolyan23, все то же самое, не собирается, ошибка: CaptivePortalManager.h: No such file or directory. Заливка другой прошивки - все работает.
 

mjba

✩✩✩✩✩✩✩
26 Янв 2020
23
1
@Burai, если тупо удалить ошибку CaptivePortalManager.h:, то прошивка собирается, но после загрузки, приложение не видит лампу, но в мониторе порта отображается подключение и создание как точки доступа, так и клиента. В общем то же самое, как и с прошивкой GyverLamp_31. от этого же автора.
 

Burai

✩✩✩✩✩✩✩
12 Янв 2020
40
2
@mjba, Не силен я во всем этом. Подождем автора, может он, что подскажет.
 

Koteyka 🐱

★★★★★★✩
Команда форума
27 Окт 2019
935
556
54
Днепр, Украина
firelamp.pp.ua
ВНИМАНИЕ!!!
Приложение изменено кардинально, поэтому всё делаем внимательно...
...ну и на свой страх и риск.
1. В приложении добавлен английский язык (Включается, если изменить язык системы на отличный от русского).
2. Названия эффектов теперь хранятся не в строковых ресурсах, так что перевести эффекты на другой язык, отличный от русского или английского не получится. Если нужен перевод эффектов на другой язык, то задайте его в прошивке.
3. Добавлена возможность использовать эффекты из лампы (т.е. Названия и параметры эффектов можно задать прямо в прошивке и загрузить в приложение)
Для этого нужно в constants.h после списка эффектов добавить следующее:
C-like:
// ================ РЕЕСТР ДОСТУПНЫХ ЭФФЕКТОВ ===================
// ==== ДЛЯ ПЕРЕДАЧИ В ПРИЛОЖЕНИЯ С ПОДДЕРЖКОЙ ЭТОЙ ФУНКЦИИ =====
// формат записи:
//"Название эффекта,min_скорость,max_скорость,min_масштаб,max_масштаб,выбор_ли_цвета_это(0-нет,1-да, 2-для кометы);"
//                  это максимальная длина строчки с названием и параметрами
// Порядок эффектов можно менять на своё усмотрение, не забывая при этом менять номера в списке ВЫШЕ
// Можно добавлять новые или удалять ненужные эффекты сохраняя количество эффектов в каждой строке примерно одинаковым, т.е.
// общее количество эффектов делим на три строки
// Передаются частями из 3-х строк. !!!ЭФФЕКТ БЕГУЩАЯ СТРОКА ДОЛЖЕН БЫТЬ ПОСЛЕДНИМ ВСЕГДА!!!
// ОЧЕНЬ ВАЖНО!!! Следите за знаками при редавктировании эффектов. Не допускайте пробелов, кроме как в названии эффекта.
// В кавычках Имя эффекта и его параметры должны быть разделены запятой, а вконце точка с запятой.

const String efList_1 = String("LIST1;") +              // ПЕРВАЯ СТРОКА
String("Конфетти,100,1,1,255,0;") +                     // EFF_SPARKLES          (0U)
String("Огонь,100,1,1,255,1;") +                        // EFF_FIRE              (1U)
String("Водопад,100,1,1,255,1;") +                      // EFF_WHITTE_FIRE       (2U)
String("Радуга горизонтальная,100,1,1,50,0;") +         // EFF_RAINBOW_HOR       (3U)
String("Радуга вертикальная,100,1,1,50,0;") +           // EFF_RAINBOW_VER       (4U)
String("Радуга диагональная,100,1,1,50,0;") +           // EFF_RAINBOW_DIAG      (5U)
String("Смена цвета,1,10,1,1,0;") +                     // EFF_COLORS            (6U)
String("Безумие 3D,1,100,100,1,0;") +                   // EFF_MADNESS           (7U)
String("Облака 3D,1,100,100,1,0;") +                    // EFF_CLOUDS            (8U)
String("Лава 3D,1,100,100,1,0;") +                      // EFF_LAVA              (9U)
String(+ "\n");
const String efList_2 = String("LIST2;") +              // ВТОРАЯ СТРОКА
String("Плазма 3D,1,100,100,1,0;") +                    // EFF_PLASMA            (10U)
String("Радуга 3D,1,100,100,1,0;") +                    // EFF_RAINBOW           (11U)
String("Павлин 3D,1,100,100,1,0;") +                    // EFF_RAINBOW_STRIPE    (12U)
String("Зебра 3D,1,100,100,1,0;") +                     // EFF_ZEBRA             (13U)
String("Лес 3D,1,100,100,1,0;") +                       // EFF_FOREST            (14U)
String("Океан 3D,1,100,100,1,0;") +                     // EFF_OCEAN             (15U)
String("Цвет,70,70,1,255,1;") +                         // EFF_COLOR             (16U)
String("Снегопад,100,1,1,100,0;") +                     // EFF_SNOW              (17U)
String("Метель,100,1,1,100,0;") +                       // EFF_SNOWSTORM         (18U)
String("Звездопад,100,1,1,100,0;") +                    // EFF_STARFALL          (19U)
String(+ "\n");
const String efList_3 = String("LIST3;") +              // ТРЕТЬЯ СТРОКА
String("Матрица,100,1,1,100,0;") +                      // EFF_MATRIX            (20U)
String("Светлячки,100,1,1,100,0;") +                    // EFF_LIGHTERS          (21U)
String("Светлячки со шлейфом,100,1,1,100,0;") +         // EFF_LIGHTER_TRACES    (22U)
String("Пейнтбол,100,1,1,1,0;") +                       // EFF_PAINTBALL         (23U)
String("Блуждающий кубик,1,100,40,255,0;") +            // EFF_CUBE              (24U)
String("Аквариум,255,1,1,255,1;") +                     // EFF_AQUARIUM          (25U)
String("Пульс,100,1,1,100,0;") +                        // EFF_PULSE             (26U)
String("Комета,100,1,1,100,2;") +                       // EFF_COMET             (27U)
String("Белый свет,1,100,40,255,0;") +                  // EFF_WHITE_COLOR       (28U)
String("Бегущая строка,100,1,1,255,1;") +               // EFF_PAINTBALL        (29U)
String(+ "\n");
// ============= КОНЕЦ РЕЕСТРА =====
/* Для английской версии раскомментировать нижеследующее и закомментировать предыдущее
const String efList_1 = String("LIST1;") +              // ПЕРВАЯ СТРОКА
String("Confetti,100,1,1,255,0;") +                     // EFF_SPARKLES          (0U)
String("Fire,100,1,1,255,1;") +                         // EFF_FIRE              (1U)
String("Waterfall,100,1,1,255,1;") +                    // EFF_WHITTE_FIRE       (2U)
String("Rainbow horizontal,100,1,1,50,0;") +            // EFF_RAINBOW_HOR       (3U)
String("Rainbow vertical,100,1,1,50,0;") +              // EFF_RAINBOW_VER       (4U)
String("Rainbow diagonal,100,1,1,50,0;") +              // EFF_RAINBOW_DIAG      (5U)
String("Change of color,1,10,1,1,0;") +                 // EFF_COLORS            (6U)
String("Madness 3D,1,100,100,1,0;") +                   // EFF_MADNESS           (7U)
String("Clouds 3D,1,100,100,1,0;") +                    // EFF_CLOUDS            (8U)
String("Lava 3D,1,100,100,1,0;") +                      // EFF_LAVA              (9U)
String(+ "\n");
const String efList_2 = String("LIST2;") +              // ВТОРАЯ СТРОКА
String("Plasma 3D,1,100,100,1,0;") +                    // EFF_PLASMA            (10U)
String("Rainbow 3D,1,100,100,1,0;") +                   // EFF_RAINBOW           (11U)
String("Peacock 3D,1,100,100,1,0;") +                   // EFF_RAINBOW_STRIPE    (12U)
String("Zebra 3D,1,100,100,1,0;") +                     // EFF_ZEBRA             (13U)
String("Forest 3D,1,100,100,1,0;") +                    // EFF_FOREST            (14U)
String("Ocean 3D,1,100,100,1,0;") +                     // EFF_OCEAN             (15U)
String("Color,70,70,1,255,1;") +                        // EFF_COLOR             (16U)
String("Snowfall,100,1,1,100,0;") +                     // EFF_SNOW              (17U)
String("Snowstorm,100,1,1,100,0;") +                    // EFF_SNOWSTORM         (18U)
String("Starfall,100,1,1,100,0;") +                     // EFF_STARFALL          (19U)
String(+ "\n");
const String efList_3 = String("LIST3;") +              // ТРЕТЬЯ СТРОКА
String("Matrix,100,1,1,100,0;") +                       // EFF_MATRIX            (20U)
String("Fireflies,100,1,1,100,0;") +                    // EFF_LIGHTERS          (21U)
String("Fireflies with a train,100,1,1,100,0;") +       // EFF_LIGHTER_TRACES    (22U)
String("Paintball,100,1,1,1,0;") +                      // EFF_PAINTBALL         (23U)
String("Wandering Cube,1,100,40,255,0;") +              // EFF_CUBE              (24U)
String("Aquarium,255,1,1,255,1;") +                     // EFF_AQUARIUM          (25U)
String("Pulse,100,1,1,100,0;") +                        // EFF_PULSE             (26U)
String("Comet,100,1,1,100,2;") +                        // EFF_COMET             (27U)
String("White Light,1,100,40,255,0;") +                 // EFF_WHITE_COLOR       (28U)
String("Ticker,100,1,1,255,1;") +                       // EFF_PAINTBALL        (29U)
String(+ "\n");
*/
В parsing после
C-like:
    else if (!strncmp_P(inputBuffer, PSTR("GET"), 3))
    {
      sendCurrent(inputBuffer);
    }
Вставляем следующее:
C-like:
    else if (!strncmp_P(inputBuffer, PSTR("TXT"), 3)) {     // Принимаем текст для бегущей строки
      memcpy(buff, &inputBuffer[3], strlen(inputBuffer));
      String T = buff;
      int str_len = T.length() + 1;
      T.toCharArray(Text, str_len);
    }
    else if (!strncmp_P(inputBuffer, PSTR("LIST1"), 5))     // Список эффектов 1
    {
      char replyPacket[600U];
      efList_1.toCharArray(replyPacket, 600U);
      Udp.write(replyPacket);
    }
    else if (!strncmp_P(inputBuffer, PSTR("LIST2"), 5))     // Список эффектов 2
    {
      char replyPacket[600U];
      efList_2.toCharArray(replyPacket, 600U);
      Udp.write(replyPacket);
    }
    else if (!strncmp_P(inputBuffer, PSTR("LIST3"), 5))     // Список эффектов 3
    {
      char replyPacket[600U];
      efList_3.toCharArray(replyPacket, 600U);
      Udp.write(replyPacket);
    }
Для бегущей строки перед void stup() добавляем char* Text; а в самом void stup() вконце добавить Text = "ТУТ ВАШ ТЕКСТ ПО УМОЛЧАНИЮ, ЕСЛИ НЕ ЗАДАН В ПРИЛОЖЕНИИ";
Для вывода текста в effectTicker последней строкой перебора эффектов добавляем
C-like:
case EFF_TEXT:           fillString(Text, CHSV(modes[EFF_TEXT].Scale, 255U, 255U));    break;
Так же не забываем править количество и названия эффектов.
Для правильной работы избранного в основном файле прошивки, в строке
C-like:
uint8_t FavoritesManager::FavoriteModes[MODE_AMOUNT] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
количество нулей должно соответствовать количеству эффектов.
ПРИЛОЖЕНИЕ (только в rar архиве, т.к. этот хост не принимает apk)
Если что не так, пишите.
 
Изменено:

Palpalych

★★★★★✩✩
24 Дек 2019
765
404
@Koteyka, Спасибо. Скажи, а список эффектов как передается в приложение? Как раз доделываю бету, и хочу сразу организовать такую возможность