NEWS
Скрипт регулировки громкости
-
Окончательная моя версия.
!
schedule("0 * * * *", function () { var date = new Date(); var hour = date.getHours(); if(hour >= 0 && hour <= 6){ setState(('sayit.0.tts.volume'),0, function () { log('Установлена громкость ' + getState('sayit.0.tts.volume').val)}); } if(hour >= 7 && hour <= 9){ setState(('sayit.0.tts.volume'),60, function () { log('Установлена громкость ' + getState('sayit.0.tts.volume').val)}); } if(hour >= 10 && hour <= 21){ setState(('sayit.0.tts.volume'),90, function () { log('Установлена громкость ' + getState('sayit.0.tts.volume').val)}); } if(hour >= 22 && hour <= 23){ setState(('sayit.0.tts.volume'),70, function () { log('Установлена громкость ' + getState('sayit.0.tts.volume').val)}); } }); !
И версия vtec
!
var volumeId = "sayit.0.tts.volume"; ! // Утанавливаем в 6:59 громость 90 schedule("59 6 * * *", function(){ setState(volumeId,90,function(){ log('Установлена громкость '+ getState(volumeId).val); }); }); // Утанавливаем в 9:29 громость 100 schedule("29 9 * * *", function(){ setState(volumeId,100,function(){ log('Установлена громкость '+ getState(volumeId).val); }); }); // Утанавливаем в 22:59 громость 80 schedule("59 22 * * *", function(){ setState(volumeId,80,function(){ log('Установлена громкость '+ getState(volumeId).val); }); }); !
Оба скрипта по мере изменений, обсуждения и обновления буду обновлять в этом сообщении. -
Да вроде нормально, только я бы дописал log('Установлена громкость****:**** '+ getState('sayit.0.tts.volume').val);
-
Как я и думал, так и есть
пример:
setState(('sayit.0.tts.volume'),60);
setState(('sayit.0.tts.text'),"80;Привет");
Последняя строчка устанавливает переменную sayit.0.tts.volume в 80%.
-
Как я и думал, так и есть
пример:
setState(('sayit.0.tts.volume'),60);
setState(('sayit.0.tts.text'),"80;Привет");
Последняя строчка устанавливает переменную sayit.0.tts.volume в 80%. `
Я правильно понял, вы про скрипт календаря? Так а как у вас получается в 80? Если брать мою вариацию, то там громкость берется в начале скрипта, а сколько я вчера контролировал, то скрипт установки громкости отрабатывает раньше, соответственно уже громкость берется новая. -
Да это я про календарь.
-
Ну не знаю как у вас получается что устанавливает в 80, разве что прописанно конкретно. Потестировал, вот лог. Правда не понятно откуда цифры берутся при смене громкости, он пишет совсем другие значения, я так догадываюсь, что надо сделать задержку перед проверкой установленной громкости. А вот воспроизводит событие на той громкости которую выставил скрипт.
! javascript-0 2015-07-31 14:00:00 info script.js.Say_iCal: Громкость сообщения 80
! javascript-0 2015-07-31 14:00:00 info script.js.Set_Volume: Установлена громкость 41
! javascript-0 2015-07-31 13:50:00 info script.js.Say_iCal: Громкость сообщения 45
! javascript-0 2015-07-31 13:01:05 info script.js.Set_Volume: registered 0 subscriptions and 1 schedule
! javascript-0 2015-07-31 13:01:05 info Start javascript script.js.Set_Volume
! javascript-0 2015-07-31 13:01:05 info Stop script script.js.Set_Volume
! javascript-0 2015-07-31 13:00:00 info script.js.Set_Volume: Установлена громкость 45
! javascript-0 2015-07-31 13:00:00 info script.js.Say_iCal: Громкость сообщения 45
! javascript-0 2015-07-31 12:34:51 info script.js.Set_Volume: registered 0 subscriptions and 1 schedule
! javascript-0 2015-07-31 12:34:51 info Start javascript script.js.Set_Volume
! javascript-0 2015-07-31 12:34:51 info Stop script script.js.Set_Volume
! javascript-0 2015-07-31 12:30:00 info script.js.Say_iCal: Громкость сообщения 50
! javascript-0 2015-07-31 12:19:07 info script.js.Set_Volume: registered 0 subscriptions and 1 schedule
! javascript-0 2015-07-31 12:19:07 info Start javascript script.js.Set_Volume
! javascript-0 2015-07-31 12:19:07 info Stop script script.js.Set_Volume
! javascript-0 2015-07-31 12:04:40 info script.js.Set_Volume: registered 0 subscriptions and 1 schedule
! javascript-0 2015-07-31 12:04:40 info Start javascript script.js.Set_Volume
! javascript-0 2015-07-31 12:04:40 info Stop script script.js.Set_Volume
! javascript-0 2015-07-31 12:00:00 info script.js.Say_iCal: Громкость сообщения 50
! javascript-0 2015-07-31 12:00:00 info script.js.Set_Volume: Установлена громкость 72
А вот в журнале изменений видно что ставит правильные значения.!
-
Выявленные баги данного скрипта, что в 23, что в 1 громкость выставляется по дефолту, а это максимум.
Смыс этой строки case 0: setState(('sayit.0.tts.volume'),0) никакой.
Нужно похоже переходить на if.
4489_objekte.png
4489_objekt_id.png
4489_erstes_skript_mit_blockly.pdf -
Не нужны, не увидел где данные переменные используются.
createState('tempOutside','');
var volume = getState('sayit.0.tts.volume').val;
-
Каждый час правильно так:
0 * * * *
-
Выявленные баги данного скрипта, что в 23, что в 1 громкость выставляется по дефолту, а это максимум.
Смыс этой строки case 0: setState(('sayit.0.tts.volume'),0) никакой.
Нужно похоже переходить на if. `
Это я не додумал, поправил в новой версии.
@vtec:Не нужны, не увидел где данные переменные используются.
createState('tempOutside','');
var volume = getState('sayit.0.tts.volume').val; `
Это пережиток версии скрипта через if.А createState('tempOutside',''); не знаю для чего нада, думал обязательно. Т.к. в часах тоже присутствует, а где используется не увидел, подумал что системная.
@vtec:Каждый час правильно так:
0 * * * * `
Об этом узнал чуть позже, забыл поправить в здешней версии.Новый вариант. Через switch не получается диапазоны делать. Сделал через if.
!
schedule("0 * * * *", function () { var date = new Date(); var hour = date.getHours(); if(hour >= 0 && hour <= 6){ setState(('sayit.0.tts.volume'),0); log('Установлена громкость '+ getState('sayit.0.tts.volume').val); } if(hour >= 7 && hour <= 9){ setState(('sayit.0.tts.volume'),40); log('Установлена громкость '+ getState('sayit.0.tts.volume').val); } if(hour >= 10 && hour <= 21){ setState(('sayit.0.tts.volume'),80); log('Установлена громкость '+ getState('sayit.0.tts.volume').val); } if(hour >= 22 && hour <= 23){ setState(('sayit.0.tts.volume'),50); log('Установлена громкость '+ getState('sayit.0.tts.volume').val); } }); !
-
А createState('tempOutside',''); не знаю для чего нада, думал обязательно. Т.к. в часах тоже присутствует, а где используется не увидел, подумал что системная. `
Это создаётся переменная для внешней температуры, ну насколько я понял
3428_blockly2.txt -
Это я для себя писал, у меня внешний скрипт записывает в эту переменную значение температуры на улице, для дальнейшего произношения с утра.
-
Вот мое решение:
var volumeId = "sayit.0.tts.volume"; // Утанавливаем в 6:59 громость 90 schedule("59 6 * * *", function(){ setState(volumeId,90,function(){ log('Установлена громкость '+ getState(volumeId).val); }); }); // Утанавливаем в 9:29 громость 100 schedule("29 9 * * *", function(){ setState(volumeId,100,function(){ log('Установлена громкость '+ getState(volumeId).val); }); }); // Утанавливаем в 22:59 громость 80 schedule("59 22 * * *", function(){ setState(volumeId,80,function(){ log('Установлена громкость '+ getState(volumeId).val); }); });
-
Это я для себя писал, у меня внешний скрипт записывает в эту переменную значение температуры на улице, для дальнейшего произношения с утра. `
А можно этот скрипт подсмотреть :roll:
-
Что именно интересует?
-
-
Если имеется в виду внешний скрипт, то там нет ничего такого пару строчек на php. Могу выложить. Сама температура берется с датчика 1-wire
-
Если имеется в виду внешний скрипт, то там нет ничего такого пару строчек на php. Могу выложить. Сама температура берется с датчика 1-wire `
Был бы рад, если нетрудно. -
// Свое значение для $temp берем от датчика $temp = "-19.36"; // отправляем температуру умному дому $roundTemp = round($temp); // tempOutside данная переменная должна быть создана в ioBroker $fp=fopen("http://192.168.0.200:8087/set/javascript.0.tempOutside?value=$roundTemp","r"); fclose($fp);
-
// Свое значение для $temp берем от датчика $temp = "-19.36"; // отправляем температуру умному дому $roundTemp = round($temp); // tempOutside данная переменная должна быть создана в ioBroker $fp=fopen("http://192.168.0.200:8087/set/javascript.0.tempOutside?value=$roundTemp","r"); fclose($fp); ```` `
Спасибо. С наступающим
Дополню: в iobroker должен быть запущен драйвер simple-api