myphoto

Копытов Иван

Заметки любителя экспериментов

Задолбал Gmail

Как и у большинства людей, на чьих телефонах установлен Android, на моем стоит почтовый клиент Gmail. Хороший почтовик, особенно когда появилась возможность добавлять любые серверы. Но с некоторых пор он меня начал люто бесить.
Итак, что имеем. В программе заведены две учетные записи: google и моего личного сервера. Обе работают через IMAP. И если с учеткой google все более-менее в порядке, то с моей... полный швах. Причем раньше такого не было.
Допустим, пришло мне 20 писем. Я подключаюсь к домашней сети по WiFi. Телефон радостно мне сигнализирует звуком и вибрацией о том, что есть новая почта. Хорошо, все норм, вроде бы. Ага, разбежались! 20 писем пришло — получите один звуковой сигнал, светоиндикацию и 20 раз вибрацией. В принципе, это можно было бы пережить, если бы не второй нюанс. Если «смахнуть» уведомление о пришедшей почте, то через некоторое время, в случае поступления нового письма, оно прилетит обратно. Угадайте, сколько раз будет вибрировать телефон? Один? О, вы наивны! Двадцать один!
Другая ситуация. Уведомление не «смахиваем». Итак, 20 писем пришло, просматриваю их на компьютере (или на телефоне, роли особой не играет), по прочтении удаляю ненужные. Как и в большинстве программ, если просматривать письмо в течение заданного времени, то оно отмечается прочтенным. Несколько прочтенных, несколько удаленных. Закончили просматривать почту, взяли в руки телефон, «смахнули» уведомление о новой почте. Так-так... Было же 20 новых писем? Стало 0? Сколько раз будет сигналить телефон? Как обычно, один звуковой сигнал, светоиндикация и 20 раз вибрировать. И не дай вам бог, в процессе всего этого действа снова «смахнуть» уведомление. Получите еще один звуковой сигнал! Телефон-то помнит, что у вас было 20 новых писем! А что их стало меньше — не его проблема, будет сигнализировать о каждом, по его мнению, непрочтенном.
И вот такое поведение сильно раздражает. Не знаешь, то ли тебе кто-то что-то написал, то ли пришло уведомление от какой-то охранной системы, то ли просто gmail бесится.

«Умный» дом

Добавляем камеру в 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 в случае возникновения или завершения движения в коридоре.

Зеркало NOD

Немного прошелся по своему зеркалу, «причесал», подправил недочеты. Сделал страницу регистрации, ибо негоже когда человеку приходится писать тебе, чтобы получить доступ к нему. Сейчас можно просто открыть страницу регистрации, ввести свой email, который будет являться логином и после нажатия кнопки «Отправить» скрипт сохранит данные на сервере и отправит их копию пользователю на указанную электронную почту.
Поначалу хотел использовать команду системы для генерации хэша пароля, но оказалось, что последний генерируется неправильно. На счастье в интернете нашелся PHP-код, который выполняет те же самые действия, но уже правильно.
Потом хотел сделать чтобы все страницы сайта располагались в одном файле, но что-то пошло не так и я отказался от этой затеи. Не настолько я знаю PHP и JS, чтобы отлавливать и исправлять ошибки в коде.
В конце страницы появилась небольшая статистика: сколько всего зарегистрировано пользователей, сколько в этом месяце использовало зеркало и сколько человек сейчас находится на сайте. Любопытно, что зарегистрировалось около 50 человек, а используют примерно 30. Где остальные? Судя по журналам, они даже не пытались скачивать обновления. По этому поводу мелькает мысль примерно раз в полгода удалять тех, кто ни разу не обновлялся с зеркала. Или уже оставить как есть?

Эксперименты с видеонаблюдением

Небольшое отступление.
Посмотрел дату последней заметки — оказалось, что ничего не писал уже около полугода. Работа со «странным» заказом, затем предновогодняя суета, потом другие дела. Порой хотелось поделиться событиями из жизни, но то забудешь, то времени нет, то желания. А потом вроде как и поздновато уже.
Если вкратце, то события последнего времени такие. Работу в «Балансе» закончили, москвичи полностью расплатились с нашим куратором еще в декабре, но полного расчета от последнего мы так и не получили. «Минус» ему в карму. Договоров в письменном виде никаких не было, поэтому увы и ах. Подождем еще немного.
Три дня подряд корпоративов — это тяжело. Очень тяжело. Из них вынес для себя, что водку и самогон лучше не пить, только вино. Или это старость ко мне так подкрадывается?

Ну и хватит, ближе к делу.
Ну не могу я несколько дней ничего не делать и сидеть дома. Руки начинают «чесаться». В итоге, вспомнив, что у меня домашний видеорегистратор является гибридным, прикупил IP-камеру попробовать. Брал без особых наворотов типа PTZ, распознавания лиц и т. д. Обычную Full HD камеру с инфракрасной подсветкой. Заодно перевесил ее со стены в центр потолка в тамбуре. Особых различий в картинке между предыдущей аналоговой и новой IP я не заметил. Хотя нет, обманываю, одно различие все же было — в цветах. У аналоговой камеры тамбур был намного более синим из-за того, что в этот цвет покрашены стены в нем. «Цифра» более точно передает цвета. Плюс к этому всякие «примочки» в виде автобаланса цветов, антиблика и т. п.
Кстати, в таблице переключения режимов работы регистратора указано, что он поддерживает 4 аналоговых канала или 8 цифровых в формате Full HD. Или 2 аналоговых и 2 цифровых, но в 720p. После недолгих размышлений пришел к выводу, что не хочу совмещать аналоговые и IP-камеры. Пусть лучше будут только последние.
Потратив примерно месяц на «любование» новой камерой, снова заскучал. Пришлось купить себе пару Sonoff Basic для экспериментов — это реле управления нагрузкой с возможностью доступа к нему через WiFi. Поставил программу для управления на телефон, запустил и... Ненавижу управлять устройством через чье-то облако. В данном случае, конечно же, китайское. Недавно только читал пару статей о том, как два человека не могли получить доступ к технике: один к водонагревателю, другой к пылесосу. И все потому, что РКН (не к ночи будет помянут) заблокировал серверы Amazon, где располагались эти облака. Открыл 4pda, почитал, посмотрел на скриншоты и залил стороннюю прошивку Tasmota. Мне лично ее возможностей пока хватает.
Итак, проблема с облаком решена, теперь устройства ни к чему не привязаны, кроме моего роутера. Отлично! Зарезервировал для них IP-адреса, немного поигрался и стал думать куда их поставить.
Тут нужно упомянуть, что чуть раньше прикупил себе в «Леруа» датчик движения с реле. Вот вроде такого:

Датчик движения с реле

Но он меня немного разочаровал — достаточно медленно, на мой взгляд, реагирует на движение, несмотря на выкрученную на максимум чувствительность. Хотелось все же чего-то побыстрей. Вроде такого: ты только начинаешь открывать дверь из подъезда/квартиры, а датчик уловил движение и включил освещение в тамбуре.
И вот на этой почве у меня родилась идея по замене установленного датчика движения на этот самый Sonoff. А в качестве первого будет выступать новая IP-камера — у нее-то чувствительность можно регулировать. Если быть совсем точным, то не в ней, а в программе motion, которая рассылает мне оповещения и шлет кадр с камеры с фото человека, движущегося в тамбуре. Но тут произошел небольшой казус с motion. Оказалось, что для программы выключение света — тоже движение. А значит его нужно записать. И включить свет — ведь есть «движение»! Мать его!!! Бесит!
Пока что нашел только один выход из этой ситуации, «костыль» — свет выключается через 58 секунд после обнаружения движения, за 2 секунды до окончания события. За это время человек гарантированно пройдет тамбур. Надо будет, кстати, попробовать находиться в нем более 1 минуты и посмотреть выключиться свет или нет. Попробую еще покопаться в настройках камеры и видеорегистратора — возможно, что найду что-то полезное для данного случая.
В целях решения этой проблемы в голову пришла мысль прикупить еще PIR-сенсор и прикрепить его к Sonoff. Правда получится почти такой же датчик, как и тот, который я брал в «Леруа», но размеры явно будут поменьше. Дома еще уже много лет валяется «объемник», тоже с PIR-сенсором, но как его связать с реле — пока непонятно.
В общем, пока что с выключением света думаю, рассматриваю разные варианты. Как все получится — отпишусь что получилось и к чему я пришел. И хочется, наконец-то, сделать распознавание лиц.

Не дождетесь!

Браузер и флэшка

Кража в профилактории

«Сибиряк» продолжает «жечь».
Неделю назад кто-то оторвал рекламу на двери то ли прачечной, то ли массажного салона — не помню уже что там находится. Оторвали в период с вечера пятницы до утра понедельника. Это первый момент, который меня «порадовал» — просматривать почти 2 суток как-то не хотелось, даже на ускоренном воспроизведении. Прикинув хрен к носу, пришел к выводу, что делали это, скорее всего, ночью — днем кто-нибудь но заметил бы. Просмотрел утренние и вечерние часы, нашел моменты когда заведение открывалось и закрывалось, посмотрел на состояние рекламы. Она расположена по отношению к камере так, что ее состояние видно только когда дверь открыта. Итак, с периодом определились, остается просмотреть его.
Около 3 часов ночи по записи был обнаружен какой-то неадекватный мужчина с шатающейся походкой, который около получаса пытался открыть эту дверь. Пытался уговорить (только кого?), чтобы ему открыли. Рекламу он, кстати, оторвал почти сразу. Такими движениями, как будто он отрывает лист железа. То ли пьяный совсем был, то ли под какими-то веществами. Лица особо видно не было, но, судя по некоторым сведениям, он является постоянным клиентом и поэтому, думаю, найти его труда не составит.
Второй случай произошел почти неделю спустя, в ночь с воскресенья на понедельник. Так как в профилактории идет ремонт, то некоторые кровати (железные) вынесли на улицу. Как я понял, собирались их выкидывать. Более 10 штук. К утру осталась только одна. Когда начальник охраны мне это рассказывал по телефону, у меня было состояние «рука-лицо», разбирало просто заржать в голос. Пообещал, что посмотрю записи утром, отключился.
Утро преподнесло сюрприз: записей не было. Причем на всех камерах. Судя по журналу, сбилось время на регистраторе, и в 4 утра по записи вовсю светило солнце. Найти нужные записи представляется крайне сложным, поэтому плюнули на них. Но кому-то предстоит разбираться с тем, что происходит с регистратором.

Перенос Windows на новое железо

Жене надоело, что компьютер постоянно выключается, попросила меня или починить его или перенести все данные на ноутбук, который я по лету сдавал в ремонт, но так и не добрался его проверить. Поработав с компьютером, пришел к заключению, что виной внезапных отключений является блок питания. Посмотрел характеристики ноутбука — оказалось, что он намного мощней компьютера, поэтому предпочел перенести систему на него. Но железо этих двух компьютеров сильно различалось, поэтому обойтись «малой» кровью не удалось. К счастью в интернете на сайте «мелкомягких» попалась статья, где подробно разъяснялось как это сделать при помощи программы Sysprep. Попробовал — все прошло успешно. Ровно до того момента, пока я не вставил жесткий диск в ноутбук. Система просто отказалась загружаться. Точнее будет сказать, что она загружалась, но на одном из этапов подготовки к работе сообщала, что у нее не получается его выполнить и, мол, давай перезагрузимся. И так по кругу.
Дальнейший поиск в интернете показал, что одной из причин такого поведения может быть антивирус. И верно, я его не удалял перед подготовкой системы к переносу. И корректно удалить его уже не получится. Хм, если не получается «по хорошему», будем пробовать «по плохому». Удалил папки с файлами антивируса, внес изменения в реестр, перезагрузил ноутбук. На этот раз все этапы были завершены корректно.
Но это были «мелочи», по сравнению со следующими проблемами. Старая проблема с видеокартой осталась: при установке драйверов на Windows 7 x64 система «падала» в BSOD. При этом, работая в Linux на этом ноутбуке, проблем не возникало.
На следующий день, уже на работе, решил попробовать другую ОС. Поставил «десятку», несмотря на мое крайне плохое к ней отношение. После того, как она скачала и установила драйверы для видеокарты, Windows снова «словила» BSOD. Перезагрузила ноутбук и попробовала исправить проблему. Так как я уже потерял надежду, что проблем с ноутбуком не будет, то не стал прерывать процесс. Неожиданно, но после очередной перезагрузки система заработала. Зашел в диспетчер устройств, посмотрел на используемый драйвер для видеокарты — нет, не стандартный, а ATI. Хм, интересно...
В общем, система пока ставит все обновления, потом буду накатывать все нужные программы.

Необычный заказ

В последнее время событий было много, но начну, пожалуй, с этого заказа.
В начале прошлой недели Сашка написал мне, что ему поступил необычный заказ на проектирование и прокладку локальной сети в офисе бизнес-центра «Баланс». Вроде бы простой заказ, но необычным было то откуда он поступил — из Монако. Каким боком соотносятся Монако и Красноярск не совсем понятно. Я ради интереса посмотрел на письмо. На домене, с которого оно было отправлено, располагается сайт, занимающийся продажей яхт. В общем, чем дальше, тем больше стал интриговать этот заказ.
Как бы то ни было, в конце недели приступили к его выполнению. По ходу возникали вопросы, сложности, которые приходилось обсуждать с заказчиком. Слава богу, местным его представителем. Не знаю как они считали, что им хватит одной бухты кабеля (305 метров), по нашим расчетам получилось более 1100 метров. В прошедшую субботу стало окончательно понятно, что придется потратить чуть больше — около 1250 метров.
Кабели все были прожгутованы, вчера, в понедельник, приступили к укладке. Пока жгутовали, пожалели, что нет у нас «расчески» для красивой укладки кабеля в жгут. Подумали и решили, что купим или отпечатаем на 3D-принтере, последний вариант пока что самый дешевый. До конца этой недели должны закончить с прокладкой.

Ранее Ctrl + ↓