Jump to content
Форум по продукции MOXA

oiv_1968

Пользователи
  • Posts

    163
  • Joined

  • Last visited

Everything posted by oiv_1968

  1. Вы наверное правы. Сейчас я только блокировал список URL, методом перенаправления на адрес веб странички в локальной сети... Радует одно - не занимает много ОЗУ. И ТВ онлайн и многое другое с браузера, где много вкладок открыто... в том числе и блокированных. Количество соединений достаточное. Из одной подсети (LAN2) в другую подсеть с интернетом (LAN1) с перенаправлением при блокировке на вебсервер в первой подсети(LAN2). И это всё одновременно кроме прочего остального может малыш UC-7112-Lx-Plus
  2. Вот описание и возможные настройки http://wiki.rosalab.ru/ru/index.php/Блокировка_интернет_рекламы_с_помощью_Privoxy http://open-life.org/blog/howto/188.html устройство UC-7112-Lx-Plus "висит на гвоздике" и фильтрует ряд URL адресов... на случай когда ребёнок приезжая ко мне использует интернет через мой комп. Хорошо помогает
  3. Доброго времени суток! Решение найдено... кривое но работает: 1) На некой машине с Linux имеется компилятор для устройства и некий "умный" скрипт, который запускается при включении. На ней же и доступный для устройства NFS. 2) На устройстве примонтирована директория NFS ттой самой машины. Устройство производит некие(соответствующие) действия и сохраняет командный файл. 3) "Умный" скрипт на машине Linux найдя этот командный файл что-то компилирует. 4) Устройство запускает результат той компиляции, даже не загружая себе... NFS ведь общий как для устройства, так и для машины с Linux. Всё это сейчас активно использую. Спасибо NFS!!!!
  4. доброго времени суток! Вдруг стало сыпаться меж ног я ноклноился охреневший сначала думал что песок а это порох не сгоревший С ПРАЗДНИКОМ ДРУЗЬЯ( не Подруги потому как для Вас есть свой день... но позже, но поверьте я очень Вас люблю )
  5. Вот это: обёртка в виде HTML страницы этих двух скриптов (PHP и BASH). Работает с базой (там список прокси). UC-7112-Lx-plus проверяет их доступность непрерывно, выбирая из удалённой базы MySQL(на каком-то сервере в локальной сети). Следует отметить, что эта обёртка далека от завершения: https://yadi.sk/d/BcZp-dXyyr3Epw Клиент mysql на устройстве тут не используется. Для работы потребуется установка curl на устройство это тут(надо выбрать последнюю версию: curl_7.63.zip ...и может ещё что-то будет полезное): https://moxa.ru/forum/index.php?/topic/25195-сказка-про-nc-или-как-его-не-хватало/ Для работы в файле index.php изменить на свои значения: // $host = '192.168.7.150'; // Хост $user = 'nsite'; // Имя пользователя $pass = 'nsite'; // пароль пользователя $db_name = 'nsite_db'; // Имя базы данных Тут параметры сервера MySQL... IP адрес, пользователь, пароль и имя базы данных. Скрипт PHP (если его запускать автономно из браузера) позволяет кое-что формировать/изменять в самой базе (смотрите исходник файла). Содержимое архива поместить в директорию работы сервера Apache на устройстве MOXA(IA240LX/IA241LX/UC7112Lx-Plus). Для запуска/остановки скрипта на странице "скрипт проверки прокси" кнопки "старт" и "стоп" соответственно. Таблица "User Agent" в базе должна быть создана вручную. Можно воспользоваться утилитой mysql на самом устройстве (если установили конечно). Окно "ПРОКСИ ЛИСТ" управляемое... интерактивно (по клику мышки) можно добавить/удалить IP:PORT прокси, а кнопка "Получить" выводит список IP:PORT прокси и результаты проверки из удаленной базы MySQL. Остальные органы управления пока в доработке.
  6. Доброго времени суток! Кто-нибудь собирал mosquitto для IA240-LX/UC-7112-LX-Plus ??? Конкретно интересуют: mosquitto_sub и mosquitto_pub Испытал на PC(Debian) - отлично. Вот думаю надо ли собирать(проба) или собрал кто уже. Спасибо!
  7. Я же говорил: Простите!!! Я сам виноват с количеством захватов и освобождений мютексов пролетел. Ещё раз простите!
  8. Вообще-то мне предоставили диск от устройства IA240Lx... там много чего есть для того что бы собрать. Есть там и MySQL.
  9. Но сегодня у меня получидось собрать MySQL client на устройство (вот ссылка на архив): https://yadi.sk/d/W3_IzV38rslFAA Надо в сессии ROOT запустить setup.sh. у меня директории /lib и /usr на SD - карте. Не пытайтесь подключиться локально (это по умолчанию) - на устройстве нет MySQL сервера. вот: www-data@Moxa:~$ mysql -u nsite -pnsite -h 192.168.7.150 Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 to server version: 5.5.5-10.1.45-MariaDB-0+deb9u1 Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | nsite_db | +--------------------+ 2 rows in set (0.12 sec) mysql> use nsite_db; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> show tables; +--------------------+ | Tables_in_nsite_db | +--------------------+ | ProxyList | +--------------------+ 1 row in set (0.00 sec) mysql> select * from ProxyList; +----+-----------------------+------+-------+--------+---------+--------+----------+---------+------------+--------+ | id | UrlPort | http | https | socks4 | socks4a | socks5 | TimeWait | Country | RegionName | Status | +----+-----------------------+------+-------+--------+---------+--------+----------+---------+------------+--------+ | 1 | 174.70.241.8:24398 | 0 | 0 | 1 | 1 | 1 | NULL | NULL | NULL | NULL | | 3 | 66.135.227.178:4145 | 0 | 0 | 1 | 1 | 1 | NULL | NULL | NULL | NULL | | 6 | 216.144.230.233:15993 | 0 | 0 | 1 | 1 | 1 | NULL | NULL | NULL | NULL | | 8 | 162.243.108.129:8080 | 0 | 0 | 0 | 0 | 0 | NULL | NULL | NULL | NULL | | 10 | 207.97.174.134:1080 | 0 | 0 | 1 | 0 | 0 | NULL | NULL | NULL | NULL | | 12 | 72.11.148.222:56533 | 0 | 0 | 1 | 1 | 1 | NULL | NULL | NULL | NULL | | 14 | 174.76.48.230:4145 | 0 | 0 | 1 | 1 | 1 | NULL | NULL | NULL | NULL | | 15 | 109.105.205.229:4145 | 0 | 0 | 0 | 0 | 0 | NULL | NULL | NULL | NULL | | 17 | 132.255.92.35:53281 | 1 | 0 | 0 | 0 | 0 | NULL | NULL | NULL | NULL | | 19 | 152.204.128.46:33047 | 0 | 0 | 0 | 0 | 0 | NULL | NULL | NULL | NULL | | 21 | 182.160.117.130:53281 | 0 | 0 | 0 | 0 | 0 | NULL | NULL | NULL | NULL | | 23 | 138.68.41.90:3128 | 1 | 0 | 0 | 0 | 0 | NULL | NULL | NULL | NULL | | 25 | 88.198.50.103:8080 | 1 | 0 | 0 | 0 | 0 | NULL | NULL | NULL | NULL | | 27 | 103.113.3.242:4145 | 0 | 0 | 0 | 0 | 0 | NULL | NULL | NULL | NULL | | 29 | 45.119.85.54:8080 | 1 | 0 | 0 | 0 | 0 | NULL | NULL | NULL | NULL | | 31 | 196.55.140.61:80 | 0 | 0 | 0 | 0 | 0 | NULL | NULL | NULL | NULL | | 33 | 81.201.60.130:80 | 1 | 0 | 0 | 0 | 0 | NULL | NULL | NULL | NULL | | 35 | 63.249.67.70:53281 | 0 | 0 | 0 | 0 | 0 | NULL | NULL | NULL | NULL | | 37 | 98.143.144.62:45582 | 0 | 0 | 0 | 1 | 0 | NULL | NULL | NULL | NULL | | 39 | 52.251.47.125:3128 | 1 | 0 | 0 | 0 | 0 | NULL | NULL | NULL | NULL | | 41 | 95.174.67.50:18080 | 1 | 0 | 0 | 0 | 1 | NULL | NULL | NULL | NULL | | 43 | 196.54.47.139:80 | 1 | 0 | 0 | 0 | 0 | NULL | NULL | NULL | NULL | | 45 | 196.54.50.164:80 | 0 | 0 | 0 | 0 | 0 | NULL | NULL | NULL | NULL | | 47 | 196.55.140.4:80 | 0 | 0 | 0 | 0 | 0 | NULL | NULL | NULL | NULL | | 49 | 167.71.119.18:9050 | 1 | 0 | 0 | 0 | 0 | NULL | NULL | NULL | NULL | | 51 | 103.215.16.238:4145 | 0 | 0 | 1 | 0 | 0 | NULL | NULL | NULL | NULL | | 53 | 46.218.155.194:3128 | 1 | 0 | 0 | 0 | 0 | NULL | NULL | NULL | NULL | | 55 | 161.202.226.194:80 | 0 | 0 | 0 | 0 | 0 | NULL | NULL | NULL | NULL | | 57 | 3.11.214.31:80 | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | | 59 | 176.9.75.42:8080 | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | | 61 | 188.166.83.17:8080 | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | | 63 | 114.5.36.243:4145 | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | | 65 | 138.197.157.32:8080 | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | | 67 | 46.254.217.67:61781 | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | | 69 | 13.244.114.163:80 | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | | 71 | 138.197.157.32:1080 | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | | 73 | 191.96.42.80:1080 | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | | 75 | 109.232.106.236:52435 | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | | 76 | 96.54.47.197:80 | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | | 78 | 92.117.146.110:80 | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +----+-----------------------+------+-------+--------+---------+--------+----------+---------+------------+--------+ 40 rows in set (0.01 sec) mysql> Теперь BASH скрипты на самом устройстве умеют сами производить операции чтения/записи/изменения на удалённых MySQL серверах с базами данных. Одним словом полноценный MySQL клиент прямо на UC-7112-LX-Plus и IA240LX
  10. Потом был скрипт BASH: #!/bin/bash # Тест прокси по URL # Входные параметры №1 - номер по списку в базе, №2 - URL прокси сервера # tw="60" # максимальное время ожидания myurl="127.0.0.1" ((_http = 0)) ((_https = 0)) ((_socks4 = 0)) ((_socks4a = 0)) ((_socks5 = 0)) _num=$1 _pr=$2 _par="" function fproxy() { start=$(date +%s) str=$(curl -s --max-time $tw -x $_pr -U YOURUSER:YOURPASS ip-api.com/json) end=$(date +%s) if(((${#str} > 8))); then diff=$(( end - start )) ((_http = 1)) fi start=$(date +%s) str=$(curl -s --max-time $tw -x https://$_pr -U YOURUSER:YOURPASS ip-api.com/json) end=$(date +%s) if(((${#str} > 8))); then diff=$(( end - start )) ((_https = 1)) fi start=$(date +%s) str=$(curl -s --max-time $tw --socks4 $_pr ip-api.com/json) end=$(date +%s) if(((${#str} > 8))); then diff=$(( end - start )) ((_socks4 = 1)) fi start=$(date +%s) str=$(curl -s --max-time $tw --socks4a $_pr -U YOURUSER:YOURPASS ip-api.com/json) end=$(date +%s) if(((${#str} > 8))); then diff=$(( end - start )) ((_socks4a = 1)) fi start=$(date +%s) str=$(curl -s --max-time $tw --socks5 $_pr -U YOURUSER:YOURPASS ip-api.com/json) end=$(date +%s) if(((${#str} > 8))); then diff=$(( end - start )) ((_socks5 = 1)) fi echo "http:"$_http" https:"$_https" socks4:"$_socks4" socks4a:"$_socks4a" socks5:"$_socks5 _par="ramdisk/index.php?cmd=resproxy&num="$_num"&UrlPort="$_pr"&http="$_http"&https="$_https"&socks4="$_socks4"&socks4a="$_socks4a"&socks5="$_socks5 echo $_par toserver="--max-time 10 http://"$myurl"/"$_par curl $toserver } fproxy $1 exit 0 При запуске этого скрипта с параметрами "номер условный" и "IP/URL:Port" производится проверка указанного прокси на доступность по HTTP, HTTPS, SOCKS4, SOCKS4a, SOCK5 и завершает свою работу отправкой через Curl запроса с парамертами к Apache с PHP скриптом. Скрипт производит обработку и сохранение в базе, после чего увеличивает счётчик и выбирает новый IP/Url:Port из базы и вновь запускает этот BASH скрипт. И так циклически скрипты запускают друг друга. Эти оба скрипта BASH и PHP на устройстве UC-7112Lx-plus. Вроде работает....
  11. Первая попытка... а на что PHP? Но он у меня работает только в составе Apache при обработке зпросов, хоть и умеет быть клиентом MySQL. А что (зачем) дома? То была попытка проверки прокси на доступность по списку. Ну должна же она что-то делать! На системном блоке с Debian был поднят MySQL сервер, создан пользователь и база. Со стороны UC-7112Lx-plus скрипт PHP: <?php header('Content-Type: text/html; charset=utf-8'); error_reporting(0); // $help = " <table> <tr> <td colspan=\"3\" ali align=\"center\" style=\"color: rgb(255,255,255);\">Подсказка к вызываемому скрипту</td> </tr> <tr> <td colspan=\"3\" ali align=\"center\" style=\"color: rgb(255,255,100);\">Для работы с прокси:</td> </tr> <tr> <td style=\"color: rgb(255,100,255);\">cmd=DropProxyListTable</td> <td widht=\"5px\"></td> <td style=\"color: rgb(255,100,255);\">-Удалить таблицу прокси</td> </tr> <tr> <td style=\"color: rgb(100,255,255);\">cmd=CreateProxyListTable</td> <td widht=\"5px\"></td> <td style=\"color: rgb(100,255,255);\">-Создать таблицу прокси</td> </tr> <tr> <td style=\"color: rgb(255,100,255);\">cmd=WrProxyUrl&Url=<значение></td> <td widht=\"5px\"></td> <td style=\"color: rgb(255,100,255);\">-Добавить новый URL прокси в таблицу</td> </tr> <tr> <td style=\"color: rgb(100,255,255);\">cmd=RmProxyUrl&Url=<значение></td> <td widht=\"5px\"></td> <td style=\"color: rgb(100,255,255);\">-Удалить URL прокси из таблицы</td> </tr> <tr> <td style=\"color: rgb(255,100,255);\">cmd=RdAllProxyUrl</td> <td widht=\"5px\"></td> <td style=\"color: rgb(255,100,255);\">-Вывод на экран список прокси</td> </tr> <tr> <td style=\"color: rgb(100,255,255);\">cmd=RdAllProxyUrlJ</td> <td widht=\"5px\"></td> <td style=\"color: rgb(100,255,255);\">-Вывод список прокси в JSON</td> </tr> <tr> <td colspan=\"3\" ali align=\"center\" style=\"color: rgb(255,255,100);\">Для работы PING:</td> </tr> </table>"; // $cmd = $_GET['cmd']; $url = $_GET['Url']; // $http = $_GET["http"]; $https = $_GET["https"]; $socks4 = $_GET["socks4"]; $socks4a = $_GET["socks4a"]; $socks5 = $_GET["socks5"]; $UrlPort = $_GET["UrlPort"]; $num = $_GET["num"]; // $host = '192.168.7.150'; // Хост $user = 'user'; // Имя пользователя $pass = 'user'; // пароль пользователя $db_name = 'nsite_db'; // Имя базы данных if($cmd == null) { echo $help; } else if($cmd == "netstat") { $res = shell_exec("netstat -nlta | grep tcp | sed \"s/\n/<br>/g\""); echo $res; } else { $link = mysql_connect($host, $user, $pass); // Соединяемся с базой if (!$link) { echo 'Error coonnect to database!'; exit; } else if($cmd == "DropProxyListTable") { $sdb = "DROP TABLE ProxyList"; $query = sprintf($sdb); $sql = mysql_db_query($db_name,$query); if(!$sql) { echo "Err : ". mysql_error(); exit; } } else if($cmd == "CreateProxyListTable") { $sdb = "CREATE TABLE ProxyList(id INT AUTO_INCREMENT PRIMARY KEY, UrlPort varchar(32), http INT, https INT, socks4 INT, socks4a INT, socks5 INT, TimeWait FLOAT, Country varchar(48), RegionName varchar(48), Status varchar(16), UNIQUE (UrlPort))"; $query = sprintf($sdb); $sql = mysql_db_query($db_name,$query); if(!$sql) { echo "Err : ". mysql_error(); exit; } } else if($cmd == "WrProxyUrl") { $sdb = "INSERT INTO ProxyList(UrlPort) VALUES ('".$url."')"; $query = sprintf($sdb); $sql = mysql_db_query($db_name,$query); if(!$sql) { echo "Err : ". mysql_error(); exit; } $rows = mysql_num_rows($sql); $strUrlPort = ""; $cnt = 0; while($cnt < $rows)// получаем все строки в цикле по одной { $row = mysql_fetch_array($sql); if(($cnt + 1) < $rows) $strUrlPort .= "\"".$row['UrlPort']."\",";// выводим данные URL else $strUrlPort .= "\"".$row['UrlPort']."\"]";// выводим данные URL $cnt++; } $strJSON = "{\n\"UrlPort\":[".$strUrlPort."\n}"; echo $strJSON; } else if($cmd == "RmProxyUrl") { $sdb = "DELETE FROM ProxyList WHERE UrlPort='".$url."'"; $query = sprintf($sdb); $sql = mysql_db_query($db_name,$query); if(!$sql) { echo "Err : ". mysql_error(); exit; } $rows = mysql_num_rows($sql); $strUrlPort = ""; $cnt = 0; while($cnt < $rows)// получаем все строки в цикле по одной { $row = mysql_fetch_array($sql); if(($cnt + 1) < $rows) $strUrlPort .= "\"".$row['UrlPort']."\",";// выводим данные URL else $strUrlPort .= "\"".$row['UrlPort']."\"]";// выводим данные URL $cnt++; } $strJSON = "{\n\"UrlPort\":[".$strUrlPort."\n}"; echo $strJSON; } else if($cmd == "RdAllProxyUrl") { $sdb = "SELECT * FROM ProxyList"; $query = sprintf($sdb); $sql = mysql_db_query($db_name,$query); if(!$sql) { echo "Err : ". mysql_error(); exit; } // while($row = mysql_fetch_array($sql))// получаем все строки в цикле по одной { $UrlPort = $row['UrlPort']; echo '<p>UrlPort : '.$UrlPort.'</p>';// выводим данные } } else if($cmd == "RdAllProxyUrlJ") { $sdb = "SELECT * FROM ProxyList"; $query = sprintf($sdb); $sql = mysql_db_query($db_name,$query); if(!$sql) { echo "Err : ". mysql_error(); exit; } $rows = mysql_num_rows($sql); $strUrlPort = ""; $cnt = 0; while($cnt < $rows)// получаем все строки в цикле по одной { $row = mysql_fetch_array($sql); if(($cnt + 1) < $rows) $strUrlPort .= "\"".$row['UrlPort']."\",";// выводим данные URL else $strUrlPort .= "\"".$row['UrlPort']."\"]";// выводим данные URL $cnt++; } $strJSON = "{\n\"UrlPort\":[".$strUrlPort."\n}"; echo $strJSON; exit; } else if($cmd == "testproxy") { $sdb = "SELECT * FROM ProxyList"; $query = sprintf($sdb); $sql = mysql_db_query($db_name,$query); if(!$sql) { echo "Err : ". mysql_error(); exit; } $rows = mysql_num_rows($sql); if($rows > 0) { $cnt = 0; $num = 0; while($cnt < $rows) { $row = mysql_fetch_array($sql); $UrlPort = $row['UrlPort']; if($num == $cnt) break; $cnt++; } } else exit; $cmd = "./testproxy.sh ".$num." ".$UrlPort." &"; $strres = shell_exec($cmd); echo "UrlPort=".$UrlPopt."cmd = ".$cmd; exit; } else if($cmd == "resproxy") { $sdb = "UPDATE ProxyList SET "; $sdb .= "http = ".$http.","; $sdb .= "https = ".$https.","; $sdb .= "socks4 = ".$socks4.","; $sdb .= "socks4a = ".$socks4a.","; $sdb .= "socks5 = ".$socks5." "; $sdb .= "WHERE UrlPort = \"".$UrlPort."\""; $query = sprintf($sdb); $sql = mysql_db_query($db_name,$query); if(!$sql) { echo "Err : ". mysql_error(); exit; } $sdb = "SELECT * FROM ProxyList"; $query = sprintf($sdb); $sql = mysql_db_query($db_name,$query); if(!$sql) { echo "Err : ". mysql_error(); exit; } $rows = mysql_num_rows($sql); if($num < $rows) $num++; else $num = 0; while($cnt < $rows) { $row = mysql_fetch_array($sql); $UrlPort = $row['UrlPort']; if($num == $cnt) break; $cnt++; } $cmd = "./testproxy.sh ".$num." ".$UrlPort." &"; $strres = shell_exec($cmd); echo "UrlPort=".$UrlPopt."cmd = ".$cmd; exit; } else { echo "<p>Uncnown coomahd : ".$cmd; exit; } } ?> После чего с веб страницы были удачные попытки работы с базой.
  12. Доброго времени суток! Тут, как и везде для меня ключевое слово MOXA(IA240Lx/UC-7112Lx-plus) потому и рассматриваю это. Есть ли возможность осуществлять доступ к базе данных MySQL непосредственно из устройства(указано выше) по локальной сети. Проводил опыты с Apache + php, которые тут в темах этого раздела. Делал скрипт php и получал доступ к базе MySQL через него используя браузер на PC. Но задача стоит в том, что-бы приложение которое крутиться на устройстве само получило доступ к базе в локальной сети. Есть ли варианты реализации этого? С глубоким уважением! Заранее спасибо!
  13. РЕШЕНО! Точнее сейчас другой контроллер и на нём OPC UA. Уже реализовано. Рассматривал в соседних темах. Извините!
  14. Доброго времени суток! Вот реализовал доступ к OPC UA к серверу для сбора параметров из устройства IA240. Теперь возникло желание(задание) что бы это же устройство получало доступ к MySQL серверу с целью их сохранения. Вот перебрал много чего из исходников, но имеющийся кросс-компилятор не умеет того что умеет обычный на Debian. Если не сложно ткните носом на подходящие исходники для сборки libmysqlclient(mysql-client). Заранее благодарен.
  15. Прошу прощения... но сейчас использую NFS и очень доволен. Так что вышеупомянутое теперь без надобности. На устройстве монтируется удалённый каталог NFS. А если надо от устройства что-то сохранять на SMB, то curl (на самом устройстве) всяко способствует.
  16. Это архив для установки: https://yadi.sk/d/RHMbcg450rT4nQ Установка вручную. Следует отметить что у меня всё что можно монтировано на SD карту. Особо кропотливо было монтирование /etc и тем не менее: www-data@Moxa:~$ mount rootfs on / type rootfs (rw) /dev/root on / type jffs2 (ro,noatime) proc on /proc type proc (rw,nodiratime) /dev/ram3 on /dev type ext2 (rw) /dev/ram0 on /var type ext2 (rw) /dev/mtdblock3 on /tmp type jffs2 (rw,noatime) /dev/mtdblock3 on /home type jffs2 (rw,noatime) /dev/mtdblock3 on /etc type jffs2 (rw,noatime) tmpfs on /dev/shm type tmpfs (rw) devpts on /dev/pts type devpts (rw) /dev/mmc1 on /var/sd type ext2 (rw) /dev/mmc1 on /etc type ext2 (rw) tmpfs on /var/ramdisk type tmpfs (rw) /dev/mmc1 on /root type ext2 (rw) /dev/mmc1 on /bin type ext2 (rw) /dev/mmc1 on /lib type ext2 (rw) /dev/mmc1 on /sbin type ext2 (rw) /dev/mmc1 on /usr type ext2 (rw) /dev/mmc1 on /home type ext2 (rw) tmpfs on /home/httpd/ramdisk type tmpfs (rw) www-data@Moxa:~$ в архиве есть мой /etc/rc.d/rc.local - чисто как пример, потому как на SD надо сначала сделать зеркальные директории (/bin, /lib. /usr и др.) Для установки надо скопировать файлы в одноимённые директории. privoxy на UC-7112-LX-Plus работает вполне проворно (сейчас я в интернете через privoxy на UC-7112-LX-Plus). Присутствует и родной вэб-интерфейс. Настройку можно проводить и с его помощью. Но более оптимальная настройка с помощью редактирования /etc/privoxy/config И сто самое интересное что сам privoxy не надо перезапускать после изменения настроек. Так же и список прокси изменяется без его перезапуска(ведь privoxy выполняет проход по цепочке внешних прокси). Так же и ряд тестов - к примеру он показывает и заголовки запросов... да и документация и примеры так же через вэб-интерфейс. Самое интересное что он отлично работает и на таких устройствах. Тут и фильтры картинок, рекламы, всплывающих страниц и прочего.
  17. Доброго времени суток! Вот это: opc_ua_work.zip мой рабочий вариант доступа к данным OPC UA серверу. Как пример запуска: www-data@Moxa:~/ramdisk$ ./myopcclient Доступ к данным контроллера SIMATIC.S7-1500.OPC-UAServer (без авторизации) вид: myopcclient opc.tcp://<IP>:<PORT>/None/None где: <IP> - IP адрес OPC UA сервера <PORT> - порт прослушивания OPC UA сервера Но это для вывода данных в консоль. Данных из списка. Конечно не одним запросом, а несколькими. Сервер почему-то ограничивает количество параметров в одном запросе. Так что по 6 параметров в одном запросе. так что весь пакет параметров теперь получаю на IA240 за 4 секунды. Вот список: #define _melt_mp1_com_sta_opmode "3:\"\"MELT_mp1\".\"com\".\"sta\".\"OpMode\"\"" #define _melt_mp2_com_sta_opmode "3:\"\"MELT_mp2\".\"com\".\"sta\".\"OpMode\"\"" #define _melt_mp1_melt_ope_temperature "3:\"\"MELT_mp1\".\"melt\".\"ope\".\"Temperature\"\"" #define _melt_mp2_melt_ope_temperature "3:\"\"MELT_mp2\".\"melt\".\"ope\".\"Temperature\"\"" #define _melt_mp1_sin_ope_temperature "3:\"\"MELT_mp1\".\"sin\".\"ope\".\"Temperature\"\"" #define _melt_mp2_sin_ope_temperature "3:\"\"MELT_mp2\".\"sin\".\"ope\".\"Temperature\"\"" #define _melt_mp1_melt_ope_weight "3:\"\"MELT_mp1\".\"melt\".\"ope\".\"Weight\"\"" #define _melt_mp2_melt_ope_weight "3:\"\"MELT_mp2\".\"melt\".\"ope\".\"Weight\"\"" #define _melt_mp1_melt_ope_manpower "3:\"\"MELT_mp1\".\"melt\".\"ope\".\"ManPower\"\"" #define _melt_mp2_melt_ope_manpower "3:\"\"MELT_mp2\".\"melt\".\"ope\".\"ManPower\"\"" #define _inv_inv1_sta_power "3:\"\"INV_inv1\".\"sta\".\"Power\"\"" #define _inv_inv2_sta_power "3:\"\"INV_inv2\".\"sta\".\"Power\"\"" #define _inv_inv1_sta_current "3:\"\"INV_inv1\".\"sta\".\"Current\"\"" #define _inv_inv2_sta_current "3:\"\"INV_inv2\".\"sta\".\"Current\"\"" #define _inv_inv1_sta_voltage "3:\"\"INV_inv1\".\"sta\".\"Voltage\"\"" #define _inv_inv2_sta_voltage "3:\"\"INV_inv2\".\"sta\".\"Voltage\"\"" #define _inv_inv1_sta_freq "3:\"\"INV_inv1\".\"sta\".\"Frequency\"\"" #define _inv_inv2_sta_freq "3:\"\"INV_inv2\".\"sta\".\"Frequency\"\"" #define _fur1_tilted "3:\"\"MELT_fur1\".\"ope\".\"Tilted\"\"" #define _fur2_tilted "3:\"\"MELT_fur2\".\"ope\".\"Tilted\"\"" #define _inv1_ison "3:\"\"INV_inv1\".\"sta\".\"IsOn\"\"" #define _inv2_ison "3:\"\"INV_inv2\".\"sta\".\"IsOn\"\"" #define _i_hvswitch1ison "3:\"\"I_HVSwitch1IsOn\"\"" #define _o_hvswitch1Lock "3:\"\"O_HVSwitch1Lock\"\"" #define _o_hwswitch1on "3:\"\"O_HVSwitch1On\"\"" #define _o_lmhvswitch1on "3:\"\"O_LMHVSwitch1On\"\"" #define _act_date "3:\"\"MELT_mpc\".\"com\".\"ActDate\"\"" #define _act_time "3:\"\"MELT_mpc\".\"com\".\"ActTime\"\"" Это определения для формирования. Понятное дело у Вас будет свой список и своё количество. Приложенный код работает с самодельным сервером связи... это если в строке параметров указать ещё и IP и PORT этого сервера. Но рассматривать весь проект тут не буду. Вот код из скрипта запуска (BASH) #!/bin/bash case $par in ... myopcclient_one) # тут буде только вывод в консоль killall -9 myopcclient echo "Starting myopclient..." ./myopcclient opc.tcp://$ip_opc:$p_opc/None/None & ;; myopcclient) # тут данные сразу в сервер связи killall -9 myopcclient echo "Starting myopclient..." ./myopcclient opc.tcp://$ip_opc:$p_opc/None/None $ip_mserver $p_mserver & ;; ... esac Вообще-то по исходникам всё видно.
  18. Доброго времени суток! Спасибо, что уделили внимание! Научился читать данные по необходимому списку имён за один запрос к OPC UA серверу. Вопрос снят! Спасибо! Позднее будет предъявлен вполне рабочий код.
  19. Доброго времени суток! Вопрос: Есть ли возможность используя обращение к OPC UA серверу сразу в один запрос читать несколько параметров, а не по одному (вышеуказанный пример). Уж больно большой интервал в получении данных по списку по одному. Спасибо!
  20. Доброго времени суток! Найден альтернативный параметр без пробела ( в данном случае лампа индикации ).
  21. Доброго времени суток! Проблема: посылаю запрос: 3:""MSG_AlarmToPanel"."BitList"."External Voltage On"" А по Wirechark (снифер) проходит: 3:""MSG_AlarmToPanel"."BitList"."External найден участок кода(предположительно) XML_N* XML_N::setAttr( const string &name, const string &val ) { // for(unsigned iA = 0; iA < mAttr.size(); iA++) if(mAttr[iA].first == name) { mAttr[iA].second = val; return this; } mAttr.push_back(pair<string,string>(name,val)); return this; } Пропускает всё до первого пробела. А Товарищи ABP-шники сделали имя параметра с пробелами. С Си работаю, но не с C++ и string-ом конкретно. И именно этот параметр важен очень для автоконтроля...а остальные параметры сделали нормально и я их спокойно читаю. Есть ли возможность исправить? Спасибо.
  22. Долго ли, коротко ли... но вот: nc -vvz $_url $_port 2>/dev/null res=$? if [ "$res" = "1" ]; then echo "На $_url не найден порт $_port" exit 1 fi найдено решение. Работает!
  23. Доброго времени суток! Вот: https://yadi.sk/d/WHwi29WSaRfNoQ Это ещё один вариант как проба с вебсокетом. Ещё не производил доработку собственно сервера WS. Добавились только элементы. Так же работает на устройстве UC7112LX-Plus и IA240. Но в отличии от PC не быстро. Все элементы в динамике (кнопки и слайдеры в работе). Да и индикаторы так же. Тут шла проверка на перегрузку индикаторов (они грязно-желтым... вертикальный и горизонтальный), которые от 0 до 100. Слайдеры (красный и зеленый - горизонтальный и вертикальный) индицируют параметр угла (0...360 градусов) ну и индикаторы секторальные 4 штуки - у всех начальный угол разный (0, 90, 180, 270). При клике на любой слайдер в соответствующем месте будет установлен соответствующий угол. При работе идёт инкремент угла... при значении угла = 360 он обнуляется и идет опять инкремент, но установка ручная по клику слайдера. Кнопки орисовывают фигуры, которые позже затираются постоянной перерисовкой области экрана. Всё отображается браузером и клик на элементах управления на нем же. Для запуска применять скрипт start.sh в директории work в которой все файлы. Их поместить на устройство в доступную веб серверу область... и запуск стартом скрипта. Из браузера на ПК зайти на устройство с соблюлением пути к файлу index.html... ну как обычно.
  24. Доброго времени суток! https://yadi.sk/d/bh3lmBTtdxx8Rg Это "bashsimplecurses" взято из гитхаба. Для работы надо утилиты fold и sec, которых нет на устройстве. Почитал что это за утилиты и реализовал их на Си именно для устройства. Всё положил в архив. Из надо взять из него и поместить в /usr/sbin (у меня директория /usr примонтирована на SD карту.) после этого этот пакет будет работать. Следует только учесть что sleep 0.5 не будет работать на устройстве, потому-что реализован usleep. И потребуется ncurses: https://yadi.sk/d/exxyLTUgKewiog Ранее он уже упоминался. Утилиты сделаны самодельные (читал о них и смотрел примеры их работы) и на полное соответствие не претендуют... совпадают только их названия и функционал из примеров. Испытано на bashsimplecurses. Теперь можно писать скрипты с псевдографикой. В примерах видел применение в CGI.
  25. Ранее применял WinXP с виртуальным Debian. Позже Debian. Сейчас Debian(64бита) и потребовалось ставить кучу либов дабы запустить кросс-компилятор. Желает работать исключительно с x86 (32бита). По сему виртуальная машина самое то. Можно конечно сторонний GCC установить. Из сред разработки испытал Code::Blocks и CodeLite работает отлично, но сервер(для отладки) не применял. Компилятор сей подключать к данным средам просто. QtCreator не стал применять как и Eclipse.Для проблемных мест в коде вставляю вывод сообщений в код. Извините если помешал общению.
×
×
  • Create New...