Расширение для vs code, обеспечивающее работу с nodemcu lua

Тема в разделе "ESP8266, ESP32", создана пользователем serg3295, 2 апр 2023.

Метки:
  1. serg3295

    serg3295 Гуру

    В приложении предварительная версия расширения для тестирования.
    Добавлена возможность увеличить скорость выгрузки файла на ESP. Для этого необходимо установить вновь введённый параметер nodemcu-tools.uploadBaudrate - скорость в bps с которой будут выгружаться файлы по последовательному порту.

    Эта опция применима только для ESP8266 и для ESP32 с прошивкой на базе esp-idf3, esp-idf4. ESP32 с прошивкой на базе esp-idf5, содержащей модуль `console`, не поддерживает динамическое изменение скорости на последовательном порту.

    Более того, для ESP32хх со встроенным USB-serial-JTAG, или USB-CDC любая скорость передачи данных, установленная хостом (=вашим компьютером), игнорируется. Периферийное устройство всегда будет отправлять и получать данные на максимальной скорости, разрешенной USB-подключением.

    Расширение будет пытаться программно установить повышенную скорость передачи только для файлов размером более 5Кб. Так как для файлов меньшего размера накладные расходы на переключение скорости могут нивелировать выигрыш от увеличения скорости передачи.

    > ⚠️ Примечание! Параметр uploadBaudrate будет общим для всех подключенных ESP.
     

    Вложения:

    ИгорьК нравится это.
  2. ИгорьК

    ИгорьК Гуру

    upload_2025-2-3_8-47-8.png

    По дефолту там стоит ноль, и его лучше не трогать?

    Кстати, было бы здорово на МК иметь возможность не только сворачивать, но и удалять папки :)
     
  3. serg3295

    serg3295 Гуру

    Значение по умолчанию - 0 эквивалентно отсутствию параметра и расширение не будет пытаться изменить скорость выгрузки файлов.
    Можно просто в файле ..../Code/User/settings.json написать "nodemcu-tools.uploadBaudrate": 921600, и дальше расширение само разберётся.
    Если вдруг будут какие-либо проблемы с выгрузкой на такой скорости, тогда уже переносить установку параметра из /User/settings.json в /Workspace/settings.json.

    В приложении версия расширения с удалением папок на устройстве.

    P.S.
    Строго говоря, в файловой системе spiffs отсутствует понятие "папка". Есть только имя файла, с длиной не более 32 байта. foldername/filename.ext - это имя файла, а не файловая структура. То, что мы видим в дереве explorera это просто имитация.
     

    Вложения:

    Последнее редактирование: 3 фев 2025
    ИгорьК нравится это.
  4. ИгорьК

    ИгорьК Гуру

    Оно работает!

    И оно работает!

    Так оно же работает, и работает отлично :)
     
    serg3295 нравится это.
  5. serg3295

    serg3295 Гуру

    Выпущена новая версия расширения

    Относительно версии, выложенной для тестирования в предыдущих сообщениях, немного изменены значения параметров по умолчанию для uploadBaudrate и connectionDelay. Изменений в функциональности нет.

    Краткое описание новых возможностей приведено в changelog'e. Подробное в wiki на github'e.
     
    ИгорьК нравится это.
  6. ИгорьК

    ИгорьК Гуру

    "Buttons for the 'sendLine' and 'sendBlock' commands have been added to Terminal container for convenience and quick accsess."

    Класс! Но откуда эти кнопки берут данные для отправки?

    ПыСы. Нащупал :) Из файла, где стоит курсор или выделен кусок кода, соответственно.
    Хорошая функция. Очень полезная!
     
    Последнее редактирование: 3 сен 2025
    serg3295 нравится это.
  7. serg3295

    serg3295 Гуру

    Функционал отправки строки и блока кода был в расширении реализован очень давно. Его можно было вызывать и из контекстного меню и с помощью иконки в правом верхнем углу открытого таба с файлом, и назначать на горячие клавиши. Это всё осталось.
    Просто мне надоело двигать мышь вверх и попадать на маленькую иконку. Вот и добавил большие и жирные кнопки поближе под руку.
    Кстати, эти кнопки взаимоисключающие. Если выбран блок, то кнопка 'send line' не сработает. А если не выделен блок, то его и не послать. Внезапно.
    Выделенный фрагмент кода, или строка, на которой находится курсор, запоминаются. Поэтому можно давить на кнопку и код будет посылаться повторно. Отправлять код можно только из файла с расширением .lua

    В свежевыпущенной версии 5.3.1 просто подвинуты кнопки повыше. Для красоты. И для этой... как её ... консистентности.
     
    ИгорьК нравится это.
  8. ИгорьК

    ИгорьК Гуру

    По широко известному мнению японских инженеров, русские читают инструкции только после того, когда все сломалось. До вчерашнего дня главным вспомогательным инструментом у меня был ZeroBrain Studio, но, ясный пень, там только общие вопросы кода, нет ничего особенного от NodeMCU. :)

    ... и глаза мои раскрылись :)

    Это главное, это главное :)
    --------------------------------

    А еще я узнал о клавише "Alt". :)
     
    serg3295 нравится это.
  9. serg3295

    serg3295 Гуру

    Новая версия с прошивкой флэш на борту

    В приложении версия расширения в которой добавлена функция прошивки и стирания ESP прямо из программы. Эта версия пока не выложена на github'e, только здесь. Для тестирования и обратной связи.

    Подробное описание я напишу попозже и выложу на wiki. Пока вкратце.
    - версия esptool.py должна быть 4.9.0 и выше. Я проверял на версии 5.0. Тоже всё работает, но выдаются warning'и про deprecated option. Не обращать внимания. Или пользуйтесь 4.9, там warning'ов нет.
    - бинарные файлы прошивок ESP должны находится в каталоге где-нибудь в этом workspace.
    - для esp32xx в каталог firmwareDir, должны быть скопированы следующие файлы:
    файл <= взято из
    - nodemcu.bin <= build/nodemcu.bin
    - bootloader.bin <= build/bootloader/bootloader.bin
    - partition-table.bin <= build/partition_table/partition-table.bin
    - flasher_args.json <= build/flasher_args.json

    - для esp8266 в каталог из свойства firmwareDir, должны быть скопированы следующие файлы:
    - 0x00000.bin
    - 0x10000.bin

    В файл workspace -> ./vscode/settings.json надо добавить параметр flash. Это объект со следующими свойствами:
    "esptool": командная строка для вызова esptool.py
    "firmwareDir": каталог в workspace, где лежат двоичные файлы прошивки
    "chipModel": модель ESP (обязательный параметр)
    "baud": скорость 115200 для esp8266, 460800 для esp32xx
    "target": это обязательный параметр только для esp8266. Разные размеры флэша.

    значения по умолчанию:
    - esptool: "esptool.py"
    - firmwareDir: каталог 'bin' в корне workspase

    Код (Javascript):
    // пример для esp8266
    "nodemcu-tools.flash": {
      "esptool": "python.exe -m esptool", // один вариант для вызова esptool.py
      "firmwareDir": "bin", // это значение по умолчанию, его можно не указывать
      "chipModel": "esp8266",
      "baud": "115200",
      "target": "flash4m" // это обязательный параметр только для esp8266
    }

    // пример для esp32xx и с каталогом firmwareDir:'bin' по умолчанию
    "nodemcu-tools.flash": {
      "esptool": "/home/serg/.espressif/python_env/idf5.3_py3.12_env/bin/esptool.py", // другой вариант для вызова esptool.py
      "chipModel": "esp32s3",
      "baud": "460800"
    }

    Для вызова команд Flash device и Erase flash можно воспользоваться иконками 'резинка'(ну, или кирпич. Как пойдёт...) и 'молния' в левом нижнем углу на Status Bar. Или Ctrl+Shift+P -> NodeMCU: Flash device или Erase flash
     

    Вложения:

    Последнее редактирование: 7 сен 2025
    ИгорьК нравится это.
  10. ИгорьК

    ИгорьК Гуру

    upload_2025-9-8_10-1-21.png
     
    serg3295 нравится это.
  11. ИгорьК

    ИгорьК Гуру

    1. Работает.
    2. Для Windows в конфигурации надо указать "esptool.exe" вместо "esptool.py".

    -----------------------------------

    Сергей, в чем задумка этой опции? Она, конечно, не лишняя (Дайте мне таблетку от жадности, да побольше, побольше), но вряд ли (в целом) упрощает жизнь.

    ------------------------------------

    Как идея. Можно ли сделать загрузку файла не в корень модуля, а в конкретную папку. Сейчас, если произошли изменения одного файла, приходится удалять папку и грузить ее заново.
    Вот пример:
    upload_2025-9-8_13-25-35.png
     
  12. serg3295

    serg3295 Гуру

    Да в этом питоне вариантов хоть отбавляй. Я, например, пишу esptool и всё. А можно python -m esptool, а можно...

    Если про "опцию" - это в целом про функцию прошивки и стирания флэш, то я это делал исходя из своего удобства.
    В линуксе нет никаких графических прошивальщиков. Только хардкор. Только esptool и make. У меня для разных типов esp32 куча файлов esp32-что-то-там.sh и erase-разные.sh. Захотелось удобства и простого нажатия кнопки.
    Можно было бы просто положить рядом с файлами firmware исполняемый файл сценария. Так тоже будет нормально.
    Бонусом идёт автоматическая подстановка параметров из генерируемого при сборке файла flasher_args.json, так как для разных типов esp32 используется не только разные bootloader offset, но также разные --flash_freq.
    Более того, читая файлы Kconfig, встретил строки TODO, где разработчики espressif собираются менять эти параметры. Для C5, в частности. То есть, при прошивке из расширения я гарантированно получаю последнюю версию мысли разработчиков на тему параметров прошивки конкретного чипа. И уже не слежу за этим.

    Посмотрю что тут можно сделать. Если получится, то сделаю.

    UPD
    Посмотрел. Всё украдено до нас. Делать ничего не надо.:cool:
    Процитирую себя любимого из этой темы.
    То есть, сохранив файл в виде folder/filename.ext мы добьёмся желаемого результата.
    Пользоваться командой save as.
     
    Последнее редактирование: 8 сен 2025
  13. serg3295

    serg3295 Гуру

    Вопрос не по теме.
    На вашем скриншоте файловой структуры, слева, на Activity bar, есть иконки расширений в виде скрюченной буквы W и кирпича с рёбрами. Это кто?
     
  14. serg3295

    serg3295 Гуру

    Подумал я и добавил команду Upload File as 'folder/file.ext'
    Пусть будет.
     

    Вложения:

    ИгорьК нравится это.
  15. ИгорьК

    ИгорьК Гуру

    Windsurf, the most intelligent code assistant.

    Container Tools, Microsoft.

    ------------------------------------------------------------
    Это золото! Тысячу раз спасибо! Ибо:

    Это не для винды.
     
    serg3295 нравится это.
  16. serg3295

    serg3295 Гуру

    О! А я всё lazydock и docker extension использую. Спасибо.
    Проверил на win10. Всё работает.
    Для вызова команды "Выгрузить на ESP как..." (здесь обратить внимание на наличие точек в конце строки меню) я удерживал Shift, а не ALT. Главное, должно появиться меню для выбора имени файла в котором добавляем folder/ к имени выгружаемого файла file.ext
    При сохранении этот файл записывается в "папку" на esp.
     
    ИгорьК нравится это.
  17. ИгорьК

    ИгорьК Гуру

    Воистину так. Но меню удобнее :)
     
  18. ИгорьК

    ИгорьК Гуру

    Щас соберусь с силами, и выложу новую версию часов. Там погоды в отдельной папке. Кто-то переводит их на другой язык... Каждый перевод требует визуальной проверки... В общем, единичная выгрузка из папки очень пользительная.

    ================================

    Вот прям хотел уже выложить, а тут напасть. Устройство на Debian13 по инструкции перестало быть видным из-за пределов сети при соединении сетей. А было видно. Чет надо с этим делать, а что - ума не приложу.
     
    serg3295 нравится это.
  19. serg3295

    serg3295 Гуру

    Меню удобнее. Поэтому и добавил.

    Что всё-таки с ALT? Работает ли ALT для вызова альтернативного меню, или только Shift? У меня только shift работает. Мне менять описание в readme?
     
  20. ИгорьК

    ИгорьК Гуру

    У меня и шифт и альт работает.
     
    serg3295 нравится это.