8 заметок с тегом

подключение

Добавляем камеру в Domoticz

Небольшая правка

Была куча нюансов в работе камер с системой «умного дома». Например, не отображались скриншоты и «живое» видео при нажатии на соответствующие пункты. Сегодня удалось это победить. Как я уже ранее писал, камеры у меня китайские, от Xiong Mai. Ну вот так получилось...
Чуть отступлю от темы. На днях разобрал обе камеры и припаял к ним выходы для внешних микрофонов. Нашелся штекер чуть больше размером, но, после доработки напильником, он четко встал на положенное место (обе камеры были с нужными разъемами, но не выведенными наружу). В итоге вывел три контакта: питание, землю и контакт микрофона. Остальные пока что остались в камере, при желании их можно за короткое время тоже начать использовать. Например, для подключения аудиоколонок. Микрофоны оказались ОЧЕНЬ чувствительными, спокойно ловят звук открывающейся двери на первом этаже. Или звук отъезжающего с другой стороны дома автомобиля. Один «минус» — звук как из бочки, глухой. Я бы подумал, что это просто неисправный микрофон, но он такой не один. Очень надеюсь побороть этот дефект.
Но вернемся к нашим баранам. Поиск в интернете навёл меня на одну страницу, с которой я перепробовал несколько ссылок. Одна из них оказалась вполне себе рабочей, но недокументированной. Выглядела она таким образом:

http://192.168.1.15/webcapture.jpg?command=snap&channel=1?

Используя эту ссылку (IP камеры, конечно, нужно изменить на нужный), можно получить текущий скриншот с камеры.
Вторая часть, которая дала мне понимание почему Domoticz так плохо работает с камерами, нашлась на официальном форуме. Суть состоит в том, что «домик» не берет поток с камер как таковой, а использует систему ежесекундных скриншотов. Именно поэтому для так важен адрес их получения. Да, изображение получается дерганым, но с этим, похоже, ничего не сделать. По крайней мере, пока что.
Еще один «минус», который всплыл после этой перенастройки — мобильная версия Domoticz плевать хотела на них и просто не отображает видеопоток. Также, если настроить отправку скриншотов при обнаружении движения, они отправляются только на электронную почту. В тот же Telegram отправки нет. Почему?

«Умный» дом

Добавляем камеру в Domoticz

Во-первых, почему Domoticz? Мне он показался намного более простым по сравнению с Majordomo и другими системами. Во-вторых, этот пакет присутствует в репозитории на роутере (с установленным OpenWrt). С одной стороны ставить такую программу я предпочел бы на сервер, с другой — именно роутер является точкой, соединяющей все сетевые устройства в квартире. Поэтому пусть пока будет так.
Так как камера у меня — «чистый» китаец, то просто так добавить ее в систему не получится. По крайней мере, мне это не удалось. Пришлось идти обходным путем.
Строка подключения к камере выглядит примерно так:

rtsp://192.168.1.12:554/user=admin&password=&channel=1&stream=0.sdp?real_stream

Открыв этот адрес, например, через плеер VLC, можно увидеть основной поток камеры. В принципе, строку можно чуть-чуть сократить, убрав всё после sdp. В любом случае, Domoticz такое не понимает. Поэтому нам понадобится пакет под названием motion. У меня он уже установлен и отправляет мне в Telegram фото событий. Камера у меня пока что одна, но в будущем планируется еще несколько, поэтому все настройки, отличающиеся от настроек по умолчанию, я вынес в отдельный файл, который подключил в motion.conf. Там нам понадобятся несколько параметров, перечисленных ниже.

netcam_url rtsp://192.168.1.12:554/user=admin&password=&channel=1&stream=1.sdp?real_stream
netcam_keepalive on
width 704
height 576
stream_port 8091
on_event_start /root/motion/actions/on_event_start
on_event_end /root/motion/actions/on_event_end

Первая строка — подключение к самой камере на вторичный поток. Вторая — поддержка подключения, можно пропустить. Третья и четвертая — размеры кадра вторичного потока, у меня они такие. Можно выбрать, конечно, и основной, но это повлечет за собой увеличение трафика в сети и времени подключения. Самая «интересная» строка — следующая. Она указывает motion через какой порт выводить картинку. И последние две строки — пути к скриптам, которые будут выполняться при возникновении и завершении события. У скриптов должны быть установлены права на выполнение.
Запускаем motion и первым делом проверяем наличие потока, просто открыв ссылку в браузере. Например, motion у нас будет установлен на компьютер с адресом 192.168.1.10. Тогда в браузере набираем:

http://192.168.1.10:8091/

Вы должны увидеть видеопоток с камеры. Если его нет — придется разбираться что не так. Чаще всего просто не открыт указанный порт на компьютере. Если картинка есть — идем дальше.
Открываем Domoticz и пробуем добавить камеру.

Нужное меню в Domoticz Добавляем камеру в Domoticz
Добавляем камеру в Domoticz

Протокол оставляем HTTP, в качестве IP-адреса указываем адрес компьютера, куда установили motion. Порт указываем тот же самый, что и в файле настроек motion. Имя пользователя и пароль заполняем в том случае, если для просмотра камеры нужна авторизация. Ну и в ImageURL забиваем полный путь к потоку, тот же самый, который вбивали в браузере при проверке потока камеры. Нажимаем «Тест соединения» и надеемся, что картинка появится. Обычно на это нужно до 10 секунд. Если картинки нет, значит что-то пошло не так и придется всё проверять. В моем случае картинка нормально появляется когда я работаю в домашней сети. Если я запускаю Domoticz с рабочего компьютера, то она не показывается.
Нажимаем кнопку «Add», чтобы добавить камеру в список. И тут тоже есть нюанс. В строке с камерой тоже есть предварительный просмотр, но в моем случае он не работает. Также не работают кнопки «Сделать снимок» и «Stream video». Но это не важно, камера работает.
Не зря же мы это все делали? Пусть теперь камера работает датчиком движения — нечего ей просто так висеть на потолке. Например, включает освещение в коридоре, когда обнаружит движение.
В качестве выключателя с удаленным доступом у меня стоит простой Sonoff Basic, подключенный к моей сети через WiFi. Идем в настройки Domoticz, выбираем «Оборудование». В выпадающем списке ищем пункт «Dummy (Does nothing, use for virtual switches only)», называем его как-нибудь и нажимаем кнопку добавить. Теперь в списке чуть выше нажимаем кнопку «Создать виртуальные датчики», вводим название выключателя (придумываем сами) и указываем тип «Переключатель». Жмем «ОК». Всё, мы создали виртуальное устройство, которое будет управлять освещением в коридоре. Остается теперь соединить между собой камеру и выключатель.
Вспоминаем, что у нас есть два скрипта от motion, которые выполняются при возникновении и завершении события, в данном случае — в коридоре. Добавляем в каждый из скриптов по одной строке. В  /root/motion/actions/on_event_start добавляем

/usr/bin/curl -s "http://api_username:api_password@domoticz_server:domoticz_port/json.htm?
type=command&param=switchlight&idx=your_ID&switchcmd=On"

а в  /root/motion/actions/on_event_end такую строку:

/usr/bin/curl -s "http://api_username:api_password@domoticz_server:domoticz_port/json.htm?
type=command&param=switchlight&idx=your_ID&switchcmd=Off"

Теперь разберем, что это за бред.
curl — программа, позволяющая выполнить те или иные действия по указанному адресу, используя только командную строку.
api_username и api_password — имя пользователя и пароль, которые вы установили для доступа к Domoticz. Если не устанавливали, то эту часть «api_username:api_password@» можно не вводить.
domoticz_server и domoticz_port — IP-адрес и порт компьютера, где у вас установлен Domoticz. В качестве порта нужно указать стандартный 8080, если, конечно, вы не делали перенаправления портов.
idx=your_ID — в качестве your_ID нужно указать значение выключателя из колонки Idx таблицы устройств. У меня это значение равно «1».

Таблица устройств
Таблица устройств

Ну и последний параметр switchcmd может принимать значения On или Off, в зависимости от того, хотите ли вы включить освещение или выключить соответственно. Подозреваю, что можно также указать «1» и «0» соответственно, но, если честно, лень проверять :-)
Должен также отметить, что в Sonoff установлена не стандартная прошивка с привязкой к китайскому облаку (и возможностью потерять доступ к своему выключателю из-за рвения Роскомнадзора заблокировать всех и вся), а Tasmota. Возможностей у нее немного, но лично мне хватит с избытком. Не будет же выключатель вещать радио, когда мне скучно? :-)
Теперь почему мы используем такой сложный способ включения/выключения? Просто при таком способе состояние выключателя будет корректно отображаться в Domoticz в случае возникновения или завершения движения в коридоре.

DLNA в локальной сети

Меня не покидала мысль, что телевизор поддерживает DLNA, несмотря на то, что на официальном сайте это не указано. Зато было указано на нескольких других. Попытка не пытка...
Есть у меня переделанный роутер D-Link DIR-825 с установленной OpenWrt. Внутрь встроен жесткий диск, на котором располагается собственно система и множество других программ. В частности, клиент Transmission. Это очень удобно — с любого устройства можно поставить торрент на закачку. Плюс к этому он все равно работает круглые сутки, пусть скачивает :-)
Прочитав днем про настройку DLNA на OpenWrt, подключился к роутеру и  установил пакет luci-i18n-minidlna-en, который потянул за собой собственно сервер DLNA и другие необходимые пакеты. Настройка была минимальной: задал каталоги где искать видео- и аудиофайлы, куда писать логи и каталог с кэшем. Ну и, конечно, запустил его. Поначалу нагрузка на роутер сильно возросла: сервер «сожрал» почти 60% процессорного времени и почти половину оперативной памяти. Из всех других пакетов, которые я ставил, ни один столько не забирал себе. Понадеявшись на то, что это только на время поиска файлов, отключился, чтобы вечером заняться этим вопросом уже дома.
Мои надежды оправдались — после завершения поиска нагрузка стала почти нулевой. Но меня уже больше интересовало как телевизор отреагирует (и отреагирует ли вообще?) на наличие DLNA сервера в локальной сети. Но сомнения оказались напрасны — все оказалось намного проще. Телевизор не только обнаружил сервер в сети, но и сразу отобразил его в списках доступных источников. Немного напрягло только то, что приходится «продираться» через кучу каталогов, чтобы найти нужное видео, но тут уже ничего не поделаешь, видимо.
В конечном результате я достиг того, чего хотел — теперь нет необходимости копировать скачанный торрент на флэшку, подключать её к телевизору и только тогда начинать смотреть фильм. Сейчас можно просто открыть роутер на телевизоре, выбрать нужный фильм и начать просмотр. С учетом того, что я не поленился подключить ТВ кабелем к роутеру, «лагов» пока что не наблюдается, скорость приличная. Но тут еще буду экспериментировать.
Днем ранее, кстати, также удалось вывести содержимое экрана смартфона на телевизор, включив на первом режим беспроводного дисплея. Смартфон тут же просканировал и нашел телевизор. Оставалось только подтвердить сопряжение устройств на самом ТВ.

Проблема подключения Xabber к Openfire

Ради интереса установил Xabber на телефон. Это «чистый» jabber-клиент, ничего лишнего. Раз уж у меня аська и агент mail.ru подключены через мой сервер, то почему бы мне не снести ранее установленный IM+ с кучей аккаунтов (больше расход трафика, больше сжирает батареи) и не попробовать вышеупомянутый клиент. Сравнить заодно сколько заряда на него будет уходить и сколько трафика. За последний не особо беспокоюсь — тарифные 5 Гб я еще ни разу полностью не использовал. Почему не сменю тариф на более дешевый с меньшим объемом трафика? Да просто потому, что редко, очень редко, но мне может понадобиться скачать, например, большой файл где-то в ебенях у клиента.
Итак, Xabber установлен, данные учетной записи на сервере введены, но подключаться он не хочет — выдает ошибку по таймауту. Перебор некоторых очевидных для меня вариантов результата не принес, поэтому пришлось идти в гугл и спросить «у ясеня». «Ясень» мне выдал один любопытный результат. Для того, чтобы использовать связку Openfire+Xabber необходимо в настройках безопасности выбрать «Old SSL» и в качестве порта указать 5223. После этих настроек Xabber вполне корректно подключается и работает.
После этого сразу выявился один нюанс: несмотря на то, что у меня два подключенных транспорта на сервере (mrim и icq), в списке контактов в группе «Transports» показывается всего один активный. Но в списке контактов присутствуют также клиенты, подключенные через агента mail.ru. Будем считать это маленьким багом и не будем обращать на это внимание.
Если честно, то я бы еще добавил сюда транспорт для whatsapp и telegram, больше никакие «общалки» я не использую, успешно отбиваясь от предложений установить viber и прочие. Отказался бы и от двух вышеперечисленных, но в одной приходится общаться с игроками своей фракции, а в whatsapp порой пишут клиенты. Неужели никому не надоедает этот «зоопарк» мессенджеров? В свое время, несколькими годами ранее, я по той же причине удалил аккаунты из «одноклассников», «вконтакте» и прочих соцсетях, оставив только одну «лазейку» — facebook. Что, надо сказать, совершенно случайно совпало с выходом в эфир небезывестного фильма.

 3 комментария   2017   jabber   openfire   ssl   xabber   подключение   проблема   сервер

Добавляем mail.ru в Openfire

«Переклинило» меня на очередном эксперименте — подключаться к icq и mail.ru через транспорты своего jabber-сервера. Разницы для меня никакой, в то же время нужно заводить только одну учетную запись в клиенте. Плюс к этому вся история переписки будет храниться опять же на моем сервере.
Все оказалось и просто и сложно одновременно. Сложность заключалась в том, чтобы найти компонент для использования транспорта. Ссылка на компонент в популярной статье о подключении транспорта оказалась не рабочей, но нашлась на другом ресурсе. Благо, что человек выложил архив с нужными файлами на своем сайте. Настройка заняла буквально несколько минут.
Для начала распаковал архив в домашний каталог. Изменил конфигурацию под свой сервер:

[main]
name = xmpp.kini24.ru
password = пароль_для_регистрации_компонента_на_сервере
# -- optional --
admins = admin@kini24.ru
# -- defaults --
server = 127.0.0.1
disconame = Mail.ru IM
port = 5275
reconnect = on
probe = on
show_version = on
show_os = on
psyco = off
# -- http proxy for avatars (default is none) --
# http_proxy = http://localhost:3128
# -- PID file (default is none) --
# pidfile = /var/run/mrim.pid

[profile]
type = xml
dir = /var/spool/mrim

[logger]
logfile = /var/log/openfire/mrim.log
loglevel = info
# --- logger defaults ---
# timestamp = %%d/%%m/%%y-%%H:%%M:%%S
# xml_formatting = off

Затем открыл веб-интерфейс Openfire и в разделе Настройки сервера — Внешние устройства — Разрешено подключаться (да, вот такой дурацкий перевод) добавил поддомен и пароль для подключения компонента. Без этого при попытке запуска компонента я получал только кучу сообщений типа

31/10/17-10:30:21 Connecting to XMPP server
31/10/17-10:30:22 Connection to server lost

Затем запустил транспорт:

/usr/bin/python mrim.py -c mrim.conf

Вернулся в Openfire, открыл Сеансы — Компонент сеансов, где и увидел что транспорт подключился к серверу. Затем прошел регистрацию в своем клиенте Miranda NG и попробовал написать своему другу. Полученный от него ответ оказал, что все работает нормально. Перед этим пришлось, правда, ответить на кучу запросов авторизации.
Осталось только добавить запуск транспорта в автозагрузку и настройка полностью завершена.

Решение проблемы с подключением принтера

Итак, дано: два ноутбука, подключенный к одной сети WiFi. Первый — старенький Asus, которому, по идее, давно пора на покой, с установленной Windows XP. На втором ноутбуке установлена Windows 10. К последнему подключен принтер, дан общий доступ. Задача стандартная: сделать общую папку и подключить на первый ноутбук принтер второго.
Первая проблема, с которой пришлось столкнуться — XP не видит второй ноутбук. Адреса заданы в одной подсети, рабочая группа одна, нужные настройки в 10 сделаны (сетевое обнаружение и прочее). Так как времени на тот момент было немного, то приходилось все делать урывками. На втором заходе понял, что виновником такого поведения является установленный Kaspersky Internet Security. При отключении сетевого экрана в нем, ноутбук появляется в сети и можно использовать общие папки на нем. Почитал инструкцию, форумы — все говорят, что необходимо и достаточно установить для этой сети уровень «Локальная» или «Доверенная». Ничерта это не сработало. Почитал про похожие проблемы — техподдержка Касперского просит связываться с ними в таких случаях. Ага, есть у меня время, как же. Пока что просто отключил сетевой экран, оставив другие настройки без изменений.
Затем столкнулся с другой проблемой. В ходе настройки сети завел на обоих компьютерах пользователя с одинаковым именем и паролем. Дал ему доступ на печать, несмотря на то, что там была группа «Все». При попытке подключиться к расшаренному принтеру все время получал запрос на ввод логина и пароля. Даже если ввести заведомо верные, доступ к принтеру получить невозможно. Пробовал разных пользователей — результат один. Снова полез в интернет. На форуме «мелкомягких» наткнулся на решение проблемы, а также на объяснение почему так происходит. Дело в том, что Windows XP использует samba версии 1, которой в Windows 10 уже нет по соображениям безопасности. Минимальная версия самбы, которую можно в ней использовать — 2. Казалось бы все, приплыли...
Решение проблемы заключалось в следующем. На компьютере с Windows XP нужно выполнить следующие действия.

  1. Открываем панель управления и заходим в принтеры.
  2. Выбираем «Установить принтер».
  3. В качестве порта подключения выбираем «Создать новый порт» и в выпадающем списке выбираем пункт «Local Port».
  4. Когда система запросит имя нового порта, вводим полный сетевой путь к принтеру. Например, такой: \\Server\HP LaserJet MFP M132 Pro.
  5. Далее выбираем нужный драйвер и завершаем установку принтера.

После проделанных манипуляций принтер сдался и выплюнул тестовую страницу. Иными словами, решение проблемы состоит в том, чтобы заставить Windows XP думать, что принтер подключен к компьютеру, на который она установлена.

Подключение датчиков

Вчера купил пару bme280. Утром пришел на работу с большим желанием подключить его и посмотреть на показания. Достал из рюкзака пенал с паяльными принадлежностями... А он внутри залит спиртово-канифольным флюсом. Запах сильный, конечно. Пришлось потратить кучу времени на отмывание всего, что было в пенале. Как оказалось, лопнула крышка у банки с флюсом.
Дождавшись когда все просохнет, воткнул в макетку все датчики, которые у меня есть: am2302, am2320, DS18b20 и bme280. Затем отправился на сайт за прошивкой с поддержкой bme280. Эта функция оказалась платной, поэтому пришлось также заплатить за лицензию. Цена небольшая — всего 110 рублей, но есть привязка к устройству. Иными словами, вы не можете использовать одну лицензию для разных ESP8266. Ну да ладно, я пока не собираюсь массово их закупать.
Настроил все необходимые параметры в модуле и вернулся на главную страницу, где отображаются показания все датчиков. Показания меня несколько удивили. Так bme280 показывал температуру примерно на 1 градус выше, чем все остальные датчики. Влажность отличалась у всех трех: am2302, am2320 и bme280. И только температура через некоторое время стала примерно равной у всех. Так как давление у меня умеет измерять только один, пришлось сравнивать показания с ближайшими датчиками на сайте narodmon.
Итог:

am2320 am2302 bme280 ds18b20
Температура 27,6 27,5 28,6 27,6
Влажность 45,0% 43,2% 36,7%
Давление 743,30 mmHg

UPD. Уже ближе к вечеру наткнулся на датчик освещенности и углекислого газа. Последний, после коротких раздумий, решил не брать, а вот первый взял, не выдержал. Заодно приобрел пару коробочек для будущей метеостанции.
Остается решить только один теоретический вопрос. Для измерения некоторых вещей, таких как давление, влажность, освещенность, требуется создать в боксе отверстия. Но отверстия нужно создать так, чтобы в них не попадала вода, чтобы они не перекрывались льдом при наступлении зимы. Думаю, что нужно попробовать связаться с теми пользователями narodmon, которые уже сделали что-то подобное и выяснить у них этот вопрос.

Глюк Firefox и Thunderbird

Уже не в первый раз сталкиваюсь со странным поведение браузера от Mozilla. Сайт имеет ключи HPKP и указан HSTS, хэши для нового сертификата сгенерированы заново и указаны в файле конфигурации. То есть, по логике, все должно работать. Но увы... При этом все остальные браузеры нормально открывают сайт.
Точно также ведет себя и Thunderbird — просто отказывается подключаться к dovecot по тому же адресу, чтобы принять почту. В логах для обоих высвечивается одна и та же ошибка. Поиск в интернете выдает, что ошибка очень частая, но решений, кроме использования самоподписанных сертификатов, по видимому, нет. А мне лично этого не хотелось бы делать — зачем тогда в системе установлен робот, который следит за актуальностью сертификатов и, при необходимости, обновляет их.
В прошлый раз я обошелся тем, что использовал для этого конкретного сайта созданный ранее сертификат, но его срок действия заканчивается через несколько дней и использовать его дальше бессмысленно. В этот раз даже пока что в голову не приходит что делать. Надо пошевелить мозгами.