Comments 52
+
Особенно умиляет в таких публикациях «порывшись у себя в столе я обнаружил...»
Чего и вам всем советую.
Постараюсь повторить.
Жаль нужно заказывать — в столе рыться бессмысленно)
Спасибо, коллега, повторю ваш опыт.
Была у меня xiaomi wifi camera, китайская версия. Связь через серваки китая часто была не радовала качеством, видео о сработке были короткими и не всегда удавалось разглядеть посетителя, да и программа их не всегда сообщала о сработке.
В итоге вчера решил разобраться с этим делом. На камере активировал rtsp, на Orange Pi установил motioneye (который использует motion) и имеет приятный интерфейс с различными настройками. Настроил детектор движения, с сохранением видео и фото. Также В этой программе есть возможность отсылать по сработке сообщение на почту либо webhok. Вот через него я и организовал с помощью POST запроса отсылку себе в телеграмм фото сработки и видеоролик движения. Теперь даже если малинку украдут, фото и видео останутся в телеграмме.
lightswitch
Type: Integer
Range / Valid values: 0 — 100
Default: 0 (disabled)
Ignore sudden massive light intensity changes given as a percentage of the picture area that changed intensity. The value defines the picture areas in percent that will trigger the lightswitch condition. When lightswitch is detected motion detection is disabled for 5 picture frames. This is to avoid false detection when light conditions change and when a camera changes sensitivity at low light.
1 У motion есть режим отправки фото и видео по движению чтоб не запускать скрипт с периодичностью.
2 камера умеет захватывать и звук который тоже интересен.
Перед отправкой конвертим ffmpeg'ом видео и звук в понятные телеграмму форматы.
На самом деле отдавать целую малину под такую фигню как то жирно.
Погугли всякие "умные дома" на малине плюсом к motion
Спасибо за статью, сейчас как раз подобное делаю для наблюдения за гаражом. В принципе у меня почти так же вышло, но всё равно интересно. Возьму себе supervisor :)
Из последнего заметил и добавил motioneye. Полезно например для просмотра текущего скриншота (motion позволяет смотреть только текущее видео).
Платформы TL-WR902AC и Raspberry Pi 2 Model B, на которые установил LEDE (OpenWrt). Telegram bot (черновой, но работающий вариант) написал сам на LUA (+ uHTTPd). Кроме картинок с камеры бот умеет выполнять modbus команды и другие фокусы.

on_movie_end /usr/local/bin/message2telegram.sh file "#motion detected on DoorEye at %H:%M:%S %d-%m-%Y" "%f"
Плюсы: до 10Мб телеграмом расцениваются как gif. На видео лучше видно происходящее.
Большое спасибо за интересную статью.
Начал писать по вашей статье. Получается в несколько раз меньше строк. С удовольствием обсудил бы оптимизацию кода.
У меня сразу возник вопрос: как можно ботом отправлять сообщения непосредственно пользователю по его номеру а не в чат? У меня не получилось.
Если Вы увидели какую-то реальную проблему в коде, которая может мешать стабильности или безопасности — я буду очень вам благодарен за эту информацию.
Нет, речь пока идет только про оптимизацию, я глубоко пока не анализировал.
Вот, например:
users = [123567890, 123567891]
def is_known(user): # Функция проверки авторизации
return user in config.users
def sendall(text): # Функция массвой рассылки уведомлений
for user in config.users:
try:
bot.send_message(user, text)
except Exception as exc:
print('%s Ошибка отправки сообщения %s пользователю %d: %s'
% (str(datetime.datetime.now()).split('.')[0], text, user, exc))
Идеологию мое преобразование не меняет, но вод код становится приятней 'на ощупь'.
Но это мое субъективное мнение.
Я тоже сисадмин, но в свое время окончил вуз на программиста-системщика.
Пайтон изучаю самостоятельно, но полюбил его и чувствую, что это взаимно.
т.е. себе я могу отправить сообщение, т.к. бота создал я, а кому то другому не могу. Получаю ошибку:
A request to the Telegram API was unsuccessful. The server returned HTTP 403 Forbidden.
Response body: [b'{«ok»:false,«error_code»:403,«description»:«Forbidden: bot can\'t initiate conversation with a user»}']
Спасибо за заметку.
У меня тут как раз Raspberry PI(правда, постарше, вторая ещё) висит, на которую заведены и видеонаблюдение, и сбор данных с нескольких датчиков температуры/влажности, раскиданных по дому, и скоро должен приехать пучок релюшек Sonoff для управления светом и прочими
Я как раз подумывал ко всему этому прикрутить телеграм-бота, а тут ваша статья.
Правда, касательно самого видеонаблюдения, у меня всё несколько сложнее, потому что частный дом, камера не одна, а уже 4(и будет больше), и все они смотрят на улицу. Через это в моем случае рациональнее оказалось ставить железный видеорегистратор, который сам умеет следить за движением и отправлять сообщения по почте.
Другое дело, что с учетом того, что камеры уличные, лог сработок на шкале времени выглядит примерно вот так:
И это ещё не самый "активный" день.
С одной стороны — все эти сработки неплохо иметь в архиве, чтобы, например, во время отпуска можно было вечером за небольшое время посмотреть "ретроспективу" за день. С другой стороны — если каждую сработку показывать в телеграме, то поток сообщений будет слишком густым и малополезным.
Поэтому я пока ещё работаю над всем этим и думаю, как сделать правильнее. Пока видятся два возможных пути — либо прикручивать второй слой анализа картинок(например, ZoneMinder), либо ставить дополнительные датчики движения, и заводит их на "тревожные" входы регистратора.
В общем, копать — не перекопать 8)
На правах баг-репорта:
если не создать last.txt и не записать туда число, то sender.py не будет работать?
webcontrol_port 8080
stream_localhost off
stream_port 8081
то возможно управлять motion сервисом через requests
http ://localhost:8080/1/detection/pause
Запустить moton detection
http ://localhost:8080/1/detection/start
Текущий статус
http ://localhost:8080/1/detection/status
Создать snapshot можно вызывать перед отправкой вместо того, чтобы создавать каждые 30 минут
http ://localhost:8080/1/action/snapshot
Поясните пожалуйста, зачем это делать?
Гораздо удобнее управлять через Телеграм.
Ну и еще поворчу, а то автору счастья не будет — похоже, не пробовал никто повторить — одни критики.
Итак, в строчке:
command=/usr/bin/python3 /home/bigbro/botbot.py
слеша не хватает, догадайтесь, где
Motion запускать надо при загрузке, с sudo, сам по себе он в загрузку при инсталляции не пропишется. Да и инициализацию видеокамеры тоже бы неплохо, чтобы появилось /dev/video0, в случае RPI Camera Module
sudo modprobe bcm2835-v4l2
И еще.
sudo apt-get upgrade
надо сделать в самом начале, после установки системы на карту. И не работать под рутом. И добавить настройку вайфай, провода сейчас все же в прошлое уходят.Все остальное работает отлично, не к чему придраться. Спасибо огромное!
Куда хуже в моей связке(rpi3+csi-камера) периодическое зависание службы motion по непонятным причинам (в логе в этот момент фигурирует вотчдог) + часто рэндомно ставящаяся (часто недостаточная, с излишней справиться было проще) яркость, из-за чего может не срабатывать детекция, но тут уже дело скорее в V4L2. Пришлось писать несколько скриптов для определения наличия нормального изображения в кадре и его параметров (спасибо imagemagick) для передёргивания службы при её зависании либо при слишком тёмном/светлом изображении. Ну и motioneye помогает.
Плюс необходимые скрипты для очистки локального каталога с картинками motion и корзины я-диска. Без этого всё ломается через какое-то время.
Нужен только доступ в shell, а так-же curl + json парсер (в идеале, но можно и без него через grep/awk/sed сделать), т.е. будет работать практически на любых железках.
Команды оформлены в виде плагинов для примера, а в самом телеграме сразу кнопочки рисует.
Телеграм-бот для домашнего видео-наблюдения из подручных материалов