Raspberry Pi + AirPlay + AirPrint + Telegram Chatbots + Apple HomeKit
Если не оч дружишь с питоном и есть желание это исправить -> https://vk.com/pythontutor
Надеюсь, для кого-то это послужит пинком в знакомстве с raspberry и натолкнёт на мысли/идеи по автоматизации чего-то у себя дома/на даче/работе/etc.
Хочу показать изи настройку на Raspberry AirPrint-/AirPlay-/HomeKit-серверов, а также запуск Telegram’овского бота.
План-капкан:
- Купить Raspberry можно, например, здесь. Плюс третьей модели в том, что у неё Wi-Fi и Bluetooth есть встроенные (не надо отдельно покупать, а для моей второй модели пришлось)
- Понадобится карточка MicroSD (у меня на 8 GB, хватает)
- Качаем Raspbian отсюда и делаем загрузочную флешку
- Вставляем загрузочную флешку в Raspberry, подключаем мышку/клавиатуру/монитор и погнали
Добавлю, что с “Т-образной штукой” намного удобнее подключать радиодетали к Raspberry - мелким шрифтом нанесена нумерация и названия пинов.
На али: “Т-образная штука”, реле, провода_1, провода_2
AirPrint
- Точно потребуется установить
git
:sudo apt-get install git
- Другие “недостающие пакеты” пакеты так же устанавливаются:
sudo apt-get install <package_name>
- Необходимо получить файлик
.service
, чтобы Avahi научить работать с принтером. Для этого скачаем репозиторий со скриптом. Например, можно завести working directory:~/WD
, а в нейcloned_git
. Тогда внутри~/WD/cloned_git
качаем репозиторий:git clone https://github.com/tjfontaine/airprint-generate
- Внутри
airprint-generate
запускаем:python2 airprint-generate.py -d /etc/avahi/services
- Перезапускаем Avahi:
sudo service avahi-daemon restart
- Должно заработать - можно теперь искать “расшаренный принтер”. Если вылетают баги какие-то или принтер печатать отказывается (у меня было такое) - пиши мне -> сюда_1, сюда_2, сюда_3
AirPlay
Вот здесь отличный гайд, выполняешь все 8 пунктов и всё работает.
HomeKit
Делал по этому гайду. Если что-то не оч понятно - пиши мне -> сюда_1, сюда_2, сюда_3
Telegram Bot
- Качаем репозиторий:
git clone https://github.com/akarazeevprojects/TelegramBot
- Переходим в
TelegramBot/
- Переключаемся на ветку
lamp
:git checkout lamp
- Теперь осталось добавить token нашего бота
- Идем к @BotFather и создаем нового бота через
/newbot
- Полученный токен записываем в файл
token.json
, находясь вTelegramBot/
:vim token.json
- нажимаем
i
- вставляем такую строчку:
{"token": "<tkn>"}
, где<tkn>
- скопированный токен - нажимаем
ESC
- теперь
Shift+ж
и затемwq
- должно получиться:wq
- затем
Enter
- примерно так выглядит содержимое
token.json
:
- Фух, теперь можно запускать бота. На самом деле еще надо поставить недостающие модули - например,
pip install python-telegram-bot
и тому подобное, но это уже мелочи :)python bot.py
- Командой
/switch
в самом боте можно включить/выключить реле, а командой/temp
узнать температуру процессора Raspberry - Про подключение реле - в коде управление идёт пином под номером 26
- соответственно проводами соединить надо “IN” <-> GPIO26, “VCC” <-> “3V3”, “GND” <-> “GND”
====================================================================
Классный туториал по системе git -> https://githowto.com/ru
Скопипастил из своего ~/.bash_aliases
:
# git-commands aliases
alias gs='git status'
alias gA='git add -A'
alias ga='git add'
alias gc='git commit -m'
alias gpm='git push origin master'
alias gph='git push origin HEAD'
alias gpo='git push origin'
alias gb='git branch'
alias gl='git log'
alias gch='git checkout'
alias gv='git remote -v'
alias gr='git reset'
alias gig='vim .gitignore'
Поместить в файл ~/.bashrc
строки, если отсутствуют:
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
Это туда же можно поместить:
parse_git_branch() {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}
export PS1="\[\033[1;93m\]\u@\h:\w -\[\033[00;32m\]\$(parse_git_branch)\[\033[00m\] $ "
Переменная PS1
отвечает за prompt
, а функция parse_git_branch()
добавляет к prompt
’у название бранча (ветки), если текущая директория - репозиторий.
Последовательность действий:
gs
- проверка статуса репозитория (есть ли изменения изменения)- (a)
gA
- добавить все изменения в папке в коммит, (b)ga <file_name>
- добавить изменение конкретного файла<file_name>
gc '<message>'
- добавить сообщение к коммиту- (a)
gpm
- отправить изменения на сервер вmaster
-ветку, (b)gph
- отправить изменения на сервер в текущую ветку
Leave a comment