diff --git a/ADXL345/ADXL345.py b/ADXL345/ADXL345.py index 79204ce98fc2d6294066faf836a8ef5ce356f28e..b2a316ec0bfcb533fe19736838cf13517cac22dd 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 c3ccdd3c298d5e8845d419d9c8930da2094f6ea5..447798549a31a22a3a47126f40bce362fbfb42d1 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 cc61267a6e3d967e0b6914cb48f4e2dbb39e273f..7e901d1aa11ee369ef587e1cc643a043f3de3bb6 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 Binary files a/DHT11/DHT11 and b/DHT11/DHT11 differ diff --git a/DHT11/DHT11.cpp b/DHT11/DHT11.cpp index 864f0ed9c36ad3e1cd76456f699996123d1a1a37..89be60bd1c0b9b1b80aab49ec410df7acca402d7 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 51ef0c3333f497fc5eb1768df47b0a90346ed4e9..925b5ce45709dc11a199e1c0bac48d885f2a5b39 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 0e415b697bae070eaf23dc6d90ad6767f383e7a6..765e8c4ff935cee3016ac9c6b346c4ebb667851e 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 b2294eb23d6e05656aaff9874e00403f538566db..e8bb3d1185e1b06ca607eed426ae22f991b248f0 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 fc952696dbf6cc7dedab77a1047009865d4fb5d2..36c506e89364b537831256e7196867615cbf6bc9 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 a3f17faad08b16424fc1f4f508693686b75ce829..87954ae1720f77ec0f62757cd02ffdc2d07b85bf 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 f484beb8dcec233b7854ad1a224c6c7a5064ae42..0fdb437e4fc221d2c2ac210201c0cb352752a553 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 ca785ccaed3baed8c201a48b3d926ea5a4e4a65d..d9a99289735783d6cbc3bbc4c7411431af09651c 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