<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>18.04 on Блог Агапова Максима</title><link>https://magapov.nmph.ru/tags/18.04/</link><description>Recent content in 18.04 on Блог Агапова Максима</description><generator>Hugo</generator><language>ru</language><lastBuildDate>Sun, 17 May 2020 11:39:12 +0000</lastBuildDate><atom:link href="https://magapov.nmph.ru/tags/18.04/index.xml" rel="self" type="application/rss+xml"/><item><title>Wireguard. Поднимаем свой VPN-сервер за 5 минут</title><link>https://magapov.nmph.ru/2020/05/wireguard-vpn-5.html</link><pubDate>Sat, 16 May 2020 19:00:00 +0000</pubDate><guid>https://magapov.nmph.ru/2020/05/wireguard-vpn-5.html</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on">
&lt;div style="text-align: justify;">
Перехожу на быстрый и лёгкий VPN-сервер Wireguard. Наконец перешёл с аренды OpenVZ сервера на &lt;a href="https://crm.vds6.net/?affid=5">KVM&lt;/a>. Теперь никаких танцев с патчами для ядра и прочей времяубивающей хернёй чтобы &lt;a href="https://d.sb/2019/07/wireguard-on-openvz-lxc">собрать посусекам&lt;/a> Wireguard, или запустить docker. Разница - 50 центов в месяц, итого 2.49$ за 0,5Gb ОЗУ и 10GB NVME SSD на Ubuntu 18.04&lt;/div>
&lt;br />
Сперва проверяем пинг до своей подсети с разных стран, доступных для заказа VPS.&lt;br />
&lt;a href="http://lg-it.vds6.net/">http://lg-it.vds6.net/&lt;/a>&lt;br />
&lt;a href="http://lg-nl.vds6.net/">http://lg-nl.vds6.net/&lt;/a>&lt;br />
&lt;a href="http://lg-pl.vds6.net/">http://lg-pl.vds6.net/&lt;/a>&lt;br />
&lt;br /></description></item><item><title>Pritunl. Установка и настройка в Ubuntu 18.04</title><link>https://magapov.nmph.ru/2020/04/pritunl-ubuntu-1804.html</link><pubDate>Fri, 03 Apr 2020 13:06:00 +0000</pubDate><guid>https://magapov.nmph.ru/2020/04/pritunl-ubuntu-1804.html</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on">
&lt;div style="text-align: justify;">
Популярность удаленного доступа нынче выросла из-за сами-знаете-чего, поэтому вот вам шпаргалка по установке удобного VPN-сервера Pritunl на базе Ubuntu 18.04. Третий год уже использую VPS-сервер от &lt;a href="https://crm.vds6.net/?affid=5">vds6.net&lt;/a>, рекомендую.&lt;/div>
&lt;div class="separator" style="clear: both; text-align: center;">
&lt;a href="https://magapov.nmph.ru/img/main-2.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;">&lt;img border="0" data-original-height="50" data-original-width="1162" height="27" src="https://magapov.nmph.ru/img/main-2.JPG" width="640" />&lt;/a>&lt;/div>
Готовимся&lt;br />
&lt;pre>&lt;code class="bash hljs">apt update &amp;amp;&amp;amp; apt upgrade -y &amp;amp;&amp;amp; apt dist-upgrade -y&lt;/code>&lt;/pre>
Ставим необходимые пакеты для работы на сервере на будущее&lt;br />
&lt;pre>&lt;code class="bash hljs">apt install mc nano git curl gnupg -y&lt;/code>&lt;/pre>
И сразу корректно настроим время и часовой пояс&lt;br />
&lt;pre>&lt;code class="bash hljs">dpkg-reconfigure tzdata&lt;/code>&lt;/pre>
Выбираем Europe&amp;gt;Moscow&lt;br />
&lt;br />
Устанавливаем Pritunl-сервер&lt;br />
&lt;pre>&lt;code class="bash hljs">sudo tee /etc/apt/sources.list.d/mongodb-org-4.2.list &amp;lt;&amp;lt; EOF
deb https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.2 multiverse
EOF

sudo tee /etc/apt/sources.list.d/pritunl.list &amp;lt;&amp;lt; EOF
deb http://repo.pritunl.com/stable/apt bionic main
EOF

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com --recv E162F504A20CDF15827F718D4B7C549A058F8B6B
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com --recv 7568D9BB55FF9E5287D586017AE645C0CF8E292A
sudo apt-get update
sudo apt-get --assume-yes install pritunl mongodb-org&lt;/code>&lt;/pre>
Перезапускаем VPS-сервер и подключаемся к веб-морде по адресу https://ip-address&lt;br />
&lt;br />
Возвращаемся в консоль и вводим команду&lt;br />
&lt;pre>&lt;code class="bash hljs">pritunl setup-key&lt;/code>&lt;/pre>
Вставляем сгенерированный ключ в поле Enter Setup Key, жмем Save.&lt;br />
&lt;div class="separator" style="clear: both; text-align: center;">
&lt;a href="https://magapov.nmph.ru/img/setup.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;">&lt;img border="0" data-original-height="373" data-original-width="391" height="305" src="https://magapov.nmph.ru/img/setup.JPG" width="320" />&lt;/a>&lt;/div>
После создания базы, для первого входа pritunl попросит ввести логин пароль, который можно сгенерировать командой&lt;br />
&lt;pre>&lt;code class="bash hljs">sudo pritunl default-password
[undefined][2020-04-03 04:42:00,215][INFO] Getting default administrator password
Administrator default password:
&amp;nbsp; username: "pritunl"
&amp;nbsp; password: "q9С2AqPoD1El"&lt;/code>&lt;/pre>
&lt;div>
Всё. Дальше все настройки делаем через веб-морду&lt;br />
&lt;br />
Не забываем &lt;a href="https://firstvds.ru/technology/dobavit-ssh-klyuch">настроить авторизацию&lt;/a> на сервер через ssh-ключи&lt;/div>
&lt;/div></description></item><item><title>SSOCR. Оцифровка показаний приборов</title><link>https://magapov.nmph.ru/2019/11/ssocr.html</link><pubDate>Mon, 18 Nov 2019 07:37:00 +0000</pubDate><guid>https://magapov.nmph.ru/2019/11/ssocr.html</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on">
&lt;div style="text-align: justify;">
Навеяно &lt;a href="https://magapov.nmph.ru/2018/11/domoticz_8.html" target="_blank">темой&lt;/a> про мониторинг напряжения. А что делать, если нет таких ИБП? Покупать три штуки на каждую фазу? Бред конечно. Хотя бы для зрительного контроля, установлен РН-106, или ВР-М03-1?&amp;nbsp;&lt;/div>
&lt;div style="text-align: justify;">
&lt;br />&lt;/div>
&lt;div style="text-align: justify;">
Ещё с тех времен, когда техкомната не была даже зашита гипсокартоном, уже висела малинка с вебкамерой. чтобы смотреть что там происходит. А почему бы не снимать показания РН в реальном времени, и оцифровывать их в Domoticz?! Если исхитриться, то можно захватить в кадр и текущую температуру теплоносителя, которую показывает котел!&lt;/div>
&lt;div style="text-align: justify;">
&lt;br />&lt;/div>
&lt;div style="text-align: justify;">
Что надо? Собственно вебкамера, направленная на щит, по возможности сфокусированная на реле с показаниями. ffmpeg, для записи снимков в формате jpg и программа ssocr для распознавания изображений.&lt;/div>
&lt;div style="text-align: justify;">
Снимки делаю при помощи ffmpeg, на максимальном разрешении, возможном для камеры Microsoft HD3000.&lt;br />
&lt;pre>&lt;code class="bash hljs">ffmpeg -f video4linux2 -input_format mjpeg -video_size 1280x720 -i /dev/video0 -vframes 1 -f mjpeg /tmp/snapshot.jpeg&lt;/code>&lt;/pre>
Далее, с ssocr пришлось &lt;a href="https://www.unix-ag.uni-kl.de/~auerswal/ssocr/" target="_blank">вникать&lt;/a>.&lt;/div>
&lt;div style="text-align: justify;">
Главное - это надёжно зафиксировать камеру, чтобы изображение было максимально статично. Иначе будет сбоить ssocr&amp;nbsp; и выкидывать фокусы.&lt;/div>
&lt;pre>&lt;code class="bash hljs">sudo apt-get update
sudo apt-get install libx11-dev
sudo apt-get install libimlib2-dev
git clone https://github.com/auerswal/ssocr.git
cd ssocr
make&lt;/code>&lt;/pre>
Скопируем исполняемый файл &lt;br />
&lt;pre>&lt;code class="bash hljs">sudo cp ./ssocr /usr/local/bin/ssocr&lt;/code>&lt;/pre>
&lt;div style="text-align: justify;">
!!! Буду разбирать весь процесс, чтобы было яснее) И ещё будут только скриншоты, чтобы ничего не копипастили в консоль. а сами набирали)&lt;/div>
&lt;div style="text-align: justify;">
Приступаем. Исходное изображение.&lt;/div>
&lt;div class="separator" style="clear: both; text-align: center;">
&lt;a href="https://magapov.nmph.ru/img/IMG_20191114_095044.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;">&lt;img border="0" data-original-height="1200" data-original-width="1600" height="480" src="https://magapov.nmph.ru/img/IMG_20191114_095044.jpg" width="640" />&lt;/a>&lt;/div>
Как видите, крупноватый кадр для теста)&lt;br />
&lt;div class="separator" style="clear: both; text-align: center;">
&lt;a href="https://magapov.nmph.ru/img/D0-A1-D0-BD-D0-B8-D0-BC-D0-BE-D0-BA-D1-8D-D0-BA-D1-80-D0-B0-D0-BD-D0-B0-D0-BE-D1-82-2019-11-16-14-37-10.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;">&lt;img border="0" data-original-height="218" data-original-width="1373" height="100" src="https://magapov.nmph.ru/img/D0-A1-D0-BD-D0-B8-D0-BC-D0-BE-D0-BA-D1-8D-D0-BA-D1-80-D0-B0-D0-BD-D0-B0-D0-BE-D1-82-2019-11-16-14-37-10.png" width="640" />&lt;/a>&lt;/div>
Ок, тут понятно, вроде ругается, что нашёл только одну цифру. Укажем параметр -d -1 чтобы показал все цифры (-d, --number-digits=# number of digits in image (-1 for auto))&lt;br />
&lt;div class="separator" style="clear: both; text-align: center;">
&lt;a href="https://magapov.nmph.ru/img/D0-A1-D0-BD-D0-B8-D0-BC-D0-BE-D0-BA-D1-8D-D0-BA-D1-80-D0-B0-D0-BD-D0-B0-D0-BE-D1-82-2019-11-16-15-39-10.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;">&lt;img border="0" data-original-height="218" data-original-width="1373" height="100" src="https://magapov.nmph.ru/img/D0-A1-D0-BD-D0-B8-D0-BC-D0-BE-D0-BA-D1-8D-D0-BA-D1-80-D0-B0-D0-BD-D0-B0-D0-BE-D1-82-2019-11-16-15-39-10.png" width="640" />&lt;/a>&lt;/div>
Хмм, 8. Что значит 8? Добавим наконец вывод отладочной информации -D, в виде файла testbild.png (да, имя выходного файла можно не указывать, testbild.png оно по-умолчанию)&lt;br />
&lt;div class="separator" style="clear: both; text-align: center;">
&lt;a href="https://magapov.nmph.ru/img/D0-A1-D0-BD-D0-B8-D0-BC-D0-BE-D0-BA-D1-8D-D0-BA-D1-80-D0-B0-D0-BD-D0-B0-D0-BE-D1-82-2019-11-16-15-46-51.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;">&lt;img border="0" data-original-height="182" data-original-width="1373" height="84" src="https://magapov.nmph.ru/img/D0-A1-D0-BD-D0-B8-D0-BC-D0-BE-D0-BA-D1-8D-D0-BA-D1-80-D0-B0-D0-BD-D0-B0-D0-BE-D1-82-2019-11-16-15-46-51.png" width="640" />&lt;/a>&lt;/div>
Опять "8". Посмотрим наконец testbild.png&lt;br />
&lt;div class="separator" style="clear: both; text-align: center;">
&lt;a href="https://magapov.nmph.ru/img/D0-A1-D0-BD-D0-B8-D0-BC-D0-BE-D0-BA-D1-8D-D0-BA-D1-80-D0-B0-D0-BD-D0-B0-D0-BE-D1-82-2019-11-16-15-47-40.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;">&lt;img border="0" data-original-height="727" data-original-width="905" height="513" src="https://magapov.nmph.ru/img/D0-A1-D0-BD-D0-B8-D0-BC-D0-BE-D0-BA-D1-8D-D0-BA-D1-80-D0-B0-D0-BD-D0-B0-D0-BE-D1-82-2019-11-16-15-47-40.png" width="640" />&lt;/a>&lt;/div>
&lt;div style="text-align: justify;">
Ага, уже повеселее. Что значат эти цветные линии?&lt;/div>
&lt;div style="text-align: justify;">
&lt;i>"In this image the left border of a digit is represented by a red column, the right border as a blue column. Horizontal green lines of digit width show connected vertical digit parts."&lt;/i>&lt;/div>
&lt;div style="text-align: justify;">
Понятно, значит всё это изображение, ssocr расценил как одну цифру, 8. Попробуем сузить область для поиска цифр при помощи параметра crop. Нам потребуются координаты начала обрезания и ширина\высота изображения. Открываем изображение через GIMP, ставим курсор на левый угол дисплея первого РН, записываем (1320*1288).&lt;/div>
&lt;div class="separator" style="clear: both; text-align: center;">
&lt;a href="https://magapov.nmph.ru/img/D0-A1-D0-BD-D0-B8-D0-BC-D0-BE-D0-BA-D1-8D-D0-BA-D1-80-D0-B0-D0-BD-D0-B0-D0-BE-D1-82-2019-11-16-15-52-22.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;">&lt;img border="0" data-original-height="903" data-original-width="1077" height="536" src="https://magapov.nmph.ru/img/D0-A1-D0-BD-D0-B8-D0-BC-D0-BE-D0-BA-D1-8D-D0-BA-D1-80-D0-B0-D0-BD-D0-B0-D0-BE-D1-82-2019-11-16-15-52-22.png" width="640" />&lt;/a>&lt;/div>
&lt;div style="text-align: justify;">
Ставим курсор на правый нижний угол третьего РН и записываем координаты (2330*1420). Теперь вычитаем от них координаты первого измерения и получаем ширину\высоту вырезанного изображения (1010*132). Duuuhhh!&lt;/div>
&lt;div class="separator" style="clear: both; text-align: center;">
&lt;a href="https://magapov.nmph.ru/img/D0-A1-D0-BD-D0-B8-D0-BC-D0-BE-D0-BA-D1-8D-D0-BA-D1-80-D0-B0-D0-BD-D0-B0-D0-BE-D1-82-2019-11-16-16-00-20.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;">&lt;img border="0" data-original-height="218" data-original-width="1373" height="100" src="https://magapov.nmph.ru/img/D0-A1-D0-BD-D0-B8-D0-BC-D0-BE-D0-BA-D1-8D-D0-BA-D1-80-D0-B0-D0-BD-D0-B0-D0-BE-D1-82-2019-11-16-16-00-20.png" width="640" />&lt;/a>&lt;/div>
Ого! Понеслась! Сколько цифр!&lt;br />
&lt;div class="separator" style="clear: both; text-align: center;">
&lt;a href="https://magapov.nmph.ru/img/D0-A1-D0-BD-D0-B8-D0-BC-D0-BE-D0-BA-D1-8D-D0-BA-D1-80-D0-B0-D0-BD-D0-B0-D0-BE-D1-82-2019-11-16-16-01-31.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;">&lt;img border="0" data-original-height="276" data-original-width="905" height="194" src="https://magapov.nmph.ru/img/D0-A1-D0-BD-D0-B8-D0-BC-D0-BE-D0-BA-D1-8D-D0-BA-D1-80-D0-B0-D0-BD-D0-B0-D0-BE-D1-82-2019-11-16-16-01-31.png" width="640" />&lt;/a>&lt;/div>
&lt;div style="text-align: justify;">
Теперь появилась другая проблема. Вместо 3х цифр на первом дисплее, ssocr видит одну - 8. Дальше он не может разобраться что находится между дисплеями остальных РН. Попробуем поиграть с контрастом -t (--threshold=THRESH use THRESH (in percent) to distinguish black from white). По-умолчанию эта разница установлена в 50%. Попробуем по больше, 90.&lt;/div>
&lt;div class="separator" style="clear: both; text-align: center;">
&lt;a href="https://magapov.nmph.ru/img/D0-A1-D0-BD-D0-B8-D0-BC-D0-BE-D0-BA-D1-8D-D0-BA-D1-80-D0-B0-D0-BD-D0-B0-D0-BE-D1-82-2019-11-16-16-12-42.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;">&lt;img border="0" data-original-height="218" data-original-width="1373" height="100" src="https://magapov.nmph.ru/img/D0-A1-D0-BD-D0-B8-D0-BC-D0-BE-D0-BA-D1-8D-D0-BA-D1-80-D0-B0-D0-BD-D0-B0-D0-BE-D1-82-2019-11-16-16-12-42.png" width="640" />&lt;/a>&lt;/div>
&lt;div class="separator" style="clear: both; text-align: center;">
&lt;/div>
Странно, теперь видит только "-"&lt;br />
&lt;div class="separator" style="clear: both; text-align: center;">
&lt;a href="https://magapov.nmph.ru/img/D0-A1-D0-BD-D0-B8-D0-BC-D0-BE-D0-BA-D1-8D-D0-BA-D1-80-D0-B0-D0-BD-D0-B0-D0-BE-D1-82-2019-11-16-16-13-27.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;">&lt;img border="0" data-original-height="276" data-original-width="905" height="194" src="https://magapov.nmph.ru/img/D0-A1-D0-BD-D0-B8-D0-BC-D0-BE-D0-BA-D1-8D-D0-BA-D1-80-D0-B0-D0-BD-D0-B0-D0-BE-D1-82-2019-11-16-16-13-27.png" width="640" />&lt;/a>&lt;/div>
&lt;div style="text-align: justify;">
Нижнюю полосу видите? Вот тут он застрял. Мне потребовалось попробовать много вариантов со всеми параметрами чтобы сдвинуться с этого места. Оказалось, что по-умолчанию, передний план - черный, задний план белый. Если указать как надо, чтобы цифры ssocr увидел белыми, то всё встает на свои места!&lt;/div>
&lt;div class="separator" style="clear: both; text-align: center;">
&lt;a href="https://magapov.nmph.ru/img/D0-A1-D0-BD-D0-B8-D0-BC-D0-BE-D0-BA-D1-8D-D0-BA-D1-80-D0-B0-D0-BD-D0-B0-D0-BE-D1-82-2019-11-16-16-25-36.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;">&lt;img border="0" data-original-height="218" data-original-width="1373" height="100" src="https://magapov.nmph.ru/img/D0-A1-D0-BD-D0-B8-D0-BC-D0-BE-D0-BA-D1-8D-D0-BA-D1-80-D0-B0-D0-BD-D0-B0-D0-BE-D1-82-2019-11-16-16-25-36.png" width="640" />&lt;/a>&lt;/div>
&lt;div class="separator" style="clear: both; text-align: center;">
&lt;a href="https://magapov.nmph.ru/img/D0-A1-D0-BD-D0-B8-D0-BC-D0-BE-D0-BA-D1-8D-D0-BA-D1-80-D0-B0-D0-BD-D0-B0-D0-BE-D1-82-2019-11-16-16-26-18.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;">&lt;img border="0" data-original-height="276" data-original-width="905" height="194" src="https://magapov.nmph.ru/img/D0-A1-D0-BD-D0-B8-D0-BC-D0-BE-D0-BA-D1-8D-D0-BA-D1-80-D0-B0-D0-BD-D0-B0-D0-BE-D1-82-2019-11-16-16-26-18.png" width="640" />&lt;/a>&lt;/div>
Осталась дерзкая ".", которую можно исключить, указав выводить только цифры (-c, --charset=KEYWORD select recognized characters use -c help for list of KEYWORDS)&lt;br />
&lt;div class="separator" style="clear: both; text-align: center;">
&lt;a href="https://magapov.nmph.ru/img/D0-A1-D0-BD-D0-B8-D0-BC-D0-BE-D0-BA-D1-8D-D0-BA-D1-80-D0-B0-D0-BD-D0-B0-D0-BE-D1-82-2019-11-16-16-27-54.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;">&lt;img border="0" data-original-height="218" data-original-width="1373" height="100" src="https://magapov.nmph.ru/img/D0-A1-D0-BD-D0-B8-D0-BC-D0-BE-D0-BA-D1-8D-D0-BA-D1-80-D0-B0-D0-BD-D0-B0-D0-BE-D1-82-2019-11-16-16-27-54.png" width="640" />&lt;/a>&lt;/div>
&lt;div style="text-align: justify;">
Ан нет, не то)) Теперь "-" превратилась в "_". Попробуем вообще игнорировать изображения, меньше 4 пикселей. Примерно на столько выглядит эта "_"&lt;/div>
&lt;div class="separator" style="clear: both; text-align: center;">
&lt;a href="https://magapov.nmph.ru/img/D0-A1-D0-BD-D0-B8-D0-BC-D0-BE-D0-BA-D1-8D-D0-BA-D1-80-D0-B0-D0-BD-D0-B0-D0-BE-D1-82-2019-11-16-16-40-18.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;">&lt;img border="0" data-original-height="218" data-original-width="1373" height="100" src="https://magapov.nmph.ru/img/D0-A1-D0-BD-D0-B8-D0-BC-D0-BE-D0-BA-D1-8D-D0-BA-D1-80-D0-B0-D0-BD-D0-B0-D0-BE-D1-82-2019-11-16-16-40-18.png" width="640" />&lt;/a>&lt;/div>
Бинго!&lt;br />
&lt;div class="separator" style="clear: both; text-align: center;">
&lt;a href="https://magapov.nmph.ru/img/D0-A1-D0-BD-D0-B8-D0-BC-D0-BE-D0-BA-D1-8D-D0-BA-D1-80-D0-B0-D0-BD-D0-B0-D0-BE-D1-82-2019-11-16-16-41-15.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;">&lt;img border="0" data-original-height="276" data-original-width="905" height="194" src="https://magapov.nmph.ru/img/D0-A1-D0-BD-D0-B8-D0-BC-D0-BE-D0-BA-D1-8D-D0-BA-D1-80-D0-B0-D0-BD-D0-B0-D0-BE-D1-82-2019-11-16-16-41-15.png" width="640" />&lt;/a>&lt;/div>
Теперь можно разбить это девятизначное число при помощи fold&lt;br />
&lt;div class="separator" style="clear: both; text-align: center;">
&lt;a href="https://magapov.nmph.ru/img/D0-A1-D0-BD-D0-B8-D0-BC-D0-BE-D0-BA-D1-8D-D0-BA-D1-80-D0-B0-D0-BD-D0-B0-D0-BE-D1-82-2019-11-16-16-47-38.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;">&lt;img border="0" data-original-height="218" data-original-width="1373" height="100" src="https://magapov.nmph.ru/img/D0-A1-D0-BD-D0-B8-D0-BC-D0-BE-D0-BA-D1-8D-D0-BA-D1-80-D0-B0-D0-BD-D0-B0-D0-BE-D1-82-2019-11-16-16-47-38.png" width="640" />&lt;/a>&lt;/div>
Есть конечно у этого варианта огромный минус, если камера дернется - всё встанет.&lt;br />
&lt;br />
Засунем эти показания в Domoticz. Создадим три датчика с типом Напряжение&lt;br />
&lt;div class="separator" style="clear: both; text-align: center;">
&lt;a href="https://magapov.nmph.ru/img/sensor-voltage.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;">&lt;img border="0" data-original-height="245" data-original-width="428" height="183" src="https://magapov.nmph.ru/img/sensor-voltage.jpg" width="320" />&lt;/a>&lt;/div>
Запишем его IDX, бла-бла-бла (см. как всё подготовить &lt;a href="https://magapov.nmph.ru/2018/11/domoticz_8.html" target="_blank">тут&lt;/a>)&lt;br />
Делаем исполняемым, добавляем в крон и смотрим, как обновляется напряжение.&lt;/div></description></item><item><title>Ubuntu 18.04. NIC team</title><link>https://magapov.nmph.ru/2019/09/ubuntu-1804-nic-team.html</link><pubDate>Mon, 02 Sep 2019 19:01:00 +0000</pubDate><guid>https://magapov.nmph.ru/2019/09/ubuntu-1804-nic-team.html</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on">
&lt;div dir="ltr" style="text-align: left;" trbidi="on">
&lt;div dir="ltr" style="text-align: left;" trbidi="on">
&lt;div style="text-align: justify;">
Выжимаю все соки из своего VAIO FZ31. В ноуте установлена древняя &amp;nbsp;88E8036 PCI-E Fast Ethernet Controller в 100Mbit/s. Прикупил карту расширения &lt;a href="http://ali.pub/3qsfj8" target="_blank">Express34&lt;/a> с двумя USB3.0 портами и вставил внешнюю карту USB3.0 1Gbit &lt;a href="http://ali.pub/3qsfmj" target="_blank">Ugreen&lt;/a>. Подумал, что не плохо было бы объединить эти два физических сетевых интерфейса в один логический, и настроить их таким образом, чтобы в случае отказа основного гигабита, активировался резервный канал в 100 мегабит.&lt;/div>
&lt;div>
&lt;div style="text-align: justify;">
В Ubuntu 18.04 уже нет старого доброго /etc/network/interfaces, теперь все настройки ведутся через &lt;a href="https://ubuntu.com/blog/ubuntu-bionic-netplan" target="_blank">netplan&lt;/a>.&lt;/div>
&lt;/div>
&lt;div>
Смотрим названия сетевых интерфейсов через ipconfig. В моём случае это &lt;b>enp8s0&lt;/b> (встроенная) и &lt;b>ens1u2&lt;/b> (внешняя usb). Редактируем файл&lt;/div>
&lt;div>
&lt;pre>&lt;code class="bash hljs">sudo nano /etc/netplan/01-network.yaml
&lt;div>
&lt;div>
network:&lt;/div>
&lt;div>
&amp;nbsp;version: 2&lt;/div>
&lt;div>
&amp;nbsp;renderer: networkd&lt;/div>
&lt;div>
&amp;nbsp;ethernets:&lt;/div>
&lt;div>
&amp;nbsp; &amp;nbsp;enp8s0:&lt;/div>
&lt;div>
&amp;nbsp; &amp;nbsp; dhcp4: false&lt;/div>
&lt;div>
&amp;nbsp; &amp;nbsp; dhcp6: false&lt;/div>
&lt;div>
&amp;nbsp; &amp;nbsp;ens1u2:&lt;/div>
&lt;div>
&amp;nbsp; &amp;nbsp; dhcp4: false&lt;/div>
&lt;div>
&amp;nbsp; &amp;nbsp; dhcp6: false&lt;/div>
&lt;div>
&amp;nbsp;bonds:&lt;/div>
&lt;div>
&amp;nbsp; bond0:&lt;/div>
&lt;div>
&amp;nbsp; &amp;nbsp; dhcp4: false&lt;/div>
&lt;div>
&amp;nbsp; &amp;nbsp; dhcp6: false&lt;/div>
&lt;div>
&amp;nbsp; &amp;nbsp; interfaces:&lt;/div>
&lt;div>
&amp;nbsp; &amp;nbsp; &amp;nbsp; - enp8s0&lt;/div>
&lt;div>
&amp;nbsp; &amp;nbsp; &amp;nbsp; - ens1u2&lt;/div>
&lt;div>
&amp;nbsp; &amp;nbsp; addresses: [10.0.0.101/24]&lt;/div>
&lt;div>
&amp;nbsp; &amp;nbsp; gateway4: 10.0.0.1&lt;/div>
&lt;div>
&amp;nbsp; &amp;nbsp; parameters:&lt;/div>
&lt;div>
&amp;nbsp; &amp;nbsp; &amp;nbsp; mode: active-backup&lt;/div>
&lt;div>
&amp;nbsp; &amp;nbsp; &amp;nbsp; primary: ens1u2&lt;/div>
&lt;div>
&amp;nbsp; &amp;nbsp; nameservers:&lt;/div>
&lt;div>
&amp;nbsp; &amp;nbsp; &amp;nbsp; addresses: [10.0.0.1,8.8.8.8]&lt;/div>
&lt;/div>
&lt;/code>&lt;/pre>
&lt;div>
&lt;/div>
&lt;div>
Обязательно. ОБЯЗАТЕЛЬНО! проверь пробелы!!! Очень важна разметка в чертовом netplan'e!&lt;/div>
&lt;div>
Всё очень просто. Указываем сетевые настройки каждого интерфейса&lt;/div>
&lt;pre>&lt;code class="bash hljs">ethernets:
&lt;div>
&amp;nbsp; &amp;nbsp;enp8s0:
&amp;nbsp; &amp;nbsp; dhcp4: false
&amp;nbsp; &amp;nbsp; dhcp6: false
&amp;nbsp; &amp;nbsp;ens1u2:
&amp;nbsp; &amp;nbsp; dhcp4: false
&amp;nbsp; &amp;nbsp; dhcp6: false&lt;/div>
&lt;/code>&lt;/pre>
&lt;/div>
&lt;div>
В моём случае отключил автоматическое назначение IP-адреса для обоих интерфейсов по DHCP.&lt;/div>
&lt;div>
Создаем новый bond-интерфейс. Отлючаем также автоматическое назначение IP-адреса&lt;/div>
&lt;pre>&lt;code class="bash hljs">&amp;nbsp;bonds:
&amp;nbsp; bond0:
&amp;nbsp; &amp;nbsp; dhcp4: false
&amp;nbsp; &amp;nbsp; dhcp6: false&lt;/code>&lt;/pre>
Перечисляем все физические интерфейсы&lt;/div>
&lt;pre>&lt;code class="bash hljs">interfaces:
&amp;nbsp; &amp;nbsp; &amp;nbsp; - enp8s0
&amp;nbsp; &amp;nbsp; &amp;nbsp; - ens1u2&lt;/code>&lt;/pre>
Назначаем сетевые настройки&lt;br />
&lt;pre>&lt;code class="bash hljs">&amp;nbsp; &amp;nbsp; addresses: [10.0.0.101/24]
&amp;nbsp; &amp;nbsp; gateway4: 10.0.0.1&lt;/code>&lt;/pre>
Указываем режим работы bond-адаптера, а также основной интерфейс для режима active-backup. Подробнее о работе каждого режима &lt;a href="http://blog.elmor.ru/linux-i-ego-bratya/obedinenie-setevyx-interfejsov-v-ubuntu-pri-pomoshhi-bonding/" target="_blank">тут&lt;/a>.&lt;br />
&lt;pre>&lt;code class="bash hljs">&amp;nbsp; &amp;nbsp; parameters:
&amp;nbsp; &amp;nbsp; &amp;nbsp; mode: active-backup
&amp;nbsp; &amp;nbsp; &amp;nbsp; primary: ens1u2&lt;/code>&lt;/pre>
&lt;div>
Завершаем указанием DNS-серверов&lt;/div>
&lt;pre>&lt;code class="bash hljs">&amp;nbsp; &amp;nbsp; nameservers:
&amp;nbsp; &amp;nbsp; &amp;nbsp; addresses: [10.0.0.1,8.8.8.8]&lt;/code>&lt;/pre>
Сохраняем, закрываем файл. Применяем настройки&amp;nbsp;&lt;/div>
&lt;div>
&lt;pre>&lt;code class="bash hljs">sudo netplan apply&lt;/code>&lt;/pre>
Проверяем интерфейсы ifconfig&lt;/div>
&lt;pre>&lt;code class="bash hljs">bond0: flags=5187&lt;up>&amp;nbsp; mtu 1500&lt;/up>
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; inet 10.0.0.101&amp;nbsp; netmask 255.255.255.0&amp;nbsp; broadcast 10.0.0.255
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; inet6 fe80::d082:35ff:fe27:e9b4&amp;nbsp; prefixlen 64&amp;nbsp; scopeid 0x20&lt;link>&lt;/link>
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ether d2:82:35:27:e9:b4&amp;nbsp; txqueuelen 1000&amp;nbsp; (Ethernet) 
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; RX packets 4271&amp;nbsp; bytes 363649 (363.6 KB)
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; RX errors 0&amp;nbsp; dropped 0&amp;nbsp; overruns 0&amp;nbsp; frame 0
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; TX packets 505&amp;nbsp; bytes 82870 (82.8 KB)
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; TX errors 0&amp;nbsp; dropped 0 overruns 0&amp;nbsp; carrier 0&amp;nbsp; collisions 0
&amp;nbsp;enp8s0: flags=6211&lt;up>&amp;nbsp; mtu 1500&lt;/up>
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ether d2:82:35:27:e9:b4&amp;nbsp; txqueuelen 1000&amp;nbsp; (Ethernet)
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; RX packets 1867&amp;nbsp; bytes 115515 (115.5 KB)
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; RX errors 0&amp;nbsp; dropped 0&amp;nbsp; overruns 0&amp;nbsp; frame 0
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; TX packets 0&amp;nbsp; bytes 0 (0.0 B)
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; TX errors 0&amp;nbsp; dropped 0 overruns 0&amp;nbsp; carrier 0&amp;nbsp; collisions 0
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; device interrupt 16
&amp;nbsp;ens1u2: flags=6211&lt;up>&amp;nbsp; mtu 1500&lt;/up>
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ether d2:82:35:27:e9:b4&amp;nbsp; txqueuelen 1000&amp;nbsp; (Ethernet)
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; RX packets 2404&amp;nbsp; bytes 248134 (248.1 KB)
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; RX errors 0&amp;nbsp; dropped 0&amp;nbsp; overruns 0&amp;nbsp; frame 0
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; TX packets 505&amp;nbsp; bytes 82870 (82.8 KB)
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; TX errors 0&amp;nbsp; dropped 0 overruns 0&amp;nbsp; carrier 0&amp;nbsp; collisions 0&lt;/code>&lt;/pre>
Теперь можно провести полевые испытания. Отправим большой файл с VAIO на рабочую станцию, или запустим видео-файл на телевизоре, и выдернем патчкорд с гигабитной карты.&lt;/div></description></item><item><title>Domoticz. Новая версия 4.10659</title><link>https://magapov.nmph.ru/2019/05/domoticz-410659.html</link><pubDate>Thu, 09 May 2019 05:55:00 +0000</pubDate><guid>https://magapov.nmph.ru/2019/05/domoticz-410659.html</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on">Губит меня страсть к обновлениям. 2 года кажется без проблем просидел на версии 4.9700 и тут, &lt;strike>в пятницу после обеда&lt;/strike> нажал кнопку обновить в Domoticz.&lt;br />
В сухом остатке, при запуске ошибка&lt;br />
&lt;pre>&lt;code class="bash hljs">service domoticz.sh start 
/home/john/domoticz/domoticz: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.27' not found (required by /home/john/domoticz/domoticz)&lt;/code>&lt;/pre>Смотрим какая версия стоит&lt;br />
&lt;pre>&lt;code class="bash hljs">apt-cache policy libc6
libc6:
&amp;nbsp; Установлен: 2.19-0ubuntu6.15
&amp;nbsp; Кандидат:&amp;nbsp; &amp;nbsp;2.19-0ubuntu6.15
&amp;nbsp; Таблица версий:
&amp;nbsp;*** 2.19-0ubuntu6.15 0
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 500 http://us.archive.ubuntu.com/ubuntu/ trusty-updates/main amd64 Packages
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 500 http://security.ubuntu.com/ubuntu/ trusty-security/main amd64 Packages
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 100 /var/lib/dpkg/status
&amp;nbsp; &amp;nbsp; &amp;nbsp;2.19-0ubuntu6 0
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 500 http://us.archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages&lt;/code>&lt;/pre>Чтобы обновить версию до требуемой 2.27 - надо обновить дистрибутив до 18.04. Привет systemd&lt;br />
&lt;br />
UPDATE 9.05.2019!&lt;br />
Через 4 дня вышло новое обновление 4.10717. Domoticz запускается без ошибок&lt;br />
&lt;pre>&lt;code class="bash hljs">curl -sSL install.domoticz.com | sudo bash&lt;/code>&lt;/pre></description></item><item><title>Domoticz. Установка в Ubuntu 18.04</title><link>https://magapov.nmph.ru/2018/09/domoticz-ubuntu-1804.html</link><pubDate>Sat, 22 Sep 2018 06:54:00 +0000</pubDate><guid>https://magapov.nmph.ru/2018/09/domoticz-ubuntu-1804.html</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on">
Вообще, domoticz ставится в ubuntu очень просто...&lt;br />
&lt;br />
Ставим зависимости&lt;br />
&lt;pre>&lt;code class="bash hljs">sudo apt install build-essential cmake libboost-dev libboost-thread-dev libboost-system-dev libsqlite3-dev
sudo apt install libcurl4-openssl-dev libssl-dev libusb-dev zlib1g-dev python3-dev git curl&lt;/code>&lt;/pre>
&lt;br />
И запускаем скрипт установки&lt;br />
&lt;pre>&lt;code class="bash hljs">sudo curl -L install.domoticz.com | bash&lt;/code>&lt;/pre>
&lt;br />
..но не в Ubuntu 18.04. Тут установка обрывается на проверке зависимостей libcurl3&lt;br />
&lt;br />
&lt;div class="separator" style="clear: both; text-align: center;">
&lt;a href="https://magapov.nmph.ru/img/domoticz-install-curl.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;">&lt;img border="0" data-original-height="649" data-original-width="1315" height="314" src="https://magapov.nmph.ru/img/domoticz-install-curl.jpg" width="640" />&lt;/a>&lt;/div>
&lt;br />
На форумах об этом упоминается. Что при установке на&amp;nbsp;&lt;a href="https://www.domoticz.com/forum/viewtopic.php?t=23357" target="_blank">чистую&lt;/a>&amp;nbsp;18.04, что при обновлении с&amp;nbsp;&lt;a href="https://github.com/domoticz/domoticz/issues/2373" target="_blank">других версий&lt;/a>.&lt;br />
&lt;br />
Поэтому придется собирать&amp;nbsp;&lt;a href="https://www.domoticz.com/wiki/Raspberry_Pi_-_Build_Domoticz_from_source#Raspberry_Pi_-_Build_Domoticz_from_source" target="_blank">вручную&lt;/a>&lt;br />
&lt;br />
Ставим необходимые пакеты для сборки&lt;br />
&lt;pre>&lt;code class="bash hljs">sudo apt-get install cmake make gcc g++ libssl-dev git libcurl4-gnutls-dev libusb-dev python3-dev zlib1g-dev&amp;nbsp;libcurl4-openssl-dev&lt;/code>&lt;/pre>
Устанавливаем библиотеки boost (занимает значительное время)&lt;br />
&lt;pre>&lt;code class="bash hljs">mkdir boost
cd boost
wget https://dl.bintray.com/boostorg/release/1.68.0/source/boost_1_68_0.tar.gz
tar xfz boost_1_68_0.tar.gz
cd boost_1_68_0/
./bootstrap.sh
./b2 stage threading=multi link=static --with-thread --with-system
sudo ./b2 install threading=multi link=static --with-thread --with-system
cd ../../
rm -Rf boost/&lt;/code>&lt;/pre>
&lt;br />
Качаем исходники в папку dev-domoticz&lt;br />
&lt;pre>&lt;code class="bash hljs">git clone https://github.com/domoticz/domoticz.git dev-domoticz&lt;/code>&lt;/pre>
И запускаем сборку&lt;br />
&lt;pre>&lt;code class="bash hljs">cd dev-domoticz
git pull
cmake -DCMAKE_BUILD_TYPE=Release CMakeLists.txt
make -j 3&lt;/code>&lt;/pre>
(для успешной сборки, требуется минимум 2Гб ОЗУ, и 20 минут ожидания для Core 2 Duo 2.4Ghz)&lt;br />
&lt;br />
Осталось настроить демон для &lt;a href="https://www.domoticz.com/wiki/Linux#Option_2:_Systemd_Alternative_.28Preferred.29" target="_blank">автозапуска&lt;/a>&lt;br />
&lt;pre>&lt;code class="bash hljs">nano /etc/systemd/system/domoticz.service
[Unit]
Description=domoticz_service
[Service]
User=john
Group=john
ExecStart=/home/john/dev-domoticz/domoticz -www 8080 -sslwww 443
WorkingDirectory=/home/john/dev-domoticz
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;#
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# The below works on ubuntu 16 LTS.
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;CapabilityBoundingSet=CAP_NET_BIND_SERVICE
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Restart=on-failure
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;RestartSec=1m
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;#StandardOutput=null
[Install]
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;WantedBy=multi-user.target&lt;/code>&lt;/pre>
Перезагружаем systemd для поиска новых или измененных демонов и активируем демон domoticz.service&lt;br />
&lt;pre>&lt;code class="bash hljs">sudo systemctl daemon-reload
sudo systemctl enable domoticz.service&lt;/code>&lt;/pre>
Запускаем&lt;br />
&lt;pre>&lt;code class="bash hljs">systemctl start domoticz.service&lt;/code>&lt;/pre>
&lt;br />
Через веб-морду зашел в настройки, поменял системный язык и локацию, но настройки не применялись. Оказалось были проблемы с записью в SQL базу Domoticz&lt;br />
&lt;div class="separator" style="clear: both; text-align: center;">
&lt;a href="https://magapov.nmph.ru/img/domoticz-ownership-1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;">&lt;img border="0" data-original-height="372" data-original-width="1600" height="148" src="https://magapov.nmph.ru/img/domoticz-ownership-1.jpg" width="640" />&lt;/a>&lt;/div>
&lt;br />
Поставил&amp;nbsp;владельцем файла /home/john/dev-domoticz/domoticz.db учетную запись пользователя john. После перезагрузки все заработало.&lt;br />
&lt;br />
Теперь можно &lt;a href="https://magapov.nmph.ru/2019/11/domoticz-ip.html" target="_blank">настроить&lt;/a> доступ к серверу Domoticz из внешнего мира.&lt;br />
&lt;br />
Всё взлетело?! Может пора управлять &lt;a href="https://magapov.nmph.ru/2020/02/domoticz-google-assistant.html">Domoticz голосом&lt;/a>? Легко!&lt;/div></description></item></channel></rss>