• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Решено NodeMCU - сломан telnet

serrgee

New member
Я запустил известный код tel.lua чтобы сделать сетевое соединение с espшкой. На приемной стороне у меня socat и ESPLorer. С "родной" прошивкой nodemcu_float_0.9.6-dev_20150704.bin эта связка отлично заработала.

Но если установить любую кастомную прошивку (master или dev), собранную на NodeMCU custom builds, то ответ начинает приходить без символов перевода строки. И работать удалённо становится невозможно.

Что делать? Собирать прошивку самому? Подозреваю, что этот косяк будет и в ней. Кто-нибудь сталкивался?
 

serrgee

New member
Для пояснения происходящего показываю, как работает так называемый telnet на разных прошивках. В обоих случаях сценарий одинаковый: подключение (в ответ скрипт присылает Велкам), ввод пустой строки (получаем промпт в обоих случаях), ввод команды [inline]print(node.heap())[/inline]

Вот дамп обмена с прошивкой 0.9.6 (нормальная работа):
Код:
$ sudo socat -v - tcp4:192.168.5.218:2323
< 2016/06/01 06:54:42.360481  length=26 from=0 to=25
Welcome to NodeMcu world.
Welcome to NodeMcu world.

> 2016/06/01 06:54:43.638573  length=1 from=0 to=0

< 2016/06/01 06:54:43.765451  length=2 from=26 to=27
> > print(node.heap())
> 2016/06/01 06:55:00.196354  length=19 from=1 to=19
print(node.heap())
< 2016/06/01 06:55:00.305143  length=5 from=28 to=32
2991229912< 2016/06/01 06:55:00.319389  length=3 from=33 to=35

>
>
Вот дамп обмена с кастомной прошивкой 1.4 (нечто странное):
Код:
$ sudo socat -v - tcp4:192.168.5.232:2323
< 2016/06/01 06:53:15.104420  length=25 from=0 to=24
Welcome to NodeMcu world.Welcome to NodeMcu world.
> 2016/06/01 06:53:17.496889  length=1 from=0 to=0

< 2016/06/01 06:53:17.554967  length=2 from=25 to=26
> > print(node.heap())
> 2016/06/01 06:53:23.222577  length=19 from=1 to=19
print(node.heap())
< 2016/06/01 06:53:23.237328  length=5 from=27 to=31
3854438544
Видно, что во втором случае:
  • \n в конце приветствия не посылается
  • Промпт "\n> " после вывода хипа также не посылается
  • Промпт посылается только после получения пустой строки на ввод.
Когда это поломали и где чинить?
 

serrgee

New member
Завёл issue на гитхабе и получил ответ от команды проекта. Оказалось, дело в обычном раззвиздяйстве... В репозитории лежит правильный telnet.lua, но лежит он только в ветке dev, хотя должен лежать и в master тоже. То, что лежит в master, уже полгода как не работает! Но никак не доходят руки закоммитить туда правильный файл.

Короче. Правильный telnet.lua берите из dev. Он работает во всех версиях NodeMCU, начиная с 9.6.0. Я проверил.
 
Сверху Снизу