Solarator

Dependencies:   ESP8266NodeMCUInterface mbed

Fork of Solarator_0-0-1 by Uzair Akbar

Committer:
UzairAkbar
Date:
Mon Dec 28 20:36:21 2015 +0000
Revision:
1:408512add17c
Parent:
0:ed69e8ef8c7f
Solarator

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ARK4579 0:ed69e8ef8c7f 1 #include "mbed.h"
ARK4579 0:ed69e8ef8c7f 2 #include "ESP8266.h"
ARK4579 0:ed69e8ef8c7f 3 #include "TCPSocketConnection.h"
ARK4579 0:ed69e8ef8c7f 4 #include <string>
ARK4579 0:ed69e8ef8c7f 5 #include <stdio.h>
ARK4579 0:ed69e8ef8c7f 6 #include <stdlib.h>
ARK4579 0:ed69e8ef8c7f 7 using namespace std;
ARK4579 0:ed69e8ef8c7f 8
UzairAkbar 1:408512add17c 9 DigitalIn mybutton(USER_BUTTON);
ARK4579 0:ed69e8ef8c7f 10 DigitalOut myled(LED1);
UzairAkbar 1:408512add17c 11 ESP8266 wifi(PA_9,PA_10,D3,115200);
ARK4579 0:ed69e8ef8c7f 12 Serial pc(SERIAL_TX, SERIAL_RX);
ARK4579 0:ed69e8ef8c7f 13 TCPSocketConnection gm;
UzairAkbar 1:408512add17c 14 AnalogIn Current(A0);
UzairAkbar 1:408512add17c 15 AnalogIn Voltage(A1);
ARK4579 0:ed69e8ef8c7f 16
UzairAkbar 1:408512add17c 17
UzairAkbar 1:408512add17c 18 char* generatePostRequest(float current, float voltage)
ARK4579 0:ed69e8ef8c7f 19 {
UzairAkbar 1:408512add17c 20 char post[] = "GET /update?key=";
UzairAkbar 1:408512add17c 21 char ThingSpeak_key[] = "3BCEJZ4D93E63PNN";
UzairAkbar 1:408512add17c 22 char current_field[] = "&field1=";
UzairAkbar 1:408512add17c 23 char voltage_field[] = "&field2=";
UzairAkbar 1:408512add17c 24 char coordinates[] = "";
UzairAkbar 1:408512add17c 25 char status[] = "";
UzairAkbar 1:408512add17c 26 char msg[75] = "";
UzairAkbar 1:408512add17c 27
UzairAkbar 1:408512add17c 28 sprintf(msg, "%s%s%s%f%s%f%s%s\r\n\r\n", post, ThingSpeak_key, current_field, current, voltage_field, voltage, coordinates, status);
ARK4579 0:ed69e8ef8c7f 29
UzairAkbar 1:408512add17c 30 return msg;
ARK4579 0:ed69e8ef8c7f 31 }
ARK4579 0:ed69e8ef8c7f 32
ARK4579 0:ed69e8ef8c7f 33 int main()
ARK4579 0:ed69e8ef8c7f 34 {
ARK4579 0:ed69e8ef8c7f 35 pc.baud(115200);
UzairAkbar 1:408512add17c 36
UzairAkbar 1:408512add17c 37 int init_flag=0;
UzairAkbar 1:408512add17c 38 float sum_current = 0.0;
UzairAkbar 1:408512add17c 39 float sum_voltage = 0.0;
UzairAkbar 1:408512add17c 40 float I = 0.0;
UzairAkbar 1:408512add17c 41 float V = 0.0;
UzairAkbar 1:408512add17c 42
ARK4579 0:ed69e8ef8c7f 43 while(1) {
UzairAkbar 1:408512add17c 44 if(init_flag==0) {
ARK4579 0:ed69e8ef8c7f 45 hardwareInit:
ARK4579 0:ed69e8ef8c7f 46 pc.printf("intializing hardware,...\r\n");
UzairAkbar 1:408512add17c 47 if(wifi.init()) {
ARK4579 0:ed69e8ef8c7f 48 pc.printf("hardware intialized!\r\n");
UzairAkbar 1:408512add17c 49 init_flag = 1;
ARK4579 0:ed69e8ef8c7f 50 nustConnection:
ARK4579 0:ed69e8ef8c7f 51 pc.printf("connecting to NUST,...\r\n");
UzairAkbar 1:408512add17c 52 if(wifi.connect("NUST","nust008tech")) {
ARK4579 0:ed69e8ef8c7f 53
ARK4579 0:ed69e8ef8c7f 54 pc.printf("NUST Connected!\r\n");
UzairAkbar 1:408512add17c 55 if(wifi.is_connected()) {
ARK4579 0:ed69e8ef8c7f 56 pc.printf("connection confirmed!\r\n");
UzairAkbar 1:408512add17c 57 pc.printf("IP Adress: %s\r\n",wifi.getIPAddress());
ARK4579 0:ed69e8ef8c7f 58 hostConnection:
ARK4579 0:ed69e8ef8c7f 59 pc.printf("connecting to Host,...\r\n");
UzairAkbar 1:408512add17c 60 while(1)
UzairAkbar 1:408512add17c 61 {
UzairAkbar 1:408512add17c 62 sum_current = 0.0;
UzairAkbar 1:408512add17c 63 sum_voltage = 0.0;
UzairAkbar 1:408512add17c 64
ARK4579 0:ed69e8ef8c7f 65 if(gm.connect("184.106.153.149",80)==0) {
ARK4579 0:ed69e8ef8c7f 66 pc.printf("Host connected.\r\n");
UzairAkbar 1:408512add17c 67 /////////////////////////////////////////////////////////////////////////////////
UzairAkbar 1:408512add17c 68 for (int i = 0; i < 100; i++)
UzairAkbar 1:408512add17c 69 {
UzairAkbar 1:408512add17c 70 sum_current += Current.read();
UzairAkbar 1:408512add17c 71 sum_voltage += Voltage.read();
UzairAkbar 1:408512add17c 72 wait_us(50);
UzairAkbar 1:408512add17c 73 }
UzairAkbar 1:408512add17c 74 I = sum_current/100;
UzairAkbar 1:408512add17c 75 V = sum_voltage/100;
UzairAkbar 1:408512add17c 76
UzairAkbar 1:408512add17c 77 I = (I-0.5)*3.3/0.185;
UzairAkbar 1:408512add17c 78 V = V;
UzairAkbar 1:408512add17c 79
UzairAkbar 1:408512add17c 80 pc.printf("%.4f\n\r", I);
UzairAkbar 1:408512add17c 81
UzairAkbar 1:408512add17c 82 char* getRequest = generatePostRequest(I, V);
UzairAkbar 1:408512add17c 83 /////////////////////////////////////////////////////////////////////////////////
ARK4579 0:ed69e8ef8c7f 84 sendGETRequest:
ARK4579 0:ed69e8ef8c7f 85 pc.printf("sending GET request,...\r\n");
ARK4579 0:ed69e8ef8c7f 86 if(gm.send_all(getRequest,strlen(getRequest))>0) {
ARK4579 0:ed69e8ef8c7f 87 pc.printf("GOT!\r\n");
ARK4579 0:ed69e8ef8c7f 88
ARK4579 0:ed69e8ef8c7f 89 char getResponce[5000]= {};
ARK4579 0:ed69e8ef8c7f 90 pc.printf("reading responce of GET request!\r\n");
ARK4579 0:ed69e8ef8c7f 91 int resBytes = gm.receive_all(getResponce,5000);
ARK4579 0:ed69e8ef8c7f 92 if(resBytes > 0) {
ARK4579 0:ed69e8ef8c7f 93 pc.printf("Responce Received!\r\n");
ARK4579 0:ed69e8ef8c7f 94 pc.printf("Responce:\r\n%s\r\nResponce Read Sucessfull.\r\n",getResponce);
ARK4579 0:ed69e8ef8c7f 95 } else if(resBytes==0) {
ARK4579 0:ed69e8ef8c7f 96 pc.printf("Empty Responce!\r\n");
ARK4579 0:ed69e8ef8c7f 97 //goto sendGETRequest;
ARK4579 0:ed69e8ef8c7f 98 } else {
ARK4579 0:ed69e8ef8c7f 99 pc.printf("Resopnce NOT Received!\r\n");
ARK4579 0:ed69e8ef8c7f 100 goto sendGETRequest;
ARK4579 0:ed69e8ef8c7f 101 }
ARK4579 0:ed69e8ef8c7f 102
ARK4579 0:ed69e8ef8c7f 103 } else {
ARK4579 0:ed69e8ef8c7f 104 pc.printf("GET request failed!\r\n");
ARK4579 0:ed69e8ef8c7f 105 goto sendGETRequest;
ARK4579 0:ed69e8ef8c7f 106 }
UzairAkbar 1:408512add17c 107 }else {
ARK4579 0:ed69e8ef8c7f 108 pc.printf("Host Connection Failed\r\n");
ARK4579 0:ed69e8ef8c7f 109 goto hostConnection;
ARK4579 0:ed69e8ef8c7f 110 }
UzairAkbar 1:408512add17c 111 wait(10);
UzairAkbar 1:408512add17c 112 }
ARK4579 0:ed69e8ef8c7f 113 } else {
ARK4579 0:ed69e8ef8c7f 114 pc.printf("sonething went wrong with connection. not connected \r\n");
ARK4579 0:ed69e8ef8c7f 115 goto nustConnection;
ARK4579 0:ed69e8ef8c7f 116 }
ARK4579 0:ed69e8ef8c7f 117 } else {
ARK4579 0:ed69e8ef8c7f 118 pc.printf("conenction fail!\r\n");
ARK4579 0:ed69e8ef8c7f 119 goto nustConnection;
ARK4579 0:ed69e8ef8c7f 120 }
ARK4579 0:ed69e8ef8c7f 121 } else {
ARK4579 0:ed69e8ef8c7f 122 pc.printf("hardware not intialized!\r\n");
ARK4579 0:ed69e8ef8c7f 123 goto hardwareInit;
ARK4579 0:ed69e8ef8c7f 124 }
ARK4579 0:ed69e8ef8c7f 125 }
ARK4579 0:ed69e8ef8c7f 126 wait(1);
ARK4579 0:ed69e8ef8c7f 127 }
ARK4579 0:ed69e8ef8c7f 128 }