In short

Originally, that’s a practical part of my diploma thesis. The topic was proposed by GlobalLogic Slovakia, and I really liked the idea of a more complex system, from the field of IoT and electromobility, which has the potential to make the world smarter and greener.

💡 The idea behind this project.

Did you know that only 31% of potential customers want to buy an electric vehicle (EV) as their next car? While the prices and range of EVs are already on the acceptable level, the most feared factor is the charging speed, especially on trips. Although the parameters of batteries and their charging passibilities are improving significantly in recent years, this project is about the second thing we can do with this inconvenience - make that process more comfortable.

Whether it’s at home or on trips, the vehicle’s owner needs to have the ability to check the charging progress and other things about his car, remotely - from his phone. And this needs to work all the time - regardless of the location, and without the need to connect anything manually. The customer wants to open an app and find, how far he can drive if he leaves right now, in 3 seconds. Every fail spoils the customer experience!

✎ What we designed.

The system, which sends the vehicle state to the cloud, where the data are stored and evaluated. Then, cloud proactively forwards this information to the owner’s smartphone through push messaging technology, to provide the most actual vehicle status to the user. We use redundant connectivity of end-devices, host the backend on a reliable public cloud, and have a native android app serving as the user’s client.

After small changes in the android app, the project can be used also as a universal platform, not only for EVs, but also for any other (e.g. shared) vehicles, as electric scooters, motorcycles, e-bikes, or also non-smart devices as classic-bikes, with an additionally installable TCU.

⚙️ How it works.

The project consists of 3 separate parts:

Vehicle simulator

I don't own an electric car yet. Had to make smaller compromises. It's simply a Raspberry Pi in a nice box with a touch display, running custom software, that simulates various parameters about the vehicle’s state (charge level, remaining time, range, …), and which sends these values to the cloud backend.

An app is written in C++ and Qt, tries to copy a real vehicle behavior, and has a simple GUI to control it. To transfer information to cloud, we use two ways - ordinary network connection (through Wi-Fi), if it is available, or Sigfox - IoT communication technology which provides great availability in many countries.

For more, check Vehicle Simulator article, or this one about Sigfox.

Cloud backend

Is hosted in AWS (Amazon Web Services). We use a few components - an API Gateway which provides a REST API, DynamoDB - NoSQL database, to store actual and historical statuses of all vehicles, and Lambda functions which provide the runtime for service logic.

Besides that, we use Sigfox Cloud as the source of messages from the Sigfox network, and Google Firebase for push-messaging and as support for some other app features. Ofc we use JSON as a communication format between APIs.

A separate article - Cloud Backend.

Android app

Is written natively, in Java. We used Google’s recommended approach - the app is written as a single activity, with the fragments switching within it. MVVM architecture is used.

After initial login through email or Google account, the user can see a dashboard with the most recent information about his vehicle, browse data history with an interactive graph, or see the vehicle’s location on built-in Google Map fragment. Multiple vehicles associated with one account are also supported. Internally, SQLite is used to store cached vehicles statuses; API requests to the cloud backend are made using Retrofit HTTP client. For user login functionality and for storing vehicles information, Firebase Authentication and Firestore are used.

All other details are in Android App article.

What about reading the data from the vehicle itself? That was not part of my thesis. We expect a connection to the vehicle’s CAN bus or OBD port, but an official integration may be needed to obtain some information. Alternatively, some independent measuring of necessary values may be used.

At last - this page, is written in HTML/Markdown, generated by Jekyll to a static website, and hosted on GitHub Pages.


▶️ Presentation

What more is in the theory of my thesis? An introduction to what IoT, SmartCity, Industry 4.0, and Cloud technologies means; a comparison of more telecommunication technologies useful for IoT; a detailed look at Sigfox and LoRa; an explanation of cloud computing models and virtualization options; a principle of push messaging, and a more detailed explanation of how particular parts of the project are designed.