Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Русский
  3. ioBroker
  4. Скрипты
  5. ioBroker скрипты
  6. Работа из скрипта со свойствами объектов

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    649

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    18
    1
    5.7k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.5k

Работа из скрипта со свойствами объектов

Scheduled Pinned Locked Moved ioBroker скрипты
6 Posts 4 Posters 4.0k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • H Offline
    H Offline
    Ho Hum
    wrote on last edited by
    #1

    Прошу совета, может быть кто-нибудь уже делал подобное.

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

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

    Вот пример:

    ~~![](</s><URL url=)http://s13.radikal.ru/i186/1611/88/f054e266c976.jpg" />

    Теперь собственно вопрос:

    Как логичнее и удобнее всего связать выключатель с соответствующими лампами (их может быть как одна, так и несколько). Логичнее всего, на мой взгляд, в объекте выключателя добавить свойство, в которое прописать имена объектов - ламп, которыми он управляет. Система позволяет добавить такое свойство, но из скрипта вытащить его значения у меня не получается…

    Можно в global сделать массив и описать ссылки на управляющие и управляемые объекты в нем, но мне кажется, что это некрасиво и громоздко.

    Что подскажет коллективный разум?~~

    1 Reply Last reply
    0
    • BluefoxB Offline
      BluefoxB Offline
      Bluefox
      wrote on last edited by
      #2

      @Ho Hum:

      Прошу совета, может быть кто-нибудь уже делал подобное.

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

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

      Вот пример:

      ~~![](</s><URL url=)http://s13.radikal.ru/i186/1611/88/f054e266c976.jpg" />

      Теперь собственно вопрос:

      Как логичнее и удобнее всего связать выключатель с соответствующими лампами (их может быть как одна, так и несколько). Логичнее всего, на мой взгляд, в объекте выключателя добавить свойство, в которое прописать имена объектов - ламп, которыми он управляет. Система позволяет добавить такое свойство, но из скрипта вытащить его значения у меня не получается…

      Можно в global сделать массив и описать ссылки на управляющие и управляемые объекты в нем, но мне кажется, что это некрасиво и громоздко.

      Что подскажет коллективный разум?~~ ` ~~Ты можешь посмотреть данные объекта, так:

      console.log(JSON.stringify(getObject('Home.0.Lights.FirstFloor.L-20').native));
      

      И даже заносить туда свои значения. Параметр объекта native создан как раз для того, что бы там хранить специфичные данные.

      Советую сделать так:

      extendObject('Home.0.Lights.FirstFloor.L-20', {native: {binds: ['myRealID']}});
      

      И потом

      `on('Home.0.Lights.FirstFloor.L-20', function (obj) {
          var myObj = getObject('Home.0.Lights.FirstFloor.L-20');
          if (myObj && myObj.native && myObj.native.binds) {
              if (typeof myObj.native.binds === 'object') {
                  for (var b = 0; b < myObj.native.binds.length; b++) {
                      setState(myObj.native.binds[b], obj.state.val);
                  }
              } else {
                  setState(myObj.native.binds, obj.state.val);
              }
          }
      });`
      
      P.S. очень интересный подход. ;)[/b]
      ```~~
      1 Reply Last reply
      0
      • H Offline
        H Offline
        Ho Hum
        wrote on last edited by
        #3

        Спасибо, попробую.

        Надеюсь, слова про интересный подход сказаны в прямом, а не переносном смысле :)

        1 Reply Last reply
        0
        • BluefoxB Offline
          BluefoxB Offline
          Bluefox
          wrote on last edited by
          #4

          @Ho Hum:

          Спасибо, попробую.

          Надеюсь, слова про интересный подход сказаны в прямом, а не переносном смысле :) `
          В прямом.

          Я бы даже изменил:

          `on(/^Home\./, function (obj) {
              if (obj && obj.native && obj.native.binds) {
                  if (typeof obj.native.binds === 'object') {
                      for (var b = 0; b < obj.native.binds.length; b++) {
                          setState(obj.native.binds[b], obj.state.val);
                      }
                  } else {
                      setState(obj.native.binds, obj.state.val);
                  }
              }
          });` [/b]
          
          1 Reply Last reply
          0
          • H Offline
            H Offline
            Haus
            wrote on last edited by
            #5

            @Ho Hum:

            Прошу совета, может быть кто-нибудь уже делал подобное.

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

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

            Вот пример:

            ~~![](</s><URL url=)http://s13.radikal.ru/i186/1611/88/f054e266c976.jpg" />

            Теперь собственно вопрос:

            Как логичнее и удобнее всего связать выключатель с соответствующими лампами (их может быть как одна, так и несколько). Логичнее всего, на мой взгляд, в объекте выключателя добавить свойство, в которое прописать имена объектов - ламп, которыми он управляет. Система позволяет добавить такое свойство, но из скрипта вытащить его значения у меня не получается…

            Можно в global сделать массив и описать ссылки на управляющие и управляемые объекты в нем, но мне кажется, что это некрасиво и громоздко.

            Что подскажет коллективный разум?~~ ` http://forum.iobroker.net/viewtopic.php?f=16&t=7113

            js-controller: 1.5.7 / node.js: v8.15.1/ npm: 6.4.1

            admin: 3.6.0

            javascript: 4.1.10

            web: 2.4.1 vis: 1.1.10

            cloud: 2.6.2

            Server: DELL FX170 / linux: Debian 9.5 Stretch

            Adapter: MegaD-2561, Mega-ES…

            1 Reply Last reply
            0
            • A Offline
              A Offline
              andrey99986
              wrote on last edited by
              #6

              Значение сейчас true :

              var obj1=JSON.stringify(getObject('megad.0.p0').common.custom["sql.0"].enabled);
              
              

              Как его поменять на false?

              1 Reply Last reply
              0

              Hello! It looks like you're interested in this conversation, but you don't have an account yet.

              Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

              With your input, this post could be even better 💗

              Register Login
              Reply
              • Reply as topic
              Log in to reply
              • Oldest to Newest
              • Newest to Oldest
              • Most Votes


              Support us

              ioBroker
              Community Adapters
              Donate

              312

              Online

              32.7k

              Users

              82.6k

              Topics

              1.3m

              Posts
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
              ioBroker Community 2014-2025
              logo
              • Login

              • Don't have an account? Register

              • Login or register to search.
              • First post
                Last post
              0
              • Home
              • Recent
              • Tags
              • Unread 0
              • Categories
              • Unreplied
              • Popular
              • GitHub
              • Docu
              • Hilfe