From aedda9fbef4b5b2aaf8354aa3d3c5d8bf0e8d0ed Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EC=B5=9C=EC=9E=AC=EC=9B=85?= <wodnd999999@ajou.ac.kr>
Date: Wed, 13 Dec 2017 05:35:01 +0900
Subject: [PATCH] Modify URI and functions.

---
 ADXL345/ADXL345.py |   2 +-
 ADXL345/app.js     |  30 ++++++-
 ADXL345/conf.xml   |   8 +-
 DHT11/DHT11        | Bin 7972 -> 8024 bytes
 DHT11/DHT11.cpp    |   6 +-
 DHT11/app.js       | 196 +++++++++++++++++++++++++++++++++++++++++++--
 DHT11/conf.xml     |  40 ++++++++-
 Makefile           |   4 +-
 SEN0228/app.js     |  25 +++++-
 SEN0228/conf.xml   |   4 +
 thyme/conf.js      |  65 +++++++++++++--
 thyme/conf.json    |  94 ++++++++++++++++++----
 12 files changed, 429 insertions(+), 45 deletions(-)

diff --git a/ADXL345/ADXL345.py b/ADXL345/ADXL345.py
index 79204ce..b2a316e 100644
--- a/ADXL345/ADXL345.py
+++ b/ADXL345/ADXL345.py
@@ -107,7 +107,7 @@ if __name__ == "__main__":
     
     count = 0
     max = 0
-    while count < 3000:
+    while count < 1000:
         axes = adxl345.getAxes(True)
         if max < math.sqrt(axes['x'] * axes['x'] + axes['y'] * axes['y'] + axes['z'] * axes['z']):
             max = math.sqrt(axes['x'] * axes['x'] + axes['y'] * axes['y'] + axes['z'] * axes['z'])
diff --git a/ADXL345/app.js b/ADXL345/app.js
index c3ccdd3..4477985 100755
--- a/ADXL345/app.js
+++ b/ADXL345/app.js
@@ -10,7 +10,7 @@ var fs = require('fs');
 var xml2js = require('xml2js');
 var exec = require("child_process").exec;
 var events = require('events');
-
+var request = require('request');
 var wdt = require('./wdt');
 
 var useparentport = '';
@@ -21,6 +21,8 @@ var download_arr = [];
 
 var conf = {};
 
+var sleeping;
+
 // This is an async file read
 fs.readFile('conf.xml', 'utf-8', function (err, data) {
     if (err) {
@@ -63,7 +65,6 @@ fs.readFile('conf.xml', 'utf-8', function (err, data) {
     }
 });
 
-
 var tas_state = 'init';
 
 var upload_client = null;
@@ -104,6 +105,8 @@ function on_receive(data) {
                             if (download_arr[j].ctname == sink_obj.ctname) {
                                 g_down_buf = JSON.stringify({id: download_arr[i].id, con: sink_obj.con});
                                 console.log(g_down_buf + ' <----');
+				if(sink_obj.ctname == 'cnt-sleeping')
+					sleeping = sink_obj.con;
                                 break;
                             }
                         }
@@ -115,6 +118,7 @@ function on_receive(data) {
 }
 
 function tas_watchdog() {
+console.log(download_arr);
     if(tas_state == 'init') {
         upload_client = new net.Socket();
 
@@ -157,14 +161,32 @@ function tas_watchdog() {
 }
 
 wdt.set_wdt(require('shortid').generate(), 3, tas_watchdog);
+wdt.set_wdt(require('shortid').generate(), 3, checkSleeping);
+
+function checkSleeping() {
+    var options = { method: 'GET',
+        url: 'http://52.79.78.134:7579/mobius-yt/SSS/cnt-sleeping/latest',
+        headers:
+            { 'cache-control': 'no-cache',
+            'x-m2m-origin': 'SOrigin','x-m2m-ri': '12345',
+            accept: 'application/json' } };
+
+    request(options, function (error, response, body) {
+        if (error) throw new Error(error);
+        console.log(body);
+        var jObject = JSON.parse(body)["m2m:cin"];
+        sleeping = jObject.con;
+    })
+}
 
 function uploadData() {
     var cmd = 'sudo python ADXL345.py';
+console.log("exec");
     exec(cmd, function callback(error, stdout, stderr) {
-            if(tas_state == 'upload') {
+            if(tas_state == 'upload' && sleeping == '1') {
 		var data = stdout.split('\n');
                 for(var i = 0; i < upload_arr.length; i++) {
-                    if(upload_arr[i].ctname == 'cnt-accel') {
+                    if(upload_arr[i].ctname == 'cnt-acceleration') {
                         var cin = {ctname: upload_arr[i].ctname, con: data[0]};
                         console.log('SEND : ' + JSON.stringify(cin) + ' ---->');
                         upload_client.write(JSON.stringify(cin) + '<EOF>');
diff --git a/ADXL345/conf.xml b/ADXL345/conf.xml
index cc61267..7e901d1 100755
--- a/ADXL345/conf.xml
+++ b/ADXL345/conf.xml
@@ -5,7 +5,11 @@
         <parentport>3105</parentport>
     </tas>
     <upload>
-        <ctname>cnt-accel</ctname>
-        <id>accel#1</id>
+        <ctname>cnt-acceleration</ctname>
+        <id>acceleration#1</id>
     </upload>
+    <download>
+        <ctname>cnt-sleeping</ctname>
+        <id>sleeping#1</id>
+    </download>
 </m2m:conf>
diff --git a/DHT11/DHT11 b/DHT11/DHT11
index 4ef9829310af84fa38f907434af5df62e0274c90..fb545a44a961af675b82f09bc83ef659e986c4d8 100755
GIT binary patch
delta 1547
zcmZ2tcf)Ri0%OBOMRCqK+zbqJxEUGdOms|^J;2St0K%*cAi&7L$N=FV;AUbtF!7)`
z=NWDWhBMqu3}+@joG%hNb-(gd##{3a%u&B#nVD47WBAi_^AtuAMnMB!CXfLP0t}K2
z`3wvU36pm+$umjtPQJyYrzn9W8Oq4OfUGzc#GkCmY!6bL#caoDuz4l3FjEu{FB5|(
zBLl+&9wr7cZU%-YAX=P(;RT2mWMFs$q8S+&K7eQe28J&nT9kp|2Z$DCVE6-~IT#oi
zc$pZ)Bp4W2K(q)00|)P9F*c?8Ic$s!49EH(37qPAH0Rr%r!e*uBz6xHy9J3|gTyXD
zV&@>SQ;^s(NbC>@n+<HS&*Z&q#+)(Sj0_=Mj0`^}|74SAJTY04U7Jmsmx)1wcd{3|
z5gRD*BzPw`v1@@sXdSx|<B81=*|V8gWq6qwawZ3Il^fJE1V8@p|Nkux1L>y?48e~X
z85pDl80J5H`|tm227?8UnHd&5WVzt|h@oTeiwbT=hRF}OR2cV7X5}_#-NL}gux7F&
zw>-D5rKP0;h+trt9M3H&sq*`OJt#G}{P|yh=l}ou761O%KluN@-evMcZg0s1Zbk-4
za9UwvkY-?DU}0cjkYZq9I5PPww>{&P$)-HjjAu4)<XO#B4^j$B8_W!RAc`S_8)Pg4
z12Y3ZnBM~D3xN5cv<YG`GYEnxhCOh3Auu15G(ikz24N7zaD*F@^q3h$!2A<%z9@)q
z3{Jiv7Bhnwh+??H1JfW5<_kcRCo_Wtm@mOQnNJ{&an9si0eK;qYZ(~$8N3)67zB7H
z&l8AaOql#vK%X&XvaTQ~%6tX$nM8Oe?-R5Gr*)A3K*0l24|5#@g9t+iBPf7mh3u7J
zeqdk_W@u*wWjTnG7#W1Ywn*?!t`m|I1Vu5}Neq%;;hf29h4cks0mi@}02W;``K^#N
zE6B1hlm80IEB@dDIRK=O7c3tF4L}A4UIt$V28Ni)w!-p;uwZ3i5MtQF$N&#!Mg}3U
zE?6)!Fo-goVq{=AF}YV*-Vhdcj11xoZ$RFG1~$kee~~-_;tMb_Fr1luSJ<9OfOoQ-
zh#X_gWLpt?CK=wzbs~C<36s}~*fVBKek-DH1d9Oy1_=gHW(EdOng_WbRGKIw@dcSA
z81$JL7({p{`-#daB9|j!%nS@5kEbwzJjBb8#>~KAFu7M$-U!*S2_R8ubb}0^jmBR9
zwruh}(ICbpn+?Ux*%%j0&Xkd71*PGH$-OeloS^iO!Og%RGkK$w@Z>WxJglJTXqkLh
zMwu0qa_3BDl~ra11@4~7y0XfgpqK^~uq<HpIkG&gpcHXra;>Z~Cn$(da5FGK<o3w&
zu!2k4$!BGiIY9w^g@=K`X0oG<@MIo29yU-QfdW!ai4)`{30?*U39z9tasr^DAx}<?
pF?8}&Id#Ui$$RD0dFSvkFg##qV31>AV2GalQBIn%W-_n5H~<MuOMCzT

delta 1609
zcmca%x5RFO0;A7FMRCpwZU%-5ZbpWRiH^y#bGR88K$w*Q1Q;0@86f;Q+)NB}CLR>$
zT*1x2u!5V3Va3FU^F>yqh`C$-`!1OHDo~{1)L|?4nR<&hPhk{c6y)J$0vW&{z#z$x
z&%nUoF?lDGJkuAR$+wvF6u<BwBtsb)7?2gmg7}j)ne9P}vzYA|c{Z<P7G{ci!NbHL
z%E-X5hlhzljGKYs0EiZ6U^oJz1sNDlfM`YrhBF{qfPvuxh!$mFxB{Yu85nMWXbuL3
zJ0Mzuf#Cs&7GYp`!ZTTnO{u<ujgf)jSpOq|Q$3F=zU_GmV;3N?GmzK`NbCqCb^sFF
z1BvZ`#I`_U8$j4>V2d>-?`1RQbm3-X2;pL6crf`Vn>^!^$&&2aY~Oj97{2gK_F^|;
z0|nj}p2<z@TA&bG$8N;9Wb;GzY$nzpJWLEBlLNWRCF~i3AAk7&{}zM6g2&7Z3m&pu
z@P5S5vG>K~A6zPoM<&a1o3pN9U}RV@Ig(r6&|x-X<Ax0lEuiQ^W_$epUk{4?j6eVD
z@BIH?f9Bu+`Un62*9T1A%Iz)b!Oh4Z2~HbK4AKk?3@i)`3{ngX3=1Yp^4K$Om>kJd
z&A4LoRi4#M^&q7n!<iZQKomm&H^^8924)6+Fh2p#7Xb4?X%WO=W)K8X3^U;JLSQ~9
zDS{Zx48kCaVF5QJH8C@YfcZ<{d{GeJ7@S-|EM^8V5XG<on*5j<#KHVGaJ~eX|Al9=
zkw6?{#pH<s@<K4zGBEHncrh?Ayy2OANFa{UW3r;4KBLd%KtWIx6$<7vec+k=NYD<P
zwn6>_1rJC)%ykS5A`Bsnpa60dvJZs$fq_Aop`8(w#UOrQWDo}10*Yj?TNor6mVu0e
za2Qw^KK=)p3W{rpkR(`r$mEMc`hu{KWMB{gi#ALa6qcTBBP^o$fD2{_FIdI~8m0^k
zybQh!3=A%l3x(wkVIj@HAjGhTkpUj^j0{3xU9ga4U=U?E#mK<0Wb#2_c|%xmGBSuW
zyaD+T8vY=^{YCN{h%dmzz_4PnpoqO9EYKAgBp6g6o(Fpf6vw7aU>AwlGyUM1yh%il
z(PQ#M5qrjf$%>--^)QVB3=#~Y%nS^$paPXN%1C@cCJ6?8W(I~2(AWj>ZJ5D!fC-RA
ze$1$aPZ%=;11P9c7(hY5%aDd9U&PEX`Mjv05we{V(A3OE<1YZaX|j-55M$5gR55cl
z#*WEzW#m~w*}`M;K^bLEP!bE^W?&GQ{8mPu6%>gHlLcj!SwR`0VzQ;IGAk%zW=u|$
zRb~YxoH>&dWyL2ikmX?oC9VaNH_9rrf}&;#Sp0)54=cEUp3Eqx%nFK}4U;wHl-WSx
z_J(J2kem{%2&s}&0~H~Q<kT1qC!ds4XH1&>QBGa6f{%gW0y_hP90LPG6f|ptawaDO
QD9?h!4orAVc9a(f0JE}9jQ{`u

diff --git a/DHT11/DHT11.cpp b/DHT11/DHT11.cpp
index 864f0ed..89be60b 100644
--- a/DHT11/DHT11.cpp
+++ b/DHT11/DHT11.cpp
@@ -63,10 +63,12 @@ int main( void )
 {
     if ( wiringPiSetup() == -1 )
         exit( 1 );
- 
-    for(int i = 0; i < 64; i++)
+    int i;
+    for(i = 0; i < 128; i++)
 	if(read_dht11_dat())
 		break;
+    if(i == 128)
+	printf("-999 -999");
  
     return(0);
 }
diff --git a/DHT11/app.js b/DHT11/app.js
index 51ef0c3..925b5ce 100755
--- a/DHT11/app.js
+++ b/DHT11/app.js
@@ -9,7 +9,7 @@ var util = require('util');
 var fs = require('fs');
 var xml2js = require('xml2js');
 var exec = require("child_process").exec;
-
+var request = require("request");
 var wdt = require('./wdt');
 
 var useparentport = '';
@@ -20,6 +20,16 @@ var download_arr = [];
 
 var conf = {};
 
+var sleeping;
+var humidity;
+var humidity_auto;
+var humidity_low;
+var humidity_high;
+var temperature;
+var temperature_auto;
+var temperature_low;
+var temperature_high;
+
 // This is an async file read
 fs.readFile('conf.xml', 'utf-8', function (err, data) {
     if (err) {
@@ -102,6 +112,29 @@ function on_receive(data) {
                         for (j = 0; j < download_arr.length; j++) {
                             if (download_arr[j].ctname == sink_obj.ctname) {
                                 g_down_buf = JSON.stringify({id: download_arr[i].id, con: sink_obj.con});
+				switch(sink_obj.ctname) {
+				    case 'cnt-sleeping':
+  					sleeping = sink_obj.con;
+					break;
+				    case 'cnt-humidity-auto':
+                                        humidity_auto = sink_obj.con;
+					break;
+                                    case 'cnt-humidity-low':
+                                        humidity_low = sink_obj.con;
+                                        break;
+                                    case 'cnt-humidity-high':
+                                        humidity_high = sink_obj.con;
+                                        break;
+                                    case 'cnt-temperature-auto':
+                                        temperature_auto = sink_obj.con;
+                                        break;
+                                    case 'cnt-temperature-low':
+                                        temperature_low = sink_obj.con;
+                                        break;
+                                    case 'cnt-temperature-high':
+                                        temperature_high = sink_obj.con;
+                                        break;
+				}
                                 console.log(g_down_buf + ' <----');
                                 break;
                             }
@@ -136,9 +169,95 @@ function tas_watchdog() {
         }
     }
     else if(tas_state == 'init_thing') {
+        var options = { method: 'GET',
+            url: 'http://52.79.78.134:7579/mobius-yt/SSS/cnt-sleeping/latest',
+            headers: 
+                { 'cache-control': 'no-cache',
+                'x-m2m-origin': 'SOrigin','x-m2m-ri': '12345',
+                accept: 'application/json' } };
+
+        request(options, function (error, response, body) {
+            if (error) throw new Error(error);
+            console.log(body);
+            var jObject = JSON.parse(body)["m2m:cin"];
+            sleeping = jObject.con;
+        });
+        options = { method: 'GET',
+            url: 'http://52.79.78.134:7579/mobius-yt/SSS/cnt-humidity-auto/latest',
+            headers:
+                { 'cache-control': 'no-cache',
+                'x-m2m-origin': 'SOrigin','x-m2m-ri': '12345',
+                accept: 'application/json' } };
+        request(options, function (error, response, body) {
+            if (error) throw new Error(error);
+            console.log(body);
+            var jObject = JSON.parse(body)["m2m:cin"];
+            humidity_auto = jObject.con;
+        });
+        options = { method: 'GET',
+            url: 'http://52.79.78.134:7579/mobius-yt/SSS/cnt-humidity-low/latest',
+            headers:
+                { 'cache-control': 'no-cache',
+                'x-m2m-origin': 'SOrigin','x-m2m-ri': '12345',
+                accept: 'application/json' } };
+        request(options, function (error, response, body) {
+            if (error) throw new Error(error);
+            console.log(body);
+            var jObject = JSON.parse(body)["m2m:cin"];
+            humidity_low = jObject.con;
+        });
+        options = { method: 'GET',
+            url: 'http://52.79.78.134:7579/mobius-yt/SSS/cnt-humidity-high/latest',
+            headers:
+                { 'cache-control': 'no-cache',
+                'x-m2m-origin': 'SOrigin','x-m2m-ri': '12345',
+                accept: 'application/json' } };
+        request(options, function (error, response, body) {
+            if (error) throw new Error(error);
+            console.log(body);
+            var jObject = JSON.parse(body)["m2m:cin"];
+            humidity_high = jObject.con;
+        });
+        options = { method: 'GET',
+            url: 'http://52.79.78.134:7579/mobius-yt/SSS/cnt-temperature-auto/latest',
+            headers:
+                { 'cache-control': 'no-cache',
+                'x-m2m-origin': 'SOrigin','x-m2m-ri': '12345',
+                accept: 'application/json' } };
+        request(options, function (error, response, body) {
+            if (error) throw new Error(error);
+            console.log(body);
+            var jObject = JSON.parse(body)["m2m:cin"];
+            temperature_auto = jObject.con;
+        });
+        options = { method: 'GET',
+            url: 'http://52.79.78.134:7579/mobius-yt/SSS/cnt-temperature-low/latest',
+            headers:
+                { 'cache-control': 'no-cache',
+                'x-m2m-origin': 'SOrigin','x-m2m-ri': '12345',
+                accept: 'application/json' } };
+        request(options, function (error, response, body) {
+            if (error) throw new Error(error);
+            console.log(body);
+            var jObject = JSON.parse(body)["m2m:cin"];
+            temperature_low = jObject.con;
+        });
+        options = { method: 'GET',
+            url: 'http://52.79.78.134:7579/mobius-yt/SSS/cnt-temperature-high/latest',
+            headers:
+                { 'cache-control': 'no-cache',
+                'x-m2m-origin': 'SOrigin','x-m2m-ri': '12345',
+                accept: 'application/json' } };
+        request(options, function (error, response, body) {
+            if (error) throw new Error(error);
+            console.log(body);
+            var jObject = JSON.parse(body)["m2m:cin"];
+            temperature_high = jObject.con;
+        });
         tas_state = 'connect';
-    }
+    }   
     else if(tas_state == 'connect' || tas_state == 'reconnect') {
+console.log('port:' + useparentport + ', host:' + useparenthostname);
         upload_client.connect(useparentport, useparenthostname, function() {
             console.log('upload Connected');
             tas_download_count = 0;
@@ -156,7 +275,33 @@ function tas_watchdog() {
 }
 
 wdt.set_wdt(require('shortid').generate(), 3, tas_watchdog);
-wdt.set_wdt(require('shortid').generate(), 3, uploadData);
+wdt.set_wdt(require('shortid').generate(), 2, uploadData);
+wdt.set_wdt(require('shortid').generate(), 1, controllActuator);
+wdt.set_wdt(require('shortid').generate(), 3, checkSleeping);
+
+function checkSleeping() {
+    var options = { method: 'GET',
+        url: 'http://52.79.78.134:7579/mobius-yt/SSS/cnt-sleeping/latest',
+        headers:
+            { 'cache-control': 'no-cache',
+            'x-m2m-origin': 'SOrigin','x-m2m-ri': '12345',
+            accept: 'application/json' } };
+
+    request(options, function (error, response, body) {
+        if (error) throw new Error(error);
+        console.log(body);
+        var jObject = JSON.parse(body)["m2m:cin"];
+	if(sleeping == 1 && jObject.con == 0) {
+		var cin = {ctname: "cnt-fan", con: "0"};
+                console.log('SEND : ' + JSON.stringify(cin) + ' ---->');
+                upload_client.write(JSON.stringify(cin) + '<EOF>');
+                cin = {ctname: "cnt-humidifier", con: "0"};
+                console.log('SEND : ' + JSON.stringify(cin) + ' ---->');
+                upload_client.write(JSON.stringify(cin) + '<EOF>');
+        }		
+        sleeping = jObject.con;
+    })
+}
 
 function uploadData() {
     var cmd = 'sudo ./DHT11';
@@ -166,19 +311,54 @@ function uploadData() {
                 for(var i = 0; i < upload_arr.length; i++) {
                     if(upload_arr[i].ctname == 'cnt-humidity') {
                         var cin = {ctname: upload_arr[i].ctname, con: stdoutArr[0]};
-                        console.log('SEND : ' + JSON.stringify(cin) + ' ---->');
-                        upload_client.write(JSON.stringify(cin) + '<EOF>');
+			if(stdoutArr[0] != -999) {
+			    humidity = stdoutArr[0];
+                            console.log('SEND : ' + JSON.stringify(cin) + ' ---->');
+                            upload_client.write(JSON.stringify(cin) + '<EOF>');
+			}
                     }
-                    if(upload_arr[i].ctname == 'cnt-temp') {
+                    if(upload_arr[i].ctname == 'cnt-temperature') {
                         var cin = {ctname: upload_arr[i].ctname, con: stdoutArr[1]};
-                        console.log('SEND : ' + JSON.stringify(cin) + ' ---->');
-                        upload_client.write(JSON.stringify(cin) + '<EOF>');
+                        if(stdoutArr[1] != -999) {
+                            temperature = stdoutArr[1];
+                            console.log('SEND : ' + JSON.stringify(cin) + ' ---->');
+                            upload_client.write(JSON.stringify(cin) + '<EOF>');
+			}
                     }
                 }
             }
     });
 }
 
+function controllActuator() {
+    if(tas_state == 'upload' && sleeping == 1) {
+	if(humidity_auto == 1) {
+            if(!((humidity_low <= humidity) && (humidity <= humidity_high))) {
+                var cin = {ctname: "cnt-humidifier", con: "1"};
+                console.log('SEND : ' + JSON.stringify(cin) + ' ---->');
+                upload_client.write(JSON.stringify(cin) + '<EOF>');
+            }
+            else {
+                var cin = {ctname: "cnt-humidifier", con: "0"};
+                console.log('SEND : ' + JSON.stringify(cin) + ' ---->');
+                upload_client.write(JSON.stringify(cin) + '<EOF>');
+            }
+	}
+	if(temperature_auto == 1) {
+            if(!((temperature_low <= temperature) && (temperature <= temperature_high))) {
+                var cin = {ctname: "cnt-fan", con: "1"};
+                console.log('SEND : ' + JSON.stringify(cin) + ' ---->');
+                upload_client.write(JSON.stringify(cin) + '<EOF>');
+            }
+            else {
+                var cin = {ctname: "cnt-fan", con: "0"};
+                console.log('SEND : ' + JSON.stringify(cin) + ' ---->');
+                upload_client.write(JSON.stringify(cin) + '<EOF>');
+            }
+	}
+    }
+}
+
 var cur_c = '';
 var pre_c = '';
 var g_sink_buf = '';
diff --git a/DHT11/conf.xml b/DHT11/conf.xml
index 0e415b6..765e8c4 100755
--- a/DHT11/conf.xml
+++ b/DHT11/conf.xml
@@ -9,7 +9,43 @@
         <id>humidity#1</id>
     </upload>
     <upload>
-        <ctname>cnt-temp</ctname>
-        <id>temp#1</id>
+        <ctname>cnt-temperature</ctname>
+        <id>temperature#1</id>
     </upload>
+    <upload>
+        <ctname>cnt-fan</ctname>
+        <id>fan#1</id>
+    </upload>
+    <upload>
+        <ctname>cnt-humidifier</ctname>
+        <id>humidifier#1</id>
+    </upload>
+    <download>
+        <ctname>cnt-sleeping</ctname>
+        <id>sleeping#1</id>
+    </download>
+    <download>
+        <ctname>cnt-humidity-auto</ctname>
+        <id>humidity#1</id>
+    </download>
+    <download>
+        <ctname>cnt-humidity-low</ctname>
+        <id>humidity#</id>
+    </download>
+    <download>
+        <ctname>cnt-humidity-high</ctname>
+        <id>humidity#1</id>
+    </download>
+    <download>
+        <ctname>cnt-temperature-auto</ctname>
+        <id>temperature#1</id>
+    </download>
+    <download>
+        <ctname>cnt-temperature-low</ctname>
+        <id>temperature#1</id>
+    </download>
+    <download>
+        <ctname>cnt-temperature-high</ctname>
+        <id>temperature#1</id>
+    </download>
 </m2m:conf>
diff --git a/Makefile b/Makefile
index b2294eb..e8bb3d1 100644
--- a/Makefile
+++ b/Makefile
@@ -2,8 +2,8 @@ install:
 	sudo npm -g install forever
 	cd thyme && npm install
 	cd ADXL345 && npm install
-	cd DHT11 && npm install
 	cd SEN0228 && npm install
+	cd DHT11 && npm install
 
 compile:
 	cd DHT11 && g++ DHT11.cpp -o DHT11 -lwiringPi
@@ -12,8 +12,8 @@ compile:
 start:
 	cd thyme && forever start thyme.js
 	cd ADXL345 && forever start app.js
-	cd DHT11 && forever start app.js
 	cd SEN0228 && forever start app.js
+	cd DHT11 && forever start app.js
 
 stop:
 	forever stopall
diff --git a/SEN0228/app.js b/SEN0228/app.js
index fc95269..36c506e 100755
--- a/SEN0228/app.js
+++ b/SEN0228/app.js
@@ -9,7 +9,7 @@ var util = require('util');
 var fs = require('fs');
 var xml2js = require('xml2js');
 var exec = require("child_process").exec;
-
+var request = require("request");
 var wdt = require('./wdt');
 
 var useparentport = '';
@@ -20,6 +20,8 @@ var download_arr = [];
 
 var conf = {};
 
+var sleeping;
+
 // This is an async file read
 fs.readFile('conf.xml', 'utf-8', function (err, data) {
     if (err) {
@@ -102,6 +104,8 @@ function on_receive(data) {
                         for (j = 0; j < download_arr.length; j++) {
                             if (download_arr[j].ctname == sink_obj.ctname) {
                                 g_down_buf = JSON.stringify({id: download_arr[i].id, con: sink_obj.con});
+				if(sink_obj.ctname == 'cnt-sleeping')
+					sleeping = sink_obj.con;
                                 console.log(g_down_buf + ' <----');
                                 break;
                             }
@@ -157,11 +161,28 @@ function tas_watchdog() {
 
 wdt.set_wdt(require('shortid').generate(), 3, tas_watchdog);
 wdt.set_wdt(require('shortid').generate(), 3, uploadData);
+wdt.set_wdt(require('shortid').generate(), 3, checkSleeping);
+
+function checkSleeping() {
+    var options = { method: 'GET',
+        url: 'http://52.79.78.134:7579/mobius-yt/SSS/cnt-sleeping/latest',
+        headers:
+            { 'cache-control': 'no-cache',
+            'x-m2m-origin': 'SOrigin','x-m2m-ri': '12345',
+            accept: 'application/json' } };
+
+    request(options, function (error, response, body) {
+        if (error) throw new Error(error);
+        console.log(body);
+        var jObject = JSON.parse(body)["m2m:cin"];
+        sleeping = jObject.con;
+    })
+}
 
 function uploadData() {
     var cmd = 'sudo ./SEN0228';
     exec(cmd, function callback(error, stdout, stderr) {
-            if(tas_state == 'upload') {
+            if(tas_state == 'upload' && sleeping == '1') {
                 for(var i = 0; i < upload_arr.length; i++) {
                     if(upload_arr[i].ctname == 'cnt-lux') {
                         var cin = {ctname: upload_arr[i].ctname, con: stdout};
diff --git a/SEN0228/conf.xml b/SEN0228/conf.xml
index a3f17fa..87954ae 100755
--- a/SEN0228/conf.xml
+++ b/SEN0228/conf.xml
@@ -8,4 +8,8 @@
         <ctname>cnt-lux</ctname>
         <id>lux#1</id>
     </upload>
+    <download>
+        <ctname>cnt-sleeping</ctname>
+        <id>sleeping#1</id>
+    </download>
 </m2m:conf>
diff --git a/thyme/conf.js b/thyme/conf.js
index f484beb..0fdb437 100755
--- a/thyme/conf.js
+++ b/thyme/conf.js
@@ -29,9 +29,9 @@ cse.id          = '/mobius-yt';
 cse.mqttport    = '1883';
 
 // build ae
-ae.id           = 'ae-edu0';
+ae.id           = 'SSS';
 ae.parent       = '/' + cse.name;
-ae.name         = 'ae-edu0';
+ae.name         = 'SSS';
 ae.appid        = '0.2.481.1.1';
 ae.port         = '9727';
 ae.bodytype     = 'json';
@@ -41,25 +41,74 @@ ae.tasport      = '3105';
 var count = 0;
 cnt_arr[count] = {};
 cnt_arr[count].parent = '/' + cse.name + '/' + ae.name;
+cnt_arr[count++].name = 'cnt-sleeping';
+cnt_arr[count] = {};
+cnt_arr[count].parent = '/' + cse.name + '/' + ae.name;
+cnt_arr[count++].name = 'cnt-acceleration';
+cnt_arr[count] = {};
+cnt_arr[count].parent = '/' + cse.name + '/' + ae.name;
 cnt_arr[count++].name = 'cnt-humidity';
 cnt_arr[count] = {};
 cnt_arr[count].parent = '/' + cse.name + '/' + ae.name;
-cnt_arr[count++].name = 'cnt-temp';
+cnt_arr[count++].name = 'cnt-humidity-auto';
 cnt_arr[count] = {};
 cnt_arr[count].parent = '/' + cse.name + '/' + ae.name;
-cnt_arr[count++].name = 'cnt-accel';
+cnt_arr[count++].name = 'cnt-humidity-low';
+cnt_arr[count] = {};
+cnt_arr[count].parent = '/' + cse.name + '/' + ae.name;
+cnt_arr[count++].name = 'cnt-humidity-high';
 cnt_arr[count] = {};
 cnt_arr[count].parent = '/' + cse.name + '/' + ae.name;
 cnt_arr[count++].name = 'cnt-lux';
+cnt_arr[count] = {};
+cnt_arr[count].parent = '/' + cse.name + '/' + ae.name;
+cnt_arr[count++].name = 'cnt-temperature';
+cnt_arr[count] = {};
+cnt_arr[count].parent = '/' + cse.name + '/' + ae.name;
+cnt_arr[count++].name = 'cnt-temperature-auto';
+cnt_arr[count] = {};
+cnt_arr[count].parent = '/' + cse.name + '/' + ae.name;
+cnt_arr[count++].name = 'cnt-temperature-low';
+cnt_arr[count] = {};
+cnt_arr[count].parent = '/' + cse.name + '/' + ae.name;
+cnt_arr[count++].name = 'cnt-temperature-high';
+cnt_arr[count] = {};
+cnt_arr[count].parent = '/' + cse.name + '/' + ae.name;
+cnt_arr[count++].name = 'cnt-fan';
+cnt_arr[count] = {};
+cnt_arr[count].parent = '/' + cse.name + '/' + ae.name;
+cnt_arr[count++].name = 'cnt-humidifier';
 
 // build sub
 count = 0;
 sub_arr[count] = {};
-sub_arr[count].parent = '/' + cse.name + '/' + ae.name + '/' + cnt_arr[1].name;
-sub_arr[count].name = 'sub-ctrl';
+sub_arr[count].parent = cnt_arr[0].parent + '/' + cnt_arr[0].name;
+sub_arr[count].name = 'sub';
+sub_arr[count++].nu = 'mqtt://' + cse.host + '/' + ae.id;
+sub_arr[count] = {};
+sub_arr[count].parent = cnt_arr[3].parent + '/' + cnt_arr[3].name;
+sub_arr[count].name = 'sub';
+sub_arr[count++].nu = 'mqtt://' + cse.host + '/' + ae.id;
+sub_arr[count] = {};
+sub_arr[count].parent = cnt_arr[4].parent + '/' + cnt_arr[4].name;
+sub_arr[count].name = 'sub';
+sub_arr[count++].nu = 'mqtt://' + cse.host + '/' + ae.id;
+sub_arr[count] = {};
+sub_arr[count].parent = cnt_arr[5].parent + '/' + cnt_arr[5].name;
+sub_arr[count].name = 'sub';
+sub_arr[count++].nu = 'mqtt://' + cse.host + '/' + ae.id;
+sub_arr[count] = {};
+sub_arr[count].parent = cnt_arr[8].parent + '/' + cnt_arr[8].name;
+sub_arr[count].name = 'sub';
+sub_arr[count++].nu = 'mqtt://' + cse.host + '/' + ae.id;
+sub_arr[count] = {};
+sub_arr[count].parent = cnt_arr[9].parent + '/' + cnt_arr[9].name;
+sub_arr[count].name = 'sub';
+sub_arr[count++].nu = 'mqtt://' + cse.host + '/' + ae.id;
+sub_arr[count] = {};
+sub_arr[count].parent = cnt_arr[10].parent + '/' + cnt_arr[10].name;
+sub_arr[count].name = 'sub';
 sub_arr[count++].nu = 'mqtt://' + cse.host + '/' + ae.id;
-//sub_arr[count++].nu = 'http://203.254.173.104:' + ae.port + '/noti';
-//sub_arr[count++].nu = 'coap://203.254.173.104:' + ae.port + '/noti';
 
 // build acp: not complete
 acp.parent = '/' + cse.name + '/' + ae.name;
diff --git a/thyme/conf.json b/thyme/conf.json
index ca785cc..d9a9928 100644
--- a/thyme/conf.json
+++ b/thyme/conf.json
@@ -9,9 +9,9 @@
         "mqttport": "1883"
     },
     "ae": {
-        "id": "ae-edu0",
+        "id": "SSS",
         "parent": "/mobius-yt",
-        "name": "ae-edu0",
+        "name": "SSS",
         "appid": "0.2.481.1.1",
         "port": "9727",
         "bodytype": "json",
@@ -19,32 +19,98 @@
     },
     "cnt": [
         {
-            "parent": "/mobius-yt/ae-edu0",
+            "parent": "/mobius-yt/SSS",
+            "name": "cnt-sleeping"
+        },
+        {
+            "parent": "/mobius-yt/SSS",
+            "name": "cnt-acceleration"
+        },
+        {
+            "parent": "/mobius-yt/SSS",
             "name": "cnt-humidity"
         },
         {
-            "parent": "/mobius-yt/ae-edu0",
-            "name": "cnt-temp"
+            "parent": "/mobius-yt/SSS",
+            "name": "cnt-humidity-auto"
         },
         {
-            "parent": "/mobius-yt/ae-edu0",
-            "name": "cnt-accel"
+            "parent": "/mobius-yt/SSS",
+            "name": "cnt-humidity-low"
         },
         {
-            "parent": "/mobius-yt/ae-edu0",
+            "parent": "/mobius-yt/SSS",
+            "name": "cnt-humidity-high"
+        },
+        {
+            "parent": "/mobius-yt/SSS",
             "name": "cnt-lux"
+        },
+        {
+            "parent": "/mobius-yt/SSS",
+            "name": "cnt-temperature"
+        },
+        {
+            "parent": "/mobius-yt/SSS",
+            "name": "cnt-temperature-auto"
+        },
+        {
+            "parent": "/mobius-yt/SSS",
+            "name": "cnt-temperature-low"
+        },
+        {
+            "parent": "/mobius-yt/SSS",
+            "name": "cnt-temperature-high"
+        },
+        {
+            "parent": "/mobius-yt/SSS",
+            "name": "cnt-fan"
+        },
+        {
+            "parent": "/mobius-yt/SSS",
+            "name": "cnt-humidifier"
         }
     ],
     "sub": [
         {
-            "parent": "/mobius-yt/ae-edu0/cnt-temp",
-            "name": "sub-ctrl",
-            "nu": "mqtt://52.79.78.134/ae-edu0"
+            "parent": "/mobius-yt/SSS/cnt-sleeping",
+            "name": "sub",
+            "nu": "mqtt://52.79.78.134/SSS"
+        },
+        {
+            "parent": "/mobius-yt/SSS/cnt-humidity-auto",
+            "name": "sub",
+            "nu": "mqtt://52.79.78.134/SSS"
+        },
+        {
+            "parent": "/mobius-yt/SSS/cnt-humidity-low",
+            "name": "sub",
+            "nu": "mqtt://52.79.78.134/SSS"
+        },
+        {
+            "parent": "/mobius-yt/SSS/cnt-humidity-high",
+            "name": "sub",
+            "nu": "mqtt://52.79.78.134/SSS"
+        },
+        {
+            "parent": "/mobius-yt/SSS/cnt-temperature-auto",
+            "name": "sub",
+            "nu": "mqtt://52.79.78.134/SSS"
+        },
+        {
+            "parent": "/mobius-yt/SSS/cnt-temperature-low",
+            "name": "sub",
+            "nu": "mqtt://52.79.78.134/SSS"
+        },
+        {
+            "parent": "/mobius-yt/SSS/cnt-temperature-high",
+            "name": "sub",
+            "nu": "mqtt://52.79.78.134/SSS"
         }
     ],
     "acp": {
-        "parent": "/mobius-yt/ae-edu0",
-        "name": "acp-ae-edu0",
-        "id": "ae-edu0"
+        "parent": "/mobius-yt/SSS",
+        "name": "acp-SSS",
+        "id": "SSS"
     }
 }
\ No newline at end of file
-- 
GitLab