WIZwikiREST-io Reference code for WIZnet Academy

Dependencies:   DHT MbedJSONValue_v102 WIZnetInterface mbed-src

Fork of WIZwiki-REST-io_v103 by Lawrence Lee

Revision:
9:783d64a31276
Parent:
8:60d99da6eeb2
--- a/main.cpp	Mon Sep 05 06:29:55 2016 +0000
+++ b/main.cpp	Thu Oct 06 04:15:48 2016 +0000
@@ -3,93 +3,59 @@
 #include "RequestHandler.h"
 #include "EthernetInterface.h"
 #include "MbedJSONValue.h"
+#include "DHT.h"
 
 #define SERVER_PORT 80
 //#define DHCP
-//#define DEBUG
 
-//-- I2C OLED --
-#include "Adafruit_SSD1306.h"
-
-class I2CPreInit : public I2C
-{
-public:
-    I2CPreInit(PinName sda, PinName scl) : I2C(sda, scl)
-    {
-        frequency(100000);
-        start();
-    };
-};
-
-//-- I2C OLED --
-I2CPreInit gI2C(PA_10,PA_9);
-Adafruit_SSD1306_I2c gOled(gI2C,NC,0x78,64,128);
-
-//-- PWM DC --
-PwmOut DC(D6);
 
 //-- GPIO LED --
-DigitalInOut GP05(D5);
-
-DigitalInOut GP04(D4);
-DigitalInOut GP03(D3);
-
+DigitalOut GP09(D9);
+DigitalOut GP10(D10);
+DigitalOut GP11(D11);
 
 //-- ADC --
 AnalogIn   ain(A0);
 
+//-- DHT --
+DHT sensor(D4, DHT11);
+
+
 EthernetInterface eth;
 HTTPServer WIZwikiWebSvr;
 MbedJSONValue WIZwikiREST;
 
+GetRequestHandler  myGetReq;
+//PostRequestHandler myPostReq;
+PutRequestHandler  myPutReq;
+
 // Enter a MAC address for your controller below.
 uint8_t mac_addr[6] = {0x00, 0x08, 0xDC, 0x00, 0x01, 0xFE};
 char mac_str[20];
 char ip_addr[]      = "192.168.100.100";
 char subnet_mask[]  = "255.255.255.0";
 char gateway_addr[] = "192.168.100.1";
-float ain_value;
 
-GetRequestHandler  myGetReq;
-//PostRequestHandler myPostReq;
-PutRequestHandler  myPutReq;
+float c = 0.0f, h = 0.0f;
+
 
-//-- I2C OLED --
-bool oled_set(void* param)
+//-- GPIO --
+bool p9_set(void* param)
 {
-    char * oled;
     if(!param) return false;
-    oled = (char*) param;
-    gOled.clearDisplay();
-    gOled.setTextCursor(0,0);
-    gOled.printf("%s",oled);
-    gOled.display();    
+    GP09.write(*(int*)param);
     return true;
 }
-//-- PWM DC --
-bool pwm_set(void* param)
-{
-    if(!param) return false;
-    DC.write((float)(*(int*)param)/100.0);
-    return true;
-}
-//-- GPIO --
-bool p5_set(void* param)
+bool p10_set(void* param)
 {
     if(!param) return false;
-    GP05.write(*(int*)param);
+    GP10.write(*(int*)param);
     return true;
 }
-bool p4_set(void* param)
+bool p11_set(void* param)
 {
     if(!param) return false;
-    GP04.write(*(int*)param);
-    return true;
-}
-bool p3_set(void* param)
-{
-    if(!param) return false;
-    GP03.write(*(int*)param);
+    GP11.write(*(int*)param);
     return true;
 }
 
@@ -100,52 +66,29 @@
     return true;
 }
 
-void debug_info()
-{
-    printf("SP:0x%X\r\n",__current_sp());
-    __heapstats((__heapprt)fprintf,stderr);
-#ifdef DEBUG
-    __heapvalid((__heapprt)fprintf,stderr, 1);
-#endif
-    printf("\r\n");
-}    
+//-- DHT --
+bool tmp_read(void* param)
+{  
+    wait(0.5);
+    ((MbedJSONValue*)param)->_value.asDouble = (sensor.readData()==0) ?  sensor.ReadTemperature(CELCIUS) : 0;
+    return true;
+}
+bool hum_read(void* param)
+{   
+    wait(0.5);
+    ((MbedJSONValue*)param)->_value.asDouble = (sensor.readData()==0) ?  sensor.ReadHumidity() : 0;
+    return true;
+}
+ 
 
 void WIZwiki_REST_init();
 
 int main(void)
 {
-#ifdef DEBUG
-    debug_info();
-#endif
+
     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]);
-    
-    // OLED init
-    gOled.begin();
-    gOled.clearDisplay();
-    
-    // PWM init
-    DC.period_ms(1);
-    DC.write(0);
-    
-    //GPIO set & init
-    GP05.output();
-    GP05.write(1);
-    
-    //ADC init
-    
-    printf("START \r\n");    
-    printf("sizeof(MbedJSONValue)=%d\r\n",sizeof(MbedJSONValue));
-    printf("sizeof(vector)=%d\r\n",sizeof(std::vector<string*>));
-    printf("sizeof(string)=%d\r\n",sizeof(std::string));
-#ifdef DEBUG
-    debug_info();
-#endif
 
     WIZwiki_REST_init();
-
-#ifdef DEBUG
-    debug_info();
-#endif
                     
     // Serialize it into a JSON string
     printf("---------------------WIZwikiREST-------------------- \r\n");
@@ -184,9 +127,7 @@
     
     printf("Link up\r\n");
     printf("IP Address is %s\r\n", eth.getIPAddress());
-#ifdef DEBUG
-    debug_info();
-#endif
+
 
     if(!WIZwikiWebSvr.init(SERVER_PORT))
     {
@@ -203,11 +144,8 @@
 void WIZwiki_REST_init(void)
 {
     //Fill the object
-    WIZwikiREST["Name"] = "WIZwikiREST-io ver1.01";
+    WIZwikiREST["Name"] = "WIZwikiREST-io WIZnet Academy";
     WIZwikiREST["Name"].accessible = false;
-#ifdef DEBUG
-    debug_info();
-#endif
     
     //Network
     WIZwikiREST["Network"]["MAC"] = mac_str;
@@ -217,34 +155,29 @@
     WIZwikiREST["Network"]["SN"].accessible = true;  
     WIZwikiREST["Network"]["GW"] = gateway_addr;
     WIZwikiREST["Network"]["GW"].accessible = true;
-    
-    // I2C OLED
-    WIZwikiREST["I2C"]["OLED"] = "none";
-    WIZwikiREST["I2C"]["OLED"].accessible = true;
-    WIZwikiREST["I2C"]["OLED"].cb_action = oled_set;
-    
-    // PWM DC
-    WIZwikiREST["PWM"]["DC"] = DC.read();
-    WIZwikiREST["PWM"]["DC"].accessible = true;
-    WIZwikiREST["PWM"]["DC"].cb_action = pwm_set;
-    
+   
     // GPIO
-    WIZwikiREST["GPIOs"]["P03"] = GP03.read();
-    WIZwikiREST["GPIOs"]["P03"].accessible = true;
-    WIZwikiREST["GPIOs"]["P03"].cb_action = p3_set;
-    WIZwikiREST["GPIOs"]["P04"] = GP04.read();
-    WIZwikiREST["GPIOs"]["P04"].accessible = true;
-    WIZwikiREST["GPIOs"]["P04"].cb_action = p4_set;\
-    WIZwikiREST["GPIOs"]["P05"] = GP05.read();
-    WIZwikiREST["GPIOs"]["P05"].accessible = true;
-    WIZwikiREST["GPIOs"]["P05"].cb_action = p5_set;
+    WIZwikiREST["GPIOs"]["P09"] = 0;
+    WIZwikiREST["GPIOs"]["P09"].accessible = true;
+    WIZwikiREST["GPIOs"]["P09"].cb_action = p9_set;
+    WIZwikiREST["GPIOs"]["P10"] = 0;
+    WIZwikiREST["GPIOs"]["P10"].accessible = true;
+    WIZwikiREST["GPIOs"]["P10"].cb_action = p10_set;
+    WIZwikiREST["GPIOs"]["P11"] = 0;
+    WIZwikiREST["GPIOs"]["P11"].accessible = true;
+    WIZwikiREST["GPIOs"]["P11"].cb_action = p11_set;
     
     // ADC
-    WIZwikiREST["ADC"]["A0"] = ain.read();
+    WIZwikiREST["ADC"]["A0"] = 0.0f;
     WIZwikiREST["ADC"]["A0"].accessible = false;
     WIZwikiREST["ADC"]["A0"].cb_action = ain_read;
-
-#ifdef DEBUG
-    debug_info();
-#endif
+    
+    // DHT11
+    WIZwikiREST["DHT"]["tmp"] = 0.0f;
+    WIZwikiREST["DHT"]["tmp"].accessible = false;
+    WIZwikiREST["DHT"]["tmp"].cb_action = tmp_read;
+    WIZwikiREST["DHT"]["hum"] = 0.0f;
+    WIZwikiREST["DHT"]["hum"].accessible = false;
+    WIZwikiREST["DHT"]["hum"].cb_action = hum_read;
+    
 }