Raspberry Pi + AirPlay + AirPrint + Telegram Chatbots + Apple HomeKit


5 minute read

image-center

Если не оч дружишь с питоном и есть желание это исправить -> https://vk.com/pythontutor

Надеюсь, для кого-то это послужит пинком в знакомстве с raspberry и натолкнёт на мысли/идеи по автоматизации чего-то у себя дома/на даче/работе/etc.

Хочу показать изи настройку на Raspberry AirPrint-/AirPlay-/HomeKit-серверов, а также запуск Telegram’овского бота.

План-капкан:

  1. Купить Raspberry можно, например, здесь. Плюс третьей модели в том, что у неё Wi-Fi и Bluetooth есть встроенные (не надо отдельно покупать, а для моей второй модели пришлось)
  2. Понадобится карточка MicroSD (у меня на 8 GB, хватает)
  3. Качаем Raspbian отсюда и делаем загрузочную флешку
  4. Вставляем загрузочную флешку в Raspberry, подключаем мышку/клавиатуру/монитор и погнали

alt

Добавлю, что с “Т-образной штукой” намного удобнее подключать радиодетали к Raspberry - мелким шрифтом нанесена нумерация и названия пинов.

На али: “Т-образная штука”, реле, провода_1, провода_2

AirPrint

alt

  1. Точно потребуется установить git:
    • sudo apt-get install git
  2. Другие “недостающие пакеты” пакеты так же устанавливаются:
    • sudo apt-get install <package_name>
  3. Необходимо получить файлик .service, чтобы Avahi научить работать с принтером. Для этого скачаем репозиторий со скриптом. Например, можно завести working directory: ~/WD, а в ней cloned_git. Тогда внутри ~/WD/cloned_git качаем репозиторий:
    • git clone https://github.com/tjfontaine/airprint-generate
  4. Внутри airprint-generate запускаем:
    • python2 airprint-generate.py -d /etc/avahi/services
  5. Перезапускаем Avahi:
    • sudo service avahi-daemon restart
  6. Должно заработать - можно теперь искать “расшаренный принтер”. Если вылетают баги какие-то или принтер печатать отказывается (у меня было такое) - пиши мне -> сюда_1, сюда_2, сюда_3

AirPlay

alt

Вот здесь отличный гайд, выполняешь все 8 пунктов и всё работает.

HomeKit

alt

Делал по этому гайду. Если что-то не оч понятно - пиши мне -> сюда_1, сюда_2, сюда_3

Telegram Bot

alt

  1. Качаем репозиторий:
    • git clone https://github.com/akarazeevprojects/TelegramBot
  2. Переходим в TelegramBot/
  3. Переключаемся на ветку lamp:
    • git checkout lamp
  4. Теперь осталось добавить token нашего бота
  5. Идем к @BotFather и создаем нового бота через /newbot
  6. Полученный токен записываем в файл token.json, находясь в TelegramBot/:
    • vim token.json
    • нажимаем i
    • вставляем такую строчку: {"token": "<tkn>"}, где <tkn> - скопированный токен
    • нажимаем ESC
    • теперь Shift+ж и затем wq - должно получиться :wq
    • затем Enter
    • примерно так выглядит содержимое token.json: alt
  7. Фух, теперь можно запускать бота. На самом деле еще надо поставить недостающие модули - например, pip install python-telegram-bot и тому подобное, но это уже мелочи :)
    • python bot.py alt
  8. Командой /switch в самом боте можно включить/выключить реле, а командой /temp узнать температуру процессора Raspberry
  9. Про подключение реле - в коде управление идёт пином под номером 26
    • соответственно проводами соединить надо “IN” <-> GPIO26, “VCC” <-> “3V3”, “GND” <-> “GND” alt

====================================================================

Классный туториал по системе 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\] $ "

alt

Переменная PS1 отвечает за prompt, а функция parse_git_branch() добавляет к prompt’у название бранча (ветки), если текущая директория - репозиторий.

Последовательность действий:

  1. gs - проверка статуса репозитория (есть ли изменения изменения)
  2. (a) gA - добавить все изменения в папке в коммит, (b) ga <file_name> - добавить изменение конкретного файла <file_name>
  3. gc '<message>' - добавить сообщение к коммиту
  4. (a) gpm - отправить изменения на сервер в master-ветку, (b) gph - отправить изменения на сервер в текущую ветку

Leave a comment