//Загружаем модуль BoneScript, к которому в коде мы будем обращаться с именем b var b = require('bonescript'); var SERVO = 'P9_14'; // пин с серво var url = 'http://ya.ru'; var SMILE_DUTIES = { ':)': 0.03, ':|': 0.06, ':(': 0.09, 'XS': 0.126 }; var currentSmile = ':)'; //Задаём SERVO направление <выход> b.pinMode(SERVO, b.OUTPUT); var http = require('http'); // Функция, которая показывает смайл, соответствующий задержке `time` function showSmile(time) { // Выбираем вид смайла var smile = null; if (time < 1000) { smile = ':)'; } else if (time < 5000) { smile = ':|'; } else if (time < 10000) { smile = ':('; } else { smile = 'XS'; } console.log(smile); // Поворачиваем барабан до смайла, если он ещё не там if (currentSmile !== smile) { b.analogWrite(SERVO, SMILE_DUTIES[smile], 50); currentSmile = smile; } } //Определяем новую функцию update, которая состоит из кода между фигурными скобками function update() { // Запоминаем момент начала запроса var startTime = new Date(); console.log("Start time " + startTime); // Делаем сам запрос к сайту http.get(url, function (response) { // Эта функция будет вызвана, как только мы получим ответ // Выводим HTTP-статус ответа console.log(response.statusCode); if (response.statusCode >= 200 && response.statusCode < 400) { // Если код ответа страницы 2хх — это ОК, 3хх — это редирект // будем считать оба сценария нормальными console.log("OK"); // Узнаём время получения ответа var endTime = new Date(); console.log("End Time " + endTime); // Вычисляем задержку, с которой мы получили ответ var time = endTime - startTime; console.log("time = " + time + " ms"); // показываем смайл соответствующий задержке showSmile(time); } else { // Мы получили в ответ какой-то странных, плохой HTTP-код. // Будем считать это ошибкой console.log("Error Time"); // показываем мёртвый смайл showSmile(10000); } // «Потребляем» тело ответа, чтобы высвободить HTTP-подключение response.on('data', function() {}); }).on('error', function (e) { // Эта функция будет вызвана если сайт вообще не доступен // Например, если пропало сетевое подключение или сервер... console.log(e.message); // показываем мёртвый смайл showSmile(10000); }); } // Вызываем функцию update при старте и затем каждые 60 секунд update(); setInterval(update, 60000);