Creating an IoT platform for smart agriculture. Collecting data and sending them to thingspeak for analysis
Dependencies: DHT11 LPS22HB LSM6DSL VL53L0X
ThingSpeak.cpp@1:469ea8167b80, 2018-06-08 (annotated)
- Committer:
- kaoriw
- Date:
- Fri Jun 08 12:16:19 2018 +0000
- Revision:
- 1:469ea8167b80
- Parent:
- 0:07ff689741d2
Uncomplete
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kaoriw | 0:07ff689741d2 | 1 | #include "ThingSpeak.h" |
kaoriw | 0:07ff689741d2 | 2 | |
kaoriw | 0:07ff689741d2 | 3 | //#include "Sensors.h" |
kaoriw | 0:07ff689741d2 | 4 | |
kaoriw | 0:07ff689741d2 | 5 | |
kaoriw | 0:07ff689741d2 | 6 | const char *sec2str(nsapi_security_t sec) |
kaoriw | 0:07ff689741d2 | 7 | { |
kaoriw | 0:07ff689741d2 | 8 | switch (sec) { |
kaoriw | 0:07ff689741d2 | 9 | case NSAPI_SECURITY_NONE: |
kaoriw | 0:07ff689741d2 | 10 | return "None"; |
kaoriw | 0:07ff689741d2 | 11 | case NSAPI_SECURITY_WEP: |
kaoriw | 0:07ff689741d2 | 12 | return "WEP"; |
kaoriw | 0:07ff689741d2 | 13 | case NSAPI_SECURITY_WPA: |
kaoriw | 0:07ff689741d2 | 14 | return "WPA"; |
kaoriw | 0:07ff689741d2 | 15 | case NSAPI_SECURITY_WPA2: |
kaoriw | 0:07ff689741d2 | 16 | return "WPA2"; |
kaoriw | 0:07ff689741d2 | 17 | case NSAPI_SECURITY_WPA_WPA2: |
kaoriw | 0:07ff689741d2 | 18 | return "WPA/WPA2"; |
kaoriw | 0:07ff689741d2 | 19 | case NSAPI_SECURITY_UNKNOWN: |
kaoriw | 0:07ff689741d2 | 20 | default: |
kaoriw | 0:07ff689741d2 | 21 | return "Unknown"; |
kaoriw | 0:07ff689741d2 | 22 | } |
kaoriw | 0:07ff689741d2 | 23 | } |
kaoriw | 0:07ff689741d2 | 24 | |
kaoriw | 0:07ff689741d2 | 25 | int scan_demo(WiFiInterface *wifi) |
kaoriw | 0:07ff689741d2 | 26 | { |
kaoriw | 0:07ff689741d2 | 27 | WiFiAccessPoint *ap; |
kaoriw | 0:07ff689741d2 | 28 | |
kaoriw | 0:07ff689741d2 | 29 | printf("Scan:\n"); |
kaoriw | 0:07ff689741d2 | 30 | |
kaoriw | 0:07ff689741d2 | 31 | int count = wifi->scan(NULL,0); |
kaoriw | 0:07ff689741d2 | 32 | printf("%d networks available.\n", count); |
kaoriw | 0:07ff689741d2 | 33 | |
kaoriw | 0:07ff689741d2 | 34 | /* Limit number of network arbitrary to 15 */ |
kaoriw | 0:07ff689741d2 | 35 | count = count < 15 ? count : 15; |
kaoriw | 0:07ff689741d2 | 36 | |
kaoriw | 0:07ff689741d2 | 37 | ap = new WiFiAccessPoint[count]; |
kaoriw | 0:07ff689741d2 | 38 | count = wifi->scan(ap, count); |
kaoriw | 0:07ff689741d2 | 39 | for (int i = 0; i < count; i++) |
kaoriw | 0:07ff689741d2 | 40 | { |
kaoriw | 0:07ff689741d2 | 41 | printf("Network: %s secured: %s BSSID: %hhX:%hhX:%hhX:%hhx:%hhx:%hhx RSSI: %hhd Ch: %hhd\n", ap[i].get_ssid(), |
kaoriw | 0:07ff689741d2 | 42 | sec2str(ap[i].get_security()), ap[i].get_bssid()[0], ap[i].get_bssid()[1], ap[i].get_bssid()[2], |
kaoriw | 0:07ff689741d2 | 43 | ap[i].get_bssid()[3], ap[i].get_bssid()[4], ap[i].get_bssid()[5], ap[i].get_rssi(), ap[i].get_channel()); |
kaoriw | 0:07ff689741d2 | 44 | } |
kaoriw | 0:07ff689741d2 | 45 | |
kaoriw | 0:07ff689741d2 | 46 | delete[] ap; |
kaoriw | 0:07ff689741d2 | 47 | return count; |
kaoriw | 0:07ff689741d2 | 48 | } |
kaoriw | 0:07ff689741d2 | 49 | |
kaoriw | 0:07ff689741d2 | 50 | |
kaoriw | 0:07ff689741d2 | 51 | void send_values(char* urlBuffer) |
kaoriw | 0:07ff689741d2 | 52 | { |
kaoriw | 0:07ff689741d2 | 53 | TCPSocket socket; |
kaoriw | 0:07ff689741d2 | 54 | socket.open(&wifi); |
kaoriw | 0:07ff689741d2 | 55 | int scount; |
kaoriw | 0:07ff689741d2 | 56 | int bufLen = strlen(urlBuffer); |
kaoriw | 0:07ff689741d2 | 57 | |
kaoriw | 0:07ff689741d2 | 58 | if(socket.connect("api.thingspeak.com", 80) == 0) |
kaoriw | 0:07ff689741d2 | 59 | { |
kaoriw | 0:07ff689741d2 | 60 | scount = socket.send(urlBuffer, bufLen+1); |
kaoriw | 0:07ff689741d2 | 61 | printf ("Message sent: strlen=%d,urlBuffer=%.*s\r\n",bufLen,bufLen-2,urlBuffer); |
kaoriw | 0:07ff689741d2 | 62 | } |
kaoriw | 0:07ff689741d2 | 63 | else printf("Failed to connect to ThingSpeak.\r\n"); |
kaoriw | 0:07ff689741d2 | 64 | |
kaoriw | 0:07ff689741d2 | 65 | |
kaoriw | 0:07ff689741d2 | 66 | // Recieve a simple http response and print out the response line |
kaoriw | 0:07ff689741d2 | 67 | char rbuffer[2000]; |
kaoriw | 0:07ff689741d2 | 68 | int response = socket.recv(rbuffer, sizeof rbuffer); |
kaoriw | 0:07ff689741d2 | 69 | if (response < 0) { |
kaoriw | 0:07ff689741d2 | 70 | printf("Error receiving data: %d\n\r", response); |
kaoriw | 0:07ff689741d2 | 71 | } else { |
kaoriw | 0:07ff689741d2 | 72 | printf("recv %d [%.*s]\n\r", response, strstr(rbuffer, "\r\n")-rbuffer, rbuffer); |
kaoriw | 0:07ff689741d2 | 73 | } |
kaoriw | 0:07ff689741d2 | 74 | |
kaoriw | 0:07ff689741d2 | 75 | socket.close(); |
kaoriw | 0:07ff689741d2 | 76 | |
kaoriw | 0:07ff689741d2 | 77 | } |