WIZwikiREST-io Reference code for WIZnet Academy

Dependencies:   DHT MbedJSONValue_v102 WIZnetInterface mbed-src

Fork of WIZwiki-REST-io_v103 by Lawrence Lee

Committer:
joon874
Date:
Thu Oct 06 04:15:48 2016 +0000
Revision:
9:783d64a31276
Parent:
8:60d99da6eeb2
WIZwikiREST-io Reference code for WIZnet Academy

Who changed what in which revision?

UserRevisionLine numberNew contents of line
joon874 0:5886f525a4ad 1 #include "mbed.h"
joon874 0:5886f525a4ad 2 #include "HTTPServer.h"
joon874 0:5886f525a4ad 3 #include "RequestHandler.h"
joon874 0:5886f525a4ad 4 #include "EthernetInterface.h"
joon874 0:5886f525a4ad 5 #include "MbedJSONValue.h"
joon874 9:783d64a31276 6 #include "DHT.h"
joon874 0:5886f525a4ad 7
joon874 0:5886f525a4ad 8 #define SERVER_PORT 80
joon874 8:60d99da6eeb2 9 //#define DHCP
joon874 4:0b5a199e91f3 10
joon874 5:473a66ae9596 11
joon874 6:2974bbc94e7a 12 //-- GPIO LED --
joon874 9:783d64a31276 13 DigitalOut GP09(D9);
joon874 9:783d64a31276 14 DigitalOut GP10(D10);
joon874 9:783d64a31276 15 DigitalOut GP11(D11);
joon874 8:60d99da6eeb2 16
joon874 6:2974bbc94e7a 17 //-- ADC --
joon874 6:2974bbc94e7a 18 AnalogIn ain(A0);
joon874 6:2974bbc94e7a 19
joon874 9:783d64a31276 20 //-- DHT --
joon874 9:783d64a31276 21 DHT sensor(D4, DHT11);
joon874 9:783d64a31276 22
joon874 9:783d64a31276 23
joon874 0:5886f525a4ad 24 EthernetInterface eth;
joon874 0:5886f525a4ad 25 HTTPServer WIZwikiWebSvr;
joon874 0:5886f525a4ad 26 MbedJSONValue WIZwikiREST;
joon874 0:5886f525a4ad 27
joon874 9:783d64a31276 28 GetRequestHandler myGetReq;
joon874 9:783d64a31276 29 //PostRequestHandler myPostReq;
joon874 9:783d64a31276 30 PutRequestHandler myPutReq;
joon874 9:783d64a31276 31
joon874 0:5886f525a4ad 32 // Enter a MAC address for your controller below.
joon874 0:5886f525a4ad 33 uint8_t mac_addr[6] = {0x00, 0x08, 0xDC, 0x00, 0x01, 0xFE};
joon874 0:5886f525a4ad 34 char mac_str[20];
joon874 4:0b5a199e91f3 35 char ip_addr[] = "192.168.100.100";
joon874 4:0b5a199e91f3 36 char subnet_mask[] = "255.255.255.0";
joon874 0:5886f525a4ad 37 char gateway_addr[] = "192.168.100.1";
joon874 0:5886f525a4ad 38
joon874 9:783d64a31276 39 float c = 0.0f, h = 0.0f;
joon874 9:783d64a31276 40
joon874 4:0b5a199e91f3 41
joon874 9:783d64a31276 42 //-- GPIO --
joon874 9:783d64a31276 43 bool p9_set(void* param)
joon874 4:0b5a199e91f3 44 {
joon874 4:0b5a199e91f3 45 if(!param) return false;
joon874 9:783d64a31276 46 GP09.write(*(int*)param);
joon874 4:0b5a199e91f3 47 return true;
joon874 4:0b5a199e91f3 48 }
joon874 9:783d64a31276 49 bool p10_set(void* param)
MidnightCow 1:728e5b5c8dae 50 {
joon874 6:2974bbc94e7a 51 if(!param) return false;
joon874 9:783d64a31276 52 GP10.write(*(int*)param);
MidnightCow 1:728e5b5c8dae 53 return true;
MidnightCow 1:728e5b5c8dae 54 }
joon874 9:783d64a31276 55 bool p11_set(void* param)
joon874 8:60d99da6eeb2 56 {
joon874 8:60d99da6eeb2 57 if(!param) return false;
joon874 9:783d64a31276 58 GP11.write(*(int*)param);
joon874 8:60d99da6eeb2 59 return true;
joon874 8:60d99da6eeb2 60 }
joon874 8:60d99da6eeb2 61
joon874 6:2974bbc94e7a 62 //-- ADC --
joon874 6:2974bbc94e7a 63 bool ain_read(void* param)
joon874 6:2974bbc94e7a 64 {
joon874 6:2974bbc94e7a 65 ((MbedJSONValue*)param)->_value.asDouble = ain.read();
joon874 6:2974bbc94e7a 66 return true;
joon874 6:2974bbc94e7a 67 }
MidnightCow 1:728e5b5c8dae 68
joon874 9:783d64a31276 69 //-- DHT --
joon874 9:783d64a31276 70 bool tmp_read(void* param)
joon874 9:783d64a31276 71 {
joon874 9:783d64a31276 72 wait(0.5);
joon874 9:783d64a31276 73 ((MbedJSONValue*)param)->_value.asDouble = (sensor.readData()==0) ? sensor.ReadTemperature(CELCIUS) : 0;
joon874 9:783d64a31276 74 return true;
joon874 9:783d64a31276 75 }
joon874 9:783d64a31276 76 bool hum_read(void* param)
joon874 9:783d64a31276 77 {
joon874 9:783d64a31276 78 wait(0.5);
joon874 9:783d64a31276 79 ((MbedJSONValue*)param)->_value.asDouble = (sensor.readData()==0) ? sensor.ReadHumidity() : 0;
joon874 9:783d64a31276 80 return true;
joon874 9:783d64a31276 81 }
joon874 9:783d64a31276 82
joon874 4:0b5a199e91f3 83
joon874 0:5886f525a4ad 84 void WIZwiki_REST_init();
joon874 0:5886f525a4ad 85
joon874 0:5886f525a4ad 86 int main(void)
joon874 0:5886f525a4ad 87 {
joon874 9:783d64a31276 88
joon874 4:0b5a199e91f3 89 sprintf(mac_str, "%02X:%02X:%02X:%02X:%02X:%02X",mac_addr[0],mac_addr[1],mac_addr[2],mac_addr[3],mac_addr[4],mac_addr[5]);
joon874 0:5886f525a4ad 90
joon874 0:5886f525a4ad 91 WIZwiki_REST_init();
MidnightCow 1:728e5b5c8dae 92
joon874 0:5886f525a4ad 93 // Serialize it into a JSON string
joon874 8:60d99da6eeb2 94 printf("---------------------WIZwikiREST-------------------- \r\n");
joon874 4:0b5a199e91f3 95 printf("\r\n%s\r\n", WIZwikiREST.serialize().c_str());
joon874 8:60d99da6eeb2 96 printf("---------------------------------------------------- \r\n");
joon874 0:5886f525a4ad 97
joon874 4:0b5a199e91f3 98 WIZwikiWebSvr.add_request_handler("GET", &myGetReq);
joon874 8:60d99da6eeb2 99 //WIZwikiWebSvr.add_request_handler("POST", &myPostReq);
joon874 8:60d99da6eeb2 100 WIZwikiWebSvr.add_request_handler("PUT", &myPutReq);
joon874 4:0b5a199e91f3 101 //WIZwikiWebSvr.add_request_handler("DELETE", new PostRequestHandler());
joon874 0:5886f525a4ad 102
joon874 0:5886f525a4ad 103 #ifdef DHCP
joon874 0:5886f525a4ad 104 eth.init(mac_addr); //Use DHCP
joon874 0:5886f525a4ad 105 #else
joon874 0:5886f525a4ad 106 eth.init(mac_addr, ip_addr, subnet_mask, gateway_addr); //Not Use DHCP
joon874 0:5886f525a4ad 107 #endif
joon874 0:5886f525a4ad 108
joon874 2:ca36ecca24c2 109
joon874 0:5886f525a4ad 110 printf("Check Ethernet Link\r\n");
joon874 4:0b5a199e91f3 111
joon874 2:ca36ecca24c2 112 do{
joon874 2:ca36ecca24c2 113 printf(" Link - Wait... \r\n");
joon874 2:ca36ecca24c2 114 wait(1);
joon874 2:ca36ecca24c2 115 }while(!eth.ethernet_link());
joon874 2:ca36ecca24c2 116 printf("-- Ethetnet PHY Link - Done -- \r\n");
joon874 2:ca36ecca24c2 117
joon874 2:ca36ecca24c2 118 if (eth.connect() < 0 )
joon874 2:ca36ecca24c2 119 printf("-- EThernet Connect - Fail -- \r\n");
joon874 2:ca36ecca24c2 120 else
joon874 0:5886f525a4ad 121 {
joon874 2:ca36ecca24c2 122 printf("-- Assigned Network Information -- \r\n");
joon874 2:ca36ecca24c2 123 printf(" IP : %s\r\n\r\n", eth.getIPAddress());
joon874 2:ca36ecca24c2 124 printf(" MASK : %s\r\n\r\n", eth.getNetworkMask());
joon874 2:ca36ecca24c2 125 printf(" GW : %s\r\n\r\n", eth.getGateway());
joon874 0:5886f525a4ad 126 }
joon874 0:5886f525a4ad 127
joon874 0:5886f525a4ad 128 printf("Link up\r\n");
joon874 0:5886f525a4ad 129 printf("IP Address is %s\r\n", eth.getIPAddress());
joon874 9:783d64a31276 130
joon874 0:5886f525a4ad 131
joon874 0:5886f525a4ad 132 if(!WIZwikiWebSvr.init(SERVER_PORT))
joon874 0:5886f525a4ad 133 {
joon874 0:5886f525a4ad 134 eth.disconnect();
joon874 0:5886f525a4ad 135 return -1;
joon874 0:5886f525a4ad 136 }
joon874 0:5886f525a4ad 137
joon874 0:5886f525a4ad 138 while(1)
joon874 0:5886f525a4ad 139 {
joon874 0:5886f525a4ad 140 WIZwikiWebSvr.run();
joon874 0:5886f525a4ad 141 }
joon874 0:5886f525a4ad 142 }
joon874 0:5886f525a4ad 143
joon874 0:5886f525a4ad 144 void WIZwiki_REST_init(void)
joon874 0:5886f525a4ad 145 {
joon874 0:5886f525a4ad 146 //Fill the object
joon874 9:783d64a31276 147 WIZwikiREST["Name"] = "WIZwikiREST-io WIZnet Academy";
MidnightCow 1:728e5b5c8dae 148 WIZwikiREST["Name"].accessible = false;
MidnightCow 1:728e5b5c8dae 149
joon874 0:5886f525a4ad 150 //Network
joon874 0:5886f525a4ad 151 WIZwikiREST["Network"]["MAC"] = mac_str;
joon874 0:5886f525a4ad 152 WIZwikiREST["Network"]["IP"] = ip_addr;
MidnightCow 1:728e5b5c8dae 153 WIZwikiREST["Network"]["IP"].accessible = true;
joon874 0:5886f525a4ad 154 WIZwikiREST["Network"]["SN"] = subnet_mask;
MidnightCow 1:728e5b5c8dae 155 WIZwikiREST["Network"]["SN"].accessible = true;
joon874 0:5886f525a4ad 156 WIZwikiREST["Network"]["GW"] = gateway_addr;
MidnightCow 1:728e5b5c8dae 157 WIZwikiREST["Network"]["GW"].accessible = true;
joon874 9:783d64a31276 158
joon874 5:473a66ae9596 159 // GPIO
joon874 9:783d64a31276 160 WIZwikiREST["GPIOs"]["P09"] = 0;
joon874 9:783d64a31276 161 WIZwikiREST["GPIOs"]["P09"].accessible = true;
joon874 9:783d64a31276 162 WIZwikiREST["GPIOs"]["P09"].cb_action = p9_set;
joon874 9:783d64a31276 163 WIZwikiREST["GPIOs"]["P10"] = 0;
joon874 9:783d64a31276 164 WIZwikiREST["GPIOs"]["P10"].accessible = true;
joon874 9:783d64a31276 165 WIZwikiREST["GPIOs"]["P10"].cb_action = p10_set;
joon874 9:783d64a31276 166 WIZwikiREST["GPIOs"]["P11"] = 0;
joon874 9:783d64a31276 167 WIZwikiREST["GPIOs"]["P11"].accessible = true;
joon874 9:783d64a31276 168 WIZwikiREST["GPIOs"]["P11"].cb_action = p11_set;
joon874 6:2974bbc94e7a 169
joon874 6:2974bbc94e7a 170 // ADC
joon874 9:783d64a31276 171 WIZwikiREST["ADC"]["A0"] = 0.0f;
joon874 6:2974bbc94e7a 172 WIZwikiREST["ADC"]["A0"].accessible = false;
joon874 6:2974bbc94e7a 173 WIZwikiREST["ADC"]["A0"].cb_action = ain_read;
joon874 9:783d64a31276 174
joon874 9:783d64a31276 175 // DHT11
joon874 9:783d64a31276 176 WIZwikiREST["DHT"]["tmp"] = 0.0f;
joon874 9:783d64a31276 177 WIZwikiREST["DHT"]["tmp"].accessible = false;
joon874 9:783d64a31276 178 WIZwikiREST["DHT"]["tmp"].cb_action = tmp_read;
joon874 9:783d64a31276 179 WIZwikiREST["DHT"]["hum"] = 0.0f;
joon874 9:783d64a31276 180 WIZwikiREST["DHT"]["hum"].accessible = false;
joon874 9:783d64a31276 181 WIZwikiREST["DHT"]["hum"].cb_action = hum_read;
joon874 9:783d64a31276 182
joon874 0:5886f525a4ad 183 }