Новое устройство для экспериментов с Asterisk
Собрал новое устройство для экспериментов с Asterisk. Почему-то прошивка сделанная автором raspberry-asterisk у меня зависает в случайные моменты времени. Иногда работает несколько дней, иногда зависает через несколько минут. Поначалу грешил на саму малинку, потом на SD карточку, потом на блок питания. Заменил последовательно все, однако устройство стабильно зависает.
Да, я знаю, что на плате стоимостью в десять долларов невозможно собрать стабильно работающее устройство с астериском, которое будет полностью выполнять функции "взрослой" АТС. Да, я знаю, что для чего-то более серьезного нужно более серьезное оборудование, но, я, тем не менее, хочу знать как это сделать!
Настроив монториг памяти и температуры устройства, я заметил, что устройство не потребляет много памяти и не уходит в cpu троттлинг, но, тем не менее, температура процессора немного выше чем на аналогичном устройстве без астериска.
Решил, что все дело в самой прошивке, ведь, даже автор raspberry-asterisk больше не поддерживает в новых образах Raspberry Pi Zero.
Поэтому, решил установить Asterisk на Debian c нуля, благо, в сети уже есть инструкции как это сделать. Для этого заказал новую плату и USB хаб. Плату запитал от этого же хаба. Не все устройства такое позволяют, но данный экземпляр сработал как надо. USB-стик тоже определился как надо.
Компиляция астериска заняла несколько часов, однако все сработало как надо и в конце концов у меня получилась вполне работающая система.
Пока устройство работает стабильно - посмотрим, как долго проработает в этой инкарнации.
Умные часы на Андроид
Изучаю рынок умных часов в надежде найти что нибудь более мощное взамен моих теперешних Amazfit Stratos. Вначале понравились Amazfit GTS - выглядят очень интересно, но оказывается в эта серия часов имеют в качестве прошивки не Android как на Stratos а какую-то собственную проприетарноуе систему на собсвенной закрытой операционной системe. Почему-то производители кроме Amazfit Stratos и еще нескольких другиx моделей не используют android в качестве операционной системы а делают свои велосипеды. Вроде бы неплохая Android Wear живёт достаточно недолго от аккумулятора в то время "проприетарная" система на базе Android версии 4 которая стоит в часах линейки Amazfit Stratos показывает вполне неплохую автономность.
Amazfit Stratos могут работать от одного заряда больше недели, что меня вполне устраивает. Это гораздо лучше Wear - которая живёт от аккумулятора меньше, а стоит дороже. Сейчас они меня вполне устраивают, все же ещё мне хочется в часах иметь квадратный экран и микрофон с динамиком.
При этом, Amzfit Startos оказываются вполне умные и на них можно устанавливать приложения под Android при помощи утилиты adb и использовать часы в качестве полноценного android устройства. Странно то, что в то время как в других линейках часов есть версии с круглым экраноми и квадратными экранами, в линейке Amazfit с андроидом все модели имеют только круглый экран и нет ни одной модели с квадратным экраном, хотя для андроида с его меню в правом верхнем углу круглая форма экрана очень неудобна - меню оказывается обрезано закруглением экрана и пользоваться им становится невозможно. Возможно модель с квадратным экраном все же существует но я пока такую не нашёл. Попробую поизучать другие модели и посмотреть что они умеют.
В табличке с приложениями для телефонов серии Amazfit Stratos появились графы для моделей Pace и Verge что вселяет определенную надежду на то что существуют и другие модели умных часов которые можно расширять по функционалу так как хочется а не только как предусмотрел производитель.
Автоматический полив комнатных растений
Выложил на гитхаб файлы из проекта "Поливалка".
Наверно, любая домохозяйка время от времени сталкивается с вопросом - кому бы поручить полив комнатных растений во время длительного отсутствия, например во время отпуска. Конечно на помощь всегда могут прийти добрые родственники или соседи. Если беспокоить других людей не хочется - на помощь могут прийти подручные средства из пластиковых бутылок мокрых тряпок и тазиков…. Однако по приезду можно обнаружить, что цветы все равно завяли така как система которую вы установили перед отъездом дала сбой, корни засохли, а вся вода из емкости вылилась на пол и залила соседей…
Но если подумать, только ли во время отъезда нужно автоматизировать полив комнатных растений? Ведь некоторые рассеянные люди вроде меня, даже когда никуда не уезжают, постоянно забывают поливать цветы. То и дело, обнаруживаешь, что твой любимый фикус начинает засыхать, потому что его уже неделю никто не поливает. Даже цветы в офисе иногда начинают терять листья, так как никому в нашем мужском коллективе не приходит в голову регулярно их поливать...
Читать дальше в разделе "Статьи"...
Видео стриминг с ESP32
В сети есть много примеров того как превратить плату esp32 cam в веб-камеру способную стримить видео поток. Однако, такая веб-камера может раздавать контент только на одно устройство, что делает такое решение не очень функциональным.
Задался вопросом, как сделать так, чтобы видеопоток от веб-камеры можно было принимать на нескольких устройствах. К удивлению, в сети, почему-то, очень мало успешных решений для потокового вещания с ESP32, хотя подобный проект мог бы быть довольно интересным.
Однако, существуют примеры того, как организовать потоковое вещание при помощи nginx от других источников, ту же идею можно применить и для нашего случая.
После нескольких вечеров экспериментов мне удалось организовать стриминг от устройства на esp32 cam в локальной сети на несколько устройств. В качестве реверсивного прокси-сервера используется nginx. FFMpeg преобразует RTSP поток от веб-камеры в RTMP видео поток который посылается на веб-сервер и раздается нескольким устройствам одновременно. В качестве видео плеера я использовал VLC но может подойти и любой другой.
Таким образом, сервер получает трафик виде одного потока от камеры esp32 который затем уже раздаётся на несколько потребителей. Веб сервер был поднят на устройстве Raspberry Pi Zero W - мини компьютера размером с половину пластиковой карточки и стоимостью в десять долларов. Вычислительных способностей этого малыша оказалось достаточно для перекодирования в реальном времени видеопотока с ESP32 Cam и раздачи его на оконечные устройства.
Команда для перекодирования потока при помощи ffmpeg у меня получилась вот такой:
ffmpeg -rtsp_transport tcp -i rtsp://192.168.0.61:8554/mjpeg/1 \
-f flv -tune zerolatency -preset ultrafast -r 10 -an \
rtmp://localhost:1935/live/ccc
В ходе экспериментов было выявлено, что задержка при подобном способе раздачи контента составляет около 30 секунд, возможно для коммерческих устройств это будет неприемлемо, но для домашнего видеонаблюдения будет вполне достаточно. Стоимость компонентов при этом оказывается совсем смешной по сравнению со стоимостью "взрослых" решений.