Скільки потрібно вільної пам’яті heap в прошивці NodeMCU, щоб працював https/tls?

Відповідь:

Для перевірки спробували створювати змінні і запускати на виконання відправку змінної фіксованого розміру. Тест показав, що http.post на 443 порт перестає працювати якщо пам’яті менше ніж 30,5 кБ. При тому, що початково видно 40-41 кБ, то на решту програмного коду лишається тільки 10 кБ. А це дуже мало, щоб реалізовувати інші “потужні” задачі. 

Наприклад, функціонал Web-сервера засобами net.createServer() та net.listen на 80 порт, потребує близько 10-12 кБ.

Є різні шляхи оптимізації пам’яті з вивантаженням всього зайвого і завантаженням лише тоді, коли треба – у вигляді окремих lc-файл-модулів через require().

Також можливо розділити роботу пристрою на режими, щонайменше: 

  • режим “звичайного завантаження”, 
  • режим “налаштувань”.

Під час дії режиму “звичайного завантаження”, на пристрої взагалі може бути вимкнений протокол взаємодії з мережею (звісно, все від задумі розробника і вирішуваної задачі). Локальний веб-сервер може запускатися лише під час завантаження пристрою у режимі “налаштувань”.

Код тестової програми:

Видача в консоль тестової програми:

Висновок

Потрібно передбачати, що основний код і код HTTPs-відправника, веб-сервера, чи іншого, потужного і охочого до оперативної пам’яті процесу, мають працювати динамічно – в кожен момент часу лише той функціонал, котрий потрібен користувачу.

Перевірено на версії 2.2.1-master_20181207 з 20-ма C-модулями.