Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed HBridge MQ7 Ton SimpleScheduler Pir_sensor
Thingspeak/Thingspeak.cpp@4:ae0a21e468bb, 2021-03-19 (annotated)
- Committer:
- pkunnals
- Date:
- Fri Mar 19 18:58:13 2021 +0000
- Revision:
- 4:ae0a21e468bb
Final_Version
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| pkunnals | 4:ae0a21e468bb | 1 | #include "mbed.h" |
| pkunnals | 4:ae0a21e468bb | 2 | #include "Thingspeak.h" |
| pkunnals | 4:ae0a21e468bb | 3 | #include "ESP8266.h" |
| pkunnals | 4:ae0a21e468bb | 4 | #include <string> |
| pkunnals | 4:ae0a21e468bb | 5 | |
| pkunnals | 4:ae0a21e468bb | 6 | /*============================================================================*/ |
| pkunnals | 4:ae0a21e468bb | 7 | /* (a) MACRO and Constants declaration section */ |
| pkunnals | 4:ae0a21e468bb | 8 | /*============================================================================*/ |
| pkunnals | 4:ae0a21e468bb | 9 | #define APIKEY NS64DJVP5YJKXUW2 //Put "Write key" of your channel in thingspeak.com |
| pkunnals | 4:ae0a21e468bb | 10 | #define IP "184.106.153.149" // IP Address of "api.thingspeak.com\" |
| pkunnals | 4:ae0a21e468bb | 11 | #define WIFI_SSID "Z" |
| pkunnals | 4:ae0a21e468bb | 12 | #define WIFI_PASS "12345678" |
| pkunnals | 4:ae0a21e468bb | 13 | |
| pkunnals | 4:ae0a21e468bb | 14 | /*============================================================================*/ |
| pkunnals | 4:ae0a21e468bb | 15 | /* (b) Variable declaration section */ |
| pkunnals | 4:ae0a21e468bb | 16 | /*============================================================================*/ |
| pkunnals | 4:ae0a21e468bb | 17 | Serial pc(USBTX,USBRX); |
| pkunnals | 4:ae0a21e468bb | 18 | ESP8266 esp(PTC17, PTC16, 115200); // baud rate for wifi |
| pkunnals | 4:ae0a21e468bb | 19 | |
| pkunnals | 4:ae0a21e468bb | 20 | /** snd= string used to send command to ESP 8266 wifi |
| pkunnals | 4:ae0a21e468bb | 21 | * and rcv = string used to receive response from ESP8266 wifi module |
| pkunnals | 4:ae0a21e468bb | 22 | **/ |
| pkunnals | 4:ae0a21e468bb | 23 | char snd[255],rcv[1000],snd_Data[255],ip[100],connection[100]; |
| pkunnals | 4:ae0a21e468bb | 24 | |
| pkunnals | 4:ae0a21e468bb | 25 | /*============================================================================*/ |
| pkunnals | 4:ae0a21e468bb | 26 | /* (c) Function definition section */ |
| pkunnals | 4:ae0a21e468bb | 27 | /*============================================================================*/ |
| pkunnals | 4:ae0a21e468bb | 28 | |
| pkunnals | 4:ae0a21e468bb | 29 | /*! |
| pkunnals | 4:ae0a21e468bb | 30 | * Function used to initialize ESP8266 wifi module |
| pkunnals | 4:ae0a21e468bb | 31 | * ============================================================================= |
| pkunnals | 4:ae0a21e468bb | 32 | */ |
| pkunnals | 4:ae0a21e468bb | 33 | void Esp8266_Init ( void ) |
| pkunnals | 4:ae0a21e468bb | 34 | { |
| pkunnals | 4:ae0a21e468bb | 35 | /* Baud rate used for communicating with Tera-term on PC */ |
| pkunnals | 4:ae0a21e468bb | 36 | pc.baud(115200); |
| pkunnals | 4:ae0a21e468bb | 37 | pc.printf("\n\n\rInitializing ESP\n\n\r"); |
| pkunnals | 4:ae0a21e468bb | 38 | //RESET ESP |
| pkunnals | 4:ae0a21e468bb | 39 | pc.printf("\n\n\rReset ESP\n\n\r"); |
| pkunnals | 4:ae0a21e468bb | 40 | esp.Reset(); |
| pkunnals | 4:ae0a21e468bb | 41 | /* Wait for 2 seconds */ |
| pkunnals | 4:ae0a21e468bb | 42 | wait(2); |
| pkunnals | 4:ae0a21e468bb | 43 | pc.printf("\n\n\rSending AT command\n\n\r"); |
| pkunnals | 4:ae0a21e468bb | 44 | strcpy(snd,"AT"); |
| pkunnals | 4:ae0a21e468bb | 45 | esp.SendCMD(snd); |
| pkunnals | 4:ae0a21e468bb | 46 | wait(0.1); |
| pkunnals | 4:ae0a21e468bb | 47 | pc.printf("\n\n\rSetting mode\n\n\r"); |
| pkunnals | 4:ae0a21e468bb | 48 | esp.SetMode(1); |
| pkunnals | 4:ae0a21e468bb | 49 | wait(2); |
| pkunnals | 4:ae0a21e468bb | 50 | pc.printf("\n\n\rConnecting to wifi network\n\n\r"); |
| pkunnals | 4:ae0a21e468bb | 51 | esp.Join(WIFI_SSID, WIFI_PASS); |
| pkunnals | 4:ae0a21e468bb | 52 | wait(5); |
| pkunnals | 4:ae0a21e468bb | 53 | // Set single connection |
| pkunnals | 4:ae0a21e468bb | 54 | esp.SetSingle(); |
| pkunnals | 4:ae0a21e468bb | 55 | pc.printf("\n\n\rGetting IP\n\n\r"); |
| pkunnals | 4:ae0a21e468bb | 56 | esp.GetIP(&ip[0]); |
| pkunnals | 4:ae0a21e468bb | 57 | pc.printf(ip); |
| pkunnals | 4:ae0a21e468bb | 58 | //receive a response from ESP |
| pkunnals | 4:ae0a21e468bb | 59 | pc.printf("\n\n\rReading connection status\n\n\r"); |
| pkunnals | 4:ae0a21e468bb | 60 | esp.GetConnStatus(&connection[0]); |
| pkunnals | 4:ae0a21e468bb | 61 | pc.printf(connection); |
| pkunnals | 4:ae0a21e468bb | 62 | } |
| pkunnals | 4:ae0a21e468bb | 63 | |
| pkunnals | 4:ae0a21e468bb | 64 | |
| pkunnals | 4:ae0a21e468bb | 65 | /*! |
| pkunnals | 4:ae0a21e468bb | 66 | * Function used to connect with thingspeak.com and update channel using |
| pkunnals | 4:ae0a21e468bb | 67 | * ESP8266 wifi module |
| pkunnals | 4:ae0a21e468bb | 68 | * ============================================================================= |
| pkunnals | 4:ae0a21e468bb | 69 | */ |
| pkunnals | 4:ae0a21e468bb | 70 | void Send_to_Thingspeak ( int field1, int field2, int field3 ) |
| pkunnals | 4:ae0a21e468bb | 71 | { |
| pkunnals | 4:ae0a21e468bb | 72 | /* ESP updates the Status of Thingspeak channel */ |
| pkunnals | 4:ae0a21e468bb | 73 | esp.startTCPConn(IP,80); |
| pkunnals | 4:ae0a21e468bb | 74 | wait(1); |
| pkunnals | 4:ae0a21e468bb | 75 | sprintf(snd,"GET https://api.thingspeak.com/update?api_key=NS64DJVP5YJKXUW2&field1=+%d+&field2=+%d+&field3=+%d+\r\n",field1, field2, field3); |
| pkunnals | 4:ae0a21e468bb | 76 | |
| pkunnals | 4:ae0a21e468bb | 77 | int i=0; |
| pkunnals | 4:ae0a21e468bb | 78 | for(i=0;snd[i]!='\0';i++); |
| pkunnals | 4:ae0a21e468bb | 79 | i++; |
| pkunnals | 4:ae0a21e468bb | 80 | char cmd[255]; |
| pkunnals | 4:ae0a21e468bb | 81 | //Send Number of open connection and Characters to send |
| pkunnals | 4:ae0a21e468bb | 82 | sprintf(cmd,"AT+CIPSEND=%d",i); |
| pkunnals | 4:ae0a21e468bb | 83 | esp.SendCMD(cmd); |
| pkunnals | 4:ae0a21e468bb | 84 | pc.printf("S\r\n%s",cmd); |
| pkunnals | 4:ae0a21e468bb | 85 | while(i<=20 || rcv == ">") |
| pkunnals | 4:ae0a21e468bb | 86 | { |
| pkunnals | 4:ae0a21e468bb | 87 | esp.RcvReply(rcv, 1000); |
| pkunnals | 4:ae0a21e468bb | 88 | wait(100); |
| pkunnals | 4:ae0a21e468bb | 89 | i++; |
| pkunnals | 4:ae0a21e468bb | 90 | } |
| pkunnals | 4:ae0a21e468bb | 91 | //Post value to thingspeak channel |
| pkunnals | 4:ae0a21e468bb | 92 | esp.SendCMD(snd); |
| pkunnals | 4:ae0a21e468bb | 93 | |
| pkunnals | 4:ae0a21e468bb | 94 | while(i<=20 || rcv == "OK") |
| pkunnals | 4:ae0a21e468bb | 95 | { |
| pkunnals | 4:ae0a21e468bb | 96 | esp.RcvReply(rcv, 1000); |
| pkunnals | 4:ae0a21e468bb | 97 | wait(100); |
| pkunnals | 4:ae0a21e468bb | 98 | i++; |
| pkunnals | 4:ae0a21e468bb | 99 | } |
| pkunnals | 4:ae0a21e468bb | 100 | } |
| pkunnals | 4:ae0a21e468bb | 101 | |
| pkunnals | 4:ae0a21e468bb | 102 | /*! |
| pkunnals | 4:ae0a21e468bb | 103 | * Function used to Read door status from Thingspeak channel |
| pkunnals | 4:ae0a21e468bb | 104 | * |
| pkunnals | 4:ae0a21e468bb | 105 | * ============================================================================= |
| pkunnals | 4:ae0a21e468bb | 106 | */ |
| pkunnals | 4:ae0a21e468bb | 107 | int Read_from_Thingspeak ( void ) |
| pkunnals | 4:ae0a21e468bb | 108 | { |
| pkunnals | 4:ae0a21e468bb | 109 | char *prevPointer = NULL; |
| pkunnals | 4:ae0a21e468bb | 110 | char *currPointer = NULL; |
| pkunnals | 4:ae0a21e468bb | 111 | int doorCommand = 0xFF; |
| pkunnals | 4:ae0a21e468bb | 112 | |
| pkunnals | 4:ae0a21e468bb | 113 | /*Read door status from Thingspeak channel*/ |
| pkunnals | 4:ae0a21e468bb | 114 | esp.startTCPConn(IP,80); |
| pkunnals | 4:ae0a21e468bb | 115 | wait(1); |
| pkunnals | 4:ae0a21e468bb | 116 | sprintf(snd,"GET https://api.thingspeak.com/channels/1309755/fields/1.json?api_key=F2HR03LUWEXO3QO0&results=2\r\n"); |
| pkunnals | 4:ae0a21e468bb | 117 | |
| pkunnals | 4:ae0a21e468bb | 118 | int i=0; |
| pkunnals | 4:ae0a21e468bb | 119 | for(i=0;snd[i]!='\0';i++); |
| pkunnals | 4:ae0a21e468bb | 120 | i++; |
| pkunnals | 4:ae0a21e468bb | 121 | char cmd[255]; |
| pkunnals | 4:ae0a21e468bb | 122 | //Send Number of open connection and Characters to send |
| pkunnals | 4:ae0a21e468bb | 123 | sprintf(cmd,"AT+CIPSEND=%d",i); |
| pkunnals | 4:ae0a21e468bb | 124 | esp.SendCMD(cmd); |
| pkunnals | 4:ae0a21e468bb | 125 | pc.printf("S\r\n%s",cmd); |
| pkunnals | 4:ae0a21e468bb | 126 | while(i<=20 || rcv == ">") |
| pkunnals | 4:ae0a21e468bb | 127 | { |
| pkunnals | 4:ae0a21e468bb | 128 | esp.RcvReply(rcv, 1000); |
| pkunnals | 4:ae0a21e468bb | 129 | wait(100); |
| pkunnals | 4:ae0a21e468bb | 130 | i++; |
| pkunnals | 4:ae0a21e468bb | 131 | } |
| pkunnals | 4:ae0a21e468bb | 132 | pc.printf("R\r\n%s",rcv); |
| pkunnals | 4:ae0a21e468bb | 133 | //Post value to thingspeak channel |
| pkunnals | 4:ae0a21e468bb | 134 | esp.SendCMD(snd); |
| pkunnals | 4:ae0a21e468bb | 135 | pc.printf("S\r\n%s",snd); |
| pkunnals | 4:ae0a21e468bb | 136 | |
| pkunnals | 4:ae0a21e468bb | 137 | while(i<=20 || rcv == "OK") |
| pkunnals | 4:ae0a21e468bb | 138 | { |
| pkunnals | 4:ae0a21e468bb | 139 | esp.RcvReply(rcv, 1000); |
| pkunnals | 4:ae0a21e468bb | 140 | wait(100); |
| pkunnals | 4:ae0a21e468bb | 141 | i++; |
| pkunnals | 4:ae0a21e468bb | 142 | } |
| pkunnals | 4:ae0a21e468bb | 143 | esp.RcvReply(rcv, 1000); |
| pkunnals | 4:ae0a21e468bb | 144 | if(strstr(rcv,"field1") != NULL) |
| pkunnals | 4:ae0a21e468bb | 145 | { |
| pkunnals | 4:ae0a21e468bb | 146 | prevPointer = strstr(rcv,"field1"); |
| pkunnals | 4:ae0a21e468bb | 147 | currPointer = strstr(rcv,"field1"); |
| pkunnals | 4:ae0a21e468bb | 148 | if(strstr((currPointer + 6),"field1") != NULL) |
| pkunnals | 4:ae0a21e468bb | 149 | { |
| pkunnals | 4:ae0a21e468bb | 150 | currPointer = strstr((currPointer + 6),"field1"); |
| pkunnals | 4:ae0a21e468bb | 151 | doorCommand = *(currPointer+9); |
| pkunnals | 4:ae0a21e468bb | 152 | } |
| pkunnals | 4:ae0a21e468bb | 153 | else |
| pkunnals | 4:ae0a21e468bb | 154 | { |
| pkunnals | 4:ae0a21e468bb | 155 | doorCommand = *(prevPointer+9); |
| pkunnals | 4:ae0a21e468bb | 156 | } |
| pkunnals | 4:ae0a21e468bb | 157 | //printf("word found\n\r"); |
| pkunnals | 4:ae0a21e468bb | 158 | } |
| pkunnals | 4:ae0a21e468bb | 159 | pc.printf("R\r\n%s",rcv); |
| pkunnals | 4:ae0a21e468bb | 160 | |
| pkunnals | 4:ae0a21e468bb | 161 | return ( doorCommand - 48 ); |
| pkunnals | 4:ae0a21e468bb | 162 | } |