priyanka Siddalingappa / Mbed 2 deprecated Garage_Control

Dependencies:   mbed HBridge MQ7 Ton SimpleScheduler Pir_sensor

Committer:
pkunnals
Date:
Fri Mar 19 18:58:13 2021 +0000
Revision:
4:ae0a21e468bb
Final_Version

Who changed what in which revision?

UserRevisionLine numberNew 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 }