Скрыть объявление
Управляйте вашими ESP8266 и другими устройствами прямо с телефона из любой точки, где есть интернет!
Подробности и обсуждение IoT Manager в этой теме
Скрыть объявление
На нашем форуме недоступен просмотр изображений для неавторизованных пользователей. Если Вы уже зарегистрированы на нашем форуме, то можете войти. Если у Вас еще нет аккаунта, мы будем рады, если Вы к нам присоединитесь. Зарегистрироваться Вы можете здесь.

Luatool

Тема в разделе "luatool для NodeMCU", создана пользователем Victor, 20 ноя 2014.

Метки:
  1. Victor

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

    Сообщения:
    1.585
    Симпатии:
    268
    Утилита для загрузки lua скриптов во флеш память ESP8266 с прошивкой NodeMcu
    Скачать с github

    Позволяет заливать текстовые файлы, содержащие lua-скрипты, во флеш память.
     
  2. hav0k

    hav0k Читатель

    Сообщения:
    47
    Симпатии:
    7
    чот не могу залить init. lua

    ./luatool.py -p /dev/tty.SLAB_USBtoUART -f init.lua -t init.lua

    Хотя вроде 1 раз залилось и в коде вписывал, пока не разбирался почему не пашет. Вообще идея отказаться от ком порта и получается освободится 1 gpio(4) с синеньким светодиодом. Но я так не могу его зажечь.

    Идея проста: 1 кнопка 1 выход через (твердотельное реле) и больше нет распаянных gpio, а тут и светодиод есть. Консоль прокинуть по tcp.
     
  3. Victor

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

    Сообщения:
    1.585
    Симпатии:
    268
    дайте логи (выводятся на экран во время заливки), а то без дополнительной информации сложно будет вам помочь
     
  4. hav0k

    hav0k Читатель

    Сообщения:
    47
    Симпатии:
    7
    В чем то и дело что выводися lua код и ок. Не понял как но как то в старый раз загрузился.

    Взял голый моудь.

    Код (Text):
    1. lua: cannot open init.lua
    2. NodeMcu 0.9.2 build 20141120  powered by Lua 5.1.4
    3.  
    Код (Text):
    1.  
    2.  ~/p/lua/luatool/luatool/ [master*] ./luatool.py -p /dev/tty.SLAB_USBtoUART -f init.lua -t init.lua
    3. Downloader start
    4. start writing...
    5. print('init.lua ver 1.2 mymy')
    6. All down.
    7.  ~/p/lua/luatool/luatool/ [master*]
    8.  
    вырубаю питание, врубаю в логе.

    Код (Text):
    1.  
    2. lua: cannot open init.lua
    3.  
     
  5. Victor

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

    Сообщения:
    1.585
    Симпатии:
    268
    приложите еще, пожалуйста, сам LUA файл, который вы пытаетесь загрузить
     
  6. hav0k

    hav0k Читатель

    Сообщения:
    47
    Симпатии:
    7
    Код (Text):
    1.  
    2. print('init. lua ver 1.2 mymy')
    3. --wifi.setmode(wifi.STATION)
    4. --print('set mode=STATION (mode=',wifi.getmode(),')')
    5. --print('MAC=',wifi.sta.getmac())
    6. --print('set wifi')
    7. -- wifi config start
    8. --wifi.sta.config("ssid","MasterPassword")
    9. -- wifi config end
    10. --gpio.mode(4,gpio.OUTPUT)
    11. --gpio.write(4,gpio.HIGH)
    12.  
    Файлик 1 строчка. Я чуть попозже потыркаю. А он сразу пишет во флеш? Хотя майн грузит нормально.
     
  7. Victor

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

    Сообщения:
    1.585
    Симпатии:
    268
    я понял, что одна строчка - я хотел увидеть какие у вас там коды перевода строки и попробовать ваш файлик загрузить у себя
     
  8. hav0k

    hav0k Читатель

    Сообщения:
    47
    Симпатии:
    7
    Ща выложу форком в гитхаб. Если не путаю то только \n.

    Готово.

    Походу дела проблема с \r\n. Под виндой писалось это дело?
     
    Последнее редактирование: 26 ноя 2014
  9. hav0k

    hav0k Читатель

    Сообщения:
    47
    Симпатии:
    7
    file.remove("init. lua") тоже не прокатывает.


    UPD: Похоже дело было в питании
     
  10. Victor

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

    Сообщения:
    1.585
    Симпатии:
    268
    да нет, /r/n не при делах
    попробовал именно ваш файл залить на чистую прошивку и прошивку с уже существующим init. lua - каждый раз все ок.
    тестировал на последней прошивке 20141125.
    На всякий случай добавил еще паузы кое-где, на тот случай, если у вас комп "ну очень быстрый".
    Качайте с гита свежую версию и пробуйте.
     
  11. hav0k

    hav0k Читатель

    Сообщения:
    47
    Симпатии:
    7
    Нечаянно подключил к 5 вольтам и все отработало, не спалил даже. :).
    Видимо стабилизатор 1117 3.3 оказался нерабочим и выдавал не 3.3.

    Тестер дома остался скоро проверю чудо платку купленную в местном магазе.

    Нашел репо в гите https://github.com/cendev/nodeMCU-lua-uploader-over-TCP-IP. Там кода то 10 строк, а сервер наподобие этого.

    Код (Text):
    1.    
    2. file.open("server. lua","w+")
    3. s=net.createServer(net.TCP)
    4. s:listen(8888,function(c) c:on("receive",function(c,pl) print(pl) pcall(loadstring(pl)) end) end)
    5. file.close()
    6.  
    Думаю вешь то нужная, иначе приходится консоль постоянно дергать, чтобы файлик залить.
     
    Последнее редактирование: 26 ноя 2014
  12. Victor

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

    Сообщения:
    1.585
    Симпатии:
    268
    Новая версия luatool 0.4

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

    hav0k Читатель

    Сообщения:
    47
    Симпатии:
    7
    О хорошая новость.

    Вот чудо платка выдавала 2.8 вольт и 3.3 v, за место (3.3 и 5 соответственно). При 2.8 вольт чип работает, но не записывает нечего во флеш и при открытии файла с 'W' ошибка.

    Так что проблема была у меня. Сори что дергал.
     
  14. Victor

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

    Сообщения:
    1.585
    Симпатии:
    268
    Ну, благодаря вам, я собрался, наконец-то, переписать тупую запись с паузами на нормальную передачу с проверкой ответа от прошивки, так что вам спасибо!
     
  15. hav0k

    hav0k Читатель

    Сообщения:
    47
    Симпатии:
    7
    Есть проблема в паузе.
    В функции writeln после s.write(data) поставил time.sleep(1). И заработало.

    ЗЫ Без ошибок записалось с паузой не менее 0.3 скорость порта 9600.


    Код (Text):
    1.  ~/p/lua/handyswith/ ./luatool.py -p /dev/tty.SLAB_USBtoUART
    2. Downloader start
    3. Set timeout 3
    4. Set interCharTimeout 3
    5. Stage 1. Deleting old file from flash memory
    6. ->file.open("main. lua", "w") -> ok
    7. ->file.close()
    8.  
    9. ERROR
    10. send string    : 'file.close()'
    11. expected echo  : 'file.close()'
    12. but got answer : ' file.close()'
    13.  
    14. Traceback (most recent call last):
    15.   File "./luatool.py", line 139, in <module>
    16.     writeln("file.close()\r")
    17.   File "./luatool.py", line 57, in writeln
    18.     raise Exception('Error sending data to LuaMCU\r\n\r\n')
    19. Exception: Error sending data to LuaMCU
    20.  
    Код (Text):
    1.  
    2.  ~/p/lua/handyswith/ ./luatool.py -p /dev/tty.SLAB_USBtoUART
    3. Downloader start
    4. Set timeout 3
    5. Set interCharTimeout 3
    6. Stage 1. Deleting old file from flash memory
    7. ->file.open("main.lua", "w") -> ok
    8. ->file.close() -> ok
    9.  
    10. Stage 2. Creating file in flash memory and write first line->file.remove("main.lua") -> ok
    11. ->file.open("main.lua", "w+") -> ok
    12.  
    13. Stage 3. Start writing data to flash memory...->file.writeline([[print("lua script loaded by luatool 0.4")]]) -> ok
    14. ->file.writeline([[print('main.lua ver 1.1')]]) -> ok
    15. ->file.writeline([[-- web config]]) -> ok
    16. ->file.writeline([[ip="91.201.52.76"]]) -> ok
    17. ->file.writeline([[name="esp8266.ru"]]) -> ok
    18. ->file.writeline([[port=80]]) -> ok
    19. ->file.writeline([[-- web config]]) -> ok
    20. ->file.writeline([[function getHTTPreq()]]) -> ok
    21. ->file.writeline([[print('send GET to http server...')]]) -> ok
    22. ->file.writeline([[conn=net.createConnection(net.TCP, false)]]) -> ok
    23. ->file.writeline([[conn:on("receive", function(conn, payload) print('http server answer:'..payload) end)]]) -> ok
    24. ->file.writeline([[conn:connect(port,ip)]]) -> ok
    25. ->file.writeline([[conn:send("GET / HTTP/1.1\r\nHost: "]]) -> ok
    26. ->file.writeline([[..name.."\r\nConnection: keep-alive\r\nAccept: */*\r\n\r\n")]]) -> ok
    27. ->file.writeline([[end]]) -> ok
    28. ->file.writeline([[tmr.alarm(1000, 1, function()]]) -> ok
    29. ->file.writeline([[if wifi.sta.getip()=="0.0.0.0" then]]) -> ok
    30. ->file.writeline([[print("connecting to AP...")]]) -> ok
    31. ->file.writeline([[else]]) -> ok
    32. ->file.writeline([[print('ip: ',wifi.sta.getip())]]) -> ok
    33. ->file.writeline([[getHTTPreq()]]) -> ok
    34. ->file.writeline([[tmr.stop()]]) -> ok
    35. ->file.writeline([[end]]) -> ok
    36.  
    37. Stage 4. Flush data and closing file->file.writeline([[end)]]) -> ok
    38. ->file.flush() -> ok
    39.  
    40. --->>> All down <<<---
    41. ->file.close() -> ok%[
    42.  
    43.  
     
    Последнее редактирование: 27 ноя 2014
  16. Victor

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

    Сообщения:
    1.585
    Симпатии:
    268
    Добавил time.sleep(0.3)
     
  17. Victor

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

    Сообщения:
    1.585
    Симпатии:
    268
    v0.5 добавил новые опции:
    -r, --restart - авторестарт после загрузки
    -d, --dofile - автозапуск загружаемого файла после загрузки
     
  18. hav0k

    hav0k Читатель

    Сообщения:
    47
    Симпатии:
    7
    Виктор благодарствую.

    У меня получаются команды всегда такого вида -f xxx. lua -t xxx.lua. В основном локальное имя файла равно имени на датчике. Думаю загружать с 1 параметром, а второй параметр требуется когда имя файла отличается.
     
  19. Victor

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

    Сообщения:
    1.585
    Симпатии:
    268
    да, это неплохая идея. есть еще пара предложений, так что похоже, что в выходные я буду занят :)
     
  20. hav0k

    hav0k Читатель

    Сообщения:
    47
    Симпатии:
    7
    Есть подвижки? После многочисленных заливок в устройство иногда не отрабатывает пауза 0.3. поменял на 0.4.
     

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

Загрузка...