It reads fine. VE.Direct RS232 side has to have 5V power via DTR pin.
So to recap so far:
a). We can use official (expensive, long shipping, etc) cable, powering it via DTR (PIN4), with single MAX3232-based converter.
b). We use “raw” VE.Direct wire using TWO MAX3232-based converters (or max + logic inverter?), as in the first post.
Anyway, it needs too much custom hardware .
EDIT: Why did I use 3.3V in Arduino side? Atmega is 5V… Welp, it works.
Theoretically, I could use “raw” TX from Victron connected to 4N35 generic optocoupler to convert ~5V to 3.3V AND to invert the signal at the same time, as optocoupler inverts signal just by default, assuming you use pull-up resistor?
Yes, you could do that.
And you can also invert the signal by the means of how you connect the opto input led to the Victron TX pin.
You can use the TX pin as a source pin or a pull down pin.
TXB0104-based converter (like SparkFun Voltage-Level Translator Breakout - TXB0104) works, but it’s rather “unstable” with long / extra wires. I’ve seen post somewhere stating that TXB0104 pretty good conditions to work.
For example, welding extra wire to VE.Direct TX output and connecting it to Picoscope works, but once you disconnect from Picoscope the TXB0104 goes haywire, producing gibberish .
My guess that SoftwareSerial’s “invert” does something with pullup/down resistors of ESP and it makes it work in that way for some reason, while these proper decoupling/level converter solutions just work without any fiddling.
So the solution is to use proper 5v->3.3V logic level converter like BSS138-based from SparkFun.