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); } }); -
Да, есть небольшие изменения :)
`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] -
Да, есть небольшие изменения :)
`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 -
Да, есть небольшие изменения :)
`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 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; } }); -
Конец скрипта должен выглядеть так (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; } });
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