Key Challenges in EV Charging Software Development

Sign up for our popular daily email to catch all the latest EV news!

Article by: Lemberg Solutions

Providing modern and efficient solutions for electric vehicle charging stations requires more than hardware — software plays an equally crucial role. Yet, the development process often comes with unexpected turns, even for those who’ve worked on energy tech for years. Here are seven key challenges to expect when developing software for electric vehicles, outlined by the Lemberg Solutions team.  

Key Highlights: 

  • Integrating all system components will be easier with clear documentation and constant testing. 
  • Developing emulators requires much effort, so it’s important to consider adopting test-driven development. 
  • Be ready to keep up with industry protocols, certifications, and standards, along with the nuances accompanying them.
  • Optimizing your software for high performance might require rethinking early decisions. 
  • The system interface must adapt to the evolving needs of its users.
  • Be prepared for long-term collaboration with engineering teams due to the development specifics.

Bringing it all together

Integrating all components together can be one of the most complex challenges when multiple teams and vendors are involved in software development. For instance, one team might develop a controller that manages energy consumption, while another team works on a controller responsible for communication between the station and the electric vehicle. Additionally, a third-party vendor may be involved, specializing in communication controllers or providing server-side communication between users and the mobile app. 

How to approach it? One of the most obvious, yet often overlooked solutions is to create detailed documentation and keep it up-to-date. This can help prevent situations where each team acts independently, making it difficult to bring everything into a cohesive working system. It also addresses issues when one team makes software updates using shared documentation that lacks crucial information. 

Another important aspect to consider is constant testing involving multiple participants — developers in the office, QA engineers, and users on a testing station. Functionality may stop working at any stage of the process, so it’s crucial to catch issues before launching the product. Even models of cars from the same manufacturer but produced in different years may experience issues. Sometimes, a vehicle that has been charged successfully ten times may encounter problems on the eleventh charge. While there is a global agreement for manufacturers to adhere to the same protocols, some manufacturers may have unique details in their specifications. Constant testing helps identify those nuances and take them into account. 

Developing emulators

While testing is essential to ensure all parts of the software work well together, setting it up takes a lot of effort. 

The charging station consists of several components: PDC, a power controller, an Electrical Vehicle Controller, a controller for car communication, and the central “brain” that integrates everything — HMI. Engineers develop emulators that replace the actual part of the station or vehicle with a “dummy” to test the operation of a separate real sub-device.

For instance, engineers may use an additional app and hardware to simulate the power controller, allowing specialists to validate the HMI solution without needing access to the station with its real components. However, it’s important to remember that creating emulators requires time and effort, which may slow development. Moreover, whenever the controllers’ logic is updated, the emulators must also be adjusted to ensure consistent and accurate communication.

One way to overcome this challenge is to consider test-driven development. In this approach, engineers create emulators for other teams to use, even before they start writing software for their own devices. Ideally, the engineering team should have access to real devices and software from other teams, and this access should be agreed upon at the project’s outset. This approach helps identify potential issues early in the development process. 

Regulatory compliance

In energy software development, dealing with protocols, certifications, and standards is another aspect that can cause issues if not handled properly. Engineers must consider regulatory compliance during development, and since these regulations are updated periodically, the team needs to stay informed about the changes.

Some communication protocols, such as OCPP 1.6, can be challenging to interpret, causing issues in development. For example, while the protocol may work seamlessly with one vendor, this doesn’t guarantee the same results when connecting with another vendor. 

Another example of a common issue arises from how the protocol fields are categorized — some are marked as required, and others are optional. To speed up development, teams may initially implement only the required fields. However, during testing, it often becomes clear that some “optional” fields are actually essential for everything to work correctly. 

Ensuring high performance of software

Achieving high software performance is another challenge that requires reevaluating initial decisions that seemed good at the time but might not work well as demands grow. 

For example, you might begin by working with a pretty powerful microcomputer, such as the Raspberry Pi 4. However, as your system’s functionality grows, your engineering team may face challenges such as slow software performance and, in some cases, software crashes. In such situations, it’s essential to identify the problematic areas of the software and optimize them. This process often involves refactoring the significant portions of the code. At times, simply optimizing code may not be enough. And even if everything seems to be working correctly, upgrading to more powerful hardware might be necessary to reduce future risks. 

Changing requirements

Even with discovery workshops and clearly defined requirements, evolving ideas and shifting needs are a natural part of any development process — especially when you want to keep up with the times and add more software features. Changes can also arise at every testing stage, as user feedback often highlights areas of improvement. 

For example, in the UI/UX design context, testing can lead to developing new ideas. They can include adjustments to the color scheme, changes to the style of UI elements, or the addition of new information that the user needs to see. 

Yet, changing requirements demand careful attention to avoid turning development into an endless circle of modifications. A crucial principle is remembering that having an idea doesn’t mean you must act on it right away. In this scenario, effective communication is essential: it enables the team to discuss the advantages and disadvantages of the idea and set priorities. 

User-friendly software

Creating an intuitive EV charging experience involves various nuances, as the software must meet the diverse needs of its users — drivers, OCPP providers, technicians — through a single interface. That’s why UI/UX designers must consider various user scenarios and pay close attention to feedback during testing. 

As the market becomes more demanding, a user-friendly HMI alone may no longer be enough. You might need to offer additional solutions that are both intuitive and align with the station’s existing UI style. 

EV Charging

Readiness for long-term cooperation with engineers 

Developing EV charging software isn’t a short-term effort, and it’s not always clear how long it will take to bring a product to market. This uncertainty presents another challenge: preparing for long-term collaboration with engineering teams. 

Some projects might take two years to complete due to changing requirements, system complexity, and the involvement of multiple teams and vendors. For example, your system may include various devices, such as HMI, PDC, and EVC, which different engineering teams could develop. 

However, the cooperation with engineering teams doesn’t end after the product launch. To remain competitive in the market, you may need to change your product based on user feedback and keep your product aligned with industry standards. 

Being aware of the challenges outlined above will help you navigate your software development more confidently, avoiding unnecessary distractions. 


Vasyl Dykyi

Vasyl Dykyi is the Embedded Engineer Tech Lead at Lemberg Solutions, a tech consulting & software engineering company. With over 15 years of experience, Vasyl specializes in software development, particularly in the automotive industry. At Lemberg Solutions, he develops middleware and desktop applications and system solutions for embedded electronics. 

Yevhenii Onishchenko

Yevhenii Onishchenko is an Embedded Linux Engineer at Lemberg Solutions, a tech consulting & software engineering company. He has experience developing, debugging, and maintaining embedded Linux systems on various hardware platforms. Recent work has focused on embedded Linux-based platforms for EV charging infrastructure: developing and integrating charging communication protocols, such as OCPP and ISO 15118, secure connectivity modules, and real-time control systems.

Sign up for our popular daily email to catch all the latest EV news!

Avatar photo
The EV Report

The EV Report is a digital platform dedicated to the global electric vehicle industry. It is a product of Hagman Media Group, and its mission is to inform, engage, and connect industry professionals and EV enthusiasts with relevant news and insights.