homebridge-easy-mqtt 1.1.0 → 1.2.0-beta.1
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 -1
- package/README.md +18 -2
- package/config.schema.json +167 -78
- package/dist/accessory/abstract/base.d.ts +32 -0
- package/dist/accessory/abstract/base.js +129 -0
- package/dist/accessory/abstract/base.js.map +1 -0
- package/dist/accessory/abstract/statusActive.d.ts +10 -0
- package/dist/accessory/abstract/statusActive.js +30 -0
- package/dist/accessory/abstract/statusActive.js.map +1 -0
- package/dist/accessory/lock.d.ts +6 -10
- package/dist/accessory/lock.js +41 -67
- package/dist/accessory/lock.js.map +1 -1
- package/dist/accessory/onoff/lightbulb.d.ts +21 -0
- package/dist/accessory/onoff/lightbulb.js +87 -0
- package/dist/accessory/onoff/lightbulb.js.map +1 -0
- package/dist/accessory/onoff/onoff.d.ts +13 -0
- package/dist/accessory/onoff/onoff.js +54 -0
- package/dist/accessory/onoff/onoff.js.map +1 -0
- package/dist/accessory/onoff/outlet.d.ts +13 -0
- package/dist/accessory/onoff/outlet.js +44 -0
- package/dist/accessory/onoff/outlet.js.map +1 -0
- package/dist/accessory/{switch.d.ts → onoff/switch.d.ts} +4 -4
- package/dist/accessory/{switch.js → onoff/switch.js} +2 -2
- package/dist/accessory/onoff/switch.js.map +1 -0
- package/dist/accessory/security.d.ts +22 -0
- package/dist/accessory/security.js +143 -0
- package/dist/accessory/security.js.map +1 -0
- package/dist/accessory/temperatureSensor.d.ts +4 -6
- package/dist/accessory/temperatureSensor.js +11 -15
- package/dist/accessory/temperatureSensor.js.map +1 -1
- package/dist/homebridge/platform.js +13 -8
- package/dist/homebridge/platform.js.map +1 -1
- package/dist/homebridge-ui/public/index.html +2 -2
- package/dist/i18n/en.d.ts +40 -2
- package/dist/i18n/en.js +73 -35
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/i18n.d.ts +40 -2
- package/dist/i18n/template.d.ts +40 -2
- package/dist/model/enums.d.ts +23 -0
- package/dist/model/enums.js +25 -0
- package/dist/model/enums.js.map +1 -1
- package/dist/model/mqtt.d.ts +3 -3
- package/dist/model/mqtt.js +17 -10
- package/dist/model/mqtt.js.map +1 -1
- package/dist/model/types.d.ts +16 -2
- package/dist/tools/primitive.d.ts +3 -3
- package/dist/tools/primitive.js.map +1 -1
- package/package.json +1 -1
- package/dist/accessory/base.d.ts +0 -25
- package/dist/accessory/base.js +0 -59
- package/dist/accessory/base.js.map +0 -1
- package/dist/accessory/lightbulb.d.ts +0 -30
- package/dist/accessory/lightbulb.js +0 -106
- package/dist/accessory/lightbulb.js.map +0 -1
- package/dist/accessory/onoff.d.ts +0 -15
- package/dist/accessory/onoff.js +0 -57
- package/dist/accessory/onoff.js.map +0 -1
- package/dist/accessory/outlet.d.ts +0 -16
- package/dist/accessory/outlet.js +0 -59
- package/dist/accessory/outlet.js.map +0 -1
- package/dist/accessory/statusActive.d.ts +0 -14
- package/dist/accessory/statusActive.js +0 -41
- package/dist/accessory/statusActive.js.map +0 -1
- package/dist/accessory/switch.js.map +0 -1
package/dist/i18n/i18n.d.ts
CHANGED
|
@@ -14,14 +14,13 @@ declare const translations: {
|
|
|
14
14
|
};
|
|
15
15
|
config: {
|
|
16
16
|
continue: string;
|
|
17
|
-
|
|
17
|
+
required: string;
|
|
18
18
|
support: string;
|
|
19
19
|
thankYou: string;
|
|
20
20
|
description: {
|
|
21
21
|
disableLogging: string;
|
|
22
22
|
options: string;
|
|
23
23
|
topics: string;
|
|
24
|
-
valueStatusActive: string;
|
|
25
24
|
verbose: string;
|
|
26
25
|
};
|
|
27
26
|
enumNames: {
|
|
@@ -31,6 +30,7 @@ declare const translations: {
|
|
|
31
30
|
lockMechanism: string;
|
|
32
31
|
outlet: string;
|
|
33
32
|
switch: string;
|
|
33
|
+
securitySystem: string;
|
|
34
34
|
temperatureSensor: string;
|
|
35
35
|
};
|
|
36
36
|
title: {
|
|
@@ -63,6 +63,11 @@ declare const translations: {
|
|
|
63
63
|
topicSetOn: string;
|
|
64
64
|
topicSetTargetState: string;
|
|
65
65
|
topicGetCurrentTemperature: string;
|
|
66
|
+
topicGetCurrentSecurityState: string;
|
|
67
|
+
topicGetTargetSecurityState: string;
|
|
68
|
+
topicSetTargetSecurityState: string;
|
|
69
|
+
topicGetStatusTampered: string;
|
|
70
|
+
topicGetStatusFault: string;
|
|
66
71
|
topics: string;
|
|
67
72
|
type: string;
|
|
68
73
|
username: string;
|
|
@@ -74,12 +79,23 @@ declare const translations: {
|
|
|
74
79
|
valueOn: string;
|
|
75
80
|
valueLockStateSecured: string;
|
|
76
81
|
valueLockStateUnsecured: string;
|
|
82
|
+
valueArmStay: string;
|
|
83
|
+
valueArmAway: string;
|
|
84
|
+
valueArmNight: string;
|
|
85
|
+
valueDisarm: string;
|
|
86
|
+
valueAlarmTriggered: string;
|
|
87
|
+
valueTampered: string;
|
|
88
|
+
valueFault: string;
|
|
77
89
|
values: string;
|
|
78
90
|
verbose: string;
|
|
79
91
|
version: string;
|
|
80
92
|
};
|
|
81
93
|
};
|
|
82
94
|
lightbulb: {
|
|
95
|
+
badBrightness: string;
|
|
96
|
+
badColorTemperature: string;
|
|
97
|
+
badHue: string;
|
|
98
|
+
badSaturation: string;
|
|
83
99
|
brightness: string;
|
|
84
100
|
futureBrightness: string;
|
|
85
101
|
hue: string;
|
|
@@ -113,17 +129,38 @@ declare const translations: {
|
|
|
113
129
|
reconnectInSeconds: string;
|
|
114
130
|
};
|
|
115
131
|
onOff: {
|
|
132
|
+
badValue: string;
|
|
116
133
|
stateFutureOff: string;
|
|
117
134
|
stateFutureOn: string;
|
|
118
135
|
stateOn: string;
|
|
119
136
|
stateOff: string;
|
|
120
137
|
};
|
|
121
138
|
outlet: {
|
|
139
|
+
badValue: string;
|
|
122
140
|
futureInUse: string;
|
|
123
141
|
futureNotInUse: string;
|
|
124
142
|
inUse: string;
|
|
125
143
|
notInUse: string;
|
|
126
144
|
};
|
|
145
|
+
security: {
|
|
146
|
+
badTarget: string;
|
|
147
|
+
isTampered: string;
|
|
148
|
+
hasFault: string;
|
|
149
|
+
noStateValues: string;
|
|
150
|
+
noFault: string;
|
|
151
|
+
notTampered: string;
|
|
152
|
+
stateCurrentArmAway: string;
|
|
153
|
+
stateCurrentArmNight: string;
|
|
154
|
+
stateCurrentArmStay: string;
|
|
155
|
+
stateCurrentAlarmTriggered: string;
|
|
156
|
+
stateCurrentDisarm: string;
|
|
157
|
+
stateFutureArmAway: string;
|
|
158
|
+
stateFutureArmNight: string;
|
|
159
|
+
stateFutureArmStay: string;
|
|
160
|
+
stateFutureDisarm: string;
|
|
161
|
+
stateUnknown: string;
|
|
162
|
+
unknownValue: string;
|
|
163
|
+
};
|
|
127
164
|
startup: {
|
|
128
165
|
complete: string;
|
|
129
166
|
newAccessory: string;
|
|
@@ -133,6 +170,7 @@ declare const translations: {
|
|
|
133
170
|
welcome: string[];
|
|
134
171
|
};
|
|
135
172
|
temperatureSensor: {
|
|
173
|
+
badValue: string;
|
|
136
174
|
temperature: string;
|
|
137
175
|
};
|
|
138
176
|
};
|
package/dist/i18n/template.d.ts
CHANGED
|
@@ -6,14 +6,13 @@ declare const REPLACE_THIS_WITH_ISO_CODE: {
|
|
|
6
6
|
};
|
|
7
7
|
config: {
|
|
8
8
|
continue: string;
|
|
9
|
-
|
|
9
|
+
required: string;
|
|
10
10
|
support: string;
|
|
11
11
|
thankYou: string;
|
|
12
12
|
description: {
|
|
13
13
|
disableLogging: string;
|
|
14
14
|
options: string;
|
|
15
15
|
topics: string;
|
|
16
|
-
valueStatusActive: string;
|
|
17
16
|
verbose: string;
|
|
18
17
|
};
|
|
19
18
|
enumNames: {
|
|
@@ -23,6 +22,7 @@ declare const REPLACE_THIS_WITH_ISO_CODE: {
|
|
|
23
22
|
lockMechanism: string;
|
|
24
23
|
outlet: string;
|
|
25
24
|
switch: string;
|
|
25
|
+
securitySystem: string;
|
|
26
26
|
temperatureSensor: string;
|
|
27
27
|
};
|
|
28
28
|
title: {
|
|
@@ -55,6 +55,11 @@ declare const REPLACE_THIS_WITH_ISO_CODE: {
|
|
|
55
55
|
topicSetOn: string;
|
|
56
56
|
topicSetTargetState: string;
|
|
57
57
|
topicGetCurrentTemperature: string;
|
|
58
|
+
topicGetCurrentSecurityState: string;
|
|
59
|
+
topicGetTargetSecurityState: string;
|
|
60
|
+
topicSetTargetSecurityState: string;
|
|
61
|
+
topicGetStatusTampered: string;
|
|
62
|
+
topicGetStatusFault: string;
|
|
58
63
|
topics: string;
|
|
59
64
|
type: string;
|
|
60
65
|
username: string;
|
|
@@ -66,12 +71,23 @@ declare const REPLACE_THIS_WITH_ISO_CODE: {
|
|
|
66
71
|
valueOn: string;
|
|
67
72
|
valueLockStateSecured: string;
|
|
68
73
|
valueLockStateUnsecured: string;
|
|
74
|
+
valueArmStay: string;
|
|
75
|
+
valueArmAway: string;
|
|
76
|
+
valueArmNight: string;
|
|
77
|
+
valueDisarm: string;
|
|
78
|
+
valueAlarmTriggered: string;
|
|
79
|
+
valueTampered: string;
|
|
80
|
+
valueFault: string;
|
|
69
81
|
values: string;
|
|
70
82
|
verbose: string;
|
|
71
83
|
version: string;
|
|
72
84
|
};
|
|
73
85
|
};
|
|
74
86
|
lightbulb: {
|
|
87
|
+
badBrightness: string;
|
|
88
|
+
badColorTemperature: string;
|
|
89
|
+
badHue: string;
|
|
90
|
+
badSaturation: string;
|
|
75
91
|
brightness: string;
|
|
76
92
|
futureBrightness: string;
|
|
77
93
|
hue: string;
|
|
@@ -105,17 +121,38 @@ declare const REPLACE_THIS_WITH_ISO_CODE: {
|
|
|
105
121
|
reconnectInSeconds: string;
|
|
106
122
|
};
|
|
107
123
|
onOff: {
|
|
124
|
+
badValue: string;
|
|
108
125
|
stateFutureOff: string;
|
|
109
126
|
stateFutureOn: string;
|
|
110
127
|
stateOn: string;
|
|
111
128
|
stateOff: string;
|
|
112
129
|
};
|
|
113
130
|
outlet: {
|
|
131
|
+
badValue: string;
|
|
114
132
|
futureInUse: string;
|
|
115
133
|
futureNotInUse: string;
|
|
116
134
|
inUse: string;
|
|
117
135
|
notInUse: string;
|
|
118
136
|
};
|
|
137
|
+
security: {
|
|
138
|
+
badTarget: string;
|
|
139
|
+
isTampered: string;
|
|
140
|
+
hasFault: string;
|
|
141
|
+
noStateValues: string;
|
|
142
|
+
noFault: string;
|
|
143
|
+
notTampered: string;
|
|
144
|
+
stateCurrentArmAway: string;
|
|
145
|
+
stateCurrentArmNight: string;
|
|
146
|
+
stateCurrentArmStay: string;
|
|
147
|
+
stateCurrentAlarmTriggered: string;
|
|
148
|
+
stateCurrentDisarm: string;
|
|
149
|
+
stateFutureArmAway: string;
|
|
150
|
+
stateFutureArmNight: string;
|
|
151
|
+
stateFutureArmStay: string;
|
|
152
|
+
stateFutureDisarm: string;
|
|
153
|
+
stateUnknown: string;
|
|
154
|
+
unknownValue: string;
|
|
155
|
+
};
|
|
119
156
|
startup: {
|
|
120
157
|
complete: string;
|
|
121
158
|
newAccessory: string;
|
|
@@ -125,6 +162,7 @@ declare const REPLACE_THIS_WITH_ISO_CODE: {
|
|
|
125
162
|
welcome: string[];
|
|
126
163
|
};
|
|
127
164
|
temperatureSensor: {
|
|
165
|
+
badValue: string;
|
|
128
166
|
temperature: string;
|
|
129
167
|
};
|
|
130
168
|
};
|
package/dist/model/enums.d.ts
CHANGED
|
@@ -1,3 +1,26 @@
|
|
|
1
|
+
export declare enum AccessoryType {
|
|
2
|
+
Lightbulb = "Lightbulb",
|
|
3
|
+
LockMechanism = "LockMechanism",
|
|
4
|
+
Outlet = "Outlet",
|
|
5
|
+
SecuritySystem = "SecuritySystem",
|
|
6
|
+
Switch = "Switch",
|
|
7
|
+
TemperatureSensor = "TemperatureSensor"
|
|
8
|
+
}
|
|
9
|
+
export declare enum CharacteristicKey {
|
|
10
|
+
Brightness = "Brightness",
|
|
11
|
+
ColorTemperature = "ColorTemperature",
|
|
12
|
+
Hue = "Hue",
|
|
13
|
+
LockCurrentState = "LockCurrentState",
|
|
14
|
+
LockTargetState = "LockTargetState",
|
|
15
|
+
On = "On",
|
|
16
|
+
OutletInUse = "OutletInUse",
|
|
17
|
+
Saturation = "Saturation",
|
|
18
|
+
SecuritySystemCurrentState = "SecuritySystemCurrentState",
|
|
19
|
+
SecuritySystemTargetState = "SecuritySystemTargetState",
|
|
20
|
+
StatusActive = "StatusActive",
|
|
21
|
+
StatusFault = "StatusFault",
|
|
22
|
+
StatusTampered = "StatusTampered"
|
|
23
|
+
}
|
|
1
24
|
export declare enum TemperatureUnits {
|
|
2
25
|
CELSIUS = "C",
|
|
3
26
|
FAHRENHEIT = "F"
|
package/dist/model/enums.js
CHANGED
|
@@ -1,3 +1,28 @@
|
|
|
1
|
+
export var AccessoryType;
|
|
2
|
+
(function (AccessoryType) {
|
|
3
|
+
AccessoryType["Lightbulb"] = "Lightbulb";
|
|
4
|
+
AccessoryType["LockMechanism"] = "LockMechanism";
|
|
5
|
+
AccessoryType["Outlet"] = "Outlet";
|
|
6
|
+
AccessoryType["SecuritySystem"] = "SecuritySystem";
|
|
7
|
+
AccessoryType["Switch"] = "Switch";
|
|
8
|
+
AccessoryType["TemperatureSensor"] = "TemperatureSensor";
|
|
9
|
+
})(AccessoryType || (AccessoryType = {}));
|
|
10
|
+
export var CharacteristicKey;
|
|
11
|
+
(function (CharacteristicKey) {
|
|
12
|
+
CharacteristicKey["Brightness"] = "Brightness";
|
|
13
|
+
CharacteristicKey["ColorTemperature"] = "ColorTemperature";
|
|
14
|
+
CharacteristicKey["Hue"] = "Hue";
|
|
15
|
+
CharacteristicKey["LockCurrentState"] = "LockCurrentState";
|
|
16
|
+
CharacteristicKey["LockTargetState"] = "LockTargetState";
|
|
17
|
+
CharacteristicKey["On"] = "On";
|
|
18
|
+
CharacteristicKey["OutletInUse"] = "OutletInUse";
|
|
19
|
+
CharacteristicKey["Saturation"] = "Saturation";
|
|
20
|
+
CharacteristicKey["SecuritySystemCurrentState"] = "SecuritySystemCurrentState";
|
|
21
|
+
CharacteristicKey["SecuritySystemTargetState"] = "SecuritySystemTargetState";
|
|
22
|
+
CharacteristicKey["StatusActive"] = "StatusActive";
|
|
23
|
+
CharacteristicKey["StatusFault"] = "StatusFault";
|
|
24
|
+
CharacteristicKey["StatusTampered"] = "StatusTampered";
|
|
25
|
+
})(CharacteristicKey || (CharacteristicKey = {}));
|
|
1
26
|
export var TemperatureUnits;
|
|
2
27
|
(function (TemperatureUnits) {
|
|
3
28
|
TemperatureUnits["CELSIUS"] = "C";
|
package/dist/model/enums.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enums.js","sourceRoot":"","sources":["../../src/model/enums.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IAC1B,iCAAa,CAAA;IACb,oCAAgB,CAAA;AAClB,CAAC,EAHW,gBAAgB,KAAhB,gBAAgB,QAG3B"}
|
|
1
|
+
{"version":3,"file":"enums.js","sourceRoot":"","sources":["../../src/model/enums.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,aAOX;AAPD,WAAY,aAAa;IACvB,wCAAuB,CAAA;IACvB,gDAA+B,CAAA;IAC/B,kCAAiB,CAAA;IACjB,kDAAiC,CAAA;IACjC,kCAAiB,CAAA;IACjB,wDAAuC,CAAA;AACzC,CAAC,EAPW,aAAa,KAAb,aAAa,QAOxB;AAED,MAAM,CAAN,IAAY,iBAcX;AAdD,WAAY,iBAAiB;IAC3B,8CAAyB,CAAA;IACzB,0DAAqC,CAAA;IACrC,gCAAW,CAAA;IACX,0DAAqC,CAAA;IACrC,wDAAmC,CAAA;IACnC,8BAAS,CAAA;IACT,gDAA2B,CAAA;IAC3B,8CAAyB,CAAA;IACzB,8EAAyD,CAAA;IACzD,4EAAuD,CAAA;IACvD,kDAA6B,CAAA;IAC7B,gDAA2B,CAAA;IAC3B,sDAAiC,CAAA;AACnC,CAAC,EAdW,iBAAiB,KAAjB,iBAAiB,QAc5B;AAED,MAAM,CAAN,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IAC1B,iCAAa,CAAA;IACb,oCAAgB,CAAA;AAClB,CAAC,EAHW,gBAAgB,KAAhB,gBAAgB,QAG3B"}
|
package/dist/model/mqtt.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
import { PrimitiveTypes } from 'homebridge';
|
|
1
2
|
import { MQTTConfig } from './types.js';
|
|
2
3
|
import { Log } from '../tools/log.js';
|
|
3
|
-
|
|
4
|
-
type MQTTMessageHandler = (topic: string, value: Primitive) => void;
|
|
4
|
+
type MQTTMessageHandler = (topic: string, value: PrimitiveTypes) => void;
|
|
5
5
|
export declare class MQTT {
|
|
6
6
|
private readonly log;
|
|
7
7
|
private readonly config;
|
|
@@ -16,7 +16,7 @@ export declare class MQTT {
|
|
|
16
16
|
teardown(): void;
|
|
17
17
|
connect(): void;
|
|
18
18
|
subscribe(topic: string, handler: MQTTMessageHandler): void;
|
|
19
|
-
publish(topic: string, value:
|
|
19
|
+
publish(topic: string, value: PrimitiveTypes): void;
|
|
20
20
|
private messageReceived;
|
|
21
21
|
private connectionClosed;
|
|
22
22
|
private reconnect;
|
package/dist/model/mqtt.js
CHANGED
|
@@ -96,27 +96,34 @@ export class MQTT {
|
|
|
96
96
|
messageReceived(topic, message) {
|
|
97
97
|
this.reconnectCount = 0;
|
|
98
98
|
try {
|
|
99
|
+
message = message.trim();
|
|
99
100
|
this.log.ifVerbose(strings.mqtt.receivedMessage, this.caller, topic, message);
|
|
100
101
|
const listener = this.listeners.get(topic);
|
|
101
102
|
if (!listener) {
|
|
102
103
|
this.log.ifVerbose(strings.mqtt.noListeners, this.caller, topic);
|
|
103
104
|
return;
|
|
104
105
|
}
|
|
105
|
-
let value
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
value
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
106
|
+
let value;
|
|
107
|
+
if (message.startsWith('{')) {
|
|
108
|
+
value = JSON.parse(message);
|
|
109
|
+
for (const pathPart of listener.jsonPath) {
|
|
110
|
+
if (value && typeof value === 'object' && pathPart in value) {
|
|
111
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
112
|
+
value = value[pathPart];
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
value = undefined;
|
|
116
|
+
break;
|
|
117
|
+
}
|
|
114
118
|
}
|
|
115
119
|
}
|
|
120
|
+
else {
|
|
121
|
+
value = message;
|
|
122
|
+
}
|
|
116
123
|
listener.handler(topic, toPrimitive(value));
|
|
117
124
|
}
|
|
118
125
|
catch (e) {
|
|
119
|
-
this.log.error(strings.mqtt.parseFailed, this.caller, message);
|
|
126
|
+
this.log.error(strings.mqtt.parseFailed, this.caller, `\n${message}`);
|
|
120
127
|
}
|
|
121
128
|
}
|
|
122
129
|
connectionClosed() {
|
package/dist/model/mqtt.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mqtt.js","sourceRoot":"","sources":["../../src/model/mqtt.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mqtt.js","sourceRoot":"","sources":["../../src/model/mqtt.ts"],"names":[],"mappings":"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"}
|
package/dist/model/types.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { PlatformConfig as HBPlatformConfig } from 'homebridge';
|
|
2
2
|
export type ServiceType = typeof import('homebridge').Service;
|
|
3
3
|
export type CharacteristicType = typeof import('homebridge').Characteristic;
|
|
4
|
-
import { TemperatureUnits } from './enums.js';
|
|
4
|
+
import { AccessoryType, TemperatureUnits } from './enums.js';
|
|
5
5
|
export type PlatformConfig = HBPlatformConfig & {
|
|
6
6
|
accessories?: AccessoryConfig[];
|
|
7
7
|
};
|
|
@@ -12,7 +12,7 @@ export type Assertable = {};
|
|
|
12
12
|
export type InfoConfig = Assertable & {
|
|
13
13
|
id: string;
|
|
14
14
|
name: string;
|
|
15
|
-
type:
|
|
15
|
+
type: AccessoryType;
|
|
16
16
|
manufacturer?: string;
|
|
17
17
|
model?: string;
|
|
18
18
|
serialNumber?: string;
|
|
@@ -63,6 +63,20 @@ export type OutletConfig = OnOffConfig & {
|
|
|
63
63
|
valueOutletInUse?: string;
|
|
64
64
|
valueOutletNotInUse?: string;
|
|
65
65
|
};
|
|
66
|
+
export type SecuritySystemConfig = StatusActiveConfig & {
|
|
67
|
+
topicGetCurrentSecurityState: string;
|
|
68
|
+
topicGetTargetSecurityState: string;
|
|
69
|
+
topicSetTargetSecurityState: string;
|
|
70
|
+
topicGetStatusTampered?: string;
|
|
71
|
+
topicGetStatusFault?: string;
|
|
72
|
+
valueArmStay?: string;
|
|
73
|
+
valueArmAway?: string;
|
|
74
|
+
valueArmNight?: string;
|
|
75
|
+
valueDisarm?: string;
|
|
76
|
+
valueAlarmTriggered?: string;
|
|
77
|
+
valueTampered?: string;
|
|
78
|
+
valueFault?: string;
|
|
79
|
+
};
|
|
66
80
|
export type SwitchConfig = OnOffConfig & {};
|
|
67
81
|
export type TemperatureSensorConfig = StatusActiveConfig & TemperatureConfig & {
|
|
68
82
|
topicGetCurrentTemperature: string;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
export declare function toPrimitive(value: any):
|
|
3
|
-
export declare function toNumber(primitive:
|
|
1
|
+
import { PrimitiveTypes } from 'homebridge';
|
|
2
|
+
export declare function toPrimitive(value: any): PrimitiveTypes;
|
|
3
|
+
export declare function toNumber(primitive: PrimitiveTypes): number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"primitive.js","sourceRoot":"","sources":["../../src/tools/primitive.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"primitive.js","sourceRoot":"","sources":["../../src/tools/primitive.ts"],"names":[],"mappings":"AAEA,8DAA8D;AAC9D,MAAM,UAAU,WAAW,CAAC,KAAU;IAEpC,IAAI,OAAO,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC5D,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;QACtB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACvC,OAAO,GAAG,CAAC;IACb,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,SAAyB;IAChD,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;QAClC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC;AAC3B,CAAC"}
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"displayName": "Homebridge Easy MQTT",
|
|
5
5
|
"description": "Homebridge plugin for easy control of MQTT devices",
|
|
6
6
|
"type": "module",
|
|
7
|
-
"version": "1.
|
|
7
|
+
"version": "1.2.0-beta.1",
|
|
8
8
|
"homepage": "https://github.com/mpatfield/homebridge-easy-mqtt#readme",
|
|
9
9
|
"repository": {
|
|
10
10
|
"type": "git",
|
package/dist/accessory/base.d.ts
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { PlatformAccessory } from 'homebridge';
|
|
2
|
-
import { AccessoryConfig, CharacteristicType, ServiceType } from '../model/types.js';
|
|
3
|
-
import { Log } from '../tools/log.js';
|
|
4
|
-
import { Primitive } from '../tools/primitive.js';
|
|
5
|
-
export type TopicHandler = {
|
|
6
|
-
topic: string;
|
|
7
|
-
handler: ((topic: string, value: Primitive) => Promise<void>);
|
|
8
|
-
};
|
|
9
|
-
export declare function makeHandler(topic: string, handler: (topic: string, value: Primitive) => Promise<void>): TopicHandler;
|
|
10
|
-
export declare abstract class MQTTAccessory {
|
|
11
|
-
protected readonly Service: ServiceType;
|
|
12
|
-
protected readonly Characteristic: CharacteristicType;
|
|
13
|
-
protected readonly accessory: PlatformAccessory;
|
|
14
|
-
protected readonly config: AccessoryConfig;
|
|
15
|
-
protected readonly log: Log;
|
|
16
|
-
private readonly mqttClient;
|
|
17
|
-
constructor(Service: ServiceType, Characteristic: CharacteristicType, accessory: PlatformAccessory, config: AccessoryConfig, log: Log, caller: string);
|
|
18
|
-
private onMQTTConnect;
|
|
19
|
-
protected abstract get topicHandlers(): TopicHandler[];
|
|
20
|
-
protected get name(): string;
|
|
21
|
-
protected publish(topic: string, value: Primitive): void;
|
|
22
|
-
teardown(): void;
|
|
23
|
-
protected assert(...keys: (keyof any)[]): boolean;
|
|
24
|
-
protected logIfDesired(message: string, ...parameters: string[]): void;
|
|
25
|
-
}
|
package/dist/accessory/base.js
DELETED
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
import { PLATFORM_NAME } from '../homebridge/settings.js';
|
|
2
|
-
import { MQTT } from '../model/mqtt.js';
|
|
3
|
-
import getVersion from '../tools/version.js';
|
|
4
|
-
import { assert } from '../tools/validation.js';
|
|
5
|
-
export function makeHandler(topic, handler) {
|
|
6
|
-
return { topic, handler };
|
|
7
|
-
}
|
|
8
|
-
export class MQTTAccessory {
|
|
9
|
-
Service;
|
|
10
|
-
Characteristic;
|
|
11
|
-
accessory;
|
|
12
|
-
config;
|
|
13
|
-
log;
|
|
14
|
-
mqttClient;
|
|
15
|
-
constructor(Service, Characteristic, accessory, config, log, caller) {
|
|
16
|
-
this.Service = Service;
|
|
17
|
-
this.Characteristic = Characteristic;
|
|
18
|
-
this.accessory = accessory;
|
|
19
|
-
this.config = config;
|
|
20
|
-
this.log = log;
|
|
21
|
-
const name = config.info.name;
|
|
22
|
-
if (this.assert('mqtt')) {
|
|
23
|
-
this.mqttClient = new MQTT(log, config.mqtt, this.onMQTTConnect.bind(this), name);
|
|
24
|
-
this.mqttClient.connect();
|
|
25
|
-
}
|
|
26
|
-
accessory.getService(Service.AccessoryInformation)
|
|
27
|
-
.setCharacteristic(Characteristic.Name, name)
|
|
28
|
-
.setCharacteristic(Characteristic.ConfiguredName, name)
|
|
29
|
-
.setCharacteristic(Characteristic.Manufacturer, config.info.manufacturer ?? 'Homebridge')
|
|
30
|
-
.setCharacteristic(Characteristic.SerialNumber, config.info.serialNumber ?? `${PLATFORM_NAME}:${name}`)
|
|
31
|
-
.setCharacteristic(Characteristic.Model, config.info.model ?? caller)
|
|
32
|
-
.setCharacteristic(Characteristic.FirmwareRevision, config.info.version ?? getVersion());
|
|
33
|
-
}
|
|
34
|
-
async onMQTTConnect() {
|
|
35
|
-
this.topicHandlers.forEach(topicHandler => {
|
|
36
|
-
this.mqttClient?.subscribe(topicHandler.topic, topicHandler.handler);
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
get name() {
|
|
40
|
-
return this.config.info.name;
|
|
41
|
-
}
|
|
42
|
-
publish(topic, value) {
|
|
43
|
-
this.mqttClient?.publish(topic, value);
|
|
44
|
-
}
|
|
45
|
-
teardown() {
|
|
46
|
-
this.mqttClient?.teardown();
|
|
47
|
-
}
|
|
48
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
49
|
-
assert(...keys) {
|
|
50
|
-
return assert(this.log, this.name, this.config, ...keys);
|
|
51
|
-
}
|
|
52
|
-
logIfDesired(message, ...parameters) {
|
|
53
|
-
if (this.config.disableLogging) {
|
|
54
|
-
return;
|
|
55
|
-
}
|
|
56
|
-
this.log.always(message, ...parameters);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
//# sourceMappingURL=base.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/accessory/base.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { PlatformAccessory, Service } from 'homebridge';
|
|
2
|
-
import { TopicHandler } from './base.js';
|
|
3
|
-
import { OnOffAccessory } from './onoff.js';
|
|
4
|
-
import { CharacteristicType, LightbulbConfig, ServiceType } from '../model/types.js';
|
|
5
|
-
import { Log } from '../tools/log.js';
|
|
6
|
-
export declare class LightbulbAccessory extends OnOffAccessory {
|
|
7
|
-
private readonly lightbulbConfig;
|
|
8
|
-
private brightness;
|
|
9
|
-
private hue;
|
|
10
|
-
private colorTemperature;
|
|
11
|
-
private saturation;
|
|
12
|
-
constructor(Service: ServiceType, Characteristic: CharacteristicType, accessory: PlatformAccessory, lightbulbConfig: LightbulbConfig, log: Log);
|
|
13
|
-
protected getAccessoryService(): Service;
|
|
14
|
-
protected get topicHandlers(): TopicHandler[];
|
|
15
|
-
private getBrightness;
|
|
16
|
-
private getHue;
|
|
17
|
-
private getColorTemperature;
|
|
18
|
-
private getSaturation;
|
|
19
|
-
private onBrightnessUpdate;
|
|
20
|
-
private setBrightness;
|
|
21
|
-
private onHueUpdate;
|
|
22
|
-
private setHue;
|
|
23
|
-
private onColorTemperatureUpdate;
|
|
24
|
-
private setColorTemperature;
|
|
25
|
-
private onSaturationUpdate;
|
|
26
|
-
private setSaturation;
|
|
27
|
-
private _onUpdate;
|
|
28
|
-
private _set;
|
|
29
|
-
private toCharacteristicKey;
|
|
30
|
-
}
|
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
import { makeHandler } from './base.js';
|
|
2
|
-
import { OnOffAccessory } from './onoff.js';
|
|
3
|
-
import { strings } from '../i18n/i18n.js';
|
|
4
|
-
import { toPrimitive } from '../tools/primitive.js';
|
|
5
|
-
export class LightbulbAccessory extends OnOffAccessory {
|
|
6
|
-
lightbulbConfig;
|
|
7
|
-
brightness = 100;
|
|
8
|
-
hue = 0;
|
|
9
|
-
colorTemperature = 500;
|
|
10
|
-
saturation = 100;
|
|
11
|
-
constructor(Service, Characteristic, accessory, lightbulbConfig, log) {
|
|
12
|
-
super(Service, Characteristic, accessory, lightbulbConfig, log, LightbulbAccessory.name);
|
|
13
|
-
this.lightbulbConfig = lightbulbConfig;
|
|
14
|
-
this.accessoryService.getCharacteristic(this.Characteristic.Brightness)
|
|
15
|
-
.onGet(this.getBrightness.bind(this))
|
|
16
|
-
.onSet(this.setBrightness.bind(this));
|
|
17
|
-
this.accessoryService.getCharacteristic(this.Characteristic.Hue)
|
|
18
|
-
.onGet(this.getHue.bind(this))
|
|
19
|
-
.onSet(this.setHue.bind(this));
|
|
20
|
-
this.accessoryService.getCharacteristic(this.Characteristic.ColorTemperature)
|
|
21
|
-
.onGet(this.getColorTemperature.bind(this))
|
|
22
|
-
.onSet(this.setColorTemperature.bind(this));
|
|
23
|
-
this.accessoryService.getCharacteristic(this.Characteristic.Saturation)
|
|
24
|
-
.onGet(this.getSaturation.bind(this))
|
|
25
|
-
.onSet(this.setSaturation.bind(this));
|
|
26
|
-
}
|
|
27
|
-
getAccessoryService() {
|
|
28
|
-
return this.accessory.getService(this.Service.Lightbulb) || this.accessory.addService(this.Service.Lightbulb);
|
|
29
|
-
}
|
|
30
|
-
get topicHandlers() {
|
|
31
|
-
const topicHandlers = super.topicHandlers;
|
|
32
|
-
if (this.lightbulbConfig.topicGetBrightness) {
|
|
33
|
-
topicHandlers.push(makeHandler(this.lightbulbConfig.topicGetBrightness, this.onBrightnessUpdate.bind(this)));
|
|
34
|
-
}
|
|
35
|
-
if (this.lightbulbConfig.topicGetHue) {
|
|
36
|
-
topicHandlers.push(makeHandler(this.lightbulbConfig.topicGetHue, this.onHueUpdate.bind(this)));
|
|
37
|
-
}
|
|
38
|
-
if (this.lightbulbConfig.topicGetColorTemperature) {
|
|
39
|
-
topicHandlers.push(makeHandler(this.lightbulbConfig.topicGetColorTemperature, this.onColorTemperatureUpdate.bind(this)));
|
|
40
|
-
}
|
|
41
|
-
if (this.lightbulbConfig.topicGetSaturation) {
|
|
42
|
-
topicHandlers.push(makeHandler(this.lightbulbConfig.topicGetSaturation, this.onSaturationUpdate.bind(this)));
|
|
43
|
-
}
|
|
44
|
-
return topicHandlers;
|
|
45
|
-
}
|
|
46
|
-
async getBrightness() {
|
|
47
|
-
return this.brightness;
|
|
48
|
-
}
|
|
49
|
-
async getHue() {
|
|
50
|
-
return this.hue;
|
|
51
|
-
}
|
|
52
|
-
async getColorTemperature() {
|
|
53
|
-
return this.colorTemperature;
|
|
54
|
-
}
|
|
55
|
-
async getSaturation() {
|
|
56
|
-
return this.saturation;
|
|
57
|
-
}
|
|
58
|
-
async onBrightnessUpdate(topic, value) {
|
|
59
|
-
this._onUpdate('brightness', value, strings.lightbulb.brightness);
|
|
60
|
-
}
|
|
61
|
-
async setBrightness(value) {
|
|
62
|
-
this._set('topicSetBrightness', 'brightness', value, strings.lightbulb.futureBrightness);
|
|
63
|
-
}
|
|
64
|
-
async onHueUpdate(topic, value) {
|
|
65
|
-
this._onUpdate('hue', value, strings.lightbulb.hue);
|
|
66
|
-
}
|
|
67
|
-
async setHue(value) {
|
|
68
|
-
this._set('topicSetHue', 'hue', value, strings.lightbulb.futureHue);
|
|
69
|
-
}
|
|
70
|
-
async onColorTemperatureUpdate(topic, value) {
|
|
71
|
-
this._onUpdate('colorTemperature', value, strings.lightbulb.colorTemperature);
|
|
72
|
-
}
|
|
73
|
-
async setColorTemperature(value) {
|
|
74
|
-
this._set('topicSetColorTemperature', 'colorTemperature', value, strings.lightbulb.futureColorTemperature);
|
|
75
|
-
}
|
|
76
|
-
async onSaturationUpdate(topic, value) {
|
|
77
|
-
this._onUpdate('saturation', value, strings.lightbulb.saturation);
|
|
78
|
-
}
|
|
79
|
-
async setSaturation(value) {
|
|
80
|
-
this._set('topicSetSaturation', 'saturation', value, strings.lightbulb.futureSaturation);
|
|
81
|
-
}
|
|
82
|
-
async _onUpdate(propertyKey, value, logString) {
|
|
83
|
-
if (value === this[propertyKey]) {
|
|
84
|
-
return;
|
|
85
|
-
}
|
|
86
|
-
this[propertyKey] = value;
|
|
87
|
-
const characteristicKey = this.toCharacteristicKey(propertyKey);
|
|
88
|
-
this.accessoryService.updateCharacteristic(this.Characteristic[characteristicKey], value);
|
|
89
|
-
this.logIfDesired(logString, this.name, value.toString());
|
|
90
|
-
}
|
|
91
|
-
_set(topic, propertyKey, value, logString) {
|
|
92
|
-
if (!this.assert(topic)) {
|
|
93
|
-
return;
|
|
94
|
-
}
|
|
95
|
-
this[propertyKey] = value;
|
|
96
|
-
this.logIfDesired(logString, this.name, value.toString());
|
|
97
|
-
const characteristicKey = this.toCharacteristicKey(propertyKey);
|
|
98
|
-
this.accessoryService.updateCharacteristic(this.Characteristic[characteristicKey], value);
|
|
99
|
-
this.publish(this.lightbulbConfig[topic], toPrimitive(value));
|
|
100
|
-
}
|
|
101
|
-
toCharacteristicKey(key) {
|
|
102
|
-
const capitalized = key.charAt(0).toUpperCase() + key.slice(1);
|
|
103
|
-
return capitalized;
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
//# sourceMappingURL=lightbulb.js.map
|