NEWS
Скрипт "say time". Проговаривание времени.
-
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); } });
-
Я в первом сообщении вечером перезалью скриптик, может чего у себя поправил, а сюда не выложил
-
Обновил скрипт. Работает стабильно.
-
vtec вы наверно переделали этот скрипт в связи со скриптом регулировки громкости? может покажите? :roll:
-
Да, есть небольшие изменения
`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]
-
Спасибо то что нужно, а то я из нескольких скриптов выводил инфу так то скажет то чего нибудь пропустит
-
Участник @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
-
@vtec said in Скрипт "say time". Проговаривание времени.:
Да, есть небольшие изменения
Может кто-то подскажет что не так с последней строкой?
-
Конец скрипта должен выглядеть так (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; } });
-
Полный вариант который у меня запускается без ошибок
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; } });