DIY информационный дисплей на Raspberry Pi: музыка, погода и уведомления

Создайте свой собственный информационный дисплей на базе Raspberry Pi для отображения информации о воспроизведении Spotify/Sonos, прогноза погоды и других данных. Пошаговое руководство с настройкой программного обеспечения.

Не указано

Подготовка системы и компонентов

Установка Raspberry Pi OS, настройка SSH и обновление системы. Подготовка компонентов: Raspberry Pi 3B+ или новее, OLED-дисплей 1.3" SSD1351, карта памяти microSD, блок питания.

sudo apt update
sudo apt upgrade -y

Установка и настройка OLED-дисплея

Установка библиотеки luma.oled и настройка подключения дисплея к GPIO пинам Raspberry Pi. Создание конфигурационного файла для дисплея.

pip3 install luma.core luma.oled

# В display_config.py
from luma.core.serial import spi
from luma.oled.device import ssd1351

serial = spi(device=0, port=0)
device = ssd1351(serial, width=128, height=128, rotate=0)

Установка необходимых библиотек

Установка библиотек для работы с API Spotify, OpenWeatherMap, Sonos и обработки изображений.

pip3 install spotipy pyowm requests soco pillow

Настройка Spotify API

Регистрация приложения в Spotify Developer Dashboard, получение Client ID и Client Secret. Создание конфигурационного файла и скрипта для авторизации.

# В spotify_config.py
CLIENT_ID = 'ваш-client-id'
CLIENT_SECRET = 'ваш-client-secret'
REDIRECT_URI = 'http://localhost:8080/callback'
SCOPE = 'user-read-currently-playing user-read-playback-state'

Настройка API погоды

Регистрация на OpenWeatherMap и получение бесплатного API-ключа. Создание конфигурационного файла для погоды.

# В weather_config.py
API_KEY = 'ваш-api-ключ-openweathermap'
CITY = 'Ваш город'
COUNTRY = 'Ваша страна (например, RU)'

Создание основного приложения

Разработка основного приложения для отображения информации на OLED-дисплее. Оптимизация кода для работы с ограниченными ресурсами Raspberry Pi.

# Основной цикл приложения
while True:
    display_spotify_info()
    time.sleep(15)
    display_weather_info()
    time.sleep(15)

Настройка автозапуска

Создание системного сервиса для автоматического запуска приложения при загрузке Raspberry Pi.

# /etc/systemd/system/spotify-display.service
[Unit]
Description=Spotify Display Service
After=network.target

[Service]
User=pi
WorkingDirectory=/home/pi
ExecStart=/usr/bin/python3 /home/pi/display_app.py
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

Добавление Sonos и расширение функциональности

Интеграция поддержки Sonos для отображения информации о воспроизведении. Добавление отображения системной информации, новостей и других данных.

# Функция для Sonos
def display_sonos_info():
    try:
        current_track = sonos.get_current_track_info()
        if current_track['title']:
            track_name = current_track['title']
            artist_name = current_track['artist']
            # Отображение информации на дисплее
    except Exception as e:
        print(f"Ошибка отображения Sonos: {e}")