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. ioBroker драйвера
  5. Драйвер ModBus

NEWS

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

  • 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

Драйвер ModBus

Scheduled Pinned Locked Moved ioBroker драйвера
174 Posts 25 Posters 58.0k Views 2 Watching
  • 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.
  • aurodionovA Offline
    aurodionovA Offline
    aurodionov
    wrote on last edited by
    #127

    @sv102:

    Здравствуйте, подскажите пожалуйста как настроить Modbus через Serial, порт USB пишет "Note Available". `
    А что выдаёт по lsusb ?

    Должен показать все устройства подключенные по usb.

    Интересует /dev/ttyUSBx, это и есть искомый порт, и да у меня на такой -же микре переходник нормально видится в дебиан

    Пишу с пульта….

    1 Reply Last reply
    0
    • S Offline
      S Offline
      sv102
      wrote on last edited by
      #128

      @aurodionov:

      @sv102:

      Здравствуйте, подскажите пожалуйста как настроить Modbus через Serial, порт USB пишет "Note Available". `
      А что выдаёт по lsusb ?

      Должен показать все устройства подключенные по usb.

      Интересует /dev/ttyUSBx, это и есть искомый порт, и да у меня на такой -же микре переходник нормально видится в дебиан `
      По lsusb тоже виден

      ! ````
      root@orangepipc2:/opt/iobroker# lsusb
      Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
      Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
      Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
      Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
      Bus 004 Device 002: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter
      Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
      Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
      root@orangepipc2:/opt/iobroker#

      1 Reply Last reply
      0
      • aurodionovA Offline
        aurodionovA Offline
        aurodionov
        wrote on last edited by
        #129

        Тогда возможно не хватает прав, у меня иоброкер бегает от рута

        Пишу с пульта….

        Пишу с пульта….

        1 Reply Last reply
        0
        • S Offline
          S Offline
          sv102
          wrote on last edited by
          #130

          @aurodionov:

          Тогда возможно не хватает прав, у меня иоброкер бегает от рута

          Пишу с пульта…. `
          Не безопасно конечно, но запущено от рута. Как же заставить ioBroker видеть usb? :roll: :cry:
          2244_2017-02-26_00-04-30.jpg

          1 Reply Last reply
          0
          • aurodionovA Offline
            aurodionovA Offline
            aurodionov
            wrote on last edited by
            #131

            Попробуй подключиться к этому порту терминалом, может порт чем-то занят

            Пишу с пульта….

            1 Reply Last reply
            0
            • M Offline
              M Offline
              MSapogov
              wrote on last edited by
              #132

              Попробуй перезапустить драйвер…

              У меня разрешает выбор COM порта только когда драйвер запущен.

              А на Опельсинке вообще никогда проблем не было с выбором COM порта (Armbian 5.20)

              1 Reply Last reply
              0
              • A Offline
                A Offline
                Adav
                wrote on last edited by
                #133

                При попытке установить драйвер вылетает ошибка в логе:

                ` > ERR!

                Tried to download: https://github.com/voodootikigod/node-s … a32.tar.gz `

                По данной ссылке действительно ничего нет, при этом в более новой версии node-serialport (4.0.7) присутствует архив ia32. Что с этим можно сделать?

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

                  @Adav:

                  При попытке установить драйвер вылетает ошибка в логе:

                  ` > ERR!

                  Tried to download: https://github.com/voodootikigod/node-s … a32.tar.gz `

                  По данной ссылке действительно ничего нет, при этом в более новой версии node-serialport (4.0.7) присутствует архив ia32. Что с этим можно сделать? `
                  Это стандартный метод установки. Сначала установщик пытается скачать предкомпилированную версию для системы. И если система экзотическая, то пытается собрать из исходников сам.

                  Для этого нужно установить соответсвующие apt-get пакеты.

                  Исходя из того что для windows бинарные версии существуют, то значит у тебя linux.

                  Нужно сначала установить

                  sudo apt-get install build-essential

                  и потом установить iob драйвер от рута.

                  И запускать его тоже надо от рута

                  1 Reply Last reply
                  0
                  • A Offline
                    A Offline
                    Adav
                    wrote on last edited by
                    #135

                    Да, Debian 8 32-bit.

                    build-essential уже стоял, использую root, других пользователей не заводил, драйвера наверное тоже запускаются от root, или я что-то не так понимаю? В admin интерфейсе просто пытаюсь ставить modbus… или надо как-то принудительно из командной строки?

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

                      @Adav:

                      Да, Debian 8 32-bit.

                      build-essential уже стоял, использую root, других пользователей не заводил, драйвера наверное тоже запускаются от root, или я что-то не так понимаю? В admin интерфейсе просто пытаюсь ставить modbus… или надо как-то принудительно из командной строки? `
                      Ну в целях эксперимента попробуй установить из командной строки

                      cd /opt/iobroker
                      sudo npm i iobroker.modbus
                      

                      При ошибке должен появится npm-debug.log в /opt/iobroker. Было бы интересно его посмотреть.

                      1 Reply Last reply
                      0
                      • A Offline
                        A Offline
                        Adav
                        wrote on last edited by
                        #137

                        Попробовал. Cначала удалил в админе старую установку modbus, потом установил из строки. Вроде установилось. Никаких сообщений об ошибках в консоли не увидел, в логах админа вообще пусто, npm-debug.log не появился. Но… захожу в админ - закладки "драйвера" - вижу установленный modbus adapter, захожу в закладку "настройки драйверов" - там нет modbus. Когда до этого игрался с этим делом - обнаружил, что именно так и бывает с версией 0.5.2, а вот если поставить ее поверх 0.5.0 - то нормально. Видимо в свежей версии есть в этой части ошибки.

                        Пробую еще раз, но теперь из админа. Удаляю драйвер, ставлю 0.5.2 с github - установилось на этот раз без ошибок (node-serialport сохранился от установки через консоль?), но с настройками драйвера все та же беда. Еще раз удаляю драйвер и на этот раз ставлю в админе версию 0.5.0 - повторяется ошибка с node-serialport-ia32 (разные версии modbus смотрят в разные каталоги?), но при этом а настройках драйверов появляется modbus. Ставлю через админ (обновляю) драйвер с github на версию 0.5.2 - ошибок с ia32 нет (в этот раз увидела сохраненное от установки через строку?), в настройках драйверов modbus сохранился.

                        Надеюсь, что заработает, проверить смогу не скоро, когда прибудет из Китая новое modbus устройство, те что есть не хочу отключать пока от существующего контроллера. Будут проблемы - отпишусь. А пока на лицо помимо ошибки с ia32 (как видим преодолимо через строку), так и ошибки в новой версии с настройками драйверов.

                        Кстати, node-serialport используется не совсем свежий по каким-то важным причинам?

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

                          @Adav:

                          Попробовал. Cначала удалил в админе старую установку modbus, потом установил из строки. Вроде установилось. Никаких сообщений об ошибках в консоли не увидел, в логах админа вообще пусто, npm-debug.log не появился. Но… захожу в админ - закладки "драйвера" - вижу установленный modbus adapter, захожу в закладку "настройки драйверов" - там нет modbus. Когда до этого игрался с этим делом - обнаружил, что именно так и бывает с версией 0.5.2, а вот если поставить ее поверх 0.5.0 - то нормально. Видимо в свежей версии есть в этой части ошибки. `
                          Надо просто выполнить

                          iobroker upload modbus
                          iobroker add modbus
                          

                          @Adav:

                          Пробую еще раз, но теперь из админа. Удаляю драйвер, ставлю 0.5.2 с github - установилось на этот раз без ошибок (node-serialport сохранился от установки через консоль?), но с настройками драйвера все та же беда. Еще раз удаляю драйвер и на этот раз ставлю в админе версию 0.5.0 - повторяется ошибка с node-serialport-ia32 (разные версии modbus смотрят в разные каталоги?), но при этом а настройках драйверов появляется modbus. Ставлю через админ (обновляю) драйвер с github на версию 0.5.2 - ошибок с ia32 нет (в этот раз увидела сохраненное от установки через строку?), в настройках драйверов modbus сохранился.

                          Надеюсь, что заработает, проверить смогу не скоро, когда прибудет из Китая новое modbus устройство, те что есть не хочу отключать пока от существующего контроллера. Будут проблемы - отпишусь. А пока на лицо помимо ошибки с ia32 (как видим преодолимо через строку), так и ошибки в новой версии с настройками драйверов. `
                          @Adav:

                          Кстати, node-serialport используется не совсем свежий по каким-то важным причинам? `
                          Новый serialport ломает поддержку 0.12.x node.js версий

                          1 Reply Last reply
                          0
                          • A Offline
                            A Offline
                            Adav
                            wrote on last edited by
                            #139

                            Был немного занят другими делами…

                            @Bluefox:

                            Надо просто выполнить

                            iobroker upload modbus
                            iobroker add modbus
                            ```` `  
                            

                            После этого действительно появляется modbus последней версии в настройках, но вот в процессе опять появляется та же ошибка:

                            root@ioBroker:/opt/iobroker# iobroker add modbus

                            host.ioBroker install adapter modbus

                            npm install –production (System call) in "/opt/iobroker/node_modules/iobroker.modbus"

                            node-pre-gyp ERR! Tried to download: https://github.com/voodootikigod/node-s ... a32.tar.gz

                            node-pre-gyp ERR! Pre-built binaries not found for serialport@3.1.2 and node@4.8.1 (node-v46 ABI) (falling back to source compile with node-gyp)

                            Я правильно понимаю, что в итоге node-serialport так и не ставится на моей версии linux?

                            Попробовал еще на Orange Pi Zero с Armbian - та же проблема:

                            ERR! Tried to download(404): https://github.com/EmergingTechnologyAd ... arm.tar.gz node-pre-gyp ERR! Pre-built binaries not found for serialport@4.0.7 and node@4.8.1 (node-v46 ABI) (falling back to source compile with node-gyp)

                            Но вот почему-то лезет уже к свежей версии. Хотя Вы говорили выше, что нужна старая... ничего не понимаю :(

                            build-essential здесь также установлен.

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

                              @Adav:

                              Был немного занят другими делами…

                              @Bluefox:

                              Надо просто выполнить

                              iobroker upload modbus
                              iobroker add modbus
                              ```` `  
                              

                              После этого действительно появляется modbus последней версии в настройках, но вот в процессе опять появляется та же ошибка:

                              root@ioBroker:/opt/iobroker# iobroker add modbus

                              host.ioBroker install adapter modbus

                              npm install –production (System call) in "/opt/iobroker/node_modules/iobroker.modbus"

                              node-pre-gyp ERR! Tried to download: https://github.com/voodootikigod/node-s ... a32.tar.gz

                              node-pre-gyp ERR! Pre-built binaries not found for serialport@3.1.2 and node@4.8.1 (node-v46 ABI) (falling back to source compile with node-gyp)

                              Я правильно понимаю, что в итоге node-serialport так и не ставится на моей версии linux?

                              Попробовал еще на Orange Pi Zero с Armbian - та же проблема:

                              ERR! Tried to download(404): https://github.com/EmergingTechnologyAd ... arm.tar.gz node-pre-gyp ERR! Pre-built binaries not found for serialport@4.0.7 and node@4.8.1 (node-v46 ABI) (falling back to source compile with node-gyp)

                              Но вот почему-то лезет уже к свежей версии. Хотя Вы говорили выше, что нужна старая... ничего не понимаю :(

                              build-essential здесь также установлен. `
                              Это только надпись. А устанавливать все равно должен.

                              1 Reply Last reply
                              0
                              • A Offline
                                A Offline
                                Adav
                                wrote on last edited by
                                #141

                                @Bluefox:

                                Это только надпись. А устанавливать все равно должен. `

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

                                1 Reply Last reply
                                0
                                • K Offline
                                  K Offline
                                  kab1561
                                  wrote on last edited by
                                  #142

                                  Доброго времени суток всем!

                                  Пытаюсь использовать драйвер Modbus для работы с самосборным контроллером, работающим по протоколу Modbus RTU.

                                  Настроил драйвер на опрос holdingRegisters. Опрос ведется, данные с контроллера принимаются - проблем нет. Как я понимаю, здесь драйвер использует функцию 03 (Read Holding Registers) протокола Modbus.

                                  Но, я пока так и не понял, как записать из ioBroker какие-нибудь данные в единичный регистр контроллера.

                                  Это вообще возможно?

                                  Сейчас драйвер Modbus каким-либо образом может использовать функции 06 (Preset Single Register) и 16 (Preset Multiple Regs)? Если может, то как?

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

                                    @kab1561:

                                    Доброго времени суток всем!

                                    Пытаюсь использовать драйвер Modbus для работы с самосборным контроллером, работающим по протоколу Modbus RTU.

                                    Настроил драйвер на опрос holdingRegisters. Опрос ведется, данные с контроллера принимаются - проблем нет. Как я понимаю, здесь драйвер использует функцию 03 (Read Holding Registers) протокола Modbus.

                                    Но, я пока так и не понял, как записать из ioBroker какие-нибудь данные в единичный регистр контроллера.

                                    Это вообще возможно?

                                    Сейчас драйвер Modbus каким-либо образом может использовать функции 06 (Preset Single Register) и 16 (Preset Multiple Regs)? Если может, то как? `
                                    Для записи используется 16 если длина адресов больше 1 и

                                    6 если нужно считать только один адрес.

                                    А что не работает?

                                    1 Reply Last reply
                                    0
                                    • K Offline
                                      K Offline
                                      kab1561
                                      wrote on last edited by
                                      #144

                                      @Bluefox:

                                      Для записи используется 16 если длина адресов больше 1 и

                                      6 если нужно считать только один адрес.

                                      А что не работает? `

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

                                      В моем случае ioBroker получает от удаленного контроллера данные из 17 Holding Registers (в драйвере Modbus они описаны как 40001 … 40017). У этого контроллера есть один входной регистр (Preset Single Register), если записать в него какое-либо шестнадцатиричное число, то он исполняет сооветствующие команды.

                                      К примеру, я хочу, чтобы при появлении значения 280 в 40002 Holding Registers ioBroker отправлял значение 4 (0x4) в указанный Single Register контроллера посредством функции 06 (Preset Single Register) протокола Modbus. Как мне это реализовать в ioBroker?

                                      Какие драйверы кроме Modbus необходимо установить для реализации этого?

                                      И, если подобную логику кто-то делал - то где можно об этом почитать?

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

                                        @kab1561:

                                        @Bluefox:

                                        Для записи используется 16 если длина адресов больше 1 и

                                        6 если нужно считать только один адрес.

                                        А что не работает? `

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

                                        В моем случае ioBroker получает от удаленного контроллера данные из 17 Holding Registers (в драйвере Modbus они описаны как 40001 … 40017). У этого контроллера есть один входной регистр (Preset Single Register), если записать в него какое-либо шестнадцатиричное число, то он исполняет сооветствующие команды.

                                        К примеру, я хочу, чтобы при появлении значения 280 в 40002 Holding Registers ioBroker отправлял значение 4 (0x4) в указанный Single Register контроллера посредством функции 06 (Preset Single Register) протокола Modbus. Как мне это реализовать в ioBroker?

                                        Какие драйверы кроме Modbus необходимо установить для реализации этого?

                                        И, если подобную логику кто-то делал - то где можно об этом почитать? `
                                        Понятно, что было не понятно :D

                                        Тебе нужен Javascript драйвер и твой случай будет выглядеть так:
                                        48_2017-04-20_00_00_27-iobroker.admin.png

                                        Для этого можешь импортировать код отсюда.

                                        ! ````
                                        <xml xmlns="http://www.w3.org/1999/xhtml"><block type="on_ext" id="6o:Z)o={6z!yNYw2%Q!u" x="63" y="63"><mutation items="1"></mutation>
                                        <field name="CONDITION">any</field>

                                        <value name="OID0"><shadow type="field_oid" id=";R*F2k/]wqu#aGAZo8d*"><field name="oid">modbus.0.holdingRegisters.1</field></shadow></value> 
                                        <statement name="STATEMENT"><block type="controls_if" id="WVf9W,,C2j?,BMc{mWKU"><value name="IF0"><block type="logic_compare" id="1,b~SR78igB..=oouJ5y"><field name="OP">EQ</field>
                                                <value name="A"><block type="on_source" id="9hE-J`4B{`*Xh^By3sZC"><field name="ATTR">state.val</field></block></value> 
                                                <value name="B"><block type="math_number" id="%n0=RkQG]^IJ=MjnabbD"><field name="NUM">280</field></block></value></block></value> 
                                            <statement name="DO0"><block type="control" id="-CL55G=Hr[UyJ5_p/xI]"><mutation delay_input="false"></mutation>
                                                <field name="OID">modbus.0.holdingRegisters.2</field>
                                                <field name="WITH_DELAY">FALSE</field>
                                                <value name="VALUE"><block type="math_number" id="T%[O)Rm:B`Uz=HGuP7W("><field name="NUM">4</field></block></value></block></statement></block></statement></block></xml> 
                                        
                                         ![48_2017-04-20_00_01_48-iobroker.admin.png](/assets/uploads/files/48_2017-04-20_00_01_48-iobroker.admin.png) 
                                        
                                        В моём примере читается регистр с адресом 1 и если там появляется 280, то пишется в регистр с адресом 2 значение 4.
                                        
                                        Или можно javascript:
                                        
                                        

                                        on({id: 'modbus.0.holdingRegisters.1', change: "any"}, function (obj) {
                                        if (obj.state.val === 280) setState("modbus.0.holdingRegisters.2", 4);
                                        });

                                        1 Reply Last reply
                                        0
                                        • K Offline
                                          K Offline
                                          kab1561
                                          wrote on last edited by
                                          #146

                                          @Bluefox:

                                          Понятно, что было не понятно :D

                                          Или можно javascript:

                                          on({id: 'modbus.0.holdingRegisters.1', change: "any"}, function (obj) {
                                            if (obj.state.val === 280) setState("modbus.0.holdingRegisters.2", 4);
                                          });
                                          ```` `  
                                          

                                          Большое спасибо за пинок в нужном направлении!

                                          Никогда бы не подумал, что здесь необходимо для отправки контроллеру числа в его входной регистр указывать адрес Holding Registers. У меня была твердая убежденность, что это и логически и физически разные ячейки памяти Modbus контроллера. По крайней мере я в прошивке своего контроллера сделал именно такое разделение.

                                          Кстати, в моем случае Ваш скрипт не сработает совсем из-за неверной адресации регистров. Но работает следующий код, который и обрабатывает мой пример :

                                          on({id: 'modbus.0.holdingRegisters.40002', change: "any"}, function (obj) {
                                            if (obj.state.val == 280) setState("modbus.0.holdingRegisters.40001", 4);
                                          });
                                          
                                          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

                                          233

                                          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