Skip to content

Commit f92450e

Browse files
author
Stefania
authored
Merge pull request #4 from arduino/support_cbor_labels
support cbor labels
2 parents 3aee19f + 0324c47 commit f92450e

File tree

1 file changed

+38
-8
lines changed

1 file changed

+38
-8
lines changed

src/index.js

+38-8
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,31 @@
1818
*
1919
*/
2020

21+
/*
22+
SenML labels
23+
https://tools.ietf.org/html/draft-ietf-core-senml-16#section-4.3
24+
25+
+---------------+-------+------------+------------+------------+
26+
| Name | Label | CBOR Label | JSON Type | XML Type |
27+
+---------------+-------+------------+------------+------------+
28+
| Base Name | bn | -2 | String | string |
29+
| Base Time | bt | -3 | Number | double |
30+
| Base Unit | bu | -4 | String | string |
31+
| Base Value | bv | -5 | Number | double |
32+
| Base Sum | bs | -6 | Number | double |
33+
| Version | bver | -1 | Number | int |
34+
| Name | n | 0 | String | string |
35+
| Unit | u | 1 | String | string |
36+
| Value | v | 2 | Number | double |
37+
| String Value | vs | 3 | String | string |
38+
| Boolean Value | vb | 4 | Boolean | boolean |
39+
| Data Value | vd | 8 | String (*) | string (*) |
40+
| Value Sum | s | 5 | Number | double |
41+
| Time | t | 6 | Number | double |
42+
| Update Time | ut | 7 | Number | double |
43+
+---------------+-------+------------+------------+------------+
44+
*/
45+
2146
import Paho from 'paho-client';
2247
import CBOR from 'cbor-js';
2348

@@ -87,18 +112,23 @@ const connect = options => new Promise((resolve, reject) => {
87112

88113
const propertyValue = CBOR.decode(buf);
89114
propertyValue.forEach((p) => {
90-
if (propertyCallback[msg.topic][p.n]) {
115+
// Support cbor labels
116+
const propertyNameKey = p.n !== undefined ? p.n : p['0'];
117+
const valueKey = p.v !== undefined ? 'v' : '2';
118+
const valueStringKey = p.vs !== undefined ? 'vs' : '3';
119+
const valueBooleanKey = p.vb !== undefined ? 'vb' : '4';
120+
if (propertyCallback[msg.topic][propertyNameKey]) {
91121
let value = null;
92122

93-
if (!(p.v === undefined)) {
94-
value = p.v;
95-
} else if (!(p.vs === undefined)) {
96-
value = p.vs;
97-
} else if (!(p.vb === undefined)) {
98-
value = p.vb;
123+
if (!(p[valueKey] === undefined)) {
124+
value = p[valueKey];
125+
} else if (!(p[valueStringKey] === undefined)) {
126+
value = p[valueStringKey];
127+
} else if (!(p[valueBooleanKey] === undefined)) {
128+
value = p[valueBooleanKey];
99129
}
100130

101-
propertyCallback[msg.topic][p.n](value);
131+
propertyCallback[msg.topic][propertyNameKey](value);
102132
}
103133
});
104134
}

0 commit comments

Comments
 (0)