@@ -8,18 +8,12 @@ local invoke = require "api.invokes"
88
99--- system paths -----------------------------------------
1010
11- local UUID_PATH = " settings:/system/memberId"
12- local MAC_PATH = " settings:/system/primaryMacAddress"
13- local MEMBER_ID_PATH = " settings:/system/memberId"
1411local MANUFACTURER_NAME_PATH = " settings:/system/manufacturer"
1512local DEVICE_NAME_PATH = " settings:/deviceName"
1613local MODEL_NAME_PATH = " settings:/system/modelName"
1714local PRODUCT_NAME_PATH = " settings:/system/productName"
18-
19- --- SmartThings paths ----------------------------------
20- local SMARTTHINGS_PATH = " smartthings:"
21- local SMARTTHINGS_AUDIO_PATH = " smartthings:audio/"
22- local SMARTTHINGS_MEDIA_PATH = " smartthings:media/"
15+ local INIT_CREDENTIAL_PATH = " smartthings:initCredentialsToken"
16+ local CREDENTIAL_PATH = " settings:/smartthings/userToken"
2317
2418---- ------------------------------------------------------
2519--- APIs
@@ -29,27 +23,6 @@ local APIs = {}
2923
3024--- system APIs ------------------------------------------
3125
32- --- get UUID from Harman Luxury on ip
33- --- @param ip string
34- --- @return string | nil , nil | string
35- function APIs .GetUUID (ip )
36- return get .String (ip , UUID_PATH )
37- end
38-
39- --- get MAC address from Harman Luxury on ip
40- --- @param ip string
41- --- @return string | nil , nil | string
42- function APIs .GetMAC (ip )
43- return get .String (ip , MAC_PATH )
44- end
45-
46- --- get Member ID from Harman Luxury on ip
47- --- @param ip string
48- --- @return string | nil , nil | string
49- function APIs .GetMemberId (ip )
50- return get .String (ip , MEMBER_ID_PATH )
51- end
52-
5326--- get device manufacturer name from Harman Luxury on ip
5427--- @param ip string
5528--- @return string | nil , nil | string
@@ -86,233 +59,28 @@ function APIs.SetDeviceName(ip, value)
8659 return set .String (ip , DEVICE_NAME_PATH , value )
8760end
8861
89- --- get active credential token from a Harman Luxury device on ip
90- --- @param ip string
91- --- @return boolean | number | string | table | nil , nil | string
92- function APIs .InitCredentialsToken (ip )
93- return invoke .Activate (ip , SMARTTHINGS_PATH .. " initCredentialsToken" )
94- end
95-
96- --- get active credential token from a Harman Luxury device on ip
97- --- @param ip string
98- --- @return boolean | number | string | table | nil , nil | string
99- function APIs .GetCredentialsToken (ip )
100- return invoke .Activate (ip , SMARTTHINGS_PATH .. " getCredentialsToken" )
101- end
102-
103- --- get supported input sources from a Harman Luxury device on ip
62+ --- initialise a new credential token from Harman Luxury on ip
10463--- @param ip string
105- --- @return table | nil , nil | string
106- function APIs .GetSupportedInputSources (ip )
107- return invoke .Activate (ip , SMARTTHINGS_PATH .. " getSupportedInputSources" )
108- end
109-
110- --- power manager APIs -----------------------------------
111-
112- --- invoke smartthings:setOn on ip
113- --- @param ip string
114- --- @return boolean | number | string | table | nil , nil | string
115- function APIs .SetOn (ip )
116- return invoke .Activate (ip , SMARTTHINGS_PATH .. " setOn" )
117- end
118-
119- --- invoke smartthings:setOff on ip
120- --- @param ip string
121- --- @return boolean | number | string | table | nil , nil | string
122- function APIs .SetOff (ip )
123- return invoke .Activate (ip , SMARTTHINGS_PATH .. " setOff" )
124- end
125-
126- --- get current power state Harman Luxury on ip
127- --- @param ip string
128- --- @return boolean | number | string | table | nil , nil | string
129- function APIs .GetPowerState (ip )
130- return invoke .Activate (ip , SMARTTHINGS_PATH .. " powerStatus" )
131- end
132-
133- --- audio APIs ------------------------------------
134-
135- --- set Mute value of Harman Luxury media player on ip
136- --- @param ip string
137- --- @param value boolean
138- --- @return boolean | number | string | table | nil , nil | string
139- function APIs .SetMute (ip , value )
140- return set .Bool (ip , SMARTTHINGS_AUDIO_PATH .. " mute" , value )
141- end
142-
143- --- get Mute value of Harman Luxury media player on ip
144- --- @param ip string
145- --- @return boolean | number | string | table | nil , nil | string
146- function APIs .GetMute (ip )
147- return get .Bool (ip , SMARTTHINGS_AUDIO_PATH .. " mute" )
148- end
149-
150- --- set Volume value of Harman Luxury media player on ip
151- --- @param ip string
152- --- @param value integer
153- --- @return boolean | number | string | table | nil , nil | string
154- function APIs .SetVol (ip , value )
155- return set .I32 (ip , SMARTTHINGS_AUDIO_PATH .. " volume" , value )
156- end
157-
158- --- get Volume value of Harman Luxury media player on ip
159- --- @param ip string
160- --- @return number | nil , nil | string
161- function APIs .GetVol (ip )
162- return get .I32 (ip , SMARTTHINGS_AUDIO_PATH .. " volume" )
163- end
164-
165- --- invoke smartthings:audio/getAudioTrackData on ip
166- --- @class AudioTrackData
167- --- @field trackdata table<string>
168- --- @field supportedPlaybackCommands table<string>
169- --- @field supportedTrackControlCommands table<string>
170- --- @field totalTime number
171- --- @param ip string
172- --- @return AudioTrackData | nil , nil | string
173- function APIs .getAudioTrackData (ip )
174- local val , err = invoke .Activate (ip , SMARTTHINGS_AUDIO_PATH .. " getAudioTrackData" )
175- if val then
176- local audioTrackData = {
177- trackdata = {
178- title = val .title or " " ,
179- artist = val .artist or nil ,
180- album = val .album or nil ,
181- albumArtUrl = val .albumArtUrl or nil ,
182- mediaSource = val .mediaSource or nil ,
183- },
184- supportedPlaybackCommands = val .supportedPlaybackCommands ,
185- supportedTrackControlCommands = val .supportedTrackControlCommands ,
186- totalTime = val .totalTime ,
187- }
188- return audioTrackData , nil
189- else
64+ --- @return string | nil , nil | string
65+ function APIs .init_credential_token (ip )
66+ local val , err = invoke .Activate (ip , INIT_CREDENTIAL_PATH )
67+ if err then
19068 return nil , err
191- end
192- end
193-
194- --- Audio Notification API ------------------------------------
195-
196- --- invoke Audio Notification of Harman Luxury on ip
197- --- @param ip string
198- --- @param uri string
199- --- @param level number
200- --- @return boolean | number | string | table | nil , nil | string
201- function APIs .SendAudioNotification (ip , uri , level )
202- local value = {
203- smartthingsAudioNotification = {
204- uri = uri ,
205- level = level ,
206- },
207- }
208- return invoke .ActivateValue (ip , SMARTTHINGS_PATH .. " playAudioNotification" , value )
209- end
210-
211- --- media player APIs ------------------------------------
212-
213- --- set Input Source value of Harman Luxury on ip
214- --- @param ip string
215- --- @param source string
216- --- @return boolean | number | string | table | nil , nil | string
217- function APIs .SetInputSource (ip , source )
218- local value = {
219- string_ = source ,
220- }
221- return invoke .ActivateValue (ip , SMARTTHINGS_MEDIA_PATH .. " setInputSource" , value )
222- end
223-
224- --- get Input Source value of Harman Luxury on ip
225- --- @param ip string
226- --- @return boolean | number | string | table | nil , nil | string
227- function APIs .GetInputSource (ip )
228- return invoke .Activate (ip , SMARTTHINGS_MEDIA_PATH .. " getInputSource" )
229- end
230-
231- --- play Media Preset with given id value on Harman Luxury on ip
232- --- @param ip string
233- --- @param id integer
234- --- @return boolean | number | string | table | nil , nil | string
235- function APIs .PlayMediaPreset (ip , id )
236- local value = {
237- i32_ = id ,
238- }
239- return invoke .ActivateValue (ip , SMARTTHINGS_MEDIA_PATH .. " playMediaPreset" , value )
240- end
241-
242- --- get Media Preset list of Harman Luxury on ip
243- --- @param ip string
244- --- @return table | nil , nil | string
245- function APIs .GetMediaPresets (ip )
246- local val , err = invoke .Activate (ip , SMARTTHINGS_MEDIA_PATH .. " getMediaPresets" )
247- if val then
248- return val .presets , nil
24969 else
250- return nil , err
70+ if type (val ) == " string" then
71+ return val , nil
72+ else
73+ err = string.format (" Device with IP:%s failed to generate a valid credential" , ip )
74+ return nil , err
75+ end
25176 end
25277end
25378
254- --- invoke smartthings:media/setPlay on ip
255- --- @param ip string
256- --- @return boolean | number | string | table | nil , nil | string
257- function APIs .InvokePlay (ip )
258- return invoke .Activate (ip , SMARTTHINGS_MEDIA_PATH .. " setPlay" )
259- end
260-
261- --- invoke smartthings:media/setPause on ip
79+ --- get device current active token from Harman Luxury on ip
26280--- @param ip string
263- --- @return boolean | number | string | table | nil , nil | string
264- function APIs .InvokePause (ip )
265- return invoke .Activate (ip , SMARTTHINGS_MEDIA_PATH .. " setPause" )
266- end
267-
268- --- invoke smartthings:media/setNextTrack on ip
269- --- @param ip string
270- --- @return boolean | number | string | table | nil , nil | string
271- function APIs .InvokeNext (ip )
272- return invoke .Activate (ip , SMARTTHINGS_MEDIA_PATH .. " setNextTrack" )
273- end
274-
275- --- invoke smartthings:media/setPrevTrack on ip
276- --- @param ip string
277- --- @return boolean | number | string | table | nil , nil | string
278- function APIs .InvokePrevious (ip )
279- return invoke .Activate (ip , SMARTTHINGS_MEDIA_PATH .. " setPrevTrack" )
280- end
281-
282- --- invoke smartthings:media/setStop on ip
283- --- @param ip string
284- --- @return boolean | number | string | table | nil , nil | string
285- function APIs .InvokeStop (ip )
286- return invoke .Activate (ip , SMARTTHINGS_MEDIA_PATH .. " setStop" )
287- end
288-
289- --- invoke smartthings:media/setStop on ip
290- --- @param ip string
291- --- @return boolean | number | string | table | nil , nil | string
292- function APIs .GetPlayerState (ip )
293- return invoke .Activate (ip , SMARTTHINGS_MEDIA_PATH .. " getPlayerState" )
294- end
295-
296- --- key input APIs ------------------------------------
297-
298- --- invoke smartthings:sendKey on ip
299- --- @param ip string
300- --- @param key string
301- --- @return boolean | number | string | table | nil , nil | string
302- function APIs .InvokeSendKey (ip , key )
303- local value = {
304- NsdkSmartThingsKey = key ,
305- }
306- return invoke .ActivateValue (ip , SMARTTHINGS_PATH .. " sendKey" , value )
307- end
308-
309- --- check for values change APIs ------------------------------------
310-
311- --- invoke smartthings:updateValues on ip
312- --- @param ip string
313- --- @return table | nil , nil | string
314- function APIs .InvokeGetUpdates (ip )
315- return invoke .Activate (ip , SMARTTHINGS_PATH .. " updateValues" )
81+ --- @return string | nil , nil | string
82+ function APIs .GetActiveCredentialToken (ip )
83+ return get .String (ip , CREDENTIAL_PATH )
31684end
31785
31886return APIs
0 commit comments