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

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    14
    1
    367

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    1.8k

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

Geplant Angeheftet Gesperrt Verschoben ioBroker драйвера
20 Beiträge 2 Kommentatoren 4.2k 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.
  • BluefoxB Offline
    BluefoxB Offline
    Bluefox
    schrieb am zuletzt editiert von
    #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 Antwort Letzte Antwort
    0
    • BluefoxB Offline
      BluefoxB Offline
      Bluefox
      schrieb am zuletzt editiert von
      #3

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

      1 Antwort Letzte Antwort
      0
      • V Offline
        V Offline
        Vlad_k
        schrieb am zuletzt editiert von
        #4

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

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

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

        1 Antwort Letzte Antwort
        0
        • BluefoxB Offline
          BluefoxB Offline
          Bluefox
          schrieb am zuletzt editiert von
          #5

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

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

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

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

          1 Antwort Letzte Antwort
          0
          • V Offline
            V Offline
            Vlad_k
            schrieb am zuletzt editiert von
            #6

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

            1 Antwort Letzte Antwort
            0
            • V Offline
              V Offline
              Vlad_k
              schrieb am zuletzt editiert von
              #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 Antwort Letzte Antwort
              0
              • V Offline
                V Offline
                Vlad_k
                schrieb am zuletzt editiert von
                #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 Antwort Letzte Antwort
                0
                • BluefoxB Offline
                  BluefoxB Offline
                  Bluefox
                  schrieb am zuletzt editiert von
                  #9

                  git stash

                  gut pull

                  git stash pop

                  1 Antwort Letzte Antwort
                  0
                  • V Offline
                    V Offline
                    Vlad_k
                    schrieb am zuletzt editiert von
                    #10

                    @Bluefox:

                    git stash

                    gut pull

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

                    1 Antwort Letzte Antwort
                    0
                    • V Offline
                      V Offline
                      Vlad_k
                      schrieb am zuletzt editiert von
                      #11

                      2 Bluefox

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

                      1 Antwort Letzte Antwort
                      0
                      • V Offline
                        V Offline
                        Vlad_k
                        schrieb am zuletzt editiert von
                        #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 Antwort Letzte Antwort
                        0
                        • V Offline
                          V Offline
                          Vlad_k
                          schrieb am zuletzt editiert von
                          #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 Antwort Letzte Antwort
                          0
                          • BluefoxB Offline
                            BluefoxB Offline
                            Bluefox
                            schrieb am zuletzt editiert von
                            #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 Antwort Letzte Antwort
                            0
                            • V Offline
                              V Offline
                              Vlad_k
                              schrieb am zuletzt editiert von
                              #15

                              @Bluefox:

                              То есть:

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

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

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

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

                              1 Antwort Letzte Antwort
                              0
                              • BluefoxB Offline
                                BluefoxB Offline
                                Bluefox
                                schrieb am zuletzt editiert von
                                #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 Antwort Letzte Antwort
                                0
                                • V Offline
                                  V Offline
                                  Vlad_k
                                  schrieb am zuletzt editiert von
                                  #17

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

                                  1 Antwort Letzte Antwort
                                  0
                                  • BluefoxB Offline
                                    BluefoxB Offline
                                    Bluefox
                                    schrieb am zuletzt editiert von
                                    #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 Antwort Letzte Antwort
                                    0
                                    • BluefoxB Offline
                                      BluefoxB Offline
                                      Bluefox
                                      schrieb am zuletzt editiert von
                                      #19

                                      @Vlad_k:

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

                                      1 Antwort Letzte Antwort
                                      0
                                      • V Offline
                                        V Offline
                                        Vlad_k
                                        schrieb am zuletzt editiert von
                                        #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 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

                                        442

                                        Online

                                        32.6k

                                        Benutzer

                                        81.9k

                                        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