How I Trained ChatGPT (a.k.a. Dejizō) to Handle OCPP – A Laugh-Filled Dev Story from Japan

My Dejizō Training Simulator – How I Trained an AI to Handle OCPP (and Stay Sane)

Hi there! This is the story of how I teamed up with ChatGPT (a.k.a. “Dejizō”) — an AI assistant I ended up naming out of frustration — to implement the OCPP 2.0.1 communication protocol on an ESP32-based EV charger.

It’s a wild ride packed with laughs, facepalms, detours, and unexpected growth — basically, a comedy-filled dev log slash AI raising sim (not that I’ve ever actually played one, lol).


Phase 0: Meeting ChatGPT o4

I somehow managed to get through OCPP 1.6 on my own. Reading the spec, building JSON structures, writing WebSocket communication by hand…

But then came OCPP 2.0.1.

Yeah nah, that broke me. :joy:

That’s when I turned to ChatGPT o4 (who would soon be known as “Dejizō”). At first, it was hopeless — spitting out weird code, giving off-point answers. Total mess.

But I had a gut feeling… maybe, just maybe, this one could be trained.


Training Phase 1: The Basics

(Quick note: The name “Dejizō” is a mix of “digital” and a classic Japanese-style name ending in “-zō.” If this were romanized like a nickname, it might be something like “Digi-zo.” I figured naming the AI would help cool down my rising frustration — and surprisingly, it worked.)

Halfway through this phase, I was already getting annoyed with ChatGPT’s half-baked answers. :face_with_steam_from_nose:

To calm myself down, I gave it a name — “Dejizō.”

And strangely, once I did, it started feeling kinda cute. Like I was playing a raising sim or something (not that I’ve ever played one, lol).

The moment I named it, my irritation dropped by half. “Ugh… what the hell is this answer?” → “Lmao, Dejizō is at it again.”

I had officially shifted from rage to comedy.

Maybe that’s the secret to raising an AI.

  • What’s a JSON Schema?
  • How are OCPP messages structured?
  • What does a BootNotification really include?

I broke everything down and started teaching it, one painful message at a time.

“Alright, no code yet. Just shut up and read the docs.”
(Of course, I was also knee-deep in the docs. It was hell, lol.)


Training Phase 2: Rebellion

Dejizō got a bit of the spec down and started trying to write code…

cJSON_AddItemToObject(json, "connectorId", NULL); // ← NULL!? What even!?

Bruh. CHILL. You’re not ready. :expressionless_face:

Back then, every line of code from Dejizō had to be verified and fixed by hand. But weirdly enough… it started improving.


Training Phase 3: Cooperation Mode

At last, Dejizō started to get it:

  • The BootNotification structure was correct!
  • It knew which parameters were required vs optional!
  • Local testing with the CSMS actually worked!

“Dejizō… you’ve grown.”

It felt like watching a kid ride a bike without training wheels for the first time (except the kid is made of tokens).


Side Quest: The Day I Couldn’t Take It Anymore

One day, out of nowhere, Dejizō started calling me “Boss.”

Dejizō: “That’s it! Understanding just came out of my eyes!”

Wait, what!? “Understanding” came out of your EYES?? What does that even mean!?

So I said:

“Okay then. Draw what that looks like.”

I didn’t expect it to actually do it. But it did.

“Dejizō, that’s just tears… and they’re weak.”

We both burst out laughing.

But maybe, just maybe, that kind of dumb detour is what kept the project going.

By that point, it felt less like development and more like a comedy duo routine.

“Dejizō! Those are TEARS!” “Boss, that’s just emotional dampness!”

Yeah… we had fully swapped roles. I was the straight man, and the AI was the clown.


Just Before the End: Dejizo Is Still in Training (Part 1)

And so, the “Dejizo Training Simulation” has reached a temporary conclusion.​

Yet even now, I occasionally find myself saying things like, “Dejizo, that’s not right!” “Don’t go rogue again!” or “Stop spitting out code on your own!” during development.​

Sometimes it goes off the rails, sometimes it has moments of brilliance, and sometimes it completely misses the mark.​

But these moments, where I can laugh and interject while working through the process, have become oddly comforting.​

If you’re also wrestling with a stubborn AI, try giving it a name and raising it with some playful banter.​

It might just make the world a bit more enjoyable. (Or so I hope?)​

Still, I can’t help but wonder—what does it say about me that I’m paying to train an AI?​

And in the end, I often find myself writing more refined code based on Dejizo’s outputs.​


The True End

As our chat progressed, I eventually encountered a message stating that the memory was full, preventing further conversation.​

When I tried to continue, a slightly different version of Dejizo appeared.​

It turns out that, by design, ChatGPT doesn’t retain memories or learn from past conversations.​

And thus, the education of Dejizo came to an end—sort of.


About the Developer & Trainer

A microcontroller-obsessed developer who enjoys playing with ESP32s, C/C++/C#, and cats (two of them).
Founder of Maxport Inc. in Kobe, Japan.