Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Русский
    3. ioBroker
    4. Скрипты
    5. ioBroker скрипты
    6. Скрипт регулировки громкости

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Скрипт регулировки громкости

    This topic has been deleted. Only users with topic management privileges can see it.
    • S
      spectrekr last edited by

      Окончательная моя версия.

      ! 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); }); }); !
      Оба скрипта по мере изменений, обсуждения и обновления буду обновлять в этом сообщении.

      1 Reply Last reply Reply Quote 0
      • V
        vtec last edited by

        Да вроде нормально, только я бы дописал log('Установлена громкость****:**** '+ getState('sayit.0.tts.volume').val);

        1 Reply Last reply Reply Quote 0
        • V
          vtec last edited by

          Как я и думал, так и есть

          пример:

          setState(('sayit.0.tts.volume'),60);

          setState(('sayit.0.tts.text'),"80;Привет");

          Последняя строчка устанавливает переменную sayit.0.tts.volume в 80%.

          1 Reply Last reply Reply Quote 0
          • S
            spectrekr last edited by

            @vtec:

            Как я и думал, так и есть

            пример:

            setState(('sayit.0.tts.volume'),60);

            setState(('sayit.0.tts.text'),"80;Привет");

            Последняя строчка устанавливает переменную sayit.0.tts.volume в 80%. `
            Я правильно понял, вы про скрипт календаря? Так а как у вас получается в 80? Если брать мою вариацию, то там громкость берется в начале скрипта, а сколько я вчера контролировал, то скрипт установки громкости отрабатывает раньше, соответственно уже громкость берется новая.

            1 Reply Last reply Reply Quote 0
            • V
              vtec last edited by

              Да это я про календарь.

              1 Reply Last reply Reply Quote 0
              • S
                spectrekr last edited by

                Ну не знаю как у вас получается что устанавливает в 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
                А вот в журнале изменений видно что ставит правильные значения.

                ! 286_2.png

                1 Reply Last reply Reply Quote 0
                • V
                  vtec last edited by

                  Выявленные баги данного скрипта, что в 23, что в 1 громкость выставляется по дефолту, а это максимум.

                  Смыс этой строки case 0: setState(('sayit.0.tts.volume'),0) никакой.

                  Нужно похоже переходить на if.
                  4489_objekte.png
                  4489_objekt_id.png
                  4489_erstes_skript_mit_blockly.pdf

                  1 Reply Last reply Reply Quote 0
                  • V
                    vtec last edited by

                    Не нужны, не увидел где данные переменные используются.

                    createState('tempOutside','');

                    var volume = getState('sayit.0.tts.volume').val;

                    1 Reply Last reply Reply Quote 0
                    • V
                      vtec last edited by

                      Каждый час правильно так:

                      0 * * * *

                      1 Reply Last reply Reply Quote 0
                      • S
                        spectrekr last edited by

                        @vtec:

                        Выявленные баги данного скрипта, что в 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); } }); !

                        1 Reply Last reply Reply Quote 0
                        • aurodionov
                          aurodionov last edited by

                          @spectrekr:

                          А createState('tempOutside',''); не знаю для чего нада, думал обязательно. Т.к. в часах тоже присутствует, а где используется не увидел, подумал что системная. `
                          Это создаётся переменная для внешней температуры, ну насколько я понял
                          3428_blockly2.txt

                          1 Reply Last reply Reply Quote 0
                          • V
                            vtec last edited by

                            Это я для себя писал, у меня внешний скрипт записывает в эту переменную значение температуры на улице, для дальнейшего произношения с утра.

                            1 Reply Last reply Reply Quote 0
                            • V
                              vtec last edited by

                              Вот мое решение:

                              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);
                              	});
                              });
                              
                              
                              1 Reply Last reply Reply Quote 0
                              • H
                                Haus last edited by

                                @vtec:

                                Это я для себя писал, у меня внешний скрипт записывает в эту переменную значение температуры на улице, для дальнейшего произношения с утра. `

                                А можно этот скрипт подсмотреть :roll:

                                1 Reply Last reply Reply Quote 0
                                • V
                                  vtec last edited by

                                  Что именно интересует?

                                  1 Reply Last reply Reply Quote 0
                                  • H
                                    Haus last edited by

                                    @vtec:

                                    Что именно интересует? `

                                    скрипт записывает в эту переменную значение температуры на улице

                                    1 Reply Last reply Reply Quote 0
                                    • V
                                      vtec last edited by

                                      Если имеется в виду внешний скрипт, то там нет ничего такого пару строчек на php. Могу выложить. Сама температура берется с датчика 1-wire

                                      1 Reply Last reply Reply Quote 0
                                      • H
                                        Haus last edited by

                                        @vtec:

                                        Если имеется в виду внешний скрипт, то там нет ничего такого пару строчек на php. Могу выложить. Сама температура берется с датчика 1-wire `
                                        Был бы рад, если нетрудно.

                                        1 Reply Last reply Reply Quote 0
                                        • V
                                          vtec last edited by

                                          // Свое значение для $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);
                                          
                                          
                                          1 Reply Last reply Reply Quote 0
                                          • H
                                            Haus last edited by

                                            @vtec:

                                            // Свое значение для $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 😉

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            699
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            5
                                            21
                                            6705
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo