iot init pub

Dependencies:   DHT11_Lib mbed

Fork of ESP8266-WEB-Mbed-LPC1768-Controller by jim hamblen

Attached is the code for our IoT Controlled AC Outlets.

To use code, ensure all Libraries are imported as well.

Files at this revision

API Documentation at this revision

Comitter:
deronmai
Date:
Thu Mar 17 21:37:39 2016 +0000
Parent:
4:40dd020463ea
Commit message:
init commit

Changed in this revision

DHT11_Lib.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
diff -r 40dd020463ea -r 280650ceb796 DHT11_Lib.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/DHT11_Lib.lib	Thu Mar 17 21:37:39 2016 +0000
@@ -0,0 +1,1 @@
+https://developer.mbed.org/users/deronmai/code/DHT11_Lib/#4639e0a304e0
diff -r 40dd020463ea -r 280650ceb796 main.cpp
--- a/main.cpp	Fri Aug 28 01:37:50 2015 +0000
+++ b/main.cpp	Thu Mar 17 21:37:39 2016 +0000
@@ -1,6 +1,7 @@
 // ESP8266 Static page WEB server to control Mbed
 
 #include "mbed.h"
+#include "DHT.h"
 //#include "DS18B20.h"
 
 Serial pc(USBTX, USBRX);
@@ -12,20 +13,26 @@
 DigitalOut  led1(LED1);      // (PTB18)
 DigitalOut  led2(LED2);    // (PTB19)
 DigitalOut  led3(LED3);     // (PTD1)
+DigitalOut  led4(LED4);
 
 // Digital Out and In pins, can be configured to any suitable pin depending on Platform
-DigitalOut  Out1(p6);
-DigitalOut  Out2(p7);
-DigitalOut  Out3(p8);
+DigitalOut  Outlet1(p25);
+DigitalOut  Outlet2(p24);
+DigitalOut  Outlet3(p23);
+DigitalOut  Outlet4(p22);
 DigitalOut  reset(p26);
 
-DigitalIn  In1(p9);
-DigitalIn  In2(p10);
-DigitalIn  In3(p11);
+int setOut2=0; // if 0, turn off when temp >
+                // if 1, turn on when temp >
+
+DHT tsensor(p21, DHT11);
 
-PwmOut speaker(p21);
-AnalogIn   Ain1(p18);
-AnalogIn   Ain2(p19);
+AnalogIn   I1(p20);
+AnalogIn   Ain1(p19);
+
+//PwmOut speaker(p21);
+//AnalogIn   Ain1(p18);
+//AnalogIn   Ain2(p19);
 
 Timer t1;
 Timer t2;
@@ -34,11 +41,13 @@
 
 int bufflen, DataRX, count, getcount, replycount, servreq, timeout;
 int bufl, ipdLen, linkID, weberror, webcounter;
-float temperature, AdcIn, Ht;
+float temperature, AdcIn, Ht, Tf, Tc, Tk, Hm, Current1;
 float R1=100000, R2=10000; // resistor values to give a 10:1 reduction of measured AnalogIn voltage
 char Vcc[10];
 char Temp[10];
 char temp[10];
+char Hum[10];
+char Cur1[10];
 char webcount[8];
 char lasthit[30];
 char timebuf[30];
@@ -49,10 +58,15 @@
 char replybuff[1024];
 char webdata[1024]; // This may need to be bigger depending on WEB browser used
 char webbuff[4096];     // Currently using 1986 characters, Increase this if more web page data added
+int tmpval1;
+int tmpval2;
 
 void SendCMD(),getreply(),ReadWebData(),startserver(),sendpage(),SendWEB(),sendcheck();
 void gettime(),gettemp(),getbattery(),setRTC(),beep();
 
+int tmpOn=70, tmpOff=70;
+char setTmpOn[10];
+char setTmpOff[10];
 // manual set RTC values
 int minute      =00;    // 0-59
 int hour        =12;    // 2-23
@@ -80,12 +94,13 @@
 int main()
 {
     reset=0;
-    pc.baud(115200);
+    pc.baud(9600);
 
     pc.printf("\f\n\r------------ ESP8266 Hardware Reset --------------\n\r");
     wait(0.5);
     reset=1;
-    led1=1,led2=0,led3=0;
+    Outlet1=1, Outlet2=1, Outlet3=1, Outlet4=1;
+    led1=0,led2=0,led3=1;
     timeout=6000;
     getcount=500;
     getreply();
@@ -97,6 +112,26 @@
     startserver();
 
     while(1) {
+        if (setOut2 == 0){ // turn off when tmp >
+            if (Tf > tmpOff) {
+                Outlet2 = 1;
+                led2 = 0;
+            }
+            else {
+                Outlet2 = 0;
+                led2 = 1;
+            }
+        }
+        else { // turn on when tmp >
+            if (Tf > tmpOn) {
+                Outlet2 = 0;
+                led2 = 1;
+            }
+            else {
+                Outlet2 = 1;
+                led2 = 0;
+            }
+        }
         if(DataRX==1) {
             ReadWebData();
             beep();
@@ -122,65 +157,69 @@
 
 // WEB page data
     strcpy(webbuff, "<!DOCTYPE html>");
-    strcat(webbuff, "<html><head><title>ESP8266 Mbed LPC1768</title></head>");
+    strcat(webbuff, "<html><head><title>ESP8266 Mbed IoT Controlled Outlets</title></head>");
     strcat(webbuff, "<body>");
     strcat(webbuff, "<div style=\"text-align:center; background-color:#F4F4F4; color:#00AEDB;\"><h1>ESP8266 Mbed IoT Web Controller</h1>");
     strcat(webbuff, "Hit Count - ");
     strcat(webbuff, webcount);
-    strcat(webbuff, "<br>Last Hit - ");
-    strcat(webbuff, lasthit);
+    strcat(webbuff, "<br>Temp - ");
+    strcat(webbuff, Temp);
+    strcat(webbuff, "<br>3.3v Supply Voltage:&nbsp&nbsp"); //<input type=\"text\" size=4 value=\"
+    strcat(webbuff, Vcc);
+    strcat(webbuff, " </sup>V");
     strcat(webbuff, "</div><br /><hr>");
     strcat(webbuff, "<h3>Mbed RTC Time -&nbsp&nbsp");
     strcat(webbuff, timebuf);
     strcat(webbuff, "</h3>\r\n");
-    strcat(webbuff, "<p><form method=\"POST\"><strong> Analog 1:&nbsp&nbsp<input type=\"text\" size=6 value=\"");
-    strcat(webbuff, Temp);
-    strcat(webbuff, "\"> </sup>V <form method=\"POST\"> <strong> &nbsp&nbspAnalog 2:&nbsp&nbsp<input type=\"text\" size=4 value=\"");
-    strcat(webbuff, Vcc);
-    strcat(webbuff, "\"> </sup>V");
-    if(led1==0) {
-        strcat(webbuff, "<p><input type=\"radio\" name=\"led1\" value=\"0\" checked>  LED 1 off");
-        strcat(webbuff, "<br><input type=\"radio\" name=\"led1\" value=\"1\" >  LED 1 on");
+    strcat(webbuff, "<p><form method=\"POST\"><strong> Outlet 1 Current:&nbsp&nbsp<input type=\"text\" size=6 value=\"");
+    strcat(webbuff, Cur1);
+    strcat(webbuff, "\"> </sup>A <form method=\"POST\"> <strong> &nbsp&nbsp");
+    if(Outlet1==1) {
+        strcat(webbuff, "<p><input type=\"radio\" name=\"outlet1\" value=\"0\" checked>  Outlet 1 off");
+        strcat(webbuff, "<br><input type=\"radio\" name=\"outlet1\" value=\"1\" >  Outlet 1 on");
     } else {
-        strcat(webbuff, "<p><input type=\"radio\" name=\"led1\" value=\"0\" >  LED 1 off");
-        strcat(webbuff, "<br><input type=\"radio\" name=\"led1\" value=\"1\" checked>  LED 1 on");
+        strcat(webbuff, "<p><input type=\"radio\" name=\"outlet1\" value=\"0\" >  Outlet 1 off");
+        strcat(webbuff, "<br><input type=\"radio\" name=\"outlet1\" value=\"1\" checked>  Outlet 1 on");
     }
-    if(Out1==0) {
-        strcat(webbuff, "<p><input type=\"radio\" name=\"Out1\" value=\"0\" checked>  Digital Out 1  off");
-        strcat(webbuff, "<br><input type=\"radio\" name=\"Out1\" value=\"1\" >  Digital Out 1 on");
-    } else {
-        strcat(webbuff, "<p><input type=\"radio\" name=\"Out1\" value=\"0\" >  Digital Out 1 off");
-        strcat(webbuff, "<br><input type=\"radio\" name=\"Out1\" value=\"1\" checked>  Digital Out 1 on");
-    }
-    if(Out2==0) {
-        strcat(webbuff, "<p><input type=\"radio\" name=\"Out2\" value=\"0\" checked>  Digital Out 2 off");
-        strcat(webbuff, "<br><input type=\"radio\" name=\"Out2\" value=\"1\" >  Digital Out 2 on");
+    if(setOut2==0) {
+        strcat(webbuff, "<p><input type=\"radio\" name=\"outlet2\" value=\"0\" checked>  Outlet 2 off when temp >&nbsp&nbsp<input type=\"text\" name=\"tmpOff\" size=4 value=\"");
+        sprintf(setTmpOff, "%d", tmpOff);
+        strcat(webbuff,setTmpOff);
+        strcat(webbuff,"\"> </sup>");
+        strcat(webbuff, "<br><input type=\"radio\" name=\"outlet2\" value=\"1\" >  Outlet 2 on when temp >&nbsp&nbsp<input type=\"text\" name=\"tmpOn\" size=4 value=\"");
+        sprintf(setTmpOn, "%d", tmpOn);
+        strcat(webbuff,setTmpOn);
+        strcat(webbuff,"\"> </sup>");
     } else {
-        strcat(webbuff, "<p><input type=\"radio\" name=\"Out2\" value=\"0\" >  Digital Out 2 off");
-        strcat(webbuff, "<br><input type=\"radio\" name=\"Out2\" value=\"1\" checked>  Digital Out 2 on");
+        strcat(webbuff, "<p><input type=\"radio\" name=\"outlet2\" value=\"0\" >  Outlet 2 off when temp >&nbsp&nbsp<input type=\"text\" name=\"tmpOff\" size=4 value=\"");
+        sprintf(setTmpOff, "%d", tmpOff);
+        strcat(webbuff,setTmpOff);
+        strcat(webbuff,"\"> </sup>");
+        strcat(webbuff, "<br><input type=\"radio\" name=\"outlet2\" value=\"1\" checked>  Outlet 2 on when temp >&nbsp&nbsp<input type=\"text\" name=\"tmpOn\" size=4 value=\"");
+        sprintf(setTmpOn, "%d", tmpOn);
+        strcat(webbuff,setTmpOn);
+        strcat(webbuff,"\"> </sup>");
     }
-    if(Out3==0) {
-        strcat(webbuff, "<p><input type=\"radio\" name=\"Out3\" value=\"0\" checked>  Digital Out 3 off");
-        strcat(webbuff, "<br><input type=\"radio\" name=\"Out3\" value=\"1\" >  Digital Out 3 on");
-    } else {
-        strcat(webbuff, "<p><input type=\"radio\" name=\"Out3\" value=\"0\" >  Digital Out 3 off");
-        strcat(webbuff, "<br><input type=\"radio\" name=\"Out3\" value=\"1\" checked>  Digital Out 3 on");
-    }
-    if(In1==0) {
-        strcat(webbuff, "<p><input type=\"radio\" name=\"In1\" value=\"0\" >  Digital In 1");
+    strcat(webbuff, "<p><input type=\"radio\" name=\"outlet3\" value=\"1\" checked>  Outlet 3  On");
+    /*if(Outlet3==0) {
+       strcat(webbuff, "<p><input type=\"radio\" name=\"Outlet 3\" value=\"0\" checked>  Outlet 3  off");
+       strcat(webbuff, "<br><input type=\"radio\" name=\"Outlet 3\" value=\"1\" >  Outlet 3 on");
     } else {
-        strcat(webbuff, "<p><input type=\"radio\" name=\"In1\" value=\"1\" checked>  Digital In 1");
-    }
-    if(In2==0) {
-        strcat(webbuff, "<br><input type=\"radio\" name=\"In2\" value=\"0\" >  Digital In 2");
+        strcat(webbuff, "<p><input type=\"radio\" name=\"Outlet 3\" value=\"0\" >  Outlet 3 off");
+        strcat(webbuff, "<br><input type=\"radio\" name=\"Outlet 3\" value=\"1\" checked>  Outlet 3 on");
+    }*/
+    if(Outlet4==0) {
+        strcat(webbuff, "<p><input type=\"radio\" name=\"outlet4\" value=\"0\" checked>  Outlet 4 off");
+        strcat(webbuff, "<br><input type=\"radio\" name=\"outlet4\" value=\"1\" >  Outlet 4 on");
     } else {
-        strcat(webbuff, "<br><input type=\"radio\" name=\"In2\" value=\"1\" checked>  Digital In 2");
+        strcat(webbuff, "<p><input type=\"radio\" name=\"outlet4\" value=\"0\" >  Outlet 4 off");
+        strcat(webbuff, "<br><input type=\"radio\" name=\"outlet4\" value=\"1\" checked>  Outlet 4 on");
     }
-    if(In3==0) {
-        strcat(webbuff, "<br><input type=\"radio\" name=\"In3\" value=\"0\" >  Digital In 3");
-    } else {
-        strcat(webbuff, "<br><input type=\"radio\" name=\"In3\" value=\"1\" checked>  Digital In 3");
-    }
+//    if(I1==0) {
+//        strcat(webbuff, "<p><input type=\"radio\" name=\"In1\" value=\"0\" >  Digital In 1");
+//    } else {
+//        strcat(webbuff, "<p><input type=\"radio\" name=\"In1\" value=\"1\" checked>  Digital In 1");
+//    }
     strcat(webbuff, "</strong><p><input type=\"submit\" value=\"send-refresh\" style=\"background: #3498db;");
     strcat(webbuff, "background-image:-webkit-linear-gradient(top, #3498db, #2980b9);");
     strcat(webbuff, "background-image:linear-gradient(to bottom, #3498db, #2980b9);");
@@ -189,12 +228,12 @@
     strcat(webbuff, "background: #3cb0fd;");
     strcat(webbuff, "background-image:-webkit-linear-gradient(top,#3cb0fd,#1a5f8a);");
     strcat(webbuff, "background-image:linear-gradient(to bottom,#3cb0fd,#1a5f8a);");
-    strcat(webbuff, "text-decoration:none;\"></form></span>");
-    strcat(webbuff, "<p/><h2>How to use:</h2><ul>");
-    strcat(webbuff, "<li>Select the Radio buttons to control the digital out pins.</li>");
-    strcat(webbuff, "<li>Click 'Send-Refresh' to send.</li>");
-    strcat(webbuff, "<li>Use the 'Send-Refresh' button to refresh the data.</li>");
-    strcat(webbuff, "</ul>");
+    strcat(webbuff, "text-decoration:none;\"></form></span></p>");
+//    strcat(webbuff, "<p/><h2>How to use:</h2><ul>");
+//    strcat(webbuff, "<li>Select the Radio buttons to control the digital out pins.</li>");
+//    strcat(webbuff, "<li>Click 'Send-Refresh' to send.</li>");
+//    strcat(webbuff, "<li>Use the 'Send-Refresh' button to refresh the data.</li>");
+//    strcat(webbuff, "</ul>");
     strcat(webbuff, "</body></html>");
 // end of WEB page data
     bufl = strlen(webbuff); // get total page buffer length
@@ -258,30 +297,90 @@
         strcpy(webdata, webbuff + x);
         weberror=0;
         int numMatched = sscanf(webdata,"+IPD,%d,%d:%s", &linkID, &ipdLen, type);
-        if( strstr(webdata, "led1=1") != NULL ) {
+        if( strstr(webdata, "outlet1=1") != NULL ) {
             led1=1;
+            Outlet1=0;
         }
+        else pc.printf("outlet1 on not found\r\n");
+        if( strstr(webdata, "outlet1=0") != NULL ) {
+            led1=0;
+            Outlet1=1;
+        }
+        else pc.printf("outlet1 off not found\r\n");
+        
+        //pc.printf("CHECK TEMPON \r\n");
+
+        if( strstr(webdata, "tmpOn") != NULL ) {
+            //sprintf(setTmpOn,*(strstr(webdata, "tmpOn")+6))
+            tmpval1 = (int)*(strstr(webdata, "tmpOn")+6);
+            if (tmpval1 >= 48 && tmpval1 <= 57) (tmpval1 = (tmpval1 - 48)*10);
+            tmpval2 = (int)*(strstr(webdata, "tmpOn")+7);
+            if (tmpval2 >= 48 && tmpval2 <= 57) tmpval1 += (tmpval2-48);
+            pc.printf("TMPON RECEIVED IS %d\r\n",tmpval1);
+            tmpOn=tmpval1;
+            //led1=1;
+        }
+        if( strstr(webdata, "tmpOff") != NULL ) {
+            tmpval1 = (int)*(strstr(webdata, "tmpOff")+7);
+            if (tmpval1 >= 48 && tmpval1 <= 57) (tmpval1 = (tmpval1 - 48)*10);
+            tmpval2 = (int)*(strstr(webdata, "tmpOff")+8);
+            if (tmpval2 >= 48 && tmpval2 <= 57) tmpval1 += (tmpval2-48);
+            pc.printf("TMPOFF RECEIVED IS %d\r\n",tmpval1);
+            tmpOff=tmpval1;
+            //led1=1;
+        }
+        else pc.printf("No tmpOn found\r\n");
+        
+        if( strstr(webdata, "outlet2=1") != NULL ) {
+            //led2=1;
+            setOut2=1;
+        }
+        if( strstr(webdata, "outlet2=0") != NULL ) {
+            //led2=0;
+            setOut2=0;
+        }
+        
+        if( strstr(webdata, "outlet3=1") != NULL ) {
+            led3=1;
+            Outlet3=0;
+        }
+        else pc.printf("outlet3 on not found\r\n");
+        if( strstr(webdata, "outlet3=0") != NULL ) {
+            led3=0;
+            Outlet3=0;
+        }
+        if( strstr(webdata, "outlet4=1") != NULL ) {
+            led4=1;
+            Outlet4=1;
+        }
+        else pc.printf("outlet4 on not found\r\n");
+        if( strstr(webdata, "outlet4=0") != NULL ) {
+            led4=0;
+            Outlet4=0;
+        }
+        else pc.printf("outlet4 off not found\r\n");
+        /*
         if( strstr(webdata, "led1=0") != NULL ) {
             led1=0;
-        }
-        if( strstr(webdata, "Out1=1") != NULL ) {
-            Out1=1;
-        }
-        if( strstr(webdata, "Out1=0") != NULL ) {
-            Out1=0;
-        }
-        if( strstr(webdata, "Out2=1") != NULL ) {
-            Out2=1;
-        }
-        if( strstr(webdata, "Out2=0") != NULL ) {
-            Out2=0;
-        }
-        if( strstr(webdata, "Out3=1") != NULL ) {
-            Out3=1;
-        }
-        if( strstr(webdata, "Out3=0") != NULL ) {
-            Out3=0;
-        }
+        }*/
+//        if( strstr(webdata, "Out1=1") != NULL ) {
+//           Out1=1;
+//        }
+//        if( strstr(webdata, "Out1=0") != NULL ) {
+//            Out1=0;
+//        }
+//        if( strstr(webdata, "Out2=1") != NULL ) {
+//            Out2=1;
+//        }
+//        if( strstr(webdata, "Out2=0") != NULL ) {
+//            Out2=0;
+//        }
+//        if( strstr(webdata, "Out3=1") != NULL ) {
+//            Out3=1;
+//        }
+//        if( strstr(webdata, "Out3=0") != NULL ) {
+//            Out3=0;
+//        }
         sprintf(channel, "%d",linkID);
         if (strstr(webdata, "GET") != NULL) {
             servreq=1;
@@ -350,7 +449,7 @@
         //char* IP = replybuff + 5;
         sprintf(webdata,"%s", replybuff);
         pc.printf(webdata);
-        led2=1;
+        //led2=1;
         bufflen=200;
         count=0;
         pc.printf("\n\n++++++++++ Ready ++++++++++\r\n\n");
@@ -400,14 +499,30 @@
     AdcIn=Ain1.read();
     Ht = (AdcIn*3.3); // set the numeric to the exact MCU analog reference voltage for greater accuracy
     sprintf(Vcc,"%2.3f",Ht);
+    
+    Current1 = I1.read();
+    //Current1 = ((Current1/1023.0*5000)-2500)/66;
+    sprintf(Cur1,"%2.3f", Current1);
 }
 // Temperature example
 void gettemp()
 {
  
-    AdcIn=Ain2.read();
-    Ht = (AdcIn*3.3); // set the numeric to the exact MCU analog reference voltage for greater accuracy  
-    sprintf(Temp,"%2.3f",Ht);
+    int err;
+    err = tsensor.readData();
+    if (err == 0) {
+        Tc = tsensor.ReadTemperature(CELCIUS);
+        Tf = tsensor.ReadTemperature(FARENHEIT);
+        Tk = tsensor.ReadTemperature(KELVIN);
+        Hm = tsensor.ReadHumidity();
+        }
+    else {printf("\nErr %i \n",err);}
+    sprintf(Temp, "%2.3f", Tf);
+    sprintf(Hum, "%2.3f", Hm);
+    pc.printf("Received temp is: %2.3f\r\n",Tf);
+//    AdcIn=Ain2.read();
+//    Ht = (AdcIn*3.3); // set the numeric to the exact MCU analog reference voltage for greater accuracy  
+//    sprintf(Temp,"%2.3f",Ht);
 }
 // Get RTC time
 void gettime()
@@ -418,10 +533,10 @@
 
 void beep()
 {
-    speaker.period(1.0/2000); // 2000hz period
-    speaker = 0.5; //50% duty cycle - max volume
-    wait_ms(60);
-    speaker=0.0; // turn off audio
+//    speaker.period(1.0/2000); // 2000hz period
+//    speaker = 0.5; //50% duty cycle - max volume
+    wait_ms(10);
+//    speaker=0.0; // turn off audio
 }
 
 void setRTC()