Noobish здесь.Повторное вызов функции, встроенной в функцию init
Я создаю проект pulberry pi для измерения глубины емкости для воды каждые 5 минут. Я поместил в танк ультразвуковое расстояние и получил все, что работает, используя узел и библиотеку r-pi-usonic. Я могу сделать первоначальный вызов ультразвукового устройства, чтобы создать в среднем 10 индивидуальных мер (из-за изменчивости отдельных мер) и записать их на консоль.
Но я хочу повторить это каждые 5 минут. Сначала я попытался сделать это, установив setInterval() и попытался использовать cron. Но поскольку цикл запроса связан в функции инициализации, он выдает следующее сообщение об ошибке ...
timers.js:274
callback.apply(this, args);
^
TypeError: Cannot read property 'apply' of undefined
at wrapper [as _onTimeout] (timers.js:274:13)
at Timer.listOnTimeout (timers.js:119:15)
Так что мой вопрос действительно то, что это лучший способ, чтобы получить это, чтобы выполнить запрос каждые 5mins? Ответ, несомненно, поможет мне понять обратные вызовы и т. Д. Извините за то, что вы такой дурацкий!
Мой код здесь, извинения за его дерьмо!
//Import required modules
var usonic = require('r-pi-usonic');
console.log('starting water tank monitor');
var min_tank = 30
var max_tank = 90
var tank_percent = 0
usonic.init(function (error) {
if (error) {
console.log('Error')
} else {
var sensor = usonic.createSensor(13, 21, 1000);
var i = 0
var values = 0
function myLoop(){
setTimeout(function() {
var v = sensor().toFixed(2) ;
values = values+parseFloat(v);
i++;
if (i < 10) {
myLoop();
} else {
value = (values/10).toFixed(2)
tank_percent = 100 -((value - min_tank)/ (max_tank - min_tank) * 100)
console.log(tank_percent);
i = 0;
values = 0;
}
}, 500)
};
setInterval (myLoop(), 30000);
}
});
Спасибо - я буквально собираюсь ползать под камень и никогда не выходить снова – user2870492