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

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

kDn

★★★★★✩✩
18 Ноя 2019
1,103
437
И еще, пока как мысль. А что если режим DEMO оформить как отдельный эффект? Мы тем самым разгрузим обработчик нажатой кнопки (управления питания) от не нужных проверок в каком режиме работает лампа, а? теперь проще будет - включили лампу - выбрали демо режим, а он сам уже управляет переключениями. То же самое касается рассвета - таймер сработал и включился Эффект рассвет!
Текущая прошивка все еще совместима с имеющимися приложениями. Как только будут добавлены или изменены эффекты - то нужно будет новое приложение. У меня приложением заниматься нет времени... Поэтому пока что в основном меняю прошивку.
 

Palpalych

★★★★★✩✩
24 Дек 2019
766
405
@kDn, нет вопросов! Я продумаю тогда более менее законченное решение по этому поводу - тогда поделюсь для адаптации.

Кстати, в свою прошивку встраивал модуль osd, который предложил?

Тут подумал, если да, то можно прописать в твою прошивку готовое решение "Время по клику", естественно можно отключать эту функцию в конфиге

вот код:
C-like:
#define ONETOUCH_CLOCK        (true)                        // вывод времени при однократном нажатии

// встроить этот алгоритм при однократном нажатии кнопки
    if (touch.isSingle()) {                             // * : однократное нажатие, когда OFF
#ifdef ONETOUCH_CLOCK     
      if (!osd_printCurrentTime(CRGB::White))           // попытка напечатать время. Если не получается или текст уже на экране, то переходим ко включению
#endif   
      {
        ONflag = true;                                    // <-тело процедуры, естественно для каждой прошивки свое   
        startButtonHolding = true;                        //
        setDirectionTimeout = false;                    //
        tmNumHoldTimer.reset();                            //
        tmChangeDirectionTimer.reset();                    //
        brightDirection = 1;                            //
        changePower();                                    //
      }
    }

// на всякий случай сама процедура печати времени
bool osd_printText(String text, CRGB color) {                               // печать бегущей строки
  if (text == "" || osd_string[0]) return false;                            // процедура не приняла значение или находится на стадии печати строки (возвращает false)
  osd_fontColor = color;                                                    // сохранение текущего цвета
  text.toCharArray(osd_string, text.length() + 1);                          // сохранение печатоемой строки в буфере
  return true;                                                              // показ строки начался (возвращает true)
}

bool osd_printCurrentTime(CRGB color) {                                     // печать текущего времени // TODO: переписать поцедуру для вывода правильного формата "->00:00"
  if (osd_string[0]) return false;                                          // процедура находится на стадии печати строки
#if defined(USE_NTP)                                                        // вывод, только если используется синхронизация времени и если заказан его вывод бегущей строкой
  if (isWifiOffMode) return false;                                          // при отключенном WiFi - сразу на выход
  if (espMode != 1U || !ntpServerAddressResolved || !timeSynched) {         // вывод только в режиме WiFi клиента и только, если имя сервера времени разрезолвлено
    return osd_printText("WiFi OFF", CRGB::Red);
  }
  char stringTime[6];
  sprintf_P(stringTime, PSTR("%u:%02u"), (uint8_t)((thisTime - thisTime % 60U) / 60U), (uint8_t)(thisTime % 60U));
  //return osd_printText(" ->" + String((uint8_t)((thisTime - thisTime % 60U) / 60U)) + ":" + String((uint8_t)(thisTime % 60U))+ " ", color);
  return osd_printText(" " + String(LOCAL_TIMEZONE_NAME) + " " + stringTime + " ", color);
#endif
  return false;                                                             //без интернета возвращаем
}
Стрелочку-префикс вывода времени "->" предлагаю прописывать в константе LOCAL_TIMEZONE_NAME. Мне кажется, что каждый сам решит какой префикс ему лучше подойдет.
 

Kopla

✩✩✩✩✩✩✩
12 Фев 2020
13
3
Простите, я не понял, как без кнопки подключить лампу к сети?
На прошивке kDn.
 

mason

✩✩✩✩✩✩✩
28 Янв 2020
49
1
а что за демо режим что за прошивка ? какая на данный момент актуальная? я то качал архив с сайта гайвера
новый прикол, у меня яркость сама автоматом поднимается до максимума, понижаю а оно поднимаются...
 
Изменено:

Fortunate

★✩✩✩✩✩✩
10 Янв 2020
41
28
Москва
@mason, кнопка зажата, поэтому яркость растет до максимума. При отсутствии кнопки - указать это в прошивке.
 
  • Лойс +1
Реакции: mason

Igok

✩✩✩✩✩✩✩
14 Фев 2020
8
2
@Koteyka, поставил ваше последнее приложение, там в избранном есть регулятор яркости, на который лампа никак не реагирует, прошивка от
kDn , это нормально? и можно ли добавить кнопку Демо режима?
 

kDn

★★★★★✩✩
18 Ноя 2019
1,103
437
@Koteyka, поставил ваше последнее приложение, там в избранном есть регулятор яркости, на который лампа никак не реагирует, прошивка от
@kDn , это нормально?
Для демо-режима обычный ползунок яркости становится глобальным, т.е. действует сразу на все эффекты в его пределах. В избранном же заготовка для прошивки Ганнера, насколько я помню. На данный момент не используется.
 
  • Лойс +1
Реакции: Igok

Koteyka 🐱

★★★★★★✩
Команда форума
27 Окт 2019
935
556
54
Днепр, Украина
firelamp.pp.ua
там в избранном есть регулятор яркости, на который лампа никак не реагирует
Он пока не работает. Т.к. приложение делалось под прошивку Gunner47, мы решили сделать смену яркости сразу всех эффектов, при циклическом режиме. Но в прошивке автор еще это не реализовал.
 
  • Лойс +1
Реакции: Igok

Kopla

✩✩✩✩✩✩✩
12 Фев 2020
13
3
Изменено:
  • Лойс +1
Реакции: Palpalych

Palpalych

★★★★★✩✩
24 Дек 2019
766
405
Просьба админу. Были перемещены часть сообщений из этого в треда в другой, который вообще никакого отношения не имеет к теме и практически нечитаемый! Теперь следить за диалогом просто стало не возможно!
Во первых, обсуждалась модификация прошивки, которая базируется на Gunner47, которую вел уважаемый kDn
Во вторых, если Вы радеете за чистоту форума, пожалуйста, следите за шапкой и выносите актуальные посты в нее. Я готов обновлять их по мере доработок и не плодить повторные посты, но мне нужно знать, что этот пост закреплен в шапке, и я его тоже могу быстро найти.
В третьих, если считаете, что часть постов о модификации прошивке - бесполезный треп, то пожалуйста, создайте нам новую ветку, назначте модератором kDn, и дайте в шапке ссылку, чтобы народ мог быстро узнать, что такая доработка ведется.

Спасибо.
 

Wan-Derer

★★★★★✩✩
Команда форума
31 Июл 2018
2,109
409
Москва
wan-derer.ru
@Palpalych, информирую:
- перенёс т.к. обсуждались доработки, которые должны привнести принципиально новый функционал, а это обсуждается в отдельной теме; никто не мешает её читать;
- шапку завёл модератор @mechanic, он же обязался её пополнять;
- @kDn предлагалось завести свою тему, он почему-то не захотел;
- модераторов назначает только Гайвер.
 

kDn

★★★★★✩✩
18 Ноя 2019
1,103
437
@Palpalych, @Wan-Derer,
У меня нет ни времени, ни желания заниматься оформлением сообщений, выбирать темы или нечто подобное (а уж тем более заниматься модерированием пусть даже одной темы). В то же время но одно из моих сообщений тут для меня не представляет никакой ценности. Если нужна отдельная тема, без проблем - скажите куда переместиться и я туда перемещусь.

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

Собственно я буду совершенно не против, чтобы отдельная тема была создана, к примеру, участником @Palpalych и им же модерировалась. Естественно, если у него на то есть желание.

* Сообщение информационное и какого-либо дальнейшего обсуждения с моей стороны данной темы не предполагает. Спасибо за понимание.
 

Palpalych

★★★★★✩✩
24 Дек 2019
766
405
@Wan-Derer, Так получается немного коряво, ну да ладно, и на этом Спасибо. Подумаю над согласием стать модером ветки, если народ захочет, или я, или Алекс... )))

Ранее спрашивали про эффект Огонь, почему такой медленный на 3- матрицах.
Отвечаю: для стандартной матрицы 16*16=256 светодиодов, просчет эффекта, вспомогательных процедур, и вывод на экран занимает 15мс, что эквивалентно 67 кадрам в секунду. Причем время вывода массива пикселей на экран функцией FastLED.Show() составляет 800000 / (24 * 256) = 7,5мс. Соответственно остальное время уходит на подготовку очередного кадра. (Нужно еще проверить, оказывает ли функция FastLED.Clear() на эту задержку и очередное обновление, будем считать, что нет...) Если даже учесть, что только кадр просчитывается за 3,5мс, то время вывода на 3-кратно увеличенной в высоту матрице составит: 3*(7,5+3,5) + 4 = 37мс что эквивалентно 27 кадрам в секунду. Причем скорость (обновляемость) пламени будет (если правильно определил этот параметр) 48/27= 1,8 секунды на 1 цикл. (для сравнения, при классической схеме 16/67 = 0,24 сек)
Что можно сделать в такой ситуации? Думаю, немного поможет оптимизация кода, когда куда больший визуальный прирост скорости даст принцип масштабируемости. Для вертикального - это просчет 2-х соседних пикселей за 1 строку, для горизонтального можно просто клонировать языки пламени. Как вариант, делать прорисовку на основе предыдущего кадра, но для этого придется переписывать кардинально ядро этого эффекта.
 
Изменено:

Koteyka 🐱

★★★★★★✩
Команда форума
27 Окт 2019
935
556
54
Днепр, Украина
firelamp.pp.ua
Что можно сделать в такой ситуации? Думаю, немного поможет оптимизация кода
А если переработать матрицу огня?
Я про это
1581705274806.png
тогда перерасчет будет один раз, а не три
 

Palpalych

★★★★★✩✩
24 Дек 2019
766
405
@kDn, Облегчил тебе работу с перевернутым текстом - сделал установки отзеркаливания матрицы! Та будет проще, логичнее и быстрее )))
C-like:
// --- МАТРИЦА -------------------------
#define MIN_WHITE_COLOR_BRGHT (1U)                          // минимальная яркость EFF_WHITE_COLOR режима, белая лампа (0-100) для исключения нерабочей зоны
#define CURRENT_LIMIT         (2500U)                       // лимит по току в миллиамперах, автоматически управляет яркостью (пожалей свой блок питания!) 0 - выключить лимит

#define WIDTH                 (16U)                         // ширина матрицы
#define HEIGHT                (16U)                         // высота матрицы
#define COLOR_ORDER           (GRB)                         // порядок цветов на ленте. Если цвет отображается некорректно - меняйте. Начать можно с RGB
#define MATRIX_TYPE           (0U)                          // тип матрицы: 0 - зигзаг, 1 - параллельная
#define CONNECTION_ANGLE      (2U)                          // угол подключения: 0 - левый нижний, 1 - левый верхний, 2 - правый верхний, 3 - правый нижний
#define STRIP_DIRECTION       (2U)                          // направление ленты из угла: 0 - вправо, 1 - вверх, 2 - влево, 3 - вниз
#define MIRR_V                (0U)                          // отразить матрицу по вертикали (0 / 1)
#define MIRR_H                (0U)                          // отразить матрицу по горизонтали (0 / 1)
// при неправильной настройке матрицы вы получите предупреждение "Wrong matrix parameters! Set to default"
// шпаргалка по настройке матрицы здесь! https://alexgyver.ru/matrix_guide/

// ************* НАСТРОЙКА МАТРИЦЫ *****
#if (CONNECTION_ANGLE == 0 && STRIP_DIRECTION == 0)
#define _WIDTH WIDTH
#define THIS_X (MIRR_V ? (WIDTH - x - 1) : x)
#define THIS_Y (MIRR_H ? (HEIGHT - y - 1) : y)

#elif (CONNECTION_ANGLE == 0 && STRIP_DIRECTION == 1)
#define _WIDTH HEIGHT
#define THIS_X (MIRR_V ? (HEIGHT - y - 1) : y)
#define THIS_Y (MIRR_H ? (WIDTH - x - 1) : x)

#elif (CONNECTION_ANGLE == 1 && STRIP_DIRECTION == 0)
#define _WIDTH WIDTH
#define THIS_X (MIRR_V ? (WIDTH - x - 1) : x)
#define THIS_Y (MIRR_H ?  x : (WIDTH - x - 1))

#elif (CONNECTION_ANGLE == 1 && STRIP_DIRECTION == 3)
#define _WIDTH HEIGHT
#define THIS_X (MIRR_V ? y : (HEIGHT - y - 1))
#define THIS_Y (MIRR_H ? (WIDTH - x - 1) : x)

#elif (CONNECTION_ANGLE == 2 && STRIP_DIRECTION == 2)
#define _WIDTH WIDTH
#define THIS_X (MIRR_V ?  x : (WIDTH - x - 1))
#define THIS_Y (MIRR_H ? y : (HEIGHT - y - 1))

#elif (CONNECTION_ANGLE == 2 && STRIP_DIRECTION == 3)
#define _WIDTH HEIGHT
#define THIS_X (MIRR_V ? y : (HEIGHT - y - 1))
#define THIS_Y (MIRR_H ?  x : (WIDTH - x - 1))

#elif (CONNECTION_ANGLE == 3 && STRIP_DIRECTION == 2)
#define _WIDTH WIDTH
#define THIS_X (MIRR_V ?  x : (WIDTH - x - 1))
#define THIS_Y (MIRR_H ? (HEIGHT - y - 1) : y)

#elif (CONNECTION_ANGLE == 3 && STRIP_DIRECTION == 1)
#define _WIDTH HEIGHT
#define THIS_X (MIRR_V ? (HEIGHT - y - 1) : y)
#define THIS_Y (MIRR_H ?  x : (WIDTH - x - 1))

#else
#define _WIDTH WIDTH
#define THIS_X x
#define THIS_Y y
#pragma message "Wrong matrix parameters! Set to default"

#endif
Теперь параметры MIRR_V и MIRR_H находятся в настройках матрицы. :)
 

Palpalych

★★★★★✩✩
24 Дек 2019
766
405
@Koteyka, я посмотрел, там все-таки виноват долгий вывод на светодиоды FastLED.show(). Функция просчитывается гораздо быстрее. FastLED.reset() тоже не затормаживает процесс.27 кадров должно быть достаточно для вывода недискретной анимации. Видимо просчет пламени разбивается на несколько этапов с пропуском кадров, либо задержка в регуляторе скорости эффекта.
Как еще вариант - перевести FastLED в режим прерываний.
 
Изменено:

Сотнег

★★★★★★★
15 Янв 2020
4,246
1,466
Изменено:

Palpalych

★★★★★✩✩
24 Дек 2019
766
405
@Сотнег, И я про то же. Если пересчитать на высоких матрицах 2-3 пикселя в высоту за 1, то чисто визуально пламя будет быстрее

Всем: кому интересно. Заметил, что огонь в лампе какой-то неправильный. оновные языки получается слева и справа, если смотреть на центр матрицы. Сдвинул матрицу на 4 столбца, и теперь один из очагов будет по центру ))
C-like:
//these values are substracetd from the generated values to give a shape to the animation
static const uint8_t valueMask[8][16] PROGMEM =
{
  {0  , 0  , 0  , 32 , 32 , 0  , 0  , 0  , 0  , 0  , 0  , 32 , 32 , 0  , 0  , 0  },
  {0  , 0  , 0  , 64 , 64 , 0  , 0  , 0  , 0  , 0  , 0  , 64 , 64 , 0  , 0  , 0  },
  {0  , 0  , 32 , 96 , 96 , 32 , 0  , 0  , 0  , 0  , 32 , 96 , 96 , 32 , 0  , 0  },
  {0  , 32 , 64 , 128, 128, 64 , 32 , 0  , 0  , 32 , 64 , 128, 128, 64 , 32 , 0  },
  {32 , 64 , 96 , 160, 160, 96 , 64 , 32 , 32 , 64 , 96 , 160, 160, 96 , 64 , 32 },
  {64 , 96 , 128, 192, 192, 128, 96 , 64 , 64 , 96 , 128, 192, 192, 128, 96 , 64 },
  {96 , 128, 160, 255, 255, 160, 128, 96 , 96 , 128, 160, 255, 255, 160, 128, 96 },
  {128, 160, 192, 255, 255, 192, 160, 128, 128, 160, 192, 255, 255, 192, 160, 128}
};

//these are the hues for the fire,
//should be between 0 (red) to about 25 (yellow)
static const uint8_t hueMask[8][16] PROGMEM =
{
  {25, 22, 11, 1 , 1 , 11, 19, 25, 25, 22, 11, 1 , 1 , 11, 19, 25 },
  {25, 19, 8 , 1 , 1 , 8 , 13, 19, 25, 19, 8 , 1 , 1 , 8 , 13, 19 },
  {19, 16, 8 , 1 , 1 , 8 , 13, 16, 19, 16, 8 , 1 , 1 , 8 , 13, 16 },
  {13, 13, 5 , 1 , 1 , 5 , 11, 13, 13, 13, 5 , 1 , 1 , 5 , 11, 13 },
  {11, 11, 5 , 1 , 1 , 5 , 11, 11, 11, 11, 5 , 1 , 1 , 5 , 11, 11 },
  {8 , 5 , 1 , 0 , 0 , 1 , 5 , 8 , 8 , 5 , 1 , 0 , 0 , 1 , 5 , 8  },
  {5 , 1 , 0 , 0 , 0 , 0 , 1 , 5 , 5 , 1 , 0 , 0 , 0 , 0 , 1 , 5  },
  {1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1  }
};
Ловите, как можно регулировать скорость пламени. (-- удалено за ненадобностью --)
 
Изменено:

Wan-Derer

★★★★★✩✩
Команда форума
31 Июл 2018
2,109
409
Москва
wan-derer.ru
@kDn, форк есть форк. Со временем он неизбежно будет отдаляться от оригинала и у него будут специфичные проблемы. Я могу создать отдельную тему, но перенос туда сообщений займёт некоторое время т.к. его и у меня немного
 

Сотнег

★★★★★★★
15 Янв 2020
4,246
1,466
Всем: кому интересно. Заметил, что огонь в лампе какой-то неправильный. оновные языки получается слева и справа, если смотреть на центр матрицы. Сдвинул матрицу на 4 столбца, и теперь один из очагов будет по центру ))
Где сдвинул? В модификации прошивки?
Пламенем я тут параллельно занимаюсь: https://community.alexgyver.ru/threads/wifi-lampa-budilnik-obsuzhdenie-proekta.1411/post-26769
 

Palpalych

★★★★★✩✩
24 Дек 2019
766
405
@Сотнег, Ага, почти тоже самое смотрю. )))
Касательно очага по центру матрицы - просто переписал массивы hueMask и valueMask со смещением на 4 столбца. Естественно максимум теперь попадает на середину матрицы.

По поводу скорости, посмотрел - пламя на матрицах 48х16 выводится без задержек - тему закрываем. (я почищу предыдущие посты на эту тему)

Касательно динамического очага - тоже задался такой идеей, похожая реализация ))) но я для начала решил посмотреть, что если двигать только маску оттенка? По идее это даст колебание языков пламени. В твоей реализации двигается (размывается) вертикальное перемещение. Попозже выложу код моей реализации.
 

Сотнег

★★★★★★★
15 Янв 2020
4,246
1,466
В твоей реализации двигается (размывается) вертикальное перемещение.
Те, кто попробовал мою реализацию, вообще разницы не увидели (двое).
Я так и задумывал - двигать очаг незаметно и небыстро.