OK. Just to be sure, I would ignore the sensor and use fake data, so I know the exact pattern that should appear on the wires. And then verify that the data does indeed show on the wire exactly as expected. The problem with sensor data is that it changes, and whilst you might be able to say that the ultimate numbers aren't what's being transferred, it's hard to say what they should be. It's also easier to spot things like reversed bits, 7-bit data, etc.
Next, do the same for the ESP->server connection. That is, fake the data being sent to the server with something you can easily verify and check that it does indeed come out the other end properly. Sorry if you've already done this but without knowing if you have it's worth pointing out.
Assuming both the above verify correctly, the problem has to be in the ESP, so it's just a matter of intercepting the (still known, fake data) in the receive function and then working towards the server sending stuff until it is wrong.
How are you programming this (that is, what language)?