UPSmon Ver 1.0 and Ver 2.0



Although I was a Post Sales engineer at the time, I developed a software product with supporting hardware and ran it's production, marketing and sales almost like a small business - I named and marketed the product independently of the company I worked for, in order that it could be resold by third parties and actually this proved successful and even continued after my employer ceased to exist - The product was UPSmon and this is its story...



UPSmon, from "UPS monitor" was used to check the status of a UPS (Uninterriptable Power Supply), which provide emergency mains power from a battery backup for computer systems

I wrote version 1.0 of UPSmon around 1987 to cure a common problem for our customers running Unix systems, where their UPS would keep their computer running in a power failure but not once the battery had run out of power

This would happen sometimes without them knowing that a power failure had happened and would result in possible file system corruption and data loss


Click on the images on the right to see the UPSmon V1.0 sales glossy












Click on the left to see UPSmon V1.0 source code in C langauage

The program is invoked in background, and so runs as a Unix daemon, which sends out a small packet of serial data on the chosen RS232 port, which is either connected to contacts available on the UPS which close on power failure, or the hardware unit, as shown in the glossy above, which I had manufactured to provide contacts for this purpose









The image on the right is the trace artwork for the PCB in the hardware unit, which supported relays to allow connection of two computers, each with LED indicators for data transmission on the front panel, and also allowed connection of 240 volt alarm beacons for power failure indication

Click for full image




Here are front and rear views of the UPSmon hardware unit





















I had the logo below designed by a graphics company. This is the original proof work.






The letter and invoice on the left are from the solicitor who advised me on the legal aspects of selling the software

It is interesting to see the comments on intellectual property and on licencing for the product, to ensure that customers purchased a licenced copy for each of their machines and didn't just copy and run the software on multiple platforms

















I used the example that Pinsent & Co provided to me for a "shrink wrap" licence, to produce the licence documentation on the right that was shipped with the software media for each sale



Click for the full document









As the sales figures on the left show, UPSmon V1.0 proved quite a popular product, with approximately £9,000 reveue in 1990, £14,500 in 1991 and £18,500 in 1992 (total £42,000 over 3 years)

For a product priced at £225 for software only and £380 for software & hardware, this equates to something between 110 and 185 units shipped

These were the days before Powerpoint slides, of course, but I performed much more in a PreSales and Sales role in meetings with prospective UPSmon resellers and used these documents to explain the details of the product and its history, pricing, discount etc.




















As the Product History on the right shows, 1992 was the year that I had finalised the coding for UPSmon V2.0, which included software modelling of the UPS battery charge/discharge data














UPSmon V2.0, or UPSmonII  as I described it in the documentation (and how the daemons were easily distinguishable) used exactly the same check for return of the serial data packet via the UPS contacts, or using the same hardware box




Click on the images on the left to see the UPSmon V2.0 sales glossy










The Sales Strategy document on the right (click for the full document) shows my approach in driving sales for the new V2.0 product into new customers and as an upgrade to V1.0 users

V2.0 was pitched at a price higher per unit than V1.0 - approx 30% higher for SW Only versions and 18% higher for SW & HW versions (HW cost of goods remained the same) - all upgrades were SW Only, of course, and sold for the price difference (the only cost being the tape or floppy SW media) 


The major UPSmon reseller, a UPS reseller which sold SW Only UPSmon for use with contacts within their UPS units, won business with some quite high profile end users, such as Royal Mail and Royal Navy - although only low in volume, the 45% discount afforded to them, allowed them to make a healthy markup on the V2.0 RRP at £295 per unit

The free stickers are shown on the left (click to enlarge)

The free porting to new platforms was carried out by "yours truly"

The free phone support was also provided by me - I already worked in Unix Tech Support for the company and took all the calls from dealers (direct support from the coder and designer!)
 
I also wrote the Informix database to generate and assign licence numbers







I did spend company time writing the V1.0 and V2.0 code, of course, and the second version required deeper coding and background work on the battery charging aspects - V2.0 sales and upgrades went on to recoup this cost and more but I don't have accurate figures on this

As the page from the UPSmonII User Manual (click below left for the full document) shows, battery charge curves are non-linear and the greater the amount of charge stored, the longer the remaning amount of charge will take to store

I actaully spent quite some time measuring the timing of this charge rate, from various levels of discharge across a number of manufacturers UPS models and built and an average model for recharge times, with a safety overhead, into the UPSmon V2.0 code



















Battery charge data was written into the /etc/upsmonII.data file every 3 seconds as shown below, which was obviously a non-volatile store and would allow the system to read the previous UPS battery charge level on a system boot (e.g. 100% for a reboot, 0% for restart after autoshutdown at the end of battery autonomy)









The output on the right is actually from the "ups data" command, "ups" being a shell script which started/stopped/restarted the upsmonII daemon, interrogated and displayed the /etc/upsmonII.data file and also the /etc/upslog file, an example of which is shown below on the right






















The cable below is an example of the one that was shipped with the HW and the silver cable cover with an LED is what I used during porting sessions for SW Only UPSmon, so that I could see the flash of transmitted data and confirm operation - the developer had written good error reporting into the code though ;) and error numbers were reported by most Unix flavours and platform vendors for comms error and port open error

The Software Installation document on the right is an example of what was included with the media and licence agreement - it also included cable pin-outs for SW & HW and SW Only versions











The contents of the shipping package for the full harware UPSmon version are shown below left and an example of an external temperature sensor and remote alaem beacon on the right, which I used for demos













Below are the Unix manual pages for upsmonII (left), the compiled and executable monitor daemon program and ups (right), the supporting control shell script

















and here below are the matrix print-outs of the full C language source code for upsmonII and shell script code for ups