Grafana & influxdb на banana pi

Дома крутится медиа сервер, к которому я и решил прикрутить немножко мониторинга.
Пока это датчик температуры и давления на шине I2C

Сервер – это Banana PI. У него есть SATA разъем для жесткого диска, и, что самое главное, GPIO ноги, на которые можно вешать разные устройства.

В качестве фронтэнда для мониторинга я решил взять Grafana. Это ограничило варианты хранилища данных.
Графана поддерживает Graphite, CloudWatch, ElasticSearch, InfluxDB, KairosDB, OpenTSDB, Prometheus.
Graphite – Не осилил документацию :(
CloudWatch – Облако от Amazon. Я не хотел полагаться на внешние сервисы
ElasticSearch – Java
InfluxDB – Написана на golang
KairosDB – Java поверх Cassandra
OpenTSDB – Java поверх HBase
Prometheus – Работает по pull модели. Он сам собирает данные. Мне это не понравилось

Java – не вариант. Мне не нравится экосистема Java, от нее пахнет корпоративным душком. Плюс, JVM сожрет больше ресурсов, чем я хочу.

В итоге остановился на InfluxDB – то, что все собирается в бинарный код мне показалось весьма уместным для слабого сервера. Более того, возможности писать в базу разнообразны и удобны. Простой HTTP интерфейс, просто UDP и т.п.

Сначала все показалось простым – забрать код, собрать и запустить.
На деле это конечно не так.

Начнем с golang. Его ставить совсем не очевидно. Самый свежий go1.5.x для установки хочет go1.4.x :)
После нескольких попыток поставил gvm, это сильно помогло. gvm, как и его братья из других языков rvm & nvm умеет ставить и переключать версии golang

Нельзя просто взять и сбилдить проект на golang, как я понял. ARM пока вызывает проблемы в golang. Дело еще и в том, что я не сильно знаком с этим стеком. Собирал grafana & influxdb долго и муторно. В установке сильно помогли следующие странички:
http://gridengine.eu/index.php/other-stories/229-installing-influx-db-on-raspberry-pi-2-2015-10-18
http://docs.grafana.org/project/building_from_source/

С этого момента уже легче. Есть БД и фронтэнд к ней.

Совсем бесплатно дался мониторинг состояния системы сервера. InfluxDB отлично интегрируется с кучей систем, в том числе и с collectd. Пришлось поменять всего пару конфигов.

Осталось прочитать данные с датчика. У меня был заранее закуплен датчик bmp180. Забегая заранее – датчик – это чрезвычайно просто.

bmp180

bmp180

Если кратко
– ставим библиотеку python для работы с i2c шиной
– скачиваем готовый скрипт для своего датчика :)
– пришлось адаптировать скрипт для записи непосредственно в InfluxDB через UDP
– пришлось адаптировать скрипт, чтобы он писал не миллибары, а миллиметры ртутного столба

На сервере у меня стоит OpenMediaVault, поэтому регулярно запускать скрипт чтения с датчика я настроил прямо мышкой из браузера.

Готовенький скрипт для работы
Как подключить датчик и поставить пакеты

А вот и пример датчика, висящего на i2c шине –

root@bananas:~# ls -l /dev/i2c*
crw-rw---T 1 root i2c 89, 0 Jan 1 2010 /dev/i2c-0
crw-rw---T 1 root i2c 89, 1 Jan 1 2010 /dev/i2c-1
crw-rw---T 1 root i2c 89, 2 Jan 1 2010 /dev/i2c-2
crw-rw---T 1 root i2c 89, 3 Jan 1 2010 /dev/i2c-3
crw-rw---T 1 root i2c 89, 4 Jan 1 2010 /dev/i2c-4
root@bananas:~# i2cdetect -y 2
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- 77

Адаптированный скрипт лежит на гитхабе – https://github.com/Gromina/home_monitoring

Про Single-board компьютеры

Уже несколько лет не стихает волна одноплатных компьютеров поднятая raspberry pi.
Трудно поверить, но первый настоящий одноплатный компьютер появился в далеком 1976 году.
Нынешняя волна по всей видимости связана с несколькими вещами – небольшой размер, мощность достаточная для большинства обычных задач и чрезвычайно низкая стоимость и энергопотребление.

Сегодня существует довольно много разнообразных вариантов одноплатных компьютеров. Я расскажу лишь о тех, что я держал в руках и использовал.

Raspberry pi

Мощным маркетингом этого компьютера двинули весь рынок. Самым важным моментом была низкая стоимость (от $25) и наличие так называемых GPIO. GPIO – порты ввода-вывода, позволяющие несложно подключать внешние устройства – диоды, кнопки, датчики и т.п. В обычных PC такие подключения затруднительны.
С момента зпуска вышли 2 модели raspberry pi, raspberry pi 2, а также совсем недавно raspberry pi zero.

На raspberry pi можно поставить один из дистрибутивов Linux, коих существует множество.
Также есть RTOS (Real time operating system) дистрибутивы, для решения задач, критичных по времени.
Большим преимуществом является поддержка технологии HDMI CEC, об этом чуть позже.

Компьютер справляется с Full HD видео, поэтому для него собрано несколько дистрибутивов с медиацентроами.
Из существенных минусов – отсутствие SATA. Из-за этого к raspberry pi нельзя подключить жесткие диски большого объема на большой скорости. Их, конечно, можно подключить через USB, но это не позволит качать данные на максимально возможной скорости.

Cubieboard

Производится китайской компанией. Существует несколько разных компьютеров. Я себе приобретал Cubieboard2. В основном из-за SATA разъема, для того, чтобы собрать на этом компьютере сетевое хранилище.
Ничего особо нового по сравнению с raspberry pi сказать не могу. Точно также есть ряд дистрибутивов Linux, на которых можно запустить хоть сервер, хоть десктоп. Есть также дистрибутивы Android.
Также заявляется возможность играть Full HD и даже больше.
Сетевое хранилище на этом компьютере у меня работает уже несколько лет и качает торенты.

Banana Pi

Также китайская компания. Несмотря на это, компьютер относится к категории open source hardware. Что позволяет собирать на базе этого компьютера более сложные или заточенные под задачу устройства.
Также есть несколько разных моделей. Радует наличие Wifi на борту некоторых устройств (Banana pi pro), вместе с SATA. Прямо на борту есть микрофон.
Естественно, также есть GPIO (совместимые по раскладке с raspberry pi).
можно устанавливать Linux и Android
Я брал Banana pi Pro для очередного сетевого хранилища.

Beaglebone black

В некотором роде выделяющийся компьютер. Open source hardware. Как и все предыдущие модели, позволяет поставить разнообразные Linux дистрибутивы. Конечно, можно сделать на базе этого компьютера как десктоп, так сервер.

Но мне показалось, что все же он больше подходит для более низкоуровневых задач. На плате есть конроллер питания и зарядки для LiOn батарей. Это позволяет делать автономные устройства, которые заряжаются при наличии внешнего питания и работают от батареи при отключении внешнего питания.

Области применения одноплатных компьютеров

Медиацентр

На базе бывшего XBMC теперь называющегося Kodi созданы дистрибутивы для raspberry pi, превращающие этот небольшой компьютер в полноценный медиацентр. Прелесть raspberry pi в поддержке HDMI CEC. Эта технология позволяет управлять по HDMI внешними устройствами с одного пульта. Таким образом подключенная к телевизору малинка успешно управляется с пульта телевизора (практически любой модели). Производители телевизоров склонны называть HDMI CEC своими названиями непонятно зачем.
Я пробовал 2 дистрибутива Kodi для raspberry pi – openelec и osmc
Openelec позиционирует свою заточенность на скорость, поэтому производители ограничили доступ к системе и выпилили часть системных программ и утилит. Для обычного пользователя это не очень критично.
Я же остановился на OSMC – полноценный линукс с Kodi.

Сетевое хранилище / сервер

Благодаря низкому энергопотреблению, а также отсутствию шума (вентиляторов нигде нет) одноплатные компьютеры отлично подходят для домашнего сервера. На сервере можно поднять качалку торентов, хранилище файлов, даже собственное облако
Если позволяют знания, можно просто настроить Linux под себя, установив transmission, smb и т.п.
Если хочется настраивать мышкой – тоже есть варианты. Недавно я установил сервер на базе OpenMediaVault – После установки дистрибутива на компьютер, можно заходить на него из браузера и все настраивать, очень удобно.

Хочу отметить, что для сервера (особенно для торентов) важен большой объем данных, поэтому тут предпочтение падает на компьютеры с SATA. Я использовал Cubieboard2 и Banana pi pro.

Умный дом

По тем же свойствам, что и выше, одноплатные компьютеры хорошо подходят для автоматизации дома. Это может быть что угодно – видеонаблюдение, управление замками, сигнализацией, кондиционерами, аудио-видеотехникой.
наличие GPIO позволяют подключить практически любые периферийные устройства – камеры, датчики, радио и IR трансмиттеры. Остается только все это интегрировать, что конечно непросто. Я знаю, что уже появились некоторые решения для умных домов, но пока не пробовал ни одного из них.
Пробовал делать видеонаблюдение на базе motion & Cubieboard2 – работает.

роботы

В большинстве случаев любой из одноплатных компьютеров справится с задачами управления роботом. Это может быть и управление движением и что-то более сложное типа обработки видео и решения задач позиционирования. Как пример

игровая консоль

Интересный вариант использования одноплатных компьютеров – создание игровой консоли-эмулятора для ретроигр.
мощности вполне хватает для эмуляции (но лучше брать raspberry pi 2, а не 1)
Разного софта достаточно много, GPIO позволяют подключить любые внешние устройства ввода – джойстики, геймпады, коврики и т.п.
Я пробовал пару дистрибутивов –
retropie – Дистриб для raspberyy pi. работает из коробки, поддерживает кучу джойстиков. Будет немного гемороя для некоторых консолей (надо будет искать их BIOS)
BeagleSNES – дистриб для Beaglebone Black. Эмулирует SNES. Немного тормозит
recalbox – Выглядит симпатично, но толком еще не пробовал
Lakka – Тоже пока не смотрел, но для эмуляторов еще один дистрибутив

Вообще есть желание собрать аркадный кабинет на базе raspberry pi2 – но пока не дошли руки и не все необходимое железо еще собрал

Фантастика

Пока суть да дело, без лишней помпы, вышло обновление Google Translate.

Перевод надписей в реальном времени с камеры (прямо поверх изображения).
Двусторонний перевод речи с микрофона.

Что я хотел сказать – технологии из фантастических книг уже прямо тут, их можно пощщупать и попробовать.

Coursera / Interactive Computer Graphics

Набрел на интересный курс – Interactive Computer Graphics

Takeo Igarashi is a Professor of Computer Science Department at The University of Tokyo

Takeo Igarashi is a Professor of Computer Science Department at The University of Tokyo

 

Вроде дядька рассказывает про простые вещи, но решения и оптимизации зачастую неожиданные. Демки выглядят классно, хоть и на Java :)

Интересные вещи про UX

улучшение прокрутки, работа с иконками на рабочем столе, управление голосом, более дружелюный к людям графический редактор и т.п.

Рекомендую всем, кто связан с мультимедия, UX.

 

 

Linux & Windows Phone

Как оказалось, Nautilus (который файловый менеджер для linux) отлично работает с  mtp устройствами

Если перевести на понятный язык – можно скидывать фотки с телефона под управлением Windows 8. Был приятно удивлен. Наутилусом и линуксом.

 Update:

Выяснил, что даты файлов не сохраняются. Это очень грустно, но добрые люди уже нашли решение проблемы:

#!/bin/sh
for i in ~/Pictures/camera/*; do
    SPEC=`exiftool -t -S -d "%Y-%m-%d %H:%M:%S" -CreateDate "$i"`
    echo $SPEC
    echo "$i:$DATE"
    touch -d "$SPEC" "$i"
done

Этот скрипт вытаскивает дату снимка из EXIF и ставит ее как дату создания файла.
Взято тут