Tankmonitor
Company: | Tekanero | Client | Adler and Allan |
Main development: | 06.2015 | - | 09.2015 |
Type | Web Application | ||
Technologies | PHP SQL SQL Server jQuery Bootstrap |
Introduction
In early 2015 my business-partner Ashley has gotten in touch with Adler and Allan to provide some assistance with a tank-monitoring system that they had in place at the time.
The system was based on a .Net Desktop application which communicated with “Read-Out” controllers via SMS. The whole application was operated via a closed source windows application which stored its data in a MS SQL Server database. A major weakness of the existing program was its user interface which overloaded its operators with information and options; this caused the operators to feel uncomfortable using the software. The biggest short-falls were the lacks of scheduling, data prediction and error handling in case a sensor failed to provide data a couple of days. Their solution at the time was to manually type the last known values into an Excel sheet on a weekly basis in order to do their schedule tankers, a solution that was time consuming and prone to error.
The solution
After lengthy discussions with the client and Ashley who coordinated the project, an independent web application that hooks into the systems database has been identified as the best solution. The main goal was to remove the need for an Excel spread sheet to schedule tankers and to provide operators with a dashboard that will give them the information they need whilst removing their usage anxiety. We achieved this by segmenting the application into clearly defined modules on the daily tasks at hand.
Interactive elements:
To further improve usage efficiency interactive elements were added throughout the site which include:- Add, modify, delete tanker bookings across the site
- change tank or site details in tank summary
- semi-automatically calibrate the tank-flowrate using a graph in the tank summary
- jQuery date-picker wherever dates are used
- JavaScript data-validation in all text-fields
- jQuery transitions for a friendlier appearance
Features:
A major advantage over the original software came in form of data prediction.
This feature has been used extensively to forecast fill levels of various tank types (fuel tank, sewage tank etc.).
It’s main function was to help with scheduling tankers but also to give an approximate fill level if contact with a sensor/base station had been lost.
Another important addition was the ability to schedule tankers and print out a weekly roster which completely eliminated the reliance on Excel.
Developing a web-application also has had further advantages over a traditional Windows program as it offers access to multiple operators simultaneously.
A future aspect came in the use of a responsive user interface relying on Bootstrap 3 which would make this software accessible on mobile devices such as tablets and smart phones. The idea behind this was for operators to use the system while out on site.
Challenges and technical details
The clients’ main requirement was to develop the system to run on a separate, though straight forward LAMP server and to keep any impact on the existing system to a minimum. This meant that we had to store our own information in a separate database which in turn rendered the whole setup incompatible with most PHP frameworks such as Symfony. To speed up development, provide a cleaner solution and I adhered to many philosophies of Symfony 2 and Joomla. By further following best practices as well as good code documentation, Ashley could contribute his parts in the project without the need for a prolonged induction. This will certainly come into its own during future updates.
Examples :
- Clearly defined class names for own libraries
- Clearly defined file structure
- TK_ start for Tekanero classes
- TK_H_ start for page related helpers
- Use of Bootstrap colours for clean design
- Page split into chunks for template
- End of page exception handling
- Notification function to display uniform messages
- Clearly defined class names for own libraries
- Database handler
- automatic connection handling
- integrated error handling, forwarding to error page
- functions for: SQL statements and standard SQL queries and single row queries
- Pre-defined data retrieval functions in separate class