summaryrefslogtreecommitdiff
path: root/src/types.ts
diff options
context:
space:
mode:
authorLi Zhineng <[email protected]>2025-07-19 15:35:02 +0800
committerLi Zhineng <[email protected]>2025-07-19 15:35:02 +0800
commite6279ae486eef2d549a4b5dd15e4e446d2180dc7 (patch)
treeb25897278de3685d79df0a0381ceba9ca23d1ef9 /src/types.ts
parent3cbee218d16e2c7c86d3c1433fde100246da0332 (diff)
downloadairmx-e6279ae486eef2d549a4b5dd15e4e446d2180dc7.tar.gz
airmx-e6279ae486eef2d549a4b5dd15e4e446d2180dc7.zip
give up monorepo
Diffstat (limited to 'src/types.ts')
-rw-r--r--src/types.ts117
1 files changed, 117 insertions, 0 deletions
diff --git a/src/types.ts b/src/types.ts
new file mode 100644
index 0000000..32ca95b
--- /dev/null
+++ b/src/types.ts
@@ -0,0 +1,117 @@
+import type { MqttClient } from 'mqtt'
+import type { EagleStatus } from './eagle.js'
+import type { SnowStatus } from './snow.js'
+
+export interface Config {
+ mqtt: MqttClient
+ devices: Device[]
+}
+
+export interface Device {
+ id: number
+ key: string
+}
+
+export type SnowListener = (status: SnowStatus) => void
+export type EagleListener = (status: EagleStatus) => void
+
+export enum MessageSource {
+ Snow = 1,
+ Eagle = 2,
+ App_iOS = 3,
+ App_Android = 4,
+}
+
+export interface Message<T> {
+ cmdId: number
+ name: string
+ time: number
+ from: MessageSource
+ data: T
+ sig: string
+}
+
+export enum Switch {
+ Off = 0,
+ On,
+}
+
+export enum EagleMode {
+ Manual = 0,
+ Ai,
+ Silent,
+ Turbo,
+}
+
+export interface EagleStatusData {
+ version: string
+ power: Switch
+ mode: EagleMode
+ status: number
+ denoise: Switch
+ heatStatus: Switch
+ cadr: number
+ prm: number
+ diffPressure1: number
+ diffPressure2: number
+ t0: number
+ g4Id: string
+ g4Percent: number
+ carbonId: string
+ carbonPercent: number
+ hepaId: string
+ hepaPercent: number
+}
+
+export enum SensorState {
+ Sampling = 'sampling',
+}
+
+export enum BatteryState {
+ Charging = 'charging',
+ Discharge = 'discharge',
+}
+
+export interface SnowStatusData {
+ battery: number
+ battery_state: BatteryState
+ co2: number
+ co2_state: SensorState
+ co2_time: number
+ h: number
+ humi_state: SensorState
+ oh: number
+ opm100: number
+ opm25: number
+ ot: number
+ pm100: number
+ pm25: number
+ pm250: number
+ pm50: number
+ pm_state: SensorState
+ pm_time: number
+ t: number
+ temp_state: SensorState
+ temp_unit: 'c'
+ time: number
+ tvoc: number
+ tvoc_duration: number
+ tvoc_state: SensorState
+ tvoc_time: number
+ tvoc_unit: 'ppb'
+ version: string
+ version_type: 'release'
+}
+
+export interface EagleControlData {
+ power: Switch
+ heatStatus: Switch
+ mode: EagleMode
+ cadr: number
+ denoise: Switch
+}
+
+export interface InstantPushData {
+ frequencyTime: number
+ durationTime: number
+}