Release Date: February 20, 2026
Version: 1.1.1
Platform: Arduino Opta + Blues Wireless Notecard
A production-ready industrial monitoring system for remote tank level monitoring, alarm management, and fleet coordination using cellular IoT connectivity.
TankAlarm is a complete industrial monitoring solution designed for reliable, remote tank level monitoring with SMS/email alerts. Built on the Arduino Opta industrial controller platform with Blues Wireless cellular connectivity, it provides enterprise-grade reliability without requiring WiFi or wired network infrastructure at remote sites.
The system consists of three components:
- Client - Remote monitoring device (deployed at tank sites)
- Server - Central data aggregation and alerting hub (office/headquarters)
- Viewer - Read-only monitoring device (optional, for remote viewing)
┌─────────────┐ ┌─────────────┐
│ CLIENT │ │ SERVER │
│ (Remote) │ │ (HQ/Office) │
│ • Monitors │ │ • Dashboard │
│ • Sensors │ │ • Alerts │
└──────▲──────┘ └──────▲──────┘
│ │
│ Cellular │ Cellular
▼ ▼
┌──────────────────────────────────────────────┐
│ BLUES NOTEHUB (Cloud) │
│ (Data Exchange & Device Management) │
└──────────────────────┬───────────────────────┘
│
│ Cellular/WiFi
▼
┌─────────────┐
│ VIEWER │
│ (Read-Only) │
└──────┬──────┘
│
Ethernet LAN
(User Display)
- Multi-Sensor Support - Monitor up to 8 objects per device
- Analog voltage (0-10V)
- 4-20mA current loop (pressure sensors, level transmitters)
- Digital on/off (float switches)
- Pulse counting (flow meters, RPM sensors)
- Flexible Object Types - Tanks, engines, pumps, gas systems, flow meters
- Intelligent Alarming - Configurable high/low thresholds with hysteresis and debouncing
- Rate Limiting - Prevents alert flooding during transient conditions
- Relay Control - Automated shutoff with multiple modes (momentary, until_clear, manual_reset)
- Remote Configuration - Update all settings via server web interface
- Persistent Storage - LittleFS internal flash (no SD card required)
- Watchdog Protection - Automatic recovery from system hangs
- Low Power Design - Optimized for battery/solar operation
- Web Dashboard - Real-time monitoring of all clients
- SMS & Email Alerts - Immediate notifications for alarm conditions
- Daily Reports - Scheduled email summaries
- Remote Client Management - Configure any client from web interface
- RESTful API - Programmatic access for automation
- Fleet Management - Centralized control via Blues Notehub
- FTP Backup/Restore - Configuration archiving
- Client Console - Real-time serial log viewing for troubleshooting
- PIN Authentication - Secure access with constant-time comparison and rate limiting
- Configuration Import/Export - JSON-based backup and templating
- Config Comparison - Visual diff before deploying changes
- Unsaved Changes Warning - Prevents accidental data loss
- Audit Log - Track configuration changes with timestamps
- Contextual Tooltips - Inline help for complex configuration options
- Dashboard-Only - No configuration access
- Stale Data Warnings - Visual indicators for outdated readings
- Minimal Attack Surface - Secure deployment for public areas
- Notecard Sync - Automatic data updates from server
- Arduino Opta Lite - Industrial controller (STM32H747XI dual-core)
- Blues Wireless for Opta - Cellular Notecard carrier board
- Arduino Opta Ext A0602 (optional) - 4-20mA analog expansion for sensors
- Sensors - Compatible with 0-10V, 4-20mA, digital, or pulse outputs
- Power Supply - 12-24V DC (solar + battery recommended for remote sites)
- Arduino Opta Lite - Industrial controller
- Blues Wireless for Opta - Cellular Notecard carrier board
- Ethernet Connection - RJ45 to local network
- Power Supply - 12-24V DC
- Arduino Opta Lite - Industrial controller
- Blues Wireless for Opta - Cellular Notecard carrier board
- Ethernet Connection - RJ45 to local network
- Power Supply - 12-24V DC
| Type | Model | Interface | Application |
|---|---|---|---|
| Pressure Transmitter | Dwyer 626-06-CB-P1-E5-S1 | 4-20mA | Tank level (0-5 PSI) |
| Float Switch | Dayton 3BY75 | Digital | High/low level detection |
| Hall Effect Sensor | Generic | Pulse | Engine RPM monitoring |
| Flow Meter | Generic | Pulse | Liquid flow rate |
- Digital (Float Switches) - Binary on/off, 3.3V/5V compatible
- Analog Voltage - 0-10V (via Opta Ext A0602)
- 4-20mA Current Loop - Pressure transmitters, level sensors
- Pulse Counting - Flow meters, RPM sensors (up to 10 kHz)
Client (Remote Site):
- Install Blues Wireless for Opta carrier on Arduino Opta
- Activate Notecard at blues.io
- Connect sensors to appropriate inputs
- Connect 12-24V DC power (solar recommended)
Server (Office/HQ):
- Install Blues Wireless for Opta carrier on Arduino Opta
- Activate Notecard at blues.io
- Connect Ethernet cable to local network
- Connect 12-24V DC power supply
Prerequisites:
- Arduino IDE 2.x or later
- Arduino Mbed OS Opta Boards core (via Boards Manager)
Required Libraries:
- ArduinoJson v7.x or later
- Blues Wireless Notecard (latest)
- LittleFS (built into Mbed core)
- Ethernet (built-in)
Installation:
- Clone this repository
- Install TankAlarm-112025-Common library:
# Windows PowerShell (as Admin) New-Item -ItemType Junction -Path "$env:USERPROFILE\Documents\Arduino\libraries\TankAlarm-112025-Common" -Target "C:\path\to\ArduinoSMSTankAlarm\TankAlarm-112025-Common"
- Open the appropriate sketch in Arduino IDE:
- Client:
TankAlarm-112025-Client-BluesOpta/TankAlarm-112025-Client-BluesOpta.ino - Server:
TankAlarm-112025-Server-BluesOpta/TankAlarm-112025-Server-BluesOpta.ino - Viewer:
TankAlarm-112025-Viewer-BluesOpta/TankAlarm-112025-Viewer-BluesOpta.ino
- Client:
- Update
PRODUCT_UIDto match your Blues Notehub project - Compile and upload
- Create account at notehub.io
- Create a new product for your TankAlarm system
- Create three fleets:
tankalarm-server- For server device(s)tankalarm-clients- For all client devicestankalarm-viewer- For viewer device(s)
- Claim all Notecards into the product
- Assign each Notecard to the appropriate fleet
Detailed Instructions:
- Client Setup: TankAlarm-112025-Client-BluesOpta/README.md
- Server Setup: TankAlarm-112025-Server-BluesOpta/README.md
- Fleet Configuration: TankAlarm-112025-Server-BluesOpta/FLEET_SETUP.md
- Power on the server and wait for network connection
- Check serial monitor (115200 baud) for IP address
- Navigate to:
http://<server-ip>/ - Configure server settings and SMS/email recipients
- Configure clients remotely via the dashboard
- Lines of Code: 5,488
- Memory Footprint: ~150KB flash, ~30KB RAM
- Monitors per Device: Up to 8
- Sample Interval: Configurable (default: 30 minutes)
- Alarm Hysteresis: Configurable per monitor
- Watchdog Timeout: 30 seconds
- Cellular Connectivity: Blues Wireless Notecard (LTE-M/NB-IoT)
- Data Persistence: LittleFS internal flash
- Power Requirements: 12-24V DC, ~2W typical
- Lines of Code: 10,328
- Memory Footprint: ~300KB flash, ~100KB RAM
- Max Clients: 32 (expandable)
- Max Tanks: 64 total across all clients
- Web Server: HTTP (port 80)
- API Endpoints: 15+ RESTful endpoints
- Network: Ethernet (10/100 Mbps)
- Data Persistence: LittleFS internal flash
- Power Requirements: 12-24V DC, ~3W typical
- Lines of Code: 763
- Memory Footprint: ~100KB flash, ~20KB RAM
- Web Server: HTTP (port 80) - read-only
- Network: Ethernet (10/100 Mbps)
- Power Requirements: 12-24V DC, ~2W typical
The system uses Blues Notehub fleet-based routing for device-to-device communication:
- Client → Server: Telemetry and alarms routed to
tankalarm-serverfleet - Server → Client: Configuration updates routed to specific client device IDs
- Server → Viewer: Status updates sent for dashboard display
Advantages:
- No hardcoded device IDs in firmware
- Simplified fleet management
- Automatic routing via Notehub
- Scalable to hundreds of devices
CLIENT BLUES NOTEHUB SERVER
│ │ │
├─── telemetry.qo ──────────────┤ │
│ (level data) │ │
│ ├─── fleet routing ────▶│
│ │ │
├─── alarm.qo ──────────────────┤ │
│ (alarm event) │ │
│ ├─── fleet routing ────▶│
│ │ │
│ │ ├─ SMS/Email
│ │ │ Alerts
│ │ │
│ │◀─── config_push.qi ───┤
│ │ (new config) │
│◀──── route: device_id ────────┤ │
│ (config received) │ │
- PIN-based Access Control - Protect configuration endpoints
- Constant-Time PIN Comparison - Prevents timing attack analysis
- Authentication Rate Limiting - Exponential backoff with lockout after 5 failures
- Optional PIN - Can be disabled for trusted networks
- Session-based - PIN verified per-session
- All POST endpoints validate JSON structure
- Buffer overflow protection on string inputs
- Range checking on numeric values
- Client UID length validation with diagnostic logging
- Hash table bounds checking to prevent out-of-bounds access
- HTTP 400/401/429/500 status codes for error conditions
- HTTP Only - Deploy on trusted local networks
- No Internet Exposure - Server should not be internet-facing
- Ethernet Isolation - Physical network segmentation recommended
Note: HTTPS/TLS not currently supported. For internet-facing deployments, use VPN or reverse proxy with TLS termination.
- Client: TankAlarm-112025-Client-BluesOpta/README.md
- Server: TankAlarm-112025-Server-BluesOpta/README.md
- Fleet Setup: TankAlarm-112025-Server-BluesOpta/FLEET_SETUP.md
- Relay Control: TankAlarm-112025-Client-BluesOpta/RELAY_CONTROL.md
- Unload Tracking: TankAlarm-112025-Client-BluesOpta/UNLOAD_TRACKING.md
- Device-to-Device API: TankAlarm-112025-Client-BluesOpta/DEVICE_TO_DEVICE_API.md
- Migration Guide: TankAlarm-112025-Client-BluesOpta/MIGRATION_GUIDE.md
- Security Fixes (Feb 2026): CODE REVIEW/SECURITY_FIXES_02062026.md
- Communication Architecture: CODE REVIEW/COMMUNICATION_ARCHITECTURE_VERDICT_02192026.md
- Data Usage Analysis: CODE REVIEW/DATA_USAGE_ANALYSIS_02192026.md
- Common Header Audit: CODE REVIEW/COMMON_HEADER_AUDIT_02192026.md
- v1.1.1 Release Notes: CODE REVIEW/V1.1.1_RELEASE_NOTES.md
- v1.0 Release Summary: CODE REVIEW/V1.0_RELEASE_SUMMARY.md
- v1.0.1 Release Notes: CODE REVIEW/V1.0.1_RELEASE_NOTES.md
- Advanced Features (Feb 2026): CODE REVIEW/ADVANCED_FEATURES_IMPLEMENTATION_02052026.md
- Historical Data Architecture: TankAlarm-112025-Server-BluesOpta/HISTORICAL_DATA_ARCHITECTURE.md
- Console Restrictions: TankAlarm-112025-Server-BluesOpta/CONSOLE_RESTRICTIONS.md
-
Hardware Validation
- All sensors reading correctly
- Relay control functioning
- Cellular connectivity stable
- Ethernet connectivity stable
-
Software Validation
- Firmware version 1.1.1 confirmed
- All clients reporting to server
- Alarms triggering correctly
- SMS/email alerts delivering
- Web dashboard accessible
-
Network Testing
- Blues Notehub routing configured
- Fleet assignments verified
- Server IP address documented
- Firewall rules configured (if applicable)
-
Burn-In Testing
- 48-hour continuous operation test
- Watchdog recovery test
- Power cycle recovery test
- Network failover test
- Flash all devices with v1.1.1 firmware
- Configure Blues Notehub fleet assignments
- Set server IP address and network configuration
- Configure SMS/email recipients
- Test alarm notifications
- Test relay control
- Verify web dashboard access
- Document device serial numbers and locations
- Establish backup schedule (FTP recommended)
- Enhanced email formatting (HTML, attachments)
- Historical data logging (30-day retention)
- Graphical trend charts
- Common header consolidation (centralize duplicated constants)
- Event-driven Notecard polling (
file.changes+ change trackers)
- Advanced analytics and reporting
- Predictive maintenance alerts
See LICENSE file for details.
For technical support, bug reports, or feature requests, please open an issue on GitHub.
- Blues Wireless Documentation: dev.blues.io
- Arduino Opta Documentation: docs.arduino.cc
- Bill of Materials: TankAlarm-112025-BillOfMaterials.md
ArduinoSMSTankAlarm/
├── TankAlarm-112025-Client-BluesOpta/ # Remote monitoring client
├── TankAlarm-112025-Server-BluesOpta/ # Central server & dashboard
├── TankAlarm-112025-Viewer-BluesOpta/ # Read-only viewer
├── TankAlarm-112025-Common/ # Shared library
├── CODE REVIEW/ # Code reviews & documentation
├── RecycleBin/ # Archived versions
├── Tutorials/ # Getting started guides
├── TankAlarm-112025-BillOfMaterials.md # Hardware BOM
└── README.md # This file
- Viewer Fleet: Viewer devices now join dedicated
tankalarm-viewerfleet for fleet-scoped DFU and routing - Relay Forwarding: New
relay_forward.qo/.qiprotocol for client-to-client relay commands via server - Serial ACKs: Client emits
serial_ack.qoprocessing/complete status during serial log requests - Config ACK Enhancements: Config version hash (
cv) tracked through dispatch → ACK cycle - ArduinoJson v7: Full migration to auto-sizing
JsonDocumentin Server and Viewer (removed all capacity constants) - Notecard Hardening: NULL-safe
card.uuidhandling across all three sketches - Watchdog Fix: Corrected macro name to
TANKALARM_WATCHDOG_AVAILABLEacross all components - Memory Safety: Use
JDeletefor unsent request cleanup; fix relay body allocation leak - Dead Code Removal: ~300 lines of unused helpers removed from Common headers
- Documentation: 14 tutorial guides updated for three-fleet architecture
- Security: Constant-time PIN comparison to prevent timing attacks
- Security: Authentication rate limiting with exponential backoff and lockout
- Security: Hash table bounds checking to prevent out-of-bounds memory access
- Security: Client UID length validation with diagnostic logging
- Security: Buffer boundary fix for FTP response parsing
- Server Console: Configuration import/export (JSON backup & templating)
- Server Console: Unsaved changes warning with browser prompt
- Server Console: Configuration comparison with visual diff before deploy
- Server Console: Audit log tracking last 50 configuration changes
- Server Console: Contextual tooltips for complex configuration fields
- Architecture: Communication architecture review and documentation
- Architecture: Data usage analysis for standard vs. proxy patterns
- Architecture: Common header audit identifying constants to centralize
- UI: Centralized CSS with browser caching for faster page loads
- Stability: JavaScript null-safety hardening across dashboard pages
- Stability: UTF-8 BOM and struct compilation fixes
- Centralized CSS into single cached stylesheet
- UI header standardization (Action Bar layout)
- JavaScript null-safety hardening
- Compilation fixes (UTF-8 BOM, struct definitions)
- Initial production release
- Client, Server, and Viewer firmware
- Blues Wireless fleet-based routing
- Web dashboard with SMS/email alerts
- LittleFS persistent storage
- Remote client configuration
Built with ❤️ for industrial IoT applications
Last Updated: February 20, 2026