Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
7914e6b
rename
vaidy31 Oct 1, 2025
422043a
Initial commit
fresh-ops Oct 1, 2025
c2a7a89
add plate.py
7AD0VNIK Oct 1, 2025
d9d42d1
Implement server template
fresh-ops Oct 1, 2025
6971901
added dockerfile
vaidy31 Oct 1, 2025
e14b979
added dockerfile
vaidy31 Oct 1, 2025
30830b3
adding docker-compose for container EMQX
vaidy31 Oct 1, 2025
1861a5c
Implement SSE
fresh-ops Oct 1, 2025
670c763
fix __dirname
vaidy31 Oct 1, 2025
79a15d4
add file to connect beacons
7AD0VNIK Oct 1, 2025
0903dc5
some changes in beacon_connection.py
7AD0VNIK Oct 1, 2025
1154909
very unstable version but it should work
vaidy31 Oct 2, 2025
d814edf
very unstable version but it should work
vaidy31 Oct 2, 2025
5955863
add points drawing
fresh-ops Oct 2, 2025
856fa0b
fix connection with topics
vaidy31 Oct 2, 2025
ade39f4
replace previous versions of files and add esp32.py && config_esp32.py
7AD0VNIK Oct 2, 2025
f63852f
add beacons config parsing
fresh-ops Oct 2, 2025
fa7f938
add beacons end point
fresh-ops Oct 2, 2025
edd6472
added trilateration
vaidy31 Oct 2, 2025
9a2aa6c
added trilaterate
vaidy31 Oct 2, 2025
98a5be7
fixed
vaidy31 Oct 2, 2025
39145c1
fixed again. delete hardcode
vaidy31 Oct 2, 2025
d59f74d
added endpoint for reciving data
vaidy31 Oct 2, 2025
e928c19
add user drawing
fresh-ops Oct 2, 2025
6a244e2
add path recording
fresh-ops Oct 2, 2025
fdd3629
splitted logic into modules
fresh-ops Oct 3, 2025
8f5e132
add path drawing
fresh-ops Oct 3, 2025
bf70e44
remove start marker
fresh-ops Oct 3, 2025
80e73c8
Merge pull request #1 from Artemius951/develop-client
fresh-ops Oct 3, 2025
93ded87
add port configuration
fresh-ops Oct 3, 2025
134eefd
Merge pull request #2 from Artemius951/develop-client
fresh-ops Oct 3, 2025
0e30952
add client set up guide
fresh-ops Oct 3, 2025
9702e77
updated README
fresh-ops Oct 3, 2025
b95ec4c
Add files via upload
7AD0VNIK Oct 3, 2025
463e10a
Merge pull request #3 from Artemius951/develop-esp32
7AD0VNIK Oct 3, 2025
baebb06
add setup
vaidy31 Oct 3, 2025
a3d66d3
Merge pull request #4 from Artemius951/develop-server
fresh-ops Oct 3, 2025
42249d2
add setup guide
fresh-ops Oct 3, 2025
5909c29
Merge pull request #5 from Artemius951/develop
fresh-ops Oct 3, 2025
ef03781
Add files via upload
7AD0VNIK Oct 3, 2025
e95ba82
Merge pull request #6 from Artemius951/develop-esp32
7AD0VNIK Oct 3, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions Yadershiki/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Indoor navigation system
Система представляет из себя решение для определения положения в пространстве при помощи BLE маяков.
Для развёртки см. файл SETUP.md

## Работа с клиентом
Клиент представляет из сайт, где отображается карта и кнопки для управления
На карте отображены маяки(серые точки) и пользователь(зелёная точка)

Для начала записи пути нажмите на кноку "Start Recording". При этом на карте начнёт отображаться записываемый маршрут. Чтобы завершить запись нажмите на "Stop Recording". После этого станет доступна кнопка "Download Path", при нажатии на которую загружается csv файл с маршрутом
5 changes: 5 additions & 0 deletions Yadershiki/SETUP.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Разрвёртывание окружения
Чтобы развернуть окружение, следуйте инструкция в следующем порядке
1. Подготовка платы(см. SETUP_ESP32.md)
2. Подготовка клиента(см. SETUP_CLIENT.md)
3. Подготовка сервера(см. SETUP_SERVER.md)
36 changes: 36 additions & 0 deletions Yadershiki/SETUP_CLIENT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# Настройка клиента
Клиент представляет собой веб-приложение. Для сборки требуется установленный NodeJS 20.19 и выше

## 1. Подготовка окружения
Перед сборкой требуется создать .env файл корне папки клиента(в репозитории это src/client) и прописать в нём конфигурацию

```
VITE_API_URL= # укажите здесь URL API-сервера
VITE_API_PORT= # укажите здесь порт, по умолчанию используется 8080
```
**ВАЖНО**: VITE_API_URL не должен иметь в конце знак '/', так как в приложении он конкатенируется с портом

Пример файла:
```
VITE_API_URL=http://myapi.best
VITE_API_PORT=
```

Приложение использует систему сборки Vite, поэтому вы можете дополнительно сконфигурировать используя официальную документацию

## 2. Сборка приложения
Сборка происходит в 2 этапа:
1. Установка зависимостей
2. Сборка

Вы можете использовать следующие команды
```bash
npm i
npm run build
```

Готовый билд должен находиться в папке dist/

## 3. Публикация
Полученную папку dist необходимо целиком перенести в папку сервера

93 changes: 93 additions & 0 deletions Yadershiki/SETUP_ESP32.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
Этот проект позволяет использовать **ESP32** как считыватель BLE-маяков и отправлять данные о сигнале (**RSSI**) на сервер через **MQTT**.

---
### Требования
- ESP32 (с поддержкой Wi-Fi и Bluetooth)
- Thonny IDE (Python IDE с поддержкой MicroPython)
- Прошивка **MicroPython** на ESP32 (официальный сайт)
- MQTT-брокер (например, Mosquitto, EMQX или встроенный в Home Assistant)
---

## Установка прошивки на ESP32

1. Скачайте **MicroPython прошивку** для ESP32:
[MicroPython - Python for microcontrollers](https://micropython.org/download/ESP32_GENERIC/)
2. Установите утилиту `esptool.py` (если ещё не установлена):
`pip install esptool`
3. Подключите ESP32 к компьютеру и прошейте:
`esptool.py --chip esp32 --port COM7 erase_flash esptool.py --chip esp32 --port COM7 write_flash -z 0x1000 esp32-[версия].bin`

⚠️ Замените `COM7` на ваш порт и `esp32-[версия].bin` на скачанный файл.


---

## Загрузка и запуск кода в Thonny

1. Установите **Thonny**: thonny.org
2. Подключите ESP32 и выберите его порт:
- В Thonny: `Инструменты → Настройки → Интерпретатор → MicroPython (ESP32)`
3. Скопируйте файлы на плату:
- `esp32.py`
- `config_esp32.py`
4. Нажмите **Run **для запуска `esp32.py`.


---

## Настройка `config_esp32.py`

Откройте файл `config_esp32.py` и укажите свои параметры:

MQTT_BROKER = "192.168.3.26" # IP брокера
MQTT_PORT = 1883
MQTT_TOPIC = "beacons/rssi"
CLIENT_ID = "beacon_publisher_01"

WIFI_SSID = "ваш_вайфай"
WIFI_PASSWORD = "ваш_пароль"

SCAN_DURATION_MS = 1000 # время одного скана (мс)
SCAN_INTERVAL = 1 # пауза между циклами (сек)
SCAN_FREQ = 100 # частота проверки статуса (мс)

BEACON_PREFIX = "beacon_" # фильтрация по имени маяка

---

## Как работает `esp32.py`

- Подключается к Wi-Fi (данные берутся из `config_esp32.py`).
- Запускает Bluetooth-сканер и ищет устройства, начинающиеся с `BEACON_PREFIX`.
- Собирает **RSSI** для найденных маяков.
- Отправляет результат в MQTT-брокер в JSON-формате.

Пример данных, отправляемых в топик:

`[["beacon_1", -45], ["beacon_2", -67]]`

Если маяки не найдены:

`"NO_BEACONS_FOUND"`

---

## Проверка работы

1. Запустите MQTT-брокер (например, Mosquitto).
2. Подпишитесь на топик:
`mosquitto_sub -h 192.168.3.26 -t beacons/rssi`
3. Должны приходить данные в реальном времени:
`[["beacon_maxim", -34], ["beacon_matvey", -45]]`
---

## Возможные ошибки

- **"Не удалось подключиться к Wi-Fi"** → Проверьте SSID и пароль.

- **"Ошибка публикации"** → Проверьте IP MQTT-брокера и его доступность.

- **Нет маяков** → Убедитесь, что у маяков имя начинается с `BEACON_PREFIX`.


---
54 changes: 54 additions & 0 deletions Yadershiki/SETUP_SERVER.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
## Подготовка окружения

Перед запуском убедитесь, что установлены:
- **Docker**
- **Docker Compose**
- ESP32 устройства с прошитым кодом для сканирования BLE-маяков


Сборка окружения

Запуск сервисов:

docker-compose up

Проверка работы контейнеров:

docker-compose ps


Управление сервисами

# Просмотр логов приложения
docker-compose logs app -f

# Просмотр логов MQTT брокера
docker-compose logs emqx -f

# Общие логи всех сервисов
docker-compose logs -f

# Остановка всех сервисов
docker-compose down

# Полная пересборка и запуск
docker-compose down
docker-compose build --no-cache
docker-compose up -d


Тестирование MQTT

# Установка MQTT клиента
npm install -g mqtt

# Подписка на топик для мониторинга данных
mqtt sub -t 'beacons/#' -h localhost -p 1883 -v


Проверка состояния API
# Проверка здоровья приложения
curl http://localhost:8080/health

# Получение статуса буферов
curl http://localhost:8080/status
24 changes: 24 additions & 0 deletions Yadershiki/src/client/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*

node_modules
dist
dist-ssr
*.local

# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
18 changes: 18 additions & 0 deletions Yadershiki/src/client/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Yaderщики</title>
</head>
<body>
<div id="app">
<div id="controls">
<button id="record" type="button">Start Recording</button>
<button id="download" type="button" disabled>Download Path</button>
</div>
<div id="canvas"></div>
</div>
<script type="module" src="/src/main.js"></script>
</body>
</html>
Loading