NEWS
Погода на три дня
-
Заменить цифры на свой город в данной строке: http://meteoinfo.ru/rss/forecasts/29430
Создаются 3-и переменные (сегодня, завтра, послезавтра), берем нужную переменную и проговариваем по времени
forecast.today
forecast.tomorrow
forecast.dayAfterTomorrow
Воспроизводим
setState (idSayIt, 'Прогноз погоды на сегодня: '+getState("forecast.today").val);
У меня прогноз проговаривается утром (7:00) на сегодня и вечером (21:30) на завтра.
Предложения и пожелания?
createState('weather_forecast.today',''); createState('weather_forecast.tomorrow',''); createState('weather_forecast.dayAfterTomorrow',''); var request = require('request'); function getWeatherForecast() { request ('http://meteoinfo.ru/rss/forecasts/29430', function (error, response, body) { // Получаем ответ if (!error && response.statusCode == 200) { // Парсим данные var desc = body.match(/\<description\>(.*)\<\/description\>/g); var date = body.match(/\<item\>\<title\>(.*)\<\/title\>/g); // Если данные существуют, то обрабатываем if (desc && date) { // Удаляем лишнюю строку из desc desc.splice(0, 1); var result = []; for(var t = 0; t < date.length; t++) { // Окончательно формируем строку с прогнозом (удаляем теги и не нужную информацию) result.push({date: date[t].replace(/<item><title>(.*)<\/title>/g, ""), desc: desc[t].replace("<description>", "").replace("</description>", "").replace(/м\/с/g, "м в секунду").replace(/Атмосферное давление ночью (.*) мм рт.ст./g, "").replace(/Вероятность осадков (.*)\%/g, "") }); } // Сохраняем данные for(var t = 0; t < result.length; t++) { switch (t) { case 0: // Прогноз на сегодня setState('weather_forecast.today', result[0].desc); break; case 1: // Прогноз на завтра setState('weather_forecast.tomorrow', result[1].desc); break; case 2: // Прогноз на послезавтра setState('weather_forecast.dayAfterTomorrow', result[2].desc); break; } log(result[t].date + " => " + result[t].desc); } } } }); } // Запускаем через 2 часа 45 минут on({time: "45 */2 * * *"}, getWeatherForecast);
-
vtec, спасибо за скрипт, работает замечательно.
Правда я пока не голосом пользую а отображаю в виз.
2665_ical_log.txt -
Да тут половина Bluefox написал
Я допилил и протестировал.
А в виз я вообще полный ноль, пару раз открывал смотрел, так дальше и не ушел :oops:
Если бы кто объяснил с самых низов, как например хотя бы создать кнопку, которая изменяла бы свое состояние от выключателя, был бы благодарен
-
А может стоит задуматься о создании драйвера, на подобии yr.no было бы удобно. А то все скриптами, да скриптами
-
Так оно и так работает, спарсили скриптом , получили на выходе три переменные. Потом хоть проговаривай ,хоть отображай в виз.
Пишу с пульта….
-
У всех с такой ошибкой работает?
266_zx.png -
Символы "<" и ">" не обязательно писать с эскейпом.
-
У кого работает,подскажите что исправить. Вторые сутки рублюсь в игру поставь и настрой, уже туплю помаленьку.
-
У кого работает,подскажите что исправить. Вторые сутки рублюсь в игру поставь и настрой, уже туплю помаленьку. `
Работает. а вчем проблема?У меня такой код
! ````
createState('forecast.today','');
createState('forecast.tomorrow','');
createState('forecast.dayAfterTomorrow','');
! var request = require('request');
! function getForecast() {
request ('http://meteoinfo.ru/rss/forecasts/29838', function (error, response, body) { //29838 - Барнеаполь
// Получаем ответ
if (!error && response.statusCode == 200) {
// Парсим данные
var desc = body.match(/<description>(.)</description>/g);
var date = body.match(/<item><title>(.)</title>/g);
// Если данные существуют, то обрабатываем
if (desc && date) {
// Удаляем лишнюю строку из desc
desc.splice(0, 1);
var result = [];
for(var t = 0; t < date.length; t++) {
// Окончательно формируем строку с прогнозом (удаляем теги и не нужную информацию)
result.push({date: date[t].replace("<title>", "").replace("</title>", ""), desc: desc[t].replace("<description>", "").replace("</description>", "").replace(/м/c/g, "м в секунду").replace(/Атмосферное давление ночью (.) мм рт.ст. /g, "").replace(/Вероятность осадков (.)%/g, "") });
}// Сохраняем данные for(var t = 0; t < result.length; t++) { switch (t) { case 0: // Прогноз на сегодня setState('forecast.today', result[0].desc); break; case 1: // Прогноз на завтра setState('forecast.tomorrow', result[1].desc); break; case 2: // Прогноз на послезавтра setState('forecast.dayAfterTomorrow', result[2].desc); break; } log(result[t].date + " => " + result[t].desc); } } } });
}
! // Запускаем в 45 минут через 2 часа
on({time: "45 */2 * * *"}, getForecast);</title></item></description> -
instalator, ругается как у Вас на скрине.
-
instalator, ругается как у Вас на скрине. `
Да, это он на экранирование символов, но работает. -
Извините, но пока разбираюсь будут очень глупые вопросы.
А куда прописывать этот скрипт что бы он работал ?
Спасибо.
-
Извините, но пока разбираюсь будут очень глупые вопросы.
А куда прописывать этот скрипт что бы он работал ?
Спасибо. `
Установить драйвер "Javascript/Coffescript Script Engine". http://www.iobroker.net/?page_id=560&lang=ruНа вкладке скрипты создать новый и туда вставить код. -
Извините, но пока разбираюсь будут очень глупые вопросы.
А куда прописывать этот скрипт что бы он работал ?
Спасибо.
Установить драйвер "Javascript/Coffescript Script Engine". [http://www.iobroker.net/?page_id=560&lang=ru](http://www.iobroker.net/?page_id=560&lang=ru)На вкладке скрипты создать новый и туда вставить код.
Спасибо, вроде добавил. Может еще подскажешь как проверить вообще работает драйвер голоса или нет? (драйвер установлен).
Молчит как рыба. пробовал да же интервал менять… Молчит...((
-
Извините, но пока разбираюсь будут очень глупые вопросы.
А куда прописывать этот скрипт что бы он работал ?
Спасибо.
Установить драйвер "Javascript/Coffescript Script Engine". [http://www.iobroker.net/?page_id=560&lang=ru](http://www.iobroker.net/?page_id=560&lang=ru)На вкладке скрипты создать новый и туда вставить код.
Спасибо, вроде добавил. Может еще подскажешь как проверить вообще работает драйвер голоса или нет? (драйвер установлен). `
-
Установить драйвер "Javascript/Coffescript Script Engine". http://www.iobroker.net/?page_id=560&lang=ruНа вкладке скрипты создать новый и туда вставить код. `
Спасибо, вроде добавил. Может еще подскажешь как проверить вообще работает драйвер голоса или нет? (драйвер установлен).
filename="121212121.png" index="0">~~
Я правильно понимаю что если я напишу в конце скрипта - on({time: "37 */1 * * *"}, getForecast);
то он должен говорить погоду каждый час в 37 минут (11:37, 12:37 ….. и т.п.)
-
Спасибо, вроде добавил. Может еще подскажешь как проверить вообще работает драйвер голоса или нет? (драйвер установлен).
filename="121212121.png" index="0">~~
Я правильно понимаю что если я напишу в конце скрипта - on({time: "37 */1 * * *"}, getForecast);
то он должен говорить погоду каждый час в 37 минут (11:37, 12:37 ….. и т.п.) `
"37 * * * *" -
Видимо я туго соображаю, но скрипт у меня молчит.
Может нужно эти переменные где то создавать ? - forecast.today / forecast.tomorrow / forecast.dayAfterTomorrow
-
Видимо я туго соображаю, но скрипт у меня молчит `
А он включен?В лог что нибудь пишет?
266___________.png -
Может нужно эти переменные где то создавать ? - forecast.today / forecast.tomorrow / forecast.dayAfterTomorrow `
Они и создаются этими строками :createState('forecast.today',''); createState('forecast.tomorrow',''); createState('forecast.dayAfterTomorrow','');