From d6d9a09d505d11148599a95a5be3e1351edbe0ac Mon Sep 17 00:00:00 2001 From: hc Date: Mon, 13 Apr 2026 15:17:52 +0800 Subject: Local iHealth SDK, device detail screen, iOS event fixes --- libs/ihealth-sdk/doc/am5.md | 215 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 215 insertions(+) create mode 100644 libs/ihealth-sdk/doc/am5.md (limited to 'libs/ihealth-sdk/doc/am5.md') diff --git a/libs/ihealth-sdk/doc/am5.md b/libs/ihealth-sdk/doc/am5.md new file mode 100644 index 0000000..4465b35 --- /dev/null +++ b/libs/ihealth-sdk/doc/am5.md @@ -0,0 +1,215 @@ +# AM4 Workflow + +## Import AM5 Module + +```js +import { + AM5Module, + AM5ProfileModule +} from '@ihealth/ihealthlibrary-react-native'; +``` + +## APIs + +### Add and remove listener + +```js +// add +notifyListener = DeviceEventEmitter.addListener(AM5Module.Event_Notify, (event) => { + console.log(event); +}); + +// remove +notifyListener.remove(); +``` + +### get all connected am5 devices + +```js +AM5Module.getAllConnectedDevices(); + +// {"action": "action_get_all_connected_devices", "devices": ["DD4173E7F41E"]} +``` + +### disconnect a am5 devices + +```js +AM5Module.disconnect(mac); +``` + +### Binding apps and devices + +```js +AM5Module.bindDevice(mac); + +// response +// {"action": "action_user_bind", "description": "no error", "mac": "DD4173E7F41E", "status": 3, "type": "AM5"} +notifyListener = DeviceEventEmitter.addListener(AM5Module.Event_Notify, (event) => { + if (event.action === AM5ProfileModule.ACTION_USER_BIND) { + if (3 === event[AM5ProfileModule.OPERATION_STATUS]) { + console.log('bind success'); + } else if (4 === event[AM5ProfileModule.OPERATION_STATUS]) { + console.log('bind fail'); + } + } +}); +``` + +### UnBind apps and devices + +```js +AM5Module.unBindDevice(mac); + +// response +// {"action": "action_user_unbind", "description": "no error", "mac": "DD4173E7F41E", "status": 3, "type": "AM5"} +notifyListener = DeviceEventEmitter.addListener(AM5Module.Event_Notify, (event) => { + if (event.action === AM5ProfileModule.ACTION_USER_UNBIND) { + if (3 === event[AM5ProfileModule.OPERATION_STATUS]) { + console.log('unbind success'); + } else if (4 === event[AM5ProfileModule.OPERATION_STATUS]) { + console.log('unbind fail'); + } + } +}); +``` + +### Get information of the device + +```js +AM5Module.getBasicInfo(mac); + +// response +// {"action": "action_basic_info", "battStatus": 0, "bind_confirm_method": 0, "bind_confirm_timeout": 0, "deivceId": 7041, "energe": 63, "firmwareVersion": 40, "mac": "DD4173E7F41E", "mode": 1, "pairFlag": 0, "reboot": 0, "type": "AM5"} +notifyListener = DeviceEventEmitter.addListener(AM5Module.Event_Notify, (event) => { + if (event.action === AM5ProfileModule.ACTION_BASIC_INFO) { + console.log(AM5ProfileModule.BASIC_ENERGE); + } +}); +``` + +### Set current time of the device + +```js +AM5Module.setTime(mac); + +// response +// {"action": "TIME", "mac": "DD4173E7F41E", "result": true, "type": "AM5"} +notifyListener = DeviceEventEmitter.addListener(AM5Module.Event_Notify, (event) => { + if (event.action === "TIME") { + console.log('set success'); + } +}); +``` + +### Set user info + +```js +/** + * @param year Year of birth + * @param month Month of birth + * @param day Day of birth + * @param weight weight + * @param height height + * @param gender gender male: 1, female: 2 + */ +AM5Module.setUserInfo(mac, 1990, 1, 1, 75, 176, 1); + +// response +// {"action": "USER_INFO", "mac": "DD4173E7F41E", "result": true, "type": "AM5"} +notifyListener = DeviceEventEmitter.addListener(AM5Module.Event_Notify, (event) => { + if (event.action === "USER_INFO") { + console.log('set success'); + } +}); +``` + +### Set unit + +```js +/** + * When you never set them, treat them as defaults + * @param {string} mac Device's mac address + * @param type 0: Distance unit unit: 0 default ; 1 KM ; 2 MI + * @param type 1: Wight unit unit: 0 default ; 1 KG ; 2 LB ; 3 ST + * @param type 2: Temperature unit unit: 0 default ; 1 °C ; 2 °F + * @param type 3: Distance at each step unit: distance (cm) (default 0cm) + * @param type 4: Language unit: 0 default ; 1 zh ; 2 en ; 3 fr ; 4 de ; 5 it ; 6 es ; 7 ja ; 8 po ; 9 cz + * @param type 5: Time Mode unit: 0 default ; 1 24 hour system ; 2 12 hour system + * @param type 6: Distance at each step of run unit: distance (cm) (default 0cm) + * @param type 7: GPS calibration switch unit: 0 default ; 1 open ; 2 close +*/ +AM5Module.setUnit(mac, [1, 3, 2]); + +// response +// {"action": "UNIT", "mac": "DD4173E7F41E", "result": true, "type": "AM5"} +notifyListener = DeviceEventEmitter.addListener(AM5Module.Event_Notify, (event) => { + if (event.action === "UNIT") { + console.log('set success'); + } +}); +``` + +### Set Hand Wear Mode + +```js +/** + * @param {string} mac Device's mac address + * @param mode 0 left-hand 1 right-hand + */ +AM5Module.setHandWearMode(mac, 1); + +// response +// {"action": "HAND_MODE", "mac": "DD4173E7F41E", "result": true, "type": "AM5"} +notifyListener = DeviceEventEmitter.addListener(AM4Module.Event_Notify, (event) => { + if (event.action === "HAND_MODE") { + console.log('set success'); + } +}); +``` + +### Get the live data of the device + +```js +/** + * @param {string} mac Device's mac address + */ +AM5Module.getLiveData(mac); + +// response +// {"action": "action_live_data", "dbp": 0, "heartRate": 0, "mac": "DD4173E7F41E", "sbp": 0, "totalActiveTime": 0, "totalCalories": 0, "totalDistances": 0, "totalStep": 0, "type": "AM5"} +notifyListener = DeviceEventEmitter.addListener(AM5Module.Event_Notify, (event) => { + if (event.action === AM5ProfileModule.ACTION_LIVE_DATA) { + console.log('set success'); + } +}); +``` + +### Sync health data from device + +```js +/** + * @param {string} mac Device's mac address + */ +AM5Module.syncHealthData(mac); + +// response + +// 1. {"action": "action_sync_health_data", "mac": "DD4173E7F41E", "status": 0, "type": "AM5"} +// 2. {"action": "action_sync_health_data", "mac": "DD4173E7F41E", "progress": 2, "status": 2, "type": "AM5"} + +// 3. {"action": "action_sync_health_data_sport", "dId": 7041, "date": "Aug 16, 2021 12:00:00 AM", "day": 16, "items": [ {"activeTime": 0, "calory": 0, "dId": 7041, "date": "Aug 16, 2021 12:00:00 AM", "day": 16, "distance": 0, "month": 8, "sportDataId": 1, "stepCount": 0, "year": 2021}], "mac": "DD4173E7F41E", "month": 8, "sportDataId": 3, "startTime": 0, "timeSpace": 15, "totalActiveTime": 473, "totalCalory": 40, "totalDistance": 718, "totalStepCount": 998, "type": "AM5", "year": 2021} + +// 4. {"action": "action_sync_health_data_sleep", "awakeCount": 2, "dId": 7041, "date": "Aug 27, 2021 12:00:00 AM", "day": 27,"deepSleepCount": 7, "deepSleepMinutes": 157, "items": +// [{"dId": 7041, "date": "Aug 27, 2021 12:00:00 AM", "day": 27, "month": 8, "offsetMinute": 19, "sleepDataId": 2, "sleepStatus": 2, "year": 2021}, +// {"dId": 7041, "date": "Aug 27, 2021 12:00:00 AM", "day": 27, "month": 8, "offsetMinute": 28, "sleepDataId": 3, "sleepStatus": 3, "year": 2021}, {"dId": 7041, "date": "Aug 27, 2021 12:00:00 AM", "day": 27, "month": 8, "offsetMinute": 56, "sleepDataId": 4, "sleepStatus": 2, "year": 2021}], "lightSleepCount": 9, "lightSleepMinutes": 327, "mac": "DD4173E7F41E", "month": 8, "sleepDataId": 1, "sleepEndedTimeH": 9, "sleepEndedTimeM": 10, "totalSleepMinutes": 533, "type": "AM5", "year": 2021} + +// 5. {"action": "action_sync_health_data_heart_rate", "dId": 7041, "date": "Aug 16, 2021 12:00:00 AM", "day": 16, "items": [ {"activeTime": 0, "calory": 0, "dId": 7041, "date": "Aug 16, 2021 12:00:00 AM", "day": 16, "distance": 0, "month": 8, "sportDataId": 1, "stepCount": 0, "year": 2021}]} + +// 6. {"action": "action_sync_health_data", "mac": "DD4173E7F41E", "progress": 100, "status": 3, "type": "AM5"} + +notifyListener = DeviceEventEmitter.addListener(AM5Module.Event_Notify, (event) => { + if (event.action === AM5ProfileModule.ACTION_SYNC_HEALTH_DATA) { + console.log('get success'); + } +}); +``` -- cgit