Гид по технологиям

Сделайте Twitter-бота на Raspberry Pi: периодические твиты с температурой и фото

6 min read Raspberry Pi Обновлено 14 Dec 2025
Twitter-бот на Raspberry Pi: твиты с температурой и фото
Twitter-бот на Raspberry Pi: твиты с температурой и фото

Raspberry Pi с подключённой вебкамерой и индикаторами

Почему это полезно

Коротко: автоматическая публикация температуры и фото подойдёт для удалённого мониторинга тестовой установки, демонстраций и учебных проектов. Это простой проект, который знакомит с API Twitter, периферией на Pi и планировщиком задач cron.

Ключевые цели:

  • Научиться регистрировать приложение в Twitter и использовать OAuth-ключи.
  • Снимать температуру CPU и фотографию вебкамой в Python.
  • Автоматически публиковать сообщения в Twitter через cron.

Важно: этот пример публикует данные в публичный аккаунт. Не размещайте приватные ключи в общедоступных репозиториях.

Что понадобится

  • Raspberry Pi с установленной Linux-системой (Raspbian/raspios или аналог).
  • Доступ по SSH или физическая клавиатура/монитор.
  • USB-вебкамера, совместимая с V4L2 (/dev/video0).
  • Аккаунт Twitter и возможность создать приложение для API.
  • Базовые навыки командной строки и Python.

Краткое определение: cron — встроенный планировщик задач в Unix-подобных системах; он выполняет команды по расписанию.

Подготовка: обновление системы и установка зависимостей

Откройте терминал на Pi (локально или по SSH) и выполните обновление пакетов.

sudo apt-get update
sudo apt-get upgrade

Затем установите setuptools, pip и необходимые Python-модули. В примере используем модуль Twython для работы с Twitter и pygame для съёма фото с вебкамеры.

sudo apt-get install python-setuptools
sudo easy_install pip
sudo pip install twython
sudo apt-get install python-pygame python-pygame-camera

Примечание: на некоторых системах pygame и его камера устанавливаются иначе; если у вас Python 3, используйте python3-пакеты и pip3.

Регистрация приложения в Twitter и получение ключей

  1. Перейдите на страницу разработчиков Twitter и создайте новое приложение. При создании приложения можно оставить поле callback URL пустым; в поле Web-сайт достаточно указать любой URL.

Форма создания нового приложения Twitter

  1. После создания перейдите в раздел Details — там находятся Consumer Key и Consumer Secret. По умолчанию приложение может быть с правами только для чтения.

Страница с ключами приложения Twitter

  1. В настройках (Settings) измените Application type на Read and Write, чтобы ваше приложение могло публиковать твиты.

Изменение прав приложения на Read and Write

  1. На вкладке Details нажмите кнопку создания OAuth access token — это сгенерирует Access Token и Access Token Secret, которые понадобятся в скрипте.

Создание OAuth access token для доступа к аккаунту

Скопируйте четыре ключа/секрета и сохраните их в безопасном месте.

Создаём Python-проект

Сделаем папку для проекта и создадим файл скрипта.

mkdir SillyTweeter
cd SillyTweeter
sudo nano SillyTweeter.py

Вставьте в файл основной код. Ниже — полнофункциональный пример, который публикует и температуру CPU, и фотографию. Строки с ключами API должны быть заменены на ваши значения (включая кавычки). Если вы хотите, чтобы текст твита был на русском, оставьте русские строки в status.

#!/usr/bin/env python
import sys
import os
from twython import Twython
import pygame
import pygame.camera
from pygame.locals import *

# Замените звёздочки на ваши ключи
CONSUMER_KEY = '*************YOUR_CONSUMER_KEY*************'
CONSUMER_SECRET = '***********YOUR_CONSUMER_SECRET*************'
ACCESS_KEY = '***********YOUR_ACCESS_TOKEN*************'
ACCESS_SECRET = '***********YOUR_ACCESS_SECRET***************'

# Инициализируем API
api = Twython(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_KEY, ACCESS_SECRET)

# Получаем температуру CPU (для Raspberry Pi)
cmd = '/opt/vc/bin/vcgencmd measure_temp'
try:
    line = os.popen(cmd).readline().strip()
    temp = line.split('=')[1].split("'")[0]
except Exception as e:
    temp = 'unknown'

# Делаем фото с вебкамеры
webcam_filename = 'webcam.jpg'
try:
    pygame.init()
    pygame.camera.init()
    cam = pygame.camera.Camera('/dev/video0', (640, 480))
    cam.start()
    image = cam.get_image()
    pygame.image.save(image, webcam_filename)
    cam.stop()
except Exception as e:
    webcam_filename = None

# Публикуем твит с фото, если фото получилось
status_text = 'Температура CPU сейчас: ' + temp + " °C"
if webcam_filename:
    photo = open(webcam_filename, 'rb')
    api.update_status_with_media(media=photo, status=status_text)
    photo.close()
else:
    api.update_status(status=status_text)

Сохраните файл (Ctrl+X, Y, Enter) и сделайте его исполняемым:

sudo chmod +x SillyTweeter.py

Теперь можно протестировать вручную:

python SillyTweeter.py

Если всё настроено верно, в ваш аккаунт придёт твит с температурой и фото.

Детали по съёму температуры и фото

  • Команда /opt/vc/bin/vcgencmd measure_temp доступна на официальных образах Raspberry Pi OS. На других сборках путь или утилита может отличаться.
  • Строка разбора temp = line.split(‘=’)[1].split(“‘“)[0] извлекает число из строки вида “temp=42.0’C”.
  • Для старых или нетипичных вебкамер разрешение (640,480) может потребовать изменения. Если камера не поддерживает pygame.camera, используйте fswebcam или raspistill (для Pi Camera).

Альтернативный способ снять фото (без pygame):

sudo apt-get install fswebcam
fswebcam -r 640x480 --no-banner webcam.jpg

И затем в Python открыть webcam.jpg как файл для отправки.

Автоматизация через cron

Чтобы бот публиковал данные регулярно, запланируем задачу в cron.

Откройте crontab для root (чтобы иметь доступ к /opt/vc/bin и к устройствам):

sudo crontab -e

Добавьте строку, чтобы запускать скрипт каждый час:

0 * * * * python /home/pi/SillyTweeter/SillyTweeter.py

Объяснение: выражение 0 запускает задачу в начале каждого часа. Если хотите запускать каждые 60 минут, используйте ту же запись; запись */60 иногда неправильно интерпретируется в разных реализации cron. Для тестирования можно запускать каждую минуту:

* * * * * python /home/pi/SillyTweeter/SillyTweeter.py

Будьте осторожны: частые твиты могут привести к блокировке аккаунта или потере подписчиков.

Отладка и распространённые ошибки

  1. Ошибка аутентификации при использовании Twython: проверьте, что ключи и секреты корректны и что приложение имеет права Read and Write.
  2. Ошибка доступа к /dev/video0: убедитесь, что камера подключена и распознана командой ls /dev/video*.
ls /dev/video*
  1. pygame.camera не обнаруживает устройство: попробуйте утилиту fswebcam или проверьте, установлен ли модуль с поддержкой камеры.
  2. vcgencmd не найден: либо используется неофициальный образ, либо утилита установлена в другом месте; можно считать температуру через /sys/class/thermal/thermal_zone0/temp и делить на 1000, если такое есть.

Пример чтения из /sys:

try:
    with open('/sys/class/thermal/thermal_zone0/temp') as f:
        raw = f.read().strip()
        temp = str(int(raw) / 1000.0)
except Exception:
    temp = 'unknown'

Безопасность, приватность и правила Twitter

  • Никогда не публикуйте свои Consumer/Access ключи в публичных репозиториях. Храните их локально с правами доступа только для владельца.
  • Используйте .gitignore, если храните проект в git. Можно вынести ключи в отдельный конфигурационный файл и задать права 600.
  • Соблюдайте правила Twitter API: чрезмерный автоматический спам и повторяющийся контент могут привести к ограничению аккаунта.
  • Если вы публикуете изображения людей, убедитесь в наличии их согласия — это важно для приватности и соответствия локальным законам.

Альтернативные подходы

  • Tweepy вместо Twython: другой популярный клиент для Twitter API, совместимый с Python 3.
  • Использовать Raspberry Pi Camera (raspistill) вместо USB-камеры для лучшего качества на Raspberry Pi Camera Module.
  • Отправка только данных в закрытую систему мониторинга (InfluxDB, Prometheus) вместо публикации в публичный Twitter.

Мини-методология: что делать при сбое

  1. Проверить логи cron (обычно /var/log/syslog) на предмет ошибок вызова скрипта.
  2. Выполнить скрипт вручную от имени пользователя cron, чтобы увидеть сообщения об ошибках.
  3. Проверить доступность сети и токенов Twitter (тестовый запрос к API для проверки авторизации).
  4. Пофиксить права доступа к файлам и устройствам (chmod/chown).

Чеклист перед запуском в production

  • Создано и сохранено приложение Twitter с правами Read and Write
  • Сохранены и защищены четыре ключа API
  • Скрипт запускается вручную без ошибок
  • Вебкамера распознаётся: ls /dev/video*
  • Скрипт добавлен в crontab с нужным расписанием
  • Лимиты частоты учтены, контент не нарушает правила платформы

Типичные сценарии, когда это решение не подходит

  • Нужен строгий мониторинг и гарантированное хранение логов — лучше использовать специализированное ПО мониторинга.
  • Приватные данные или персональные фото — следует избегать публикации в открытые аккаунты.

Краткая инструкция для распространения (соцсеть / анонс)

OG-заголовок: Raspberry Pi: твитим температуру и фото каждый час OG-описание: Небольшой туториал по созданию Twitter-бота на Raspberry Pi — публикует температуру CPU и фото вебки автоматически. Короткий анонс (100–200 слов): Создайте простой Twitter-бот на Raspberry Pi, который ежечасно публикует температуру процессора и снимок с USB-вебкамеры. Полный список шагов: установка Twython и pygame, регистрация приложения в Twitter, написание Python-скрипта и планирование через cron. Подойдёт для демонстраций, обучения и простого удалённого мониторинга.

Глоссарий (1 строка)

  • OAuth: протокол авторизации, позволяющий приложениям действовать от имени пользователя без передачи пароля.

Финальное резюме

  • Проект прост для повторения: настроили зависимости, получили ключи Twitter, написали скрипт, автоматизировали через cron.
  • Обязательно защищайте ключи и учитывайте правила платформы при автоматической публикации.

Покажите результат — расскажите в комментариях, что ваш бот начал твитить!

Image credit: adafruit/flickr

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Открыть файлы ICA в Windows 10 — инструкция
Инструкции

Открыть файлы ICA в Windows 10 — инструкция

Удаление личных данных в Microsoft Office
Конфиденциальность

Удаление личных данных в Microsoft Office

Фриланс облачный инженер: как начать и что знать
Карьера

Фриланс облачный инженер: как начать и что знать

Тихая очистка диска в Windows через командную строку
Windows

Тихая очистка диска в Windows через командную строку

Подготовка к сертификации AWS: план и советы
IT

Подготовка к сертификации AWS: план и советы

Как упорядочить рабочий стол Windows
Windows

Как упорядочить рабочий стол Windows