We created an embedded system with a web interface for a remote monitoring and control unit to store data, allow data download, issue control commands, and send email alerts.
- Develop a web layer for the tiny dedicated Linux server running on the remote monitoring and control unit.
- Create several software components including a PHP web application, a binary executable (the "poller") written in C, and various support shell scripts.
- Create a web application handling the user interface and generation of alert emails.
- Enable end users to interact with the web application as they would any web site.
- Utilize a compact interface and software compression to minimize the size of data transmissions over GSM transmitters, which are priced by bandwidth usage.
- Write a poller in C, instead of PHP, to support consistent running and millisecond-accurate timing in
communications between the Linux server and unit.
- Cross-compile the C code for the dedicated server's ARM architecture.
- Use the industry-standard MODBUS protocol for the poller’s communication with the unit over a serial connection.
- Write data into a MySQL database which it shares with the web application.
- Compare values it reads from the unit against alarm thresholds, and inform the web application of alarm conditions.
- Accept control and configuration commands from the web application over a custom Berkeley socket interface that maintains its internal scheduling.
- Create a collection of shell scripts to provide watchdog verification for the running of the poller and monitoring of disk utilization.
- Design flexibility into all of the components.
- Make polling frequencies and most system configuration parameters changeable on the fly via the web interface.