diff --git a/index.js b/index.js index d1a86c26..d211b8d7 100644 --- a/index.js +++ b/index.js @@ -1,17 +1,39 @@ -var debug = require('debug')('xiaomi-zb2mqtt') -var util = require("util"); -var perfy = require('perfy'); -var ZShepherd = require('zigbee-shepherd'); -var mqtt = require('mqtt') +const debug = require('debug')('xiaomi-zb2mqtt') +const util = require("util"); +const perfy = require('perfy'); +const ZShepherd = require('zigbee-shepherd'); +const mqtt = require('mqtt') +const ArgumentParser = require('argparse').ArgumentParser; -var client = mqtt.connect('mqtt://192.168.1.10') - -var shepherd = new ZShepherd('/dev/ttyACM0', { - net: { - panId: 0x1a62 - } +// Parse arguments +const parser = new ArgumentParser({ + version: '1.0.0', + addHelp:true, + description: 'Xiaomi Zigbee to MQTT bridge using zigbee-shepherd' }); +parser.addArgument( + ['-d', '--device'], + { + help: 'CC2531 USB stick location, E.G. /dev/ttyACM0', + required: true, + } +); + +parser.addArgument( + ['-m', '--mqtt'], + { + help: 'MQTT server URL, E.G. mqtt://192.168.1.10', + required: true, + } +); + +const args = parser.parseArgs(); + +// Setup client +const client = mqtt.connect(args.mqtt) +const shepherd = new ZShepherd(args.device, {net: {panId: 0x1a62}}); + shepherd.on('ready', function() { console.log('Server is ready. Current devices:'); shepherd.list().forEach(function(dev){ diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index 42ea192c..afab4975 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -9,6 +9,14 @@ "resolved": "https://registry.npmjs.org/areq/-/areq-0.2.0.tgz", "integrity": "sha1-ad0ojIF8hy3HLDfp0eciayayMcU=" }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "requires": { + "sprintf-js": "1.0.3" + } + }, "async": { "version": "0.2.10", "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", @@ -1575,6 +1583,11 @@ "through2": "2.0.3" } }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + }, "stream-browserify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", diff --git a/package.json b/package.json index d010137d..d7e37af7 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,7 @@ "dependencies": { "mqtt": "*", "perfy": "*", - "zigbee-shepherd": "*" + "zigbee-shepherd": "*", + "argparse": "*" } }