optimizations - cache frequently called temp sensor functions. In principle the value can change between each call, but in practice this change isn't significant. Just a few microseconds apart.

factored out multiplication - this saves 110 bytes. (!)
some more optimizations - factored out more multiplication