@homebridge-plugins/homebridge-meross 10.9.0 → 10.10.0
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/CHANGELOG.md +14 -0
- package/lib/homebridge-ui/public/index.html +37 -1
- package/lib/utils/custom-chars.js +143 -117
- package/lib/utils/eve-chars.js +113 -97
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,20 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to homebridge-meross will be documented in this file.
|
|
4
4
|
|
|
5
|
+
## v10.10.0 (2025-07-13)
|
|
6
|
+
|
|
7
|
+
### Notable Changes
|
|
8
|
+
|
|
9
|
+
- fix custom plugin config modal styles in ui 5
|
|
10
|
+
- fix eve characteristics for hb 2
|
|
11
|
+
- fix custom characteristics for hb 2
|
|
12
|
+
|
|
13
|
+
### Other Changes
|
|
14
|
+
|
|
15
|
+
- fix plugin name in release workflow
|
|
16
|
+
- add permissions to workflows
|
|
17
|
+
- improvements to the deprecate workflow
|
|
18
|
+
|
|
5
19
|
## v10.9.0 (2025-07-12)
|
|
6
20
|
|
|
7
21
|
⚠️ This plugin no longer officially supports Node `v16` and `v18`, however there is no reason why it shouldn't work on these versions.
|
|
@@ -1,3 +1,39 @@
|
|
|
1
|
+
<style>
|
|
2
|
+
.dark-mode {
|
|
3
|
+
background-color: #242424;
|
|
4
|
+
color: lightgrey;
|
|
5
|
+
|
|
6
|
+
.form-control {
|
|
7
|
+
background-color: #333333 !important;
|
|
8
|
+
border: none !important;
|
|
9
|
+
color: #eeeeee !important;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
thead, tbody, tr {
|
|
13
|
+
border-style: hidden;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
th {
|
|
17
|
+
color: #eeeeee !important;
|
|
18
|
+
font-weight: 500 !important;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
select {
|
|
22
|
+
background-image:
|
|
23
|
+
linear-gradient(45deg, transparent 50%, gray 50%),
|
|
24
|
+
linear-gradient(135deg, gray 50%, transparent 50%),
|
|
25
|
+
linear-gradient(to right, #ccc, #ccc);
|
|
26
|
+
background-position:
|
|
27
|
+
calc(100% - 20px) calc(1em + 2px),
|
|
28
|
+
calc(100% - 15px) calc(1em + 2px),
|
|
29
|
+
calc(100% - 2.5em) 0.5em;
|
|
30
|
+
background-size:
|
|
31
|
+
5px 5px,
|
|
32
|
+
5px 5px,
|
|
33
|
+
1px 1.5em;
|
|
34
|
+
background-repeat: no-repeat;
|
|
35
|
+
}
|
|
36
|
+
</style>
|
|
1
37
|
<p class="text-center">
|
|
2
38
|
<img
|
|
3
39
|
src="https://user-images.githubusercontent.com/43026681/127397024-8b15fc07-f31b-44bd-89e3-51d738d2609a.png"
|
|
@@ -38,7 +74,7 @@
|
|
|
38
74
|
<select class="form-control" id="deviceSelect"></select>
|
|
39
75
|
</div>
|
|
40
76
|
</form>
|
|
41
|
-
<table class="table w-100" id="deviceTable" style="display: none;">
|
|
77
|
+
<table class="table w-100 mt-3" id="deviceTable" style="display: none;">
|
|
42
78
|
<thead>
|
|
43
79
|
<tr class="table-active">
|
|
44
80
|
<th scope="col" style="width: 40%;">Device Name</th>
|
|
@@ -1,9 +1,5 @@
|
|
|
1
|
-
import { inherits } from 'node:util'
|
|
2
|
-
|
|
3
1
|
export default class {
|
|
4
2
|
constructor(api) {
|
|
5
|
-
this.hapServ = api.hap.Service
|
|
6
|
-
this.hapChar = api.hap.Characteristic
|
|
7
3
|
this.uuids = {
|
|
8
4
|
diffColourMode: 'E962F001-079E-48FF-8F27-9C2605A29F52',
|
|
9
5
|
diffRainbowMode: 'E962F002-079E-48FF-8F27-9C2605A29F52',
|
|
@@ -20,133 +16,163 @@ export default class {
|
|
|
20
16
|
babySceneThree: 'E962F013-079E-48FF-8F27-9C2605A29F52',
|
|
21
17
|
babySceneFour: 'E962F014-079E-48FF-8F27-9C2605A29F52',
|
|
22
18
|
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
19
|
+
|
|
20
|
+
const uuids = this.uuids
|
|
21
|
+
|
|
22
|
+
this.DiffColourMode = class extends api.hap.Characteristic {
|
|
23
|
+
constructor() {
|
|
24
|
+
super('Colour Mode', uuids.diffColourMode)
|
|
25
|
+
this.setProps({
|
|
26
|
+
format: api.hap.Formats.BOOL,
|
|
27
|
+
perms: [api.hap.Perms.PAIRED_READ, api.hap.Perms.PAIRED_WRITE, api.hap.Perms.NOTIFY],
|
|
28
|
+
})
|
|
29
|
+
this.value = this.getDefaultValue()
|
|
30
|
+
}
|
|
31
31
|
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
32
|
+
|
|
33
|
+
this.DiffRainbowMode = class extends api.hap.Characteristic {
|
|
34
|
+
constructor() {
|
|
35
|
+
super('Rainbow Mode', uuids.diffRainbowMode)
|
|
36
|
+
this.setProps({
|
|
37
|
+
format: api.hap.Formats.BOOL,
|
|
38
|
+
perms: [api.hap.Perms.PAIRED_READ, api.hap.Perms.PAIRED_WRITE, api.hap.Perms.NOTIFY],
|
|
39
|
+
})
|
|
40
|
+
this.value = this.getDefaultValue()
|
|
41
|
+
}
|
|
39
42
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
43
|
+
|
|
44
|
+
this.DiffTemperatureMode = class extends api.hap.Characteristic {
|
|
45
|
+
constructor() {
|
|
46
|
+
super('Temperature Mode', uuids.diffTemperatureMode)
|
|
47
|
+
this.setProps({
|
|
48
|
+
format: api.hap.Formats.BOOL,
|
|
49
|
+
perms: [api.hap.Perms.PAIRED_READ, api.hap.Perms.PAIRED_WRITE, api.hap.Perms.NOTIFY],
|
|
50
|
+
})
|
|
51
|
+
this.value = this.getDefaultValue()
|
|
52
|
+
}
|
|
47
53
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
54
|
+
|
|
55
|
+
this.ValveHeatMode = class extends api.hap.Characteristic {
|
|
56
|
+
constructor() {
|
|
57
|
+
super('Heat Mode', uuids.valveHeatMode)
|
|
58
|
+
this.setProps({
|
|
59
|
+
format: api.hap.Formats.BOOL,
|
|
60
|
+
perms: [api.hap.Perms.PAIRED_READ, api.hap.Perms.PAIRED_WRITE, api.hap.Perms.NOTIFY],
|
|
61
|
+
})
|
|
62
|
+
this.value = this.getDefaultValue()
|
|
63
|
+
}
|
|
55
64
|
}
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
65
|
+
|
|
66
|
+
this.ValveCoolMode = class extends api.hap.Characteristic {
|
|
67
|
+
constructor() {
|
|
68
|
+
super('Cool Mode', uuids.valveCoolMode)
|
|
69
|
+
this.setProps({
|
|
70
|
+
format: api.hap.Formats.BOOL,
|
|
71
|
+
perms: [api.hap.Perms.PAIRED_READ, api.hap.Perms.PAIRED_WRITE, api.hap.Perms.NOTIFY],
|
|
72
|
+
})
|
|
73
|
+
this.value = this.getDefaultValue()
|
|
74
|
+
}
|
|
63
75
|
}
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
76
|
+
|
|
77
|
+
this.ValveAutoMode = class extends api.hap.Characteristic {
|
|
78
|
+
constructor() {
|
|
79
|
+
super('Auto Mode', uuids.valveAutoMode)
|
|
80
|
+
this.setProps({
|
|
81
|
+
format: api.hap.Formats.BOOL,
|
|
82
|
+
perms: [api.hap.Perms.PAIRED_READ, api.hap.Perms.PAIRED_WRITE, api.hap.Perms.NOTIFY],
|
|
83
|
+
})
|
|
84
|
+
this.value = this.getDefaultValue()
|
|
85
|
+
}
|
|
71
86
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
87
|
+
|
|
88
|
+
this.ValveEconomyMode = class extends api.hap.Characteristic {
|
|
89
|
+
constructor() {
|
|
90
|
+
super('Economy Mode', uuids.valveEconomyMode)
|
|
91
|
+
this.setProps({
|
|
92
|
+
format: api.hap.Formats.BOOL,
|
|
93
|
+
perms: [api.hap.Perms.PAIRED_READ, api.hap.Perms.PAIRED_WRITE, api.hap.Perms.NOTIFY],
|
|
94
|
+
})
|
|
95
|
+
this.value = this.getDefaultValue()
|
|
96
|
+
}
|
|
79
97
|
}
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
98
|
+
|
|
99
|
+
this.ValveWindowOpen = class extends api.hap.Characteristic {
|
|
100
|
+
constructor() {
|
|
101
|
+
super('Window Open', uuids.valveWindowOpen)
|
|
102
|
+
this.setProps({
|
|
103
|
+
format: api.hap.Formats.BOOL,
|
|
104
|
+
perms: [api.hap.Perms.PAIRED_READ, api.hap.Perms.NOTIFY],
|
|
105
|
+
})
|
|
106
|
+
this.value = this.getDefaultValue()
|
|
107
|
+
}
|
|
87
108
|
}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
109
|
+
|
|
110
|
+
this.LightNightWarm = class extends api.hap.Characteristic {
|
|
111
|
+
constructor() {
|
|
112
|
+
super('Night Light Warm', uuids.lightNightWarm)
|
|
113
|
+
this.setProps({
|
|
114
|
+
format: api.hap.Formats.BOOL,
|
|
115
|
+
perms: [api.hap.Perms.PAIRED_READ, api.hap.Perms.PAIRED_WRITE, api.hap.Perms.NOTIFY],
|
|
116
|
+
})
|
|
117
|
+
this.value = this.getDefaultValue()
|
|
118
|
+
}
|
|
95
119
|
}
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
120
|
+
|
|
121
|
+
this.LightNightWhite = class extends api.hap.Characteristic {
|
|
122
|
+
constructor() {
|
|
123
|
+
super('Night Light White', uuids.lightNightWhite)
|
|
124
|
+
this.setProps({
|
|
125
|
+
format: api.hap.Formats.BOOL,
|
|
126
|
+
perms: [api.hap.Perms.PAIRED_READ, api.hap.Perms.PAIRED_WRITE, api.hap.Perms.NOTIFY],
|
|
127
|
+
})
|
|
128
|
+
this.value = this.getDefaultValue()
|
|
129
|
+
}
|
|
103
130
|
}
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
131
|
+
|
|
132
|
+
this.BabySceneOne = class extends api.hap.Characteristic {
|
|
133
|
+
constructor() {
|
|
134
|
+
super('Baby Scene 1', uuids.babySceneOne)
|
|
135
|
+
this.setProps({
|
|
136
|
+
format: api.hap.Formats.BOOL,
|
|
137
|
+
perms: [api.hap.Perms.PAIRED_READ, api.hap.Perms.PAIRED_WRITE, api.hap.Perms.NOTIFY],
|
|
138
|
+
})
|
|
139
|
+
this.value = this.getDefaultValue()
|
|
140
|
+
}
|
|
111
141
|
}
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
142
|
+
|
|
143
|
+
this.BabySceneTwo = class extends api.hap.Characteristic {
|
|
144
|
+
constructor() {
|
|
145
|
+
super('Baby Scene 2', uuids.babySceneTwo)
|
|
146
|
+
this.setProps({
|
|
147
|
+
format: api.hap.Formats.BOOL,
|
|
148
|
+
perms: [api.hap.Perms.PAIRED_READ, api.hap.Perms.PAIRED_WRITE, api.hap.Perms.NOTIFY],
|
|
149
|
+
})
|
|
150
|
+
this.value = this.getDefaultValue()
|
|
151
|
+
}
|
|
119
152
|
}
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
153
|
+
|
|
154
|
+
this.BabySceneThree = class extends api.hap.Characteristic {
|
|
155
|
+
constructor() {
|
|
156
|
+
super('Baby Scene 3', uuids.babySceneThree)
|
|
157
|
+
this.setProps({
|
|
158
|
+
format: api.hap.Formats.BOOL,
|
|
159
|
+
perms: [api.hap.Perms.PAIRED_READ, api.hap.Perms.PAIRED_WRITE, api.hap.Perms.NOTIFY],
|
|
160
|
+
})
|
|
161
|
+
this.value = this.getDefaultValue()
|
|
162
|
+
}
|
|
127
163
|
}
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
164
|
+
|
|
165
|
+
this.BabySceneFour = class extends api.hap.Characteristic {
|
|
166
|
+
constructor() {
|
|
167
|
+
super('Baby Scene 4', uuids.babySceneFour)
|
|
168
|
+
this.setProps({
|
|
169
|
+
format: api.hap.Formats.BOOL,
|
|
170
|
+
perms: [api.hap.Perms.PAIRED_READ, api.hap.Perms.PAIRED_WRITE, api.hap.Perms.NOTIFY],
|
|
171
|
+
})
|
|
172
|
+
this.value = this.getDefaultValue()
|
|
173
|
+
}
|
|
135
174
|
}
|
|
136
|
-
|
|
137
|
-
inherits(this.DiffRainbowMode, this.hapChar)
|
|
138
|
-
inherits(this.DiffTemperatureMode, this.hapChar)
|
|
139
|
-
inherits(this.ValveHeatMode, this.hapChar)
|
|
140
|
-
inherits(this.ValveCoolMode, this.hapChar)
|
|
141
|
-
inherits(this.ValveAutoMode, this.hapChar)
|
|
142
|
-
inherits(this.ValveEconomyMode, this.hapChar)
|
|
143
|
-
inherits(this.ValveWindowOpen, this.hapChar)
|
|
144
|
-
inherits(this.LightNightWarm, this.hapChar)
|
|
145
|
-
inherits(this.LightNightWhite, this.hapChar)
|
|
146
|
-
inherits(this.BabySceneOne, this.hapChar)
|
|
147
|
-
inherits(this.BabySceneTwo, this.hapChar)
|
|
148
|
-
inherits(this.BabySceneThree, this.hapChar)
|
|
149
|
-
inherits(this.BabySceneFour, this.hapChar)
|
|
175
|
+
|
|
150
176
|
this.DiffColourMode.UUID = this.uuids.diffColourMode
|
|
151
177
|
this.DiffRainbowMode.UUID = this.uuids.diffRainbowMode
|
|
152
178
|
this.DiffTemperatureMode.UUID = this.uuids.diffTemperatureMode
|
package/lib/utils/eve-chars.js
CHANGED
|
@@ -1,9 +1,5 @@
|
|
|
1
|
-
import { inherits } from 'node:util'
|
|
2
|
-
|
|
3
1
|
export default class {
|
|
4
2
|
constructor(api) {
|
|
5
|
-
this.hapServ = api.hap.Service
|
|
6
|
-
this.hapChar = api.hap.Characteristic
|
|
7
3
|
this.uuids = {
|
|
8
4
|
currentConsumption: 'E863F10D-079E-48FF-8F27-9C2605A29F52',
|
|
9
5
|
totalConsumption: 'E863F10C-079E-48FF-8F27-9C2605A29F52',
|
|
@@ -15,108 +11,128 @@ export default class {
|
|
|
15
11
|
closedDuration: 'E863F119-079E-48FF-8F27-9C2605A29F52',
|
|
16
12
|
timesOpened: 'E863F129-079E-48FF-8F27-9C2605A29F52',
|
|
17
13
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
14
|
+
|
|
15
|
+
const uuids = this.uuids
|
|
16
|
+
|
|
17
|
+
this.CurrentConsumption = class extends api.hap.Characteristic {
|
|
18
|
+
constructor() {
|
|
19
|
+
super('Current Consumption', uuids.currentConsumption)
|
|
20
|
+
this.setProps({
|
|
21
|
+
format: api.hap.Formats.UINT16,
|
|
22
|
+
unit: 'W',
|
|
23
|
+
maxValue: 100000,
|
|
24
|
+
minValue: 0,
|
|
25
|
+
minStep: 1,
|
|
26
|
+
perms: [api.hap.Perms.PAIRED_READ, api.hap.Perms.NOTIFY],
|
|
27
|
+
})
|
|
28
|
+
this.value = this.getDefaultValue()
|
|
29
|
+
}
|
|
30
30
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
31
|
+
|
|
32
|
+
this.TotalConsumption = class extends api.hap.Characteristic {
|
|
33
|
+
constructor() {
|
|
34
|
+
super('Total Consumption', uuids.totalConsumption)
|
|
35
|
+
this.setProps({
|
|
36
|
+
format: api.hap.Formats.FLOAT,
|
|
37
|
+
unit: 'kWh',
|
|
38
|
+
maxValue: 100000000000,
|
|
39
|
+
minValue: 0,
|
|
40
|
+
minStep: 0.01,
|
|
41
|
+
perms: [api.hap.Perms.PAIRED_READ, api.hap.Perms.NOTIFY],
|
|
42
|
+
})
|
|
43
|
+
this.value = this.getDefaultValue()
|
|
44
|
+
}
|
|
42
45
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
46
|
+
|
|
47
|
+
this.Voltage = class extends api.hap.Characteristic {
|
|
48
|
+
constructor() {
|
|
49
|
+
super('Voltage', uuids.voltage)
|
|
50
|
+
this.setProps({
|
|
51
|
+
format: api.hap.Formats.FLOAT,
|
|
52
|
+
unit: 'V',
|
|
53
|
+
maxValue: 100000000000,
|
|
54
|
+
minValue: 0,
|
|
55
|
+
minStep: 1,
|
|
56
|
+
perms: [api.hap.Perms.PAIRED_READ, api.hap.Perms.NOTIFY],
|
|
57
|
+
})
|
|
58
|
+
this.value = this.getDefaultValue()
|
|
59
|
+
}
|
|
54
60
|
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
61
|
+
|
|
62
|
+
this.ElectricCurrent = class extends api.hap.Characteristic {
|
|
63
|
+
constructor() {
|
|
64
|
+
super('Electric Current', uuids.electricCurrent)
|
|
65
|
+
this.setProps({
|
|
66
|
+
format: api.hap.Formats.FLOAT,
|
|
67
|
+
unit: 'A',
|
|
68
|
+
maxValue: 100000000000,
|
|
69
|
+
minValue: 0,
|
|
70
|
+
minStep: 0.1,
|
|
71
|
+
perms: [api.hap.Perms.PAIRED_READ, api.hap.Perms.NOTIFY],
|
|
72
|
+
})
|
|
73
|
+
this.value = this.getDefaultValue()
|
|
74
|
+
}
|
|
66
75
|
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
76
|
+
|
|
77
|
+
this.ResetTotal = class extends api.hap.Characteristic {
|
|
78
|
+
constructor() {
|
|
79
|
+
super('Reset Total', uuids.resetTotal)
|
|
80
|
+
this.setProps({
|
|
81
|
+
format: api.hap.Formats.UINT32,
|
|
82
|
+
unit: api.hap.Units.seconds,
|
|
83
|
+
perms: [api.hap.Perms.PAIRED_READ, api.hap.Perms.NOTIFY, api.hap.Perms.PAIRED_WRITE],
|
|
84
|
+
})
|
|
85
|
+
this.value = this.getDefaultValue()
|
|
86
|
+
}
|
|
75
87
|
}
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
88
|
+
|
|
89
|
+
this.LastActivation = class extends api.hap.Characteristic {
|
|
90
|
+
constructor() {
|
|
91
|
+
super('Last Activation', uuids.lastActivation)
|
|
92
|
+
this.setProps({
|
|
93
|
+
format: api.hap.Formats.UINT32,
|
|
94
|
+
unit: api.hap.Units.SECONDS,
|
|
95
|
+
perms: [api.hap.Perms.PAIRED_READ, api.hap.Perms.NOTIFY],
|
|
96
|
+
})
|
|
97
|
+
this.value = this.getDefaultValue()
|
|
98
|
+
}
|
|
84
99
|
}
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
100
|
+
|
|
101
|
+
this.OpenDuration = class extends api.hap.Characteristic {
|
|
102
|
+
constructor() {
|
|
103
|
+
super('Open Duration', uuids.openDuration)
|
|
104
|
+
this.setProps({
|
|
105
|
+
format: api.hap.Formats.UINT32,
|
|
106
|
+
unit: api.hap.Units.SECONDS,
|
|
107
|
+
perms: [api.hap.Perms.PAIRED_READ, api.hap.Perms.NOTIFY, api.hap.Perms.PAIRED_WRITE],
|
|
108
|
+
})
|
|
109
|
+
this.value = this.getDefaultValue()
|
|
110
|
+
}
|
|
93
111
|
}
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
112
|
+
|
|
113
|
+
this.ClosedDuration = class extends api.hap.Characteristic {
|
|
114
|
+
constructor() {
|
|
115
|
+
super('Closed Duration', uuids.closedDuration)
|
|
116
|
+
this.setProps({
|
|
117
|
+
format: api.hap.Formats.UINT32,
|
|
118
|
+
unit: api.hap.Units.SECONDS,
|
|
119
|
+
perms: [api.hap.Perms.PAIRED_READ, api.hap.Perms.NOTIFY, api.hap.Perms.PAIRED_WRITE],
|
|
120
|
+
})
|
|
121
|
+
this.value = this.getDefaultValue()
|
|
122
|
+
}
|
|
102
123
|
}
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
124
|
+
|
|
125
|
+
this.TimesOpened = class extends api.hap.Characteristic {
|
|
126
|
+
constructor() {
|
|
127
|
+
super('Times Opened', uuids.timesOpened)
|
|
128
|
+
this.setProps({
|
|
129
|
+
format: api.hap.Formats.UINT32,
|
|
130
|
+
perms: [api.hap.Perms.PAIRED_READ, api.hap.Perms.NOTIFY],
|
|
131
|
+
})
|
|
132
|
+
this.value = this.getDefaultValue()
|
|
133
|
+
}
|
|
110
134
|
}
|
|
111
|
-
|
|
112
|
-
inherits(this.TotalConsumption, this.hapChar)
|
|
113
|
-
inherits(this.Voltage, this.hapChar)
|
|
114
|
-
inherits(this.ElectricCurrent, this.hapChar)
|
|
115
|
-
inherits(this.LastActivation, this.hapChar)
|
|
116
|
-
inherits(this.ResetTotal, this.hapChar)
|
|
117
|
-
inherits(this.OpenDuration, this.hapChar)
|
|
118
|
-
inherits(this.ClosedDuration, this.hapChar)
|
|
119
|
-
inherits(this.TimesOpened, this.hapChar)
|
|
135
|
+
|
|
120
136
|
this.CurrentConsumption.UUID = this.uuids.currentConsumption
|
|
121
137
|
this.TotalConsumption.UUID = this.uuids.totalConsumption
|
|
122
138
|
this.Voltage.UUID = this.uuids.voltage
|
package/package.json
CHANGED