Skip to content

Commit 0c8dbd5

Browse files
committed
Initial commit: OpenIPC Dashboard v2.1.0
1 parent 1a342c3 commit 0c8dbd5

17 files changed

+6728
-0
lines changed

.gitignore

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# Папки с зависимостями и сборками
2+
/node_modules
3+
/dist
4+
5+
# Логи npm
6+
npm-debug.log*
7+
yarn-debug.log*
8+
yarn-error.log*
9+
10+
# Файлы операционной системы
11+
.DS_Store
12+
Thumbs.db
13+
14+
# Файлы IDE
15+
.vscode/
16+
.idea/
17+
*.suo
18+
*.ntvs*
19+
*.njsproj
20+
*.sln
21+
*.sw?
22+
23+
# Файл с данными камер (содержит пароли!)
24+
cameras.json

build/Readme.md

Lines changed: 212 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,212 @@
1+
Отлично! Создание документации — важный этап, который поможет пользователям (и вам в будущем) разобраться с приложением. Давайте составим хорошую и понятную документацию.
2+
3+
Я напишу ее в формате Markdown, который легко конвертируется в HTML, PDF или просто читается как текст. Вы можете сохранить это в файл README.md в корне вашего проекта. Это стандартная практика для проектов на GitHub и не только.
4+
5+
OpenIPC Dashboard v2.1.0 - Руководство пользователя
6+
Оглавление
7+
8+
О приложении
9+
10+
Установка
11+
12+
Первый запуск и интерфейс
13+
14+
Основное окно
15+
16+
Сетка для видеопотоков
17+
18+
Работа с камерами
19+
20+
Добавление камеры
21+
22+
Редактирование камеры
23+
24+
Просмотр видео
25+
26+
Контекстное меню камеры
27+
28+
Расширенные функции
29+
30+
SSH Терминал
31+
32+
Файловый менеджер (SCP)
33+
34+
Настройки камеры (Majestic)
35+
36+
Устранение неисправностей
37+
38+
1. О приложении
39+
40+
OpenIPC Dashboard — это настольное приложение для управления камерами на базе прошивки OpenIPC. Оно предоставляет удобный интерфейс для просмотра видеопотоков, администрирования настроек, работы с файловой системой и выполнения команд через SSH.
41+
42+
Ключевые возможности:
43+
44+
Просмотр до 4 видеопотоков одновременно в настраиваемой сетке.
45+
46+
Переключение между основным (HD) и дополнительным (SD) потоком.
47+
48+
Полноэкранный режим для детального просмотра.
49+
50+
Встроенный SSH-клиент для прямого доступа к командной строке камеры.
51+
52+
Встроенный файловый менеджер для загрузки и скачивания файлов по протоколу SCP.
53+
54+
Графический интерфейс для редактирования всех настроек прошивки Majestic.
55+
56+
Мониторинг статуса и температуры процессора камеры.
57+
58+
2. Установка
59+
60+
Для установки приложения на Windows:
61+
62+
Скачайте установочный файл OpenIPC Dashboard Setup X.X.X.exe.
63+
64+
Запустите файл и следуйте инструкциям на экране. Вы можете выбрать папку для установки.
65+
66+
После установки ярлык приложения появится на рабочем столе и в меню "Пуск".
67+
68+
3. Первый запуск и интерфейс
69+
Основное окно
70+
71+
Интерфейс приложения разделен на две основные части:
72+
73+
Левая боковая панель: Здесь находится список всех добавленных вами камер.
74+
75+
Основная область: Сетка для отображения видеопотоков.
76+
77+
<!-- Замените на актуальный скриншот, если нужно -->
78+
79+
80+
Элементы боковой панели:
81+
82+
Список камер: Каждая камера в списке отображает:
83+
84+
Индикатор статуса: Зеленый — камера онлайн, серый — оффлайн.
85+
86+
Название и IP-адрес: Основная информация для идентификации.
87+
88+
Температура: Температура процессора камеры (если доступна).
89+
90+
Кнопка "Добавить камеру": Открывает окно для добавления новой камеры.
91+
92+
Кнопка "Аварийный сброс потоков": Принудительно завершает все процессы ffmpeg на вашем компьютере. Используйте, если видеопотоки "зависли" и не закрываются штатно.
93+
94+
Сетка для видеопотоков
95+
96+
В основной области расположена сетка 2x2.
97+
98+
Пустая ячейка: Нажмите на камеру в списке слева, чтобы начать трансляцию в первой свободной ячейке.
99+
100+
Активная ячейка: Отображает видеопоток. В углах ячейки находятся:
101+
102+
В левом нижнем углу: Статистика потока (FPS и битрейт).
103+
104+
В правом нижнем углу: Название камеры и качество потока (HD/SD).
105+
106+
В правом верхнем углу (при наведении): Кнопки для управления звуком и закрытия потока.
107+
108+
Полноэкранный режим: Дважды кликните на ячейку с видео, чтобы развернуть ее на весь экран и переключиться на HD-поток. Повторный двойной клик вернет сетку в обычный режим.
109+
110+
4. Работа с камерами
111+
Добавление камеры
112+
113+
Нажмите зеленую кнопку "Добавить камеру" на боковой панели.
114+
115+
В открывшемся модальном окне заполните поля:
116+
117+
Название: Любое удобное вам имя (например, "Камера в коридоре").
118+
119+
IP Адрес: IP-адрес камеры в вашей локальной сети.
120+
121+
RTSP Порт: Обычно 554.
122+
123+
Логин: Стандартный логин для OpenIPC — root.
124+
125+
Пароль: Ваш пароль от SSH/веб-интерфейса.
126+
127+
Поток: Выберите, какой поток открывать по умолчанию при клике на камеру в списке (рекомендуется "Дополнительный (Низкое)" для экономии ресурсов).
128+
129+
Нажмите "Сохранить". Камера появится в списке слева.
130+
131+
Редактирование камеры
132+
133+
Нажмите правой кнопкой мыши на нужную камеру в списке.
134+
135+
В контекстном меню выберите "Редактировать".
136+
137+
Внесите изменения в открывшемся окне и нажмите "Сохранить".
138+
139+
Просмотр видео
140+
141+
Начать просмотр: Просто кликните один раз на камеру в списке. Видео откроется в первой свободной ячейке сетки.
142+
143+
Остановить просмотр: Наведите курсор на окно с видео и нажмите на значок "×" в правом верхнем углу.
144+
145+
Контекстное меню камеры
146+
147+
Клик правой кнопкой мыши по камере в списке открывает меню с дополнительными действиями:
148+
149+
🗂️ Файловый менеджер: Открывает двухпанельный менеджер файлов.
150+
151+
💻 SSH Терминал: Открывает окно терминала с прямым доступом к камере.
152+
153+
⚙️ Настройки: Открывает окно для редактирования всех параметров прошивки Majestic.
154+
155+
✏️ Редактировать: Редактирование данных подключения к камере.
156+
157+
🗑️ Удалить: Удаляет камеру из списка приложения.
158+
159+
5. Расширенные функции
160+
SSH Терминал
161+
162+
Открывает полноценный терминал для выполнения любых команд на камере.
163+
164+
Копирование: Ctrl+Shift+C.
165+
166+
Вставка: Ctrl+Shift+V.
167+
168+
Файловый менеджер (SCP)
169+
170+
Предоставляет двухпанельный интерфейс для управления файлами.
171+
172+
Левая панель: Файлы на вашем компьютере.
173+
174+
Правая панель: Файлы на камере.
175+
176+
Навигация: Двойной клик по папке для входа, двойной клик по .. для выхода на уровень вверх.
177+
178+
Кнопки управления:
179+
180+
▲ Загрузить: Копирует выбранный локальный файл на камеру в текущую удаленную папку.
181+
182+
▼ Скачать: Копирует выбранный файл с камеры на ваш компьютер (путь сохранения будет предложено выбрать).
183+
184+
Новая папка: Создает новую папку на камере.
185+
186+
Удалить: Удаляет выбранный файл или пустую папку на камере.
187+
188+
Обновить: Обновляет списки файлов на обеих панелях.
189+
190+
Настройки камеры (Majestic)
191+
192+
Это окно позволяет изменять абсолютно все параметры прошивки, которые доступны в файле majestic.yaml.
193+
194+
Настройки сгруппированы по вкладкам, соответствующим секциям конфигурационного файла.
195+
196+
После внесения изменений нажмите "Сохранить".
197+
198+
Для применения некоторых настроек может потребоваться перезапуск сервиса Majestic. Для этого используйте кнопку "Перезапустить Majestic".
199+
200+
6. Устранение неисправностей
201+
202+
Проблема: Видеопоток не запускается или "завис".
203+
204+
Решение: Убедитесь, что камера доступна (зеленый индикатор). Попробуйте закрыть поток и открыть заново. Если не помогает, используйте кнопку "Аварийный сброс потоков".
205+
206+
Проблема: Файловый менеджер или SSH-терминал не подключаются.
207+
208+
Решение: Проверьте правильность IP-адреса, логина и пароля в настройках камеры (через меню "Редактировать"). Убедитесь, что SSH-сервер на камере включен и доступен.
209+
210+
Проблема: После изменения настроек в Majestic ничего не изменилось.
211+
212+
Решение: Нажмите кнопку "Перезапустить Majestic" в окне настроек. Если это не помогло, подключитесь по SSH и проверьте логи (logread).

build/icon.ico

422 KB
Binary file not shown.

file-manager.html

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
<!DOCTYPE html>
2+
<html>
3+
<head>
4+
<meta charset="UTF-8">
5+
<title>Файловый менеджер</title>
6+
<style>
7+
:root {
8+
--bg-color: #1e1e1e; --text-color: #d4d4d4; --border-color: #333;
9+
--pane-bg: #252526; --header-bg: #3c3c3c; --selected-bg: #094771;
10+
--button-bg: #0e639c; --button-hover-bg: #1177bb;
11+
--progress-bar-bg: #5a5a5a; --progress-bar-fill: #0e639c;
12+
}
13+
body, html { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; margin: 0; padding: 0; height: 100%; width: 100%; overflow: hidden; background-color: var(--bg-color); color: var(--text-color); font-size: 14px; }
14+
.container { display: flex; flex-direction: column; height: 100vh; }
15+
.panes-container { display: flex; flex-grow: 1; overflow: hidden; }
16+
.pane { width: 50%; display: flex; flex-direction: column; background-color: var(--pane-bg); border: 1px solid var(--border-color); }
17+
.pane:first-child { border-right: none; }
18+
.pane-header { background-color: var(--header-bg); padding: 5px; display: flex; align-items: center; border-bottom: 1px solid var(--border-color); flex-shrink: 0; }
19+
.pane-header h3 { margin: 0; font-size: 1em; flex-grow: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
20+
.pane-header .path-input { flex-grow: 1; background-color: var(--bg-color); border: 1px solid var(--border-color); color: var(--text-color); padding: 4px; font-size: 13px; margin-left: 10px; }
21+
.file-list { list-style: none; padding: 0; margin: 0; overflow-y: auto; flex-grow: 1; }
22+
.file-list li { padding: 5px 10px; cursor: pointer; display: flex; align-items: center; border-bottom: 1px solid var(--border-color); }
23+
.file-list li:hover { background-color: #3a3a3a; }
24+
.file-list li.selected { background-color: var(--selected-bg); }
25+
.file-list .icon { margin-right: 8px; width: 18px; text-align: center; }
26+
.file-list .file-size { margin-left: auto; color: #888; }
27+
.controls { padding: 8px; display: flex; justify-content: center; gap: 10px; border-top: 1px solid var(--border-color); flex-shrink: 0; }
28+
.controls button { background-color: var(--button-bg); color: white; border: none; padding: 8px 15px; border-radius: 4px; cursor: pointer; }
29+
.controls button:hover { background-color: var(--button-hover-bg); }
30+
.controls button:disabled { background-color: #555; cursor: not-allowed; }
31+
.status-bar { padding: 5px 10px; background-color: var(--header-bg); font-size: 12px; height: 22px; line-height: 22px; flex-shrink: 0; display: flex; align-items: center; }
32+
.progress-bar-container { width: 200px; height: 16px; background-color: var(--progress-bar-bg); border-radius: 3px; overflow: hidden; display: none; margin-left: auto;}
33+
.progress-bar-fill { width: 100%; height: 100%; background-color: var(--progress-bar-fill); animation: pulse 2s infinite; }
34+
@keyframes pulse {
35+
0% { opacity: 0.7; }
36+
50% { opacity: 1; }
37+
100% { opacity: 0.7; }
38+
}
39+
</style>
40+
</head>
41+
<body>
42+
<div class="container">
43+
<div class="panes-container">
44+
<div class="pane" id="local-pane">
45+
<div class="pane-header">
46+
<h3>Локально</h3>
47+
<input type="text" id="local-path" class="path-input">
48+
</div>
49+
<ul class="file-list" id="local-file-list"></ul>
50+
</div>
51+
<div class="pane" id="remote-pane">
52+
<div class="pane-header">
53+
<h3>Камера: <span id="camera-name"></span></h3>
54+
<input type="text" id="remote-path" class="path-input" value="/">
55+
</div>
56+
<ul class="file-list" id="remote-file-list"></ul>
57+
</div>
58+
</div>
59+
<div class="controls">
60+
<button id="btn-upload" title="Загрузить выбранный локальный файл на камеру">▲ Загрузить</button>
61+
<button id="btn-download" title="Скачать выбранный файл с камеры">▼ Скачать</button>
62+
<button id="btn-new-folder">Новая папка</button>
63+
<button id="btn-delete">Удалить</button>
64+
<button id="btn-refresh">Обновить</button>
65+
</div>
66+
<div class="status-bar">
67+
<span id="status-text">Готов</span>
68+
<div class="progress-bar-container" id="progress-bar-container">
69+
<div class="progress-bar-fill" id="progress-bar-fill"></div>
70+
</div>
71+
</div>
72+
</div>
73+
<script src="./file-manager.js"></script>
74+
</body>
75+
</html>

0 commit comments

Comments
 (0)