Example Scripts

JSON

The data exists in the format JSON (temperature t and humidity h)

var j = JSON.parse(content);
if (j.t && j.h) {
 content = "Temperature: " + j.t + "°, Humidity: " + j.h + "%";
}

Example

Message: {"t" : 24, "h" : 30}
Result: „Temperature: 24°, Humidity: 30%“

Explanation


Split

The data exists in text format (temperature and humidity). The values are separated by a blank character.

var s = content.split(" ");
if (s.length >= 2) {
content = "Temperature: " + s[0] + "°, Humidity: " + s[1] + "%";
}

Example

Message: 23.1 30.5
Result : „Temperature: 23.1°, Humidity: 30.5%“

Explanation


Regular Expression

The data exists in text format. The example shows how a regular expression (pattern) can be used for all numeric values (occurrence of the pattern) in the message.

var res = content.match(/[+-]?\d+(\.\d+)?/g);
if (res && res.length >= 2) {
 content = "Temperature: " + res[0] + "°, Humidity: " + res[1] + "%";
}

Example

Message: t=24.2, h=30
Result: „Temperature: 24.2°, Humidity: 30%“

Explanation


Binary

The data exists in binary format.

if (msg.raw.byteLength >= 12) {
 var dv = new DataView(msg.raw);
 if (dv.getUint16(0, true) == 33841) {
   var t = dv.getFloat32(4, true);
   var h = dv.getFloat32(8, true);
   content = 'Temperature: ' + t.toFixed(1) + '° , Humidity: ' + h.toFixed(1) + '%';
 }
}

Example

Message: 49, 132, 0, 0, 175, 59, 168, 65, 184, 224, 0, 66
Result: „Temperature: 21.0°, Humidity: 32.2%“

Explanation


Hexdump

The example outputs the message in hexadecimal format (additionally displayable characters in ASCII format).

var b = new Uint8Array(msg.raw);
var width = 8;
content = '';
var hexStr, lineHex, lineAsc, offset;
for(var i = 0; i < b.length; i += width) {
 lineHex = ''; lineAsc = '';
 for(var j = 0; j < width && j + i < b.length; j++) {
   hexStr = b[i + j].toString(16);
   if (hexStr.length % 2) {
     hexStr = '0' + hexStr;
   }
   lineHex += hexStr + ' ';
   if (b[i + j] >= 32 && b[i + j] <= 126) {
     lineAsc += String.fromCharCode(b[i + j]);
   } else {
     lineAsc += '.';
   }
 }
 for(var z = 0; z < width - j; z++) {
   lineHex += ' ';
 }
 offset = i.toString(16);
 if (offset.length % 2) {
   offset = '0' + offset;
 }
 content += offset + ': ' + lineHex + lineAsc + '\n';
}