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
206
ЗДЕСЬ ОБСУЖДАЕМ ТОЛЬКО ДАННУЮ ПРОШИВКУ
ВСЕ ЧТО НЕ ПО СИЯ ТЕМЕ И ПРОШИВКЕ, ВСЕ СНОСИТСЯ НА@@@!

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

Diem

✩✩✩✩✩✩✩
21 Дек 2019
10
7
Вчера кто-то говорил, что вручную IP и порт прописывал - работало.
В ручную забивал, проблему не решает!

@Diem, нет идей.
Вчера кто-то говорил, что вручную IP и порт прописывал - работало.

Вообще, если прошивать лампу "по воздуху", то приложению не придётся искать лампу,
и лампу не придётся подключать к роутеру. Должно заработать всё и сразу.
я как то упустил момент этого, не в курсе, как обновлять таким образом...


ставлю 60 in 1 вообще без проблем...всегда всё чётко прошивает
 

Сотнег

★★★★★★★
15 Янв 2020
4,340
1,492
не в курсе, как обновлять таким образом...
https://community.alexgyver.ru/thre...ik-obsuzhdenie-proekta.1411/page-9#post-10804

Прошивка на 63 in 1 у меня не работает с приложением от @Koteyka. Не находит приложение ИП и порт лампы...
Случайно, не пробовали "найти лампу" в приложении, когда на лампе какой-то эффект демонстрируется?
 
Изменено:

kostyamat

★★★★★★✩
29 Окт 2019
1,098
632
@Сотнег, на сколько я понял, вы пытаетесь рандомизировать эффекты из фаворитного списка? И судя из того, что читал на предыдущей странице, похоже вы выбрали неправильный подход. Вам наверное стоит не рандомно выбирать из списка, а перемешать сам список в случайном порядке. Эта операция называется shuffle.
Вот тут https://forum.arduino.cc/index.php?topic=345964.0 как раз решают схожую задачу, и похоже - успешно.
 
  • Лойс +1
Реакции: Palpalych

kDn

★★★★★✩✩
18 Ноя 2019
1,103
437
Вам наверное стоит не рандомно выбирать из списка, а перемешать сам список в случайном порядке. Эта операция называется shuffle.
В битовом массиве перемешивать биты бесполезно, а расходовать 255 байт на организацию списка из 255 эффектов - расточительно. ИМХО все-же имеет смысл использовать битовый массив и плюнуть на то что выборка из него будет не особо случайной... Т.е. брать индекс рандомно и если эффект уже был - двигаться к ближайшему непоказанному. Потом повторять до обнуления битового массива. Как обнулился - заполнять и крутить сначала.
 
  • Лойс +1
Реакции: Palpalych

Palpalych

★★★★★✩✩
24 Дек 2019
766
405
Кому надоел плоский звездопад (или метель)
Поработал над кодом и сделал 2в1

// v1.0 - Updating for GuverLamp v1.7 by PalPalych 12.03.2020
// v1.1 - Fix wrong math & full screen drawing by PalPalych 14.03.2020
// v1.2 - Code optimisation + pseudo 3d by PalPalych 21.04.2020
C++:
#define e_sns_DENSE (32U) // плотность снега - меньше = плотнее

bool stormRoutine(uint8_t Scale = 8U) // Scale -- от 0 до 255
{
  // заполняем головами комет
  uint8_t Saturation = 0U;    // цвет хвостов
  uint8_t e_TAIL_STEP = 127U; // длина хвоста
  if (Scale > 127)
    Saturation = Scale;
  else
  {
    e_TAIL_STEP = 255U - Scale;
  }
  for (int8_t x = 0U; x < WIDTH_d; x++) // fix error i != 0U
  {
    if (!random8(e_sns_DENSE) &&
        !getPixelValue(wrapX(x), HEIGHT_d) &&
        !getPixelValue(wrapX(x + 1U), HEIGHT_d) &&
        !getPixelValue(wrapX(x - 1U), HEIGHT_d))
    {
      drawPixel_fast(x, HEIGHT_d, CHSV(random8(), Saturation, random8(64U, 255U)));
    }
  }

  // сдвигаем по диагонали
  for (int8_t y = 0U; y < HEIGHT_d; y++)
  {
    for (int8_t x = 0; x < WIDTH; x++)
    {
      drawPixel_fast(wrapX(x + 1U), y, getPixelColor(x, y + 1U));
    }
  }

  // уменьшаем яркость верхней линии, формируем "хвосты"
  for (int8_t i = 0U; i < WIDTH; i++)
  {
    fadePixel_fast(i, HEIGHT_d, e_TAIL_STEP);
  }
  return true;
}

// ----- LEDraw functions -----
static const int8_t WIDTH_d = WIDTH - 1U;               // ширина в цифровом представлении
static const int8_t HEIGHT_d = HEIGHT - 1U;             // высота в цифровом представлении

uint8_t wrapX(int8_t x)
{
  return (x + WIDTH) % WIDTH;
}

uint8_t wrapY(int8_t y)
{
  return (y + HEIGHT) % HEIGHT;
}

// получить номер пикселя в ленте по координатам
uint16_t getPixelNumber(int8_t x, int8_t y)
{
  if (!(THIS_Y & 0x01) || MATRIX_TYPE) // если чётная строка
    return (uint16_t)THIS_Y * _SEGLENGTH + THIS_X;
  else // если нечётная строка
    return (uint16_t)THIS_Y * _SEGLENGTH + _THIS_X;
}

// функция получения цвета пикселя по его номеру
uint32_t getPixelValue(int16_t thisPixel, CRGB *LEDarray = leds)
{
  CRGB color = LEDarray[thisPixel];
  return (((uint32_t)color.r << 16) | ((uint32_t)color.g << 8) | (uint32_t)color.b);
}

uint32_t getPixelValue(int8_t x, int8_t y, CRGB *LEDarray = leds)
{
  CRGB color = LEDarray[getPixelNumber(x, y)];
  return (((uint32_t)color.r << 16) | ((uint32_t)color.g << 8) | (uint32_t)color.b);
}

// функция отрисовки точки по координатам X Y
// **** Draw Pixel by point
void drawPixel_fast(int8_t x, int8_t y, CRGB color, CRGB *LEDarray = leds)
{
  LEDarray[getPixelNumber(x, y)] = color;
}

void drawPixel(int8_t x, int8_t y, CRGB color, CRGB *LEDarray = leds)
{
  if (x < 0 || x > (int8_t)(WIDTH_d) || y < 0 || y > (int8_t)(HEIGHT_d))
    return;
  drawPixel_fast(x, y, color, LEDarray);
}

void fadePixel_fast(int8_t x, int8_t y, uint8_t value, CRGB *LEDarray = leds)
{
  LEDarray[getPixelNumber(x, y)].fadeToBlackBy(value);
}
void fadePixel(int8_t x, int8_t y, uint8_t value, CRGB *LEDarray = leds)
{
  if (x < 0 || x > (int8_t)(WIDTH_d) || y < 0 || y > (int8_t)(HEIGHT_d))
    return;
  fadePixel_fast(x, y, value, LEDarray);
}

Выглядит теперь в разы лучше! (y)
 

kostyamat

★★★★★★✩
29 Окт 2019
1,098
632
@kDn, возможно я не правильно понял? Перемешивать нужно список фаворитов, а он уже существует, зачем выделять новую память под новый массив или битовое поле? А общий список перемешивать смысла нет. Но описанное выше решение позволяет сделать и это, опять же не выделяя дополнитеную память. Но зачем общий список перемешивать? Или я что-то пропустил?
 

Palpalych

★★★★★✩✩
24 Дек 2019
766
405
@kostyamat, смысл сделать суть тоже суфле (ток, чтобы случайно, но не повторялось пока все не отыграет), но сделать нужно экономно. Предложили признак того, что эффект в списке, и еще не отыгран, записать в битах, а для этого потребуется дополнительно выделяемой памяти в 8 раз меньше
 

kostyamat

★★★★★★✩
29 Окт 2019
1,098
632
@Palpalych, ок, я это понял. Просто отыгрываются эффекты из массива фаворитов? Эсли это так, то его можно просто перемешать перед использованием, и играй себе по порядку. После проигрывания последнего эффекта - снова перемешать. Вы алгоритм у буржуев гляньте, он уже готовый массив перегоняет, без создания промежуточного. И признаки дополнительные не нужны.
 

Palpalych

★★★★★✩✩
24 Дек 2019
766
405
@kostyamat, Я еще не смотрел, как организован фаворит в EEPROM, подозреваю, что целый байт на эффект и по порядку их идентификаторов... Думал, что можно использовать это дело под 8 независимых списков фаворитов. Но, один бит, в таком случае, можно пожертвовать на рандом.
 

Сотнег

★★★★★★★
15 Янв 2020
4,340
1,492
Перемешивать нужно список фаворитов, а он уже существует,
Существует список эффектов, а избранность - это признак (да/нет).
Некого перемешивать, пока не создана очередь воспроизведения.

Я уже и так и эдак алгоритмы набросал без упаковки байты в биты. Но упаковывать очень лень. Эффектов пускай будет 80. Так что речь идёт о 70-140 байтах. Я на код для перепаковки больше потрачу, по-моему.
 
Изменено:

Сотнег

★★★★★★★
15 Янв 2020
4,340
1,492
@Palpalych, в чём смысл давать процедурам новые имена?
Старые тоже оставлены, что ли, для совместимости?
getPixColorXY -> getPixelValue
drawPixelXY
-> drawPixel_fast
fadePixel
-> fadePixel_fast
getPixColorXY
-> getPixelColor
aaaaaaa.gif
 
Изменено:

Сотнег

★★★★★★★
15 Янв 2020
4,340
1,492
Прошивка 64 эффекта в 1
- Добавлен эффект Мерцание.
- Эффект Смена цвета теперь работает медленнее. На масштабах > 10 переключение цвета будет через выбранное количество секунд (1 секунда для Скорости = 255 / 2 секунды для Скорости = 254 и т.д.)
- В эффекте Метаболз добавлена возможность выбора палитры бегунком Масштаб
- Обновлены эффекты Метель и Звездопад на версию от @Palpalych.
- Добавлена возможность включить "очередь показов" выбранных эффектов для режима Цикл (чтобы не было повторов слишком часто). Это нужно включать в Constants.h.

Ссылка: https://community.alexgyver.ru/thre...zhdenie-proshivki-ot-gunner47.2418/post-33652
 
Изменено:
  • Лойс +1
Реакции: Andrewstr и Belokota

kDn

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

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

Сотнег

★★★★★★★
15 Янв 2020
4,340
1,492
@Palpalych, код эффектов из твоей прошивки уже совершенно не похож на код из прошивки gunner47.
Считай, офтопик.
 

Palpalych

★★★★★✩✩
24 Дек 2019
766
405
@Сотнег, Ну, думаю, не стоит тут эту тему поднимать. Дорасту до релиза - сам уйду из этой ветки... А так, кстати говоря, прошивка 64в1 также дрейфует тем же курсом. :cool: На каком этапе выйдет она из топика?
 

Сотнег

★★★★★★★
15 Янв 2020
4,340
1,492
@TeenKode, я в прошлый раз пытался разобраться, что ему надо.
И эксель-файл удалял, и приложение. Там кроме прошивки уже ничего и не было, а он всё равно ругался.

Кажется, оно через пару дней само проходит.
 

Сотнег

★★★★★★★
15 Янв 2020
4,340
1,492
Прошивка от Gunner47. Лампа привязалась к вайфаю, но время на ней неверное. Прошить по воздуху через приложение не получается. Кто-нибудь сталкивался с такой проблемой?
Какое на ней время? Как отличается?
Что происходит, когда пытаетесь прошить по воздуху? Режим Матрица включается?
 

andryakov.d

✩✩✩✩✩✩✩
14 Апр 2020
11
6
Какое на ней время? Как отличается?
Что происходит, когда пытаетесь прошить по воздуху? Режим Матрица включается?
Сейчас время 21-10. Время в приложении 07:20.
Режим Матрица включается, при выборе порта в АрдуиноИДЕ нет никаких вариантов.
 

andryakov.d

✩✩✩✩✩✩✩
14 Апр 2020
11
6
Если из розетки выключить минут на 5, время и разница во времени как поменяются?
Время на лампе сбилось до 7-00.
При попытке прошить по воздуху через приложение 47 режим матрицы включается, а при использовании FireLamp даже этого не происходит. Хотя всё остальное управление работает.
При первом включении в режиме точки доступа время было синхронно и функция будильника функционировала.
 
Изменено:

Сотнег

★★★★★★★
15 Янв 2020
4,340
1,492
@andryakov.d, пробуйте сервер времени другой прописывать, и покажите, что в строчке "как часто сверять время" вы указали? А то был тут случай...
 

andryakov.d

✩✩✩✩✩✩✩
14 Апр 2020
11
6
@andryakov.d, пробуйте сервер времени другой прописывать, и покажите, что в строчке "как часто сверять время" вы указали? А то был тут случай...
Возможно, и я туда залез :censored:.Файлов прежней прошивки не осталось. А Вемос похоронен в толще гипса :(.Боюсь если не получится прошить по воздуху, то придется оставить лампу без будильника. Спасибо Вам за желание помочь!