DongEun Koak / RPC_HTTP_WIZnetInterface

Dependencies:   HTTPServer WIZnetInterface mbed-rpc DHT mbed-src

Committer:
kaizen
Date:
Thu Jul 30 02:31:11 2015 +0000
Revision:
1:cffa64d79a8b
Parent:
0:ca442200bc8a
Added function for controlling led and get temperature information

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kaizen 0:ca442200bc8a 1 #include "mbed.h"
kaizen 0:ca442200bc8a 2 #include "EthernetInterface.h"
kaizen 0:ca442200bc8a 3 #include "HTTPServer.h"
kaizen 0:ca442200bc8a 4 #include "mbed_rpc.h"
kaizen 1:cffa64d79a8b 5 #include "DHT.h"
kaizen 1:cffa64d79a8b 6
kaizen 1:cffa64d79a8b 7 RpcDigitalOut led1(D9,"led1");
kaizen 1:cffa64d79a8b 8 RpcDigitalOut led2(D10,"led2");
kaizen 1:cffa64d79a8b 9 RpcDigitalOut led3(D11,"led3");
kaizen 0:ca442200bc8a 10
kaizen 1:cffa64d79a8b 11 //RPCVarialbe<float> RPCTemperature(&GetTemperature, "Temperature");
kaizen 1:cffa64d79a8b 12 //RPCVarialbe<float> RPCHumidity(&GetHumidity, "Humidity");
kaizen 1:cffa64d79a8b 13 void Get_Temp_and_Humidity(Arguments * input, Reply * output);
kaizen 1:cffa64d79a8b 14
kaizen 1:cffa64d79a8b 15 RPCFunction Temp_and_Humidity_Finder(&Get_Temp_and_Humidity, "Temp_and_Humidity_Finder");
kaizen 0:ca442200bc8a 16
kaizen 0:ca442200bc8a 17 EthernetInterface eth;
kaizen 0:ca442200bc8a 18 HTTPServer svr;
kaizen 0:ca442200bc8a 19
kaizen 1:cffa64d79a8b 20 DHT sensor(D4, DHT11);
kaizen 1:cffa64d79a8b 21
kaizen 1:cffa64d79a8b 22 void Get_Temp_and_Humidity(Arguments * input, Reply *output){
kaizen 1:cffa64d79a8b 23 int error = 0;
kaizen 1:cffa64d79a8b 24 float h = 0.0f, c = 0.0f;
kaizen 1:cffa64d79a8b 25 char arg[100];
kaizen 1:cffa64d79a8b 26
kaizen 1:cffa64d79a8b 27 error = sensor.readData();
kaizen 1:cffa64d79a8b 28 if (0 == error) {
kaizen 1:cffa64d79a8b 29 c = sensor.ReadTemperature(CELCIUS);
kaizen 1:cffa64d79a8b 30 h = sensor.ReadHumidity();
kaizen 1:cffa64d79a8b 31 sprintf(arg,"Temperature in Celcius: %4.2f, Humidity is %4.2f",c, h);
kaizen 1:cffa64d79a8b 32
kaizen 1:cffa64d79a8b 33 output->putData(arg);
kaizen 1:cffa64d79a8b 34 }
kaizen 1:cffa64d79a8b 35 }
kaizen 1:cffa64d79a8b 36
kaizen 0:ca442200bc8a 37 int main() {
kaizen 0:ca442200bc8a 38 //Turn the LEDs off
kaizen 1:cffa64d79a8b 39 uint8_t mac_addr[6] = {0x00, 0x08, 0xDC, 0x32, 0x23, 0x42};
kaizen 1:cffa64d79a8b 40 led1.write(0);
kaizen 1:cffa64d79a8b 41 led2.write(0);
kaizen 1:cffa64d79a8b 42 led3.write(0);
kaizen 0:ca442200bc8a 43
kaizen 0:ca442200bc8a 44 RPC::add_rpc_class<RpcDigitalOut>();
kaizen 0:ca442200bc8a 45
kaizen 0:ca442200bc8a 46 printf("Setting up...\n");
kaizen 0:ca442200bc8a 47 eth.init(mac_addr);
kaizen 0:ca442200bc8a 48 int ethErr = eth.connect();
kaizen 0:ca442200bc8a 49 if(ethErr < 0)
kaizen 0:ca442200bc8a 50 {
kaizen 0:ca442200bc8a 51 printf("Error %d in setup.\n", ethErr);
kaizen 0:ca442200bc8a 52 return -1;
kaizen 0:ca442200bc8a 53 }
kaizen 0:ca442200bc8a 54 svr.addHandler<HTTPRpcRequestHandler>("/rpc");
kaizen 0:ca442200bc8a 55
kaizen 0:ca442200bc8a 56 //attach server to port 80
kaizen 1:cffa64d79a8b 57 printf("Listening...\n");
kaizen 0:ca442200bc8a 58 svr.start(80, &eth);
kaizen 0:ca442200bc8a 59
kaizen 0:ca442200bc8a 60 Timer tm;
kaizen 0:ca442200bc8a 61 tm.start();
kaizen 0:ca442200bc8a 62 //Listen indefinitely
kaizen 0:ca442200bc8a 63 while(true)
kaizen 0:ca442200bc8a 64 {
kaizen 0:ca442200bc8a 65 svr.poll();
kaizen 0:ca442200bc8a 66 if(tm.read()>.5)
kaizen 0:ca442200bc8a 67 {
kaizen 0:ca442200bc8a 68 tm.start();
kaizen 0:ca442200bc8a 69 }
kaizen 0:ca442200bc8a 70 }
kaizen 1:cffa64d79a8b 71 }