Navigation

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

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Скрипт "say time". Проговаривание времени.

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

      electric69, описывал свой вариант говоруна каждый час, вот мой.

      Скрипт проговаривает время в будни с 7:00 до 23:00, при этом громкость выставляется в 23:00 в 70% и в выходные с 9:30 по 23:00 и в 23:00 громкость уменьшается до 70%

      createState('tempOutside','');
      
      schedule("*/10 7-23 * * *", function () {
          var idSayIt = "sayit.0.tts.text";
          var date = new Date();
          var day = date.getDay(); // 0-воскр. 6-суббота
          var hour = date.getHours();
          var min = (date.getMinutes()<10?'0':'') + date.getMinutes(); // если минута меньше 10, то добавляем 0
          var volume = 100;
      
          if(hour == 23) volume = 80;
      
          // Проговариваем время по будням в 00 минут
          if((day >= 1 && day <= 5) && min == "00"){
              if(hour == 7){
                  // Если 7:00, то желаем доброго утра
                  setState (idSayIt,  volume+';Доброе утро!');
                  // и проговариваем температуру за окном
                  var tempOutside = getState("tempOutside");
                  setState (idSayIt, volume+';Сейчас за окном '+tempOutside.val+' °');
              }else{
                  // Проговариваем каждый час
                  setState (idSayIt,  volume+';'+hour+':'+min);
              }
              log('Будни '+day);
          // В 7:40, проговариваем, что пора выходить
          }else if ((day >= 1 && day <= 5) && (hour == 7 && min == 40)){
              setState (idSayIt,  volume+';'+hour+':'+min+' Пора выходить на работу!');
          // Проговариваем время по выходным начиная с 9:30 
          }else if((day == "0" || day == 6 ) && ((hour == 9 && min == 30) || (hour >= 10 && min == "00"))){
              setState (idSayIt, volume+';'+hour+':'+min);
              log('Выходной '+day);
          }
      });
      
      
      1 Reply Last reply Reply Quote 0
      • V
        vtec last edited by

        Я в первом сообщении вечером перезалью скриптик, может чего у себя поправил, а сюда не выложил 🙂

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

          Обновил скрипт. Работает стабильно.

          1 Reply Last reply Reply Quote 0
          • H
            Haus last edited by

            vtec вы наверно переделали этот скрипт в связи со скриптом регулировки громкости? может покажите? :roll:

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

              Да, есть небольшие изменения 🙂

              `createState('tempOutside','');
              var idSayIt = "sayit.0.tts.text";
              
              schedule("*/10 7-23 * * *", function () {
                  var date = new Date();
                  var day = date.getDay(); // 0-воскр. 6-суббота
                  var hour = date.getHours();
                  var min = (date.getMinutes()<10?'0':'') + date.getMinutes(); // если минута меньше 10, то добавляем 0
                  var message = [];
              
                  // Проговариваем время по будням в 00 минут
                  if((day >= 1 && day <= 5) && min == '00'){
                      if(hour == 7){
                          // Если 7:00, то желаем доброго утра
                          message.push({text: 'Доброе утро.', interval: 1000});
                          // и проговариваем температуру за окном
                          message.push({text: 'Температура за окном '+getState("tempOutside").val+' °.', interval: 5000});
                          // проговариваем прогноз на сегодняшний день
                          message.push({text: 'Погода на сегодня: '+getState("forecast.today").val, interval: 7000});
                      }else{
                          // Проговариваем каждый час
                          message.push({text: hour+':'+min, interval: 1000});
                      }
                  // В 7:40, проговариваем, что пора выходить
                  }else if ((day >= 1 && day <= 5) && (hour == 7 && min == 40)){
                      message.push({text: hour+':'+min+' Пора выходить на работу!', interval: 1000});
                  // Погода вечером
                  }else if (hour == 21 && min == 30){
                      message.push({text: 'Прогноз погоды на завтра: '+getState("forecast.tomorrow").val, interval: 1000});
                      //log("погода");
                  // Проговариваем время по выходным начиная с 9:30 
                  }else if((day == "0" || day == 6 ) && ((hour == 9 && min == 30) || (hour >= 10 && min == '00'))){
                      message.push({text: hour+':'+min, interval: 1000});
                  }
              
                  // Проговариваем наши сообщения c указанным в сообщении
                  var interval = 0;
                  for(var i=0; i<message.length; i++){/settimeout(function/(text)/{/setstate/(idsayit,/text);/log(text);/},/interval,/message[i].text);/interval/+="message[i].interval;" }/});<e=""></message.length;>`[/i][/i]
              
              S 2 Replies Last reply Reply Quote 0
              • H
                Haus last edited by

                Спасибо 😮 то что нужно, а то я из нескольких скриптов выводил инфу так то скажет то чего нибудь пропустит 🙂

                1 Reply Last reply Reply Quote 0
                • S
                  SolarW @vtec last edited by

                  Участник @vtec написал в Скрипт "say time". Проговаривание времени.:

                  Да, есть небольшие изменения 🙂

                  По моему что-то не так с последней строкой скрипта - ругается на ошибки попытка его запустить

                  javascript.0	2020-08-28 15:04:01.268	error	(4718) at processTicksAndRejections (internal/process/task_queues.js:97:5)
                  javascript.0	2020-08-28 15:04:01.268	error	(4718) at runMicrotasks (<anonymous>)
                  javascript.0	2020-08-28 15:04:01.268	error	(4718) at /opt/iobroker/node_modules/standard-as-callback/built/index.js:19:49
                  javascript.0	2020-08-28 15:04:01.267	error	(4718) at tryCatcher (/opt/iobroker/node_modules/standard-as-callback/built/utils.js:11:23)
                  javascript.0	2020-08-28 15:04:01.267	error	(4718) at /opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInRedis.js:616:17
                  javascript.0	2020-08-28 15:04:01.267	error	(4718) at /opt/iobroker/node_modules/iobroker.javascript/main.js:1139:17
                  javascript.0	2020-08-28 15:04:01.267	error	(4718) at /opt/iobroker/node_modules/iobroker.javascript/main.js:1555:17
                  javascript.0	2020-08-28 15:04:01.267	error	(4718) at prepareScript (/opt/iobroker/node_modules/iobroker.javascript/main.js:1502:37)
                  javascript.0	2020-08-28 15:04:01.267	error	(4718) at compile (/opt/iobroker/node_modules/iobroker.javascript/main.js:1279:28)
                  javascript.0	2020-08-28 15:04:01.267	error	(4718) at Object.createScript (vm.js:261:10)
                  javascript.0	2020-08-28 15:04:01.266	error	(4718) at new Script (vm.js:88:7)
                  javascript.0	2020-08-28 15:04:01.266	error	(4718) SyntaxError: Unexpected token '/'
                  javascript.0	2020-08-28 15:04:01.266	error	(4718) ^
                  javascript.0	2020-08-28 15:04:01.266	error	(4718) for(var i=0; i<message.length; i++){/settimeout(function/(text)/{/setstate/(idsayit,/text);/log(text);/},/interval,/message[i].text);/interval/+="message[i].interval;" }/});<e=""></message
                  javascript.0	2020-08-28 15:04:01.265	error	at script.js.common.govorun01:38
                  javascript.0	2020-08-28 15:04:01.265	error	(4718) script.js.common.govorun01 compile failed:
                  javascript.0	2020-08-28 15:04:01.238	info	(4718) Start javascript script.js.common.govorun01
                  
                  1 Reply Last reply Reply Quote 0
                  • S
                    SolarW @vtec last edited by

                    @vtec said in Скрипт "say time". Проговаривание времени.:

                    Да, есть небольшие изменения 🙂

                    Может кто-то подскажет что не так с последней строкой?

                    S 1 Reply Last reply Reply Quote 0
                    • S
                      SolarW @SolarW last edited by

                      Конец скрипта должен выглядеть так (tnx to @instalator )

                      // Проговариваем наши сообщения c указанным в сообщении
                         var interval = 0;
                         for(var i=0; i < message.length; i++){
                             setTimeout(function(text){
                                 setState(idSayIt,text);
                                 log(text);
                             }, interval, message[i].text);
                             interval +=message[i].interval; 
                             }
                         });
                      
                      S 1 Reply Last reply Reply Quote 0
                      • S
                        SolarW @SolarW last edited by

                        Полный вариант который у меня запускается без ошибок

                        createState('tempOutside','');
                        var idSayIt = "sayit.0.tts.text";
                         
                        schedule("*/10 7-23 * * *", function () {
                            var date = new Date();
                            var day = date.getDay(); // 0-воскр. 6-суббота
                            var hour = date.getHours();
                            var min = (date.getMinutes()<10?'0':'') + date.getMinutes(); // если минута меньше 10, то добавляем 0
                            var message = [];
                         
                            // Проговариваем время по будням в 00 минут
                            if((day >= 1 && day <= 5) && min == '00'){
                                if(hour == 7){
                                    // Если 7:00, то желаем доброго утра
                                    message.push({text: 'Доброе утро.', interval: 1000});
                                    // и проговариваем температуру за окном
                        //            message.push({text: 'Температура за окном '+getState("tempOutside").val+' °.', interval: 5000});
                                    // проговариваем прогноз на сегодняшний день
                                    message.push({text: 'Погода на сегодня: '+getState("forecast.today").val, interval: 7000});
                                }else{
                                    // Проговариваем каждый час
                                    message.push({text: hour+':'+min, interval: 1000});
                                }
                            // В 8:30, проговариваем, что пора выходить
                            }else if ((day >= 1 && day <= 5) && (hour == 8 && min == 30)){
                                message.push({text: hour+':'+min+' Пора выходить на работу!', interval: 1000});
                            // Погода вечером
                            }else if (hour == 21 && min == 30){
                                message.push({text: 'Прогноз погоды на завтра: '+getState("forecast.tomorrow").val, interval: 1000});
                                //log("погода");
                            // Проговариваем время по выходным начиная с 9:30 
                            }else if((day == "0" || day == 6 ) && ((hour == 9 && min == 30) || (hour >= 10 && min == '00'))){
                                message.push({text: hour+':'+min, interval: 1000});
                            }
                         
                         // Проговариваем наши сообщения c указанным в сообщении
                            var interval = 0;
                            for(var i=0; i < message.length; i++){
                                setTimeout(function(text){
                                    setState(idSayIt,text);
                                    log(text);
                                }, interval, message[i].text);
                                interval +=message[i].interval; 
                                }
                            });
                        
                        1 Reply Last reply Reply Quote 0
                        • First post
                          Last post

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        867
                        Online

                        31.7k
                        Users

                        79.8k
                        Topics

                        1.3m
                        Posts

                        3
                        10
                        4526
                        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