homebridge-purpleair-sensor
Version:
Monitor air quality using PurpleAir.
163 lines • 7.71 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const SensorReading_1 = require("./SensorReading");
const test_indoor_with_voc_json_1 = __importDefault(require("./test-indoor-with-voc.json"));
const test_indoor_without_voc_json_1 = __importDefault(require("./test-indoor-without-voc.json"));
const test_outdoor_json_1 = __importDefault(require("./test-outdoor.json"));
const test_62393_json_1 = __importDefault(require("./test-62393.json"));
const test_67533_json_1 = __importDefault(require("./test-67533.json"));
const test_68495_json_1 = __importDefault(require("./test-68495.json"));
const test_local_inside_json_1 = __importDefault(require("./test-local-inside.json"));
const test_local_outside_json_1 = __importDefault(require("./test-local-outside.json"));
test('indoor sensor with VOC', () => {
const reading = (0, SensorReading_1.parsePurpleAirJson)(test_indoor_with_voc_json_1.default);
expect(reading.pm25).toBe(10.7);
expect(reading.voc).toBe(81.0);
});
test('indoor sensor without VOC', () => {
const reading = (0, SensorReading_1.parsePurpleAirJson)(test_indoor_without_voc_json_1.default);
expect(reading.pm25).toBe(10.7);
expect(reading.voc).toBe(null);
});
test('outdoor sensor', () => {
const reading = (0, SensorReading_1.parsePurpleAirJson)(test_outdoor_json_1.default);
expect(reading.pm25).toBe(9.7);
expect(reading.voc).toBe(110.6);
});
test('10m averages', () => {
const reading = (0, SensorReading_1.parsePurpleAirJson)(test_indoor_with_voc_json_1.default, '10m');
expect(reading.pm25).toBe(11.1);
});
test('30m averages', () => {
const reading = (0, SensorReading_1.parsePurpleAirJson)(test_indoor_with_voc_json_1.default, '30m');
expect(reading.pm25).toBe(13.0);
});
test('60m averages', () => {
const reading = (0, SensorReading_1.parsePurpleAirJson)(test_indoor_with_voc_json_1.default, '60m');
expect(reading.pm25).toBe(15.0);
});
test('default to no conversion', () => {
const reading = (0, SensorReading_1.parsePurpleAirJson)(test_indoor_with_voc_json_1.default);
expect(Math.round(reading.aqi)).toBe(45);
});
test('AQI excellent', () => {
const reading = new SensorReading_1.SensorReading('1234', 6.86, NaN, NaN, NaN, NaN, 'None', NaN);
expect(Math.round(reading.aqi)).toBe(29);
expect(reading.airQualityHomekitReading).toBe(1);
});
test('AQI good', () => {
const reading = new SensorReading_1.SensorReading('1234', 13.1, NaN, NaN, NaN, NaN, 'None', NaN);
expect(Math.round(reading.aqi)).toBe(53);
expect(reading.airQualityHomekitReading).toBe(2);
});
test('AQI fair', () => {
const reading = new SensorReading_1.SensorReading('1234', 35.9, NaN, NaN, NaN, NaN, 'None', NaN);
expect(Math.round(reading.aqi)).toBe(102);
expect(reading.airQualityHomekitReading).toBe(3);
});
test('AQI inferior', () => {
const reading = new SensorReading_1.SensorReading('1234', 65.1, NaN, NaN, NaN, NaN, 'None', NaN);
expect(Math.round(reading.aqi)).toBe(156);
expect(reading.airQualityHomekitReading).toBe(4);
});
test('AQI poor', () => {
const reading = new SensorReading_1.SensorReading('1234', 154.5, NaN, NaN, NaN, NaN, 'None', NaN);
expect(Math.round(reading.aqi)).toBe(205);
expect(reading.airQualityHomekitReading).toBe(5);
});
test('AQandU excellent', () => {
const reading = new SensorReading_1.SensorReading('1234', 6.86, NaN, NaN, NaN, NaN, 'AQandU', NaN);
expect(Math.round(reading.aqi)).toBe(33);
expect(reading.airQualityHomekitReading).toBe(1);
});
test('AQandU good', () => {
const reading = new SensorReading_1.SensorReading('1234', 13.1, NaN, NaN, NaN, NaN, 'AQandU', NaN);
expect(Math.round(reading.aqi)).toBe(53);
expect(reading.airQualityHomekitReading).toBe(2);
});
test('AQandU good 2', () => {
const reading = new SensorReading_1.SensorReading('1234', 35.9, NaN, NaN, NaN, NaN, 'AQandU', NaN);
expect(Math.round(reading.aqi)).toBe(90);
expect(reading.airQualityHomekitReading).toBe(2);
});
test('AQandU fair', () => {
const reading = new SensorReading_1.SensorReading('1234', 65.1, NaN, NaN, NaN, NaN, 'AQandU', NaN);
expect(Math.round(reading.aqi)).toBe(145);
expect(reading.airQualityHomekitReading).toBe(3);
});
test('AQandU inferior', () => {
const reading = new SensorReading_1.SensorReading('1234', 154.5, NaN, NaN, NaN, NaN, 'AQandU', NaN);
expect(Math.round(reading.aqi)).toBe(186);
expect(reading.airQualityHomekitReading).toBe(4);
});
test('AQandU poor', () => {
const reading = new SensorReading_1.SensorReading('1234', 200.5, NaN, NaN, NaN, NaN, 'AQandU', NaN);
expect(Math.round(reading.aqi)).toBe(209);
expect(reading.airQualityHomekitReading).toBe(5);
});
test('Nearby 36 None', () => {
const reading = (0, SensorReading_1.parsePurpleAirJson)(test_62393_json_1.default, 'realtime', 'None');
expect(reading.pm25).toBe(8.7);
expect(reading.aqi).toBe(36);
expect(reading.airQualityHomekitReading).toBe(1);
});
test('Nearby 158 AQandU', () => {
const reading = (0, SensorReading_1.parsePurpleAirJson)(test_62393_json_1.default, 'realtime', 'AQandU');
expect(reading.pm25).toBe(8.7);
expect(reading.aqi).toBe(39);
expect(reading.airQualityHomekitReading).toBe(1);
});
test('Nearby 156 LRAPA', () => {
const reading = (0, SensorReading_1.parsePurpleAirJson)(test_62393_json_1.default, 'realtime', 'LRAPA');
expect(reading.pm25).toBe(8.7);
expect(reading.aqi).toBe(15);
expect(reading.airQualityHomekitReading).toBe(1);
});
test('Nearby 90 None', () => {
const reading = (0, SensorReading_1.parsePurpleAirJson)(test_67533_json_1.default, 'realtime', 'None');
expect(reading.pm25).toBe(3.3);
expect(reading.aqi).toBe(14);
expect(reading.airQualityHomekitReading).toBe(1);
});
test('Nearby 81 EPA', () => {
const reading = (0, SensorReading_1.parsePurpleAirJson)(test_67533_json_1.default, 'realtime', 'AQandU');
expect(reading.pm25).toBe(3.3);
expect(reading.aqi).toBe(22);
expect(reading.airQualityHomekitReading).toBe(1);
});
test('Nearby 81 AQandU', () => {
const reading = (0, SensorReading_1.parsePurpleAirJson)(test_67533_json_1.default, 'realtime', 'AQandU');
expect(reading.pm25).toBe(3.3);
expect(reading.aqi).toBe(22);
expect(reading.airQualityHomekitReading).toBe(1);
});
test('Nearby 58 LRAPA', () => {
const reading = (0, SensorReading_1.parsePurpleAirJson)(test_67533_json_1.default, 'realtime', 'LRAPA');
expect(reading.pm25).toBe(3.3);
expect(reading.aqi).toBe(4);
expect(reading.airQualityHomekitReading).toBe(1);
});
test('Nearby 25 Woodsmoke', () => {
const reading = (0, SensorReading_1.parsePurpleAirJson)(test_68495_json_1.default, 'realtime', 'WOODSMOKE');
expect(reading.pm25).toBe(2.2);
expect(reading.aqi).toBe(7);
});
test('Nearby 29 EPA', () => {
const reading = (0, SensorReading_1.parsePurpleAirJson)(test_68495_json_1.default, 'realtime', 'EPA');
expect(reading.pm25).toBe(2.2);
expect(reading.aqi).toBe(12);
});
test('local inside sensor', () => {
const reading = (0, SensorReading_1.parsePurpleAirJson)(test_local_inside_json_1.default, 'realtime', 'None', true);
expect(reading.aqi).toBe(28);
expect(reading.pm25).toBe(6.67);
});
test('local outside sensor', () => {
const reading = (0, SensorReading_1.parsePurpleAirJson)(test_local_outside_json_1.default, 'realtime', 'None', true);
expect(reading.aqi).toBe(9);
expect(reading.pm25).toBe(2.16);
});
//# sourceMappingURL=SensorReading.test.js.map