|
18 | 18 | *
|
19 | 19 | */
|
20 | 20 |
|
| 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 | + |
21 | 46 | import Paho from 'paho-client';
|
22 | 47 | import CBOR from 'cbor-js';
|
23 | 48 |
|
@@ -87,18 +112,23 @@ const connect = options => new Promise((resolve, reject) => {
|
87 | 112 |
|
88 | 113 | const propertyValue = CBOR.decode(buf);
|
89 | 114 | 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]) { |
91 | 121 | let value = null;
|
92 | 122 |
|
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]; |
99 | 129 | }
|
100 | 130 |
|
101 |
| - propertyCallback[msg.topic][p.n](value); |
| 131 | + propertyCallback[msg.topic][propertyNameKey](value); |
102 | 132 | }
|
103 | 133 | });
|
104 | 134 | }
|
|
0 commit comments