Solarator
Dependencies: ESP8266NodeMCUInterface mbed
Fork of Solarator_0-0-1 by
main.cpp@1:408512add17c, 2015-12-28 (annotated)
- Committer:
- UzairAkbar
- Date:
- Mon Dec 28 20:36:21 2015 +0000
- Revision:
- 1:408512add17c
- Parent:
- 0:ed69e8ef8c7f
Solarator
Who changed what in which revision?
User | Revision | Line number | New 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 | } |