Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Русский
  3. ioBroker
  4. Скрипты
  5. ioBroker скрипты
  6. Скрипт "say time". Проговаривание времени.

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.4k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.0k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.6k

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

Geplant Angeheftet Gesperrt Verschoben ioBroker скрипты
10 Beiträge 3 Kommentatoren 4.9k Aufrufe 1 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • V Offline
    V Offline
    vtec
    schrieb am zuletzt editiert von
    #1

    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 Antwort Letzte Antwort
    0
    • V Offline
      V Offline
      vtec
      schrieb am zuletzt editiert von
      #2

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

      1 Antwort Letzte Antwort
      0
      • V Offline
        V Offline
        vtec
        schrieb am zuletzt editiert von
        #3

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

        1 Antwort Letzte Antwort
        0
        • H Offline
          H Offline
          Haus
          schrieb am zuletzt editiert von
          #4

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

          js-controller: 1.5.7 / node.js: v8.15.1/ npm: 6.4.1

          admin: 3.6.0

          javascript: 4.1.10

          web: 2.4.1 vis: 1.1.10

          cloud: 2.6.2

          Server: DELL FX170 / linux: Debian 9.5 Stretch

          Adapter: MegaD-2561, Mega-ES…

          1 Antwort Letzte Antwort
          0
          • V Offline
            V Offline
            vtec
            schrieb am zuletzt editiert von
            #5

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

            `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 Antworten Letzte Antwort
            0
            • H Offline
              H Offline
              Haus
              schrieb am zuletzt editiert von
              #6

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

              js-controller: 1.5.7 / node.js: v8.15.1/ npm: 6.4.1

              admin: 3.6.0

              javascript: 4.1.10

              web: 2.4.1 vis: 1.1.10

              cloud: 2.6.2

              Server: DELL FX170 / linux: Debian 9.5 Stretch

              Adapter: MegaD-2561, Mega-ES…

              1 Antwort Letzte Antwort
              0
              • V vtec

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

                `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 Offline
                S Offline
                SolarW
                schrieb am zuletzt editiert von
                #7

                Участник @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 Antwort Letzte Antwort
                0
                • V vtec

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

                  `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 Offline
                  S Offline
                  SolarW
                  schrieb am zuletzt editiert von
                  #8

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

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

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

                  S 1 Antwort Letzte Antwort
                  0
                  • S SolarW

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

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

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

                    S Offline
                    S Offline
                    SolarW
                    schrieb am zuletzt editiert von
                    #9

                    Конец скрипта должен выглядеть так (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 Antwort Letzte Antwort
                    0
                    • S SolarW

                      Конец скрипта должен выглядеть так (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 Offline
                      S Offline
                      SolarW
                      schrieb am zuletzt editiert von
                      #10

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

                      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 Antwort Letzte Antwort
                      0
                      Antworten
                      • In einem neuen Thema antworten
                      Anmelden zum Antworten
                      • Älteste zuerst
                      • Neuste zuerst
                      • Meiste Stimmen


                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      783

                      Online

                      32.4k

                      Benutzer

                      81.4k

                      Themen

                      1.3m

                      Beiträge
                      Community
                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                      ioBroker Community 2014-2025
                      logo
                      • Anmelden

                      • Du hast noch kein Konto? Registrieren

                      • Anmelden oder registrieren, um zu suchen
                      • Erster Beitrag
                        Letzter Beitrag
                      0
                      • Home
                      • Aktuell
                      • Tags
                      • Ungelesen 0
                      • Kategorien
                      • Unreplied
                      • Beliebt
                      • GitHub
                      • Docu
                      • Hilfe