ECE533 project

Dependencies:   EthernetInterface M2XStreamClient MODSERIAL jsonlite mbed-rtos mbed

Files at this revision

API Documentation at this revision

Comitter:
dallas1287
Date:
Fri Dec 08 17:20:10 2017 +0000
Commit message:
updated for usage;

Changed in this revision

EthernetInterface.lib Show annotated file Show diff for this revision Revisions of this file
M2XStreamClient.lib Show annotated file Show diff for this revision Revisions of this file
MODSERIAL.lib Show annotated file Show diff for this revision Revisions of this file
jsonlite.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
mbed-rtos.lib Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
smarthome.h Show annotated file Show diff for this revision Revisions of this file
diff -r 000000000000 -r 7d95a161fefc EthernetInterface.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/EthernetInterface.lib	Fri Dec 08 17:20:10 2017 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/dallas1287/code/EthernetInterface/#e61ad851aee5
diff -r 000000000000 -r 7d95a161fefc M2XStreamClient.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/M2XStreamClient.lib	Fri Dec 08 17:20:10 2017 +0000
@@ -0,0 +1,1 @@
+http://developer.mbed.org/teams/ATT-M2X-team/code/M2XStreamClient/#2610823f7f2e
diff -r 000000000000 -r 7d95a161fefc MODSERIAL.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MODSERIAL.lib	Fri Dec 08 17:20:10 2017 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/Sissors/code/MODSERIAL/#a3b2bc878529
diff -r 000000000000 -r 7d95a161fefc jsonlite.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jsonlite.lib	Fri Dec 08 17:20:10 2017 +0000
@@ -0,0 +1,1 @@
+http://developer.mbed.org/users/citrusbyte/code/jsonlite/#807034181e02
diff -r 000000000000 -r 7d95a161fefc main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Fri Dec 08 17:20:10 2017 +0000
@@ -0,0 +1,463 @@
+#include "mbed.h"
+#include "EthernetInterface.h"
+#include "M2XStreamClient.h"
+#include "MODSERIAL.h"
+
+//function declaration
+void TimerRead(void);
+void MotionSense(void);
+void motiontrigger(void);
+void ledbounce(void);
+void RxRead(void);
+void motionTimeOut(void);
+void streamData(void);
+void SecurityCam(void);
+void SecurityEnable(void);
+
+//bluetooth variables
+bool btflag = false;
+char received[256] = {""};
+int i = 0;
+//led variables
+int led_total = 0;
+int led_session = 0;
+bool ledtimerflag = false;
+DigitalOut led(LED_RED);
+//fan variables
+int fan_total = 0;
+int fan_session = 0;
+bool fantimerflag = false;
+PwmOut fan(D3);
+//Motion Sensor Variables
+InterruptIn motionsensor(D2);
+DigitalOut motionsensorpwr(D1, 0);
+//Motion Sensor Timeout
+Timeout motionTimeout;
+//Timers Initialization
+Timer ledtimer;
+Timer fantimer;
+// Initialize Serial port
+Serial pc(USBTX, USBRX);
+//bluetooth module declaration
+MODSERIAL HC05(PTC15, PTC14);
+//security camera 
+DigitalOut securitycam(D5, 0);
+bool securityflag = false;
+
+int ret;
+// Set Sensor Stream details
+char deviceId[] = "56429e7da76e7b0d282164231db3446e"; // Device you want to push to
+char streamtime[] = "Time"; // Stream you want to push to
+char streamfan[] = "Fan_Time";
+char m2xKey[] = "3f3543d74e384a4c94d71729ffee9277"; // Your M2X API Key or Master API Key
+// Initialize the M2X client
+Client client;
+M2XStreamClient m2xClient(&client, m2xKey);
+Ticker streamticker;
+
+void rxinterrupt(MODSERIAL_IRQ_INFO *q) 
+{
+    btflag = true;
+    return;
+}
+
+int main()
+{
+motionsensor.disable_irq();
+// Intialize Ethernet connection
+
+EthernetInterface eth;
+eth.init();
+eth.connect();
+printf("Success. Connected!. Device IP Address is %s\r\n", eth.getIPAddress());
+
+
+//initialize bluetooth
+HC05.baud(9600);
+
+//attach interrupts
+HC05.attach(&rxinterrupt, MODSERIAL::RxIrq);
+motionsensor.rise(&motiontrigger);
+//streamticker.attach(&streamData,1.0);
+
+led.write(1); //led initialized to off 
+
+pc.printf("Program Begins.");
+    while (1) 
+    {    
+        RxRead();
+        streamData();
+        wait_ms(100);
+    }     
+            
+}
+
+void streamData()
+{
+        ret = m2xClient.updateStreamValue(deviceId, streamtime, led_total);
+        pc.printf("send() returned %d\r\n", ret);
+        ret = m2xClient.updateStreamValue(deviceId, streamfan, fan_total);
+        pc.printf("send() returned %d\r\n", ret);
+}
+
+void RxRead(void)
+{
+        if(btflag && !HC05.rxBufferEmpty() && HC05.rxGetLastChar() == '#')
+    {
+        HC05.move(received, 256);
+        pc.printf("%c%c%c%c%c",received[0], received[1], received[2],received[3], received[4]); 
+        wait_ms(5);
+        if(received[0] == 'L')
+        {
+            if(received[2] ==  'N')
+            {
+                led = 0; // toggle led
+                ledtimerflag = true;
+            }
+            else if(received[2] == 'F')
+            {
+                led = 1;
+                ledtimerflag = false;
+            }
+        }
+        else if (received[0] == 'F')
+        {
+            if(received[3] == 'H')
+            {
+                fan.write(0.99);
+                fantimerflag = true;
+            }
+            else if(received[3] == 'L')
+            {
+                fan.write(0.6);
+                if(!fantimerflag)
+                fantimerflag = true;
+            }
+            else if(received[3] == 'O')
+            {
+                fan.write(0.0);
+                fantimerflag = false;
+            }
+        }
+        else if(received[0] == 'M')
+        {
+            if(received[1] == 'R')
+            {
+                motionsensor.disable_irq();
+            }
+            else if(received[1] == 'E')
+            {
+                led = 1; //led off
+                fan.write(0.0); //fan off
+                MotionSense();
+            }
+            else if(received[1] == 'S')
+            {
+                securityflag = true;
+                SecurityEnable();
+            }
+        }              
+        btflag = false;
+        
+        if(fantimerflag)
+        {
+        fantimer.start();
+        }
+        else 
+        {
+        fantimer.stop();
+        fan_session = fantimer.read(); //reads the session time
+        fan_total += fan_session; // accumulates to total time
+        fantimer.reset();
+        }
+        
+        if(ledtimerflag)
+        {
+        ledtimer.start();
+        }
+        else 
+        {
+        ledtimer.stop();
+        led_session = ledtimer.read(); //reads the session time
+        led_total += led_session; // accumulates to total time
+        ledtimer.reset();
+        }
+    }
+}
+void TimerRead()
+{
+    pc.printf("LED Session Time: %d", led_session);   
+    pc.printf("\r\nTotal LED Time: %d\r\n", led_total);
+    pc.printf("Fan Session Time: %d", fan_session);   
+    pc.printf("\r\nTotal Fan Time: %d\r\n", fan_total);
+}
+
+void MotionSense()
+{
+    HC05.puts("Motion Sensor Initializing...");
+    ledbounce();
+    HC05.puts("Enabled.");
+    motionsensor.enable_irq();
+}
+
+void SecurityEnable()
+{
+    HC05.puts("Security Initializing...");
+    ledbounce();
+    HC05.puts("Enabled.");
+    motionsensor.enable_irq();
+}
+
+void SecurityCam()
+{
+    securitycam = 1;
+    wait_ms(50);
+    securitycam = 0;      
+}
+
+void motiontrigger()
+{
+    led = 0;
+    //security mode sends pulse to start python script
+    if(securityflag)
+    {
+        SecurityCam();
+        securityflag = false; //resets flag
+    }
+    else
+    motionTimeout.attach(&motionTimeOut,10.0);
+}
+
+void motionTimeOut()
+{
+        led = 1; //led off;
+}        
+
+void ledbounce()
+{
+    for( int i = 0; i < 20; i++)
+    {
+    led = led ^1;
+    wait_ms(100);
+    }
+    led = 1;
+}
+
+
+/*#include "mbed.h"
+#include "EthernetInterface.h"
+#include "M2XStreamClient.h"
+#include "MODSERIAL.h"
+
+//function declaration
+void TimerRead(void);
+void MotionSense(void);
+void motiontrigger(void);
+void ledbounce(void);
+void RxRead(void);
+void motionTimeOut(void);
+void streamData(void);
+void SecurityCam(void);
+void SecurityEnable(void);
+
+//bluetooth variables
+bool btflag = false;
+char received[256] = {""};
+int i = 0;
+//led variables
+int led_total = 0;
+int led_session = 0;
+bool ledtimerflag = false;
+DigitalOut led(LED_RED);
+//fan variables
+int fan_total = 0;
+int fan_session = 0;
+bool fantimerflag = false;
+PwmOut fan(D3);
+//Motion Sensor Variables
+InterruptIn motionsensor(D2);
+DigitalOut motionsensorpwr(D1, 0);
+//Motion Sensor Timeout
+Timeout motionTimeout;
+//Timers Initialization
+Timer ledtimer;
+Timer fantimer;
+// Initialize Serial port
+Serial pc(USBTX, USBRX);
+//bluetooth module declaration
+MODSERIAL HC05(PTC15, PTC14);
+//security camera 
+//DigitalOut securitycam(D5, 0);
+bool securityflag = false;
+
+int ret;
+// Set Sensor Stream details
+char deviceId[] = "56429e7da76e7b0d282164231db3446e"; // Device you want to push to
+char streamtime[] = "Time"; // Stream you want to push to
+char streamfan[] = "Fan_Time";
+char m2xKey[] = "3f3543d74e384a4c94d71729ffee9277"; // Your M2X API Key or Master API Key
+// Initialize the M2X client
+Client client;
+M2XStreamClient m2xClient(&client, m2xKey);
+Ticker streamticker;
+
+void rxinterrupt(MODSERIAL_IRQ_INFO *q) 
+{
+    btflag = true;
+    return;
+}
+
+int main()
+{
+motionsensor.disable_irq();
+// Intialize Ethernet connection
+
+EthernetInterface eth;
+eth.init();
+eth.connect();
+printf("Success. Connected!. Device IP Address is %s\r\n", eth.getIPAddress());
+
+
+//initialize bluetooth
+HC05.baud(9600);
+
+//attach interrupts
+HC05.attach(&rxinterrupt, MODSERIAL::RxIrq);
+motionsensor.rise(&motiontrigger);
+//streamticker.attach(&streamData,1.0);
+
+led.write(1); //led initialized to off 
+
+pc.printf("Program Begins.");
+    while (1) 
+    {    
+        RxRead();
+        streamData();
+        wait_ms(100);
+    }     
+            
+}
+
+void streamData()
+{
+        ret = m2xClient.updateStreamValue(deviceId, streamtime, led_total);
+        pc.printf("send() returned %d\r\n", ret);
+        ret = m2xClient.updateStreamValue(deviceId, streamfan, fan_total);
+        pc.printf("send() returned %d\r\n", ret);
+}
+
+void RxRead(void)
+{
+        if(btflag && !HC05.rxBufferEmpty() && HC05.rxGetLastChar() == '#')
+    {
+        HC05.move(received, 256);
+        pc.printf("%c%c%c%c%c",received[0], received[1], received[2],received[3], received[4]); 
+        wait_ms(5);
+        if(received[0] == 'L')
+        {
+            if(received[2] ==  'N')
+            {
+                led = 0; // toggle led
+                ledtimerflag = true;
+            }
+            else if(received[2] == 'F')
+            {
+                led = 1;
+                ledtimerflag = false;
+            }
+        }
+        else if (received[0] == 'F')
+        {
+            if(received[3] == 'H')
+            {
+                fan.write(0.99);
+                fantimerflag = true;
+            }
+            else if(received[3] == 'L')
+            {
+                fan.write(0.6);
+                if(!fantimerflag)
+                fantimerflag = true;
+            }
+            else if(received[3] == 'O')
+            {
+                fan.write(0.0);
+                fantimerflag = false;
+            }
+        }
+        else if(received[0] == 'M')
+        {
+            if(received[1] == 'R')
+            {
+                motionsensor.disable_irq();
+            }
+            else if(received[1] == 'E')
+            {
+                led = 1; //led off
+                fan.write(0.0); //fan off
+                MotionSense();
+            }
+        }              
+        btflag = false;
+        
+        if(fantimerflag)
+        {
+        fantimer.start();
+        }
+        else 
+        {
+        fantimer.stop();
+        fan_session = fantimer.read(); //reads the session time
+        fan_total += fan_session; // accumulates to total time
+        fantimer.reset();
+        }
+        
+        if(ledtimerflag)
+        {
+        ledtimer.start();
+        }
+        else 
+        {
+        ledtimer.stop();
+        led_session = ledtimer.read(); //reads the session time
+        led_total += led_session; // accumulates to total time
+        ledtimer.reset();
+        }
+    }
+}
+void TimerRead()
+{
+    pc.printf("LED Session Time: %d", led_session);   
+    pc.printf("\r\nTotal LED Time: %d\r\n", led_total);
+    pc.printf("Fan Session Time: %d", fan_session);   
+    pc.printf("\r\nTotal Fan Time: %d\r\n", fan_total);
+}
+
+void MotionSense()
+{
+    HC05.puts("Motion Sensor Initializing...");
+    ledbounce();
+    HC05.puts("Enabled.");
+    motionsensor.enable_irq();
+}
+
+void motiontrigger()
+{
+    led = 0;
+    motionTimeout.attach(&motionTimeOut,10.0);
+}
+
+void motionTimeOut()
+{
+        led = 1; //led off;
+}        
+
+void ledbounce()
+{
+    for( int i = 0; i < 20; i++)
+    {
+    led = led ^1;
+    wait_ms(100);
+    }
+    led = 1;
+}*/
diff -r 000000000000 -r 7d95a161fefc mbed-rtos.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed-rtos.lib	Fri Dec 08 17:20:10 2017 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/mbed_official/code/mbed-rtos/#5713cbbdb706
diff -r 000000000000 -r 7d95a161fefc mbed.bld
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Fri Dec 08 17:20:10 2017 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/mbed_official/code/mbed/builds/e7ca05fa8600
\ No newline at end of file
diff -r 000000000000 -r 7d95a161fefc smarthome.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smarthome.h	Fri Dec 08 17:20:10 2017 +0000
@@ -0,0 +1,244 @@
+#include "mbed.h"
+#include "EthernetInterface.h"
+#include "M2XStreamClient.h"
+#include "MODSERIAL.h"
+
+//function declaration
+void TimerRead(void);
+void MotionSense(void);
+void motiontrigger(void);
+void ledbounce(void);
+void RxRead(void);
+void motionTimeOut(void);
+void streamData(void);
+void SecurityCam(void);
+void SecurityEnable(void);
+
+//bluetooth variables
+bool btflag = false;
+char received[256] = {""};
+int i = 0;
+//led variables
+int led_total = 0;
+int led_session = 0;
+bool ledtimerflag = false;
+DigitalOut led(LED_RED);
+//fan variables
+int fan_total = 0;
+int fan_session = 0;
+bool fantimerflag = false;
+PwmOut fan(D3);
+//Motion Sensor Variables
+InterruptIn motionsensor(D2);
+DigitalOut motionsensorpwr(D1, 0);
+//Motion Sensor Timeout
+Timeout motionTimeout;
+//Timers Initialization
+Timer ledtimer;
+Timer fantimer;
+// Initialize Serial port
+Serial pc(USBTX, USBRX);
+//bluetooth module declaration
+MODSERIAL HC05(PTC15, PTC14);
+//security camera 
+DigitalOut securitycam(D5, 0);
+bool securityflag = false;
+
+int ret;
+// Set Sensor Stream details
+char deviceId[] = "56429e7da76e7b0d282164231db3446e"; // Device you want to push to
+char streamtime[] = "Time"; // Stream you want to push to
+char streamfan[] = "Fan_Time";
+char m2xKey[] = "3f3543d74e384a4c94d71729ffee9277"; // Your M2X API Key or Master API Key
+// Initialize the M2X client
+Client client;
+M2XStreamClient m2xClient(&client, m2xKey);
+Ticker streamticker;
+
+void rxinterrupt(MODSERIAL_IRQ_INFO *q) 
+{
+    btflag = true;
+    return;
+}
+
+int main()
+{
+motionsensor.disable_irq();
+// Intialize Ethernet connection
+
+EthernetInterface eth;
+eth.init();
+eth.connect();
+printf("Success. Connected!. Device IP Address is %s\r\n", eth.getIPAddress());
+
+
+//initialize bluetooth
+HC05.baud(9600);
+
+//attach interrupts
+HC05.attach(&rxinterrupt, MODSERIAL::RxIrq);
+motionsensor.rise(&motiontrigger);
+//streamticker.attach(&streamData,1.0);
+
+led.write(1); //led initialized to off 
+
+pc.printf("Program Begins.");
+    while (1) 
+    {    
+        RxRead();
+        streamData();
+        wait_ms(100);
+    }     
+            
+}
+
+void streamData()
+{
+        ret = m2xClient.updateStreamValue(deviceId, streamtime, led_total);
+        pc.printf("send() returned %d\r\n", ret);
+        ret = m2xClient.updateStreamValue(deviceId, streamfan, fan_total);
+        pc.printf("send() returned %d\r\n", ret);
+}
+
+void RxRead(void)
+{
+        if(btflag && !HC05.rxBufferEmpty() && HC05.rxGetLastChar() == '#')
+    {
+        HC05.move(received, 256);
+        pc.printf("%c%c%c%c%c",received[0], received[1], received[2],received[3], received[4]); 
+        wait_ms(5);
+        if(received[0] == 'L')
+        {
+            if(received[2] ==  'N')
+            {
+                led = 0; // toggle led
+                ledtimerflag = true;
+            }
+            else if(received[2] == 'F')
+            {
+                led = 1;
+                ledtimerflag = false;
+            }
+        }
+        else if (received[0] == 'F')
+        {
+            if(received[3] == 'H')
+            {
+                fan.write(0.99);
+                fantimerflag = true;
+            }
+            else if(received[3] == 'L')
+            {
+                fan.write(0.6);
+                if(!fantimerflag)
+                fantimerflag = true;
+            }
+            else if(received[3] == 'O')
+            {
+                fan.write(0.0);
+                fantimerflag = false;
+            }
+        }
+        else if(received[0] == 'M')
+        {
+            if(received[1] == 'R')
+            {
+                motionsensor.disable_irq();
+            }
+            else if(received[1] == 'E')
+            {
+                led = 1; //led off
+                fan.write(0.0); //fan off
+                MotionSense();
+            }
+            else if(received[1] == 'S')
+            {
+                securityflag = true;
+                SecurityEnable();
+            }
+        }              
+        btflag = false;
+        
+        if(fantimerflag)
+        {
+        fantimer.start();
+        }
+        else 
+        {
+        fantimer.stop();
+        fan_session = fantimer.read(); //reads the session time
+        fan_total += fan_session; // accumulates to total time
+        fantimer.reset();
+        }
+        
+        if(ledtimerflag)
+        {
+        ledtimer.start();
+        }
+        else 
+        {
+        ledtimer.stop();
+        led_session = ledtimer.read(); //reads the session time
+        led_total += led_session; // accumulates to total time
+        ledtimer.reset();
+        }
+    }
+}
+void TimerRead()
+{
+    pc.printf("LED Session Time: %d", led_session);   
+    pc.printf("\r\nTotal LED Time: %d\r\n", led_total);
+    pc.printf("Fan Session Time: %d", fan_session);   
+    pc.printf("\r\nTotal Fan Time: %d\r\n", fan_total);
+}
+
+void MotionSense()
+{
+    HC05.puts("Motion Sensor Initializing...");
+    ledbounce();
+    HC05.puts("Enabled.");
+    motionsensor.enable_irq();
+}
+
+void SecurityEnable()
+{
+    HC05.puts("Security Initializing...");
+    ledbounce();
+    HC05.puts("Enabled.");
+    motionsensor.enable_irq();
+}
+
+void SecurityCam()
+{
+    securitycam = 1;
+    wait_ms(50);
+    securitycam = 0;      
+}
+
+void motiontrigger()
+{
+    led = 0;
+    //security mode sends pulse to start python script
+    if(securityflag)
+    {
+        SecurityCam();
+        securityflag = false; //resets flag
+    }
+    else
+    motionTimeout.attach(&motionTimeOut,10.0);
+}
+
+void motionTimeOut()
+{
+        led = 1; //led off;
+}        
+
+void ledbounce()
+{
+    for( int i = 0; i < 20; i++)
+    {
+    led = led ^1;
+    wait_ms(100);
+    }
+    led = 1;
+}