AiCloud iOS SDK Development Guide
AiCloud iOS SDK Development Guide
v1.4.0
revise history
Version | Revision Content | Revision by | Reviewer | Revision Date |
1.0.0 | Create Document | Zhao Ying | Cody | 2016.8.23 |
1.0.1 | Add smart connection, two interface callbacks for successful network access | Zhao Ying | Cody | 2016.8.30 |
1.1.0 | New batch deployment method (9.2) | Zhao Ying | Cody | 2016.9.05 |
1.1.1 | The uuid generation rules have been changed, users need to generate them themselves (see Note 4), the initialization method of the control device has been changed, and the user name, password, and uuid parameters have been added (10.1) | Zhao Ying | Cody | 2016.9. 07 |
1.1.2 | iOS and Android unified interface parameter names | Zhao Ying | Cody | 2016/9/07 |
1.2.0 | Add TCP LAN control device function, add light configuration description in SDK configuration description | Zhao Ying | Cody | 2016/9/21 |
1.2.1 | Update bulb light data points | Zhao Ying | 2016/10/9 | |
1.2.2 | Modify SDK CommConfig: Communication configuration type, user configures before SDK use, and adds and closes MQTT service interface | Zhao Ying | 2016/10/13 | |
1.3.0 | Unified interface with Android (method name and parameter changes are large), encapsulated mqtt can establish multiple connection functions | Zhao Ying | 2016/10/19 2016/10/28 |
|
1.3.2 | Added mqtt return to the original data interface, and added the NSData type parameter interface for publishing devices | Zhao Ying | 2016/11/2 | |
1.4.0 | 1. The underscore of the parameter naming convention is changed to camel case 2. There are many new interfaces, see the .h header file for details | Zhao Ying | 2016/11/22 |
1. AiCloud iOS SDK environment description
Precautions
1. The user login return value is only retained for 15 minutes, and you need to make a good judgment during the app development process to avoid unnecessary bugs
2. Configure before using SDK: Add “-all_load” to “Other Linker Flags” option in “Build Settings”;
3. The third-party frameworks referenced by this SDK include MQTTClient, MKNetwork, and AsyncSocket. Developers should avoid repeated references
4. uuid: uuid should be guaranteed to remain unchanged after the application is installed, and to be as unique as possible for tracking back. It is recommended to convert the unix timestamp*1000+ms value into a hexadecimal string when the app is started for the first time, and then intercept the first 12 bytes. If it is less than 12 bytes, fill it with a random string. (The addition of the millisecond value takes into account that the same user may open more than one APP at the same time in one second. If you use milliseconds, it is difficult to open multiple APPs at the same time in one millisecond, which is difficult for the same user It’s not unique anymore) Save it after the generation is complete, and ensure that it remains unchanged before uninstalling the APP.
Socket configuration description:
1. Press and hold the button, the small green light flashes slowly for intelligent network distribution mode, medium flashing for AP network distribution mode, fast flashing for OTA production inspection, and long light for successful initialization. 2. If the smart connection fails, press and hold the button, enter the AP network distribution mode after 6 seconds (green light flashes), and return to the field setting after 15 seconds
Light configuration instructions:
Generally, the light does not need to be initialized, unless you want to reconnect to other WIFI, switch once every two seconds (keep on for 1 second), enter the smart connection mode three times, enter the AP mode four times, and initialize it ten times.
CommConfig.m: Communication configuration class, user configuration before SDK use
/** * Server path configuration [[http://api.vcd.io:4567/v1/|http://api.vcd.io:4567/v1/]] * Note: "http://" cannot be added to this address */ NSString* NETWORK_URL=@" 123.56.46.239:4568/v1"; /** * Key and secret of cooperative vendors; Provided by AiCloud to cooperative vendors */ NSString* ACCESS_KEY = @"2b250d04d459ec46bed1a57dad028915"; NSString * ACCESS_SECRET = @" 0e8d106602f4125a16e11445645bcc18";
Release Notes:
This update mainly adds the SMS verification interface. The SMS verification interface has only one parameter of the mobile phone number (phone). The registration interface has been slightly changed, and two parameters have been added: 1. SMS verification code (messageCode, userCode), and the manufacturer is added to the configuration information id (VENDOR_ID), added the mqtt callback original data interface, and added the NSData type interface for publishing parameters
2. Work flow
3. API instructions for use
3.1 Turn on UDP service
Note: Only enable UDP service to discover devices, enable UDP service to allow devices to connect to the network
3.1.1 Get DeviceManager singleton
[UserManager SharedInstance];
3.1.2 Open UDP service
[userManager OpenUDPServer];
3.1.3 Close UDP service
[userManager OpenUDPServer];
3.2 User login
3.2.1 Get UserManager singleton
+ (UserManager *)sharedInstance;
3.2.2 Get SMS verification code
Request parameter
Parameters | Type | Required | Default | Description |
phone | NSString | Yes | None | Mobile Number |
templateId | int | yes | no | 1 or 2 (register 1, change password 2) |
Return parameter
Parameters | Type | Description |
userCode | NSString | suerCode, used when registering/modifying password |
Method call example
-(Void)getMessage:(NSString*)phone templateId:(int)templateId completionHandler:(void(^)(idresponseJSON,NSError*error))completionHandler;
Return example
{ "Success": true, "Data": { "userCode": "sa4nUnfQisGTZH3EmE8JEE" } }
3.2.3 User Registration
Request parameter
Parameters | Type | Required | Default | Description |
mobile | NSString | Yes | None | Mobile number |
password | NSString | yes | none | user password |
messageCode | NSString | Yes | None | Verification code received by mobile phone |
userCode | NSString | Yes | None | userCode (obtained when obtaining SMS verification code) |
Return parameter
Parameters | Type | Description |
userId | NSString | User ID |
Call method
-(Void)registerWithPassword:(NSString*)passworduserCode:(NSString*)userCodemessageCode:(NSString*)messageCode mobile:(NSString*)mobilecompletionHandler:(void(^)(id responseJSON,NSError*error))completionHandler;
Correct return example
{ "Success": 1, "Data": { "userId": "sa4nUnfQisGTZH3EmE8JEE" }} }
Error return example
{ "Success": 0, "ErrorCode": 500, "Message": "internal error" }
3.2.4 Retrieve password
Request parameter
Parameters | Type | Required | Default | Description |
mobile | NSString | Yes | None | Mobile number |
password | NSString | yes | none | user password |
messageCode | NSString | Yes | None | Verification code received by mobile phone |
userCode | NSString | Yes | None | userCode (obtained when obtaining SMS verification code) |
Return parameter
Parameters | Type | Description |
None | None | None |
Call method
//Retrieve password interface implementation -(Void)resetPasswordWithPassword:(NSString*)passworduserCode:(NSString*)userCodemessageCode:(NSString*)messageCode mobile:(NSString*)mobilecompletionHandler:(void(^)(id responseJSON,NSError*error))completionHandler;
Correct return example
{ "Success": 1, "Data": { "success": "1" } }
Error return example
{ "Success": 0, "ErrorCode": 500, "Message": "internal error" }
3.2.5 User login
Request parameter
Parameters | Type | Required | Default | Description |
username | NSString | Yes | None | Username/Mobile phone number (Username length cannot exceed 32 bytes) |
password | NSString | yes | none | account password |
Return parameter
Parameters | Type | Description |
userToken | NSString | User token (expires in 15 minutes) |
userId | NSString | User ID |
The user login return value is only retained for 15 minutes, and you need to make a judgment during the app development process to avoid unnecessary bugs
Call method
-(Void)loginUserName:(NSString*)username password:(NSString *)password completionHandler:(void(^)(idresponseJSON,NSError*error))completionHandler;
Correct return example
{ "success": 1, "data": { "userToken": "350cfc21-cc96-4a59-8570-d4d1e40b1ebe", "userId": "sa4nUnfQisGTZH3EmE8JEE" } }
Error return example
{ "success": 0, "errorCode": 500, "message": "Internal error" }
3.2.6 Modify user name
Request parameter
Parameters | Type | Required | Default | Description |
userId | NSString | Yes | None | User ID (return value when logging in) |
username | NSString | Yes | None | The new user name to be set (the length of the user name cannot exceed 32 bytes) |
Return parameter
Parameters | Type | Description |
responseJSON | id | Modify device name return value |
Call method
//Change user name UserManager call -(Void)updateUserInfoWithUserId:(NSString*)userId username:(NSString*)usernamecompletionHandler:(void(^)(idresponseJSON,NSError*error))completionHandler;
Correct return example
{ data = { success = 1; }; success = 1; }
Error return example
{ "errorCode":400, "message":"user already binding", "success":0 }
To
3.2.7 Query user information
Request parameter
Parameters | Type | Required | Default | Description |
userId | NSString | Yes | None | User id (return value when logging in) |
Return parameter
Parameters | Type | Description |
responseJSON | id | Query user information return value |
Call method
//Query user information UserManager call -(void)getUserInfoWithUserId:(NSString*)userIdcompletionHandler:(void(^)(idresponseJSON,NSError*error))completionHandler;
Correct return example
{ data = { userMobile = 18500272824; username = hh; }; success = 1; }
Error return example
{ "errorCode":400, "message":"user already binding", "success":0 }
3.3 Branch One
3.3.1 Get the bound device
Request parameter
Parameters | Type | Required | Default | Description |
userToken | NSString | Yes | None | User token |
Return parameters: The return value is a json string, and the following parameters can be obtained after parsing
Parameters | Type | Description |
deviceId | NSString | Device ID |
devicePassword | NSString | Device Password |
status | BOOL | Equipment status |
productId | NSString | Product ID |
productName | NSString | Product Name |
server | NSString | The address of the server where the device establishes an MQTT connection (Note: If the server is empty, first unbind and then rebind) |
Calling method: call using UserManager object
-(Void)getDeviceListForUser:(NSString*)userToken CompletionHandler:(void(^)(idresponseJSON,NSError*error))completionHandler;
Correct return example
{ "success": 1, "data":[ { "productId": "pnTSD3ZsRNVgvNn6YRC2Z5", "deviceId": "sa4nUnfQisGTZH3EmE8JEE", "devicePassword": "0a1704dee5ed7200fcea5f627f6d1fd1", "server": "mqtt://s1.vcd.io:1883", "status": 1, "productName": "bulb light" } ] }
Error return example
{ "Success": 0, "ErrorCode": 500, "Message": "Internal error" }
3.3.2 Unbind equipment
Request parameter
Parameters | Type | Required | Default | Description |
userToken | NSString | Yes | None | User token |
deviceId | NSString | Yes | None | Device id (obtained from the bound device list) |
devicePassword | NSString | Yes | None | Device password (obtained from the list of bound devices) |
Return parameter
Parameters | Type | Description |
responseJSON | id | Binding device feedback information |
Call method
-(Void)unbindDeviceForUser:(NSString*)userToken deviceId:(NSString*)deviceIddevicePassword:(NSString*)devicePassword completionHandler:(void(^)(idresponseJSON,NSError*error))completionHandler;
Return information correctly
responseJSON---> { "Data":{ "result":"SUCCESS" }, "success":1 }
Error return information
no
3.3.3 Control equipment
3.3.3.1 Generalized Network Control Equipment
3.3.3.1.1 Generalized Network Control Equipment (It can be used to read the status of the device, or it can be used to control the device)
Request parameter
Parameters | Type | Required | Default | Description |
deviceId | String | Yes | None | The device's deviceId can be obtained when querying the bound list |
params | NSDictionary | Yes | None | Json string that needs to publish parameters |
serverUrl | NSString | Yes | None | Get the list of bound devices (also available for bound devices) |
Return parameter
Parameters | Type | Description |
None | None | None |
Call method
-(Void)publishMessage:(NSString*)deviceId serverUrl:(NSString*)serverUrl params:(NSDictionary*)params;
Example of reading device status params
{ "i": sequence id, (who sent, who generated) "d":{["key1","key2",…,"keyn"]} is empty, the device does not need to report data "t": Timestamp }
Example of control device params
{ "i": serial id, (who sent, who generated) "d":{ "key1":"value1", "key2":"value2", … "keyn":"valuen" } "t": unix timestamp }
Return example
no
3.3.3.1.2 Generalized Network Control Equipment (Interface 2 The parameters are the same as above, but the params parameter type is converted to NSData)
Calling method:
-(Void)publishMessage:(NSString*)deviceId serverUrl:(NSString*)serverUrl data:(NSData*)data;
3.3.3.2 LAN control equipment
Note: The priority of TCP control is higher than MQTT control. First, determine whether the device can be controlled by TCP. If it is possible to execute TCP control, use MQTT control if it is not.
Open TCP service
Request parameter
Parameters | Type | Required | Default | Description |
delegate | id | yes | none | TCPHelperd proxy object |
deviceId | NSString | Yes | None | Device ID (obtained from the method of obtaining device list) |
deviceIp | NSString | Yes | None | Device IP (obtained from the method of obtaining device list) |
devicePassword | NSString | Yes | None | Device password (obtained from the method of obtaining device list) |
Return parameter
Parameters | Type | Description | ||
None | None | None |
Call method
-(Id)openTCPServerWithDelegate:(id)delegate deviceIp:(NSString*)deviceIp devicePassword:(NSString*)devicePassword deviceId:(NSString*)deviceId;
tcp control equipment
Request parameter
Parameters | Type | Required | Default | Description |
commandDict | NSDictionary | Yes | None | Device information controlled by TCP |
Note: This method can be used to read the device and release the device. The CGFloat type parameter retains 2 decimal places, and the value transfer example is as follows
Return parameter
Parameters | Type | Description | ||
None | None | None |
Call method
(void)tcpSendData:(NSDictionary*)params;
Example of writing bulb light json (you do not need to send all data points when sending, you can send corresponding data points according to your needs)
{ "I": 4, "D": { "S":0, "M":1, "Hue": 0.5, "Lit": 0.5, "Sat": 0.5, "Lum": 0.5, "Tem": 0.5 }, "T":1464714257 "DeviceId": "PGiHMkrgyxrUCuLgEfubUU" }
Example of reading bulb lamp (you do not need to send all data points when sending, you can send corresponding data points according to your needs)
{ "i":4, "d":{ [ "s":0, "m":1, "hue":0.5, "lit":0.5, "sat":0.5, "lum":0.5, "tem":0.5 ] }, "T":1464714257 "DeviceId": "PGiHMkrgyxrUCuLgEfubUU" }
Determine whether TCP is connected
Calling method: Determine whether to connect through the proxy method parameter isTCPConnected
(void)isTCPConnected:(BOOL)isTCPConnected;
TCP service feedback information
Request parameter
Parameters | Type | Required | Default | Description |
None | None | None | None | None |
Return parameter
Parameters | Type | Description |
receiveDict | NSDictionary | TCP connection return information |
Calling method: proxy method, the return value is returned by receiveDict
-(Void)tcpReceiveData:(NSDictionary*)receiveDict;
Return json example (write, return data points are returned according to sent data points, which data points are sent back which ones, and those not sent will not be returned)
{ "d":{ "s":0, "m":1, "hue":0.5, "lit":0.5, "sat":0.5, "lum":0.5, "tem":0.5 }, "t":1464714257, "i":234 }
Return json example (read, return data points are returned according to sent data points, which data points are sent back which ones, and those not sent will not be returned)
{ "d":{ "s":0, "m":1, "hue":0.5, "lit":0.5, "sat":0.5, "lum":0.5, "tem":0.5 }, "t":1464714257, "i": 234 }
Disconnect TCP connection
Note: Disconnect the TCP service when the controller is destroyed
Call method
-(Void)closeTCPServer;
3.4 Branch Two
3.4.1 Equipment deployment
Request parameter
Parameters | Type | Required | Default | Description |
userToken | NSString | Yes | None | User token with expiration time |
Return parameter
Parameters | Type | Description |
responseJSON | NSDictionary | Interface callback returns string, see return example for details |
Call method
-(Void)deployForUser:(NSString*)userTokencompletionHandler:(void(^)(idresponseJSON,NSError*error))completionHandler
Correct return example
{ "success": 1, "data": { "serverList": [ { "server": "mqtt://s1.vcd.io:1883", "username": "tNb3ZgG9HLNiCEfNnushp6", "password": "dmUxHriiFrsAxJNTNd9Pz3", "pubkey":"", "pkVersion":"" },], "signature": "8e0bb23839955bde1346b6e9395347ff" } }
Note: When the request return value serverList count>=1, all MQTT links must be established (if there are several servers, several MQTT connections are established)
Error return example
{ "success": 0, "errorCode":500, "message": "Internal error" }
3.4.2 Establish MQTT connection
3.4.2.1 Obtain the DeviceManager singleton (before establishing a connection, you must first ensure that the DeviceManager singleton is obtained)
3.4.2.2 Establish MQTT connection
Note: When MQTT is connected, when the Apple device enters the foreground from the lock screen or background state, it will automatically reconnect. Only when the network is switched, you need to manually call the reconnection port
Request parameter
Parameters | Type | Required | Default | Description |
userId | NSString | Yes | None | User ID |
serverHost | NSString | Yes | None | MQTT server IP address |
serverPort | int32_t | yes | none | MQTT port |
username | NSString | Yes | None | The user name when logging in to MQTT, obtained from the information returned after deploying the device |
password | NSString | Yes | None | The password when logging in to MQTT, obtained from the information returned after deploying the device |
uuid | NSString | Yes | None | Generated when the user logs in to the device for the first time, generated by referring to uuid rules |
Return parameter
Parameters | Type | Description |
devInfo | NSDictionary | The returned json string is not the return value of successful connection establishment, but the feedback data of the device after the message is successfully published |
deviceId | NSString | Device ID |
Call method
-(Void)openMQTTServerWithUserId:(NSString*)userId ServerUrl:(NSString*)serverUrl UserName:(NSString*)username Password: (NSString *)password Uuid:(NSString*)uuid CompletionHandler:(void(^)(NSString*deviceId,NSDictionary*devInfo,NSError*error))completionHandler;
Note: After the device receives the control command, get the device return information in this callback
Correct return example
Socket read device status return example
devInfo = { "I": 3, "D":{ "s": 1 }, "DeviceId":"ssxggsjsfks", "t":"1464714257" } deviceId="sdgjshghklgjsgdshgjsdhk"
Socket control return example
devInfo={ "I": 3, "D":{ "s":1 }, "T": "1464714257" } deviceId = "ssxggsjsfks"
Example of returning the status of the light bulb reading the device (the number of parameters returned by the json string when reading the device status is determined by the parameters passed in when publishing. Which parameter is passed in will return which parameter, and if there is no incoming parameter, it will not be returned.
s: switch, integer, 0 is off, 1 is on
m: Mode, integer, 1 is color light mode, 2 is white light mode, 0 is RAW mode (RGB raw data point mode)
hue: the angle of the color circle, 0 to 360 degrees, floating point (reserve 2 decimal places)
lit: brightness, used to adjust the brightness of the color mode, 0 to 1, the default value is 0.5, floating point (reserve 2 decimal places)
sat: Contrast, used to adjust the color mode, 0 to 1, the default value is changed to 0.6, floating point (reserve 2 decimal places)
lum: brightness, used to adjust the brightness of white light mode, 0 to 1, the default value is changed to 0.5, floating point (reserve 2 decimal places)
tem: Color temperature, used to adjust the heating and cooling of white light mode, 0 to 1, the default value is changed to 0.6, floating point (reserve 2 decimal places)
devInfo = { "i":4, "D": { "s":0, "m":1, "hue":0.5, "lit":0.5, "sat":0.5, "lum":0.5, "tem":0.5 }, "t":1464714257 } deviceId="PGiHMkrgyxrUCuLgEfubUU"
Lamp control (switch) Return to example
devInfo={ "i":4, "d":{ "s":0 }, "t":1464714257 } deviceId="ssxggsjsfks"
Lamp control (color light) Return to example
devInfo={ "i":4, "d":{ "m":1, "hum":0.5 }, "t":1464714257 } deviceId = "sssjhkjhs"
3.4.2.3 MQTT feedback information transparent transmission interface
Note: mqtt feedback NSData type data interface, there is one more NSData type data callback than the previous interface
Calling method:
-(Void)openMQTTServerWithUserId:(NSString*)userId ServerUrl:(NSString*)serverUrl UserName:(NSString*)username Password: (NSString *)password Uuid:(NSString*)uuid CompletionHandler:(void(^)(NSString*deviceId,NSDictionary*devInfo,NSError*error))completionHandler RawDataCompletionHandler: (void (^)(NSString *deviceId, NSData *data, NSError *error))rawDataCompletionHandler;
3.4.2.4 MQTT reconnect
Parameters | Type | Required | Default | Description |
serverUrl | NSString | Yes | None | Obtained from the return value of the bound device (the bound device also returns serverUrl) |
Return parameter
Parameters | Type | Description |
None | None | None |
Call method
-(Void)reconnetMQTTserver:(NSString*)serverUrl;
3.5 branch three
3.5.1 Add device
3.5.1.1 Smart Connection
Create WiFiTouch class singleton object
+ (WiFiTouch *)sharedTouch;
Smart connection
Smart access to the Internet, provide the device with a WIFI account and password for Internet access, and ensure that this method is used in a WIFI environment
Request parameter
Parameters | Type | Required | Default | Description |
ssid | NSString | Yes | None | WIFI account name |
password | NSString | Yes | None | WIFI account password |
timeout | int | yes | none | connection timeout |
Return parameter
Parameters | Type | Description |
None | None | None |
Call method
-(Void)smartLink:(NSString*)ssid password:(NSString*) password timeout:(int)timeout;
Stop smart connection
Method call example: Use WiFiTouch singleton call
-(Void)stop;
Determine whether the smart connection is in progress
Request parameter
Parameters | Type | Required | Default | Description |
None | None | None | None | None |
Return parameter
Parameters | Type | Description |
YES (NO) | BOOL | YES is returned when the smart connection is connecting, or NO if not |
Method call example: Use WiFiTouch singleton call
-(BOOL)isRunning;
Return example
Return YES;
Smart link feedback
Request parameter
Parameters | Type | Required | Default | Description |
None | None | None | None | None |
Return parameter
Parameters | Type | Description |
devInfo | NSDictionary | Device Information |
Call method
-(Void)receiveSmartLinkCompletionHandler:(void(^)(NSDictionary*devInfo,NSError*error))completionHandler;
Correct return example
{ "deviceId":"PGiHMkrgyxrUCuLgEfubUU"; "deviceIp":"192.168.1.116"; "devicePort":12476; "mac":"5ccf7f026cea"; "productId":"pnTSD3ZsRNVgvNn6YRC2Z5"; }
3.5.1.2 AP connection
Create DeviceManager class singleton
+ (DeviceManager *)sharedInstance;
AP mode connection
AP mode connection: The user connects to the Wi-Fi released by the device, and sends the configuration information directly to the device
Request parameter
Parameters | Type | Required | Default | Description |
ssid | NSString | Yes | None | WIFI account name |
password | NSString | Yes | None | WIFI account password |
Return parameter
Parameters | Type | Description |
devInfo | NSDictionary | Device Information |
Call method
-(Void)APLink:(NSString*)ssid Password:(NSString*)passwd CompletionHandler:(void(^)(NSDictionary*devInfo,NSError*error))completionHandler;
Correct return example
{ "productId":"pnTSD3ZsRNVgvNn6YRC2Z5", "deviceId":"PGiHMkrgyxrUCuLgEfubUU", "mac":"5ccf7f026cea", "deviceHost":"10.10.3.24", "devicePort": 12476 }
Error return example
no
Feedback on successful device access
Request parameter
Parameters | Type | Required | Default | Description |
None | None | None | None | None |
Return parameter
Parameters | Type | Description |
devInfo | NSDictionary | Device Information |
Call interface
-(Void)networkSuccessCompletionHandler:(void(^)(NSDictionary*devInfo,NSError*error))completionHandler;
Correct return example
{ "DeviceId": "PGiHMkrgyxrUCuLgEfubUU"; "DeviceIp": "192.168.1.116"; "DevicePort": 12476; "Mac": "5ccf7f026cea"; "ProductId": "pnTSD3ZsRNVgvNn6YRC2Z5"; }
3.5.2 Discovery equipment
3.5.2.1 Device discovery
Request parameter
Parameters | Type | Required | Default | Description |
None | None | None | None | None |
Return parameter
Parameters | Type | Description |
deviceIp | NSString | Device IP |
devicePort | UInt16 | Device Port |
deviceId | NSString | Device ID |
mac | NSString | Device MAC address |
productId | NSString | Product ID |
Note: Call the discovery device interface to return all device information at one time, but each time only one device information is returned, it will automatically return multiple times
Note: The discovery device needs to be deduplicated (remove the device in the bound device list requested from the server)
Call interface
-(Void)discoverDeviceCompletionHandler:(void(^)(NSArray*deviceList,NSError*error))completionHandler;
Correct return example
deviceList---> ( { "DeviceId": "BuZR4ohMzRqUokEKYwMrqZ"; "DeviceIp": "192.168.1.141"; "DevicePort": 12476; "Mac": "5ccf7f035332"; "ProductId": "pnTSD3ZsRNVgvNn6YRC2Z5"; } )
Error return example
no
3.5.2.2 Query product information interface
Request parameter
Parameters | Type | Required | Default | Description |
None | None | None | None | None |
Return parameter
Parameters | Type | Description |
responseJSON | NSDictionary | Binding device feedback information |
Calling method:
-(Void)getVendorInfoCompletionHandler:(void(^)(idresponseJSON,NSError*error))completionHandler;
Correct return example
{ data={ productVoList=( { productId = 3G8pAXs2kppdLwHZHqTeWH; productName = AiBox; }, { productId = kc9dRAXr35PEA7PCZcR4z9; productName = "ESP\U7cfb\U5217\U6a21\U7ec4"; }, { productId = R6of6RqqYzKphvEqZApfNV; productName = "\U667a\U80fd\U63d2\U5ea7"; }, { productId = TDo7PY6XPjv3Fwru6zSnoK; productName = "\U667a\U80fd\U706f"; } ); }; success = 1; }
Error return example
responseJSON---> { "errorCode":400, "Message":"user already binding", "Success":0}
3.5.2.3 Get productName
Request parameter
Parameters | Type | Required | Default | Description |
productId | NSString | Yes | None | Product ID |
Return parameter
Parameters | Type | Description |
productName | NSString | Product Name |
Note: If the return value is empty, it is not the device of the manufacturer, and the device may not be found
Calling method:
//Add the interface to get the device productName, nil means it is not the manufacturer's productId, and the device can be ignored -(NSString *)getProductNameJudgeVendorDeviceWithProductId:(NSString *)productId;
Correct return example
"Ball Bulb" or nil
3.5.2.3 Binding device
-(Void)bindingDeviceForUser:(NSString*)userTokenHost:(NSString*)deviceHostdevicePort:(UInt16)devicePortcompletionHandler:(void(^)(idresponseJSON,NSError*error))completionHandler
Request parameter
Parameters | Type | Required | Default | Description |
useToken | NSString | Yes | None | User token |
deviceHost | NSString | Yes | None | Device IP address |
devicePort | UInt16 | yes | none | device port number |
Return parameter
Parameters | Type | Description |
responseJSON | id | Binding device feedback information |
Call method
-(Void)bindingDeviceForUser:(NSString*)userTokenHost:(NSString*)deviceHostdevicePort:(UInt16)devicePortcompletionHandler:(void(^)(idresponseJSON,NSError*error))completionHandler
Note: Every time a new device is bound, it is necessary to determine whether the server has established an MQTT connection according to the returned information server, and MQTT control can be performed only if the connection has been established, and the connection needs to be re-established
Correct return example
{ "success": true, "data":{ "server": "mqtt://s1.vcd.io:1883", "username": "tNb3ZgG9HLNiCEfNnushp6", "password": "dmUxHriiFrsAxJNTNd9Pz3", "pubkey":"", "pkVersion":"" } }
Error return example
responseJSON---> { "errorCode": 400, "message":"user already binding", "success":0 }
3.5.2.3 Determine whether MQTT is connected
Calling method: (using DeviceManager singleton call)
-(BOOL)isMQTTConnected:(NSString*)serverUrl
Note: Returning YES means MQTT is connected, NO means MQTT connection is disconnected or this serverUrl has not established MQTT service
3.5.2.4 If the connection has not been established, the MQTT connection is established, and the connection is disconnected and reconnected
Calling method: (same as 2.4.2)
3.5.2.5 Modify the device name
Request parameter
Parameters | Type | Required | Default | Description |
deviceName | NSString | yes | none | new device name to be used |
deviceId | NSString | yes | none | device id |
Return parameter
Parameters | Type | Description |
responseJSON | id | Modify device name return value |
Call method
//Add user to change the device name UserManager call -(Void)updateDeviceInfoWithDviceName:(NSString*)deviceNamedeviceId:(NSString*)deviceIdcompletionHandler:(void(^)(idresponseJSON,NSError*error))completionHandler;
Correct return example
{ data={ success = 1; }; success = 1; }
Error return example
{ "errorCode":400, "Message":"user already binding", "success":0 }
Disclaimer and Copyright Notice
The information in this article, including the URL address for reference, is subject to change without notice.
The document is provided “as is” and does not bear any guarantee responsibility, including any guarantee for marketability, suitability for a specific purpose, or non-infringement, and any guarantee mentioned elsewhere in any proposal, specification or sample. This document does not take any responsibility, including the responsibility for infringement of any patent rights caused by using the information in this document. This document does not grant any license for the use of intellectual property rights in estoppel or other ways, whether express or implied.
The Wi-Fi Alliance member logo is owned by the Wi-Fi Alliance. All brand names, trademarks and registered trademarks mentioned in this article are the property of their respective owners, and it is hereby declared.