PowerTracker is the Liip-made open data solution created to track and manage power cuts in case electricity production becomes scarce in the near future. The solution covers a large range of end users and their different needs. One side of the challenge was to collect and synchronise data from all Swiss energy grid professionals, using a web platform. On the other hand, users of the Swiss energy grid (the Swiss population) could not rely on the use of a web application. The challenge for us was to give users access to information about power cut schedules even when there is no power (and thus no internet). As a solution, we created the PowerTracker mobile application.

Why a mobile application?

From the beginning of the project, we knew that we had to keep in mind how crucial accessibility was with our solution. It needed to be usable by the whole Swiss population. And so we immediately considered not using an application. Instead, the use of cellular broadcasting seemed a perfect solution: anyone owning a phone connected to the Swiss mobile phone network could receive alerts without having to set up anything. However, we foresaw several downsides that made us discard the idea. Could we provide people with information they really needed, instead of generic information for the whole country? How could they choose what was relevant for them to see? And how could they retrieve this information later once it was received?

We needed a solution that was both customisable and available offline, and so we started working on the PowerTracker mobile application for both Android and iOS platforms.

What does the application do?

This app was created with a single task in mind: Inform the population in case of power cuts. Any feature we would develop needed to serve this purpose.
Keeping this mindset during the whole development period, we managed to stay focused on the business value and discarded ā€œcool but not so usefulā€ ideas. The final solution does not require a login, nor stores or sends any private or sensitive user data. From a user perspective, the app gives a feeling of pure simplicity. The setup is as easy as it gets

  • Open the app
  • Enter your address
  • Close the app

Of course, you can select further addresses and give them a label, and there is a section with useful information you might need during power cuts, but there is not much more that you do in the app. Once this is done, users get a notification each time information is available about power cuts at their selected addresses. Furthermore, they can open the app at any time, even offline, and see the latest information for their addresses. They will also be reminded one day before a power cut so that they can plan accordingly.

So how does it work?

The concepts behind the scene are standard, but carefully selected to keep the app lightweight, energy efficient (it does not use any battery when closed) and performant. It is built with ā€œprivacy by designā€ in mind. In fact, we quickly settled for a concept that did not require the exchange or storage of sensitive user data.

The application is built using the native frameworks for both Android (in Kotlin) and iOS (in Swift). It mainly handles three kinds of events:

  1. Editing the address list
    When the user registers or removes an address, the app notifies the backend passing it a unique identifier for each address the user has an interest in. Along with it, it sends a unique token used to send back notifications to the phone. The backend returns the current information for the addresses. This takes place in the app and requires an internet connection.
Data update process when adding an address
  1. Keeping the addresses up to date
    When new information for a set of addresses is available on the backend, the backend sends a push notification to all affected users. At that point, the notification data does not contain the full set of updated schedules. It informs the users that something changed, and in the background, the app starts a process that will query the backend for the new information. The goal is to keep the notifications as lightweight as possible to ensure they are received. The update job itself, once registered by the phone, can be re-ran in background as much as needed in case of a bad connection.
The data is kept up to date when a change is pushed
  1. Sending notifications
    As soon as the list of schedules is updated either by editing the address list (1) or getting a change notification (2), the app also browses the list of power cuts associated with the addresses. For each cut a notification is then scheduled to be shown 24h before the actual power cuts. These notifications are planned locally on the phone and do not require an internet connection. This means that as long as the phone was online at some point, the user will be notified one day before the cut, even if their phone is now offline. They can also open the app at any time and consult the locally saved updated information without needing an internet connection.
The user is notified 24 hours before a powercut

Privacy by design

As previously mentioned, the app and data synchronization process were designed to preserve the user's privacy. No sensitive information is ever needed nor shared.

What is sent to the PowerTracker backend?
The app only communicates two things:

  • A notification identifier, allowing the user to receive notifications. This token regularly changes and cannot be used to identify the user.
  • A list of unique identifiers, allowing the backend to know which addresses the user wants to get information for. These identifiers are not human-readable.

What is stored locally on the phone?
The phone keeps the human-readable addresses that the user selected, and with them, the information about power cuts that was received from the backend. This information, although not sensitive (anyone is allowed to get power cut information for any address), is stored on the phone in a ciphered way.

PowerTracker is a relatively small app, but it encapsulates our principles and values. It is purposeful, user-centric, respectful of one’s privacy and accessible to all. We hope you will install it, hoping you will not need it.