I just interfaced an ESP8266 to a CurrentCost Envi (CC128 internal name). There are numerous threads here and around the 'net with pieces of advice but I had to do a fair bit of work to get this working, so I thought I'd share what I learned here.
The pinout of the RJ45 connector is found in [3], and you want the GND (pin 4, Blue is the standard cat-5 color) and TX (pin 8, Brown). The TX connects to whatever Arduino pin you are going to use for serial input.
If you are using an Arduino Uno with the SoftwareSerial library, you need to use a baud rate 57000 instead of 57600. I guess this accommodates operating near the limit of the SoftwareSerial library on the Mega.
If you are using an ESP8266 (handy to add wifi logging to your old power meter, which is what I did), then use the EspSoftwareSerial library, and the following init code:
EspSoftwareSerial::UART cc128;
cc128.begin(57600, SWSERIAL_8N1, 5 /* Rx */, -1 /* no Tx */, false, 256);
cc128.enableIntTx(false);
cc128.enableRxGPIOPullUp(false);
Here I'm using GPIO pin 5 as the input, there's no output (the CC128 ignores input anyway). And - this is key - we disable the GPIO pullup resistor on the ESP8266 chip.
With this combination, I have reliable read()s from the CC128.
[1] Arduino UNO, SoftwareSerial and CC128
[2] Mega cannot read serial output from Current Cost CC128
[3] Serial data output incorrect language?