Код ужал как мог. Лишних переменных не нашел. Видимо, NodeMCU не приспособлена для каких то нормальных проектов кроме как включать/выключать GPIO
Я пришел к абсолютно таким-же неутешительным выводам.. Я делал очень похожую штуку : термостат на базе ds18b20 + простейший web server для управления + периодическая отсылка температуры в google tables. Могу сказать, что термостат уже неделю пашет в полностью автономном режиме и почти без перезагрузок. Вначале нарывался на те же грабли - спорадическая перезагрузка модуля из-за нехватки heap. В итоге заработало более -менее стабильно (если можно так сказать в данном случае) после того как :
- модуль ds18b20.lua был нещадно "выпилен" , вместо него я накидал простой исполняемый файл, кот просто меряет и возвращает температуру. Выполняется через dofile();
- отправка отчетов осталась в виде модуля, болтается в памяти ну да фиг с ней
- web server упрощен донельзя, он умеет только выдавать html -страницу из флеша, да и то посрочно, дабы не жрать память. Полезные данные вживляются в код html функцией eval, т.е. где надо я в файл вставляю фрагмент кода и он выполняется "на лету" в момент отдачи в браузер. Обратные запросы обрабатываются двумя if-then, мне больше не надо...
- измерения температуры и термостатирование делаются раз в минуту, отправка раз в 15 мин.
Такая конструкция заработала, главное чтобы не совпали во времени все три события - измерение температуры, отправка отчета и обработка запроса браузера. В этом случае "падеж" гарантирован. Если же совпадают только два из трех процессов, система, как правило,"выживает", хотя heap падает в такие моменты до 4кбайт, в то время как в режиме ожидания около 12-14 кбайт.
Чуствую, что это предел для nodeMCU , разве что появится (или сам соберу) прошивка без floating но с предкомпиляцией модулей. В общем, если хочется выжать всю мощу ESP, путь только один - писать на C. А так да, NodeMCU годится (по крайней мере, сейчас) только для нечастого мигания светодиодом и подсаживания таких как мы "любителей халявы Lua" на С.
Надеюсь, никого не обидел.
P.S. самое смешное, что рабочие копии Lua-скриптов у меня остались только в модуле, на диске компа "похерились" в силу моей лени сбекапить работающий вариант куда-нить от греха подальше. Так что не повторяйте моих ошибок