+3 голосов

Я решил собрать умную систему слежения климата. Поставил на ночь ради теста. После некоторого времени перестали мигать лампы приёма и передачи на вай-фай модуле. На следующее утро подключил к компьютеру и стал наблюдать. Примерно 2 часа всё работало нормально. Но потом появилась ошибка Потом ещё одна такая же. После этого всё перестало работать снова (лампочки не мигают кроме питания, на dweet.io пишет: Here's what this thing was up to a few 19 minutes). Всё решилось нажатием кнопки reset. Я хочу чтобы моя система работала 24/7 без танцев с бубном. Пожалуйста помогите!

Код:

//подключаем основные библиотеки

var sensor = require('@amperka/light-sensor').connect(A1);
var thermometer = require('@amperka/thermometer').connect(A2);
var led = require('@amperka/led').connect(P2);
var buzzer = require('@amperka/buzzer').connect(P8);

//создаём другие переменные

var SSID = '             ';
var PASSWORD = '                          ';
var NAME = 'Alioshina_komnata';

//подключаемся к двитайо

var dweet = require('@amperka/dweetio').connect(NAME);

//отправляем показания датчиков

function run() {
 setInterval(function() {
 dweet.send({
 temperature:  (thermometer.read('C')).toFixed(1),
 light: (sensor.read('lx')).toFixed(1),
});
 }, 1000);
}

//подключаемся к вай-фай

var wifi = require('@amperka/wifi').setup(function(err) {
 wifi.connect(SSID, PASSWORD, function(err) {
 print('Click this link', dweet.follow());
 run();
 });
});


 

(16 баллов) 1 1 6
исправил
К сожалению, на скриншоте очень плохо видно ошибку. Можете её скопировать и дополнить вопрос ей или переснять скриншот в лучшем качестве?

4 Ответы

+5 голосов
 
Лучший ответ

Судя по ошибкам, проблема не у вас в коде, а в подключаемых модулях.

Я не гуру в JS, но если ошибка возникает через продолжительное время, возможно, в библиотеке глубокая рекурсия или переполнение переменной.

Попробуйте, реже вызывать функцию run.

Также обновите прошивку до последней версии.

(435 баллов) 7 19
выбран
+4 голосов
Подозреваю другую причину. В wifi роутерах задается время "валидности" соединения. И через некоторое время (сутки примерно) оно разрывается. Отсюда совет: раз  в несколько часов закрывать соединение с роутером и подключаться заново.
(256 баллов) 1 3 14
исправил
+2 голосов
Данные отправляются каждую секунду — зачем так часто? Попробуйте установить большую задержку.

Так же не понимаю, зачем подключаются библиотеки led и buzzer, если они потом не используются.
(1.6 тыс. баллов) 3 9 33
Спасибо за ответ! Я попробую поставить значение поменьше!
+2 голосов
(16 баллов) 1 1 6
Добро пожаловать на Бредборд! Сайт вопросов и ответов на тему Arduino, Raspberry Pi и хоббийной электроники в целом. Цель Бредборда — быть максимально полезным. Поэтому мы строго следим за соблюдением правил, боремся с холиворами и оффтопиком.

    За этот месяц ещё никого.

    ...