https://github.com/focus04/esp32-ble-fetcher
ESP32 project that connects to the PIA mobile app via BLE and fetches data from "The Wolf Among Us" API endpoints to send to the connected device
https://github.com/focus04/esp32-ble-fetcher
Last synced: 9 months ago
JSON representation
ESP32 project that connects to the PIA mobile app via BLE and fetches data from "The Wolf Among Us" API endpoints to send to the connected device
- Host: GitHub
- URL: https://github.com/focus04/esp32-ble-fetcher
- Owner: Focus04
- Created: 2025-05-06T06:23:14.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-05-06T07:05:22.000Z (about 1 year ago)
- Last Synced: 2025-05-06T08:24:22.880Z (about 1 year ago)
- Language: C++
- Size: 3.91 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# BLE API Fetcher
This ESP32 project connects to the PIA mobile app via Bluetooth Low Energy (BLE) and fetches character data from "The Wolf Among Us" API endpoints to send to the connected device.
## Key Features
- BLE connectivity with custom service and characteristics
- WiFi network scanning and connection handling
- Two API endpoints integration:
- Character list fetching
- Detailed character information
- JSON data parsing and transmission
- Team identification (Team A35) in all responses
## Hardware Requirements
- ESP32 development board
- USB cable for programming and power
- Mobile device with BLE support (for the PIA app)
## Software Requirements
- Arduino IDE with ESP32 support or VSC with the PlatformIO extension
- Required libraries:
- `WiFi.h`
- `HTTPClient.h`
- `ArduinoJson.h`
- `BLEDevice.h`
- `BLEUtils.h`
- `BLEServer.h`
## Installation
- Clone this repository
- Open `main.cpp` in Arduino IDE or PlatformIO
- Install required libraries listed above
- Upload to your ESP32
## BLE Service Structure
- **Device Name:** `API_Fetcher`
- **Service UUID:** `1b2e4970-7e52-43ed-93ee-7dd01880e8b3`
- **Characteristic UUID:** `bd104210-8851-42d2-a610-3548f79dad88`
- **Properties:** `READ`, `WRITE`, `NOTIFY`
## API Endpoints
- Character list: `http://proiectia.bogdanflorea.ro/api/the-wolf-among-us/characters`
- Character details (append character ID): `http://proiectia.bogdanflorea.ro/api/the-wolf-among-us/character?id=`
## Supported BLE Commands
The ESP32 responds to the following JSON actions received via BLE:
- `getNetworks` - Scans and returns available WiFi networks
- `connect` - Connects to specified WiFi network (requires ssid and password)
- `getData` - Fetches and returns character list
- `getDetails` - Fetches detailed character information (requires character id)
## Usage Flow
- ESP32 boots and starts BLE advertising
- Mobile app connects to device `API_Fetcher`
- App can
- Request WiFi networks list
- Send WiFi credentials to connect to a network
- Request character data
- Request specific character details
- ESP32 processes requests and sends responses via BLE notifications
## Code Structure
The main functionality is implemented in `main.cpp` with:
- WiFi connection handling
- BLE server setup with callbacks
- Characteristic callback handler for processing requests
- HTTP client for API communication
- JSON parsing and response generation
## Response Examples
### WiFI Network Response
```json
{
"ssid": "MyWiFi",
"strength": -65,
"encryption": 3,
"teamId": "A35"
}
```
### Character Data Response
```json
{
"id": "28",
"name": "Nerissa",
"image": "/path/to/image.jpg",
"teamId": "A35"
}
```
### Character Details Response:
```json
{
"name": "Nerissa",
"image": "/path/to/image.jpg",
"description": "Nerissa's story...",
"teamId": "A35"
}
```
## Troubleshooting
- Connection issues: Ensure ESP32 is powered properly and in range
- WiFi problems: Verify credentials and network availability
- API failures: Check if endpoints are accessible
- Serial monitor: Use 115200 baud for debug output
## Team Members
- [Focus04](https://github.com/Focus04)
- [Lucas](https://github.com/lookasdev)