How we introduced innovations in a large company using the example of Kiosks on Windows 8

Hello Habr. I work for Caterpillar in one of its Australian offices. On duty, a few, I would say, interesting projects have accumulated. In general, Australia, as you know, is very far from everything, and although the Internet has erased the borders between the continents, new things reach us six months late. This does not apply to software that appears earlier for download (you know, we are in the time zone immediately after New Zealand), but films are released later than in Russia, while in Russia they also need to be translated. So with technology, people here are not ready for the new. Even so - they do not need it.

In general, I will start with the fact that the company (or correctly call it a group of companies) consists of approximately 90 branches and 100k employees scattered across the countries of Southeast Asia and Oceania. The whole group is very Microsoft-oriented, starting from development to the main ERP system, so today we will talk only about the products from Microsoft that we used, and a little about Cisco Unified Communication Manager.


It is necessary to develop an Information Kiosk for receptions in all branches (about 90). It is necessary to support several languages ​​and the platform itself should integrate into everything that is possible. As I wrote above, the company is Microsoft-oriented and uses the whole range of products, including Office 365 (Exchange, SharePoint, Lync). The most interesting thing is that somehow it happened historically that the company uses Cisco as a communication platform, but at the same time, according to the rules of the rally, on Lync. That is, you cannot call a landline Cisco telephone with Lync. The kiosk must integrate into the Cisco Unified Communication Platform (so that users can call directly from the kiosk).

It is also necessary to be able to use an RFID card for authorization (each employee of the company has an RFID card). Why is it needed for the Information Kiosk? Let's just say that I’m not familiar with whether this is practiced at enterprises in Russia, but here, every time you move between buildings according to the regulations, you need to fill out a book at the entrance to the building so that the security service knows where and who is if something happened. In addition, contract work is very common in Australia. The company hires highly specialized specialists for a short period of time to carry out a specific job. Now imagine 150 contractors scattered across dozens of hangars. He turned the wrong way, went into the wrong door - and crushed with a wheel. Therefore, the main task of the Kiosk is to register people, help them find the right company employees and enable the security service to have a clear idea - where, who and when. So to summarize.

The cat must be able to:
  • Hold languages ​​depending on location;
  • Support the ability to search for employees;
  • Make a call;
  • Support the ability to use RFID cards for quick registration.


Forgot to mention, it was necessary to do something new. The company goes through the so-called modernization and managers are eager to see something innovative, something different from the DBS green screen.
In general, after thinking a bit, we decided to try to write a Kiosk for Windows 8. When we just conceived this project, the eight was in Preview and it was a bit scary, but the deadlines were not dead and the project was in the category of innovation - this is when you have a couple of developers who can work 10 hours a week and you need to show the result once a month.

So, a diagram of the technologies and products used: I

’ll immediately show you what the application looks like, and then in order for each item. I apologize in advance for the quality of the pictures.

Main screen:

Search window:

Registration Screen:

Using RFID

I still dream of this beast in terrible dreams, for all its seemingly simplicity in development. Who has not played with the RFID frame on the Arduino? Just after all, huh?

When the application shell was ready, we started integration with RFID. The process is very simple: an employee of the company leans the card against the reader and the application asks for the name of the employee with whom you are meeting. At the end of the meeting, scan the map and the application wishes you a good day. However, problems started with the equipment. At first it turned out that we use mega-protected readers worth almost 600 bucks each. Those who worked with RFID locks know that a reader is only half the trouble. It connects to the controller, and the controller to the PC via the Serial Port. It turned out that Metro applications do not support anything from System.IO. Our programmer began to think of different ways how to make the Metro application gain access to the ill-fated Serial port. I’ll note that we worked with Windows 8 and didn’t yet know about Broked Component,

Then in the eight, even the Device API was scarce. In general, for the eight, we did not come up with anything except to run the win32 client, which communicated with the Metro application through the file system. This, of course, was no good, but then there was already a rumor that they would add support for Bluetooth in 8.1 and we began to hope ... Microsoft guys did not disappoint - the new device api was easy and easy to use. The only thing I didn’t like was the need to pair the device first before using it. In addition, the device api is designed in such a way that Windows will ask you whether you can use this device or not, which added some discomfort.

The second problem was the lack of Bluetooth RFID devices on the market. It was impossible to just take and buy an RFID Bluetooth reader that would work with our cards. I had to turn to local companies and, fortunately, one company agreed to help. As a result, a month later, on my desk was a new reader that was powered by USB, but transferred data to the Metro app via Bluetooth. And everything would be fine, but now after 4 months of stalls work, we observe that sometimes Windows just cuts off the connection. This happens after about 4-5 days of work. Wrote on MSDN, asked in those support, while only advised to restart the connection every 8 hours. We already decided to fix how a new feature came out in Update 1, Broked Windows Runtime Component. In a nutshell, this thing allows your Metro application to talk to a regular Windows application. This was just our case. We have omitted the whole logic of working with RFID in the Broked component. I can say that so far there have been no problems, we will see how it will behave further.

Cisco UCM

I will say right away that the solution that we applied is not the best, and I will be very grateful if anyone would share a good alternative. Cisco is a very cool company, but for some reason it seems to me that their implementation of integration is not very practical and, as it were, lags behind the general trends in the development of the web. All these ActiveX plugins are somehow not in Cisco style. However, Cisco Unified Communication Manager is a fairly nice platform; the only thing is that Cisco did not have any suitable tools for us to easily use in our application. I won’t go into details, who are interested, write - I’ll tell, but in the end we selected the old Office library - Office.Interop.UccApi.dll and wrote on top of it a small wpf client that launches the local web server, and the Kiosk simply calls methods - call or hang up.


As you can see in the very first picture, and as I said at the very beginning, we chose SharePoint as our database and the source of all information about employees. At the beginning of development, we came across a very interesting example from Microsoft ( Contoso Learning Companion ), which fully reflected our case.

Each location (sub site) has a set of sheets with a configuration. We need the ability to manage account settings, for example, for Cisco directly from the portal. Also, if you look at the second picture of the application, on the left under the search there is a quick access zone. For example, a user entering a branch does not know who is responsible for finances or HR. By clicking on the icon, the application will show only people from this branch who are responsible for HR. Each location also contains a list of all visits and all information is aggregated and available at the highest level (Reception).

SharePoint is just as good when it comes to search, especially in the new SharePoint 2013. All employee searches are two dozen lines in js. Everything works quickly and efficiently. In general, integration with SharePoint was the only task with which we had no problems at all. The shell was written in a couple of days and works very stably.


We obviously knew that the application would not go through the Windows Store, because we use too many win32 components, although if you remove all the extra features, you would get a good product, what do you think? Since we have the ability to use SCCM, we just rolled everything into image (yes, by the way, we use Windows 8.1 Enterprise Embeded).


At the moment, the application is deployed in 23 branches. Attendance per day is about 250 people. We have developed a small html5 application for security personnel, so that we can monitor people if they are not at the computer. The main portal with BI component for data analysis is also available. We noticed that most people come on Tuesdays and Fridays.

I know it turned out a little messy, besides, I could screw up with the translation of some terms, since there is no way to practice the technical language in Russian. Ask questions, I will be glad to answer.

PS: So nervous that I forgot to write about the most important thing. How much did it cost and why was it impossible to buy a finished product? The cheapest kiosk costs $ 4-5 thousand, and this is just a box + add 5-6 thousand for simple software. I know the prices can be a little scary, but that's how we live here.
In our case, we use the Dell Optiplex 9010 for $ 1400 and it looks like this:

Also popular now: