# MTSensorKit Documentation
This set of SDK only supports the Bluetooth Sensor device produced by Minew, and is currently a temperature and humidity sensor and a door sensor. The SDK can help developers handle all the work between mobile phones and Sensors, including: scanning devices, connecting devices, writing data to devices, receiving data from devices, etc.
# Preliminary work
Overall framework: MTCentralManager is a device management class, which is always a singleton when the APP is running. MTPeripheral is a device instance class. This suite will generate a MTPeripheral instance for each device to facilitate monitoring and operating devices.
MTCentralManager : Device management class, which can scan the surrounding Sensor devices, and can connect them, verify them, etc.
MTPeripheral : Device instance class. When MTCentralManager discovers a physical device, MTCentralManager will generate a MTPeripheral instance, which corresponds to a physical device.
MTBroadcastHandler : Device broadcast class, which can get the data when the device broadcasts.
MTConnectionHandler : Device connection class for receiving and sending data from the device.
MTUtils : Write data instruction.
# Get started
# Development environment:
-Xcode10 +, the current SDK is compiled with Xcode11, please use Xcode10 and above for development; -iOS11, the minimum system version is iOS11;
# Import into the project:
CocoaPods
MTSensorKit is available through CocoaPods (opens new window). To install it, simply add the following line to your Podfile, and then import <MTSensorKit/MTSensorKit.h>:
pod 'MTSensorKit'
1Manually
- Copy the development kit files: MTSensorKit.framework files to the project project directory, and then add them to the project.
PS:
- !!! In iOS10 and above, Apple added permission restrictions on Bluetooth APi. You need to add a string to the project's info.plist file: Privacy-Bluetooth Peripheral Usage Description-"Your usage description".
- !!! In iOS13 and above, Apple added permission restrictions on Bluetooth APi. You need to add a string to the project's info.plist file: Privacy-Bluetooth Always Usage Description-"Your usage description".
# Start development
# Scanning equipment
First you need to get the singleton of MTCentralManager, then check the current Bluetooth status of the phone, and then you can scan the device.
// Get Manager singleton
MTCentralManager * manager = [MTCentralManager sharedInstance];
dispatch_after (dispatch_time (DISPATCH_TIME_NOW, (int64_t) (1 * NSEC_PER_SEC)), dispatch_get_main_queue (), ^ {
// The current state of the Bluetooth switch on the mobile phone
if (self-> manager.status == PowerStatePoweredOn) {
// start device scan
[manager startScan: ^ (NSArray <MTPeripheral *> * devices) {
//According to the type of broadcast attribute, the required sensor type can be filtered.
self-> deviceAry = devices;
}];
}
});
// Scanned devices can also be obtained using manager.scannedPeris
// If you need to respond to the Bluetooth status of your phone. Please listen for the callback.
[manager didChangesBluetoothStatus: ^ (PowerState status) {
switch (status) {
case PowerStatePoweredOn:
NSLog (@ "bluetooth status change to poweron");
break;
case PowerStatePoweredOff:
NSLog (@ "bluetooth status change to poweroff");
break;
case PowerStateUnknown:
NSLog (@ "bluetooth status change to unknown");
}
}];
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
PS: The entire SDK works only when the Bluetooth state of the phone is in Poweron.
# Connect to device
// The scanned device can be obtained from the previous step
MTPeripheral * device = deviceAry [0];
// Connect the device
[manager connectToPeriperal: device];
// Listen for device connection status.
[p.connector didChangeConnection: ^ (Connection connection) {
if (connection == Vaildated) {
// Successful verification, successfully connected to the device
NSLog (@ "vaildated");
//Need to write a password, perform other operations after the password is verified successfully
}
if (connection == Disconnected) {
NSLog (@ "device has disconnected.");
}
}];
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# Write data to the device
Take the next step, when the mobile phone successfully establishes a connection with a device and the authentication is successful, the device can read and write.
Write data
//Obtain the corresponding command data through MTUtils, for example: NSData *data = [MTUtils verficationPassword:@"123456"]; [self-> _ per.connector writeData: data completion: ^ (BOOL success, NSError * _Nonnull error) { if (error) { NSLog (@ "write data failed:% @", error); } else { NSLog (@ "write data success"); } }];
1
2
3
4
5
6
7
8
9
10
11Receive data
[_per.connector didReceiveData: ^ (NSData * _Nonnull data) { if (data) { NSLog (@ "receive data success:% @", data); } else { NSLog (@ "receive data failed"); } } }];
1
2
3
4
5
6
7
8
9
# Schedule
# MTCentralManager Property Description
Name | Type | Description |
---|---|---|
status | PowerState | phone's bluetooth status |
scannedPeris | NSArray | scanned devices |
# MTPeripheral Property Description
Name | Type | Description |
---|---|---|
identifier | NSString | device Identifier |
broadcast | MTBroadcastHandler | obejct of MTBroadcastHandler |
connector | MTConnectionHandler | obejct of MTConnectionHandler |
# MTBroadcastHanler Property Description
Name | Type | Description |
---|---|---|
name | NSString | device name |
rssi | NSInteger | device RSSI |
battery | NSString | device battery |
mac | NSString | device Mac |
identifier | NSString | device identifier |
temp | double | device temperature |
humi | double | device humidity |
reseInfo | uint8_t | device temperature unit flag |
type | SensorType | device type |
doorStatus | NSString | device door status |
warningStatus | uint8_t | device alarm status |
#
Name | Type | Description |
---|---|---|
name | NSString | device name |
rssi | NSInteger | device RSSI |
mac | NSString | device Mac |
identifier | NSString | device identifier |
firmVersion | NSString | firmversion |
hardwareVersion | NSString | hardwareVersion |
screenInfo | NSString | screenInfo |
battery | NSString | battery |
chipTemp | double | chipTemp |
heartbeat | NSString | heartbeat |
tagRssi | NSString | tagRssi |
chipInfo | NSString | chipInfo |
imageIdData | NSData | imageIdData |
errorCode | NSInteger | errorCode |
peripheralSupport | NSString | peripheralSupport |
# MTConnectionHandler Property Description
Name | Type | Description |
---|---|---|
macString | NSString | device Mac |
connection | Connection | device connect status |