Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Русский
    3. ioBroker
    4. Визуализация
    5. ioBroker.vis Драйвер
    6. Разные вопросы по Vis

    NEWS

    • ioBroker goes Matter ... Matter Adapter in Stable

    • 15. 05. Wartungsarbeiten am ioBroker Forum

    • Monatsrückblick - April 2025

    Разные вопросы по Vis

    This topic has been deleted. Only users with topic management privileges can see it.
    • Bluefox
      Bluefox last edited by

      @andrey99986:

      Понятно что можно просто использовать {ObjectID} в коде js (клиентская сторона) и создавать ссылки.

      Усложню вопрос - нужно сгенерить ссылку в зависимости от IP адреса клиента.

      То есть надо при открытии страницы сделать проверку IP (в скриптах в Админке iobroker) и вернуть на эту страницу информацию какой IP (ЛВС или Инет).

      При чём надо иметь ввиду что могут быть одновременно открыты страницы как из ЛВС так и из Интернет.

      На клиентском js проверять IP нельзя, так как IP может быть за нат-ом и совпадать с ЛВС.

      Другими словами как сконвертировать php-код в iobroker?

      		$ip = $_SERVER['REMOTE_ADDR'];
      		$iPhone  = stripos($_SERVER['HTTP_USER_AGENT'],"iPhone");
      		$iPad    = stripos($_SERVER['HTTP_USER_AGENT'],"iPad");
      		$Android = stripos($_SERVER['HTTP_USER_AGENT'],"Android");
      		if (strpos($ip,'192.168.2.') !== false) 
      		{
                      if( $iPhone || $iPad ) 
      			{
      			   echo "[](\"http://192.168.2......)
      ````[](\"http://192.168.2......) `   [Если я правильно понимаю, то это возможно, но не совсем.
      

      У тебя нет доступа к socket.io. Так как только socket.io имеет информацию о настоящем ip адресе.

      Что ты хочешь сделать? Просто показать в виз ip адрес клиента? Не думаю, что это возможно без модификации socket.io.]("http://192.168.2......)

      1 Reply Last reply Reply Quote 0
      • A
        andrey99986 last edited by

        @Bluefox:

        Что ты хочешь сделать? Просто показать в виз ip адрес клиента? Не думаю, что это возможно без модификации socket.io. `

        Хочу чтобы на странице vis создавалась ссылка в зависимости от того, с какого адреса была открыта страница.

        Если клиент зашёл с той же ЛВС, где находится iobroker- создавалась ссылка на внутренний ресурс вида http://192.168..

        Если клиент зашёл c Интернет - создавалась ссылка на ресурс вида http://www…

        Ну ещё желательно определять в заголовках User Agent-а, чтобы создавать url-ы в зависимости от устройства с которого зашли.

        А то сейчас приходится делать 6 ссылок на просмотр видео:

        1. Если зашли с Desktop с ЛВС

        2. Если зашли с Desktop с Интернет

        3. Если зашли с Android с ЛВС

        4. Если зашли с Android с Интернет

        5. Если зашли с IOS с ЛВС

        6. Если зашли с IOS с Интернет

        На php можно было оставить на странице только одну ссылку.

        В iobroker нужны все шесть?

        1 Reply Last reply Reply Quote 0
        • Bluefox
          Bluefox last edited by

          @andrey99986:

          @Bluefox:

          Что ты хочешь сделать? Просто показать в виз ip адрес клиента? Не думаю, что это возможно без модификации socket.io. `

          Хочу чтобы на странице vis создавалась ссылка в зависимости от того, с какого адреса была открыта страница.

          Если клиент зашёл с той же ЛВС, где находится iobroker- создавалась ссылка на внутренний ресурс вида http://192.168..

          Если клиент зашёл c Интернет - создавалась ссылка на ресурс вида http://www…

          Ну ещё желательно определять в заголовках User Agent-а, чтобы создавать url-ы в зависимости от устройства с которого зашли.

          А то сейчас приходится делать 6 ссылок на просмотр видео:

          1. Если зашли с Desktop с ЛВС

          2. Если зашли с Desktop с Интернет

          3. Если зашли с Android с ЛВС

          4. Если зашли с Android с Интернет

          5. Если зашли с IOS с ЛВС

          6. Если зашли с IOS с Интернет

          На php можно было оставить на странице только одну ссылку.

          В iobroker нужны все шесть? `
          Все что тебе надо. Можно отлично определить на клиенте. У меня сделано так, что по локалке я захожу без пароля, а по инету с паролем по https. Таким образом я могу отличить lan/wan, а тип клиента определяется js на раз два. Тебе надо понимать, что здесь используется отличная от php технология. Статические страницы и динамические данные могут поступать с двух разных источников. За счет этого достигается огромная скорость и гибкость. Тебе нельзя думать терминами php, но то что тебе надо сделать можно.

          Посмотри здесь я делаю что то похожее:

          https://iobroker.net:8080/vis/edit.html?main#DemoView

          1 Reply Last reply Reply Quote 0
          • A
            andrey99986 last edited by

            @Bluefox:

            Все что тебе надо. Можно отлично определить на клиенте. У меня сделано так, что по локалке я захожу без пароля, а по инету с паролем по https. Таким образом я могу отличить lan/wan, а тип клиента определяется js на раз два. Тебе надо понимать, что здесь используется отличная от php технология. Статические страницы и динамические данные могут поступать с двух разных источников. За счет этого достигается огромная скорость и гибкость. Тебе нельзя думать терминами php, но то что тебе надо сделать можно.

            Посмотри здесь я делаю что то похожее:

            https://iobroker.net:8080/vis/edit.html?main#DemoView `

            То есть из wan - открываем одну страницу, из lan - другую?

            По локалке хотелось бы тоже с паролем. И по причине безопасности и из-за избыточности иметь две ссылки.

            На странице по ссылке - ошибки.

            1 Reply Last reply Reply Quote 0
            • Bluefox
              Bluefox last edited by

              @andrey99986:

              @Bluefox:

              Все что тебе надо. Можно отлично определить на клиенте. У меня сделано так, что по локалке я захожу без пароля, а по инету с паролем по https. Таким образом я могу отличить lan/wan, а тип клиента определяется js на раз два. Тебе надо понимать, что здесь используется отличная от php технология. Статические страницы и динамические данные могут поступать с двух разных источников. За счет этого достигается огромная скорость и гибкость. Тебе нельзя думать терминами php, но то что тебе надо сделать можно.

              Посмотри здесь я делаю что то похожее:

              https://iobroker.net:8080/vis/edit.html?main#DemoView `

              То есть из wan - открываем одну страницу, из lan - другую?

              По локалке хотелось бы тоже с паролем. И по причине безопасности и из-за избыточности иметь две ссылки.

              На странице по ссылке - ошибки. `
              Нет. Страница одна и та же. Но разные web драйвера. У меня установлено 2 web драйвера. Один для интернет и один для локалки.

              Ну начни уже что нибудь делать. Я подмогу.

              [{"tpl":"tplHtml","data":{"g_fixed":false,"g_visibility":false,"g_css_font_text":false,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","refreshInterval":"0","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"html":"\n\n\n\n"},"style":{"left":"733px","top":"77px"},"widgetSet":"basic"}]
              
              1 Reply Last reply Reply Quote 0
              • A
                andrey99986 last edited by

                @Bluefox:

                Нет. Страница одна и та же. Но разные web драйвера. У меня установлено 2 web драйвера. Один для интернет и один для локалки.

                Ну начни уже что нибудь делать. Я подмогу. `
                За готовый ответ по определению устройства спасибо конечно же, с js можно мне достаточно было бы ткнуть на любой линк с подобным решением.

                Но я пока не понял как конкретно ты определяешь wan/lan вход. Надо как-то на js определить из-под какого драйвера запущен веб-сервер? Этот вопрос как бы не погуглишь 🙂 А практики с iobroker у меня слишком мало чтобы догадаться.

                1 Reply Last reply Reply Quote 0
                • H
                  Haus last edited by

                  @andrey99986:

                  @Bluefox:

                  Нет. Страница одна и та же. Но разные web драйвера. У меня установлено 2 web драйвера. Один для интернет и один для локалки.

                  Ну начни уже что нибудь делать. Я подмогу. `

                  Но я пока не понял как конкретно ты определяешь wan/lan вход. Надо как-то на js определить из-под какого драйвера запущен веб-сервер? Этот вопрос как бы не погуглишь 🙂 А практики с iobroker у меня слишком мало чтобы догадаться. `
                  Скорей всего по запросу https://192.168.1.10…. или http://192.168.1.10... у меня тоже так web.0 по http в доме без пароля, web.1 https из вне на доменное имя с паролем. Если по lan хочешь с паролем то в system.adapter.web.0 поставь галочку и будет тебе счастье.

                  1 Reply Last reply Reply Quote 0
                  • A
                    andrey99986 last edited by

                    @Haus:

                    Скорей всего по запросу https://192.168.1.10…. или http://192.168.1.10... у меня тоже так web.0 по http в доме без пароля, web.1 https из вне на доменное имя с паролем. Если по lan хочешь с паролем то в system.adapter.web.0 поставь галочку и будет тебе счастье. `

                    Два web-адаптера для чего, если при этом один и тот же проект?

                    Только ради того чтобы на странице отличить lan от wan входа? И кстати как конкретно? Так:?

                    var x = document.referrer;
                    

                    Пробой локального ресурса? Так это можно и на одном web-адаптере сделать.

                    Сейчас пытаюсь реализовать логику на пробе загрузки уникальной картинки (которая есть только в моей ЛВС). Интересно что в редакторе проба работает, а при просмотре страницы нет. Код стырил:

                    function ImageExist(url) 
                    {
                       var img = new Image();
                       img.src = url;
                       return img.height != 0;
                    }
                    

                    почему то такая конструкция вообще не заработала, даже в редакторе:

                    $.ajax({
                        url:'http://www.example.com/somefile.ext',
                        type:'HEAD',
                        error: function()
                        {
                            //file not exists
                        },
                        success: function()
                        {
                            //file exists
                        }
                    });
                    
                    1 Reply Last reply Reply Quote 0
                    • H
                      Haus last edited by

                      @andrey99986:

                      @Haus:

                      Скорей всего по запросу https://192.168.1.10…. или http://192.168.1.10... у меня тоже так web.0 по http в доме без пароля, web.1 https из вне на доменное имя с паролем. Если по lan хочешь с паролем то в system.adapter.web.0 поставь галочку и будет тебе счастье. `

                      Два web-адаптера для чего, если при этом один и тот же проект?

                      Только ради того чтобы на странице отличить lan от wan входа? И кстати как конкретно? Так:? `
                      Ну например дома на стене весит планшет, зачем там пароль и выход через определённое время. А вот из вне(с работы через комп) пароль и сброс через определённое время также https да и порт 443 другой, безопасность не помешает 🙂

                      1 Reply Last reply Reply Quote 0
                      • Bluefox
                        Bluefox last edited by

                        @andrey99986:

                        @Haus:

                        Скорей всего по запросу https://192.168.1.10…. или http://192.168.1.10... у меня тоже так web.0 по http в доме без пароля, web.1 https из вне на доменное имя с паролем. Если по lan хочешь с паролем то в system.adapter.web.0 поставь галочку и будет тебе счастье. `

                        Два web-адаптера для чего, если при этом один и тот же проект?

                        Только ради того чтобы на странице отличить lan от wan входа? И кстати как конкретно? Так:?

                        var x = document.referrer;
                        

                        Пробой локального ресурса? Так это можно и на одном web-адаптере сделать.

                        Сейчас пытаюсь реализовать логику на пробе загрузки уникальной картинки (которая есть только в моей ЛВС). Интересно что в редакторе проба работает, а при просмотре страницы нет. Код стырил:

                        function ImageExist(url) 
                        {
                           var img = new Image();
                           img.src = url;
                           return img.height != 0;
                        }
                        

                        почему то такая конструкция вообще не заработала, даже в редакторе:

                        $.ajax({
                            url:'http://www.example.com/somefile.ext',
                            type:'HEAD',
                            error: function()
                            {
                                //file not exists
                            },
                            success: function()
                            {
                                //file exists
                            }
                        });
                        ```` `  
                        

                        Тебе надо засунуть код в

                        Какие у тебя IP адреса в локалке и в инете? По ним нельзя определить?

                        С загрузкой картинки может возникнуть CORS проблема.

                        1 Reply Last reply Reply Quote 0
                        • A
                          andrey99986 last edited by

                          @Bluefox:

                          Тебе надо засунуть код в

                          Какие у тебя IP адреса в локалке и в инете? По ним нельзя определить?

                          С загрузкой картинки может возникнуть CORS проблема. `

                          аякс код дополнительно в ?

                          Адреса в локалке 192.168.2.

                          Но надо гарантировано определить что я в своей сети.

                          var x = document.referrer;
                          

                          Выдаёт разный ответ при lan/wan доступе. Пока работает вот такой код , тестирую:

                          var myref = document.referrer;
                          clientip_www = false;
                          if (myref.includes("www.")){
                              clientip_www = true;
                          }
                          
                          1 Reply Last reply Reply Quote 0
                          • A
                            andrey99986 last edited by

                            С document.referrer не во всех случаях работает.

                            Поставил я второй web-адаптер с http протоколом.

                            Как теперь в js отличить lan/wan вход?

                            Код кто-нибудь может показать?

                            1 Reply Last reply Reply Quote 0
                            • Bluefox
                              Bluefox last edited by

                              @andrey99986:

                              С document.referrer не во всех случаях работает.

                              Поставил я второй web-адаптер с http протоколом.

                              Как теперь в js отличить lan/wan вход?

                              Код кто-нибудь может показать? `
                              Да не может быть что wan и lan у тебя оба в 192.168.2.* висят.

                              Какие у тебя адреса?

                              1 Reply Last reply Reply Quote 0
                              • A
                                andrey99986 last edited by

                                @Bluefox:

                                @andrey99986:

                                С document.referrer не во всех случаях работает.

                                Поставил я второй web-адаптер с http протоколом.

                                Как теперь в js отличить lan/wan вход?

                                Код кто-нибудь может показать? `
                                Да не может быть что wan и lan у тебя оба в 192.168.2.* висят.

                                Какие у тебя адреса? `
                                Физически сервер iobroker- 192.168.2.200

                                Есть арендованный сервер с реальным IP (firstvds)

                                между маршрутизатором ЛВС (openwrt) 192.168.2.1 и firstvds vpn туннель на openvpn (сеть 10.8.1.x).

                                Настроена маршрутизация с firstvds до iobroker через openvpn сеть.

                                На firstvds переброс портов iobroker с маскарадингом до iobroker-сервера.

                                Вобщем всё классически 🙂

                                с wan я захожу набирая https://www. (реальное доменное имя)

                                с лан - https://192.168.2.200

                                И как отличить lan/wan вход имея только один экземпляр страницы iobroker?

                                1 Reply Last reply Reply Quote 0
                                • Bluefox
                                  Bluefox last edited by

                                  @andrey99986:

                                  @Bluefox:

                                  @andrey99986:

                                  С document.referrer не во всех случаях работает.

                                  Поставил я второй web-адаптер с http протоколом.

                                  Как теперь в js отличить lan/wan вход?

                                  Код кто-нибудь может показать? `
                                  Да не может быть что wan и lan у тебя оба в 192.168.2.* висят.

                                  Какие у тебя адреса? `
                                  Физически сервер iobroker- 192.168.2.200

                                  Есть арендованный сервер с реальным IP (firstvds)

                                  между маршрутизатором ЛВС (openwrt) 192.168.2.1 и firstvds vpn туннель на openvpn (сеть 10.8.1.x).

                                  Настроена маршрутизация с firstvds до iobroker через openvpn сеть.

                                  На firstvds переброс портов iobroker с маскарадингом до iobroker-сервера.

                                  Вобщем всё классически 🙂

                                  с wan я захожу набирая https://www. (реальное доменное имя)

                                  с лан - https://192.168.2.200

                                  И как отличить lan/wan вход имея только один экземпляр страницы iobroker? `

                                  if (window.location.href.indexOf('www.') !== -1) {
                                     console.log('WAN');
                                  } else {
                                     console.log('LAN');
                                  }
                                  
                                  
                                  1 Reply Last reply Reply Quote 0
                                  • A
                                    andrey99986 last edited by

                                    @Bluefox:

                                    if (window.location.href.indexOf('www.') !== -1) {
                                       console.log('WAN');
                                    } else {
                                       console.log('LAN');
                                    }
                                    
                                    ```` `  
                                    

                                    Вот! Спасибо. Гуглил конечно же - но упорно на эту функцию не выходил. Надо было со стороны справочника js заходить….

                                    1 Reply Last reply Reply Quote 0
                                    • A
                                      andrey99986 last edited by

                                      Как в js в vis присвоить объекту {ObjectID} значение свойства window.location.href ?

                                      1 Reply Last reply Reply Quote 0
                                      • A
                                        andrey99986 last edited by

                                        Последняя версия vis на какое разрешение рассчитана?

                                        А то у меня элементы управления как-то сдвинулись:
                                        1444_vis-res.png
                                        1444_vis-res2.png

                                        1 Reply Last reply Reply Quote 0
                                        • Bluefox
                                          Bluefox last edited by

                                          @andrey99986:

                                          Как в js в vis присвоить объекту {ObjectID} значение свойства window.location.href ? `

                                          [{"tpl":"tplHtml","data":{"g_fixed":false,"g_visibility":false,"g_css_font_text":false,"g_css_background":false,
                                          "g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,
                                          "visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","refreshInterval":"0",
                                          "signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png",
                                          "signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":
                                          
                                          false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png",
                                          "signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":
                                          false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png",
                                          "signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":
                                          false,"html":""},"style":{"left":"730px","top":"10px","width":"163px","height":"51px"},"widgetSet":"basic"}]
                                          

                                          Только javascript.0.location надо поменять на твой ObjectID

                                          1 Reply Last reply Reply Quote 0
                                          • A
                                            andrey99986 last edited by

                                            @Bluefox:

                                            Только javascript.0.location надо поменять на твой ObjectID `
                                            Спасибо, буду пробовать.

                                            На вопрос про сдвиг элементов управления есть предположения в чем проблема?

                                            У меня разрешение 1600*900, больше на ноуте не ставиться. Я сейчас даже страницу в vis-е добавить не могу - нет видимого поля ввода для имени страницы.

                                            Тестировал - в Chrome, IE, Opera - элементы управления одинаково сдвинуты друг на друга.

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            662
                                            Online

                                            31.6k
                                            Users

                                            79.5k
                                            Topics

                                            1.3m
                                            Posts

                                            20
                                            218
                                            57570
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo