查看Noduino OpenPlug CN的源代码
←
Noduino OpenPlug CN
跳转到:
导航
,
搜索
因为以下原因,你没有权限编辑本页:
您刚才请求的操作只有这个用户组中的用户才能使用:
用户
您可以查看并复制此页面的源代码:
=== node.js === ==== Prepare ==== Download the node-v6.9.1-xxx.tgz from http://nodejs.org <source lang=bash> $ tar xf node-v6.9.1-*.tar.xz $ sudo cp -a node-v6.9.1*/* /usr/local/ $ sudo npm install -g MQTTClient $ sudo npm install -g request </source> <br><br> ==== Turn off ==== Turn off the plug throught node.js: * replace the mqtt_uname in line 6 * replace the devid in line 7 <source lang=javascript> $ cat switch.js #! /usr/bin/env node // replace it to yours //////////////////////////////////////////////// var mqtt_uname = "o7okr76757879RfhBs_XM339"; <---- YOUR_mqtt_uname var devid = "MJD123456789012"; <---- YOUR_devid //////////////////////////////////////////////// var opt = { username: mqtt_uname, password: "" }; var mqtt_tx_topic = 'app2dev/' + devid var args = process.argv.slice(2); var set_state = args[0]; if (set_state != 'on' && set_state != 'off') { console.log("Supported cmd:"); console.log("\tswitch.js on"); console.log("\tswitch.js off"); process.exit(1); } console.log("st = " + set_state); var http_req = require('/usr/local/lib/node_modules/request'); http_req.post( 'http://api.noduino.org/user/token', { json: {user_id: opt.username} }, function (error, response, body) { if (!error && response.statusCode == 200) { console.log(body); opt.password = body.user_token; //console.log(opt) var MQTTClient = require('/usr/local/lib/node_modules/MQTTClient').Client; var client = new MQTTClient('mqtt.noduino.org', 1883, opt); client.connect(function () { console.log("connect ok!"); var pubopt = { qos_level: 2 } client.publish(mqtt_tx_topic, set_state, pubopt, function (message_id) { console.log("public ok! message_id = " + message_id); process.exit(0); }); }); } else { console.log("Request the user token failed"); process.exit(1); } } ); $ ./switch.js off </source> <br><br> ==== Turn On ==== Turn on the plug: <source lang=bash> $ ./switch.js on </source> <br><br> ==== Debug ==== <font color=red><b>If you get the following error:</b></font> <source lang=bash> /usr/local/lib/node_modules/MQTTClient/client.js:56 throw Error('user names are kept to 12 characters or fewer'); ^ Error: user names are kept to 12 characters or fewer </source> Please patch the /usr/local/lib/node_modules/MQTTClient/client.js to remove the line of checking the length of username and password: <source lang=bash> --- a/client.js +++ b/client.js @@ -52,10 +52,10 @@ var Client = exports.Client = function (host, port, options) { options.alive_timer = 30; options.ping_timer = parseInt(options.alive_timer * 0.6 * 1000); // 用户名和密码 - if (typeof options.username == 'string' && options.username.length > 12) - throw Error('user names are kept to 12 characters or fewer'); - if (typeof options.password == 'string' && options.password.length > 12) - throw Error('passwords are kept to 12 characters or fewer'); + //if (typeof options.username == 'string' && options.username.length > 12) + // throw Error('user names are kept to 12 characters or fewer'); + //if (typeof options.password == 'string' && options.password.length > 12) + // throw Error('passwords are kept to 12 characters or fewer'); // Will flag if (options.will_flag && (typeof options.will_topic != 'string' || typeof options.will_message != 'string')) throw Error('missing will_topic or will_message when will_flag is set'); </source> <br><br>
返回到
Noduino OpenPlug CN
。
个人工具
登录
名字空间
页面
讨论
变换
查看
阅读
查看源代码
查看历史
操作
搜索
导航
首页
社区专页
新闻动态
最近更改
随机页面
帮助
工具箱
链入页面
相关更改
特殊页面