Intro
Мне очень нравится концепция одноплатников и я очень люблю Raspberry Pi. На нем можно сделать огромное количество интересных проектов. С момента выхода Raspberry Pi у меня были практически все модели. Сейчас у меня дома постоянно включены пять малинок. И я расскажу о таких вещах для которых я использую Raspberry Pi.
Distro
Если вы думаете, какой дистрибурив лучше всего подойдет для Raspberry Pi, то выбор совсем не большой. Raspbian работает стабильнее всего. Если он у вас будет работать как сервер, без монитора, то смело устанавливайте Lite версию. Если будете использовать монитор, то ставьте Full. Можно, кстати, использовать и ARM Manjaro XFCE, работает тоже довольно стабильно, выглядит гораздо лучше, но при этом немного сильнее греется.
Записать на флешку из винды легче всего с помощью Etcher.
А из Linux еще проще:
dd bs=4M if=2019-09-26-raspbian-buster.img of=/dev/sdX status=progress conv=fsync
Models and Frames
Сейчас, конечно же, разумнее всего покупать самую последнюю, четвертую модель, хотя для большинства задач это оверкилл. Я расскажу о некоторых кейсах в которых я использую Raspberry Pi и вот только в кейсе с медиапроигрывателем нужна четвертая версия и желательно с четырьмя гигабайтами оперативки. Кстати, если вы будете покупать четвертую версию, то настоятельно рекомендую вам купить сразу и охлаждение к ней.
А вот несколько моих корпусов для Raspberry Pi и мое мнение о них:
Крайне не рекомендую просто пластмассовые кейсы, которые просто защелкиваются. Они обычно ужасно хлипкие и совершенно бесполезные.
Так же не рекомендую и кейс из тонкой жести, или как это можно назвать, в общем из тонкого металла. Кейс как на моем фото ниже я купил в амперке. И он ужасен. Во первых он весь гнется в руках, во-вторых даже когда его полностью закрываешь и закручиваешь со всех сторон он проминается и прогибается. В третьих тут маленький и очень шумный кулер, даже если вешаешь его на 3.5в
Кулер ниже мне очень понравился. Возможно, это больше чем нужно, и крошечный распберри с ним уже не такой уж и крошечный, но этот кейс хорошо собран и сам кулер тут добротный, он с ним полностью холодный. Конструктивно он сделан так, что он очень плотно прилегает к процессору, в комплекте с ним идет термополоска. Кстати, я пробовал и с термополоской и с термопастой и разницы в температуре нет вообще.
Проверить температуру процессора в распберри, кстати, можно довольно просто, для этого не нужно ставить какой-то дополнительный софт:
cat /sys/class/thermal/thermal_zone0/temp
и видеочип:
/opt/vc/bin/vcgencmd measure_temp
Если вы планируете использовать распберри как медиасервер, то рекомендую именно этот корпус. Хотя с ним распберри становится довольно большим, у меня например не получается запихнуть с распберри в этом корпусе за телевизор, так как телевизор прикручен к стене очень близко. И кстати когда будете подключать кулер, то подключайте к питанию 3.5 а не к 5, так как если подключите к 5, то будет довольно сильно шуметь.
И вот еще один корпус, который мне очень нравится, он полностью пассивный, при этом он очень хорошо справляется с охлаждением. Сам этот корпус довольно массивный и тяжелый. Он очень продуманый, довольно удобно и легко сюда помещается распберри, закрутил все за пол минуты, когда как в прошлом тут пришлось повозиться, из-за не очень удобного крепления. И когда он собран тут вообще нет никак люфтов, абсолютно. С этим корпусом распберри становится будто бы бронированным.
Температура максимальная которую мне удавалось нагнать, когда распберри был в этом корпусе, и при этом игрался какой-то фулл хд ролик на ютубе была 55 градусов. Думаю, что довольно не плохо. Конечно, в предыдущем корпусе, температура в таких же условиях держится в районе 46 градусов. И, кстати, температура может быть разная в зависимости от дистрибутива. ARM Manjaro c XFCE греет распберри градусов на пять сильнее чем Raspbian. При этом 55 градусов, наверное, все-таки нормальная температура, при этом у вас ничего не шумит и не моргает. В общем могу рекомендовать этот корпус.
How to use
Dashboard
Самый очевидный и самый полезный кейс для одноплатников это дашборд. Для этого можно использовать большое количество различных инструментов, мой любимый это Grafana. Все что от вас нужно так это установить ее и законнектить к базой данных, все остальное это обычные sql запросы.
Сейчас я использую графану с расбери на одном из моих проеков и это очень удобно.
Для того чтобы показывать дашборд мы должны просто открывать какой-нибудь браузер в kiosk mode
Для того чтобы автоматически запускать браузер нам надо отредактировать файл
/home/pi/.config/lxsession/LXDE-pi/autostart
Мой выглядит следующим образом
@lxpanel --profile LXDE-pi
@pcmanfm --desktop --profile LXDE-pi
@xscreensaver -no-splash
@point-rpi
@xset s off
@xset -dpms
@xset s noblank
@sed -i 's/"exited_cleanly": false/"exited_cleanly": true/' ~/.config/chromium Default/Preferences
@/home/pi/chrome.sh
@/home/pi/chau.sh
Предпоследняя строчка открывает хром со страницей при запуске Последняя делает автообновления
Так выглядит chau.sh
#!/bin/bash
while true; #create an infinite loop
do
sleep 600
xdotool key = "ctrl+F5" & #you need to xdotool installed
done
А так chrome.sh
#!/bin/sh
sed -i 's/"exited_cleanly":false/"exited_cleanly":true/' ~/.config/chromium/'Local State'
sed -i 's/"exited_cleanly":false/"exited_cleanly":true/; s/"exit_type":"[^"]\+"/"exit_type":"Normal"/' ~/.config/chromium/Default/Preferences
chromium-browser --kiosk --no-default-browser-check --no-first-run --disable-infobars --disable-session-crashed-bubble "OURURL"
В последней строке замените “OURURL” на актуальный URL вашей страницы
И кстати, если вы используете Grafana, то вам не нужно запускать файл, который занимается автообновлением страницы. Графана это умеет делать сама.
Термостанция
С помощью распберри можно довольно просто мониторить температуру, влажность и уровень CO2.
Датчик температуры и влажности можно взять DHT22 или DHT11. Для начала нужно подключить три провода от датчика в Raspberry. Питание я повесил на 3.3v, а не на 5v. GND на землю. Ну а управляющий вешаем на любой из свободных GPIO. Выглядит это следующим образом:
Для начала нужно сделать апдейт системы
sudo apt-get update
После чего нужно установить необходимые библиотеки
sudo apt-get install build-essential python-dev python-openssl
Клонируем репозиторий
git clone https://github.com/adafruit/Adafruit_Python_DHT
cd Adafruit_Python_DHT
Запускаем скрипт. Выполниться все должно без ошибок.
sudo python setup.py install
cd /home/pi/Adafruit_Python_DHT/examples
Теперь запускаем программу. Первым параметром мы должны передать идентификатор устройства.
11 если используем модель DHT11 22 если используем модель DHT22
Вторым параметром передаем номер порта GPIO к которому подключено наше устройство. Я повесил на четвертый.
./AdafruitDHT.py 22 4
Вывод должен быть примерно такой
Temp=27.1* Humidity=35.4%
Ура! Все работает
Сохраняем данные
Сделаем пустой текстовый файлик в который мы будем записывать показания, нужен он, например, для того чтобы строить график.
cd /home/pi
touch temphum.txt
Кроме того сделаем скрипт, который будет автоматически опрашивать наш датчик и записывать показания в текстовый файл.
Создаем файл
touch temphum.sh
Даем ему права на запуск
chmod +x temphum.sh
Наш скрипт выглядит следующим образом
#!/bin/bash
MYTEMP=$(/home/pi/Adafruit_Python_DHT/examples/AdafruitDHT.py 22 4)
MYDATE=$(date +"%d-%m-%y-%T")
second=''
first=${MYTEMP//Temp=/$second}
first=${first/Humidity=/$second}
echo $MYDATE $first >> /home/pi/temphum.txt
В этом скрипте мы добавляем дату Удаляем из строки “Temp=” и “Humidity=” Конкатинируем и записываем все в новую строку
Cron
Теперь заставим крон запускать наш скрипт каждые 10 минут.
crontab -e
*/10 * * * * /home/pi/temphum.sh
Теперь мы можем любым удобным нам способом брать даныне из этого файла и показывать их. Как это сделал я описано ниже.
Отображение
Я хочу всегда видеть текущие значения температуры и влажности в своей панели.
Для этого я сделал небольшой скрипт. Скрипт просто берет у распберри тестовый файл, смотрит на последнюю строку, забирает из нее только температуру и влажность.
#!/bin/bash
DIR=$(ssh -o LogLevel=QUIET -tt pi@192.168.1.5 tail -2 /home/pi/temphum.txt | head -1 | sed 's/[^ ]* //')
if [[ "${DIR}" ]]; then
echo "${DIR}"
fi
У меня это выглядит следующим образом.
Pi-hole
Наверное, самая полезная вещь, которую можно поднять на Raspberry PI. Это блокировщик рекламы на уровне DNS. Мне нравится это решение тем, что если у вас дома есть локальная сеть, то вы можете блокировать рекламу полностью для всех ваших устройств. Да и интернет будет работать быстрее, так как вообще не будут грузиться картинки ил видео с заблокированных адресов и это очень удобно.
Развернуть Pi-Hole можно за две минуты. Все что нужно, так это выполнить всего одну команду:
curl -sSL https://install.pi-hole.net | bash
С помощью Pi-hole можно не только блокировать рекламу, но и самостоятельно заблокировать некоторые домены. У меня например, мой Smart TV очень часто ходит на свой китайский сервер. Можно просто заблокировать все домены, на которые он пытается что-то отправлять.
В общем если хотите блокировать рекламу или просто внимательнее смотреть за своей локальной сетью, то рекомендую.
Media Server
Мне очень нравится то как можно использовать Raspberry Pi как медиасервер, последняя версия может проигрывать даже 4к видео, но при этом важно хорошо его охлаждать, так как он может сгореть. Но 4к это то, что заявлено, по факту, у меня не получилось нормально смотреть на нем 4к видео, но Full-HD или 2k воспроизводятся нормально.
Есть много различных специализированных штуковин для телевизора: Google Chromecast, Apple TV, есть какая-то штука и от Amazon. Но мне не нравится некоторые моменты в этих устройствах. Там я не могу посмотреть с них все, что я хочу, не всегда есть контент, который мне нужен. Во-вторых, с точки зрения интерфейса, оно все выиглядит не очень.
Мне больше нравится использовать Raspberry Pi как медиасервер в связке с сервером. Мой домашний сервер довольно простой. Обычный комп, который стоит в кладовке, к нему подключен очень большой рейд-массив. Пространство которое не нужно в этом рейд массиве я сдаю в STORJ и немного на этом зарабатываю. Я кстати делал про это ролик. Сервер подключен по Ethernet к роутеру, там 1гигабит.
На сервере кроме STORJ есть еще и Transmission, который следит за определенной папкой, и если в эту папку попадает какой-нибудь *.torrent файл, то он автоматически начинает его скачивать. То есть я могу как с ноутбука так и со смартфона довольно быстро скачать все что нужно и сервер автоматически начнет скачивать это.
На Raspberry Pi у меня установлен Raspbian и VLC. А на смартфоне установлен VLC Remote. Так же на Raspberry Pi настроен sshfs, который видит все, что есть на сервере. И через смартфон я вижу все, что у меня скачано.
Когда я включаю что-то у меня никогда нет никаких лагов, тормозов и вообще каких-либо пауз перед тем как видео начнет проигрываться.
А управлять воспроизведением, паузами, громкостью, выбрать субтитры или звуковую дорожку, а так же выбрать сам файл для проигрывания можно в программе VLC Remote Pro. Программа просто отличная, ей очень удобно пользоваться. И что самое классное, тут очень удобно реализована прокрутка, довольно легко можно найти любой момент в фильме.
Homebridge
Homebridge это легкий сервер написанный на Node.js, который эмулирует HomeKit API от эпла.
https://github.com/nfarina/homebridge
С помощью него вы сможете легко сделать умный дом. Он поддерживает огромное количество плагинов, которые могут работать с различными девайсами от умного дома.
Когда я был на инфраструкруте от эпла, и жил в прошлой квартире я во всей квартире заменил выключатели света на выключатели Xiaomi Auara. И так же там нужен Xiaomi Auara Hub.
После чего настроив это все в HomeBridge вы можете отдавать команды сири.
Сири, включи свет в ванной.
Сири, выключи свет в кухне.
Сири. выключи свет везде.
Так же можно писать свои собственные модули. Например, я взял модуль у какого-то человека, который писал его для открывания/закрывания дверей гаража и на его основе писал свои различные сценарии.
Можно написать модуль, который будет просто выполнять какой-нибудь sh файл. Ну и я думаю вы сами понимаете возможности.
На этом все. Если у вас Raspberry лежит без дела, то надеюсь, что теперь вы знаете куда его можно применить.