An advanced IoT notification and monitoring system that supports multi-board configurations, cellular/4G connectivity, camera with photo capture, GPS tracking, and environmental sensing. Monitor up to 4 inputs simultaneously and receive notifications via Pushbullet, Email, Telegram, or SMS.
- π‘οΈ BMP180 Environmental Sensor - Temperature and pressure monitoring
- π Live Sensor Readings - Real-time temperature, pressure, and altitude in web interface
- π Sensor Data in Notifications - Automatic environmental data appended to alerts
- π§ Configurable I2C Pins - Flexible GPIO pin assignment for sensor connection
- βοΈ Dual Units - Metric and imperial units (Β°C/Β°F, hPa/inHg, m/ft)
- πΆ Cellular/4G Support - SIM7670G modem integration for mobile connectivity
- π± SMS Notifications - Send alerts via text message
- π Intelligent Connection Modes - WiFi Only, Cellular Only, or WiFi with Cellular Backup
- π‘ HTTP over Cellular - Pushbullet and Telegram over mobile network
- π Cellular Status Monitoring - Operator name and signal strength display
- βοΈ Per-Service Connection Mode - Configure connection preference for each notification service
- π Configurable APN - Support for various mobile carriers
- ποΈ Multi-Board Support - Three board configurations (Generic ESP32-S3, Waveshare SIM7670G, Freenove CAM)
- π· OV2640 Camera Integration - Capture photos when inputs trigger
- πΈ Photo Attachments - Include images in Email and Telegram notifications
- πΎ SD Card Storage - Save photos to SD card (1-bit and 4-bit modes)
- π°οΈ GPS/GNSS Positioning - Include location coordinates in notifications
- πΊοΈ Per-Input GPS/Camera - Enable photo capture and GPS per input independently
- ποΈ Board-Specific Optimization - Safe GPIO pin defaults based on board type
- β WiFi Network Scanner - Scan and select networks during setup
- β WiFi Setup Mode - Access Point for first-time configuration (no code editing!)
- β System Logs - Web-based log viewer with 100-entry circular buffer
- β Multi-input Support - Monitor up to 4 switches independently
- β WiFi Auto-Reconnection - Automatic recovery from network drops
- β Watchdog Timer - Prevents system hangs and auto-recovers from crashes
- β Web Authentication - Password-protected configuration interface
- β Non-blocking Operations - No blocking delays for smooth operation
- β Notification Retry - Failed notifications auto-retry up to 3 times
- β Rate Limiting - Prevents notification spam (5s minimum interval per input)
- β Test Buttons - Test each notification service from web interface
- β Timezone Support - Easy timezone selection (UTC-12 to UTC+14)
- β ArduinoJson - Secure JSON handling prevents injection attacks
- β HTML Encoding - XSS protection for user-supplied content
- ESP32-S3 development board (any variant)
- Physical switch or relay (for input monitoring)
- USB cable for programming
Option 1: Generic ESP32-S3 (WiFi only)
- Standard ESP32-S3 DevKit or similar
- WiFi-only notifications
- Cost-effective for basic monitoring
Option 2: ESP32-S3-SIM7670G-4G (Waveshare)
- Integrated SIM7670G cellular modem
- OV2640 camera module
- SD card slot (for photo storage)
- GPS/GNSS capability
- Requires: Nano SIM card with data plan
Option 3: Freenove ESP32-S3 CAM
- OV2640 camera module
- SD card slot
- WiFi-only (no cellular)
![]() Generic ESP32-S3 Wroom Pinout |
![]() Waveshare ESP32-S3-SIM7670G-4G Pinout |
![]() Seeed Studio/Freenove ESP32-S3 Pinout |
π‘ Note: Use these pinout diagrams when configuring custom GPIO pins for inputs, I2C devices, or troubleshooting pin conflicts with board-specific features (camera, modem, etc.)
- BMP180/BMP085 Sensor - For temperature and pressure monitoring
- Requires: I2C connection (2 GPIO pins)
- SD Card - For camera photo storage (FAT32 formatted)
- Recommended: Class 10, 8GB-32GB
- Nano SIM Card - For cellular connectivity (SIM7670G board only)
- Requires: Data plan with mobile carrier
- β‘ Real-time Multi-Input Monitoring - Monitor up to 4 independent switches/sensors
- π Dual Connectivity - WiFi and/or Cellular (4G LTE)
- π Four Notification Channels:
- π± Pushbullet - Push notifications to all your devices
- π§ Email - SMTP email notifications (Gmail, Outlook, etc.)
- β‘ Telegram - Instant messaging via Telegram bot
- π± SMS - Text messages via cellular modem (SIM7670G boards)
- π· Photo Capture - Take photos with OV2640 camera when inputs trigger
- πΈ Photo Attachments - Include images in Email and Telegram notifications
- π°οΈ GPS Tracking - Include location coordinates in alerts
- π‘οΈ Environmental Sensing - Monitor temperature, pressure, and altitude (BMP180)
- πΎ SD Card Storage - Save photos and logs to SD card
- π Intelligent Connection Modes - Choose WiFi, Cellular, or automatic failover per service
- π Web-based Configuration - No code changes needed
- π Password-Protected Interface - HTTP Basic Authentication
- π Live Status Dashboard - Real-time WiFi, cellular, sensor, and input monitoring
- π System Logs - Web-based log viewer (last 100 events)
- π§ͺ Test Buttons - Test each notification service independently
- β° NTP Time Sync - Accurate timestamps with timezone support
- πΎ Persistent Storage - All settings saved to flash memory
- π Auto-Reconnection - WiFi and cellular auto-recovery
- π Watchdog Timer - Prevents system hangs (30s timeout)
- π Notification Retry - Up to 3 attempts for failed notifications
- β±οΈ Rate Limiting - Prevents notification spam (5s interval per input)
- π« Non-blocking Operations - Smooth operation without delays
- π Security Features - XSS protection and JSON injection prevention
WiFi Setup Mode with Network Scanner |
Main Configuration Interface |
System Logs Viewer |
|
π‘ Note: Interactive HTML versions available in
docs/folder
Toggle Switch (Door Sensor) |
Momentary Switch (Doorbell) |
Multi-Input Configuration (4 switches) |
|
- π Terminal Output Sample - Serial monitor output with notifications
- π Sample Log File (JSON) - System logs in JSON format
Basic Single Input:
- Connect your switch between GPIO4 and 3.3V
- Internal pull-down resistor is enabled
- Switch closed = HIGH (3.3V), Switch open = LOW (0V)
Multi-Input Setup:
- See wiring diagram for connecting up to 4 inputs
- All inputs share common 3.3V power
- Each input uses a separate GPIO pin (default: 4, 5, 6, 7)
- Configure pins via web interface
-
Install Arduino IDE
-
Install ESP32 board support:
- Go to File β Preferences
- Add to Additional Board Manager URLs:
https://espressif.github.io/arduino-esp32/package_esp32_index.json - Go to Tools β Board β Boards Manager
- Search for "ESP32" and install "esp32 by Espressif Systems"
-
Install required libraries:
- Go to Tools β Manage Libraries
- Search for and install:
Required (All Configurations):
- "ESP Mail Client" by Mobizt (for Email notifications)
- "ArduinoJson" by Benoit Blanchon (v6.x or later - for JSON parsing)
Optional (Advanced Features):
- "Adafruit BMP085 Library" (for BMP180 sensor - works with both BMP085 and BMP180)
- Also install dependencies: "Adafruit Unified Sensor" and "Adafruit BusIO"
- "TinyGPSPlus" by Mikal Hart (for GPS/GNSS support - SIM7670G boards only)
π‘ Note: Optional libraries can be disabled by commenting out the corresponding
#definein code:HAS_BMP180_LIBfor BMP180 sensorHAS_CAMERA_LIBfor camera supportHAS_GPS_LIBfor GPS/GNSS
-
Select your board:
- Tools β Board β ESP32 Arduino β ESP32S3 Dev Module
-
β οΈ CRITICAL - Set Partition Schemeβ οΈ :- YOU MUST CHANGE THIS OR COMPILATION WILL FAIL
- Go to: Tools β Partition Scheme β "Huge APP (3MB No OTA/1MB SPIFFS)"
β οΈ This is REQUIRED - the sketch will NOT compile with the default partition scheme- Without this setting, you'll get error: "Sketch too big" or "text section exceeds available space"
- If you see compilation errors about size, check this setting first!
-
Camera Boards: Enable PSRAM (SIM7670G and Freenove only):
- Go to: Tools β PSRAM β "OPI PSRAM" (for Waveshare/Freenove boards)
- This is REQUIRED for camera operation
- Without PSRAM, camera initialization will fail
- Connect ESP32-S3 via USB
- Select the correct COM port (Tools β Port)
- Click Upload
- Open Serial Monitor (115200 baud) to view debug output
On first boot (or when WiFi credentials are empty), the device automatically enters Setup Mode:
- The device creates a WiFi Access Point named
ESP32-Notifier-Setup - Connect to this network using password:
setup123 - Open your browser and navigate to
http://192.168.4.1 - NEW: Click "Scan for Networks" to see all available WiFi networks with signal strength
- Click on any network to auto-fill the SSID, or manually enter your WiFi network name
- Enter your WiFi password
- Click "Connect to WiFi"
- The device will restart and connect to your WiFi network
- Check the Serial Monitor for the new IP address (e.g.,
192.168.1.100) - Navigate to that IP address to access the full configuration interface
Default Settings:
- Web Username:
admin - Web Password:
admin123β οΈ CHANGE THIS IMMEDIATELY - Pushbullet: Disabled by default
- Input 1: GPIO4 (enabled by default)
- Inputs 2-4: GPIO 5, 6, 7 (disabled by default)
Once running, the device will:
- Enable 30-second watchdog timer
- Connect to WiFi (non-blocking)
- Sync time via NTP
- Start password-protected web server
- Monitor all enabled inputs independently
- Send notifications when any input state changes
- Auto-reconnect WiFi if connection drops
- Retry failed notifications up to 3 times
After uploading, check the Serial Monitor (115200 baud) to find the device's IP address. Then:
-
Access the web interface:
- Open your browser and navigate to the IP address shown in Serial Monitor (e.g.,
http://192.168.1.100) - Login with: Username:
admin, Password:admin123 β οΈ Change the password immediately for security
- Open your browser and navigate to the IP address shown in Serial Monitor (e.g.,
-
Available Settings:
Basic Configuration:
- WiFi Settings: Change network credentials, Reset WiFi button
- Web Authentication: Change username and password
- Board Configuration: Board type selection, Camera/GPS/Cellular toggles
Notification Services:
- Pushbullet Settings: Enable/disable, API token, connection mode, Test button
- Email Settings: Enable/disable, SMTP server/port, credentials, recipient, connection mode, Test button
- Telegram Settings: Enable/disable, bot token, chat ID, connection mode, Test button
- SMS Settings (SIM7670G only): Enable/disable, phone number, connection mode
Cellular Configuration (SIM7670G only):
- Enable/disable cellular modem
- APN configuration
- Connection mode per service
- Status: Operator name, signal strength
Environmental Sensor:
- BMP180 Sensor: Enable/disable, I2C pin configuration (SDA/SCL)
- Include sensor data in notifications toggle
- Live readings: Temperature, Pressure, Altitude
Inputs Configuration (up to 4 inputs):
- Enable/disable each input
- Custom name for each input
- GPIO pin assignment (board-specific safe defaults)
- Mode (Toggle or Momentary)
- Custom ON and OFF messages with
{timestamp}placeholder - Camera trigger: Capture photo when input triggers (camera boards only)
- GPS inclusion: Include GPS coordinates in notification (SIM7670G only)
General Settings:
- Notification title
- Timezone offset (dropdown with major timezones)
-
Web Interface Features:
- Live status display (WiFi, IP, all input states, uptime)
- System Logs - View last 100 events (triggers, notifications, errors)
- Test buttons for each notification service
- Save configuration (persists across reboots)
- Restart device remotely
- All settings stored in non-volatile memory
- Password-protected (HTTP Basic Authentication)
-
Switch Modes:
-
Toggle Mode (default): Sends notifications on both state changes
- Use for: Door sensors, power monitors, window sensors
- Notifies when: Device turns ON and when it turns OFF
-
Momentary Mode: Only sends notification when switch goes HIGH
- Use for: Doorbells, motion detectors, push buttons
- Notifies when: Trigger detected (ignores release)
-
-
Example Custom Messages:
Toggle Mode (door sensor):
ON: "π’ Garage door opened at {timestamp}" OFF: "π΄ Garage door closed at {timestamp}"Momentary Mode (doorbell):
ON: "π Doorbell pressed at {timestamp}" OFF: (not used in momentary mode)Momentary Mode (motion detector):
ON: "β οΈ Motion detected at {timestamp}"
- Go to https://www.pushbullet.com/#settings/account
- Create an Access Token
- Copy the token and paste it in the web interface
- Enable Pushbullet notifications
- Enable 2-Factor Authentication on your Google account
- Go to https://myaccount.google.com/apppasswords
- Create an App Password (select "Mail" and your device)
- In the web interface:
- SMTP Server:
smtp.gmail.com - SMTP Port:
465(SSL) or587(TLS) - Your Email: your Gmail address
- Password: the 16-character app password (no spaces)
- Recipient Email: where you want to receive notifications
- SMTP Server:
- Enable Email notifications
Other Email Providers:
- Outlook/Hotmail:
smtp-mail.outlook.com, Port587 - Yahoo:
smtp.mail.yahoo.com, Port465or587 - Custom SMTP: Enter your provider's SMTP settings
-
Create a Bot:
- Open Telegram and search for
@BotFather - Send
/newbotand follow instructions - Copy the Bot Token (format:
123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11)
- Open Telegram and search for
-
Get Your Chat ID:
- Search for
@userinfoboton Telegram - Start a chat and it will send you your Chat ID (e.g.,
123456789) - Or send a message to your bot, then visit:
https://api.telegram.org/bot<YourBotToken>/getUpdates
- Search for
-
In the web interface:
- Paste your Bot Token
- Paste your Chat ID
- Enable Telegram notifications
-
Start your bot: Send
/startto your bot on Telegram
- Insert a Nano SIM card with an active data plan
- In the web interface:
- Navigate to "Cellular / 4G Configuration"
- Enable cellular modem
- Enter your carrier's APN (e.g., "internet", "wholesale", "fast.t-mobile.com")
- Navigate to "SMS Settings"
- Enable SMS notifications
- Enter recipient phone number with country code (e.g., "+1234567890")
- Device will connect to cellular network on boot
- SMS will be sent via cellular modem when inputs trigger
Navigate to the "Board Configuration" section in the web interface to select your board type:
| Feature | Generic ESP32-S3 | Waveshare SIM7670G | Freenove CAM |
|---|---|---|---|
| WiFi | β | β | β |
| Cellular/4G | β | β | β |
| Camera | β | β OV2640 | β OV2640 |
| GPS | β | β | β |
| SD Card | β | β | β |
| SMS | β | β | β |
| Pushbullet | β | β | β |
| β | β | β | |
| Telegram | β | β | β |
| Default Pins | 1, 2, 3, 47 | 21, 38, 39, 40 | Board-specific |
| Pinout Diagram | View | View | View |
| Best For | Basic monitoring | Full-featured remote | WiFi camera alerts |
- Features: WiFi notifications only
- Supported Services: Pushbullet, Email, Telegram
- Default GPIO Pins: 1, 2, 3, 47
- Use Case: Cost-effective monitoring without camera/GPS
- Configuration: Select "Generic ESP32-S3" from dropdown
- Pinout: See Generic ESP32-S3 Wroom pinout diagram
- Features: WiFi + Cellular + Camera + GPS + SD Card
- Supported Services: All (Pushbullet, Email, Telegram, SMS)
- Default GPIO Pins: 21, 38, 39, 40 (safe pins that avoid modem/camera conflicts)
- Additional Hardware Required:
- Nano SIM card with data plan
- SD card (FAT32, Class 10 recommended)
- Configuration:
- Select "ESP32-S3-SIM7670G-4G (Waveshare)" from dropdown
- Enable Camera checkbox for photo capture
- Enable GPS checkbox for location tracking
- Enable Cellular checkbox for mobile connectivity
- Pinout: See Waveshare SIM7670G pinout diagram
- Features: WiFi + Camera + SD Card
- Supported Services: Pushbullet, Email, Telegram
- Default GPIO Pins: Board-specific safe pins
- Additional Hardware Required: SD card (FAT32 formatted)
- Configuration:
- Select "Freenove ESP32-S3 CAM" from dropdown
- Enable Camera checkbox for photo capture
- Pinout: See Seeed Studio/Freenove pinout diagram
Hardware Setup:
- Ensure OV2640 camera is properly connected
- Insert FAT32-formatted SD card (8-32GB recommended)
- Enable PSRAM in Arduino IDE (Tools β PSRAM β OPI PSRAM)
Software Configuration:
- In web interface, navigate to "Board Configuration"
- Select appropriate board (SIM7670G or Freenove)
- Check "Enable Camera (OV2640)"
- Click "Save Configuration"
- Device will initialize camera on restart
Per-Input Photo Triggers:
- Navigate to "Inputs Configuration"
- For each input, check "Capture Photo" to enable photo on trigger
- Photos are automatically attached to Email and Telegram notifications
- Photos saved to SD card with timestamp (e.g.,
/20251015_143045.jpg)
Status Indicators:
- Web interface shows: "π· Camera: Ready" when initialized
- "πΎ SD Card: XXX MB" when card detected
- Error messages if camera or SD card fails
Requirements:
- ESP32-S3-SIM7670G-4G board only
- Cellular modem must be enabled
- Clear view of sky for GPS fix (may take 1-2 minutes outdoors)
Configuration:
- Enable Cellular Modem in web interface
- Check "Enable GPS/GNSS" in Board Configuration
- GPS powers on automatically with modem
Per-Input GPS:
- Navigate to "Inputs Configuration"
- For each input, check "Include GPS Location"
- Location coordinates will be included in notifications when input triggers
- Format: "GPS: Lat: 40.7128, Lon: -74.0060, Alt: 10.0m (4 sats)"
Status:
- Web interface shows satellite count and fix status
- "GPS: Fix (8 sats)" when locked
- "GPS: Searching" when acquiring signal
Hardware Requirements:
- ESP32-S3-SIM7670G-4G board
- Nano SIM card with active data plan
- Compatible carrier (most GSM/LTE carriers supported)
Initial Setup:
- Power off device and insert Nano SIM card
- Power on and navigate to web interface
- In "Cellular / 4G Configuration":
- Check "Enable Cellular Modem"
- Enter APN for your carrier:
- T-Mobile:
fast.t-mobile.comorwholesale - AT&T:
broadbandorphone - Verizon:
vzwinternet - Other carriers: Check carrier documentation
- T-Mobile:
- Save configuration and restart
Connection Modes:
For each notification service, choose:
- WiFi Only: Use WiFi connection (default, most reliable for Pushbullet/Email/Telegram)
- Cellular Only: Use mobile data (best for areas without WiFi)
- WiFi with Cellular Backup: Try WiFi first, fall back to cellular if WiFi unavailable
Status Monitoring:
- Cellular status shown in web interface:
- "πΆ Cellular: Connected to T-Mobile (Signal: 25)"
- Operator name and signal strength
- Connection state (Connected/Disconnected)
Use Cases:
- Remote locations without WiFi
- Backup connectivity when WiFi fails
- Mobile installations (vehicles, portable devices)
Hardware Setup:
BMP180 Sensor ESP32-S3
βββββββββββββ ββββββββ
VCC (3.3V) -> 3.3V
GND -> GND
SDA -> GPIO21 (default, configurable)
SCL -> GPIO22 (default, configurable)
Software Configuration:
- Install "Adafruit BMP085 Library" in Arduino IDE
- In web interface, navigate to "BMP180 Sensor" section
- Check "Enable BMP180 Sensor"
- Configure I2C pins (default: SDA=21, SCL=22)
- Check "Include sensor data in notifications"
- Save configuration
Live Readings:
- Web interface displays real-time data:
- π‘οΈ Temperature: 22.5Β°C / 72.5Β°F
- π½ Pressure: 1013.2 hPa / 29.92 inHg
- β°οΈ Altitude: 123.4 m / 404.9 ft
In Notifications: When enabled, sensor data is automatically appended:
Input 1 ON at 2025-10-15 14:30:45
π‘οΈ Temperature: 22.5Β°C / 72.5Β°F
π½ Pressure: 1013.2 hPa / 29.92 inHg
β°οΈ Altitude: 123.4 m / 404.9 ft
Troubleshooting:
- If "
β οΈ Sensor not detected" appears:- Verify wiring connections
- Check I2C pin configuration
- Try different GPIO pins if conflict exists
- See BMP180_SETUP.md for detailed guide
If you need to connect to a different WiFi network:
-
Method 1: Reset via Web Interface (Recommended)
- Log in to the web interface
- Go to the WiFi section
- Click the red "Reset WiFi" button
- Confirm the action
- Device will restart in Access Point mode
- Connect to
ESP32-Notifier-Setupnetwork (password:setup123) - Navigate to
http://192.168.4.1 - Configure new WiFi credentials
-
Method 2: Edit via Web Interface
- If you can still access the device on your network
- Simply update the SSID and Password fields
- Click "Save Configuration"
- Device will connect to the new network
-
Method 3: Re-flash Firmware
- If you can't access the device at all
- Re-upload the sketch via Arduino IDE
- Device will start fresh in AP mode
β οΈ Compilation error "Sketch too big" or "text section exceeds available space"β οΈ :- THIS IS THE #1 ISSUE - CHECK PARTITION SCHEME FIRST!
- Go to Tools β Partition Scheme β "Huge APP (3MB No OTA/1MB SPIFFS)"
- This setting is MANDATORY for the sketch to fit in flash memory
- The default partition scheme is too small and will always fail
- WiFi won't connect: Check SSID and password in web interface or code
- Can't access web interface: Check Serial Monitor for IP address; ensure you're on the same network
- Time shows incorrect: Adjust GMT offset in web interface (e.g., -14400 for EDT, -18000 for EST, 3600 for CET)
- False triggers: Increase debounce delay (currently 50ms in code)
- Settings not persisting: Configuration is saved to ESP32 flash memory automatically when you click "Save Configuration"
- Serial Monitor blank: Enable "USB CDC On Boot" in Arduino IDE Tools menu
-
Pushbullet not working:
- Verify token at https://www.pushbullet.com/#settings/account
- Ensure Pushbullet is enabled in web interface
-
Email not sending:
- Check SMTP server and port settings
- For Gmail: Must use App Password (not regular password) with 2FA enabled
- Verify your email provider allows SMTP access
- Check Serial Monitor for specific error messages
-
Telegram not working:
- Ensure you've sent
/startto your bot first - Verify Chat ID is correct (use @userinfobot)
- Check that bot token is valid
- Make sure Telegram is enabled in web interface
- Ensure you've sent
-
SMS not sending:
- Ensure cellular modem is enabled and connected
- Verify phone number includes country code (e.g., +1 for US)
- Check APN configuration for your carrier
- Confirm SIM card has active service and credit
- View Serial Monitor for AT command errors
-
Camera not initializing:
- Check PSRAM is enabled: Tools β PSRAM β "OPI PSRAM"
- Verify partition scheme: "Huge APP (3MB No OTA/1MB SPIFFS)"
- Ensure camera connections are secure
- Try disabling camera in code if not needed: comment out
#define HAS_CAMERA_LIB - Check Serial Monitor for specific error codes
-
SD card not detected:
- Verify SD card is FAT32 formatted (not exFAT or NTFS)
- Use Class 10 card, 8-32GB capacity
- Check card is fully inserted
- Try different SD card if available
- Some boards use 1-bit mode, others 4-bit (handled automatically)
- Serial Monitor shows: "SD card not available" if failed
-
GPS not getting fix:
- Requires clear view of sky (won't work indoors)
- Wait 1-2 minutes for initial fix (cold start)
- Ensure cellular modem is enabled (GPS uses modem)
- Check antenna connection on SIM7670G board
- Serial Monitor shows satellite count when searching
- Some locations have poor GPS coverage
-
Cellular modem not connecting:
- Verify SIM card is inserted correctly (contacts facing down)
- Check SIM has active data plan
- Confirm APN matches your carrier (case-sensitive)
- Ensure SIM is not PIN-locked
- Wait 30-60 seconds for network registration
- Try different carrier if available (roaming)
- Serial Monitor shows modem AT command responses
-
BMP180 sensor not found:
- Verify wiring: VCC->3.3V, GND->GND, SDA->GPIO21, SCL->GPIO22
- Check I2C pin configuration matches wiring
- Try different GPIO pins if conflict with other features
- Use an I2C scanner sketch to verify sensor address (0x77)
- Ensure sensor module is powered (some have voltage regulators)
- See BMP180_SETUP.md for detailed troubleshooting
-
Photos not attaching to notifications:
- SD card must be initialized successfully
- Email: Check SMTP server supports attachments (some don't)
- Telegram: Requires active internet connection (WiFi or cellular)
- Photos are saved to SD card even if attachment fails
- Check Serial Monitor for file write errors
-
Board-specific GPIO conflicts:
- Each board has different safe GPIO pins
- SIM7670G: Avoid pins 17, 18, 41, 42 (modem), 4-16, 34-37 (camera)
- Freenove: Avoid pins 4, 5 (camera I2C)
- Use web interface defaults which are pre-configured per board
- Strapping pins (0, 1, 2, 3, 45, 46) may cause boot issues
- Added BMP180 temperature/pressure sensor support
- Real-time environmental monitoring in web interface
- Automatic sensor data inclusion in notifications
- Configurable I2C pins for flexible sensor connection
- Cellular/4G support with SIM7670G modem integration
- SMS notifications via cellular modem
- Intelligent connection modes (WiFi/Cellular/Hybrid)
- HTTP over cellular for Pushbullet and Telegram
- Per-service connection mode configuration
- Cellular status monitoring (operator, signal strength)
- Multi-board support (Generic, SIM7670G, Freenove)
- OV2640 camera integration with photo capture
- Photo attachments in Email and Telegram
- GPS/GNSS positioning support
- SD card storage for photos
- Per-input camera and GPS triggers
- Board-specific GPIO pin optimization
- WiFi network scanner in AP mode
- Web-based configuration interface
- Multi-input support (up to 4 switches)
- System logging with web viewer
- WiFi auto-reconnection
- Watchdog timer
- Web authentication
- Non-blocking operations
- Notification retry queue
- ArduinoJson security improvements
See RELEASE_NOTES.md for complete changelog.
=== ESP32-Notifier v3.2-BMP180 ===
[BOOT] Serial initialized
[BOOT] Free Heap: 320544 bytes
[BOOT] Chip: ESP32-S3 Rev 0
[BOOT] Initializing watchdog...
[BOOT] Watchdog timer enabled (30s)
[BOOT] Loading preferences...
[BOOT] Preferences loaded OK
[BOOT] Checking board configuration...
[BOOT] Board type: 0 (0=Generic, 1=SIM7670G, 2=Freenove)
[BOOT] Board: Generic ESP32-S3
[BOOT] BMP180 sensor disabled, skipping
[BOOT] Configuring input pins...
[BOOT] Input 1 (Front Door) on pin 21: LOW
Connecting to WiFi: YourNetwork
...
WiFi connected!
IP address: 192.168.1.100
Waiting for time sync...
Time synchronized!
Web server started
Configuration page: http://192.168.1.100
[INPUT] Pin 21 changed to 1
[INPUT] State change confirmed! Input: Front Door
Device turned ON at 2025-10-15 14:30:45
--- Sending Notifications ---
Sending Pushbullet...
β Pushbullet sent! Code: 200
Sending Email...
β Email sent!
Sending Telegram...
β Telegram sent! Code: 200
--- Notifications Complete ---
=== ESP32-Notifier v3.2-BMP180 ===
[BOOT] Board: ESP32-S3-SIM7670G-4G (Waveshare)
[BOOT] Cellular enabled: 1, Camera: 1, GPS: 1
[BOOT] Initializing cellular modem...
[MODEM] Power enable HIGH
[MODEM] Checking modem...
[MODEM] Modem responding: OK
[MODEM] IMEI: 867584034512345
[MODEM] Network registration...
[MODEM] β Connected to T-Mobile (Signal: 25)
[BOOT] Modem initialized successfully
[BOOT] Cellular network connected
[BOOT] Initializing SD card...
[SD] Card type: SDHC
[SD] Card size: 15360 MB
[SD] β SD card mounted
[BOOT] SD card ready
[BOOT] Initializing camera...
PSRAM found - using conservative settings
β BMP180 sensor initialized successfully
[BOOT] Camera ready
[BOOT] Initializing GPS...
GPS initialized via modem
[BOOT] GPS ready
[BOOT] Initializing BMP180 sensor...
I2C pins - SDA: GPIO21, SCL: GPIO22
β BMP180 sensor initialized successfully
[SUCCESS] BMP180 sensor initialized
[BOOT] BMP180 sensor ready
[BOOT] WiFi connected!
[BOOT] IP address: 192.168.1.100
[BOOT] === Setup complete ===
[INPUT] Input: Garage Door triggered
Capturing photo to SD card...
Frame buffer size: 24576 bytes
β Photo saved: /20251015_143045.jpg (24576 bytes)
GPS: Lat: 40.7128, Lon: -74.0060, Alt: 10.0m (6 sats)
--- Sending Notifications ---
β Pushbullet sent (cellular)! Code: 200
β Email sent with photo attachment!
β Telegram sent with photo! Code: 200
β SMS sent to +1234567890
Added BMP180 sensor data to notification
--- Notifications Complete ---
Notification received:
βββββββββββββββββββββ
Title: Garage Door Alert
Body:
Garage door opened at 2025-10-15 14:30:45
π· Photo: /20251015_143045.jpg
π°οΈ GPS: Lat: 40.7128, Lon: -74.0060, Alt: 10.0m (6 sats)
π‘οΈ Temperature: 22.5Β°C / 72.5Β°F
π½ Pressure: 1013.2 hPa / 29.92 inHg
β°οΈ Altitude: 123.4 m / 404.9 ft
βββββββββββββββββββββ
MIT


