Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • 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

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    655

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    18
    1
    5.7k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.5k

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

Geplant Angeheftet Gesperrt Verschoben ioBroker скрипты
10 Beiträge 3 Kommentatoren 5.1k Aufrufe 1 Beobachtet
  • Ä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

                      Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

                      Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

                      Mit deinem Input könnte dieser Beitrag noch besser werden 💗

                      Registrieren Anmelden
                      Antworten
                      • In einem neuen Thema antworten
                      Anmelden zum Antworten
                      • Älteste zuerst
                      • Neuste zuerst
                      • Meiste Stimmen


                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      531

                      Online

                      32.7k

                      Benutzer

                      82.6k

                      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