закончилась память искорки

Тема в разделе "Iskra JS, Espruino, Йодо", создана пользователем Spark, 27 июл 2017.

  1. Spark

    Spark Нерд

    Здравствуйте!
    Задача программы
    отправляет запрос на апи телеграма и обрабатывает полученные данные, если текст сообщения подходит под шаблон в switch, то отправляем в тот же канал телеграма то, что нужно отправить.

    Код (Javascript):
    //ПОДКЛЮЧЕНИЕ БИБЛИОТЕК
    var temp = require('@amperka/thermometer').connect(A4);

    //ПОДКЛЮЧЕНИЕ К WIFI

    // Настраиваем интерфейс UART
    PrimarySerial.setup(115200);
    // логин и пароль WiFi-сети
    var SSID = '_Spark_';
    var PSWD = 'abvgdeezh';
    var text;
    var wifi = require('@amperka/wifi').setup(PrimarySerial, function(err) {
    var http = require('http');
      // подключаемся к Wi-Fi сети
      wifi.connect(SSID, PSWD, function(err) {
        if(err)
          print("err");
        else
          print('Connected');
          process.memory();
      });
    });


    //ВСЕ ПЕРЕМЕННЫЕ ДЛЯ ПРОГРАММ
    var mes, len, id1, id2, posted;

    //ФУНКЦИИ

    //ФУНКЦИЯ ОБРАБОТКИ ПОЛУЧЕННЫХ ДАННЫХ ОТ ГЕТ ЗАПРОСА
    function obrabotka() {
      process.memory();
      switch(mes){
        case 'Temp':
          postRequest(temp.read('C').toFixed(2));
          process.memory();
          break;
      }
    }

    //ФУНКЦИЯ ОТПРАВКИ ПОСТ ЗАПРОСА
    //используется в функции гет запроса
    function postRequest(post) {
      process.memory();
      require('http').get('https://api.telegram.org/bot391022114:AAHpCGCwGPoBVTBunwu6a-qd0IB4y42TQ/sendMessage?chat_id=@tralka&text=IskraBot_Temperatire:' + post);
      process.memory();
    }

    //ФУНКЦИЯ ОТПРАВКИ ГЕТ ЗАПРОСА
    function getRequest() {

      process.memory();

      var response = '';
      require('http').get('https://api.telegram.org/bot391022114:AAHpCGG4CwGPoTBunwu6a-qd0IB4y42TQ/getUpdates?offset=0&timeout=0.1=json', function(res)  {
     
        // Большие ответы от сервера могут приходить по частям.
        // В переменной response собираем весь ответ целиком.
        res.on('data', function(data) {
          response += data;
        });
     
        // После закрытия соединения обрабатываем весь пришедший ответ
        res.on('close', function() {
          if (response === undefined) {
            print('Error. Response is undefined.');
          } else {
            process.memory();
            response = JSON.parse(response);
            len = response.result.length - 1;
            mes = response.result[len].channel_post.text;
            id1 = response.result[len].update_id;
            process.memory();
            if(id1 != id2){
              process.memory();
              print(mes, id1);
              obrabotka();
              id2 = id1;
              process.memory();
            }
          }
        });
      });
    }
    //отправка гет запроса
    setInterval(getRequest, 5000);
    В чем проблема
    Когда отправляю с телефона сообщение в канал телеграма, то в первый выходит
    Код (Bash):
    >
        ____       __
       /  _/_____ / /__ _____ ____ _
       / / / ___// //_// ___// __ `/
    _/ / (__  )/ ,<  / /   / /_/ /
    /___//____//_/|_|/_/    \__,_/
    Based on Espruino 1v92.194
    (c) 2016 G.Williams, Amperka LLC
    Support the work of core developers:
    http://espruino.com/Donate
    >Erasing Flash....
    Writing...........
    Compressed 87200 bytes to 8810
    Checking...
    Done!
    Loading 8810 bytes from flash...
    =undefined
    Connected
    Temp 590221418
    Uncaught InternalError: Failed! mbedtls_ssl_setup: Not enough memory
    at line 32 col 4
      });
       ^
    in function called from system
    после первого сообщения уже на следующие не реагирует и выводит каждые пять секунд
    Код (Bash):
    Uncaught InternalError: Failed! mbedtls_ssl_setup: Not enough memory
    at line 32 col 4
      });
       ^
    in function called from system
    >
    Я так понимаю лечится эта проблема закупкой платы для sd? Или просто косяк кода?
    Спасибо.
     
    Последнее редактирование: 27 июл 2017
  2. rkit

    rkit Гуру

    Код. Где именно - не знаю.
     
  3. sys

    sys Злобный Буратино Модератор

    не засовывать "var http = require..." в "var wifi = "
    не реквайрить сто раз http...
    не мудрить с if(){...} else {...}
    не насиловать сборщик мусора
    ...
    заодно внимательно прочтите http://www.espruino.com/Performance
     
    Последнее редактирование: 29 июл 2017
  4. Spark

    Spark Нерд

    Спасибо.
     
  5. Я не понял а как у искры память очистить
     
  6. sys

    sys Злобный Буратино Модератор

    не понятно, что Вы подразумеваете под очисткой памяти
     
  7. NovaStream2030

    NovaStream2030 Напечатан на 3D-Принтере

    залить пустой скрипт