Tesla Wall Connector Gen 3 via ESPHome + RS485 (dynamic current control, no WiFi)

Ah nice, that actually tells us quite a lot :+1:

If it starts charging when you set house_main_fuse to 6A, it’s basically because 6A is the minimum charge current. So the system ends up allowing exactly 6A, which is enough for the TWC to start.

So it’s not really “correct”, it just happens to land on a valid value.

From your screenshot it looks like TOA is getting values properly, so communication is at least partly working, which is good.

I would still set:

  • House Main Fuse to your real value (e.g. 63A)
  • Wall Connector Max Current to whatever your circuit allows (30–40A)

Otherwise you might get some weird limiting that’s hard to understand later.


About the RS485:

Yes, GND is the middle pin on the ESP 485 connector.

But you normally don’t need to connect it.

Just:
A → A
B → B

ESP is powered via USB, and RS485 is differential, so it usually works fine without GND. If things are unstable you can try adding it, but I don’t use it in my setup.


Also, for debugging:

Go into ESPHome web UI and bump the log level to DEBUG or VERBOSE and watch the logs live. That can give a lot of hints if something is off.

Many thanks for your clarifications. It helps a lot. Once I get it working, I’ll post some feedback here.

Hi Klangen82, great project! I have the same setup (ESP32 + MAX485 on GPIO16/17/4) and I can see the TWC3 is already polling my ESP32 via RS485 (registers 0x88, 0xF4 etc).

However when I try to configure the Remote Meter in Tesla One I get “Failed to connect to remote meter’s Wi-Fi access point”. Did you have to complete this step or does the TWC3 follow RS485 data automatically without configuring the Remote Meter in Tesla One? Thanks!

I was getting that quite frequently. Sometimes you have to go into your phone settings and select the Wall Connector Wifi network manually. This is broadcast for about 15 minutes after you long press the touch button on the charge handle - and is generally signified by a flashing blue light on the unit. Assuming you have used the sticker on the manual or the one inside the unit to get the wifi network name and password. Cheers, DJ

Here is a video how you connect to the Tesla Wall Connector

Otherwise like @joyceda said would work.

thanks, but the tesla one app works correctly and i can see/read the TWC from home assistant so wifi is connected and correctly as well.

im talking about pressing the button “Remote Meter Tap to Configure” in the tesla one app

@Klangen82 I made a test circuit and connected it to my friend’s TWC. After one or two tries, the meter popped up on the TOA and we configured it as of your images on github. Their house is a single phase though.
Anyway, we set the max charger to 32A, and house fuse to 32A as well. Started with Auto Mode = Off (manual mode). The TOA shows the meter’s current. For example when we set the manual current to 6A, it was showing 27A on TOA. Changing the that to other values, immediately reflected on the TOA. So far so good. Looks like your awesome emulator, emulates a meter. Great Job!

However, when charging, the car always draw maximum possible, around 7KW - we expected it to follow the meter readings but no luck. It seems there is no logical connection between the meter and charger’s power.
Do you know what’s missing here?

P.S. there is no many settings on the TOA. The only thing we thought could be missing was Control Switch options. That option is Disabled on the photo you attached on the github. In our case, it was disabled too. We tried to turn it on, but regardless of what settings we set it on, when we pressed back, it shows Disabled again.

P.S. 2, being involved with a RS485 sniffing and reverse engineering myself, I know this is a difficult project and needs lots of time, patience, trial and error. Well done and many thanks. Your esphome code is also another piece of brilliant work.

I think you have some communication issues but I don’t know what as I cannot troubleshoot. Since you are using a generic MAX485 and not a board with built-in RS485 direction handling, I would try adding a flow_control_pin in ESPHome. On MAX485, DE and /RE are normally used to switch between transmit and receive, so you can tie DE and /RE together and connect them to one ESP32 GPIO, for example GPIO4, then configure that GPIO as flow_control_pin in the uart section. ESPHome’s docs mention this specifically for RS485 half-duplex on ESP32, and the Modbus docs call out common MAX485 modules as a case where this is useful. Also make sure A/B are not swapped and that TX/RX are connected to DI/RO correctly. UART Bus - ESPHome - Smart Home Made Simple

Thanks a lot for the kind words, really appreciate it, and great work on your testing as well :raised_hands:

Yes, for manual control to work, Auto Mode in ESPHome must be OFF.

When Auto Mode is ON, the manual slider is ignored and the current is calculated automatically based on house load and fuse.

When Auto Mode is OFF, the manual setpoint should directly control the charging current.

So if you set 6A in manual mode, the charger should drop to around 6A.

One important clarification: the value you see in Tesla One is the meter current, not the charging setpoint.

In my code I simulate the house load as:

fake_load = fuse - target_current

So for example with a 32A fuse and 6A target, the meter will show around 26–27A, which matches what you are seeing. That part actually confirms the emulator is working correctly.

Since your car is still charging at ~7 kW, around 30A on single phase, it means the Wall Connector is currently not following the control signal from the emulator, even though it clearly sees the meter.

That suggests the issue is not in the ESPHome logic or RS485 communication, but more likely in how the Wall Connector is configured to use the meter for load management.

Also make sure:

  • Grid Phase Count is set to 1 if your installation is single phase
  • Voltage matches your system, typically 230V in EU

One more thing: my setup is 3-phase, and the emulator reports values on all phases. If your installation is single phase but the ESP is configured as 3-phase, it will report the same current on all phases, which could confuse how the Wall Connector interprets the meter data. So I would definitely try setting it to 1 phase.

I have only tested this on a 3-phase 230V setup, so single-phase setups may behave slightly differently.

Thanks! We have 3-phase, Grid Phase Count is 3, voltage 230V.

The core issue is that when we press ‘Remote Meter - Tap to Configure’ in Tesla One, we get ‘Failed to connect to remote meter’s Wi-Fi access point’.

We cannot complete the Remote Meter configuration step. Did you get this error too, or did the configuration in Tesla One work immediately for you? And what exactly did you configure there - just the conductor CTs?

What you are saying all makes sense to me. And as you said ESP, working as an emulator, is doing its job - reporting a fake house consumption current. I already setup everything as single-phase, and 230V as you mentioned.

I’m with you saying the logic and communications looks alright and the wall connector is not using the meter data. The question is if there’s any extra setting on Tesla One app or Tesla user app that we are missing. is Control Switch option related to this?
Thanks.

I am experiencing a similar issue as Manunited10 - but very excited by this project. I have a slightly modified version of the code working with an all in one device (Waveshare ESP32-S3-RS485-CAN-Module). The device is being powered from the 12v and ground so I can leave it within the wall charger housing. Everything (I think) is working as expected and the TOA is reporting exactly the values I am posting via the emulator. However when I plug in our Nissan Leaf it charges at the full 6.4kw even when I emulate 100% house load. The only action I can presently influence with the set up is that the car will not start to charge if I connect it while the Wall connector is being given the ‘house is at full load’ signal. As soon as I drop the fake load value to something lower - the car starts to charge but at the full 6.4kw. I will post some images and diagnostics shortly. I am hoping to find what secret sauce causes the wall connector to vary its power output (has anyone been successful - if so on what firmware version). I have a powerwall 3 providing the household power / solar information (firmware: 25.26.2 2c4bb00e) , Tesla Wall Charger 3 (FW:26.2.0-fdee999) and I am trying to get to a point where I can charge a 2019 Nissan Leaf on solar excess. I am a Brit living near San Diego with solar generation curves to die for - unlike my 15 years of solar in the UK Peak District!

1 Like

It’s great that more people are getting involved.
If you had any progress please update us. We are stuck at this point.

Interesting that there’s a 12v and gnd terminals there. On my friend’s there’s only two terminals for rs485 pins which meant we used external power.

Just thinking loudly here. Could it be due to non-Tesla vehicle? I mean somehow they decided to ignore other brands? Doesn’t make sense to me since it’s not safe to draw more current than what you’re supposed to!
@Klangen82 do you have a tesla?

Hello,

I’ve been struggling with this Neurio emulator for some time.
I have a Nissan Leaf 2019 ZE1 too.
I don’t have a powerwall.
I have TWC3 v26.2.0+gfdee999 (terminal with only 2 pins for rs485, it doesn’t have GND and 12V pins, like in your case).
The house power is single-phase.
The code given by Klangen82, which is very interesting, didn’t work for me, or maybe I didn’t have the ability to adapt it to my hardware. Communication with TWC3 worked ok.

Erichmenge has a Tesla Wall Connector 3 and a Rivian 2025 car, so not a Tesla. He has an interesting code here:
https://github.com/dracoventions/TWCManager/issues/20#issuecomment-3050617011

For my situation, it was more stable.

You can also find some of my observations on the forum:
https://github.com/dracoventions/TWCManager/issues/20#issuecomment-4120416071

1 Like

I did some testing today and it looks like the latest firmware on the Tesla Wall Connector Gen 3 has changed something that breaks my setup.

I can still set e.g. 6A and it starts correctly, but as soon as charging begins it quickly ramps up to max in my case ~16A again. So it seems to accept the value initially, but then overrides it.

Given the issues others are seeing in this thread, I suspect newer firmware no longer treats the RS485 / Neurio data as a strict control input. The charger still polls and reads the registers, but it doesn’t seem to trust the data the same way as before.

I haven’t tried downgrading firmware yet (not even sure it’s possible), but I assume older versions would still work.

I also tried tweaking the RS485 communication, but it feels more like the problem is how the data is modeled rather than the communication itself.

Hey guys, got my TWC Gen 3 for couple weeks and I was very excited to find this integration!

I hooked up TWC on single phase 230V, attached the LILYGO T-CAN485 ESP32 board, but I face same issue as others - as soon as there is enough “space” from my house load, charger is starting to charge with maximum I manually set in Tesla One App - 32A.

I hooked up Tesla one app simultaneously, while sending different values of my house load in A and what I can see that is TWC is receiving the correct values which are sent from the ESP, but for some reason do not make any limitation on charging power.

I am using it on Mercedes EQA with test firmware v26

@olaliv are you saying that Tesla WC Gen 3 loadbalancer · GitHub is working with latest TWC firmware 26.2.0?

I haven’t tested Johado’s code. It’s too complex for my programming level, I don’t understand its algorithm and I don’t know how to adapt it to my hardware.

In the last few days I’ve been testing sequences from Erichmenge’s code, adapted to my situation. We don’t have Tesla cars, so there may be small differences in TWC behavior.

Erichmenge’s code is here, and it worked for me with the latest TWC3 firmware. It’s just that it has quite large current oscillations.

I also use the current measured by TWC in my calculations. Not from an external sensor.