These are all good solutions. As mentioned by others, it boils down to a few different options. Each type of monitoring has benefits and drawbacks and your use case:
- Monitor power in the breaker panel or on the way to the outlet/EVSE. I personally like TED (The Energy Detective), but many others are available. Neurio, Efergy, Sense, or simply an old-school electric meter wired in-line like the Tesla Living article outlined. My understanding is that these devices tend to be the most accurate. The main issue is that if you have multiple vehicles charging, you can't automatically attribute a single charge session to a specific vehicle. These tend to be very simple to use and can be installed for a couple hundred dollars as a one-time purchase.
- Monitor power in the EVSE. As mentioned, the OpenEVSE does this. It displays a running total of the Wh delivered in the current charging session and the kWh delivered over the life of the unit. The caveat is that at least for some of their units, there is no voltage measurement, so they make this calculation assuming a stable 120V or 240V supply, which is not the case. You also can't automatically attribute a specific charging session to a specific vehicle. If you don't have your charging solution in place already, with the proper EVSE purchase, this could be a no-additional-cost solution (initial or on-going).
- Monitor power in the car using the Tesla API with something like TeslaLog.com. This has the benefit of no upfront cost, but does have an ongoing subscription cost. This could be avoided if you run the monitoring on your own home-based servers that are already have running 24-7. This would isolate charging sessions across multiple vehicles that you have in your household fleet and would also keep track of charging sessions that are away from the home where the other two forms of charging. This would include Superchargers, Destination charging, workplace charging, really anything away from the home. I don't know how these services handle charging sessions when the car is parked somewhere without cellular service (underground parking garage for example). That may or may not be an issue for your use cases.