Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Русский
    3. ioBroker
    4. Скрипты
    5. ioBroker скрипты
    6. Погода на три дня

    NEWS

    • 15. 05. Wartungsarbeiten am ioBroker Forum

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    Погода на три дня

    This topic has been deleted. Only users with topic management privileges can see it.
    • V
      vtec last edited by vtec

      Заменить цифры на свой город в данной строке: 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);
      
      
      1 Reply Last reply Reply Quote 0
      • aurodionov
        aurodionov last edited by

        vtec, спасибо за скрипт, работает замечательно.

        Правда я пока не голосом пользую а отображаю в виз.
        2665_ical_log.txt

        1 Reply Last reply Reply Quote 0
        • V
          vtec last edited by

          Да тут половина Bluefox написал 🙂

          Я допилил и протестировал.

          А в виз я вообще полный ноль, пару раз открывал смотрел, так дальше и не ушел :oops:

          Если бы кто объяснил с самых низов, как например хотя бы создать кнопку, которая изменяла бы свое состояние от выключателя, был бы благодарен 😉

          1 Reply Last reply Reply Quote 0
          • S
            spectrekr last edited by

            А может стоит задуматься о создании драйвера, на подобии yr.no было бы удобно. А то все скриптами, да скриптами 🙂

            1 Reply Last reply Reply Quote 0
            • aurodionov
              aurodionov last edited by

              Так оно и так работает, спарсили скриптом , получили на выходе три переменные. Потом хоть проговаривай ,хоть отображай в виз.

              Пишу с пульта….

              1 Reply Last reply Reply Quote 0
              • I
                instalator last edited by

                У всех с такой ошибкой работает?
                266_zx.png

                1 Reply Last reply Reply Quote 0
                • Bluefox
                  Bluefox last edited by

                  Символы "<" и ">" не обязательно писать с эскейпом.

                  1 Reply Last reply Reply Quote 0
                  • aurodionov
                    aurodionov last edited by

                    У кого работает,подскажите что исправить. Вторые сутки рублюсь в игру поставь и настрой, уже туплю помаленьку.

                    1 Reply Last reply Reply Quote 0
                    • I
                      instalator last edited by

                      @aurodionov:

                      У кого работает,подскажите что исправить. Вторые сутки рублюсь в игру поставь и настрой, уже туплю помаленьку. `
                      Работает. а вчем проблема?

                      У меня такой код

                      ! ````
                      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>

                      1 Reply Last reply Reply Quote 0
                      • aurodionov
                        aurodionov last edited by

                        instalator, ругается как у Вас на скрине.

                        1 Reply Last reply Reply Quote 0
                        • I
                          instalator last edited by

                          @aurodionov:

                          instalator, ругается как у Вас на скрине. `
                          Да, это он на экранирование символов, но работает.

                          1 Reply Last reply Reply Quote 0
                          • S
                            Securbond last edited by

                            Извините, но пока разбираюсь будут очень глупые вопросы.

                            А куда прописывать этот скрипт что бы он работал ?

                            Спасибо.

                            1 Reply Last reply Reply Quote 0
                            • S
                              spectrekr last edited by

                              @Securbond:

                              Извините, но пока разбираюсь будут очень глупые вопросы.

                              А куда прописывать этот скрипт что бы он работал ?

                              Спасибо. `
                              Установить драйвер "Javascript/Coffescript Script Engine". http://www.iobroker.net/?page_id=560&lang=ruНа вкладке скрипты создать новый и туда вставить код.

                              1 Reply Last reply Reply Quote 0
                              • S
                                Securbond last edited by

                                @spectrekr:

                                @Securbond:

                                Извините, но пока разбираюсь будут очень глупые вопросы.

                                А куда прописывать этот скрипт что бы он работал ?

                                Спасибо. Установить драйвер "Javascript/Coffescript Script Engine". [http://www.iobroker.net/?page_id=560&amp;lang=ru](http://www.iobroker.net/?page_id=560&amp;lang=ru)На вкладке скрипты создать новый и туда вставить код.

                                Спасибо, вроде добавил. Может еще подскажешь как проверить вообще работает драйвер голоса или нет? (драйвер установлен).

                                Молчит как рыба. пробовал да же интервал менять… Молчит...((

                                1 Reply Last reply Reply Quote 0
                                • I
                                  instalator last edited by

                                  @Securbond:

                                  @spectrekr:

                                  @Securbond:

                                  Извините, но пока разбираюсь будут очень глупые вопросы.

                                  А куда прописывать этот скрипт что бы он работал ?

                                  Спасибо. Установить драйвер "Javascript/Coffescript Script Engine". [http://www.iobroker.net/?page_id=560&amp;lang=ru](http://www.iobroker.net/?page_id=560&amp;lang=ru)На вкладке скрипты создать новый и туда вставить код.

                                  Спасибо, вроде добавил. Может еще подскажешь как проверить вообще работает драйвер голоса или нет? (драйвер установлен). `
                                  266_121212121.png

                                  1 Reply Last reply Reply Quote 0
                                  • S
                                    Securbond last edited by

                                    @instalator:

                                    @Securbond:

                                    @spectrekr:

                                    Установить драйвер "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 ….. и т.п.)

                                    1 Reply Last reply Reply Quote 0
                                    • I
                                      instalator last edited by

                                      @Securbond:

                                      @instalator:

                                      @Securbond:

                                      Спасибо, вроде добавил. Может еще подскажешь как проверить вообще работает драйвер голоса или нет? (драйвер установлен). filename="121212121.png" index="0">~~

                                      Я правильно понимаю что если я напишу в конце скрипта - on({time: "37 */1 * * *"}, getForecast);

                                      то он должен говорить погоду каждый час в 37 минут (11:37, 12:37 ….. и т.п.) `
                                      "37 * * * *"

                                      1 Reply Last reply Reply Quote 0
                                      • S
                                        Securbond last edited by

                                        Видимо я туго соображаю, но скрипт у меня молчит.

                                        Может нужно эти переменные где то создавать ? - forecast.today / forecast.tomorrow / forecast.dayAfterTomorrow

                                        1 Reply Last reply Reply Quote 0
                                        • I
                                          instalator last edited by

                                          @Securbond:

                                          Видимо я туго соображаю, но скрипт у меня молчит `
                                          А он включен?

                                          В лог что нибудь пишет?
                                          266___________.png

                                          1 Reply Last reply Reply Quote 0
                                          • I
                                            instalator last edited by

                                            @Securbond:

                                            Может нужно эти переменные где то создавать ? - forecast.today / forecast.tomorrow / forecast.dayAfterTomorrow `
                                            Они и создаются этими строками :

                                            createState('forecast.today','');
                                            createState('forecast.tomorrow','');
                                            createState('forecast.dayAfterTomorrow','');
                                            
                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            711
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

                                            weather forecast
                                            9
                                            45
                                            12106
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo