mclimate-payload-helper 1.0.12 → 1.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/decoders/payloadParsers/CO2DisplayLitePayloadParser.d.ts.map +1 -1
- package/dist/decoders/payloadParsers/CO2DisplayLitePayloadParser.js +21 -18
- package/dist/decoders/payloadParsers/CO2DisplayLitePayloadParser.js.map +1 -1
- package/dist/decoders/payloadParsers/CO2DisplayPayloadParser.js +1 -1
- package/dist/decoders/payloadParsers/CO2DisplayPayloadParser.js.map +1 -1
- package/dist/decoders/payloadParsers/WirelessThermostatPayloadParser.js +2 -2
- package/dist/decoders/payloadParsers/WirelessThermostatPayloadParser.js.map +1 -1
- package/dist/types/deviceTypes.d.ts +19 -0
- package/dist/types/deviceTypes.d.ts.map +1 -0
- package/dist/types/deviceTypes.js +23 -0
- package/dist/types/deviceTypes.js.map +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +18 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/types.d.ts +13 -0
- package/dist/types/types.d.ts.map +1 -0
- package/dist/types/types.js +9 -0
- package/dist/types/types.js.map +1 -0
- package/dist/validation.d.ts +3 -0
- package/dist/validation.d.ts.map +1 -0
- package/dist/validation.js +8 -0
- package/dist/validation.js.map +1 -0
- package/package.json +1 -1
- package/src/decoders/payloadParsers/CO2DisplayLitePayloadParser.ts +25 -18
- package/src/decoders/payloadParsers/CO2DisplayPayloadParser.ts +1 -1
- package/src/decoders/payloadParsers/WirelessThermostatPayloadParser.ts +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CO2DisplayLitePayloadParser.d.ts","sourceRoot":"","sources":["../../../src/decoders/payloadParsers/CO2DisplayLitePayloadParser.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,2BAA2B,YAAa,MAAM,
|
|
1
|
+
{"version":3,"file":"CO2DisplayLitePayloadParser.d.ts","sourceRoot":"","sources":["../../../src/decoders/payloadParsers/CO2DisplayLitePayloadParser.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,2BAA2B,YAAa,MAAM,mBAiF1D,CAAA"}
|
|
@@ -11,29 +11,32 @@ const CO2DisplayLitePayloadParser = (hexData) => {
|
|
|
11
11
|
const calculateTemperature = (rawData) => (rawData - 400) / 10;
|
|
12
12
|
const calculateHumidity = (rawData) => (rawData * 100) / 256;
|
|
13
13
|
const handleKeepAliveData = (data) => {
|
|
14
|
-
|
|
15
|
-
let
|
|
16
|
-
let
|
|
17
|
-
|
|
18
|
-
let
|
|
19
|
-
|
|
20
|
-
let
|
|
21
|
-
let batteryVoltage = Number(
|
|
22
|
-
|
|
23
|
-
let
|
|
24
|
-
|
|
25
|
-
let
|
|
26
|
-
|
|
27
|
-
let
|
|
28
|
-
|
|
29
|
-
|
|
14
|
+
// Temperature calculation from two data
|
|
15
|
+
let temperatureRaw = (data[1] << 8) | data[2]; // Shift byte[1] left by 8 bits and OR with byte[2]
|
|
16
|
+
let sensorTemperature = Number(calculateTemperature(temperatureRaw).toFixed(2));
|
|
17
|
+
// Humidity calculation
|
|
18
|
+
let relativeHumidity = Number(calculateHumidity(data[3]).toFixed(2));
|
|
19
|
+
// Battery voltage calculation from two data
|
|
20
|
+
let batteryVoltageRaw = (data[4] << 8) | data[5];
|
|
21
|
+
let batteryVoltage = Number((batteryVoltageRaw / 1000).toFixed(2));
|
|
22
|
+
// CO2 calculation from data 6 and 7
|
|
23
|
+
let co2Low = data[6]; // Lower byte of CO2
|
|
24
|
+
let co2High = (data[7] & 0xf8) >> 3; // Mask the upper 5 bits and shift them right
|
|
25
|
+
let CO2 = (co2High << 8) | co2Low; // Shift co2High left by 8 bits and combine with co2Low
|
|
26
|
+
// Power source status
|
|
27
|
+
let powerSourceStatus = data[7] & 0x07; // Extract the last 3 bits directly
|
|
28
|
+
// Light intensity from two data
|
|
29
|
+
let lightIntensityRaw = (data[8] << 8) | data[9];
|
|
30
|
+
let lux = lightIntensityRaw;
|
|
31
|
+
let keepAliveData = {
|
|
30
32
|
sensorTemperature,
|
|
31
33
|
relativeHumidity,
|
|
32
34
|
batteryVoltage,
|
|
33
|
-
|
|
35
|
+
CO2,
|
|
36
|
+
powerSourceStatus,
|
|
34
37
|
lux,
|
|
35
38
|
};
|
|
36
|
-
Object.assign(deviceData, Object.assign({}, deviceData), Object.assign({},
|
|
39
|
+
Object.assign(deviceData, Object.assign({}, deviceData), Object.assign({}, keepAliveData));
|
|
37
40
|
};
|
|
38
41
|
if (hexData) {
|
|
39
42
|
let byteArray = (0, helpers_1.byteArrayParser)(hexData);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CO2DisplayLitePayloadParser.js","sourceRoot":"","sources":["../../../src/decoders/payloadParsers/CO2DisplayLitePayloadParser.ts"],"names":[],"mappings":";;;AAAA,0CAAmD;AACnD,2DAA4D;AAC5D,uCAAmD;AACnD,mCAAqC;AAE9B,MAAM,2BAA2B,GAAG,CAAC,OAAe,EAAE,EAAE;IAC9D,IAAI,UAAU,GAAG,EAAE,CAAA;IAEnB,IAAI,CAAC;QACJ,MAAM,oBAAoB,GAAG,CAAC,OAAe,EAAE,EAAE,CAAC,CAAC,OAAO,GAAG,GAAG,CAAC,GAAG,EAAE,CAAA;QACtE,MAAM,iBAAiB,GAAG,CAAC,OAAe,EAAE,EAAE,CAAC,CAAC,OAAO,GAAG,GAAG,CAAC,GAAG,GAAG,CAAA;QAEpE,MAAM,mBAAmB,GAAG,CAAC,IAAc,EAAE,EAAE;YAC9C,IAAI,
|
|
1
|
+
{"version":3,"file":"CO2DisplayLitePayloadParser.js","sourceRoot":"","sources":["../../../src/decoders/payloadParsers/CO2DisplayLitePayloadParser.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,7 +24,7 @@ const CO2DisplayPayloadParser = (hexData) => {
|
|
|
24
24
|
ppmBin = `${ppmBin2.slice(0, 5)}${ppmBin}`;
|
|
25
25
|
let ppm = parseInt(ppmBin, 2);
|
|
26
26
|
let powerSourceStatus = ppmBin2.slice(5, 8);
|
|
27
|
-
let lux =
|
|
27
|
+
let lux = (data[8] << 8) | data[9];
|
|
28
28
|
let pir = (0, helpers_1.toBool)(data[10]);
|
|
29
29
|
let keepaliveData = {
|
|
30
30
|
CO2: ppm,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CO2DisplayPayloadParser.js","sourceRoot":"","sources":["../../../src/decoders/payloadParsers/CO2DisplayPayloadParser.ts"],"names":[],"mappings":";;;AAAA,yCAAkD;AAClD,2DAA4D;AAC5D,uCAA2D;AAC3D,mCAAqC;AAE9B,MAAM,uBAAuB,GAAG,CAAC,OAAe,EAAE,EAAE;IAC1D,IAAI,UAAU,GAAG,EAAE,CAAA;IAEnB,IAAI,CAAC;QACJ,MAAM,oBAAoB,GAAG,CAAC,OAAe,EAAE,EAAE,CAAC,CAAC,OAAO,GAAG,GAAG,CAAC,GAAG,EAAE,CAAA;QACtE,MAAM,iBAAiB,GAAG,CAAC,OAAe,EAAE,EAAE,CAAC,CAAC,OAAO,GAAG,GAAG,CAAC,GAAG,GAAG,CAAA;QAEpE,MAAM,mBAAmB,GAAG,CAAC,IAAc,EAAE,EAAE;YAC9C,IAAI,OAAO,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;YAC/F,IAAI,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;YACnC,IAAI,WAAW,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAA;YAC/C,IAAI,QAAQ,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;YACzC,IAAI,wBAAwB,GAAG,QAAQ,CAAC,GAAG,IAAA,gBAAM,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAA,gBAAM,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAA;YACzF,IAAI,iBAAiB,GAAG,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;YACtD,IAAI,gBAAgB,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;YAClD,IAAI,cAAc,GAAG,MAAM,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;YAEhE,IAAI,MAAM,GAAG,IAAA,gBAAM,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;YAC5B,IAAI,OAAO,GAAG,IAAA,gBAAM,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;YAC7B,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,EAAE,CAAA;YAC1C,IAAI,GAAG,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;YAC7B,IAAI,iBAAiB,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YAC3C,IAAI,GAAG,GAAG,
|
|
1
|
+
{"version":3,"file":"CO2DisplayPayloadParser.js","sourceRoot":"","sources":["../../../src/decoders/payloadParsers/CO2DisplayPayloadParser.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,13 +24,13 @@ const WirelessThermostatPayloadParser = (hexData) => {
|
|
|
24
24
|
if (data[0] == 1) {
|
|
25
25
|
targetTemperature = data[6];
|
|
26
26
|
powerSourceStatus = data[7];
|
|
27
|
-
lux =
|
|
27
|
+
lux = (data[8] << 8) | data[9];
|
|
28
28
|
pir = (0, helpers_1.toBool)(data[10]);
|
|
29
29
|
}
|
|
30
30
|
else {
|
|
31
31
|
targetTemperature = parseInt(`${(0, helpers_1.decbin)(data[6])}${(0, helpers_1.decbin)(data[7])}`, 2) / 10;
|
|
32
32
|
powerSourceStatus = data[8];
|
|
33
|
-
lux =
|
|
33
|
+
lux = (data[9] << 8) | data[10];
|
|
34
34
|
pir = (0, helpers_1.toBool)(data[11]);
|
|
35
35
|
}
|
|
36
36
|
const keepaliveData = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WirelessThermostatPayloadParser.js","sourceRoot":"","sources":["../../../src/decoders/payloadParsers/WirelessThermostatPayloadParser.ts"],"names":[],"mappings":";;;AAAA,4EAAwE;AACxE,2DAA4D;AAC5D,uCAA2D;AAC3D,mCAAqC;AAE9B,MAAM,+BAA+B,GAAG,CAAC,OAAe,EAAE,EAAE;;IAClE,IAAI,UAAU,GAAG,EAAE,CAAA;IAEnB,IAAI,CAAC;QACJ,MAAM,oBAAoB,GAAG,CAAC,OAAe,EAAE,EAAE,CAAC,CAAC,OAAO,GAAG,GAAG,CAAC,GAAG,EAAE,CAAA;QACtE,MAAM,iBAAiB,GAAG,CAAC,OAAe,EAAE,EAAE,CAAC,CAAC,OAAO,GAAG,GAAG,CAAC,GAAG,GAAG,CAAA;QAEpE,MAAM,mBAAmB,GAAG,CAAC,IAAc,EAAE,EAAE;YAC9C,IAAI,OAAO,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;YAC/F,IAAI,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;YACnC,IAAI,WAAW,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAA;YAC/C,IAAI,QAAQ,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;YACzC,IAAI,wBAAwB,GAAG,QAAQ,CAAC,GAAG,IAAA,gBAAM,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAA,gBAAM,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAA;YACzF,IAAI,iBAAiB,GAAG,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;YACtD,IAAI,gBAAgB,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;YAClD,IAAI,cAAc,GAAG,MAAM,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;YAEhE,IAAI,iBAAiB,EAAE,iBAAiB,EAAE,GAAG,EAAE,GAAG,CAAA;YAClD,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;gBAClB,iBAAiB,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;gBAC3B,iBAAiB,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;gBAC3B,GAAG,GAAG,
|
|
1
|
+
{"version":3,"file":"WirelessThermostatPayloadParser.js","sourceRoot":"","sources":["../../../src/decoders/payloadParsers/WirelessThermostatPayloadParser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export declare enum DeviceType {
|
|
2
|
+
Vicki = "vicki",
|
|
3
|
+
HTSensor = "ht_sensor",
|
|
4
|
+
TFlood = "t_flood",
|
|
5
|
+
AQISensor = "aqi_sensor",
|
|
6
|
+
TValve = "t_valve",
|
|
7
|
+
CO2Sensor = "co2_sensor",
|
|
8
|
+
Thermostat = "thermostat",
|
|
9
|
+
MCButton = "mc_button",
|
|
10
|
+
OpenCloseSensor = "open_close_sensor",
|
|
11
|
+
DskDevice = "dsk_device",
|
|
12
|
+
WirelessThermostat = "wireless_thermostat",
|
|
13
|
+
CO2Display = "co2_display",
|
|
14
|
+
FanCoilThermostat = "fan_coil_thermostat",
|
|
15
|
+
CO2DisplayLite = "co2_display_lite",
|
|
16
|
+
HTDisplayLite = "ht_display_lite",
|
|
17
|
+
Relay16 = "relay_16"
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=deviceTypes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deviceTypes.d.ts","sourceRoot":"","sources":["../../src/types/deviceTypes.ts"],"names":[],"mappings":"AAAA,oBAAY,UAAU;IACrB,KAAK,UAAU;IACf,QAAQ,cAAc;IACtB,MAAM,YAAY;IAClB,SAAS,eAAe;IACxB,MAAM,YAAY;IAClB,SAAS,eAAe;IACxB,UAAU,eAAe;IACzB,QAAQ,cAAc;IACtB,eAAe,sBAAsB;IACrC,SAAS,eAAe;IACxB,kBAAkB,wBAAwB;IAC1C,UAAU,gBAAgB;IAC1B,iBAAiB,wBAAwB;IACzC,cAAc,qBAAqB;IACnC,aAAa,oBAAoB;IACjC,OAAO,aAAa;CACpB"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DeviceType = void 0;
|
|
4
|
+
var DeviceType;
|
|
5
|
+
(function (DeviceType) {
|
|
6
|
+
DeviceType["Vicki"] = "vicki";
|
|
7
|
+
DeviceType["HTSensor"] = "ht_sensor";
|
|
8
|
+
DeviceType["TFlood"] = "t_flood";
|
|
9
|
+
DeviceType["AQISensor"] = "aqi_sensor";
|
|
10
|
+
DeviceType["TValve"] = "t_valve";
|
|
11
|
+
DeviceType["CO2Sensor"] = "co2_sensor";
|
|
12
|
+
DeviceType["Thermostat"] = "thermostat";
|
|
13
|
+
DeviceType["MCButton"] = "mc_button";
|
|
14
|
+
DeviceType["OpenCloseSensor"] = "open_close_sensor";
|
|
15
|
+
DeviceType["DskDevice"] = "dsk_device";
|
|
16
|
+
DeviceType["WirelessThermostat"] = "wireless_thermostat";
|
|
17
|
+
DeviceType["CO2Display"] = "co2_display";
|
|
18
|
+
DeviceType["FanCoilThermostat"] = "fan_coil_thermostat";
|
|
19
|
+
DeviceType["CO2DisplayLite"] = "co2_display_lite";
|
|
20
|
+
DeviceType["HTDisplayLite"] = "ht_display_lite";
|
|
21
|
+
DeviceType["Relay16"] = "relay_16";
|
|
22
|
+
})(DeviceType || (exports.DeviceType = DeviceType = {}));
|
|
23
|
+
//# sourceMappingURL=deviceTypes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deviceTypes.js","sourceRoot":"","sources":["../../src/types/deviceTypes.ts"],"names":[],"mappings":";;;AAAA,IAAY,UAiBX;AAjBD,WAAY,UAAU;IACrB,6BAAe,CAAA;IACf,oCAAsB,CAAA;IACtB,gCAAkB,CAAA;IAClB,sCAAwB,CAAA;IACxB,gCAAkB,CAAA;IAClB,sCAAwB,CAAA;IACxB,uCAAyB,CAAA;IACzB,oCAAsB,CAAA;IACtB,mDAAqC,CAAA;IACrC,sCAAwB,CAAA;IACxB,wDAA0C,CAAA;IAC1C,wCAA0B,CAAA;IAC1B,uDAAyC,CAAA;IACzC,iDAAmC,CAAA;IACnC,+CAAiC,CAAA;IACjC,kCAAoB,CAAA;AACrB,CAAC,EAjBW,UAAU,0BAAV,UAAU,QAiBrB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./deviceTypes"), exports);
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA6B"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const userSchema: z.ZodObject<{
|
|
3
|
+
name: z.ZodString;
|
|
4
|
+
age: z.ZodNumber;
|
|
5
|
+
}, "strip", z.ZodTypeAny, {
|
|
6
|
+
name: string;
|
|
7
|
+
age: number;
|
|
8
|
+
}, {
|
|
9
|
+
name: string;
|
|
10
|
+
age: number;
|
|
11
|
+
}>;
|
|
12
|
+
export type UserType = z.infer<typeof userSchema>;
|
|
13
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,eAAO,MAAM,UAAU;;;;;;;;;EAGrB,CAAA;AAEF,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.userSchema = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
exports.userSchema = zod_1.z.object({
|
|
6
|
+
name: zod_1.z.string(),
|
|
7
|
+
age: zod_1.z.number().min(18),
|
|
8
|
+
});
|
|
9
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types/types.ts"],"names":[],"mappings":";;;AAAA,6BAAuB;AAEV,QAAA,UAAU,GAAG,OAAC,CAAC,MAAM,CAAC;IAClC,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE;IAChB,GAAG,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;CACvB,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,QAAQ,EAAE,MAAM,SAAS,CAAA;AAE9C,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,CAEpD"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validateUser = validateUser;
|
|
4
|
+
const types_1 = require("./types");
|
|
5
|
+
function validateUser(data) {
|
|
6
|
+
return types_1.userSchema.parse(data);
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":";;AAEA,oCAEC;AAJD,mCAA8C;AAE9C,SAAgB,YAAY,CAAC,IAAa;IACzC,OAAO,kBAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;AAC9B,CAAC"}
|
package/package.json
CHANGED
|
@@ -11,32 +11,39 @@ export const CO2DisplayLitePayloadParser = (hexData: string) => {
|
|
|
11
11
|
const calculateHumidity = (rawData: number) => (rawData * 100) / 256
|
|
12
12
|
|
|
13
13
|
const handleKeepAliveData = (data: number[]) => {
|
|
14
|
-
|
|
15
|
-
let
|
|
16
|
-
let
|
|
17
|
-
let humidity = calculateHumidity(data[3])
|
|
18
|
-
let batteryVoltageCalculated = parseInt(`${decbin(data[4])}${decbin(data[5])}`, 2) / 1000
|
|
19
|
-
let sensorTemperature = Number(temperature.toFixed(2))
|
|
20
|
-
let relativeHumidity = Number(humidity.toFixed(2))
|
|
21
|
-
let batteryVoltage = Number(batteryVoltageCalculated.toFixed(2))
|
|
14
|
+
// Temperature calculation from two data
|
|
15
|
+
let temperatureRaw = (data[1] << 8) | data[2] // Shift byte[1] left by 8 bits and OR with byte[2]
|
|
16
|
+
let sensorTemperature = Number(calculateTemperature(temperatureRaw).toFixed(2))
|
|
22
17
|
|
|
23
|
-
|
|
24
|
-
let
|
|
25
|
-
ppmBin = `${ppmBin2.slice(0, 5)}${ppmBin}`
|
|
26
|
-
let ppm = parseInt(ppmBin, 2)
|
|
27
|
-
let powerSourceStatus = ppmBin2.slice(5, 8)
|
|
28
|
-
let lux = parseInt('0' + data[8].toString(16) + data[9].toString(16), 16)
|
|
18
|
+
// Humidity calculation
|
|
19
|
+
let relativeHumidity = Number(calculateHumidity(data[3]).toFixed(2))
|
|
29
20
|
|
|
30
|
-
|
|
31
|
-
|
|
21
|
+
// Battery voltage calculation from two data
|
|
22
|
+
let batteryVoltageRaw = (data[4] << 8) | data[5]
|
|
23
|
+
let batteryVoltage = Number((batteryVoltageRaw / 1000).toFixed(2))
|
|
24
|
+
|
|
25
|
+
// CO2 calculation from data 6 and 7
|
|
26
|
+
let co2Low = data[6] // Lower byte of CO2
|
|
27
|
+
let co2High = (data[7] & 0xf8) >> 3 // Mask the upper 5 bits and shift them right
|
|
28
|
+
let CO2 = (co2High << 8) | co2Low // Shift co2High left by 8 bits and combine with co2Low
|
|
29
|
+
|
|
30
|
+
// Power source status
|
|
31
|
+
let powerSourceStatus = data[7] & 0x07 // Extract the last 3 bits directly
|
|
32
|
+
|
|
33
|
+
// Light intensity from two data
|
|
34
|
+
let lightIntensityRaw = (data[8] << 8) | data[9]
|
|
35
|
+
let lux = lightIntensityRaw
|
|
36
|
+
|
|
37
|
+
let keepAliveData = {
|
|
32
38
|
sensorTemperature,
|
|
33
39
|
relativeHumidity,
|
|
34
40
|
batteryVoltage,
|
|
35
|
-
|
|
41
|
+
CO2,
|
|
42
|
+
powerSourceStatus,
|
|
36
43
|
lux,
|
|
37
44
|
}
|
|
38
45
|
|
|
39
|
-
Object.assign(deviceData, { ...deviceData }, { ...
|
|
46
|
+
Object.assign(deviceData, { ...deviceData }, { ...keepAliveData })
|
|
40
47
|
}
|
|
41
48
|
|
|
42
49
|
if (hexData) {
|
|
@@ -25,7 +25,7 @@ export const CO2DisplayPayloadParser = (hexData: string) => {
|
|
|
25
25
|
ppmBin = `${ppmBin2.slice(0, 5)}${ppmBin}`
|
|
26
26
|
let ppm = parseInt(ppmBin, 2)
|
|
27
27
|
let powerSourceStatus = ppmBin2.slice(5, 8)
|
|
28
|
-
let lux =
|
|
28
|
+
let lux = (data[8] << 8) | data[9]
|
|
29
29
|
let pir = toBool(data[10])
|
|
30
30
|
|
|
31
31
|
let keepaliveData = {
|
|
@@ -24,12 +24,12 @@ export const WirelessThermostatPayloadParser = (hexData: string) => {
|
|
|
24
24
|
if (data[0] == 1) {
|
|
25
25
|
targetTemperature = data[6]
|
|
26
26
|
powerSourceStatus = data[7]
|
|
27
|
-
lux =
|
|
27
|
+
lux = (data[8] << 8) | data[9]
|
|
28
28
|
pir = toBool(data[10])
|
|
29
29
|
} else {
|
|
30
30
|
targetTemperature = parseInt(`${decbin(data[6])}${decbin(data[7])}`, 2) / 10
|
|
31
31
|
powerSourceStatus = data[8]
|
|
32
|
-
lux =
|
|
32
|
+
lux = (data[9] << 8) | data[10]
|
|
33
33
|
pir = toBool(data[11])
|
|
34
34
|
}
|
|
35
35
|
const keepaliveData = {
|