Philip Wiki

Персональный wiki-сайт

Инструменты пользователя

Инструменты сайта


docs:blog:2017:08:cantacam_and_telegram_bots

Система наблюдения и Telegram-бот

Про то, что я уже пытался настроить некое подобие удобной системы видео-наблюдения у тебя дома, мне кажется я уже писал. Совсем недавно эта история получила новую жизнь, заодно получив бонусом telegram-бота, который всем этим помогает управлять…

Несмотря на то, что в начале я уже сообщил, что по моим ощущениям это уже не первая статья на эту тему, сразу отвечу на вопрос «зачем»:

  • Изначально «просто так, весело и интересно»
  • Потом для «наблюдать за котом, пока в отпуске»
  • Сейчас, всё чаще, для «посмотреть, что делает ребёнок пока мы в другой комнате/в магазине»

Видеонаблюдение

Итак, что же это за новая жизнь? Для начала напомню, что когда-то у меня подобная система работала на YawCam, потом на motion, а затем снова вернулась на YawCam.

  • YawCam, в принципе, вполне себе удобная, на по «джавовски» неповолотливая утилита. Плюс ко всему не умеет работать с ip-камерами
  • motion насколько стабильна, настолько же и аскетична. В целом настроил и забыл, но… Всегда были какие-то но

Совсем недавно один из коллег мне рассказал про свой опыт создания дачной системы видеонаблюдения, где упомянут про утилиту ContaCam. Забавно, но про данную программу я ранее вообще не слышал, при этом она оказалась настолько хороша, что побудила меня на опыты не только с ней, но и дельнейшее развитие концепции «умного дома». :-)

Чем же так хороша ContaCam:

  • В новых версиях она умеет работать с RTSP-потоком напрямую, т.к. позволяет подключаться к большинству IP-камер без каких-либо «танцев с бубном»
  • Имеет собственный веб-сервер с возможностью сортировки и просмотра записей с камер (моим старым лайфхаком было подключение библиотеки камеры к Plex, откуда их можно было просматривать и даже удалять записи… теперь это доступно «из коробки»)
  • Меня удивила общая продуманность программы. Как-то всё в неё работает удобно и логично :-)

Так как веб-сервер (mapache) доступен только вместе с запущенным сервисом ContaCam, а в домашних условиях он чаще выключен, всего лишь одним легким движением руки можно решить эту задачу запуском веб-сервера отдельно (в моём случае тоже службой, которой удобно управлять):

mapache -f "путь к файлу httpd_conf.txt" -n "имя сервиса" -k install

Telegram-бот

Вот здесь началось самое интересное. :-) Переписывая свои скрипты под работу с ContaCam я задумался, а не прокачать ли мне свой powershell-скрипт, который только и делал, что отправлял мне сообщения в Telegram:

SendTo-Telegram.ps1
function SendTo-Telegram {
[CmdletBinding()]
param(
[string]$chat_id,
[string]$text,
[string]$token,
[switch]$nomarkdown,
[switch]$nopreview,
[int]$replyto
)
 
if (!$token) { $token = "ваш_token" }
if($nopreview) { $preview_mode = "True" }
if($nomarkdown) {$markdown_mode = ""} else { $markdown_mode = "Markdown" }
 
$payload = @{
    "chat_id" = $chat_id;
    "text" = $text;
    "parse_mode" = $markdown_mode;
    "disable_web_page_preview" = $preview_mode;
    "reply_to_message_id" = $replyto;
}
 
Invoke-WebRequest `
    -Uri ("https://api.telegram.org/bot{0}/sendMessage" -f $tgm_token) `
    -Method Post `
    -ContentType "application/json;charset=utf-8" `
    -Body (ConvertTo-Json -Depth 4 -Compress -InputObject $payload)
}
# пример использования
SendTo-Telegram -token "ваш_token" -chat_id "id_чата_в_который_писать" -text "текст_сообщения"

Да, знаю, на python можно найти готовые фреймворки, но мне стало интересно сделать что-то своё, да ещё и на Powershell. Пример общения с ботом:

Сейчас бот умеет сообщать кто дома, работать с камерами (получать скрин и гифку с крайним зафиксированным движением), управлять частью сервисов и… пока всё. :-) Как-то так. Здесь я пожалуй закончу (да и доча проснулась). Похвастался и хватит. ))) В перспективе, может осилю ещё пару постов именно про бот на powershell, плюс в плане, если он получится более или менее рабочим, опубликовать код на github.

Только авторизованные участники могут оставлять комментарии.
docs/blog/2017/08/cantacam_and_telegram_bots.txt · Последнее изменение: 05.09.2017 17:25 — philip

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki