Point of Sale & CCTV

Scenario 1: Monitoring Cash Registers at a Casino

Problem  Description

A Casino has a Squirrel based point of sale (POS) system for their restaurant and bars. There are several registers located around the facility. Management requires a way to monitor exactly what is happening at the cash registers. They already have cameras aiming directly at the registers, but the cameras need to see not only the cash drawer, but also the screen, the employee, the counter, and the customer. What is being entered on the till cannot be read from recorded footage. Management wants to be able to take the transaction data from the cash register and record it right on the video recorders. This way – on playback, the security manager can read exactly what the employee is ringing in.


The Squirrel POS system runs on its own network, separate from the digital video. The POS system offers a data monitoring port option, and streams everything out that port in a fixed length string format.  The  POS data port is a TCP client connection, and requires a TCP server to connect to. The Casino is running Avigilon Network Video recorders (NVR), which feature a record POS Transaction option. The NVRs can accept data, and do this using a TCP client connection. They also require a TCP server to connect to.


Both the POS and the NVR require TCP servers to connect to. They cannot talk to each other as is. The POS data port option runs on each register – so there are actually multiple streams to capture. This means that the TCP server must be multi-threaded and support multiple streams. The output streams include all data; special control codes,  product numbers, reference numbers, employee id numbers, etc rather than human readable text. Without translation, the text coming from the POS is essentially useless.


Using one of the empty NIC ports on the NVR, we configure that to connect to the POS network. We install Universal Data Relay (UDR). UDR allows multiple source and destination connections. So first we setup a SOURCE that operates as a TCP server, listening on the same port that the POS network transmits on. We then setup a DESTINATION as a TCP server, which the NVR can connect to. We test – and confirm that data is moving from the POS to the NVR. Unfortunately it is still unreadable garbage – so we have more work to do. We export a CSV list of menu items and their ID numbers from the POS system. We put that in the LIBRARY folder of UDR. We export a CSV list of employee IDs and put that in the LIBRARY folder. We contact Squirrel and get a list of codes and what they mean. Now we can see that code 1102 = ADD ITEM, and code 0010 = CASH TENDERED. We put that into a CSV file, and stick it in the LIBRARY folder. Finally, we write our translation script in Universal Data Relay. Since the output from the POS is fixed length, its easy to tell Universal Data Relay to LOOKUP the characters between x and y in each library. Now – we test. We see that the POS sends a string of numbers, and the NVR receives human readable strings. It is now possible for surveillance operators to search for all occurrences of NO SALE, or VOID, or PROMO ITEM on the NVR! Studying playback of video confirms that the employee was actually processing valid VOIDs or PROMOs. Successful completion!

News & Comments!