trash over HTTP
Dependencies: C027_Support HTTPClient TrashSensors mbed Crypto
Fork of SLOTrashHTTP by
Collects sensor readings and sends them to https://trash.coreyford.name/
Server code: https://github.com/coyotebush/trash-map
main.cpp
- Committer:
- coyotebush
- Date:
- 2015-05-27
- Revision:
- 3:1e5d19eb7c9a
- Parent:
- 2:ecc029c53752
- Child:
- 4:1acb5d26ec21
File content as of revision 3:1e5d19eb7c9a:
#include "mbed.h" #include "HTTPClient.h" #include "hcsr04.h" #include "GPS.h" #define TRIG_PIN D6 #define ECHO_PIN D5 #define SENSOR_NAME "Throop" #define CELLULAR_NETWORK 1 #ifdef CELLULAR_NETWORK #include "MDM.h" #define SIMPIN NULL #define APN "Broadband" #define USERNAME NULL #define PASSWORD NULL #else #include "EthernetInterface.h" #endif int main() { GPSSerial gps; #ifdef CELLULAR_NETWORK MDMSerial mdm; //mdm.setDebug(4); if (!mdm.connect(SIMPIN, APN,USERNAME,PASSWORD)) return -1; #else EthernetInterface ethernet; ethernet.init(); // DHCP if (ethernet.connect() != 0) return -1; #endif HTTPClient http; int gpsRet; char gpsBuf[512]; double lat = 0, lon = 0; char latStr[10] = "", lonStr[10] = ""; HCSR04 distS(TRIG_PIN, ECHO_PIN); double distV; char distStr[10] = ""; char str[512]; while (true) { // Distance sensor distS.start(); wait_ms(500); distV = distS.get_dist_cm(); snprintf(distStr, 10, "%0.2f", distV); printf("sensor reading: %s\r\n", distStr); // GPS printf("trying GPS\r\n"); while ((gpsRet = gps.getMessage(gpsBuf, sizeof(gpsBuf))) > 0) { int len = LENGTH(gpsRet); char ch; //printf("NMEA: %.*s\r\n", len-2, gpsBuf); if ((PROTOCOL(gpsRet) == GPSParser::NMEA) && (len > 6) && strncmp(gpsBuf, "$G", 2) == 0 && strncmp(gpsBuf + 3, "GLL", 3) == 0 && gps.getNmeaAngle(1,gpsBuf,len,lat) && gps.getNmeaAngle(3,gpsBuf,len,lon) && gps.getNmeaItem(6,gpsBuf,len,ch) && ch == 'A') { printf("GPS Location: %.5f %.5f\r\n", lat, lon); snprintf(latStr, 10, "%0.5f", lat); snprintf(lonStr, 10, "%0.5f", lon); break; } } //POST data HTTPMap map; HTTPText inText(str, 512); map.put("name", SENSOR_NAME); map.put("value", distStr); map.put("latitude", latStr); map.put("longitude", lonStr); printf("\r\nTrying to post data...\r\n"); int ret = http.post("http://trash.coreyford.name/sensor", map, &inText); if (!ret) { printf("Executed POST successfully - read %d characters\r\n", strlen(str)); printf("Result: %s\r\n", str); } else { printf("Error - ret = %d - HTTP return code = %d\r\n", ret, http.getHTTPResponseCode()); } wait_ms(10000); } }