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

EspLua вместо NodeMCU

Тема в разделе "NodeMCU", создана пользователем pvvx, 26 июн 2015.

  1. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.475
    Симпатии:
    1.274
    Ну он пока работает немного лучше NodeMCU, а вставлять новые фичи и особенно исправлять ошибки NodeMCU можно вечно :)
     
  2. NeoroN

    NeoroN Читатель

    Сообщения:
    150
    Симпатии:
    22
    Еще было бы интересно портировать MFRC522 библиотеку...
    https://yadi.sk/d/Bmvxvkiqa8yGv типа этой

    Делал на ней электронные замки всякие, карты метро читал и писал
     
  3. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.475
    Симпатии:
    1.274
    Какой смысл переводить Arduino RFID Library for MFRC522 на Lua, если есть Arduino IDE для ESP8266?
    Lua на ESP8266 пока 'огрызок', по сравнению с Arduino...
     
  4. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.475
    Симпатии:
    1.274
    Переход на SDK 1.3.0:
    EspLua.ru 1.3.0 build 20150809 powered by Lua 5.1.4
    lua: cannot open init.lua
    > =node.heap()
    41576
     
  5. Vladimir555

    Vladimir555 Читатель

    Сообщения:
    305
    Симпатии:
    5
    Больше 41576 только 64000 :p
    -----
    Железо - ESP07+32к
    Есть проблема, вот с таким проектом
    https://github.com/ok1cdj/ESP8266-LUA/blob/master/Thermometer-DS18B20-Thingspeak/ds1820.lua
    на Nodemcu build 20150627 все передает устойчиво.
    на Вашем виснет, через раз, на строке 72:
    Код (Text):
    1. Sending data to thingspeak.com
    2. ......reboot........
    3. EspLua.ru 1.3.0 build 20150809  powered by Lua 5.1.4
    4. Heap=25880
    5.  
    и не чего не передает на сервер.
    что делаю не правильно?
    Спасибо.;)
     
    Последнее редактирование: 9 авг 2015
  6. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.475
    Симпатии:
    1.274
    А что это за игра такая?
    > dofile("script6.lc")
    > Temp:-0.0999.0999 C

    Sending data to thingspeak.com
    Temp:-0.0999.0999 C

    Sending data to thingspeak.com
    Temp:-0.0999.0999 C
    ...

    Откуда данный баг-lua-скрипт берет температуру, если у меня датчик не подключен? :confused:
    И ещё данный скрипт жрет память и потом перезагружается на NodeMCU и везде :)
    Глюк net.xxx от писак NodeMCU не исправен и не работает в самой NodeMCU.
     
    Последнее редактирование: 9 авг 2015
  7. Vladimir555

    Vladimir555 Читатель

    Сообщения:
    305
    Симпатии:
    5
    Привет Pvvx!
    ну да, я не передупредил :)
    это у них для integer to float сделано, но не в этом проблема...
    что то с передачей на thingspeak.com не хочет работать.
    У Вас есть рабочий пример для Вашей прошивки передачи данных на thingspeak.com( на Nodemcu 20150627 после коррекций проекта работает!)
    можно и без термометра, просто числа передать?
    Знаю у них все плохо но,
    просто перенести этот работающий проект с Nodemcu на Вашу прошивку не получается...
     
    Последнее редактирование: 9 авг 2015
  8. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.475
    Симпатии:
    1.274
    Пока нет. Надо переделывать драйвера LUA<->TCP под новые версии SDK. Иначе то, что в NodeMCU с TCP всегда приводит к потере памяти и падениям...
    Пример с "NodeMCU 0.9.6 build 20150704"
    при таймере в 300 :) (раскрыть)
    Код (Text):
    1. NodeMCU 0.9.6 build 20150704  powered by Lua 5.1.4
    2. > dofile("script6.lua")
    3. > Temp:-0.0999.0999 C
    4.  
    5. Sending data to thingspeak.com
    6. 25536
    7. Closing connection
    8. Temp:-0.0999.0999 C
    9.  
    10. Sending data to thingspeak.com
    11. 24056
    12. Closing connection
    13. Temp:-0.0999.0999 C
    14.  
    15. Sending data to thingspeak.com
    16. 23288
    17. Closing connection
    18. Temp:-0.0999.0999 C
    19.  
    20. Sending data to thingspeak.com
    21. 22832
    22. Closing connection
    23. Temp:-0.0999.0999 C
    24.  
    25. Sending data to thingspeak.com
    26. 21992
    27. Closing connection
    28. Temp:-0.0999.0999 C
    29.  
    30. Sending data to thingspeak.com
    31. 21384
    32. Closing connection
    33. Temp:-0.0999.0999 C
    34.  
    35. Sending data to thingspeak.com
    36. 20592
    37. Closing connection
    38. Temp:-0.0999.0999 C
    39.  
    40. Sending data to thingspeak.com
    41. 19952
    42. Temp:-0.0999.0999 C
    43.  
    44. Sending data to thingspeak.com
    45. 17384
    46. Closing connection
    47. Temp:-0.0999.0999 C
    48.  
    49. Sending data to thingspeak.com
    50. 16776
    51. Closing connection
    52. Closing connection
    53. Temp:-0.0999.0999 C
    54.  
    55. Sending data to thingspeak.com
    56. 17800
    57. Closing connection
    58. Temp:-0.0999.0999 C
    59.  
    60. Sending data to thingspeak.com
    61. 17208
    62. Closing connection
    63. Temp:-0.0999.0999 C
    64.  
    65. Sending data to thingspeak.com
    66. 16624
    67. Closing connection
    68. Temp:-0.0999.0999 C
    69.  
    70. Sending data to thingspeak.com
    71. 16040
    72. Closing connection
    73. Temp:-0.0999.0999 C
    74.  
    75. Sending data to thingspeak.com
    76. 15456
    77. Closing connection
    78. Temp:-0.0999.0999 C
    79.  
    80. Sending data to thingspeak.com
    81. 14872
    82. Closing connection
    83. Temp:-0.0999.0999 C
    84.  
    85. Sending data to thingspeak.com
    86. 13264
    87. Closing connection
    88. Temp:-0.0999.0999 C
    89.  
    90. Sending data to thingspeak.com
    91. 12680
    92. Closing connection
    93. Temp:-0.0999.0999 C
    94.  
    95. Sending data to thingspeak.com
    96. 12096
    97. Closing connection
    98. Temp:-0.0999.0999 C
    99.  
    100. Sending data to thingspeak.com
    101. 11488
    102. Closing connection
    103. Temp:-0.0999.0999 C
    104.  
    105. Sending data to thingspeak.com
    106. 10904
    107. Closing connection
    108. Temp:-0.0999.0999 C
    109.  
    110. Sending data to thingspeak.com
    111. 10120
    112. Temp:-0.0999.0999 C
    113.  
    114. Sending data to thingspeak.com
    115. 8072
    116. Closing connection
    117. Temp:-0.0999.0999 C
    118.  
    119. Sending data to thingspeak.com
    120. 7448
    121. Closing connection
    122. Temp:-0.0999.0999 C
    123.  
    124. Sending data to thingspeak.com
    125. 6864
    126. Closing connection
    127. Closing connection
    128. Temp:-0.0999.0999 C
    129.  
    130. Sending data to thingspeak.com
    131. 7912
    132. Closing connection
    133. Temp:-0.0999.0999 C
    134.  
    135. Sending data to thingspeak.com
    136. 7320
    137. Closing connection
    138. Temp:-0.0999.0999 C
    139.  
    140. Sending data to thingspeak.com
    141. 6712
    142. Closing connection
    143. Temp:-0.0999.0999 C
    144.  
    145. Sending data to thingspeak.com
    146. 6128
    147. Closing connection
    148. Temp:-0.0999.0999 C
    149.  
    150. Sending data to thingspeak.com
    151. 5544
    152. Closing connection
    153. Temp:-0.0999.0999 C
    154.  
    155. Sending data to thingspeak.com
    156. 4960
    157. Closing connection
    158. Temp:-0.0999.0999 C
    159.  
    160. Sending data to thingspeak.com
    161. 4376
    162. PANIC: unprotected error in call to Lua API (not enough memory)
    163. c_ЗПRSцвFjцвFjГvкЁ
    164.  
    165. NodeMCU 0.9.6 build 20150704  powered by Lua 5.1.4
    166. >
     
    Последнее редактирование: 12 авг 2015
  9. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.475
    Симпатии:
    1.274
    @Vladimir555 - EspLua.ru 1.3.0 работает с вашим модифицированным (т.е. правильно написанным :p) lua:
    Код (Lua):
    1. lasttemp = 22
    2.  
    3. function getTemp()
    4. lasttemp = lasttemp + 1
    5. print("Temp: "..lasttemp.." C")
    6. end
    7. --- Send
    8. function sendData()
    9. getTemp()
    10. -- conection to thingspeak.com
    11. print("Sending new data to thingspeak.com")
    12. print(node.heap())
    13. conn=net.createConnection(net.TCP, 0)
    14. conn:on("receive", function(conn, payload) print(payload) end)
    15. -- conn:connect(80,'thingspeak.com')
    16. conn:connect(80,'192.168.1.2')
    17. conn:on("connection",function(conn) conn:send("GET /update?key=YOURKEY&field1="..lasttemp.." HTTP/1.1\r\n"
    18. .."Host: api.thingspeak.com\r\n"
    19. .."Accept: */*\r\n"
    20. .."User-Agent: Mozilla/4.0 (compatible; esp8266 Lua; Windows NT 5.1)\r\n"
    21. .."\r\n") end)
    22. conn:on("sent",function(conn) print("Closing connection") conn:close() end)
    23. conn:on("disconnection", function(conn) print("Got disconnection...") end)
    24. end
    25. -- send data every X ms to thing speak
    26. while(1) do
    27.  tmr.delay(500000)
    28.  ip = wifi.sta.getip()
    29.  if ip=="0.0.0.0" or ip==nil then
    30.   print("No connect to AP...")
    31.  else
    32.   sendData()
    33.  end
    34. end
    лог (раскрыть)
    Код (Lua):
    1. EspLua.ru 1.3.0 build 20150809  powered by Lua 5.1.4
    2. > dofile("script7.lua")
    3. No connect to AP...
    4. No connect to AP...
    5. No connect to AP...
    6. No connect to AP...
    7. No connect to AP...
    8. No connect to AP...
    9. No connect to AP...
    10. No connect to AP...
    11. No connect to AP...
    12. No connect to AP...
    13. Temp: 23 C
    14. Sending new data to thingspeak.com
    15. 35584
    16. Closing connection
    17. Got disconnection...
    18. Temp: 24 C
    19. Sending new data to thingspeak.com
    20. 34736
    21. Closing connection
    22. Got disconnection...
    23. Temp: 25 C
    24. Sending new data to thingspeak.com
    25. 34544
    26. Closing connection
    27. Got disconnection...
    28. Temp: 26 C
    29. Sending new data to thingspeak.com
    30. 34360
    31. Closing connection
    32. Got disconnection...
    33. Temp: 27 C
    34. Sending new data to thingspeak.com
    35. 34168
    36. Closing connection
    37. Got disconnection...
    38. Temp: 28 C
    39. Sending new data to thingspeak.com
    40. 33984
    41. Closing connection
    42. Got disconnection...
    43. Temp: 29 C
    44. Sending new data to thingspeak.com
    45. 33976
    46. Closing connection
    47. Got disconnection...
    48. Temp: 30 C
    49. Sending new data to thingspeak.com
    50. 33984
    51. Closing connection
    52. Got disconnection...
    53. Temp: 31 C
    54. Sending new data to thingspeak.com
    55. 33976
    56. Closing connection
    57. Got disconnection...
    58. Temp: 32 C
    59. Sending new data to thingspeak.com
    60. 33984
    61. Closing connection
    62. Got disconnection...
    63. ....
     
  10. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.475
    Симпатии:
    1.274
    Добавлена опция к net.createServer(net.TCP[,timeout[, options]]) / net.createConnection(net.TCP[, secure[, options]])
    Options of TCP connection:
    bit 0: 1: free memory after TCP disconnection happen need not wait 2 minutes;
    bit 1: 1: disable nagle algorithm during TCP data transmission, quiken the data transmission.
    bit 2: 1: enable espconn_regist_write_finish, enter write finish callback means the data espconn_sent sending was written into 2920 bytes write-buffer waiting for sending or already sent.
    bit 3: 1: enable TCP keep alive


    Итог прошлого скрипта с опцией conn=net.createConnection(net.TCP, 0, 3) и паузой в 250 ms между началами соединений :) :
    лог (раскрыть)
    Код (Lua):
    1.  
    2. EspLua.ru 1.3.0 build 20150813  powered by Lua 5.1.4
    3. > dofile("script7.lua")
    4. No connect to AP...
    5. No connect to AP...
    6. No connect to AP...
    7. No connect to AP...
    8. No connect to AP...
    9. No connect to AP...
    10. No connect to AP...
    11. No connect to AP...
    12. Temp: 23 C
    13. Sending new data to thingspeak.com
    14. 35512
    15. Temp: 24 C
    16. Sending new data to thingspeak.com
    17. 32888
    18. Closing connection
    19. Got disconnection...
    20. Temp: 25 C
    21. Sending new data to thingspeak.com
    22. 32384
    23. Closing connection
    24. Got disconnection...
    25. Temp: 26 C
    26. Sending new data to thingspeak.com
    27. 32152
    28. Closing connection
    29. Got disconnection...
    30. Closing connection
    31. Got disconnection...
    32. Temp: 27 C
    33. Sending new data to thingspeak.com
    34. 33664
    35. Temp: 28 C
    36. Sending new data to thingspeak.com
    37. 31752
    38. Closing connection
    39. Got disconnection...
    40. Closing connection
    41. Got disconnection...
    42. Temp: 29 C
    43. Sending new data to thingspeak.com
    44. 33696
    45. ..................
    46. Temp: 101 C
    47. Sending new data to thingspeak.com
    48. 33744
    49. ..................
     
  11. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.475
    Симпатии:
    1.274
    Это кривые модули с найденной на помойке китацами flash и не поддерживают QIO.
    @Vladimir555 - Нормальные модули всё поддерживают.
    EspLua.ru 1.3.0 build 20150813 powered by Lua 5.1.4
    lua: cannot open init.lua
    > =node.flashid()
    1458400
     
  12. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.475
    Симпатии:
    1.274
    Спеклась версия 1.4.0 (на базе Espressif SDK версии 1.4.0 + патчи):
    EspLua.ru 1.4.0 build 20150922 powered by Lua 5.1.4
    lua: cannot open init.lua
    > =node.heap()
    41576

    Начались нападки NodeMCU-шников, почему нет их копирайта и почему им всё не передано безвозмездно, и почему комменты в СИ на русском :) Говорят в ШША так не положено и будут жаловаться в свой суд :)
    На второй вопрос для них четкий ответ: изучайте русский язык! :)
     
    Tomahawk и alexhi нравится это.
  13. Tomahawk

    Tomahawk Читатель

    Сообщения:
    84
    Симпатии:
    10
    @pvvx, они будут требовать вашей экстрадиции? :)
    Предложите им платить вам за следующие найденные баги, которые у них ещё обнаружатся))
     
  14. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.475
    Симпатии:
    1.274
    Да ничего не будет. Я просто прикалываюсь и всё сделано именно чтобы кто угодно взял, что найдет нужным, и исправил у себя.
    Спроса на Lua в ESP8266 всё равно не наблюдается.
     
  15. a.z.sochi

    a.z.sochi Новичок

    Сообщения:
    1
    Симпатии:
    0
    Прошу помощи в моем простейшем скрипте:

    init.lua (раскрыть)
    Код (Lua):
    1. print('Load WIFI_SWITCH');
    2. out=4; --GPIO2  CH=4 dimmer
    3. gpio.mode(out, gpio.OUTPUT);
    4. gpio.write(out, gpio.LOW);
    5. dofile("wifi.lua");


    wifi.lua (раскрыть)
    Код (Lua):
    1. -- wifi init
    2. cfg_wifi_ssid,cfg_wifi_key = "CCCP","wifi681818"
    3.  
    4. wifi.setmode(wifi.STATION)
    5. wifi.sta.config(cfg_wifi_ssid,cfg_wifi_key)
    6. wifi.sta.autoconnect(1)
    7. -- tmr connect establish
    8. tmr_count = 0
    9. tmr.alarm(0, 1000, 1, function()
    10.   if(wifi.sta.getip() == nil)then
    11.     -- wifi connect try
    12.     print("Conn to AP (ssid="..cfg_wifi_ssid.."/key="..cfg_wifi_key..") try:"..tmr_count)
    13.     tmr_count = tmr_count+1
    14.     if(tmr_count > 60)then
    15.       -- set ESP to alarm wifi AP mode
    16.       wifi.sta.disconnect();
    17.       wifi.setmode(wifi.SOFTAP)
    18.       --wifi.setmode(wifi.STATIONAP)
    19.       wifi.ap.config({ssid="ERROR",pwd="147852369"})
    20.       -- print wifi status
    21.       print("WiFi AP (ssid=ERROR/key=147852369)")
    22.       print('IP:',wifi.ap.getip())
    23.       print('Mode=AP')
    24.       print('MAC:',wifi.ap.getmac())
    25.       tmr.stop(0)
    26.     end
    27.   else
    28.     --print wifi status
    29.     print('IP: ',wifi.sta.getip())
    30.     print('Mode=Client')
    31.     print('MAC:',wifi.sta.getmac())
    32.     dofile("switch.lua")
    33.     tmr.stop(0)
    34.   end
    35. end)


    switch.lua (раскрыть)
    Код (Lua):
    1. swState='off'
    2.   print('start http serv')
    3.   srv=net.createServer(net.TCP, 30)
    4.   srv:listen(80,function(conn)
    5.     conn:on("receive",function(conn,payload)
    6.       print(payload)
    7.       print(node.heap())
    8.         if string.find(payload,"?mode=on") then
    9.           swState='on'
    10.           gpio.write(out, gpio.HIGH);
    11.           conn:send('HTTP/1.1 200 OK\r\n\r\n')
    12.           conn:send('on')
    13.         elseif string.find(payload,"?mode=off") then
    14.           swState='off'
    15.           gpio.write(out, gpio.LOW);
    16.           conn:send('HTTP/1.1 200 OK\r\n\r\n')
    17.           conn:send('off')
    18.         elseif string.find(payload,"state") then
    19.           conn:send('HTTP/1.1 200 OK\n\n')
    20.           conn:send(swState)
    21.         else
    22.           conn:send('HTTP/1.1 200 OK\r\n\r\n')
    23.           conn:send('//error//')
    24.         end
    25.     end)
    26.     conn:on("sent",function(conn)
    27.       conn:close()
    28.     end)
    29.   end)


    Так вот, с прошивкой NodeMCU все работало, но с очень переменным успехом. Иногда работало, как часы (запрос-реакция-ответ за доли секунды), иногда приходилось долго ждать реакции gpio, а потом еще и ответ. А иногда спустя несколько запросов, устройство вообще переставало реагировать и отвечать и зависало до перезагрузки...
    Решил попробовать прошить EspLua... та же проблема.
    Причем, как я заметил, когда esp8266 зависает, вся сеть wifi рухнет...
     
  16. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.475
    Симпатии:
    1.274
    Да, код net Server и методы работы с ним из NodeMCU с ним ещё не изменены на правильные. Причина в том, что основной подход там вообще не верен, а если делать по другому, то совместимости не будет.
    Аналогично ещё не доделана система работа по событиям WiFi, чтобы избавиться от циклических опросов состояния WiFi. Но там причина в ошибках уже SDK от Espressif и я ещё не нашел нормальные пути обхода их.
    Попробуйте изменить алгоритм:
    1) Сервер не должен закрывать соединение первым, тем более не выдав "Connection: close\r\n"
    2) Если используете conn:close(), закрывая соединение первым, то ограничьте обращение к данному соединению по времени - не чаше одного conn:close() в течении нескольких секунд. Иначе будет переполнение "Heap"
    3) Установите все параметры WiFi включая режимы Auth Mode и особенно Sleep Mode в NONE. В других SDK глючит.
     
  17. gryphon

    gryphon Новичок

    Сообщения:
    3
    Симпатии:
    0
    2pvvx
    Дважды загрузил прошивку EspLua.ru 1.3.0.20150809 на ESP12 (flash 1 MB).
    Постоянно моргает синий светодиод и в консоли сыпятся ошибки "Fatal exception (28):"
    Это проблемы прошивки или железа? Спасибо
     
  18. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.475
    Симпатии:
    1.274
    В вашем модуле может быть flash без QIO режима, только DIO (обычно это платы с модулями от NodeMCU). Т.е. Lua будет работать ещё в два раза медленнее и на такие модули старая прошивка не была рассчитана.
     
  19. gryphon

    gryphon Новичок

    Сообщения:
    3
    Симпатии:
    0
    Плата такая
    [​IMG]
    т.е. получается , что эта прошивка рассчитана только на модули с QIO?
    можно ли как-то программно проверить, поддерживает ли модуль QIO режим?
     
  20. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.475
    Симпатии:
    1.274
    Прошить что туда с включенной опцией QIO или считать ID flash и попробовать по ней определить тип и чья flash. Самое простое открыть модуль и посмотреть разводку и маркировку Flash.
    Китайцы умет подделывать и маркировку и ID flash, но часть модулей, выпущенных для NodeMCU может не иметь всех проводников до Flash, чтобы обеспечивать QIO режим.
    Последняя версия на SDK 1.4.0 поддерживает оба режима - и QIO и DIO. Но её надо собирать самому, и она ещё не окончательно исправлена для работы всех программных модулей и совместимостей с NodeMCU.
     
    Последнее редактирование: 29 сен 2015

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