Скрыть объявление
На нашем форуме недоступен просмотр изображений для неавторизованных пользователей. Если Вы уже зарегистрированы на нашем форуме, то можете войти. Если у Вас еще нет аккаунта, мы будем рады, если Вы к нам присоединитесь. Зарегистрироваться Вы можете здесь.

ESP Sky – Онлайн редактор для lua скриптов

Тема в разделе "NodeMCU", создана пользователем Shade, 4 ноя 2016.

?

Стали бы пользоваться

Голосование закрыто 13 янв 2017.
  1. Да

    5 голосов
    100,0%
  2. Нет

    0 голосов
    0,0%
  1. Shade

    Shade Новичок

    Сообщения:
    30
    Симпатии:
    3
    ESP Sky – Online IDE for ESP8266

    Возможности:
    • Облачный редактор Lua скриптов
    • Мгновенная загрузка скриптов из облака в устройство
    • Мгновенная передача результата выполнения обратно в редактор
    • Отложенная загрузка и обновление криптов, при включении устройства.
    • Автозапуск скриптов, управляемый через облако. Вы больше не сломаете init.lua
    • Шифрование соединения с помощью AES-128
    • Примеры кода
    • Простая установка и подключение, всё работает на основе официальной прошивки NodeMCU.



    Мой доклад на митапе Mail.ru:





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

    Старый коммент для истории:
    Всем привет.
    Пробую работать с esp-12, сначала с ардуино ide, потом перешёл на nodemcu и луа.

    самым большим неудобством оказалась доставка новых скриптов на есп (после дней и ночей разбирательств с платформой конечно же :)

    Я хочу сделать онлайн редактор для скриптов. Чтобы можно было файлы отредактировать файлы онлайн, нажать Save & Run, и они сразу бы через интернет попали на 1 или несколько устройств.
    А если что-то пошло не так, то не пришлось бы подключаться по uart и исправлять вручную.

    Что скажете, прикольная тема или уже есть похожие готовые решения? Я как-то схожу не нашёл ничего стоящего.
     
    Последнее редактирование: 18 апр 2017
    Jn007 нравится это.
  2. tretyakov_sa

    tretyakov_sa Moderator Команда форума

    Сообщения:
    970
    Симпатии:
    150
  3. Victor

    Victor Administrator Команда форума

    Сообщения:
    2.211
    Симпатии:
    386
    а что в ESPlorer показалось неудобным?
     
  4. Shade

    Shade Новичок

    Сообщения:
    30
    Симпатии:
    3
    Да, прикольно, спасибо.
    Но эта штука точно не для сценариев, где есп большую часть времени спит и просыпается совсем на чуть чуть.
     
  5. Shade

    Shade Новичок

    Сообщения:
    30
    Симпатии:
    3
    Если вкратце то :)
    [​IMG]

    Если серьёзно – вай-фай устройство должно взаимодействовать через интернет, а не провода. Сам подход не удобный и интерфейс есплорера тут думаю не сильно поможет.
    Даже для двух устройств уже неудобно переключаться, если их будет 10 то перевед медвед.

    А для экспериментов, полезная штука конечно же.
     
  6. Shade

    Shade Новичок

    Сообщения:
    30
    Симпатии:
    3
    Всем привет. Я все же решил запилить IDE.

    Спешу с вами поделиться: http://espsky.com


    [​IMG]



    [​IMG]

    Как этим пользоваться?
    1. Нужно пойти на NodeMCU custom builds и сделать новый билд
    нужны модули: cjson, crypto, encoder, file, http, mqtt, net, node, websocket, wifi

    2. Залить получившийся билд на ESP8266
    3. Через любой любимый инструмент Загрузить на ESP два файла:
    http://espsky.com/resources/setup/init.txt как init.lua
    http://espsky.com/resources/setup/uplink2.txt как uplink2.lua

    4. После рестарта модуля в консоли можно увидеть простецкий визард, который предложит ввести имя WIFI точки и пароль.
    После этого устройство само себе сгенерит ключ доступа и покажет, а вам только останется этот ключ доступа зарегистрировать на espsky.com

    либо можно вручную выполнить код:
    settings = {}
    settings.data = {}
    settings.data.wifiName = "wifiName"
    settings.data.wifiPassword = "wifiPass"
    settings.data.deviceToken = nil
    jsonString = cjson.encode(settings.data)
    file.open("config.json", "w")
    file.write(jsonString)
    file.close()
    node.restart()

    Если все прошло успешно, то устройство напишет:
    [​IMG]
     
    Victor нравится это.
  7. Shade

    Shade Новичок

    Сообщения:
    30
    Симпатии:
    3
    Пятничное обновление:
    1. Автозапуск файлов из облака – не нужно больше трогать init.lua

    2. Немного украшательств интерфейса

    3. Быстрое подключение к IDE в две команды.

    [​IMG]
    [​IMG]
    [​IMG]
     
  8. Shade

    Shade Новичок

    Сообщения:
    30
    Симпатии:
    3
    Обновление
    1. Быстрое подключение стало еще быстрее (см. видео!)
    2. Примеры кода для быстрого старта
    3. Улучшения интерфейса
    4. Демо видео

    [​IMG]



     
  9. Shade

    Shade Новичок

    Сообщения:
    30
    Симпатии:
    3
    Заработало обновление спящих устройств.
    Если ваша ESPшка собирает данные с сенсоров, а потом спит большую часть времени (как у меня), то телепортировать на неё новую логику не так просто.
    Теперь можно спокойно писать код, а ESPSky загрузит его на устройство сразу, как только оно проснется.

    [​IMG]

    Можно выбирать:
    • просто запустить старый файл
    • обновить и запустить файл
    • просто обновить, но не запускать (например можно загрузить Json файл)
    [​IMG]

    Очень интересно услышать от вас какую-нибудь обратную связь.

     
  10. khseal

    khseal Новичок

    Сообщения:
    10
    Симпатии:
    1
    Попробовал, но что-то у меня не заработало. То ли я криворук. Выполнил все скрипты. Везде написало ОК и done. А в итоге веб панель устройство не видит. Посмотрю видео))
    Подозреваю у меня просто не хватает каких то модулей в прошивке.
    Хорошо бы еще локальную версию такой штуки. Чтобы можно было поставить на свой сервер, без mysql. А с использованием какой нибудь sqllite. А то нет увеенности что этот облачный сервис будет завтра работать.
    UPD
    После добавления модулей все заработало.
    Как я понимаю список файлов с esp не получает веб морда?
    Результат скрипты в вебморду тоже не отправляется?
    В принципе, все хорошо, но оперативную память эта штука подъедает, но мне нравится что с моим веб сервером на esp эта штука не конфликтует и работает нормально.
    Буду тестировать надеюсь и веб серверу и этой штуке хватит оперативной памяти...
    Хотя конфликт все же есть, поэтому и не показывает в консоли выполнение скриптов.
    Конфликт решил. Но не понял как железка с помощью вашего скрипта подключается к моему вайфаю.
    Так же не хватает кнопки компиляции скрипта.
     
    Последнее редактирование: 25 ноя 2016
  11. Shade

    Shade Новичок

    Сообщения:
    30
    Симпатии:
    3
    Спасибо за комменты, уж было подумал что совсем никому не интересно :)

    Пока нет, короткосрочный план – наладить передачу на ESP, а потом уже, когда все будет отлично работать, можно пробовать забирать файлы с ESP.
    Идеальный вариант, на мой взгляд, когда файлы всегда будут приходить из облака и их не нужно будет скачивать обратно.

    Если окажется востребовано и разработчики подтянутся, то, думаю, это быстро произойдет.

    Должны отправляться. Перед каждым запуском файла вывод с консоли перенаправляется в EspSky, а после выполнения файла переключается обратно на uart.
    Возможно, включать перенаправление в интернет нужно сразу при подключении и тогда будет стабильнее работать. Несколько активных потоков могут сейчас всё ломать.


    Она только ждет, когда появится IP адрес от wifi.sta.getip() и как только он появляется – подключается к MQTT.
    Думаю, ваша ESP просто помнит последние настройки wifi и подключается автоматом.

    Да, как только некая стабильность станет нормой, можно будет реализовать и компиляцию на сервере и проделать кучу оптимизаций.
    Как быстрое решение, можно попробовать компилировать скрипты сразу после загрузки и повыбрасывать лишнее из ESPSky.lua
     
  12. khseal

    khseal Новичок

    Сообщения:
    10
    Симпатии:
    1
    Это у меня был конфликт поэтому и не отправлялось.
    Понятно, просто раньше вроде не запоминала.
    Надо будет покопаться.При первом запуске все работало с моими говноскриптами. Пока эксперементировал, работать перстало в связи с нехваткой памяти. Хотя памяти сколько было, столько и осталось. Иногда эти ESP ведут себя крайне странно. Хотя за ардуинами такое тоже было замечено.
    Так то вещь интересная, но объемы оперативной памяти особо разгуляться не позволяют. Постоянно приходится что-то кроить.
     
  13. Shade

    Shade Новичок

    Сообщения:
    30
    Симпатии:
    3
    А вы на чем запускаете?
    Я сейчас проверил у себя на ESP12F:
    – в файловой системе места совсем вагон, куча тестовых скриптов занимают 43кб из 3.3мб
    – heap при старте 31кб, после старта EspSky.lua – 29.3кб

    т.е. я бы сказал "почти ничего не занимает", хотя в непредсказуемую работу поверю легко :)
     
  14. khseal

    khseal Новичок

    Сообщения:
    10
    Симпатии:
    1
    Сколько занимаем в файловой системе пофиг. У меня изначально свободно 45360 после запуска EspSky.lua свободно
    32120.
    Я бы не сказал что это слишком мало =)
     
  15. Andrey12

    Andrey12 Новичок

    Сообщения:
    2
    Симпатии:
    0
    Заметил если device Token генерируется слишком длинный, его нельзя создать.
    Кнопка "Autorun", что должно делать? Я поставил, но при перезагрузке файл не запускается...
     
  16. Shade

    Shade Новичок

    Сообщения:
    30
    Симпатии:
    3
    С deviceToken разберусь, мне казалось, что этой проблемы больше нет.

    Autorun - запускает файл при подключении ESP к интернету.
    Autodownload - Загружает последнюю версию файла из IDE перед запуском.
    Чтобы это работало, нужно в init.lua добавить строчку с автоподключением к EspSky:
    Посмотрите видео:
     
  17. khseal

    khseal Новичок

    Сообщения:
    10
    Симпатии:
    1
    Хорошо бы еще добавить функцию переименования файла...
    Плюс все таки может лучше сделать автозапуск скриптов локально, без подключения к интернету.
     
  18. Shade

    Shade Новичок

    Сообщения:
    30
    Симпатии:
    3
    ок

    Как мне кажется, идеологически EspSky не должна решать эту задачу по двум причинам:
    1. Это слишком тонкий момент. Ведь у разных людей в init.lua может быть все что угодно: старт AP точки, сбор показаний сенсоров в течение недели и только потом отправка, и т.п.
    2. По задумке устройство должно быть максимально пассивным в плане запуска, в то время как EspSky решает, нужно ли перед запуском основной логики обновить какие-то файлы и в каком порядке всё запускать. Сейчас интерфейс есть не для всего, но в будущем он появится.


    Мой рецепт для автозапуска – иметь следующий init.lua
    При старте он пытается выполнить два файла onStartup.lua – прямо при запуске, onConnect.lua – когда появился IP.
    Если файлов нет, то ничего страшного не происходит.

    Вам остается только создать один или сразу два таких файла и менять их содержимое без риска необходимости перепрошивки устройства в случае ошибок в коде.

    Код (Text):
    1.  
    2. pcall(function() dofile("onStartup.lua") end)
    3.  
    4. local autorunTimer = tmr.create()
    5.  
    6. autorunTimer:register(
    7.     1000,
    8.     tmr.ALARM_AUTO,
    9.     function (t)
    10.         if not (wifi.sta.getip()) then
    11.             return;
    12.         end
    13.         autorunTimer:unregister()
    14.         pcall(function() dofile("onConnect.lua") end)
    15.     end)
    16.  
    17. autorunTimer:start()
    18.  
    19. pcall(function() require("ESPSky").connect("46.4.26.233", 1883, "YourDeviceKey") end)
     
    Последнее редактирование: 28 ноя 2016
  19. khseal

    khseal Новичок

    Сообщения:
    10
    Симпатии:
    1
    Хорошо, может так и лучше.
    Хорошо бы еще прикрутить заливку скриптов с компьютера. Чтобы тупо их не копипастить если они уже написаны локально.
    Надо еще как-то файлы привязывать к железкам, а то если кучу файлов закинуть, не понятно, какие, где файлы. Может для каждой железки сделать свои файлы, либо список железок к файлу прикрепить в которые он загружен...
    Есть еще фишка, если оперативной памяти мало, он не может загрузить большие файлы с сервера...

    Я перебрал свой веб сервер. Вроде памяти стало для всего хватать, но свободный объем памяти уменьшился.
    Странно это все :)
     
    Последнее редактирование: 28 ноя 2016
    Shade нравится это.
  20. Shade

    Shade Новичок

    Сообщения:
    30
    Симпатии:
    3
    Это пока в низком приоритете.

    Внутри такая привязка есть, надо только в интерфейсе показывать. Пока не понимаю как это лучше представить.

    Да, с большими файлами проблемас :) Нужно будет загрузку через HTTP заменить на потоковую загрузку на голом tcp/ip и это будет победа. Заодно красивый индикатор прогресса можно будет сделать.
     

Поделиться этой страницей