Mikrotik

Подключение исполнительных устройств, датчиков, контроллеров.

Модератор: immortal

Аватара пользователя
Bagir
Сообщения: 1613
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 374 раза

Re: Mikrotik

Сообщение Bagir » Вс июн 28, 2020 10:50 am

Chainik писал(а):
Вс июн 28, 2020 9:00 am
имитация нажатия путем кратковременного уменьшения размера
Замечательный вариант, вечером обязательно попробую. Все элементы виждета заключены в тег g. Думаю не составит труда их анимировать.

В начале написания кода, я сразу решил создать классы для WiFi объектов и CAP точек. Для провайдеров класс не стал делать. Но уже жалею об этом. Сейчас в объекте ThisComputer набилось уже порядочно свойств провайдеров. Возможно переделаю на класс. Тогда код скриптов выбора провайдера можно было бы определить в класс, и добавить ещё некоторые интересные свойства.
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Аватара пользователя
Bagir
Сообщения: 1613
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 374 раза

Re: Mikrotik

Сообщение Bagir » Вс июн 28, 2020 12:01 pm

Успел попробовать на обеде. Вот что получилось:
В начало кода виджета добавляем стиль

Код: Выделить всё

<style type="text/css">
.knopka8549:active { transform: scale(0.9); } /* при нажатии */
</style>
В элементах провайдеров обрамляем код отрисовки в новый тег g, но после позиционирования

Код: Выделить всё

<g class="knopka8549">
полный код виджетаПоказать

Код: Выделить всё

<style type="text/css">
.knopka8549:active { transform: scale(0.9); } /* при нажатии */
</style>

<svg width="100%" height="100%">
 
 <!-- Облако -->
 <g transform="translate(27.5, 0)" >
  <g transform="scale(1.2) translate(-3, -3)" >
   <path style="fill:linen;stroke:#45413C;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;" d="M47.2,18.6c0-2-1.4-3.7-3.3-4.1c0-0.2,0.1-0.4,0.1-0.6c0-2.3-1.9-4.2-4.2-4.2      c-0.9,0-1.7,0.3-2.4,0.7c0-0.1,0-0.2,0-0.3c0-2.3-1.9-4.2-4.2-4.2c-1.2,0-2.2,0.5-3,1.2c-0.5-1.8-2.1-3.1-4.1-3.1      s-3.6,1.3-4.1,3.1c-0.8-0.8-1.8-1.2-3-1.2c-2.3,0-4.2,1.9-4.2,4.2c0,0.1,0,0.2,0,0.3c-0.7-0.5-1.5-0.7-2.4-0.7      c-2.3,0-4.2,1.9-4.2,4.2c0,0.2,0,0.4,0.1,0.6C6.4,14.9,5,16.6,5,18.6c0,2.1,1.5,3.8,3.6,4.2c-0.2,0.5-0.3,1-0.3,1.5      c0,2.3,1.9,4.2,4.2,4.2c0.9,0,1.7-0.3,2.4-0.7c0,0.1,0,0.2,0,0.3c0,2.3,1.9,4.2,4.2,4.2c1.3,0,2.4-0.6,3.2-1.5      c0.7,1.4,2.1,2.5,3.8,2.5c1.7,0,3.2-1,3.8-2.5c0.8,0.9,1.9,1.5,3.2,1.5c2.3,0,4.2-1.9,4.2-4.2c0-0.1,0-0.2,0-0.3      c0.7,0.5,1.5,0.7,2.4,0.7c2.3,0,4.2-1.9,4.2-4.2c0-0.5-0.1-1-0.3-1.5C45.7,22.5,47.2,20.7,47.2,18.6z"/> 
   <path fill="#FFD0E0" d="M44.9,17c0.2,0.5,0.3,1,0.3,1.6c0,2.5-2,4.5-4.5,4.5c-0.9,0-1.8-0.3-2.5-0.8      c0,0.1,0,0.2,0,0.3c0,2.5-2,4.5-4.5,4.5c-1.4,0-2.6-0.6-3.4-1.6c-0.7,1.5-2.3,2.6-4.1,2.6S22.7,27,22,25.4c-0.8,1-2,1.6-3.4,1.6      c-2.5,0-4.5-2-4.5-4.5c0-0.1,0-0.2,0-0.3c-0.7,0.5-1.6,0.8-2.5,0.8c-2.5,0-4.5-2-4.5-4.5c0-0.6,0.1-1.1,0.3-1.6      c-0.6-0.1-1.2-0.3-1.7-0.7C5.2,17,5,17.8,5,18.6c0,2.1,1.5,3.8,3.6,4.2c-0.2,0.5-0.3,1-0.3,1.5c0,2.3,1.9,4.2,4.2,4.2      c0.9,0,1.7-0.3,2.4-0.7c0,0.1,0,0.2,0,0.3c0,2.3,1.9,4.2,4.2,4.2c1.3,0,2.4-0.6,3.2-1.5c0.7,1.4,2.1,2.5,3.8,2.5      c1.7,0,3.2-1,3.8-2.5c0.8,0.9,1.9,1.5,3.2,1.5c2.3,0,4.2-1.9,4.2-4.2c0-0.1,0-0.2,0-0.3c0.7,0.5,1.5,0.7,2.4,0.7      c2.3,0,4.2-1.9,4.2-4.2c0-0.5-0.1-1-0.3-1.5c2-0.3,3.6-2.1,3.6-4.2c0-0.8-0.3-1.6-0.7-2.3C46,16.6,45.5,16.9,44.9,17z"/>
  </g>
  <text x="10" y="22" fill="black" stroke="none" font-size="10px">Internet</text>
 </g>

 
 <!-- Провайдер RT -->
 <g transform="translate(0, 51.3)" onClick='runScript("isp1select");'>
    <g transform="scale(0.6) translate(-291 -732) matrix(.10273 0 0 .10273 282.24 709.45)">
     <g class="knopka8549">
      <g stroke="none">
        <path fill='%ThisComputer.isp1|"rgb(50%, 50%, 50%);rgb(80%, 80%, 0%);rgb(0%, 50%, 0%);rgb(27%, 31%, 70%)"%' d="m95.37 339.97 241.06 113.64 245.89-115.92-241.06-113.64z"/>
        <path fill='%ThisComputer.isp1|"rgb(60%, 60%, 60%);rgb(90%, 90%, 10%);rgb(10%, 60%, 10%);rgb(36%, 40%, 80%)"%' d="m336.43 453.61v141.21l245.89-115.92v-141.21z"/>
        <path fill='%ThisComputer.isp1|"rgb(70%, 70%, 70%);rgb(100%, 100%, 20%);rgb(20%, 70%, 20%);rgb(48%, 48%, 90%)"%' d="m95.37 339.97 241.06 113.64v141.21l-241.06-113.65z"/>
      </g>
      <g fill="#f0f0f0">
        <path d="m302.68 264.66 38.514 5.6218 38.514 5.6218-16.367 5.3307 40.055 21.107-26.52 10.44-44.055-21.607-16.367 5.3308-6.8691-15.929z"/>
        <path d="m473.91 375.32-6.8691-15.929-6.8691-15.929-16.367 5.3308-46.555-22.107-26.02 9.9405 42.055 22.107-16.367 5.3307 38.514 5.6218z"/>
        <path d="m218.1 303.03 38.514 5.6218 38.514 5.6218-16.367 5.3307 41.555 21.107-25.52 10.94-46.555-22.107-16.367 5.3308-6.8691-15.929z"/>
        <path d="m391.74 411.85-6.8691-15.929-6.8691-15.929-16.367 5.3308-46.555-22.107-26.52 9.9405 42.555 22.107-16.367 5.3307 38.514 5.6218z"/>
      </g>
     </g>
    </g>
    <text x="0" y="0" fill="black" stroke="none" font-size="10px">RT</text>
    <text x="0" y="-10" fill="black" stroke="none" font-size="10px">%ThisComputer.isp1ping%</text>
 </g>

 <!-- Провайдер BL -->
 <g transform="translate(79, 51.3)" onClick='runScript("isp2select");'>
    <g transform="scale(0.6) translate(-291 -732) matrix(.10273 0 0 .10273 282.24 709.45)">
     <g class="knopka8549">
      <g stroke="none">                <!-- gray;yellow;green;blue -->
        <path fill='%ThisComputer.isp2|"rgb(50%, 50%, 50%);rgb(80%, 80%, 0%);rgb(0%, 50%, 0%);rgb(27%, 31%, 70%)"%' d="m95.37 339.97 241.06 113.64 245.89-115.92-241.06-113.64z"/>
        <path fill='%ThisComputer.isp2|"rgb(60%, 60%, 60%);rgb(90%, 90%, 10%);rgb(10%, 60%, 10%);rgb(36%, 40%, 80%)"%' d="m336.43 453.61v141.21l245.89-115.92v-141.21z"/>
        <path fill='%ThisComputer.isp2|"rgb(70%, 70%, 70%);rgb(100%, 100%, 20%);rgb(20%, 70%, 20%);rgb(48%, 48%, 90%)"%' d="m95.37 339.97 241.06 113.64v141.21l-241.06-113.65z"/>
      </g>
      <g fill="#f0f0f0">
        <path d="m302.68 264.66 38.514 5.6218 38.514 5.6218-16.367 5.3307 40.055 21.107-26.52 10.44-44.055-21.607-16.367 5.3308-6.8691-15.929z"/>
        <path d="m473.91 375.32-6.8691-15.929-6.8691-15.929-16.367 5.3308-46.555-22.107-26.02 9.9405 42.055 22.107-16.367 5.3307 38.514 5.6218z"/>
        <path d="m218.1 303.03 38.514 5.6218 38.514 5.6218-16.367 5.3307 41.555 21.107-25.52 10.94-46.555-22.107-16.367 5.3308-6.8691-15.929z"/>
        <path d="m391.74 411.85-6.8691-15.929-6.8691-15.929-16.367 5.3308-46.555-22.107-26.52 9.9405 42.555 22.107-16.367 5.3307 38.514 5.6218z"/>
      </g>
     </g>
    </g>
    <text x="20" y="0" fill="black" stroke="none" font-size="10px">BL</text>
    <text x="5" y="-10" fill="black" stroke="none" font-size="10px">%ThisComputer.isp2ping%</text>
 </g>

 
 <!-- Флаги -->
 <defs>
  <g id="flag8549">
  <path d="M5 0 L0 9 L10 9 Z" />
  </g>
 </defs>
 
 <g transform="translate(10, 80)" >
  <use href="#flag8549" style='display:%ThisComputer.ispmain|"none;block;none"%'/>
 </g>
 <g transform="translate(90, 80)" >
  <use href="#flag8549" style='display:%ThisComputer.ispmain|"none;none;block"%'/>
 </g>
 
 
 <!-- Роутер -->
 <g transform="translate(39.5, 89) scale(0.1)" onClick='runScript("getWiFiclients");'>
  <defs>
    <linearGradient x1="0.65625" y1="125.12147" x2="299.9375" y2="125.12147" id="linearGradient3833" gradientUnits="userSpaceOnUse" gradientTransform="translate(-0.31342216,851.86901)">
      <stop id="stop3780" style="stop-color:#557b8b;stop-opacity:1" offset="0"/>
      <stop id="stop3617" style="stop-color:#8aaac0;stop-opacity:1" offset="1"/>
    </linearGradient>
  </defs>
   <g transform="translate(5,-848)">
        <path d="m 0.34282784,901.90026 0,100.62504 0.03125,0 c 0.13323192,17.103 26.93452416,33.7389 74.81249916,42.9062 71.558743,13.7016 163.060593,5.5444 204.375003,-18.1875 13.59024,-7.8065 20.05029,-16.3087 20.0625,-24.7187 l 0,-100.37504 c -0.0444,8.38955 -6.50621,16.86923 -20.0625,24.65625 C 238.24717,950.53839 146.74532,958.66433 75.186577,944.96276 27.137451,935.76265 0.31623817,919.06779 0.37407784,901.90026 l -0.03125,0 z" style="fill:url(#linearGradient3833);fill-opacity:1;stroke:none"/>
        <path d="m 280.43717,678.68689 a 113.47587,113.47587 0 1 1 -226.951735,0 113.47587,113.47587 0 1 1 226.951735,0 z" transform="matrix(1.141816,0.218627,-0.659227,0.378674,406.7696,608.8589)" style="fill:#557b8b;fill-opacity:1;stroke:none"/>
        <path d="m 229.92724,898.48426 -18.78401,10.78993 66.58103,12.7485 -12.52268,7.1933 -66.58103,-12.7485 -18.78403,10.7899 -12.48521,-21.5727 62.57593,-7.20043 z" style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"/>
        <path d="m 120.16224,877.46718 -18.78403,10.78992 -66.581031,-12.7485 -12.52268,7.19328 66.581041,12.7485 -18.78402,10.78991 62.57593,-7.20044 -12.48521,-21.57267 z" style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"/>
        <path d="m 136.24453,936.84279 -26.02789,-4.9836 38.44057,-22.0811 -17.35193,-3.3224 -38.44058,22.0811 -26.0279,-4.9837 13.03556,19.0916 56.37217,-5.8019 z" style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"/>
        <path d="m 233.16085,881.17199 -26.0279,-4.98365 -38.43962,22.08051 -17.35193,-3.32244 38.43961,-22.0805 -26.0279,-4.98366 56.37312,-5.80238 13.03462,19.09212 z" style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"/>
   </g>
 </g>

 <!-- Крестики для линий -->
 <defs>
  <g id="krest8549">
   <line x1="10" y1="5" x2="10" y2="15" stroke="red" />
   <line x1="5" y1="10" x2="15" y2="10" stroke="red" />
  </g>
 </defs>

 <!-- От провайдера в Интернет -->
 <g transform="translate(20, 33)" >
  <line x1="20" y1="0" x2="0" y2="20" stroke="black" />
  <use href="#krest8549" style='display:%ThisComputer.isp1|"block;block;none;none"%'/>
 </g>
 <g transform="translate(70, 33)" >
  <line x1="0" y1="0" x2="20" y2="20" stroke="black" />
  <use href="#krest8549" style='display:%ThisComputer.isp2|"block;block;none;none"%'/>
 </g>

 <!-- От роутера к провайдеру -->
 <g transform="translate(20, 73)" >
  <line x1="0" y1="0" x2="20" y2="20" stroke="black" />
  <use href="#krest8549" style='display:%ThisComputer.isp1|"block;none;none;none"%'/>
 </g>
 <g transform="translate(70, 73)" >
  <line x1="20" y1="0" x2="0" y2="20" stroke="black" />
  <use href="#krest8549" style='display:%ThisComputer.isp2|"block;none;none;none"%'/>
 </g>

</svg>
Начало есть, значок провайдера уменьшается в размере при клике. Видно, что мы точно попали по нему при нажатии. Дальше можно дополнить стиль по своему вкусу. Из меня дизайнер не очень, если сделайте интересней, поделитесь тут.

P.S. цифры 8549 от балды для уникальности
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Аватара пользователя
Bagir
Сообщения: 1613
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 374 раза

Re: Mikrotik

Сообщение Bagir » Чт июл 02, 2020 2:48 pm

И всё же я решил добавить отдельный класс для провайдеров, а не сваливать все их свойства в вискомпьютер. Это упростит код сценария (цикла) получения данных, и добавит возможность вызывать методы при изменении статуса провайдеров. К тому же я сейчас экспериментирую с разными вариантами провайдеров мобильного Интернета для поиска более надежного и быстрого. Надоело каждый раз переписывать код цикла. Плюсом можно будет построить график активности провайдеров, чтобы наглядно наблюдать их статусы. Мой мобильный Интернет часто падает, хотелось бы видеть это на графике.
Напишите, какие ещё данные хотелось бы видеть в виджете. А так же примеры реагирования системы на переключения провайдеров. Нужны ли такие методы? Какие действия, кроме уведомлений можно было бы принимать в системе при этом. Нужно ли писать в свойства текущую скорость соединения провайдера для построения графика? Будет ли это иметь смысл при чтении раз в 10 секунд.
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Аватара пользователя
Bagir
Сообщения: 1613
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 374 раза

Re: Mikrotik

Сообщение Bagir » Пн ноя 16, 2020 5:07 pm

И снова эта тема. Я всё же обновил винду на семерку и поставил последнюю версию xampp сервера. Переезд Алисы прошел без проблем. А вот с допами придется повозиться. Один из ник Микротик. Соединиться даже на простом примере больше не получается. Нашел на github RouterOS PHP API class v1.7 Неудача. Начинаю копать дальше. Если кто в курсе, посоветуйте в каком направлении.
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Аватара пользователя
tarasfrompir
Сообщения: 3216
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 223 раза
Поблагодарили: 815 раз

Re: Mikrotik

Сообщение tarasfrompir » Пн ноя 16, 2020 5:09 pm

Bagir писал(а):
Пн ноя 16, 2020 5:07 pm
И снова эта тема. Я всё же обновил винду на семерку и поставил последнюю версию xampp сервера. Переезд Алисы прошел без проблем. А вот с допами придется повозиться. Один из ник Микротик. Соединиться даже на простом примере больше не получается. Нашел на github RouterOS PHP API class v1.7 Неудача. Начинаю копать дальше. Если кто в курсе, посоветуйте в каком направлении.
Я не уверен - а єто не подойдет ? - https://wiki.mikrotik.com/wiki/API_PHP_package
Спасибо нам ПОМОЖЕТ..!
Аватара пользователя
Bagir
Сообщения: 1613
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 374 раза

Re: Mikrotik

Сообщение Bagir » Пн ноя 16, 2020 5:22 pm

tarasfrompir писал(а):
Пн ноя 16, 2020 5:09 pm
а єто не подойдет ?
Возможно и подойдет, но придется всё переписывать. У меня гора кода, работающая на классе из файла routeros_api.class.php
На старой системе он работает. Вероятно что то где то в конфигурации xampp. Версии значительно новее моих
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Аватара пользователя
tarasfrompir
Сообщения: 3216
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 223 раза
Поблагодарили: 815 раз

Re: Mikrotik

Сообщение tarasfrompir » Пн ноя 16, 2020 5:30 pm

Bagir писал(а):
Пн ноя 16, 2020 5:22 pm
tarasfrompir писал(а):
Пн ноя 16, 2020 5:09 pm
а єто не подойдет ?
Возможно и подойдет, но придется всё переписывать. У меня гора кода, работающая на классе из файла routeros_api.class.php
На старой системе он работает. Вероятно что то где то в конфигурации xampp. Версии значительно новее моих
Может версия ПХП? виновата ?
Спасибо нам ПОМОЖЕТ..!
Аватара пользователя
Bagir
Сообщения: 1613
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 374 раза

Re: Mikrotik

Сообщение Bagir » Пн ноя 16, 2020 5:36 pm

Да запросто. Пока что хочу посмотреть на функции stream_context_create, socket, и что там ещё используется в функции public function connect($ip, $login, $password) из файла routeros_api.class.php
Наверное сразу стоит посмотреть а что там вообще с сокетами у xampp. Строку в конфиге расскоментировал. Но работу не проверял.
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Аватара пользователя
Bagir
Сообщения: 1613
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 374 раза

Re: Mikrotik

Сообщение Bagir » Пн ноя 16, 2020 6:35 pm

Код: Выделить всё

if(extension_loaded('sockets')) echo "WebSockets OK";
else echo "WebSockets UNAVAILABLE";
Проблем с сокетами не обнаружил. При попытке установить соединение с микротиком идет долгая пауза, как будто я ломлюсь на пустой ip адрес. Микрот в логах ничего не пишет. У кого нибудь на xampp есть микротики?
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Аватара пользователя
Bagir
Сообщения: 1613
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 374 раза

Re: Mikrotik

Сообщение Bagir » Пн ноя 16, 2020 7:21 pm

Чтож, в своих ошибках надо уметь признаваться. И я опять попался на свои же ограничения. IP Service List -> Available From. Там ум меня указан только ip сервера, где жила Алиса. Сейчас, при переезде, лиса временно живет на ноутбуке. Ну вот собственно и всё. Ранее я уже попадался на подобный момент с правами только для чтения, у пользователя для Алисы. Не попадайтесь, мне это стоило полдня времени. Ну хотя бы вспомнил что к чему в старом коде.
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Ответить