@rfranzoi/scrypted-mqtt-securitysystem 1.0.54 → 1.0.55
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/dist/main.nodejs.js +41 -58
- package/dist/plugin.zip +0 -0
- package/package.json +1 -1
package/dist/main.nodejs.js
CHANGED
|
@@ -34139,67 +34139,40 @@ class BaseMqttSensor extends sdk_1.ScryptedDeviceBase {
|
|
|
34139
34139
|
handleMqtt(topic, payload) {
|
|
34140
34140
|
const raw = payload?.toString() ?? '';
|
|
34141
34141
|
const np = normalize(raw);
|
|
34142
|
-
|
|
34143
|
-
|
|
34144
|
-
|
|
34145
|
-
|
|
34146
|
-
|
|
34147
|
-
this.onDeviceEvent(sdk_1.ScryptedInterface.BinarySensor, open);
|
|
34148
|
-
}
|
|
34149
|
-
catch { }
|
|
34150
|
-
return;
|
|
34151
|
-
}
|
|
34152
|
-
// MOTION
|
|
34153
|
-
if (topic === this.topics.motion) {
|
|
34154
|
-
const motion = truthy(np) || np === 'motion';
|
|
34155
|
-
this.motionDetected = motion;
|
|
34156
|
-
try {
|
|
34157
|
-
this.onDeviceEvent(sdk_1.ScryptedInterface.MotionSensor, motion);
|
|
34158
|
-
}
|
|
34159
|
-
catch { }
|
|
34160
|
-
return;
|
|
34161
|
-
}
|
|
34162
|
-
// OCCUPANCY
|
|
34163
|
-
if (topic === this.topics.occupancy) {
|
|
34164
|
-
const occ = truthy(np) || np === 'occupied';
|
|
34165
|
-
this.occupied = occ;
|
|
34166
|
-
try {
|
|
34167
|
-
this.onDeviceEvent(sdk_1.ScryptedInterface.OccupancySensor, occ);
|
|
34168
|
-
}
|
|
34169
|
-
catch { }
|
|
34170
|
-
return;
|
|
34171
|
-
}
|
|
34172
|
-
// TAMPER
|
|
34173
|
-
if (topic === this.topics.tamper) {
|
|
34142
|
+
const topics = this.cfg.topics || {};
|
|
34143
|
+
// 1) stato primario (contact / motion / occupancy)
|
|
34144
|
+
this.handlePrimary(topic, np, raw);
|
|
34145
|
+
// 2) TAMPER
|
|
34146
|
+
if (topic === topics.tamper) {
|
|
34174
34147
|
if (truthy(np) || ['tamper', 'intrusion', 'cover'].includes(np)) {
|
|
34175
34148
|
const val = ['cover', 'intrusion'].find(x => x === np) || true;
|
|
34176
|
-
this.tampered
|
|
34177
|
-
|
|
34178
|
-
|
|
34179
|
-
|
|
34180
|
-
|
|
34149
|
+
this.setAndEmit('tampered', val, sdk_1.ScryptedInterface.TamperSensor, {
|
|
34150
|
+
topic,
|
|
34151
|
+
raw,
|
|
34152
|
+
propLabel: 'tampered',
|
|
34153
|
+
});
|
|
34181
34154
|
}
|
|
34182
34155
|
else if (falsy(np)) {
|
|
34183
|
-
this.tampered
|
|
34184
|
-
|
|
34185
|
-
|
|
34186
|
-
|
|
34187
|
-
|
|
34156
|
+
this.setAndEmit('tampered', false, sdk_1.ScryptedInterface.TamperSensor, {
|
|
34157
|
+
topic,
|
|
34158
|
+
raw,
|
|
34159
|
+
propLabel: 'tampered',
|
|
34160
|
+
});
|
|
34188
34161
|
}
|
|
34189
34162
|
return;
|
|
34190
34163
|
}
|
|
34191
|
-
// ONLINE
|
|
34192
|
-
if (topic ===
|
|
34164
|
+
// 3) ONLINE
|
|
34165
|
+
if (topic === topics.online) {
|
|
34193
34166
|
const online = truthy(np) || np === 'online';
|
|
34194
|
-
this.online
|
|
34195
|
-
|
|
34196
|
-
|
|
34197
|
-
|
|
34198
|
-
|
|
34167
|
+
this.setAndEmit('online', online, sdk_1.ScryptedInterface.Online, {
|
|
34168
|
+
topic,
|
|
34169
|
+
raw,
|
|
34170
|
+
propLabel: 'online',
|
|
34171
|
+
});
|
|
34199
34172
|
return;
|
|
34200
34173
|
}
|
|
34201
|
-
//
|
|
34202
|
-
if (topic ===
|
|
34174
|
+
// 4) LOW BATTERY (bool)
|
|
34175
|
+
if (topic === topics.lowBattery) {
|
|
34203
34176
|
const isLow = np === 'true' ||
|
|
34204
34177
|
np === '1' ||
|
|
34205
34178
|
np === 'on' ||
|
|
@@ -34208,22 +34181,32 @@ class BaseMqttSensor extends sdk_1.ScryptedDeviceBase {
|
|
|
34208
34181
|
truthy(np);
|
|
34209
34182
|
this.lowBattery = isLow;
|
|
34210
34183
|
try {
|
|
34211
|
-
// per l’interfaccia Battery di Scrypted un booleano "low" è sufficiente
|
|
34212
34184
|
this.onDeviceEvent(sdk_1.ScryptedInterface.Battery, isLow);
|
|
34213
34185
|
}
|
|
34214
|
-
catch {
|
|
34186
|
+
catch (e) {
|
|
34187
|
+
this.console?.warn?.('Battery low event error', e);
|
|
34188
|
+
}
|
|
34189
|
+
if (RUNTIME.logSensors) {
|
|
34190
|
+
this.console?.log?.(`[Sensor] ${this.cfg.name} [${this.cfg.id}] lowBattery -> ${isLow} (${topic}="${raw}")`);
|
|
34191
|
+
}
|
|
34215
34192
|
return;
|
|
34216
34193
|
}
|
|
34217
|
-
//
|
|
34218
|
-
if (topic ===
|
|
34194
|
+
// 5) BATTERY LEVEL (0..100)
|
|
34195
|
+
if (topic === topics.batteryLevel) {
|
|
34219
34196
|
const n = Number(raw);
|
|
34220
34197
|
if (isFinite(n)) {
|
|
34221
|
-
const pct =
|
|
34222
|
-
this.batteryLevel
|
|
34198
|
+
const pct = clamp(n, 0, 100);
|
|
34199
|
+
this.setAndEmit('batteryLevel', pct, sdk_1.ScryptedInterface.Battery, {
|
|
34200
|
+
topic,
|
|
34201
|
+
raw,
|
|
34202
|
+
propLabel: 'batteryLevel',
|
|
34203
|
+
});
|
|
34223
34204
|
try {
|
|
34224
34205
|
this.onDeviceEvent(sdk_1.ScryptedInterface.Battery, { level: pct });
|
|
34225
34206
|
}
|
|
34226
|
-
catch {
|
|
34207
|
+
catch (e) {
|
|
34208
|
+
this.console?.warn?.('Battery level event error', e);
|
|
34209
|
+
}
|
|
34227
34210
|
}
|
|
34228
34211
|
return;
|
|
34229
34212
|
}
|
package/dist/plugin.zip
CHANGED
|
Binary file
|
package/package.json
CHANGED