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

Pavelts

✩✩✩✩✩✩✩
4 Апр 2020
47
9
Нет, ничего не менял кроме mqtt, и скорости порта Serial.begin(115200);
Я к тому что настройки тоже нужно сделать, какая у вас кнопка куда подключена, по симптому как будто она всегда нажата, а это бывает тогда когда ее не верно сконфигурировали
 

EGORka

★✩✩✩✩✩✩
15 Мар 2020
87
37
@Сотнег, Прошил лампу прошивкой 59 эффектов в 1
В константах забито :
#define NTP_ADDRESS ("ru.pool.ntp.org ") // сервер времени
#define NTP_INTERVAL (60UL) // интервал синхронизации времени (было 30 минут)
Эффекты то фризятся через 5-8 секунд, то работают нормально. Вроде такую проблему связывали с NTP cерверами. Но вот в данный момент лампа работает, типа само прошло. не перепрошивал. Лампа время синхронизирует, каждые пять минут выводит. Буквально 15минут назад было так:
Не могу определить момент когда начинаются фризы, может после включения какого то эффекта ? но и не понятно когда они перестают...
Возможно из за хренового соединения с интернет. Но он вроде есть...
 

Сотнег

★★★★★★★
15 Янв 2020
4,339
1,492
#define NTP_INTERVAL (60UL) // интервал синхронизации времени (было 30 минут)
Попробуйте
#define NTP_INTERVAL (60UL * 60UL * 1000UL) // интервал синхронизации времени (60 минут)

И другой сервер. Тут вас могли забанить уже.
 
  • Лойс +1
Реакции: EGORka и kDn

EGORka

★✩✩✩✩✩✩
15 Мар 2020
87
37
Тут вас могли забанить уже.
За что? Я только часа два назад прошился. Да и сейчас лампа работает нормально, без фризов. И время кажет. Минут 20 синусоида работает, каждые 5 минут время выводится. без проблем.
 

Сотнег

★★★★★★★
15 Янв 2020
4,339
1,492
@EGORka, каждые 60 миллисекунд к серверу обращаться.
Вообще не очень верится, что с такой ошибкой у вас лампа работала.
 

EGORka

★✩✩✩✩✩✩
15 Мар 2020
87
37
@Сотнег, Ну вот же работает. А какая цифра нужна чтоб раз в час лезла лампа к серверу времени ?
Кстати заметил.. Как только запустил программу Firelamp на смартфоне, подключенном к той же сети что и лампа, работающий до этого в автономном режиме эффект призмата раза четыре зафризил, я на смартфоне прогу выключил, фризы исчезли. Блин, я настроил второй смарт чтоб снять все это, Установил, запустил сьемку. Призмата работает нормально, я на камеру включаю смартфон с программой, чтоб заснять эти фризы... А их нет.. Все работает... Я что то греться начал, как ужаленый короновирусом... Тем более что пока пишу этот текст, эффект опять пару -тройку раз замер.. Наверное все таки я не ту цифру в строке обращению к серверу поставил. вообще как расшифровать эту строчку - (60UL * 60UL * 1000UL) 1000UL это сколько по человеческому времени ?:)
P.S. Дошло.. звездочка это умножение, а цифры - миллисекунды ? Чтот затупил со страшной силой....
 
Изменено:

Palpalych

★★★★★✩✩
24 Дек 2019
766
405
2 эффекта... Налюбителя.
C++:
// ============= RADAR / РАДАР ===============
// Aurora : https://github.com/pixelmatix/aurora/blob/master/PatternRadar.h
// Copyright(c) 2014 Jason Coon
// v1.0 - Updating for GuverLamp v1.7 by Palpalych 14.04.2020
// v1.1 - +dither, +smoothing
#define e_rad_DITHER (2U) // разрешить дисперсию эффектов DRIFT/DRIFT2 (0 - отключить; 2... - каждый n-кадр будет прорисовываться заново)
bool radarRoutine(uint8_t Scale = 8U)
{
#if e_rad_DITHER
  if (eff_framecounter % e_rad_DITHER)
    return false;
#endif
  blurScreen(beatsin8(5U, 3U, 15U));
  dimScreen(254U - scale8(8U, (Scale % palletes_steps) * palletes_count));
  const TProgmemRGBPalette16 *curPalette = palettes[Scale / palletes_steps];
  for (int offset = 0U; offset < SEMIWIDTH_d; offset++)
  {
    drawPixel_fast(mapcos8(eff_theta, offset, (WIDTH_d)-offset),
                   mapsin8(eff_theta, offset, (HEIGHT_d)-offset),
                   ColorFromPalette(*curPalette, 255U - (offset * 16U + eff_offset)));
    EVERY_N_MILLIS(25)
    {
      eff_theta += 2;
      eff_offset += 1;
    }
  }
  return true;
}
Флегматичная Крутилка. FPS: 100

C++:
// ============= SPIRAL / СПИРАЛЬ ===============
// Aurora : https://github.com/pixelmatix/aurora/blob/master/PatternSpin.h
// Copyright(c) 2014 Jason Coon
// v1.0 - Updating for GuverLamp v1.7 by Palpalych 14.04.2020
// v1.1 - +dither, +smoothing, +tilt, +moving

#define e_spl_DITHER (2U) // разрешить дисперсию эффектов (0 - отключить; 2... - каждый n-кадр будет прорисовываться заново)

float degrees = 0;
float radius = 7;

float maxSpeed = 30;
float speedStart = 6;
float velocityStart = 0.6;

float speed = speedStart;
float velocity = velocityStart;

bool spinRoutine(uint8_t Scale = 8U, uint8_t Speed = 8U)
{
#if e_spl_DITHER
  if (eff_framecounter % e_spl_DITHER)
    return false;
#endif
  moveScreenY(0.4);
  blurScreen(beatsin8(5U, 1U, 10U));
  dimScreen(255U - scale8(3U, (Scale % palletes_steps) * palletes_count));
  const TProgmemRGBPalette16 *curPalette = palettes[Scale / palletes_steps];
  CRGB color = ColorFromPalette(*curPalette, speed * 16);
  // start position
  int x;
  int y;

  // target position
  float targetDegrees = degrees + speed;
  float targetRadians = radians(targetDegrees);
  int targetX = (int)(CENTERX + radius * cos(targetRadians));
  int targetY = (int)(CENTERY - radius * sin(targetRadians));

  float tempDegrees = degrees;

  do
  {
    float radians = radians(tempDegrees);
    x = (int)(CENTERX + radius * cos(radians));
    y = (int)(CENTERY - radius * sin(radians));

    drawPixel(x, y / 2 + 8, color);
    drawPixel(y, x / 2 + 8, color);

    tempDegrees += 1;
    if (tempDegrees >= 360)
      tempDegrees = 0;
  } while (x != targetX || y != targetY);

  degrees += speed;

  // add velocity to the particle each pass around the accelerator
  if (degrees >= 360)
  {
    degrees = 0;
    speed += velocity;
    if (speed <= speedStart)
    {
      speed = speedStart;
      velocity *= -1;
    }
    else if (speed > maxSpeed)
    {
      speed = maxSpeed - velocity;
      velocity *= -1;
    }
  }
  return true;

// ---------------- LEDraw funcs -------------------

static CRGB ledsbuff[NUM_LEDS]; // <- можно использовать буфер для прорисовки эффектов "поверх кадра" в некоторых продвинутых прошивках

void moveScreenY(float shift = 0)
{
  for (int8_t x = 0; x < WIDTH; x++)
  {
    int16_t amount = shift * 256;
    int8_t delta = abs(amount) >> 8;
    int8_t fraction = abs(amount) & 255;
    for (int8_t y = 0; y < WIDTH; y++)
    {
      if (amount < 0)
      {
        zD = y - delta;
        zF = zD - 1;
      }
      else
      {
        zD = y + delta;
        zF = zD + 1;
      }
      CRGB PixelA = CRGB::Black;
      if ((zD >= 0) && (zD < WIDTH))
        PixelA = getPixelColor(x, zD, leds);
      CRGB PixelB = CRGB::Black;
      if ((zF >= 0) && (zF < WIDTH))
        PixelB = getPixelColor(x, zF, leds);
      drawPixel_fast(x, y, (PixelA.nscale8(ease8InOutApprox(255 - fraction))) + (PixelB.nscale8(ease8InOutApprox(fraction))), ledsbuff);
    }
  }
  memcpy(leds, ledsbuff, SIZE_LEDS);
}
}

Неотимизирован в качестве математики. FPS: 84. В оригинале - 2 огня бегущие по кругу. Пришлось размыть, наклонить, и сдвинуть


@Сотнег,

- не работает, так как отсутствует часть кода
- это набор эффектов от Патрика - две кометы, 3 кометы... то, что делал 6 в 1
 
Изменено:
  • Лойс +1
Реакции: Сотнег

EGORka

★✩✩✩✩✩✩
15 Мар 2020
87
37
@Сотнег, перепрошил, спасибо. все работает . Действительно я ступил с временем синхронизации. За это меня на стратуме и забанили.
 

Palpalych

★★★★★✩✩
24 Дек 2019
766
405
C++:
// ============= FLOWFIELD / КАСКАД ===============
// Aurora : https://github.com/pixelmatix/aurora/blob/master/PatternFlowField.h
// Copyright(c) 2014 Jason Coon
// v1.0 - Updating for GuverLamp v1.7 by Palpalych 14.04.2020

#define e_ffld_DITHER (2U) // разрешить дисперсию эффектов (0 - отключить; 2... - каждый n-кадр будет прорисовываться заново)
#define e_ffld_SPEED  1
#define e_ffld_SCALE  26
#define _e_ffld_COUNT (WIDTH * 2)

uint16_t _ffld_x;
uint16_t _ffld_y;
uint16_t _ffld_z;

bool flowfieldRoutine(uint8_t Scale = 8U, uint8_t Speed = 8U)
{
#if e_ffld_DITHER
  if (eff_framecounter % e_ffld_DITHER)
    return false;
#endif
  if (eff_firstFrame)
  {
    _ffld_x = random16();
    _ffld_y = random16();
    _ffld_z = random16();

    eff_firstFrame = false;
    for (int i = 0; i < _e_ffld_COUNT ; i++)
    {
      boids[i] = Boid(random8(WIDTH), 0);
    }
  }

  dimScreen(240 - scale8(32U, (Scale % palletes_steps) * palletes_count));

  // CRGB color = effects.ColorFromCurrentPalette(hue);
  const TProgmemRGBPalette16 *curPalette = palettes[Scale / palletes_steps];
  for (int i = 0; i < _e_ffld_COUNT ; i++)
  {
    Boid *boid = &boids[i];

    int ioffset = e_ffld_SCALE * boid->location.x;
    int joffset = e_ffld_SCALE * boid->location.y;

    eff_offset2 = inoise8(_ffld_x + ioffset, _ffld_y + joffset, _ffld_z);

    boid->velocity.x = (float)sin8(eff_offset2) * 0.0078125 - 1.0;
    boid->velocity.y = -((float)cos8(eff_offset2) * 0.0078125 - 1.0);
    boid->update();

    drawPixel(boid->location.x, HEIGHT_d - boid->location.y, ColorFromPalette(*curPalette, eff_offset2 + eff_offset)); // color

    if (boid->location.x < 0 || boid->location.x >= WIDTH ||
        boid->location.y < 0 || boid->location.y >= HEIGHT)
    {
      boid->location.x = random(WIDTH);
      boid->location.y = 0;
    }
  }

  EVERY_N_MILLIS(200)
  {
    eff_offset++;
  }

  _ffld_x += e_ffld_SPEED;
  _ffld_y += e_ffld_SPEED;
  _ffld_z += e_ffld_SPEED;
  return true;
}

Требуется наличие класса Boid из СТАДА/ХИЩНИКА
 
Изменено:

Сотнег

★★★★★★★
15 Янв 2020
4,339
1,492

@Palpalych,
я не пытался перевести название из оригинального кода.
На вихри очень похоже (на скорости с задержкой в 15мс между кадрами).
А поле - ну его нафиг это поле на таких скоростях.
unnamed.jpg
 

Palpalych

★★★★★✩✩
24 Дек 2019
766
405
Flow field = изначально и дословно "поле растекания" применительно к лавовым потокам, потом к многокаскадным водопадам, и уже потом - аэродинамика

Ну вообщем, есть еще эффект "Ромашка СВИРЛ" у меня )))
 

kostyamat

★★★★★★✩
29 Окт 2019
1,098
632
Ух красота! Живём, уже за полсотни эффектов в лампе.
Только вот прикинул - это же сколько времени нужно, чтобы морзянкой продрочить лампу к искомому эффекту?!
Это же каким незанятым человеком по жизни нужно быть, чтобы эю пользоваться?! Тихо завидую. 🤫
 

Сотнег

★★★★★★★
15 Янв 2020
4,339
1,492
@Palpalych, замедление работает.
Когда медленно делаешь, выглядит плохо. Хоть переворачивай, хоть нет.
 

kostyamat

★★★★★★✩
29 Окт 2019
1,098
632
@Palpalych, предполагаю, что есть смысл предусмотреть отдельный фаворит лист, эдак на 10 записей, в который пользователь может внести те эффекты, которые ему просто необходимо иметь под рукой/кнопкой. Потому как управлять лампой без приложения, или вебинтерфейса, уже просто не реально.
Я выше высказался с сарказмом, конечно, но и предлагать авторам унять прыть в портировании эффектов тоже как бы не желаю. Хотите, делайте хоть 100500 эффектов, но возьмитесь наконец и за удобство управления. С этим что-то нужно делать. Однокнопочный режим себя изжил ещё на оригинальной прошивке, что уж говорить про 50+ эффектов.
1) это почти не реально запомнить самому; 2) это вообще не реально объяснить женам, и престарелым родителям. 3) когда демонстрируешь лампу друзьям, - вау эффект, но когда начинаешь при них бить чечётку по кнопке, они начинают как-то подозрительно неприятно щуриться, смотря на твои "старания", и вау эффект резко нивелируется.
 

Palpalych

★★★★★✩✩
24 Дек 2019
766
405
@kostyamat, Понимаю, для этого пульт или многокнопочная клава... Но, пока, таймаут в плюшках беру.

Всем. Выношу на обсуждение
C++:
// ============= BOUNCE / ПРЫЖКИ ===============
// Aurora : https://github.com/pixelmatix/aurora/blob/master/PatternFlowField.h
// Copyright(c) 2014 Jason Coon
// v1.0 - Updating for GuverLamp v1.7 by Palpalych 14.04.2020
#define e_bnc_DITHER (2U) // разрешить дисперсию эффектов (0 - отключить; 2... - каждый n-кадр будет прорисовываться заново)
#define e_bnc_COUNT (WIDTH)
#define e_bnc_SIDEJUMP (true)
PVector gravity = PVector(0, -0.0125);
bool simplexNoiseRoutine(uint8_t Scale = 8U, uint8_t Speed = 8U)
{
#if e_bnc_DITHER
  if (eff_framecounter % e_bnc_DITHER)
    return false;
#endif
  if (eff_firstFrame)
  {
    eff_firstFrame = false;
    unsigned int colorWidth = 256 / e_bnc_COUNT;
    for (int i = 0; i < e_bnc_COUNT; i++)
    {
      Boid boid = Boid(i, HEIGHT / 8);
      boid.velocity.x = 0;
      boid.location.y = HEIGHT_d / 4;
      boid.velocity.y = i * -0.01;
      boid.colorIndex = colorWidth * i;
      boid.maxforce = 10;
      boid.maxspeed = 10;
      boids[i] = boid;
    }
  }
  blurScreen(beatsin8(5U, 1U, 5U));
  dimScreen(254 - scale8(64U, (Scale % palletes_steps) * palletes_count));
  const TProgmemRGBPalette16 *curPalette = palettes[Scale / palletes_steps];
  for (int i = 0; i < e_bnc_COUNT; i++)
  {
    Boid boid = boids[i];
    boid.applyForce(gravity);
    boid.update();
    CRGB color = ColorFromPalette(*curPalette, boid.colorIndex + eff_offset);
    drawPixel((uint32_t)(boid.location.x) % WIDTH, boid.location.y, color);
    if (boid.location.y <= 0)
    {
      boid.location.y = 0;
      boid.velocity.y *= -1.0;
      boid.velocity.x *= 0.9;
      if (!random8() || boid.velocity.y < 0.01)
      {
#if e_bnc_SIDEJUMP
        boid.applyForce(PVector((float)random(127) / 255 - 0.25, (float)random(255) / 255));
#else
        boid.applyForce(PVector(0, (float)random(255) / 255));
#endif
      }
    }
    boids[i] = boid;
  }
  EVERY_N_MILLIS(20)
  {
    eff_offset++;
  }
  return true;
}
Судьба эффекта в ваших руках - портировал, но суть те же прыгающие шарики, но на другом движке. Для разнообразия с полпинка написал так, чтобы прыгали в разные стороны.
 
Изменено:
  • Лойс +1
Реакции: Belokota