@@ -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
26341 . 🔌 Power on your MultiGeiger device
27- 2 . 📶 Connect to the WiFi access point
35+ 2 . 📶 Connect to the WiFi access point ` MultiGeiger-XXXXXX `
28363 . 🌐 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
0 commit comments