Central System for e-mobility application
Open Charge Point Protocol(OCPP) done with Python
Every project we start follows the same procedures, standards are improved all the time, this approach allow us to repeat the successful use cases in all new projects. We always work very closely with technical team on client side, it was not a difference this time, thanks to that even though Electrical Vehicles(EV) industry was new to us we quickly received needed information and started defining use cases, creating high level diagrams and preparing development environment.
An important thing, we haven't worked before on e-mobility apps and Open Charge Point Protocol(OCPP) implementation, Electrical Vehicles(EV) was completely new to us. Although, having multiple years of experience and team of senior developers let us overcome any problems. Existence of OCPP protocol allowed us to plan things on higher plane and implement event driven architecture with message broker - RabbitMQ.
IoT and Charge Station
Our working mode is always adjusted to project needs, because we never worked with charge stations using OCPP protocol, we decided to start basic integration at the very beginning to detect problems at early stage.
In case You would have doubt if team from Poland can work with charge stations located in Malaysia, we can honestly say that there was no problem at all. Of course we spend some time at the beginning to connect IoT but this was easy going problems thanks to daily communication with client on WhatsApp and Slack.
Above first logs from remote charge station.
Organizations and Resources Management
Beside charge station integration we needed to handle complex organization schema. Our client in the app act as main/root organization, when new organization/company is added it is treated as sub-organization. Sub-organizations can use our client mobile app or create one on their own.
Resources and roles were very interesting for this project as client wanted to give each sub-organization an option to create their own roles. For example, charge station management role will be composed of resources like API endpoints that allow to change charge station configuration.
Another thing that was interesting to implement is the fact that one email/phone is used to access all organizations admin and mobile apps, where each login has different password. We added 2FA with Twilio Verify.
Migration of existing Ruby on Rails code base
There are pros and cons here. For positive I would add minimum valuable product(MVP) is done, product is used by some clients, this only help as client knows better on what we should focus. For negative I would say, it is always more difficult to rewrite existing product that is already in use than to create new one, so it was a challenge for us, migrating existing database to new schema, maintain the same API endpoints and add new features.
At the end we were selected for this project as we specialize in microservices and cloud computing, service responsible for connection with IoT charge stations must scale well. But I want to say that migrating software done in one technology to sth different doesn't need to be risky if planned well.