Skip to main content
Version: v1.0

SPO2

Creating Sensors

const spo2 = hmSensor.createSensor(hmSensor.id.SPO2)

SPO2 instance

spo2: object

PropertiesDescriptionType
currentBlood oxygen measurement valuesnumber
timetime when the result was generatednumber
retcoderesult return codenumber
hourAvgofDayReturns the hourly average blood sample data, length 24Array<number>
retcode valueDescription
0Measurement invalid
1Continue measuring
2Measurement success
3Measurement failure
4Not wearing
5Measurement timeout
6Invalid wearing
7Invalid signal
8Low blood oxygen value
9High blood oxygen value
10Measurement invalid

start

Start blood oxygen measurement

spo2.start()
info

It' s recommended to call stop before calling the start method to stop the last measurement

stop

Cancel blood oxygen measurement

spo2.stop()

Registering sensor instance callback events

calorie.addEventListener(event, callback: Callback)

The events of CHANGE

The value of event

hmSensor.event.CHANGE

Callback

() => void

Full Example

class TextByLine {
constructor(params) {
const { text = '', y = undefined, line = 0 } = params

this.text = text
this.y = y
this.line = line
this.y_computed = Number.isInteger(this.y) ? this.y : px(this.line * 60 + 120)
}

render() {
return hmUI.createWidget(hmUI.widget.TEXT, {
x: px(0),
y: this.y_computed,
w: px(480),
h: px(46),
color: 0xffffff,
text_size: px(20),
align_h: hmUI.align.CENTER_H,
align_v: hmUI.align.CENTER_V,
text_style: hmUI.text_style.NONE,
text: this.text
})
}
}

Page({
build() {
const spo2 = hmSensor.createSensor(hmSensor.id.SPO2)

new TextByLine({
text: `current:${spo2.current};time:${spo2.time};retcode:${spo2.retcode}`,
line: 0
}).render()

const changeEventText = new TextByLine({
text: `EVENT-CHANGE:${spo2.current}`,
line: 1
}).render()

const changeCallback = () => {
const current = spo2.current
const time = spo2.time
const retcode = spo2.retcode

changeEventText.setProperty(hmUI.prop.MORE, {
text: `EVENT-CHANGE: ${current};${time};${retcode}`
})
}

const spo2ChangeListener = () => {
spo2.addEventListener(hmSensor.event.CHANGE, changeCallback)
}

hmUI.createWidget(hmUI.widget.BUTTON, {
x: px(80),
y: px(300),
w: px(300),
h: px(60),
radius: px(12),
normal_color: 0xfc6950,
press_color: 0xfeb4a8,
text: 'REGISTER_CHANGE',
click_func: spo2ChangeListener
})

hmUI.createWidget(hmUI.widget.BUTTON, {
x: px(80),
y: px(380),
w: px(300),
h: px(60),
radius: px(12),
normal_color: 0xfc6950,
press_color: 0xfeb4a8,
text: 'START',
click_func: () => {
spo2.stop()
spo2.start()
}
})

const hourAvgOfDay = spo2.hourAvgOfDay

for (let i = 0; i < hourAvgOfDay.length; i++) {
new TextByLine({
text: `index:${i};${hourAvgOfDay[i]}`,
line: 8 + i
}).render()
}
}
})