I think that Electron by Particle may be something what you are looking for. Electron allows you to build device that can connect to 2G or 3G mobile wireless network.
In one of the previous comments you mentioned that your data usage probably will not exceed a megabyte of data per month. With Electron you are charged monthly for the base rate which is $2.99 (includes first megabyte) and then $0.99 per any additional MB.
From technical point of view, Electron is connected to Particle's cloud and exchanges messages with it. Then you can control Electron through your web-app by sending HTTP requests from your web-app to Particle's cloud. Electron has GPIO pins (also for Serial/UART communication) so depends on your needs you can connect it with your Raspberry Pi - for more information go here.
In a general scenario communication between you and Electron should look like that:
- write a function which handles command on Electron:
int callRaspberry(String command) {
//handle communication here
}
- register previous function during setup:
void setup()
{
Particle.function("callRaspberry",callRaspberry);
}
- make a request to Particle's cloud, to call the function on Electron:
curl https://api.particle.io/v1/devices/<DEVICE_ID>/callRaspberry \
-d access_token=<YOUR_ACCESS_TOKEN> \
-d arg=<COMMAND_VALUE>
More code examples can be found here.
I've also seen that Hologram provides similar devices to Electron and their service price is also cheaper. You can find some comparison here.