Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • 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. Видимость переменных. И еще пара вопросов.

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    21
    1
    949

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.1k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.4k

Видимость переменных. И еще пара вопросов.

Geplant Angeheftet Gesperrt Verschoben ioBroker скрипты
12 Beiträge 4 Kommentatoren 3.1k Aufrufe
  • Ä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.
  • X Offline
    X Offline
    XAPuTOH
    schrieb am zuletzt editiert von
    #3

    Т.е. exec выполняется асинхронно. Соответственно нельзя строить скрипт таким образом как я сперва задумал, а нужно строить на колбэках.

    Сперва exec. внутри него основной скрипт. а если exec несколько. то каждый последующий нужно запускать в колбэке предидущего?

    1 Antwort Letzte Antwort
    0
    • X Offline
      X Offline
      XAPuTOH
      schrieb am zuletzt editiert von
      #4

      @instalator:

      кнопка означает выполнять скрипт или нет. Если отключено то код в скрипте не будет работать `

      Т.е. я должен сделать скрипт запущенным. Соответственно он один раз в момент запуска отработает. А потом из другого скрипта я смогу его запускать?

      1 Antwort Letzte Antwort
      0
      • I Offline
        I Offline
        instalator
        schrieb am zuletzt editiert von
        #5

        @XAPuTOH:

        @instalator:

        кнопка означает выполнять скрипт или нет. Если отключено то код в скрипте не будет работать `

        Т.е. я должен сделать скрипт запущенным. Соответственно он один раз в момент запуска отработает. А потом из другого скрипта я смогу его запускать? ` зачем его запускать если он уже запущен? Опиши алгоритм что хочешь сделать, буду дома отпишуст

        Высокий уровень Децибел вреден для здоровья!

        http://blog.instalator.ru/

        1 Antwort Letzte Antwort
        0
        • I Offline
          I Offline
          instalator
          schrieb am zuletzt editiert von
          #6

          @XAPuTOH:

          Т.е. exec выполняется асинхронно. Соответственно нельзя строить скрипт таким образом как я сперва задумал, а нужно строить на колбэках.

          Сперва exec. внутри него основной скрипт. а если exec несколько. то каждый последующий нужно запускать в колбэке предидущего? `
          Не только exec, все асинхронно. Мысли в правильную сторону, через колбеки

          Высокий уровень Децибел вреден для здоровья!

          http://blog.instalator.ru/

          1 Antwort Letzte Antwort
          0
          • X Offline
            X Offline
            XAPuTOH
            schrieb am zuletzt editiert von
            #7

            @XAPuTOH:

            Хотя может я не правильно понял идиологию?

            У меня есть некий набор действий который нужно выполнить в двух случаях:

            1. По расписанию

            2. По запросу пользователя.

            Я предположил что можно написать скрипт "Набор действий" выполнения этих действий. далее пишу ещё два скрипта:

            1. По расписанию раз в 20 минут выполнять "Набор действий"

            2. В случае нажатия на кнопку выполнить "Набор действий"

            Вроде как запуск скрипта возможен - runScript/startScript

            Я использовал startScript. и он почемуто не сработал т.е. сперва я неправильно вводил название скрипта и были ошибки. но когда ввел правильно ничего не произошло.

            Как такую задачу выполнять?

            Есть вариант подписать скрипт на какуюнибудь переменную а других скриптах менять её. Но как то нелогично мне это. `

            Ну вот. Т.е. хочется использовать скрипт как функцию. Т.е. это заданный набор действий который нужно производить при возникновении разных условий(запрос пользователя/расписание и т.п.). Скрипт этот анализирует несколько состояний и делает вывод о том какие набор действий ему произвести.

            Конкретно мой случай:

            Есть датчик температуры, есть текущее время и есть режим работы отопления.

            Скрипт в зависимости от этих данных управляет котлом.

            Режимы работы отопление:

            1. Выключено. тут все понятно

            2. Включено. Тут просто включается котел и жарит на все пироги.

            3. Поддержка минимальной температуры. Тут вводится зависимость от температуры и времени. Система отопления на основе теплого пола. соответственно инертна. Настройки такие. с 7 утра до 23 вечера включать котел если температура упала ниже 5 градусов. с 23 до 7 утра включать если температура меньше 10. Сейчас этот режим. как правило за день температура падает на 2-3 градуса и становится равной 8. в 23 котел включается и прогревает помещение до 10 градусов и отключается. Т.е. работает ночью по ночному дешевому тарифу. Задача чтоб дом не замерз пока в нем никого нету

            4. Поддержка нормальной температуры. Тоже что и пункт 3 только уставки 15 днем и 25 ночью соответственно. При желании приехать в дом - заранее включаю этот режим и дом к приезду должен прогреться.

            Все это описано в скрипте. Режим работы - объект enum с соответствующими состояниями

            Сейчас скрипт работает по расписанию. каждые 15 минут проверяет состояния и делает выводы включить или отключить котел. Можно было бы повесить на изменение температуры. но как то котел не включился из за того что скрипт почемуто пропустил запуск по расписанию. И у меня возникла мысль что лучше он переодически будет проверять состояние системы и делать выводы. чем пропустит какоето событе и не выполнит их.

            Так как у меня пока сложности с доступом к админке из инета я настроил управление режимами через телеграм. посылаю команду на изменение режима. Т.е. решил я в выхи приехать в теплый дом - посылаю команду включить нормальный режим отопления.

            И хочу видет реакцию на эту команду сразу а не через 15 минут после команды. соответственно помимо выполнения по расписанию нужно еще и по событию запускать этот скрипт.

            Как то так. :)

            1 Antwort Letzte Antwort
            0
            • I Offline
              I Offline
              instalator
              schrieb am zuletzt editiert von
              #8

              @XAPuTOH:

              @XAPuTOH:

              Хотя может я не правильно понял идиологию?

              У меня есть некий набор действий который нужно выполнить в двух случаях:

              1. По расписанию

              2. По запросу пользователя.

              Я предположил что можно написать скрипт "Набор действий" выполнения этих действий. далее пишу ещё два скрипта:

              1. По расписанию раз в 20 минут выполнять "Набор действий"

              2. В случае нажатия на кнопку выполнить "Набор действий"

              Вроде как запуск скрипта возможен - runScript/startScript

              Я использовал startScript. и он почемуто не сработал т.е. сперва я неправильно вводил название скрипта и были ошибки. но когда ввел правильно ничего не произошло.

              Как такую задачу выполнять?

              Есть вариант подписать скрипт на какуюнибудь переменную а других скриптах менять её. Но как то нелогично мне это. `

              Ну вот. Т.е. хочется использовать скрипт как функцию. Т.е. это заданный набор действий который нужно производить при возникновении разных условий(запрос пользователя/расписание и т.п.). Скрипт этот анализирует несколько состояний и делает вывод о том какие набор действий ему произвести.

              Конкретно мой случай:

              Есть датчик температуры, есть текущее время и есть режим работы отопления.

              Скрипт в зависимости от этих данных управляет котлом.

              Режимы работы отопление:

              1. Выключено. тут все понятно

              2. Включено. Тут просто включается котел и жарит на все пироги.

              3. Поддержка минимальной температуры. Тут вводится зависимость от температуры и времени. Система отопления на основе теплого пола. соответственно инертна. Настройки такие. с 7 утра до 23 вечера включать котел если температура упала ниже 5 градусов. с 23 до 7 утра включать если температура меньше 10. Сейчас этот режим. как правило за день температура падает на 2-3 градуса и становится равной 8. в 23 котел включается и прогревает помещение до 10 градусов и отключается. Т.е. работает ночью по ночному дешевому тарифу. Задача чтоб дом не замерз пока в нем никого нету

              4. Поддержка нормальной температуры. Тоже что и пункт 3 только уставки 15 днем и 25 ночью соответственно. При желании приехать в дом - заранее включаю этот режим и дом к приезду должен прогреться.

              Все это описано в скрипте. Режим работы - объект enum с соответствующими состояниями

              Сейчас скрипт работает по расписанию. каждые 15 минут проверяет состояния и делает выводы включить или отключить котел. Можно было бы повесить на изменение температуры. но как то котел не включился из за того что скрипт почемуто пропустил запуск по расписанию. И у меня возникла мысль что лучше он переодически будет проверять состояние системы и делать выводы. чем пропустит какоето событе и не выполнит их.

              Так как у меня пока сложности с доступом к админке из инета я настроил управление режимами через телеграм. посылаю команду на изменение режима. Т.е. решил я в выхи приехать в теплый дом - посылаю команду включить нормальный режим отопления.

              И хочу видет реакцию на эту команду сразу а не через 15 минут после команды. соответственно помимо выполнения по расписанию нужно еще и по событию запускать этот скрипт.

              Как то так. :) `
              Я бы сделал что то подобное, это не рабочий вариант это как один из вариантов

              createState('Climat.mode', '');
              
              on({id: 'температура', change: 'ne'}, function (obj) {
                  Otoplenie();
              });
              on({id: 'Climat.mode', change: 'any'}, function (obj) {
                  if (obj.newState.val){
                     Otoplenie();
                  }
              });
              
              function Otoplenie(){
                  var RealTemp = parseFloat(getState('RealTemp').val).toFixed(2);
                  var SetTemp = parseFloat(getState('SetTemp').val).toFixed(2);
                  var Mode = getState('Climat.mode').val;
              
                  var newDate = (new Date()).getTime();
                  var date = new Date();
                  var day = date.getDay(); // 0-воскр. 6-суббота
                  var hour = date.getHours();
                  var min = (date.getMinutes()<10?'0':'') + date.getMinutes();
              
                  if(Mode === 'OFF'){
                     log('отопление отключено');
                  } else if (Mode === 'ON'){
                          log('включаем котел');
                  } else if (Mode === 'NORM'){
                          if (hour >= 8 && hour <= 18){
                              SetTemp = 15;
                          } else {
                              SetTemp = 25;
                          }
                          if (RealTemp > SetTemp){
                              log('выключаем котел');
                          }
                          if (RealTemp < SetTemp){
                              log('включаем котел');
                          }
                    } else if (Mode === 'AUTO'){
                          if (hour > 7 && hour < 23 && RealTemp < 5){
                              log('включаем котел');
                          } else if (hour > 23 && hour < 7 && RealTemp < 10){
                              log('включаем котел');
                          } else {
                              log('выключаем котел');
                          }
                  }
              }
              

              Высокий уровень Децибел вреден для здоровья!

              http://blog.instalator.ru/

              1 Antwort Letzte Antwort
              0
              • X Offline
                X Offline
                XAPuTOH
                schrieb am zuletzt editiert von
                #9

                Вот что значит отсутствие опыта!

                Не думал что в одном скрипте можно несколько подписок сделать!

                А функция у меня примерно такая же. ))

                Все таки идеология следующая - скрипты используются для выполнения набора действий по подписке?

                В качестве глобальной(ну или в пределах одного адаптера) функции, скрипты использовать не принято.

                Видимо если уж так хочется то можно сделать свой модуль с нужным набором методов и подключать его в настройках адаптера.

                1 Antwort Letzte Antwort
                0
                • I Offline
                  I Offline
                  instalator
                  schrieb am zuletzt editiert von
                  #10

                  @XAPuTOH:

                  Все таки идеология следующая - скрипты используются для выполнения набора действий по подписке? `
                  Не только, можно сделать по крону

                  Высокий уровень Децибел вреден для здоровья!

                  http://blog.instalator.ru/

                  1 Antwort Letzte Antwort
                  0
                  • H Offline
                    H Offline
                    Haba
                    schrieb am zuletzt editiert von
                    #11

                    У меня пока так реализована обратная связь через телеграм
                    1160_______1.jpg

                    1 Antwort Letzte Antwort
                    0
                    • A Offline
                      A Offline
                      adelec12
                      schrieb am zuletzt editiert von
                      #12

                      @XAPuTOH:

                      Т.е. exec выполняется асинхронно. Соответственно нельзя строить скрипт таким образом как я сперва задумал, а нужно строить на колбэках.

                      Сперва exec. внутри него основной скрипт. а если exec несколько http://www.comparateur-dependance-senior.com. то каждый последующий нужно запускать в колбэке предидущего? `
                      Довольно сложно это понятие, но для лучшего понимания требуется небольшое упражнение.

                      1 Antwort Letzte Antwort
                      0
                      Antworten
                      • In einem neuen Thema antworten
                      Anmelden zum Antworten
                      • Älteste zuerst
                      • Neuste zuerst
                      • Meiste Stimmen


                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      345

                      Online

                      32.5k

                      Benutzer

                      81.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