Pixl.js Wireless Weather Station
In the Pixl.js Wireless Temperature Display example we used a Puck.js to transmit temperature information.
Here we're using the on-chip sensors from a Thingy:52 in a similar
way, but are packing more information in. The Thingys will advertise
as 'manufacturer data' with Espruino's own manufacturer code 0x590
.
Pixl.js then scans constantly for advertising packets and displays
the decoded data from any device it finds that advertises with the manufacturer
code 0x590
.
Note: Scanning all the time uses a lot of power, and isn't suitable for battery operated devices. If you need to run off a battery consider using a solution like Pixl.js Wireless Temperature Display which will only scan for a second once a minute.
Source Code
// -------------------------------------------------------------------
// Upload the following to a Thingy:52 and disconnect
// - advertising only starts once disconnected
var pressure= {};
function onInit() {
setTimeout(function() {
// save the latest pressure data
Thingy.onPressure(d=>pressure=d);
// When we get a gas reading, update the advertising
Thingy.onGas(function(data) {
var a = new Uint8Array(8);
var d = new DataView(a.buffer);
d.setUint16(0, data.eCO2);
d.setUint16(2, data.TVOC);
d.setUint16(4, pressure.pressure);
d.setUint16(6, pressure.temperature*100);
NRF.setAdvertising({},{manufacturer: 0x590, manufacturerData: a});
});
},1000);
}
onInit(); // remove this line if you're planning on saving to flash
// -------------------------------------------------------------------
// Upload the following to a Pixl.js
require("Font8x12").add(Graphics);
function updateDisplay(data) {
var d = new DataView(data);
var res = [
"eCO2 = " + d.getUint16(0),
"TVOC2 = " + d.getUint16(2),
"Pressure = " + d.getUint16(4),
"Temperature = " + d.getUint16(6)/100
];
g.clear();
g.setFont8x12();
g.drawString(res.join("\n"));
g.flip();
}
function onInit() {
NRF.setScan(function(dev) {
if (dev.manufacturer == 0x590)
updateDisplay(dev.manufacturerData);
});
}
onInit(); // remove this line if you're planning on saving to flash
This page is auto-generated from GitHub. If you see any mistakes or have suggestions, please let us know.