I figured the best way to do it is by sending strings of data back and forth between the arduino and Pi.
So, why don't you?
String command = "";
int state = 0;
String report = "";
String pinStatus = "";
Those are NOT strings.
Everything works up until the point where a wire.write or wire.read a string
Probably because that is NOT what you are doing.