Skip to content

Commit 09bd126

Browse files
committed
docs: Update README with enhanced features and security details; add new screenshots
1 parent 920dc48 commit 09bd126

6 files changed

Lines changed: 89 additions & 19 deletions

README.md

Lines changed: 89 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -7,42 +7,108 @@ The MultiGeiger is an **ESP32-based radioactivity measurement device** designed
77

88
## ✨ Key Features
99

10-
- 📊 **Radiation Measurement** - Accurate detection using Geiger-Müller tubes with real-time CPM/CPS display
11-
- 🌐 **Modern Web Interface** - Responsive dashboard with live updates and easy configuration
10+
- 📊 **Radiation Measurement** - Accurate detection using Geiger-Müller tubes with real-time CPM/CPS/µSv/h display
11+
- 🌐 **Modern Web Interface** - Single-page application (SPA) with live updates and responsive design
12+
- 🔐 **Secure Access** - Session-based authentication protects configuration and OTA updates
1213
- 📡 **Multiple Connectivity** - WiFi, LoRaWAN/TTN, BLE, MQTT with TLS support
13-
- 🌡️ **Environmental Sensors** - Optional temperature, humidity, and pressure monitoring (BMP280/BME280/BME680)
14-
- ☁️ **Cloud Integration** - MQTT + TTN/LoRaWAN forwarding; direct HTTP uploads to sensor.community/madavi removed
14+
- 🌡️ **Environmental Sensors** - Optional temperature, humidity, pressure, and air quality monitoring (BMP280/BME280/BME680)
15+
- ☁️ **Cloud Integration** - MQTT + TTN/LoRaWAN forwarding with OpenSenseMap compatibility
16+
-**Time Synchronization** - Automatic browser-to-device time sync for accurate timestamps
1517
- 🔋 **Low Power Design** - Optimized for battery operation with deep sleep support
1618

1719
## 🚀 Quick Start
1820

19-
**Default WiFi Credentials:**
21+
**Default Credentials:**
2022

23+
WiFi Access Point:
2124
- SSID: `MultiGeiger-XXXXXX` (last 6 digits of MAC address)
2225
- Password: `ESP32Geiger`
2326

27+
Web Interface Login:
28+
- Username: `admin`
29+
- Password: `admin`
30+
- ⚠️ **Change these immediately in the Settings page!**
31+
2432
**Steps:**
2533

2634
1. 🔌 Power on your MultiGeiger device
27-
2. 📶 Connect to the WiFi access point
35+
2. 📶 Connect to the WiFi access point `MultiGeiger-XXXXXX`
2836
3. 🌐 Open http://192.168.4.1 in your browser
29-
4. ⚙️ Configure your settings via the web interface
37+
4. 📊 View live data on the Dashboard (no login required)
38+
5. ⚙️ Click "Settings" → Login with `admin`/`admin` → Configure device
39+
6. 🔐 **Important:** Change password in Settings → Authorization section!
3040

3141
## 🖥️ Web Interface
3242

33-
The MultiGeiger features a **modern, mobile-optimized web interface** with a clean, responsive design:
43+
The MultiGeiger features a **modern, single-page web application (SPA)** with session-based authentication, real-time updates, and a mobile-optimized design:
44+
45+
| **Dashboard** | **Status** | **Settings** |
46+
|:-------------:|:----------:|:------------:|
47+
| ![Dashboard](docs/images/screenshot-browser-dashboard.png) | ![Status](docs/images/screenshot-browser-status.png) | ![Settings](docs/images/screenshot-browser-settings.png) |
48+
| Real-time monitoring:<br>• 📈 Live radiation levels<br>• 🌡️ Environmental data<br>• ⏱️ Uptime & system info<br>• ⚠️ HV error warnings | Connectivity status:<br>• 📶 WiFi signal strength<br>• 📡 MQTT connection<br>• 🛰️ LoRa transmissions<br>• 📲 BLE advertising | Secure configuration:<br>• 🔐 Login-protected access<br>• 📶 WiFi setup<br>• 📡 MQTT & LoRa credentials<br>• ⚙️ Device settings |
49+
50+
### Key Features
3451

35-
| **Home Dashboard** | **Configuration Page** |
36-
|:------------------:|:----------------------:|
37-
| ![MultiGeiger Web Dashboard](docs/images/screenshot-browser-home.png) | ![MultiGeiger Configuration Interface](docs/images/screenshot-browser-config.png) |
38-
| Real-time monitoring with:<br>• 📈 Live radiation levels (CPM, CPS, µSv/h)<br>• 🌡️ Environmental data<br>• 📊 Historical graphs<br>• 🔔 Status indicators | Easy setup with collapsible sections:<br>• 📶 WiFi configuration<br>• 📡 MQTT settings (with TLS)<br>• 🛰️ LoRaWAN/TTN credentials<br>• ☁️ Data platform integration |
52+
- 🔐 **Session Authentication** - Secure login with HttpOnly cookies (30min session timeout)
53+
- 🔄 **Live Updates** - Real-time polling (2s interval) for instant feedback
54+
-**Time Sync** - Automatic browser-to-device time synchronization
55+
- 🎨 **Modern UI** - Clean, responsive design built with vanilla JavaScript (no frameworks!)
56+
- 📱 **Mobile-First** - Touch-friendly interface optimized for smartphones and tablets
57+
- 🧪 **Mock API** - Local development mode with simulated device data
3958

4059
**Access Points:**
4160

4261
- AP Mode: http://192.168.4.1/
4362
- Network Mode: http://multigeiger.local/ (mDNS)
4463
- Direct IP: http://\<device-ip\>/
4564

65+
**Default Login:**
66+
- Username: `admin`
67+
- Password: `admin`
68+
- ⚠️ **Change these immediately after first setup!**
69+
70+
## 🔐 Security & Authentication
71+
72+
### Session-Based Authentication
73+
74+
Protected endpoints (configuration, OTA updates) require login:
75+
76+
- **Session Management**: HttpOnly cookies with 30-minute sliding expiration
77+
- **CSRF Protection**: SameSite=Lax cookie attribute
78+
- **AP Mode**: Authentication skipped (WiFi password provides access control)
79+
- **Default Credentials**: `admin` / `admin` (⚠️ **Change immediately!**)
80+
81+
### Protected Endpoints
82+
83+
- `/config` - Configuration page
84+
- `/api/config` - Configuration API (GET/POST)
85+
- `/api/config/ping` - Heartbeat for session keep-alive
86+
- `/update` - OTA firmware upload
87+
88+
### Security Best Practices
89+
90+
1.**Change default password** immediately after first setup
91+
2.**Use strong credentials** (min. 8 characters, mixed case + numbers)
92+
3.**Enable WiFi encryption** (WPA2 or better)
93+
4. ⚠️ **HTTP only** - ESP32 doesn't support HTTPS (use VPN for remote access)
94+
5. 🔒 **AP Mode Security** - Strong AP password acts as first authentication layer
95+
96+
### API Access
97+
98+
**Login:**
99+
```bash
100+
curl -X POST http://multigeiger.local/api/auth/login \
101+
-H "Content-Type: application/json" \
102+
-d '{"username":"admin","password":"admin"}' \
103+
-c cookies.txt
104+
```
105+
106+
**Authenticated Request:**
107+
```bash
108+
curl http://multigeiger.local/api/config \
109+
-b cookies.txt
110+
```
111+
46112
## 📡 Connectivity Options
47113

48114
### WiFi 📶
@@ -227,13 +293,17 @@ MultiGeiger/
227293
│ │ └── mqtt/ # MQTT client
228294
│ ├── sensors/ # Geiger tube, BMP280/BME280/BME680
229295
│ └── main.cpp # Entry point
230-
├── web/ # Web interface
231-
│ ├── index.html # Vite entry (Dashboard + Config + OTA)
232-
│ ├── src/ # JS/CSS sources
233-
│ │ ├── main.js
234-
│ │ ├── app.js
235-
│ │ └── style.css
236-
│ └── public/mock/api.js # Mock-API für lokale Entwicklung
296+
├── web/ # Web interface (Single-Page Application)
297+
│ ├── index.html # SPA entry point (Dashboard + Status + Settings)
298+
│ ├── config.html # Configuration page (legacy, redirects to index.html)
299+
│ ├── src/ # JavaScript/CSS sources
300+
│ │ ├── main.js # Entry point & initialization
301+
│ │ ├── app.js # Main application class (MultiGeigerApp)
302+
│ │ └── style.css # Responsive UI styles
303+
│ ├── public/ # Static assets
304+
│ │ └── mock/api.js # Mock API for local development
305+
│ ├── vite.config.js # Vite build configuration
306+
│ └── package.json # Web dependencies
237307
├── docs/ # Sphinx documentation
238308
│ ├── source/ # reStructuredText files
239309
│ ├── images/ # Screenshots
-65.1 KB
Binary file not shown.
63.1 KB
Loading
-66.2 KB
Binary file not shown.
63.8 KB
Loading
78.7 KB
Loading

0 commit comments

Comments
 (0)