TyresStorage — это веб-приложение для автоматического и ручного управления 18 секциями стеллажа, в которых хранятся автомобильные шины. Приложение отправляет HTTP-команды на устройства (секции) с заданным временем вращения и периодичностью, обеспечивая соблюдение требований ГОСТ по хранению шин.
- Автоматический запуск по расписанию (период задаётся в днях).
- Ручной запуск любой секции в любой момент.
- Интуитивный веб-интерфейс с крупными элементами, оптимизированный для сенсорных экранов 1024×768.
- Включение/отключение отдельных секций.
- Пропуск запусков при выключении устройства: при следующем включении система догоняет пропущенный запуск.
- Хранение состояния в JSON-файле (без БД).
- Автозапуск при включении Raspberry Pi (systemd + киоск-режим Chromium).
- C# / .NET 8 (ASP.NET Core Razor Pages)
- Bootstrap 5 (адаптивный интерфейс)
- System.Text.Json (хранение данных)
- Raspberry Pi 3 (Raspbian 10 / Linux ARM)
Опубликуйте проект как самодостаточное приложение для архитектуры linux-arm (или linux-arm64):
dotnet publish -c Release -r linux-arm --self-contained true -o ./publishСкопируйте содержимое папки publish в /home/pi/TyresStorage:
scp -r ./publish/* pi@<IP-Pi>:/home/pi/TyresStorage/chmod +x /home/pi/TyresStorage/TyresStorage
cd /home/pi/TyresStorage
./TyresStorageПриложение будет доступно по адресу http://<IP-Pi>:5000.
Создайте службу /etc/systemd/system/tyresstorage.service:
[Unit] Description=TyresStorage Device Manager After=network.target
[Service] WorkingDirectory=/home/pi/TyresStorage ExecStart=/home/pi/TyresStorage/TyresStorage Restart=always RestartSec=10 User=pi
[Install] WantedBy=multi-user.target
Включите и запустите:
sudo systemctl enable tyresstorage.service
sudo systemctl start tyresstorage.serviceСоздайте скрипт /home/pi/kiosk.sh:
#!/bin/bash
xset s noblank
xset s off
xset -dpms
unclutter -idle 0.5 -root &
chromium-browser --noerrdialogs --disable-infobars --kiosk http://localhost:5000Сделайте его исполняемым и добавьте службу kiosk.service (аналогично systemd), чтобы браузер открывался при загрузке.
-
Все элементы управления увеличены для удобства пальцевого ввода.
-
Кнопки
+/−изменяют значения и отправляют запрос без перезагрузки страницы (AJAX). -
Поддерживается разрешение 1024×768.
Файл Data/devices.json содержит массив объектов:
{
"Id": 1,
"DurationSeconds": 10,
"PeriodDays": 100,
"LastRun": "2026-07-31T17:04:29",
"NextRun": "2026-08-01T17:04:29",
"IsEnabled": true
}©️ Copyright 2026 Anton Alalaev Данное программное обеспечение и сопутствующие файлы (далее — «Программа») могут использоваться в ознакомительных, образовательных и некоммерческих целях при условии сохранения данного уведомления об авторских правах. Любое коммерческое использование Программы, включая, но не ограничиваясь: использование в коммерческих проектах, продажу, сдачу в аренду, интеграцию в коммерческие продукты, — запрещено без получения письменного разрешения автора (правообладателя). Для получения разрешения на коммерческое использование обращайтесь к автору.
ПРОГРАММА ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ.
Разработано для внутреннего использования. По вопросам доработок обращайтесь к автору.