Why do all of your variable names have temp in them? Is nothing permanent in your world?
Wire.print("1"); //192 shows up as 92 so fudge it
No. This is wrong. It seems clear that the LCD expects some kind of "start of text" indication, and so it consumes the first character sent as that indicator.
I would like to see a link to this LCD. I don't think banging out an extra character is the answer.
if (pageValue == "connection failed")
The address of the pageValue array will never equal the address where "connection failed" is stored, so this test will never result in the following code being executed. You might as well delete it.
Or, use strcmp() to do the test right.
Wire.beginTransmission(address); //Full config each time incase the display has just been turned on
Why? If the previous data got to the LCD, why would the next stuff not? If the previous data didn't, why assume that the next stuff will?
Why are you clearing the screen twice each time there is data to write to it?
I don't understand the stopping and starting of sending data to the LCD.
If you don't want decimal points, why is pressure a float?
I'm not a big fan of magic numbers. What does Wire.write(128); do? Could you make a function with a meaningful name, and call that, instead?
Same for this:
A function called setCursor() that took an argument (the new cursor position) would be better, in my opinion.
These are all ints, are they not? They all print correctly, do they not? I think you need to look into some other area of the code, rather than thinking that printing ints to the LCD is not working.
That whole mess with wrapping a global char array in a String and then extracting the char array as a local variable has got to go.