Skip to content

Commit

Permalink
feat/load-everest
Browse files Browse the repository at this point in the history
  • Loading branch information
RaresAil authored and RarDFS committed Apr 27, 2023
1 parent 207708a commit 505d8c3
Show file tree
Hide file tree
Showing 6 changed files with 78 additions and 17 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,6 @@ jobs:
[ -f .prerelease ] && cat .prerelease >> $GITHUB_ENV
echo "Tag check: $NPM_EX"
- name: Publish
run: npm publish
run: npm publish ${{ env.NPM_EX }}
env:
NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"displayName": "Levoit Air Purifier",
"main": "dist/index.js",
"license": "Apache-2.0",
"version": "1.2.3",
"version": "1.2.3-rc1.everest",
"private": false,
"bugs": {
"url": "https://github.com/RaresAil/homebridge-levoit-air-purifier/issues"
Expand Down
31 changes: 23 additions & 8 deletions src/api/VeSync.ts
Original file line number Diff line number Diff line change
Expand Up @@ -312,14 +312,29 @@ export default class VeSync {
JSON.stringify(list)
);

const devices = list
.filter(
({ deviceType, type, extension }) =>
!!deviceTypes.find(({ isValid }) => isValid(deviceType)) &&
type === 'wifi-air' &&
!!extension?.fanSpeedLevel
)
.map(VeSyncFan.fromResponse(this));
const parseDevices = (acc, device) => {
const { deviceType, type, extension, deviceProp } = device;

const deviceTypeInfo = deviceTypes.find(({ isValid }) =>
isValid(deviceType)
);

if (!deviceType || type !== 'wifi-air') {
return acc;
}

if (extension?.fanSpeedLevel) {
return [...acc, VeSyncFan.fromResponse(this)(device)];
}

if (deviceTypeInfo?.isEverest && deviceProp) {
return [...acc, VeSyncFan.fromResponseEverest(this)(device)];
}

return acc;
};

const devices = list.reduce(parseDevices, []);

await delay(1500);

Expand Down
27 changes: 27 additions & 0 deletions src/api/VeSyncFan.ts
Original file line number Diff line number Diff line change
Expand Up @@ -200,4 +200,31 @@ export default class VeSyncFan {
deviceType,
macID
);

public static fromResponseEverest =
(client: VeSync) =>
({
deviceProp: { powerSwitch, AQLevel, fanSpeedLevel, workMode },
deviceName,
uuid,
configModule,
cid,
deviceRegion,
deviceType,
macID
}) =>
new VeSyncFan(
client,
deviceName,
workMode,
fanSpeedLevel ?? 0,
uuid,
powerSwitch === 1,
AQLevel,
configModule,
cid,
deviceRegion,
deviceType,
macID
);
}
17 changes: 16 additions & 1 deletion src/api/deviceTypes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@ export enum DeviceName {
Core301S = '301S',
Core300S = '300S',
Core201S = '201S',
Core200S = '200S'
Core200S = '200S',
Everest = '551S'
}

export interface DeviceType {
Expand All @@ -18,6 +19,8 @@ export interface DeviceType {
speedMinStep: number;
speedLevels: number; // With night mode
hasPM25: boolean;

isEverest: boolean;
}

const deviceTypes: DeviceType[] = [
Expand All @@ -30,6 +33,7 @@ const deviceTypes: DeviceType[] = [
input.includes(DeviceName.Core400S),
hasAirQuality: true,
hasAutoMode: true,
isEverest: false,
speedMinStep: 20,
speedLevels: 5,
hasPM25: true
Expand All @@ -41,6 +45,7 @@ const deviceTypes: DeviceType[] = [
input.includes(DeviceName.Core300S),
hasAirQuality: true,
hasAutoMode: true,
isEverest: false,
speedMinStep: 25,
speedLevels: 4,
hasPM25: true
Expand All @@ -51,6 +56,16 @@ const deviceTypes: DeviceType[] = [
input.includes(DeviceName.Core200S),
hasAirQuality: false,
hasAutoMode: false,
isEverest: false,
speedMinStep: 25,
speedLevels: 4,
hasPM25: false
},
{
isValid: (input: string) => input.includes(DeviceName.Everest),
hasAirQuality: false,
hasAutoMode: false,
isEverest: true,
speedMinStep: 25,
speedLevels: 4,
hasPM25: false
Expand Down
16 changes: 10 additions & 6 deletions version-check.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
const fs = require('fs');
const package = require('./package.json');
const fs = require("fs");
const package = require("./package.json");

console.log('Version: %o', package.version);
console.log("Version: %o", package.version);

if (package.version.includes('-rc')) {
fs.writeFileSync('.prerelease', 'NPM_EX="--tag prerelease"', 'utf8');
}
if (package.version.includes("-rc")) {
const name = package.version
.split("-rc")[1]
.slice(package.version.indexOf(".") + 1, package.version.length);

fs.writeFileSync(".prerelease", `NPM_EX="--tag prerelease-${name}"`, "utf8");
}

0 comments on commit 505d8c3

Please sign in to comment.