Обсуждение NodeMCU custom builds - онлайн конструктор прошивок

Victor

Administrator
Команда форума
http://frightanic.com/nodemcu-custom-build/

Отмечаешь нужные модули, указываешь свой адрес и через некоторое время приходит уведомление, что сборка прошивки началась и чуть позже приходит еще одно письмо со ссылкой на скачивание двух прошивок: float и integer. Максимальное время сборки зависит от очереди, но обещают, что не более 30 минут. Мне пришло через 2 минуты.
 

pvvx

Активный участник сообщества
А с чем связана такая сложность?
NodeMCU прекрасно собирается в один "флакон" со всеми драйверами и зачем разные опции? Ради рекламы?
Очень просто в модуль вписывается интерфейс конфигурации, пусть на подгружаемом lua с внутреннего диска для инициализации необходимых библиотек в одном модуле для текущего сеанса загрузки, чтобы уменьшить использование памяти и т.д..
А приведенная ссылка показывает, что разработчики проявили импотенцию :)
 

windalser

New member
http://frightanic.com/nodemcu-custom-build/

Отмечаешь нужные модули, указываешь свой адрес и через некоторое время приходит уведомление, что сборка прошивки началась и чуть позже приходит еще одно письмо со ссылкой на скачивание двух прошивок: float и integer. Максимальное время сборки зависит от очереди, но обещают, что не более 30 минут. Мне пришло через 2 минуты.
Интересно, а можно ли отключать ненужные модули и компилировать в UDK самостоятельно?
 

Tomahawk

New member
Да, сайт удобный, действительно компилирует обрезанную версию, в которой появляется больше свободного Heap, если половину модулей вы не используете. *Единственное, мне пришлось выбрать опцию uart, иначе без неё файлы загружаться через Upload в ESPlorer отказывались.
pvvx, разработчики железа обычно на lua не пишут, им мало того, что нужно освоить новый для себя язык, так ещё со сборками развлекаться ) Нет уж спасибо :)
 
Для тех кто может скомпилировать СИ проект.
NODEMCU легко собирается самостоятельно "nodemcu-firmware\app\include\user_modules.h"
комментируем не нужные:
//#define LUA_USE_MODULES_I2C
//#define LUA_USE_MODULES_SPI
[HASHTAG]#define[/HASHTAG] LUA_USE_MODULES_TMR
и что нужно еще, это изменение скорости по умолчанию UART 921600 в nodemcu-firmware\app\user\user_main.c
вот так: uart_init(BIT_RATE_921600, BIT_RATE_921600);

Согласен с Pvvx
Для тех кто не может скомпилировать:
для конфигурации сборки могли бы сделать файл init.ini или init.txt.
на старте как init.lua.
 
Последнее редактирование:

J.D.Jou

New member
Вот про один флакон я не соглашусь, к примеру мне нужен модуль сурово под один узко заточенный функционал, например UART TCP мост предназначенный как допустим модуль связи для какого то беспроводного устройства. То есть мне нужна настроенная точка доступа с функцией UART. И при том большего от этого модуля не требуется. Вот и момент, зачем заливать параллельно выделенному функционалу бесполезную кучу мусора которая никогда не пригодится?
То есть логичнее все таки использовать те модули которые требуются для выполнения конкретной задуманной функции.
 

mail_robot

New member
кстати, если кто не знал
если тыкнуть галку dev, то проша компилится на 1.4.0 SDK, если не тыкнуть, то 0.9.х
робит ощутимо быстрее, но есть нюансы
 
  • Like
Реакции: TRO

edgi

Member
Извиняюсь за Оффтоп... Интересно на чем этот конструктор сделан? знаю что через docker копилится на сервере. Похоже мордой является фреймворк bootstrap примерно такой же конструктор http://www.wifi-iot.ru/
 
Последнее редактирование:

TRO

Member
кстати, если кто не знал
если тыкнуть галку dev, то проша компилится на 1.4.0 SDK, если не тыкнуть, то 0.9.х
робит ощутимо быстрее, но есть нюансы
Спасибо.
Походу с ньюансами прийдется разбиратся, проэкт работающий без галки dev некоректно пашет с галкой (Выдает по веб только часть страницы, заголовок).
 

mail_robot

New member
там от скорости работы с уартом как то зависит (как я пока заметил)
причем эффекты разные при работе с удп и тсп. Зато коннект с андроид устройствами перестал глюкать
 

energet666

New member
Насчет выдачи только части страницы- в новых версиях после отпрвки данных соединение сразу закрывается, поэтому приходится сначала ложить всё в один массив и потом его отправлять, хотя раньше можно было несколько раз вызвать c:send(...) (с- сокет)
 
  • Like
Реакции: TRO

TRO

Member
energet666, Спасибо, я сразу так и подумал.
Когда пытаюсь делать одним массивом, то памяти нехватает.
Надо будет подумать как теперь это обходить.
 

energet666

New member
Я ошибся немного- сокет не закрывается, а просто занят передачей в тот момент когда ему приходит следующая команда send, т.е. когда в коде вподряд вызывается несколько раз send. Поэтому следующую передачу нужно начинать только после события socket: on "sent". В последней версии документации это подробно описано с примером в описании функции send.
 

hash

New member
energet666, а можно ссылочку на доку, где написано про [inline]socket: on "sent"[/inline]
 

hash

New member
Спасибо!!! Нах они такое накрутили, неудобно теперь... Кстати в коментах ниже написано, что есть проблемы с таким решением :(.
Хотя написано:
Backward compatibility: previous "send-sent-send more" model is
still usable without any extra memory cost.
Надеюсь вариант ниже по прежнему будет работать.
Код:
file.open("body.htm","r")
conn:send(file.read())
file.close()
За-то порадовало:
Bonus: no more 1460 chars string limit - strings longer then 1460 will
be chunked to queue.
 
Последнее редактирование:

energet666

New member
Когда выполняю такой код:
Код:
conn:send(file.read())
seek_ptr = file.seek()
для файлов больше 1кб, в seek_ptr оказывается 1024, даже на самой последней dev прошивке. Т.е. этот способ актуален только для небольших файлов, иначе все равно придется делать несколько send'ов и обрабатывать коллбэк on sent
Я пользуюсь такой функцией:
Код:
function CfgSendFile(conn, file_name)
    local seek_ptr = 0 --начальное положение "курсора" в файле
    conn:on("sent",
        function(conn)
            file.open(file_name)
            print("Open file "..file_name)
            if (seek_ptr == file.seek("end")) then-- проверяем не совпадает ли текущее положение "курсора" с концом файла
                conn:close()
            else
                file.seek("set", seek_ptr)-- устанавливаем "курсор"
                conn:send(file.read())
                seek_ptr = file.seek()-- обновляем положение "курсора"(после каждого считывания файла сдвигается на 1024)
                print("Send part of file "..file_name.." Seek is "..seek_ptr)
            end
            file.close()
            print("Close file "..file_name)
        end
    )
end
После вызова этой функции необходимо отправить что нибудь, например заголовок:
Код:
conn:send("HTTP/1.1 200\r\nServer: NodeLuau\r\nContent-Type: text/html\r\nConnection: close\r\n\r\n")
После этого файл отправится кусочками по 1024 байта.
 
Последнее редактирование:
  • Like
Реакции: hash

Cadil

New member
NodeMCU custom builds

Отмечаешь нужные модули, указываешь свой адрес и через некоторое время приходит уведомление, что сборка прошивки началась и чуть позже приходит еще одно письмо со ссылкой на скачивание двух прошивок: float и integer. Максимальное время сборки зависит от очереди, но обещают, что не более 30 минут. Мне пришло через 2 минуты.
Понадобилась сборка с модулем adc и поддержкой SLL. Воспользовался указанной ссылкой. Установленные прошивки не определяются (перепробовал несколько вариантов сборок):
> Soft restart by user command
лn|eоretartи)
stdin:1: '=' expected near 'П'
>
Communication with MCU...
Got answer! AutoDetect firmware...
Can't autodetect firmware, because proper answer not received.
>
КАК решить эту проблему? Спасибо!
 

SeekingRK

New member
У меня тоже прошивки собранные генератором не работают. Нашел в сети кем то cгенерированные, там все нормально. Думал уже что то с модулем, заливаю прошивку с Wifi-IoT Firmware Builder, все работает.
 
Последнее редактирование:
Сверху Снизу