Разработка / модернизация ПО для рекламных видеостоек на Raspberry Pi 3 B
Бюджет: предлагайте свои варианты за доработку существующего ПО и разработку нового ПО.
1. Цель и оборудование
Разработать или обновить ПО для автономного круглосуточного показа рекламных видеороликов и изображений на видеостойках. Оборудование: Raspberry Pi 3 Model B (1 ГБ RAM), Linux (Raspberry Pi OS или совместимая ОС), карта microSD, телевизор/монитор по HDMI, интернет через Wi-Fi или Ethernet. Без обязательной замены оборудования.
2. Существующая система
Около шести лет назад было создано ПО на основе Pi Presents (https://pipresents.wordpress.com/2021/04/10/beep-has-updated-video-and-web-tracks-in-version-1-4-5/). Оно устарело: не работает синхронизация с Dropbox, Google Drive и Яндекс.Диском. Варианты: (1) обновить ОС, библиотеки, авторизацию и синхронизацию; (2) разработать новое ПО. Просим оценить оба подхода по цене, срокам и рискам. Старую систему и образ microSD предоставим.
3. Автозапуск и показ рекламы
При подаче питания Raspberry Pi автоматически загружает Linux, запускает проигрыватель, отправляет команду включения телевизора и выбора HDMI-входа через HDMI-CEC (если телевизор поддерживает), и начинает показ. Реклама воспроизводится циклически, на полном экране, без курсора и системных окон, с минимальными паузами. Автовосстановление при сбоях и отключениях питания. Работа 24/7.
Форматы: MP4 (H.264), JPG/JPEG, PNG; разрешение до 1920 × 1080 в пределах возможностей устройства. Поддержка горизонтальной и вертикальной ориентации экрана. Видео воспроизводится полностью. Показ изображения по умолчанию — 10 секунд; пользователь может указать любое положительное число секунд. Значение сохраняется после перезагрузки. Желательны громкость и сортировка по имени.
4. Подключение облака через Chromium
Поддержать выбор облачного хранилища: Яндекс.Диск, Облако Mail, Google Drive, Dropbox. Дополнительно, при технической возможности, СберДиск и другие российские облака. Исполнитель подтверждает техническую поддержку сервисов.
Первоначальная настройка:
Выбрать облачное хранилище в интерфейсе программы.
Система автоматически открывает Chromium на официальной странице авторизации сервиса. Пользователь входит в аккаунт и при необходимости подтверждает доступ приложению. Пароли в ПО не хранить; использовать OAuth/токены или разрешённый способ.
После авторизации пользователь возвращается в настройки и указывает название или путь к папке в облаке, откуда загружать рекламу. Желательно выбирать папку из списка.
Пользователь нажимает кнопку «Запуск показа рекламы». Начинается первая синхронизация, файлы скачиваются на microSD, затем запускается показ. Если уже есть локальная реклама, она продолжает воспроизводиться во время загрузки.
Настройки аккаунта и папки сохраняются. Повторный вход не требуется, пока действует доступ.
5. Синхронизация файлов
Основной рекомендуемый инструмент — Rclone, предназначенный для облачных хранилищ. Rsync допустим для совместимых файловых серверов/источников; другие решения — с обоснованием исполнителя.
Система каждые 15 минут в фоновом режиме проверяет выбранную облачную папку, сравнивает её с локальным содержимым, скачивает только новые или изменённые файлы, исключает удалённые из плейлиста и обновляет рекламу после успешной загрузки. Предусмотреть кнопку «Синхронизировать сейчас».
Требования:
Никакой остановки текущего показа при проверке и скачивании; без чёрного экрана и зависаний.
Не воспроизводить недокачанные файлы. Перед переключением проверять успешность загрузки; применить безопасную смену плейлиста.
При ошибках связи, авторизации или обновления продолжать показ предыдущего исправного комплекта. Ошибку доступа к облаку нельзя считать командой удалить все локальные файлы.
Удалённые из облака файлы удалять локально только после успешной проверки обновления; не допускать пустого плейлиста из-за случайной ошибки.
Контролировать свободное место на microSD и сокращать лишнюю запись на карту.
6. Работа без интернета
Все рекламные файлы сохраняются на microSD. При отключении сети реклама продолжает показываться без ограничений; программа локально ведёт статистику и сохраняет неотправленные письма. После восстановления интернета синхронизация и отправка ожидающих отчётов возобновляются автоматически.
7. Скриншоты и статистика по email
Скриншоты — дважды в день: в 12:00 и 17:00. Это снимки фактического содержимого рекламного экрана в момент создания, а не произвольные картинки из каталога. Время можно изменить в настройках.
Статистика — один раз в день, в 12:00, за предыдущие календарные сутки (с 00:00 до 24:00 по местному времени видеостойки). В статистике: идентификатор стойки, отчётная дата, список файлов, количество фактических запусков/показов каждого, суммарная продолжительность, состояние сети, время последней синхронизации и ошибки.
Расписание писем: в 12:00 — одно письмо со скриншотом и статистикой за вчера; в 17:00 — отдельное письмо только со скриншотом. Получатель, расписание и настройки отправки задаются в интерфейсе; нужна кнопка тестового письма. Формат статистики — удобное HTML-письмо и/или CSV. При отсутствии сети письма отправляются после её восстановления.
8. Часовой пояс
Пользователь выбирает город или часовой пояс конкретной стойки, например Москва (Europe/Moscow, UTC+3), Екатеринбург (Asia/Yekaterinburg, UTC+5), Чита (Asia/Chita, UTC+9), Владивосток (Asia/Vladivostok, UTC+10). Все расписания и периоды статистики рассчитываются по времени выбранного города. Для Читы — 12:00 и 17:00 по времени Читы. Предусмотреть синхронизацию системного времени через NTP и сохранение настроек после перезагрузки.
9. Интерфейс
Простой русскоязычный интерфейс, доступный локально с мышью и клавиатурой, с разделами:
Индикатор наличия интернета и состояния облака.
«Настройка Wi-Fi»: поиск сетей, выбор, ввод пароля, подключение.
Выбор облака, авторизация через Chromium, выбор папки, дата последней синхронизации.
«Запуск показа рекламы», «Синхронизировать сейчас».
Время показа картинок (по умолчанию 10 секунд), ориентация, громкость.
Email, время скриншотов, статистика, часовой пояс и тестовое письмо.
Статус проигрывателя, версия ПО, свободное место на microSD.
Во время рекламы интерфейс скрыт. Chromium не должен постоянно работать после настройки. Веб-интерфейс в локальной сети — желательно.
10. Надёжность и тиражирование
Автовосстановление после сбоев и отключений питания; защита от повреждённых файлов, логирование ошибок, безопасное хранение токенов, экономное использование RAM/CPU и ресурса microSD. Работа без обязательного платного внешнего сервера. ПО должно устанавливаться на другие Raspberry Pi 3 B из готового образа microSD. У каждой стойки — отдельные настройки облака, папки, Wi-Fi, email и часового пояса. Централизованная панель управления не требуется.
11. Приёмка и результаты
Проверка на реальном Raspberry Pi 3 B: автозапуск; HDMI-CEC на совместимом телевизоре; циклический показ MP4/JPEG/PNG; 10 секунд по умолчанию и изменение времени; вход через Chromium и выбор папки; первая и последующие синхронизации каждые 15 минут без остановки показа; корректное обновление файлов; работа без интернета; письма со скриншотами в 12:00 и 17:00; статистика только в 12:00 за вчера; работа по часовым поясам Москвы и Читы; Wi-Fi; восстановление после отключения питания; непрерывный тест 72 часа. Каждое согласованное облако тестируется отдельно.
Передать ПО, образ microSD, исходный код, инструкции по настройке и обновлению. Права на коммерческое использование и тиражирование. Желательная гарантия — 30 дней.
В отклике просим указать: опыт с Raspberry Pi/Linux/Digital Signage; возможность модернизации старого ПО; предлагаемый стек (включая Rclone/Rsync); поддерживаемые облака; стоимость и сроки модернизации и новой разработки; условия передачи кода и поддержки.
Регистрация