summaryrefslogtreecommitdiff
path: root/src/types.ts
blob: 32ca95bc9ec15377524d8ce8b0c3125b57d1f100 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
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
}