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. Взаимодействие скрипта js из админки драйвера с мейн скриптом на nodejs

NEWS

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

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

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

Взаимодействие скрипта js из админки драйвера с мейн скриптом на nodejs

Scheduled Pinned Locked Moved ioBroker драйвера
20 Posts 2 Posters 4.3k 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.
  • V Offline
    V Offline
    Vlad_k
    wrote on last edited by
    #1

    уперся лбом, мне необходимо на вебстранице админки драйвера в <option value="">загрузить список всех имеющихся COM портов , для дальнейшего выбора и открытия, список портов формирует модуль nodeserialport каким образом мне это реализовать, пока только придумал через сокеты(читай через задницу), как то сложно получается, мож попроще варианты есть?</option>

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

      В Sonos, например, эта проблема решена так.

      По умолчанию драйвер запущен (enabled: true)

      https://github.com/ioBroker/ioBroker.so … e.json#L14

      и поддерживает messagebox.

      https://github.com/ioBroker/ioBroker.so ... e.json#L12

      Админка посылает драйверу через sendto запрос

      https://github.com/ioBroker/ioBroker.so ... .html#L102

      И драйвер обрабатывает его и посылает ответ.

      https://github.com/ioBroker/ioBroker.so ... os.js#L142

      Вот и всё. Ну ещё в админке встроена проверка, запущен ли драйвер

      https://github.com/ioBroker/ioBroker.so ... x.html#L91

      Что бы пользователь на ждал напрасно ответа.

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

        Я думаю, что будет проще, если ты выложишь это на гит и мы вместе будем редактировать или я хотя бы буду видеть, что да как. ;)

        1 Reply Last reply
        0
        • V Offline
          V Offline
          Vlad_k
          wrote on last edited by
          #4

          все получилось в лучшем виде…

          с гитом не дружу к сожалению, только скачать умею:D

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

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

            Установи git: https://git-for-windows.github.io/

            TortoiseGit: https://tortoisegit.org/download/

            Создай пустой проект на git и сделай clone:

            https://tortoisegit.org/docs/tortoisegit/tgit-dug.html

            1 Reply Last reply
            0
            • V Offline
              V Offline
              Vlad_k
              wrote on last edited by
              #6

              вроде чет получилось https://github.com/DJONvl/iobroker.mysensors

              1 Reply Last reply
              0
              • V Offline
                V Offline
                Vlad_k
                wrote on last edited by
                #7

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

                вроде победил….

                в логе периодичесски варнинги:

                ! host-MSW0039 2016-02-12 22:33:50 warn instance system.adapter.mysensors.0 already running with pid 5208
                ! mysensors-0 2016-02-12 22:33:48 info mySens 0;0;3;0;14;Gateway startup complete.
                ! mysensors-0 2016-02-12 22:33:48 info mySens 0;0;3;0;9;gateway started, id=0, parent=0, distance=0
                ! mysensors-0 2016-02-12 22:33:46 info starting. Version 0.5.0 in C:/iobroker/node_modules/iobroker.mysensors
                ! host-MSW0039 2016-02-12 22:33:46 info instance system.adapter.mysensors.0 started with pid 5208
                ! host-MSW0039 2016-02-12 22:33:43 info Restart adapter system.adapter.mysensors.0 because enabled
                ! host-MSW0039 2016-02-12 22:33:43 warn instance system.adapter.mysensors.0 terminated due to SIGTERM

                1 Reply Last reply
                0
                • V Offline
                  V Offline
                  Vlad_k
                  wrote on last edited by
                  #8

                  чет у меня git сломался, не принимает обнову

                  ! To https://github.com/DJONvl/iobroker.mysensors.git
                  ! ! [rejected] master -> master (fetch first)
                  ! error: failed to push some refs to 'https://github.com/DJONvl/iobroker.mysensors
                  ! .git'
                  ! hint: Updates were rejected because the remote contains work that you do
                  ! hint: not have locally. This is usually caused by another repository pushing
                  ! hint: to the same ref. You may want to first integrate the remote changes
                  ! hint: (e.g., 'git pull …') before pushing again.
                  ! hint: See the 'Note about fast-forwards' in 'git push --help' for details.

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

                    git stash

                    gut pull

                    git stash pop

                    1 Reply Last reply
                    0
                    • V Offline
                      V Offline
                      Vlad_k
                      wrote on last edited by
                      #10

                      @Bluefox:

                      git stash

                      gut pull

                      git stash pop `
                      не помогло, склонировал в другую папку, заменил файлы на нужные , вроде ушло

                      1 Reply Last reply
                      0
                      • V Offline
                        V Offline
                        Vlad_k
                        wrote on last edited by
                        #11

                        2 Bluefox

                        сделал добавление юнитов в таблицу, подскажи как теперь в цикле на них завести createState и отслеживать изменения в payload
                        965___________.png
                        305_modbus-konfig.pdf

                        1 Reply Last reply
                        0
                        • V Offline
                          V Offline
                          Vlad_k
                          wrote on last edited by
                          #12

                          все отлично заработало, переменные создаются, но:

                          привязываю в визе виджет лампочки на переменную, на вкладке обьекты

                          ID___________________Имя________Тип__________Роль___Комната__Значение

                          V_LIGHT_2_1_______V_LIGHT_2_1___state_________state ______________0

                          значение переменной меняется (только красным почему-то),

                          а в

                          adapter.on( 'stateChange', function (id, state) {
                              // Warning, state can be null if it was deleted
                              adapter.log.info('stateChange ' + id + ' ' + JSON.stringify(state));
                          	adapter.log.info('blablablabla-',id);
                              // you can use the ack flag to detect if it is status (true) or command (false)
                              if (state && !state.ack) {
                                  adapter.log.info('ack is not set!');
                              }
                          });
                          

                          не могу перехватить изменения, не отрабатывает

                          1 Reply Last reply
                          0
                          • V Offline
                            V Offline
                            Vlad_k
                            wrote on last edited by
                            #13

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

                            ! ````
                            adapter.on( 'stateChange', function (id, state) {
                            // Warning, state can be null if it was deleted
                            adapter.log.info('stateChange ' + id + ' ' + JSON.stringify(state));
                            adapter.log.info(adapter.name);

                            //________________выводим в порт___________________________________________
                            	for (var co = 0; co < adapter.config.devices.length; co++) {		
                            			if ( id	== adapter.name+'.0.'+adapter.config.devices[co].name){//todo убрать костыль
                            			var msg_s;
                            				msg_s =	adapter.config.devices[co].raw		+ ';' +
                            						state.val + '\n';
                            

                            !
                            G_myPort.write(msg_s);
                            adapter.log.info('mesage-'+msg_s);
                            }
                            adapter.log.info(adapter.config.devices[co].name+ ';' + adapter.config.devices[co].node_id)
                            }

                            adapter.log.info('ToDo-вывести в компорт  для '+id+'значение-'+state.val);
                            

                            ! //----------------------------------------------------------------------------
                            // you can use the ack flag to detect if it is status (true) or command (false)
                            if (state && !state.ack) {
                            adapter.log.info('ack is not set!');
                            }
                            });

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

                              @Vlad_k:

                              ну вобщем-то у меня все готово, можно альфу тестить, только костыль убрать, не понял как получить номер запущенного драйвера `
                              При подписывании на subscribeStates('*') тебе приходят только переменные из твоей инстанции. А так есть следующие поля:

                              https://github.com/ioBroker/ioBroker/wi … of-adapter

                              adapter.namespace = adapter.name + '.' + adapter.instance = 'mysensors.0'
                              
                              

                              То есть:

                              if ( id   == adapter.namespace + '.' + adapter.config.devices[co].name){//todo убрать костыль
                              

                              17973_unbenannt111.png

                              1 Reply Last reply
                              0
                              • V Offline
                                V Offline
                                Vlad_k
                                wrote on last edited by
                                #15

                                @Bluefox:

                                То есть:

                                if ( id   == adapter.namespace + '.' + adapter.config.devices[co].name){//todo убрать костыль
                                ```` `  
                                

                                отлично, спасибо, все работает…

                                косметику в вебморде потом наведу...

                                чтобы устанавливать модуль через npm install мне что нужно сделать? npm publish ? хочу на планшете под линухом попробовать, или проще папку скопировать?

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

                                  @Vlad_k:

                                  @Bluefox:

                                  То есть:

                                  if ( id   == adapter.namespace + '.' + adapter.config.devices[co].name){//todo убрать костыль
                                  ```` `  
                                  

                                  отлично, спасибо, все работает…

                                  косметику в вебморде потом наведу...

                                  чтобы устанавливать модуль через npm install мне что нужно сделать? npm publish ? хочу на планшете под линухом попробовать, или проще папку скопировать? `

                                  npm install https://github.com/DJONvl/iobroker.myse … all/master

                                  Потом, когда драйвер будет более-менее надо будет сделать "npm publish" и его можно будет ставить через

                                  npm install iobroker.mysensors

                                  Можешь поменять имя репозитория на github на ioBroker.mysensors

                                  ТОЛЬКО имя репозитория, больше ничего (package.json, io-package.json не менять)

                                  1 Reply Last reply
                                  0
                                  • V Offline
                                    V Offline
                                    Vlad_k
                                    wrote on last edited by
                                    #17

                                    так он и так иоброкер, или ты имеешь в виду с большой буквой? чет не нашел где править, или удалить и заново создать?

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

                                      Я смотрю ты ещё не зачекинил последнее состояние.

                                      Очень хорошее начало!

                                      :)

                                      Я бы хотел отдать на тест сообществу mysensors, но:

                                      • нет совершенно описания. Даже я могу только догадываться, что делать

                                      • работает ли путь iobroker => my sensors ?

                                      • надо бы будет все цифры в конфигураторе поменять на select со значениями.

                                      https://github.com/geek/sensors/blob/ma … /values.js

                                      • у меня цель поддержки tcp/udp. Было бы неплохо написать уровень абстракции, что бы было всё равно откуда/куда приходят/уходят данные (serial/udp/tcp)

                                      • какая библиотека используется 1.5 или 1.6 ?

                                      Вроде бы там адресация такая:
                                      ` > message-type

                                      Type	Value	Comment
                                      presentation	    0	Sent by a node when they present attached sensors. This is usually done in setup() at startup.
                                      set	                1	This message is sent from or to a sensor when a sensor value should be updated
                                      req	                2	Requests a variable value (usually from an actuator destined for controller).
                                      internal	        3	This is a special internal message. See table below for the details
                                      stream	            4	Used for OTA firmware updates
                                      ```` `  
                                      

                                      Типы сообщений stream и internal скорей всего не нужны.

                                      А presentation/set/req надо подставлять в драйвере в зависимости от того что драйвер хочет сделать:

                                      • драйвер стартанулся => send presentation что бы получить список адресов

                                      • poll => req

                                      • write => set

                                      и нет смысла вводить их в таблице..

                                      Всё только начинается :)

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

                                        @Vlad_k:

                                        так он и так иоброкер, или ты имеешь в виду с большой буквой? чет не нашел где править, или удалить и заново создать? `
                                        48_rename.png

                                        1 Reply Last reply
                                        0
                                        • V Offline
                                          V Offline
                                          Vlad_k
                                          wrote on last edited by
                                          #20

                                          @Bluefox:

                                          Я смотрю ты ещё не зачекинил последнее состояние. `
                                          вроде в репу все отправил…

                                          @Bluefox:

                                          Я бы хотел отдать на тест сообществу mysensors, но:

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

                                          @Bluefox:

                                          • работает ли путь iobroker => my sensors ?

                                          • надо бы будет все цифры в конфигураторе поменять на select со значениями.

                                          https://github.com/geek/sensors/blob/ma … /values.js `
                                          про путь поподробней не понял что имеешь в ввиду, а в таблице все уже и так выводится с подписанными полями

                                          @Bluefox:

                                          • у меня цель поддержки tcp/udp. Было бы неплохо написать уровень абстракции, что бы было всё равно откуда/куда приходят/уходят данные (serial/udp/tcp)

                                          • какая библиотека используется 1.5 или 1.6 ? `
                                            библиотека 1.5, про 1.6 не слыхал еще, но они чет намутили в последних версиях теперь ноды на китайском клоне Si24R1 не видятся в сети с nRF24, по крайней мере те, что я уже наделал платы…

                                          tcp/udp для себя не рассматриваю ввиду ненавистности к проводам, но куплю платку для экспериментов, попробую разобраться че там, хотя под MQTT Ethernet Gateway

                                          в брокере и так есть адаптер
                                          @Bluefox:

                                          Вроде бы там адресация такая:
                                          ` > message-type

                                          Type	Value	Comment
                                          presentation	    0	Sent by a node when they present attached sensors. This is usually done in setup() at startup.
                                          set	                1	This message is sent from or to a sensor when a sensor value should be updated
                                          req	                2	Requests a variable value (usually from an actuator destined for controller).
                                          internal	        3	This is a special internal message. See table below for the details
                                          stream	            4	Used for OTA firmware updates
                                          ```` `  
                                          

                                          Типы сообщений stream и internal скорей всего не нужны.

                                          А presentation/set/req надо подставлять в драйвере в зависимости от того что драйвер хочет сделать:

                                          • драйвер стартанулся => send presentation что бы получить список адресов

                                          • poll => req

                                          • write => set

                                          и нет смысла вводить их в таблице..

                                          Всё только начинается :) `
                                          тут я вообще не понял логику разработчиков библиотеки, все было прекрасно пока я не доделал драйвер, накой хрен они сделали презентацию, если потом обращение к юниту в ноде, в ручную приходится прописывть для подключения,

                                          например````
                                          1 12 presentation false S_LIGHT 1;12;0;0;3
                                          но чтоб включить-выключить юнит надо в порт писать 1;12;0;0;2,value\n

                                          как то раньше я этого не замечал
                                          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

                                          644

                                          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