I don't know the infrastructure of your current project.
However it is worth to try changing:
web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));
to:
web3 = new Web3(new Web3.providers.HttpProvider("http://192.168.1.37:8545"));
You are using geth attach
with this IP as well so it might solve your problem.
Edit:Edit 1: As it seems to be a problem with the networking here is what you need to do:
Most likely your rpcaddr is 127.0.0.1. This means only the server/local machine can access this node/blockchain.
So you need to make a change in order to allow external connections.
The easy way to do this is with rpcaddr 0.0.0.0. But this is very insecure. Now everyone can access your node. So you should specify which IP can access your node.
Either manually input your device IP which wants access or build an API around it which handles this stuff for you.
Here is the easy way which allows connections from all devices:
Start geth
with these two properties specified as well:
--rpcaddr 0.0.0.0
and --rpccorsdomain "*"
Keep in mind there are various solutions and the one I pointed out works in all cases but isn't secure. As mentioned you should specify the IP of the server/client which is supposed to connect to the blockchain.
EDIT 2: Now your command should look like this:
geth --rinkeby --rpc --rpcport=8545 --rpcaddr 0.0.0.0 --rpccorsdomain "*"