@@ -3,11 +3,24 @@ const TuyAPI = require('tuyapi');
33const c = require ( './common' ) ;
44
55function parseConfig ( config , options ) {
6- if ( options . id === undefined ) {
6+ const apiOptions = {
7+ issueGetOnConnect : false ,
8+ version : options . protocolVersion ,
9+ id : options . id ,
10+ ip : options . ip ,
11+ key : options . key || config . get ( options . id )
12+ } ;
13+
14+ // If key is not given and does not exit in config
15+ if ( ! apiOptions . key ) {
716 c . badArgument ( options ) ;
817 }
918
10- if ( Number . isNaN ( Number ( options . protocolVersion ) ) ) {
19+ if ( ! apiOptions . id ) {
20+ c . badArgument ( options ) ;
21+ }
22+
23+ if ( Number . isNaN ( Number ( apiOptions . version ) ) ) {
1124 c . badArgument ( options ) ;
1225 }
1326
@@ -16,26 +29,7 @@ function parseConfig(config, options) {
1629 config . set ( options . id , options . key ) ;
1730 }
1831
19- // If key is not given but exists in config
20- if ( options . key === undefined && config . get ( options . id ) !== undefined ) {
21- if ( options . ip === undefined ) {
22- return new TuyAPI ( { version : options . protocolVersion , id : options . id , key : config . get ( options . id ) } ) ;
23- }
24-
25- return new TuyAPI ( { version : options . protocolVersion , ip : options . ip , id : options . id , key : config . get ( options . id ) } ) ;
26- }
27-
28- // If key is not given and does not exit in config
29- if ( options . key === undefined && config . get ( options . id ) === undefined ) {
30- c . badArgument ( options ) ;
31- } else {
32- // If both arguments are given
33- if ( options . ip === undefined ) {
34- return new TuyAPI ( { version : options . protocolVersion , id : options . id , key : options . key } ) ;
35- }
36-
37- return new TuyAPI ( { version : options . protocolVersion , ip : options . ip , id : options . id , key : options . key } ) ;
38- }
32+ return new TuyAPI ( apiOptions ) ;
3933}
4034
4135async function get ( config , options ) {
@@ -46,14 +40,20 @@ async function get(config, options) {
4640
4741 await tuya . connect ( ) ;
4842
49- const properties = await tuya . get ( { schema : true } ) ;
43+ const properties = await tuya . get ( { schema : true , cid : options . cid , dps : options . dps } ) ;
5044
5145 tuya . disconnect ( ) ;
5246
53- if ( options . all ) {
54- console . log ( JSON . stringify ( properties ) ) ;
47+ if ( properties ) {
48+ if ( options . dps ) {
49+ console . log ( properties . dps [ options . dps ] ) ;
50+ } else if ( options . full ) {
51+ console . log ( properties ) ;
52+ } else {
53+ console . log ( properties . dps ) ;
54+ }
5555 } else {
56- console . log ( properties . dps [ options . dps ] ) ;
56+ throw new Error ( 'No response from device' ) ;
5757 }
5858 } catch ( error ) {
5959 console . log ( error ) ;
@@ -82,7 +82,7 @@ async function set(config, options) {
8282
8383 await tuya . connect ( ) ;
8484
85- await tuya . set ( { set : options . set , dps : options . dps } ) ;
85+ await tuya . set ( { set : options . set , dps : options . dps , cid : options . cid } ) ;
8686
8787 tuya . disconnect ( ) ;
8888
0 commit comments