web iot espressif
Dependencies: WIZWebtInterface mbed
main.cpp@2:0523b50f44fd, 2016-11-04 (annotated)
- Committer:
- 846354866
- Date:
- Fri Nov 04 08:11:34 2016 +0000
- Revision:
- 2:0523b50f44fd
- Parent:
- 1:900e3ba27ddb
- Child:
- 3:dc786e394e82
http web versions 0.1
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
846354866 | 0:25d52c6a3448 | 1 | #include "mbed.h" |
846354866 | 0:25d52c6a3448 | 2 | #include "EthernetInterface.h" |
846354866 | 0:25d52c6a3448 | 3 | #include <stdio.h> |
846354866 | 0:25d52c6a3448 | 4 | #include <string.h> |
846354866 | 0:25d52c6a3448 | 5 | |
846354866 | 0:25d52c6a3448 | 6 | |
846354866 | 0:25d52c6a3448 | 7 | #define MAC "\x00\x08\xDC\x11\x34\x78" |
846354866 | 0:25d52c6a3448 | 8 | #define IP "192.168.1.123" |
846354866 | 0:25d52c6a3448 | 9 | #define MASK "255.255.255.0" |
846354866 | 0:25d52c6a3448 | 10 | #define GATEWAY "192.168.1.1" |
846354866 | 0:25d52c6a3448 | 11 | |
846354866 | 0:25d52c6a3448 | 12 | #define HTTPD_SERVER_PORT 80 |
846354866 | 0:25d52c6a3448 | 13 | #define HTTPD_MAX_REQ_LENGTH 1023 |
846354866 | 0:25d52c6a3448 | 14 | #define HTTPD_MAX_HDR_LENGTH 255 |
846354866 | 0:25d52c6a3448 | 15 | #define HTTPD_MAX_FNAME_LENGTH 127 |
846354866 | 0:25d52c6a3448 | 16 | #define HTTPD_MAX_DNAME_LENGTH 127 |
846354866 | 0:25d52c6a3448 | 17 | |
846354866 | 0:25d52c6a3448 | 18 | |
846354866 | 0:25d52c6a3448 | 19 | Serial uart(PA_13,PA_14); |
846354866 | 0:25d52c6a3448 | 20 | DigitalInOut myIOD10(D10); |
846354866 | 0:25d52c6a3448 | 21 | DigitalIn myInD11(D11); |
846354866 | 0:25d52c6a3448 | 22 | DigitalOut myOutD12(D12); |
846354866 | 0:25d52c6a3448 | 23 | AnalogIn myInA1(A1); |
846354866 | 0:25d52c6a3448 | 24 | Timeout button_ledTimeout; |
846354866 | 0:25d52c6a3448 | 25 | Timeout receive_dht11Timeout; |
846354866 | 0:25d52c6a3448 | 26 | |
846354866 | 0:25d52c6a3448 | 27 | unsigned char RH,RL,TH,TL; |
846354866 | 0:25d52c6a3448 | 28 | unsigned char data_byte; |
846354866 | 0:25d52c6a3448 | 29 | unsigned int U8FLAG; |
846354866 | 0:25d52c6a3448 | 30 | unsigned char status_led; |
846354866 | 0:25d52c6a3448 | 31 | unsigned char seaver_ip[] = IP; |
846354866 | 0:25d52c6a3448 | 32 | char led_control[6] = "cloce"; |
846354866 | 0:25d52c6a3448 | 33 | |
846354866 | 0:25d52c6a3448 | 34 | |
846354866 | 0:25d52c6a3448 | 35 | //SDFileSystem sd(p5, p6, p7, p8, "sd"); // LPC1768 MBD2PMD |
846354866 | 0:25d52c6a3448 | 36 | //SDFileSystem sd(P0_18, P0_17, P0_15, P0_16, "sd"); // Seeeduino Arch Pro SPI2SD |
846354866 | 0:25d52c6a3448 | 37 | //SDFileSystem sd(PTE3, PTE1, PTE2, PTE4, "sd"); // K64F |
846354866 | 0:25d52c6a3448 | 38 | //SDFileSystem sd(PB_3, PB_2, PB_1, PB_0, "sd"); // WIZwiki-W7500 |
846354866 | 0:25d52c6a3448 | 39 | |
846354866 | 0:25d52c6a3448 | 40 | EthernetInterface eth; |
846354866 | 0:25d52c6a3448 | 41 | TCPSocketServer server; |
846354866 | 0:25d52c6a3448 | 42 | TCPSocketConnection client; |
846354866 | 0:25d52c6a3448 | 43 | |
846354866 | 0:25d52c6a3448 | 44 | char buffer[HTTPD_MAX_REQ_LENGTH+1]; |
846354866 | 0:25d52c6a3448 | 45 | char httpHeader[HTTPD_MAX_HDR_LENGTH+1]; |
846354866 | 0:25d52c6a3448 | 46 | char fileName[HTTPD_MAX_FNAME_LENGTH+1]; |
846354866 | 0:25d52c6a3448 | 47 | char dirName[HTTPD_MAX_DNAME_LENGTH+1]; |
846354866 | 0:25d52c6a3448 | 48 | char *uristr; |
846354866 | 0:25d52c6a3448 | 49 | char *eou; |
846354866 | 0:25d52c6a3448 | 50 | char *qrystr; |
846354866 | 0:25d52c6a3448 | 51 | |
846354866 | 0:25d52c6a3448 | 52 | |
846354866 | 0:25d52c6a3448 | 53 | Ticker ledTick; |
846354866 | 0:25d52c6a3448 | 54 | |
846354866 | 0:25d52c6a3448 | 55 | void receive_dht11(); |
846354866 | 0:25d52c6a3448 | 56 | unsigned char receive_byte(); |
846354866 | 0:25d52c6a3448 | 57 | |
846354866 | 1:900e3ba27ddb | 58 | void delay(unsigned char ms) |
846354866 | 0:25d52c6a3448 | 59 | { |
846354866 | 0:25d52c6a3448 | 60 | unsigned int y; |
846354866 | 0:25d52c6a3448 | 61 | while(ms--) |
846354866 | 0:25d52c6a3448 | 62 | for(y=1920; y>0; y--); |
846354866 | 0:25d52c6a3448 | 63 | } |
846354866 | 0:25d52c6a3448 | 64 | |
846354866 | 0:25d52c6a3448 | 65 | void Delay_us(unsigned char us) |
846354866 | 0:25d52c6a3448 | 66 | { |
846354866 | 0:25d52c6a3448 | 67 | unsigned char y; |
846354866 | 0:25d52c6a3448 | 68 | while(us--) |
846354866 | 0:25d52c6a3448 | 69 | for(y=2; y>0; y--); |
846354866 | 0:25d52c6a3448 | 70 | } |
846354866 | 0:25d52c6a3448 | 71 | |
846354866 | 0:25d52c6a3448 | 72 | |
846354866 | 0:25d52c6a3448 | 73 | void button_led() |
846354866 | 0:25d52c6a3448 | 74 | { |
846354866 | 0:25d52c6a3448 | 75 | while(myInD11.read()) |
846354866 | 0:25d52c6a3448 | 76 | { |
846354866 | 0:25d52c6a3448 | 77 | wait(0.01f); |
846354866 | 0:25d52c6a3448 | 78 | if(!myInD11.read()) |
846354866 | 0:25d52c6a3448 | 79 | { |
846354866 | 0:25d52c6a3448 | 80 | myOutD12.write(!myOutD12.read()); |
846354866 | 0:25d52c6a3448 | 81 | status_led = myOutD12.read(); |
846354866 | 0:25d52c6a3448 | 82 | break; |
846354866 | 0:25d52c6a3448 | 83 | } |
846354866 | 0:25d52c6a3448 | 84 | } |
846354866 | 0:25d52c6a3448 | 85 | |
846354866 | 0:25d52c6a3448 | 86 | button_ledTimeout.attach(&button_led,0.1f); |
846354866 | 0:25d52c6a3448 | 87 | } |
846354866 | 0:25d52c6a3448 | 88 | |
846354866 | 0:25d52c6a3448 | 89 | void getFile(char* uri) |
846354866 | 0:25d52c6a3448 | 90 | { |
846354866 | 0:25d52c6a3448 | 91 | uart.printf("getFile %s\n", uri); |
846354866 | 0:25d52c6a3448 | 92 | strcpy(led_control, &uri[1]); |
846354866 | 0:25d52c6a3448 | 93 | //receive_dht11(); |
846354866 | 0:25d52c6a3448 | 94 | char *lstchr = strrchr(uri, NULL) -1; |
846354866 | 0:25d52c6a3448 | 95 | sprintf(httpHeader,"HTTP/1.1 200 OK\r\nContent-Type: text/html\r\nConnection: Close\r\n\r\n"); |
846354866 | 0:25d52c6a3448 | 96 | client.send(httpHeader,strlen(httpHeader)); |
846354866 | 0:25d52c6a3448 | 97 | sprintf(httpHeader,"<html><head><title>hello dfrobot</title></head><body><h1> Information State</h1><ul>"); |
846354866 | 0:25d52c6a3448 | 98 | client.send(httpHeader,strlen(httpHeader)); |
846354866 | 0:25d52c6a3448 | 99 | |
846354866 | 0:25d52c6a3448 | 100 | sprintf(httpHeader,"<H1>Temperature:%d Celsius</H1>", TH); |
846354866 | 0:25d52c6a3448 | 101 | client.send(httpHeader,strlen(httpHeader)); |
846354866 | 0:25d52c6a3448 | 102 | sprintf(httpHeader,"<H1>Humidity:%d %%</H1>", RH); |
846354866 | 0:25d52c6a3448 | 103 | client.send(httpHeader,strlen(httpHeader)); |
846354866 | 0:25d52c6a3448 | 104 | sprintf(httpHeader,"<H1>Gas Value:%d</H1>", myInA1.read_u16()); |
846354866 | 0:25d52c6a3448 | 105 | client.send(httpHeader,strlen(httpHeader)); |
846354866 | 0:25d52c6a3448 | 106 | |
846354866 | 0:25d52c6a3448 | 107 | static char i = 0, j = 0, open_1 = 1, cloce_1 = 1, k; |
846354866 | 0:25d52c6a3448 | 108 | if (strncmp(led_control, "cloce", 5)==0) |
846354866 | 0:25d52c6a3448 | 109 | {uart.printf("status_led--cloce--- %d\n", status_led); |
846354866 | 0:25d52c6a3448 | 110 | if(cloce_1) |
846354866 | 0:25d52c6a3448 | 111 | { |
846354866 | 0:25d52c6a3448 | 112 | sprintf(httpHeader,"<H1>Led state:CLOCE</H1>"); |
846354866 | 0:25d52c6a3448 | 113 | client.send(httpHeader,strlen(httpHeader)); |
846354866 | 0:25d52c6a3448 | 114 | myOutD12.write(0); |
846354866 | 0:25d52c6a3448 | 115 | sprintf(httpHeader,"<form action=\"http://%s/open\"><input type=\"submit\" value=\"ON/OFF\"></form>", seaver_ip); |
846354866 | 0:25d52c6a3448 | 116 | client.send(httpHeader,strlen(httpHeader)); |
846354866 | 0:25d52c6a3448 | 117 | |
846354866 | 0:25d52c6a3448 | 118 | j = 1; |
846354866 | 0:25d52c6a3448 | 119 | k = status_led; |
846354866 | 0:25d52c6a3448 | 120 | cloce_1 = 0; |
846354866 | 0:25d52c6a3448 | 121 | } |
846354866 | 0:25d52c6a3448 | 122 | else if (k == status_led && j) |
846354866 | 0:25d52c6a3448 | 123 | { |
846354866 | 0:25d52c6a3448 | 124 | sprintf(httpHeader,"<H1>Led state:CLOCE</H1>"); |
846354866 | 0:25d52c6a3448 | 125 | client.send(httpHeader,strlen(httpHeader)); |
846354866 | 0:25d52c6a3448 | 126 | myOutD12.write(0); |
846354866 | 0:25d52c6a3448 | 127 | sprintf(httpHeader,"<form action=\"http://%s/open\"><input type=\"submit\" value=\"ON/OFF\"></form>", seaver_ip); |
846354866 | 0:25d52c6a3448 | 128 | client.send(httpHeader,strlen(httpHeader)); |
846354866 | 0:25d52c6a3448 | 129 | j = 0; |
846354866 | 0:25d52c6a3448 | 130 | } |
846354866 | 0:25d52c6a3448 | 131 | else if(status_led && !j) |
846354866 | 0:25d52c6a3448 | 132 | { |
846354866 | 0:25d52c6a3448 | 133 | sprintf(httpHeader,"<H1>Led state:OPEN</H1>"); |
846354866 | 0:25d52c6a3448 | 134 | client.send(httpHeader,strlen(httpHeader)); |
846354866 | 0:25d52c6a3448 | 135 | myOutD12.write(1); |
846354866 | 0:25d52c6a3448 | 136 | sprintf(httpHeader,"<form action=\"http://%s/cloce\"><input type=\"submit\" value=\"ON/OFF\"></form>", seaver_ip); |
846354866 | 0:25d52c6a3448 | 137 | client.send(httpHeader,strlen(httpHeader)); |
846354866 | 0:25d52c6a3448 | 138 | } |
846354866 | 0:25d52c6a3448 | 139 | else if(!status_led && !j) |
846354866 | 0:25d52c6a3448 | 140 | { |
846354866 | 0:25d52c6a3448 | 141 | sprintf(httpHeader,"<H1>Led state:CLOCE</H1>"); |
846354866 | 0:25d52c6a3448 | 142 | client.send(httpHeader,strlen(httpHeader)); |
846354866 | 0:25d52c6a3448 | 143 | myOutD12.write(0); |
846354866 | 0:25d52c6a3448 | 144 | sprintf(httpHeader,"<form action=\"http://%s/open\"><input type=\"submit\" value=\"ON/OFF\"></form>", seaver_ip); |
846354866 | 0:25d52c6a3448 | 145 | client.send(httpHeader,strlen(httpHeader)); |
846354866 | 0:25d52c6a3448 | 146 | } |
846354866 | 0:25d52c6a3448 | 147 | |
846354866 | 0:25d52c6a3448 | 148 | open_1 = 1; |
846354866 | 0:25d52c6a3448 | 149 | } |
846354866 | 0:25d52c6a3448 | 150 | else if (strncmp(led_control, "open", 4)==0) |
846354866 | 0:25d52c6a3448 | 151 | {uart.printf("status_led--open--- %d\n", status_led); |
846354866 | 0:25d52c6a3448 | 152 | if(open_1) |
846354866 | 0:25d52c6a3448 | 153 | { |
846354866 | 0:25d52c6a3448 | 154 | sprintf(httpHeader,"<H1>Led state:OPEN</H1>"); |
846354866 | 0:25d52c6a3448 | 155 | client.send(httpHeader,strlen(httpHeader)); |
846354866 | 0:25d52c6a3448 | 156 | myOutD12.write(1); |
846354866 | 0:25d52c6a3448 | 157 | sprintf(httpHeader,"<form action=\"http://%s/cloce\"><input type=\"submit\" value=\"ON/OFF\"></form>", seaver_ip); |
846354866 | 0:25d52c6a3448 | 158 | client.send(httpHeader,strlen(httpHeader)); |
846354866 | 0:25d52c6a3448 | 159 | |
846354866 | 0:25d52c6a3448 | 160 | i = 1; |
846354866 | 0:25d52c6a3448 | 161 | k = status_led; |
846354866 | 0:25d52c6a3448 | 162 | open_1 = 0; |
846354866 | 0:25d52c6a3448 | 163 | } |
846354866 | 0:25d52c6a3448 | 164 | else if(k == status_led && i) |
846354866 | 0:25d52c6a3448 | 165 | { |
846354866 | 0:25d52c6a3448 | 166 | sprintf(httpHeader,"<H1>Led state:OPEN</H1>"); |
846354866 | 0:25d52c6a3448 | 167 | client.send(httpHeader,strlen(httpHeader)); |
846354866 | 0:25d52c6a3448 | 168 | myOutD12.write(1); |
846354866 | 0:25d52c6a3448 | 169 | sprintf(httpHeader,"<form action=\"http://%s/cloce\"><input type=\"submit\" value=\"ON/OFF\"></form>", seaver_ip); |
846354866 | 0:25d52c6a3448 | 170 | client.send(httpHeader,strlen(httpHeader)); |
846354866 | 0:25d52c6a3448 | 171 | i = 0; |
846354866 | 0:25d52c6a3448 | 172 | } |
846354866 | 0:25d52c6a3448 | 173 | else if (status_led && !i)// 0 |
846354866 | 0:25d52c6a3448 | 174 | { |
846354866 | 0:25d52c6a3448 | 175 | sprintf(httpHeader,"<H1>Led state:OPEN</H1>"); |
846354866 | 0:25d52c6a3448 | 176 | client.send(httpHeader,strlen(httpHeader)); |
846354866 | 0:25d52c6a3448 | 177 | myOutD12.write(1); |
846354866 | 0:25d52c6a3448 | 178 | sprintf(httpHeader,"<form action=\"http://%s/cloce\"><input type=\"submit\" value=\"ON/OFF\"></form>", seaver_ip); |
846354866 | 0:25d52c6a3448 | 179 | client.send(httpHeader,strlen(httpHeader)); |
846354866 | 0:25d52c6a3448 | 180 | } |
846354866 | 0:25d52c6a3448 | 181 | else if (!status_led && !i) |
846354866 | 0:25d52c6a3448 | 182 | { |
846354866 | 0:25d52c6a3448 | 183 | sprintf(httpHeader,"<H1>Led state:CLOCE</H1>"); |
846354866 | 0:25d52c6a3448 | 184 | client.send(httpHeader,strlen(httpHeader)); |
846354866 | 0:25d52c6a3448 | 185 | myOutD12.write(0); |
846354866 | 0:25d52c6a3448 | 186 | sprintf(httpHeader,"<form action=\"http://%s/open\"><input type=\"submit\" value=\"ON/OFF\"></form>", seaver_ip); |
846354866 | 0:25d52c6a3448 | 187 | client.send(httpHeader,strlen(httpHeader)); |
846354866 | 0:25d52c6a3448 | 188 | } |
846354866 | 0:25d52c6a3448 | 189 | |
846354866 | 0:25d52c6a3448 | 190 | cloce_1 = 1; |
846354866 | 0:25d52c6a3448 | 191 | } |
846354866 | 0:25d52c6a3448 | 192 | |
846354866 | 0:25d52c6a3448 | 193 | if (strncmp(led_control, "", 1)==0) |
846354866 | 0:25d52c6a3448 | 194 | { |
846354866 | 0:25d52c6a3448 | 195 | if(myOutD12.read()) |
846354866 | 0:25d52c6a3448 | 196 | { |
846354866 | 0:25d52c6a3448 | 197 | sprintf(httpHeader,"<H1>Led state:OPEN</H1>"); |
846354866 | 0:25d52c6a3448 | 198 | client.send(httpHeader,strlen(httpHeader)); |
846354866 | 0:25d52c6a3448 | 199 | myOutD12.write(1); |
846354866 | 0:25d52c6a3448 | 200 | |
846354866 | 0:25d52c6a3448 | 201 | sprintf(httpHeader,"<form action=\"http://%s/cloce\"><input type=\"submit\" value=\"ON/OFF\"></form>", seaver_ip); |
846354866 | 0:25d52c6a3448 | 202 | client.send(httpHeader,strlen(httpHeader)); |
846354866 | 0:25d52c6a3448 | 203 | status_led = 1; |
846354866 | 0:25d52c6a3448 | 204 | } |
846354866 | 0:25d52c6a3448 | 205 | else |
846354866 | 0:25d52c6a3448 | 206 | { |
846354866 | 0:25d52c6a3448 | 207 | sprintf(httpHeader,"<H1>Led state:CLOCE</H1>"); |
846354866 | 0:25d52c6a3448 | 208 | client.send(httpHeader,strlen(httpHeader)); |
846354866 | 0:25d52c6a3448 | 209 | myOutD12.write(0); |
846354866 | 0:25d52c6a3448 | 210 | |
846354866 | 0:25d52c6a3448 | 211 | sprintf(httpHeader,"<form action=\"http://%s/open\"><input type=\"submit\" value=\"ON/OFF\"></form>", seaver_ip); |
846354866 | 0:25d52c6a3448 | 212 | client.send(httpHeader,strlen(httpHeader)); |
846354866 | 0:25d52c6a3448 | 213 | status_led = 0; |
846354866 | 0:25d52c6a3448 | 214 | } |
846354866 | 0:25d52c6a3448 | 215 | } |
846354866 | 0:25d52c6a3448 | 216 | |
846354866 | 0:25d52c6a3448 | 217 | sprintf(httpHeader,"<meta http-equiv=\"refresh\" content=\"1\">"); |
846354866 | 0:25d52c6a3448 | 218 | client.send(httpHeader,strlen(httpHeader)); |
846354866 | 0:25d52c6a3448 | 219 | |
846354866 | 0:25d52c6a3448 | 220 | sprintf(httpHeader,"</ul></body></html>"); |
846354866 | 0:25d52c6a3448 | 221 | client.send(httpHeader,strlen(httpHeader)); |
846354866 | 0:25d52c6a3448 | 222 | } |
846354866 | 0:25d52c6a3448 | 223 | |
846354866 | 0:25d52c6a3448 | 224 | int main (void) |
846354866 | 0:25d52c6a3448 | 225 | { |
846354866 | 0:25d52c6a3448 | 226 | uart.baud(115200); |
846354866 | 0:25d52c6a3448 | 227 | uart.printf("Initializing\r\n"); |
846354866 | 0:25d52c6a3448 | 228 | // EthernetInterface eth; |
846354866 | 0:25d52c6a3448 | 229 | uart.printf("Initializing Ethernet\r\n"); |
846354866 | 0:25d52c6a3448 | 230 | //eth.init(); //Use DHCP |
846354866 | 0:25d52c6a3448 | 231 | //eth.init((uint8_t*)MAC); // Use DHCP for WIZnetInterface |
846354866 | 0:25d52c6a3448 | 232 | eth.init((uint8_t*)MAC,IP,MASK,GATEWAY); //IP,mask,Gateway |
846354866 | 0:25d52c6a3448 | 233 | uart.printf("Connecting\r\n"); |
846354866 | 0:25d52c6a3448 | 234 | eth.connect(); |
846354866 | 0:25d52c6a3448 | 235 | uart.printf("IP Address is %s\r\n", eth.getIPAddress()); |
846354866 | 0:25d52c6a3448 | 236 | |
846354866 | 0:25d52c6a3448 | 237 | // TCPSocketServer server; |
846354866 | 0:25d52c6a3448 | 238 | server.bind(HTTPD_SERVER_PORT); |
846354866 | 0:25d52c6a3448 | 239 | server.listen(); |
846354866 | 0:25d52c6a3448 | 240 | uart.printf("Server Listening\r\n"); |
846354866 | 0:25d52c6a3448 | 241 | |
846354866 | 0:25d52c6a3448 | 242 | button_ledTimeout.attach(&button_led,0.1f); |
846354866 | 2:0523b50f44fd | 243 | receive_dht11Timeout.attach(&receive_dht11,0.2f); |
846354866 | 0:25d52c6a3448 | 244 | |
846354866 | 0:25d52c6a3448 | 245 | while (true) { |
846354866 | 0:25d52c6a3448 | 246 | uart.printf("\nWait for new connection...\r\n"); |
846354866 | 0:25d52c6a3448 | 247 | server.accept(client); |
846354866 | 0:25d52c6a3448 | 248 | client.set_blocking(false, 1500); // Timeout after (1.5)s |
846354866 | 0:25d52c6a3448 | 249 | |
846354866 | 0:25d52c6a3448 | 250 | uart.printf("Connection from: %s\r\n", client.get_address()); |
846354866 | 0:25d52c6a3448 | 251 | uart.printf("%s():%d\n",__FUNCTION__, __LINE__); |
846354866 | 0:25d52c6a3448 | 252 | while (true) { |
846354866 | 0:25d52c6a3448 | 253 | //led2 = true; |
846354866 | 0:25d52c6a3448 | 254 | int n = client.receive(buffer, sizeof(buffer)); |
846354866 | 0:25d52c6a3448 | 255 | if (n <= 0) break; |
846354866 | 0:25d52c6a3448 | 256 | uart.printf("Recieved Data: %d\r\n\r\n%.*s\r\n",n,n,buffer); |
846354866 | 0:25d52c6a3448 | 257 | if (n >= 1024) { |
846354866 | 0:25d52c6a3448 | 258 | sprintf(httpHeader,"HTTP/1.1 413 Request Entity Too Large \r\nContent-Type: text\r\nConnection: Close\r\n\r\n"); |
846354866 | 0:25d52c6a3448 | 259 | client.send(httpHeader,strlen(httpHeader)); |
846354866 | 0:25d52c6a3448 | 260 | client.send(buffer,n); |
846354866 | 0:25d52c6a3448 | 261 | break; |
846354866 | 0:25d52c6a3448 | 262 | } else { |
846354866 | 0:25d52c6a3448 | 263 | uart.printf("%s():%d\n",__FUNCTION__, __LINE__); |
846354866 | 0:25d52c6a3448 | 264 | buffer[n]=0; |
846354866 | 0:25d52c6a3448 | 265 | } |
846354866 | 0:25d52c6a3448 | 266 | if (!strncmp(buffer, "GET ", 4)) { |
846354866 | 0:25d52c6a3448 | 267 | uart.printf("%s():%d\n",__FUNCTION__, __LINE__); |
846354866 | 0:25d52c6a3448 | 268 | uristr = buffer + 4; |
846354866 | 0:25d52c6a3448 | 269 | eou = strstr(uristr, " "); |
846354866 | 0:25d52c6a3448 | 270 | if (eou == NULL) { |
846354866 | 0:25d52c6a3448 | 271 | uart.printf("%s():%d\n",__FUNCTION__, __LINE__); |
846354866 | 0:25d52c6a3448 | 272 | sprintf(httpHeader,"HTTP/1.1 400 Bad Request \r\nContent-Type: text\r\nConnection: Close\r\n\r\n"); |
846354866 | 0:25d52c6a3448 | 273 | client.send(httpHeader,strlen(httpHeader)); |
846354866 | 0:25d52c6a3448 | 274 | client.send(buffer,n); |
846354866 | 0:25d52c6a3448 | 275 | } else { |
846354866 | 0:25d52c6a3448 | 276 | uart.printf("%s():%d\n",__FUNCTION__, __LINE__); |
846354866 | 0:25d52c6a3448 | 277 | *eou = 0; |
846354866 | 0:25d52c6a3448 | 278 | getFile(uristr); |
846354866 | 0:25d52c6a3448 | 279 | } |
846354866 | 0:25d52c6a3448 | 280 | } |
846354866 | 0:25d52c6a3448 | 281 | } |
846354866 | 0:25d52c6a3448 | 282 | //led2 = false; |
846354866 | 0:25d52c6a3448 | 283 | client.close(); |
846354866 | 0:25d52c6a3448 | 284 | } |
846354866 | 0:25d52c6a3448 | 285 | } |
846354866 | 0:25d52c6a3448 | 286 | |
846354866 | 1:900e3ba27ddb | 287 | unsigned char receive_byte() |
846354866 | 0:25d52c6a3448 | 288 | { |
846354866 | 0:25d52c6a3448 | 289 | unsigned char i,temp; |
846354866 | 1:900e3ba27ddb | 290 | for(i=0;i<8;i++) |
846354866 | 0:25d52c6a3448 | 291 | { |
846354866 | 0:25d52c6a3448 | 292 | U8FLAG = 2; |
846354866 | 1:900e3ba27ddb | 293 | while(!myIOD10.read() && U8FLAG++); |
846354866 | 0:25d52c6a3448 | 294 | Delay_us(30); |
846354866 | 1:900e3ba27ddb | 295 | temp=0; |
846354866 | 0:25d52c6a3448 | 296 | if(myIOD10.read()==1) |
846354866 | 1:900e3ba27ddb | 297 | temp=1; |
846354866 | 0:25d52c6a3448 | 298 | U8FLAG = 2; |
846354866 | 1:900e3ba27ddb | 299 | while(myIOD10.read() && U8FLAG++); |
846354866 | 1:900e3ba27ddb | 300 | |
846354866 | 0:25d52c6a3448 | 301 | if(U8FLAG==1)break; |
846354866 | 0:25d52c6a3448 | 302 | data_byte<<=1;// |
846354866 | 0:25d52c6a3448 | 303 | data_byte|=temp; |
846354866 | 0:25d52c6a3448 | 304 | } |
846354866 | 0:25d52c6a3448 | 305 | return data_byte; |
846354866 | 0:25d52c6a3448 | 306 | } |
846354866 | 0:25d52c6a3448 | 307 | |
846354866 | 1:900e3ba27ddb | 308 | void receive_dht11() |
846354866 | 0:25d52c6a3448 | 309 | { |
846354866 | 0:25d52c6a3448 | 310 | unsigned char T_H,T_L,R_H,R_L,check,num_check; |
846354866 | 0:25d52c6a3448 | 311 | |
846354866 | 1:900e3ba27ddb | 312 | |
846354866 | 0:25d52c6a3448 | 313 | myIOD10.output(); |
846354866 | 0:25d52c6a3448 | 314 | myIOD10.write(0); |
846354866 | 1:900e3ba27ddb | 315 | delay(20); |
846354866 | 0:25d52c6a3448 | 316 | |
846354866 | 0:25d52c6a3448 | 317 | myIOD10.write(1); |
846354866 | 1:900e3ba27ddb | 318 | Delay_us(25); |
846354866 | 0:25d52c6a3448 | 319 | myIOD10.write(1); |
846354866 | 0:25d52c6a3448 | 320 | |
846354866 | 0:25d52c6a3448 | 321 | myIOD10.input(); |
846354866 | 1:900e3ba27ddb | 322 | if(!myIOD10.read()) |
846354866 | 0:25d52c6a3448 | 323 | { |
846354866 | 1:900e3ba27ddb | 324 | while(!myIOD10.read()); |
846354866 | 1:900e3ba27ddb | 325 | while(myIOD10.read()); |
846354866 | 1:900e3ba27ddb | 326 | R_H=receive_byte(); |
846354866 | 1:900e3ba27ddb | 327 | R_L=receive_byte(); |
846354866 | 1:900e3ba27ddb | 328 | T_H=receive_byte(); |
846354866 | 1:900e3ba27ddb | 329 | T_L=receive_byte(); |
846354866 | 1:900e3ba27ddb | 330 | check=receive_byte(); |
846354866 | 0:25d52c6a3448 | 331 | uart.printf("--R_H--%d---R_L---%d--T_H--%d---T_L---%d\r\n", R_H,R_L,T_H,T_L); |
846354866 | 0:25d52c6a3448 | 332 | Delay_us(20); |
846354866 | 0:25d52c6a3448 | 333 | num_check=R_H+R_L+T_H+T_L;uart.printf("--num_check--%d---check---%d\r\n", num_check,check); |
846354866 | 1:900e3ba27ddb | 334 | if(num_check==check) |
846354866 | 0:25d52c6a3448 | 335 | { |
846354866 | 0:25d52c6a3448 | 336 | RH=R_H; |
846354866 | 0:25d52c6a3448 | 337 | RL=R_L; |
846354866 | 0:25d52c6a3448 | 338 | TH=T_H; |
846354866 | 0:25d52c6a3448 | 339 | TL=T_L; |
846354866 | 0:25d52c6a3448 | 340 | check=num_check; |
846354866 | 0:25d52c6a3448 | 341 | } |
846354866 | 0:25d52c6a3448 | 342 | } |
846354866 | 0:25d52c6a3448 | 343 | |
846354866 | 1:900e3ba27ddb | 344 | uart.printf("humidity [H] -out--%d\r\n", RH); |
846354866 | 0:25d52c6a3448 | 345 | uart.printf("humidity [L] -out--%d\r\n", RL); |
846354866 | 0:25d52c6a3448 | 346 | uart.printf("temperature [H] -out--%d\r\n", TH); |
846354866 | 1:900e3ba27ddb | 347 | uart.printf("temperature [L] -out--%d\r\n", TL); |
846354866 | 0:25d52c6a3448 | 348 | |
846354866 | 0:25d52c6a3448 | 349 | receive_dht11Timeout.attach(&receive_dht11,0.2f); |
846354866 | 0:25d52c6a3448 | 350 | } |