Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: EthernetInterface M2XStreamClient MODSERIAL jsonlite mbed-rtos mbed
Revision 0:7d95a161fefc, committed 2017-12-08
- Comitter:
- dallas1287
- Date:
- Fri Dec 08 17:20:10 2017 +0000
- Commit message:
- updated for usage;
Changed in this revision
--- /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
--- /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
--- /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
--- /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
--- /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;
+}*/
--- /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
--- /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
--- /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;
+}