• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе 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. Я проверил.
 
Сверху Снизу