@homebridge-plugins/homebridge-tuya 3.0.0-beta.7 → 3.0.0-beta.8
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/config.schema.json +385 -350
- package/dist/cloud/api/TuyaOpenAPI.js +5 -9
- package/dist/cloud/api/TuyaOpenAPI.js.map +1 -1
- package/dist/cloud/api/TuyaOpenMQ.js +3 -4
- package/dist/cloud/api/TuyaOpenMQ.js.map +1 -1
- package/dist/cloud/device/{TuyaDeviceManager.js → TuyaCloudDeviceManager.js} +96 -80
- package/dist/cloud/device/TuyaCloudDeviceManager.js.map +1 -0
- package/dist/cloud/device/TuyaCustomDeviceManager.js +74 -5
- package/dist/cloud/device/TuyaCustomDeviceManager.js.map +1 -1
- package/dist/cloud/device/TuyaHomeDeviceManager.js +76 -9
- package/dist/cloud/device/TuyaHomeDeviceManager.js.map +1 -1
- package/dist/config.js +26 -5
- package/dist/config.js.map +1 -1
- package/dist/local/DynamicChildDiscovery.js +2 -1
- package/dist/local/DynamicChildDiscovery.js.map +1 -1
- package/dist/local/LocalDevice.js +3 -2
- package/dist/local/LocalDevice.js.map +1 -1
- package/dist/local/LocalDeviceManager.js +72 -123
- package/dist/local/LocalDeviceManager.js.map +1 -1
- package/dist/local/TuyaDiscovery.js +14 -7
- package/dist/local/TuyaDiscovery.js.map +1 -1
- package/dist/local/ZigbeeGatewayDetection.js +2 -2
- package/dist/local/ZigbeeGatewayDetection.js.map +1 -1
- package/dist/local/protocol/ProtocolUtilities.js +34 -17
- package/dist/local/protocol/ProtocolUtilities.js.map +1 -1
- package/dist/local/protocol/ProtocolV31V32.js +4 -2
- package/dist/local/protocol/ProtocolV31V32.js.map +1 -1
- package/dist/local/protocol/ProtocolV33.js +4 -2
- package/dist/local/protocol/ProtocolV33.js.map +1 -1
- package/dist/local/protocol/ProtocolV34.js +10 -5
- package/dist/local/protocol/ProtocolV34.js.map +1 -1
- package/dist/local/protocol/ProtocolV35.js +8 -4
- package/dist/local/protocol/ProtocolV35.js.map +1 -1
- package/dist/platform.js +229 -493
- package/dist/platform.js.map +1 -1
- package/dist/settings.js +0 -2
- package/dist/settings.js.map +1 -1
- package/dist/shared/TuyaDeviceManager.js +86 -0
- package/dist/shared/TuyaDeviceManager.js.map +1 -0
- package/dist/shared/TuyaHybridDeviceManager.js +145 -0
- package/dist/shared/TuyaHybridDeviceManager.js.map +1 -0
- package/dist/shared/accessory/AccessoryFactory.js +334 -0
- package/dist/shared/accessory/AccessoryFactory.js.map +1 -0
- package/dist/shared/{accessories → accessory}/AirConditionerAccessory.js.map +1 -1
- package/dist/shared/{accessories → accessory}/AirPurifierAccessory.js.map +1 -1
- package/dist/shared/accessory/AirQualitySensorAccessory.js.map +1 -0
- package/dist/shared/{accessories → accessory}/BaseAccessory.js +16 -95
- package/dist/shared/accessory/BaseAccessory.js.map +1 -0
- package/dist/shared/{accessories → accessory}/BlindsAccessory.js.map +1 -1
- package/dist/shared/{accessories → accessory}/CameraAccessory.js.map +1 -1
- package/dist/shared/{accessories → accessory}/CarbonDioxideSensorAccessory.js.map +1 -1
- package/dist/shared/{accessories → accessory}/CarbonMonoxideSensorAccessory.js.map +1 -1
- package/dist/shared/{accessories → accessory}/ContactSensorAccessory.js.map +1 -1
- package/dist/shared/{accessories → accessory}/DehumidifierAccessory.js.map +1 -1
- package/dist/shared/{accessories → accessory}/DiffuserAccessory.js.map +1 -1
- package/dist/shared/{accessories → accessory}/DimmerAccessory.js.map +1 -1
- package/dist/shared/{accessories → accessory}/DoorbellAccessory.js.map +1 -1
- package/dist/shared/{accessories → accessory}/ExtractionHoodAccessory.js.map +1 -1
- package/dist/shared/{accessories → accessory}/FanAccessory.js.map +1 -1
- package/dist/shared/{accessories → accessory}/GarageDoorAccessory.js.map +1 -1
- package/dist/shared/{accessories → accessory}/HeaterAccessory.js.map +1 -1
- package/dist/shared/{accessories → accessory}/HeaterAccessory_old.js.map +1 -1
- package/dist/shared/accessory/HumanPresenceSensorAccessory.js.map +1 -0
- package/dist/shared/{accessories → accessory}/HumidifierAccessory.js.map +1 -1
- package/dist/shared/accessory/IRAirConditionerAccessory.js.map +1 -0
- package/dist/shared/accessory/IRControlHubAccessory.js.map +1 -0
- package/dist/shared/accessory/IRControlHubSubAccessory.js.map +1 -0
- package/dist/shared/accessory/IRGenericAccessory.js.map +1 -0
- package/dist/shared/{accessories → accessory}/LeakSensorAccessory.js.map +1 -1
- package/dist/shared/{accessories → accessory}/LightAccessory.js.map +1 -1
- package/dist/shared/{accessories → accessory}/LightSensorAccessory.js.map +1 -1
- package/dist/shared/{accessories → accessory}/LocationWeatherAccessory.js +1 -1
- package/dist/shared/accessory/LocationWeatherAccessory.js.map +1 -0
- package/dist/shared/{accessories → accessory}/LockAccessory.js +3 -3
- package/dist/shared/{accessories → accessory}/LockAccessory.js.map +1 -1
- package/dist/shared/accessory/MotionSensorAccessory.js.map +1 -0
- package/dist/shared/accessory/OutletAccessory.js.map +1 -0
- package/dist/shared/{accessories → accessory}/PetFeederAccessory.js.map +1 -1
- package/dist/shared/{accessories → accessory}/SceneAccessory.js +1 -1
- package/dist/shared/accessory/SceneAccessory.js.map +1 -0
- package/dist/shared/accessory/SceneSwitchAccessory.js.map +1 -0
- package/dist/shared/accessory/SecuritySystemAccessory.js.map +1 -0
- package/dist/shared/{accessories → accessory}/SmokeSensorAccessory.js.map +1 -1
- package/dist/shared/{accessories → accessory}/SwitchAccessory.js +1 -45
- package/dist/shared/accessory/SwitchAccessory.js.map +1 -0
- package/dist/shared/accessory/TemperatureHumiditySensorAccessory.js.map +1 -0
- package/dist/shared/{accessories → accessory}/ThermostatAccessory.js.map +1 -1
- package/dist/shared/{accessories → accessory}/TowerRackAccessory.js.map +1 -1
- package/dist/shared/{accessories → accessory}/ValveAccessory.js.map +1 -1
- package/dist/shared/{accessories → accessory}/VibrationSensorAccessory.js.map +1 -1
- package/dist/shared/accessory/WeatherStationAccessory.js.map +1 -0
- package/dist/shared/accessory/WetBulbGlobeTemperatureAccessory.js.map +1 -0
- package/dist/shared/{accessories → accessory}/WhiteNoiseLightAccessory.js +1 -0
- package/dist/shared/accessory/WhiteNoiseLightAccessory.js.map +1 -0
- package/dist/shared/accessory/WindowAccessory.js.map +1 -0
- package/dist/shared/{accessories → accessory}/WindowCoveringAccessory.js.map +1 -1
- package/dist/shared/{accessories → accessory}/WirelessSwitchAccessory.js.map +1 -1
- package/dist/shared/accessory/characteristic/Active.js.map +1 -0
- package/dist/shared/accessory/characteristic/AirQuality.js.map +1 -0
- package/dist/shared/accessory/characteristic/CurrentRelativeHumidity.js.map +1 -0
- package/dist/shared/accessory/characteristic/CurrentTemperature.js.map +1 -0
- package/dist/shared/accessory/characteristic/CurrentWeather.js.map +1 -0
- package/dist/shared/accessory/characteristic/CurrentWeatherByOpenMeteo.js.map +1 -0
- package/dist/shared/accessory/characteristic/CurrentWetBulbGlobeTemperature.js.map +1 -0
- package/dist/shared/{accessories → accessory}/characteristic/EnergyUsage.js +0 -5
- package/dist/shared/accessory/characteristic/EnergyUsage.js.map +1 -0
- package/dist/shared/{accessories → accessory}/characteristic/Light.js +5 -3
- package/dist/shared/accessory/characteristic/Light.js.map +1 -0
- package/dist/shared/accessory/characteristic/LightSensor.js.map +1 -0
- package/dist/shared/accessory/characteristic/LockPhysicalControls.js.map +1 -0
- package/dist/shared/accessory/characteristic/MotionDetected.js.map +1 -0
- package/dist/shared/accessory/characteristic/Name.js.map +1 -0
- package/dist/shared/accessory/characteristic/OccupancyDetected.js.map +1 -0
- package/dist/shared/{accessories → accessory}/characteristic/On.js +1 -0
- package/dist/shared/accessory/characteristic/On.js.map +1 -0
- package/dist/shared/accessory/characteristic/OutletInUse.js.map +1 -0
- package/dist/shared/accessory/characteristic/ProgrammableSwitchEvent.js.map +1 -0
- package/dist/shared/accessory/characteristic/RelativeHumidityDehumidifierThreshold.js.map +1 -0
- package/dist/shared/accessory/characteristic/RotationSpeed.js.map +1 -0
- package/dist/shared/accessory/characteristic/SecuritySystemState.js.map +1 -0
- package/dist/shared/accessory/characteristic/SwingMode.js.map +1 -0
- package/dist/shared/accessory/characteristic/TargetTemperature.js.map +1 -0
- package/dist/shared/accessory/characteristic/TemperatureDisplayUnits.js.map +1 -0
- package/dist/shared/util/ConfigHash.js +2 -2
- package/dist/shared/util/ConfigHash.js.map +1 -1
- package/dist/shared/util/ConfigMigrator.js +162 -0
- package/dist/shared/util/ConfigMigrator.js.map +1 -0
- package/dist/shared/util/FfmpegStreamingProcess.js.map +1 -1
- package/dist/shared/util/InfraredTool.js +0 -2
- package/dist/shared/util/InfraredTool.js.map +1 -1
- package/dist/shared/util/Logger.js +69 -10
- package/dist/shared/util/Logger.js.map +1 -1
- package/dist/shared/util/TuyaStreamDelegate.js +2 -8
- package/dist/shared/util/TuyaStreamDelegate.js.map +1 -1
- package/dist/shared/util/util.js +13 -4
- package/dist/shared/util/util.js.map +1 -1
- package/eslint.config.mjs +0 -1
- package/{jest.config.js → jest.config.ts} +5 -2
- package/package.json +8 -5
- package/test/ConfigMigrator.test.ts +634 -0
- package/test/Logger.test.ts +482 -0
- package/test/accessoryFactory.data.test.ts +172 -0
- package/test/accessoryFactory.test.ts +64 -35
- package/test/config.test.ts +17 -13
- package/test/custom.test.ts +2 -2
- package/test/errorHandling.test.ts +12 -12
- package/test/home.test.ts +1 -1
- package/test/hybridDeviceManager.test.ts +808 -0
- package/test/localDevice.test.ts +21 -50
- package/test/localDeviceManager.behavior.test.ts +16 -30
- package/test/localDeviceManager.test.ts +23 -39
- package/test/mqttMessages.test.ts +33 -14
- package/test/platform.test.ts +340 -810
- package/test/platform.validation.local.test.ts +58 -119
- package/test/tuyaCustomDeviceManager.test.ts +106 -16
- package/test/tuyaDeviceManager.test.ts +636 -639
- package/test/tuyaDiscovery.test.ts +21 -33
- package/test/tuyaHomeDeviceManager.test.ts +109 -18
- package/test/tuyaOpenAPI.test.ts +25 -44
- package/test/tuyaOpenMQ.test.ts +15 -23
- package/test/util.test.ts +87 -7
- package/test/zigbee/LocalDevice.zigbee.test.ts +14 -18
- package/test/zigbee/LocalDeviceManager.cloud-discovery.test.ts +19 -20
- package/test/zigbee/LocalDeviceManager.zigbee.reconnect.test.ts +18 -20
- package/test/zigbee/LocalDeviceManager.zigbee.test.ts +31 -34
- package/test/zigbee/ZigbeeGatewayDetection.test.ts +2 -2
- package/dist/cloud/device/TuyaDeviceManager.js.map +0 -1
- package/dist/local/CloudLocalReconciliation.js +0 -180
- package/dist/local/CloudLocalReconciliation.js.map +0 -1
- package/dist/shared/accessories/AccessoryFactory.js +0 -309
- package/dist/shared/accessories/AccessoryFactory.js.map +0 -1
- package/dist/shared/accessories/AirQualitySensorAccessory.js.map +0 -1
- package/dist/shared/accessories/BaseAccessory.js.map +0 -1
- package/dist/shared/accessories/HumanPresenceSensorAccessory.js.map +0 -1
- package/dist/shared/accessories/IRAirConditionerAccessory.js.map +0 -1
- package/dist/shared/accessories/IRControlHubAccessory.js.map +0 -1
- package/dist/shared/accessories/IRControlHubSubAccessory.js.map +0 -1
- package/dist/shared/accessories/IRGenericAccessory.js.map +0 -1
- package/dist/shared/accessories/LocationWeatherAccessory.js.map +0 -1
- package/dist/shared/accessories/MotionSensorAccessory.js.map +0 -1
- package/dist/shared/accessories/OutletAccessory.js.map +0 -1
- package/dist/shared/accessories/SceneAccessory.js.map +0 -1
- package/dist/shared/accessories/SceneSwitchAccessory.js.map +0 -1
- package/dist/shared/accessories/SecuritySystemAccessory.js.map +0 -1
- package/dist/shared/accessories/SwitchAccessory.js.map +0 -1
- package/dist/shared/accessories/TemperatureHumiditySensorAccessory.js.map +0 -1
- package/dist/shared/accessories/WeatherStationAccessory.js.map +0 -1
- package/dist/shared/accessories/WetBulbGlobeTemperatureAccessory.js.map +0 -1
- package/dist/shared/accessories/WhiteNoiseLightAccessory.js.map +0 -1
- package/dist/shared/accessories/WindowAccessory.js.map +0 -1
- package/dist/shared/accessories/characteristic/Active.js.map +0 -1
- package/dist/shared/accessories/characteristic/AirQuality.js.map +0 -1
- package/dist/shared/accessories/characteristic/CurrentRelativeHumidity.js.map +0 -1
- package/dist/shared/accessories/characteristic/CurrentTemperature.js.map +0 -1
- package/dist/shared/accessories/characteristic/CurrentWeather.js.map +0 -1
- package/dist/shared/accessories/characteristic/CurrentWeatherByOpenMeteo.js.map +0 -1
- package/dist/shared/accessories/characteristic/CurrentWetBulbGlobeTemperature.js.map +0 -1
- package/dist/shared/accessories/characteristic/EnergyUsage.js.map +0 -1
- package/dist/shared/accessories/characteristic/Light.js.map +0 -1
- package/dist/shared/accessories/characteristic/LightSensor.js.map +0 -1
- package/dist/shared/accessories/characteristic/LockPhysicalControls.js.map +0 -1
- package/dist/shared/accessories/characteristic/MotionDetected.js.map +0 -1
- package/dist/shared/accessories/characteristic/Name.js.map +0 -1
- package/dist/shared/accessories/characteristic/OccupancyDetected.js.map +0 -1
- package/dist/shared/accessories/characteristic/On.js.map +0 -1
- package/dist/shared/accessories/characteristic/OutletInUse.js.map +0 -1
- package/dist/shared/accessories/characteristic/ProgrammableSwitchEvent.js.map +0 -1
- package/dist/shared/accessories/characteristic/RelativeHumidityDehumidifierThreshold.js.map +0 -1
- package/dist/shared/accessories/characteristic/RotationSpeed.js.map +0 -1
- package/dist/shared/accessories/characteristic/SecuritySystemState.js.map +0 -1
- package/dist/shared/accessories/characteristic/SwingMode.js.map +0 -1
- package/dist/shared/accessories/characteristic/TargetTemperature.js.map +0 -1
- package/dist/shared/accessories/characteristic/TemperatureDisplayUnits.js.map +0 -1
- package/test/zigbee/CloudLocalReconciliation.test.ts +0 -284
- package/tuya-local-configs/dev-1.hash +0 -1
- package/tuya-local-configs/device1.hash +0 -1
- /package/dist/shared/{accessories → accessory}/AirConditionerAccessory.js +0 -0
- /package/dist/shared/{accessories → accessory}/AirPurifierAccessory.js +0 -0
- /package/dist/shared/{accessories → accessory}/AirQualitySensorAccessory.js +0 -0
- /package/dist/shared/{accessories → accessory}/BlindsAccessory.js +0 -0
- /package/dist/shared/{accessories → accessory}/CameraAccessory.js +0 -0
- /package/dist/shared/{accessories → accessory}/CarbonDioxideSensorAccessory.js +0 -0
- /package/dist/shared/{accessories → accessory}/CarbonMonoxideSensorAccessory.js +0 -0
- /package/dist/shared/{accessories → accessory}/ContactSensorAccessory.js +0 -0
- /package/dist/shared/{accessories → accessory}/DehumidifierAccessory.js +0 -0
- /package/dist/shared/{accessories → accessory}/DiffuserAccessory.js +0 -0
- /package/dist/shared/{accessories → accessory}/DimmerAccessory.js +0 -0
- /package/dist/shared/{accessories → accessory}/DoorbellAccessory.js +0 -0
- /package/dist/shared/{accessories → accessory}/ExtractionHoodAccessory.js +0 -0
- /package/dist/shared/{accessories → accessory}/FanAccessory.js +0 -0
- /package/dist/shared/{accessories → accessory}/GarageDoorAccessory.js +0 -0
- /package/dist/shared/{accessories → accessory}/HeaterAccessory.js +0 -0
- /package/dist/shared/{accessories → accessory}/HeaterAccessory_old.js +0 -0
- /package/dist/shared/{accessories → accessory}/HumanPresenceSensorAccessory.js +0 -0
- /package/dist/shared/{accessories → accessory}/HumidifierAccessory.js +0 -0
- /package/dist/shared/{accessories → accessory}/IRAirConditionerAccessory.js +0 -0
- /package/dist/shared/{accessories → accessory}/IRControlHubAccessory.js +0 -0
- /package/dist/shared/{accessories → accessory}/IRControlHubSubAccessory.js +0 -0
- /package/dist/shared/{accessories → accessory}/IRGenericAccessory.js +0 -0
- /package/dist/shared/{accessories → accessory}/LeakSensorAccessory.js +0 -0
- /package/dist/shared/{accessories → accessory}/LightAccessory.js +0 -0
- /package/dist/shared/{accessories → accessory}/LightSensorAccessory.js +0 -0
- /package/dist/shared/{accessories → accessory}/MotionSensorAccessory.js +0 -0
- /package/dist/shared/{accessories → accessory}/OutletAccessory.js +0 -0
- /package/dist/shared/{accessories → accessory}/PetFeederAccessory.js +0 -0
- /package/dist/shared/{accessories → accessory}/SceneSwitchAccessory.js +0 -0
- /package/dist/shared/{accessories → accessory}/SecuritySystemAccessory.js +0 -0
- /package/dist/shared/{accessories → accessory}/SmokeSensorAccessory.js +0 -0
- /package/dist/shared/{accessories → accessory}/TemperatureHumiditySensorAccessory.js +0 -0
- /package/dist/shared/{accessories → accessory}/ThermostatAccessory.js +0 -0
- /package/dist/shared/{accessories → accessory}/TowerRackAccessory.js +0 -0
- /package/dist/shared/{accessories → accessory}/ValveAccessory.js +0 -0
- /package/dist/shared/{accessories → accessory}/VibrationSensorAccessory.js +0 -0
- /package/dist/shared/{accessories → accessory}/WeatherStationAccessory.js +0 -0
- /package/dist/shared/{accessories → accessory}/WetBulbGlobeTemperatureAccessory.js +0 -0
- /package/dist/shared/{accessories → accessory}/WindowAccessory.js +0 -0
- /package/dist/shared/{accessories → accessory}/WindowCoveringAccessory.js +0 -0
- /package/dist/shared/{accessories → accessory}/WirelessSwitchAccessory.js +0 -0
- /package/dist/shared/{accessories → accessory}/characteristic/Active.js +0 -0
- /package/dist/shared/{accessories → accessory}/characteristic/AirQuality.js +0 -0
- /package/dist/shared/{accessories → accessory}/characteristic/CurrentRelativeHumidity.js +0 -0
- /package/dist/shared/{accessories → accessory}/characteristic/CurrentTemperature.js +0 -0
- /package/dist/shared/{accessories → accessory}/characteristic/CurrentWeather.js +0 -0
- /package/dist/shared/{accessories → accessory}/characteristic/CurrentWeatherByOpenMeteo.js +0 -0
- /package/dist/shared/{accessories → accessory}/characteristic/CurrentWetBulbGlobeTemperature.js +0 -0
- /package/dist/shared/{accessories → accessory}/characteristic/LightSensor.js +0 -0
- /package/dist/shared/{accessories → accessory}/characteristic/LockPhysicalControls.js +0 -0
- /package/dist/shared/{accessories → accessory}/characteristic/MotionDetected.js +0 -0
- /package/dist/shared/{accessories → accessory}/characteristic/Name.js +0 -0
- /package/dist/shared/{accessories → accessory}/characteristic/OccupancyDetected.js +0 -0
- /package/dist/shared/{accessories → accessory}/characteristic/OutletInUse.js +0 -0
- /package/dist/shared/{accessories → accessory}/characteristic/ProgrammableSwitchEvent.js +0 -0
- /package/dist/shared/{accessories → accessory}/characteristic/RelativeHumidityDehumidifierThreshold.js +0 -0
- /package/dist/shared/{accessories → accessory}/characteristic/RotationSpeed.js +0 -0
- /package/dist/shared/{accessories → accessory}/characteristic/SecuritySystemState.js +0 -0
- /package/dist/shared/{accessories → accessory}/characteristic/SwingMode.js +0 -0
- /package/dist/shared/{accessories → accessory}/characteristic/TargetTemperature.js +0 -0
- /package/dist/shared/{accessories → accessory}/characteristic/TemperatureDisplayUnits.js +0 -0
|
@@ -37,11 +37,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
39
|
const TuyaDevice_1 = __importStar(require("../cloud/device/TuyaDevice"));
|
|
40
|
-
const
|
|
41
|
-
const TuyaDeviceManager_1 = __importDefault(require("../cloud/device/TuyaDeviceManager"));
|
|
40
|
+
const TuyaDeviceManager_1 = __importDefault(require("../shared/TuyaDeviceManager"));
|
|
42
41
|
const TuyaDiscovery_1 = __importDefault(require("./TuyaDiscovery"));
|
|
43
42
|
const LocalDevice_1 = __importDefault(require("./LocalDevice"));
|
|
44
|
-
const Logger_1 = require("../shared/util/Logger");
|
|
45
43
|
const ConfigHash_1 = require("../shared/util/ConfigHash");
|
|
46
44
|
const ZigbeeGatewayDetection_1 = require("./ZigbeeGatewayDetection");
|
|
47
45
|
const DynamicChildDiscovery_1 = require("./DynamicChildDiscovery");
|
|
@@ -92,12 +90,8 @@ function buildDpToCodeMap(dpMapping) {
|
|
|
92
90
|
*/
|
|
93
91
|
class LocalDeviceManager extends TuyaDeviceManager_1.default {
|
|
94
92
|
// ──────────────────────────────────────────────────────────────────────────
|
|
95
|
-
constructor(localConfig,
|
|
96
|
-
|
|
97
|
-
const dummyLog = new Logger_1.PrefixLogger(log, 'LocalDummy', false);
|
|
98
|
-
const dummyApi = new TuyaOpenAPI_1.default('', '', '', dummyLog);
|
|
99
|
-
super(dummyApi, false);
|
|
100
|
-
this.localDevices = [];
|
|
93
|
+
constructor(localConfig, debugMode = false) {
|
|
94
|
+
super(debugMode);
|
|
101
95
|
this.localConnections = new Map();
|
|
102
96
|
this.discoveryTimeout = null;
|
|
103
97
|
this.rediscoveryTimeout = null;
|
|
@@ -113,20 +107,48 @@ class LocalDeviceManager extends TuyaDeviceManager_1.default {
|
|
|
113
107
|
this.discoveredVersions = new Map();
|
|
114
108
|
// Pending local response watches to cancel superseded commands
|
|
115
109
|
this.pendingLocalResponseWatchers = new Map();
|
|
116
|
-
// Tracks which devices had config changes
|
|
117
|
-
this.configChanged = new Map();
|
|
118
110
|
// ── Zigbee gateway/child support ──────────────────────────────────────────
|
|
119
111
|
/** Parent gateway ID → GatewayRelationship (derived from config at init). */
|
|
120
112
|
this.gatewayRelationships = new Map();
|
|
121
113
|
/** Parent gateway device ID → its active LocalDevice connection. */
|
|
122
114
|
this.gatewayConnections = new Map();
|
|
123
|
-
// Stop the MQ that the parent started
|
|
124
|
-
this.mq.stop();
|
|
125
|
-
this.parentLog = log;
|
|
126
|
-
this.log = new Logger_1.PrefixLogger(log, 'LocalDeviceManager', false);
|
|
127
115
|
this.config = localConfig;
|
|
128
|
-
this.discovery = new TuyaDiscovery_1.default(
|
|
129
|
-
|
|
116
|
+
this.discovery = new TuyaDiscovery_1.default();
|
|
117
|
+
}
|
|
118
|
+
async pullDevices() {
|
|
119
|
+
await this.initLocalDevices();
|
|
120
|
+
this.connectAllDevices();
|
|
121
|
+
const devices = [...this.devices];
|
|
122
|
+
this.log.info(`Registered ${devices.length} local device(s).`);
|
|
123
|
+
return devices;
|
|
124
|
+
}
|
|
125
|
+
createDeviceConfigHash(device) {
|
|
126
|
+
const cfg = this.config.devices?.find(config => config.tuyaDeviceId === device.id);
|
|
127
|
+
if (!cfg) {
|
|
128
|
+
return '';
|
|
129
|
+
}
|
|
130
|
+
// Check if config has changed since last run
|
|
131
|
+
// Hash the config fields that affect device behavior
|
|
132
|
+
const configToHash = {
|
|
133
|
+
tuyaDeviceId: cfg.tuyaDeviceId,
|
|
134
|
+
name: cfg.name,
|
|
135
|
+
tuyaKey: cfg.tuyaKey,
|
|
136
|
+
dpMapping: cfg.dpMapping,
|
|
137
|
+
switchCount: cfg.switchCount ?? device['switchCount'],
|
|
138
|
+
outletCount: cfg.outletCount ?? device['outletCount'],
|
|
139
|
+
protocolVersion: cfg.protocolVersion,
|
|
140
|
+
category: cfg.category,
|
|
141
|
+
};
|
|
142
|
+
return ConfigHash_1.ConfigHash.computeHash(configToHash);
|
|
143
|
+
}
|
|
144
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
145
|
+
configDevice(device) {
|
|
146
|
+
// In the Local case, device objects are generally created from the LocalConfig, so there is nothing that needs to be handled here.
|
|
147
|
+
}
|
|
148
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
149
|
+
getDeviceSchemaConfig(device, dpCode) {
|
|
150
|
+
// In the Local case, device objects are generally created from the LocalConfig, so there is nothing that needs to be handled here.
|
|
151
|
+
return undefined;
|
|
130
152
|
}
|
|
131
153
|
/**
|
|
132
154
|
* Initialise discovery and register manually configured devices.
|
|
@@ -160,7 +182,7 @@ class LocalDeviceManager extends TuyaDeviceManager_1.default {
|
|
|
160
182
|
this._registerDeviceConfig(cfg);
|
|
161
183
|
}
|
|
162
184
|
// Validate devices have keys if auto-discovery is disabled
|
|
163
|
-
if (this.config.autoDiscoverDevices
|
|
185
|
+
if (!this.config.autoDiscoverDevices) {
|
|
164
186
|
for (const cfg of this.config.devices) {
|
|
165
187
|
if (!cfg.tuyaKey && !ZigbeeGatewayDetection_1.ZigbeeGatewayDetection.isChild(cfg)) {
|
|
166
188
|
const deviceName = cfg.name || cfg.tuyaDeviceId;
|
|
@@ -172,7 +194,7 @@ class LocalDeviceManager extends TuyaDeviceManager_1.default {
|
|
|
172
194
|
}
|
|
173
195
|
// Start UDP discovery unless explicitly disabled
|
|
174
196
|
if (this.config.autoDiscoverDevices !== false) {
|
|
175
|
-
this.discovery.on(
|
|
197
|
+
this.discovery.on(TuyaDiscovery_1.default.Events.DEVICE_DISCOVER, (result) => {
|
|
176
198
|
this._onDiscovered(result);
|
|
177
199
|
});
|
|
178
200
|
this._startDiscoveryPhase();
|
|
@@ -209,7 +231,7 @@ class LocalDeviceManager extends TuyaDeviceManager_1.default {
|
|
|
209
231
|
}
|
|
210
232
|
/** Returns ALL devices (both local shadow entries from this manager). */
|
|
211
233
|
getDevice(deviceID) {
|
|
212
|
-
return this.
|
|
234
|
+
return this.devices.find(d => d.id === deviceID);
|
|
213
235
|
}
|
|
214
236
|
/**
|
|
215
237
|
* Send commands to a local device.
|
|
@@ -235,7 +257,7 @@ class LocalDeviceManager extends TuyaDeviceManager_1.default {
|
|
|
235
257
|
return;
|
|
236
258
|
}
|
|
237
259
|
// Log the command for user visibility
|
|
238
|
-
const device = this.
|
|
260
|
+
const device = this.getDevice(deviceID);
|
|
239
261
|
const deviceName = device?.name || deviceID;
|
|
240
262
|
const commandStr = commands.map(c => `${c.code}=${c.value}`).join(', ');
|
|
241
263
|
this.log.info(`[${deviceName}] Sending command (local): ${commandStr}`);
|
|
@@ -349,52 +371,11 @@ class LocalDeviceManager extends TuyaDeviceManager_1.default {
|
|
|
349
371
|
this.pendingLocalResponseWatchers.delete(deviceID);
|
|
350
372
|
}
|
|
351
373
|
}
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
const dpMap = this.dpMaps.get(deviceID) ?? {};
|
|
358
|
-
const statusDps = new Set();
|
|
359
|
-
for (const status of statusUpdates) {
|
|
360
|
-
const dp = dpMap[status.code];
|
|
361
|
-
statusDps.add(dp !== undefined ? String(dp) : String(status.code));
|
|
362
|
-
const existing = device.status.find(s => s.code === status.code);
|
|
363
|
-
if (existing) {
|
|
364
|
-
existing.value = status.value;
|
|
365
|
-
}
|
|
366
|
-
else {
|
|
367
|
-
device.status.push({ code: status.code, value: status.value });
|
|
368
|
-
}
|
|
369
|
-
}
|
|
370
|
-
const watchers = this.pendingLocalResponseWatchers.get(deviceID);
|
|
371
|
-
if (!watchers || watchers.length === 0) {
|
|
372
|
-
return;
|
|
373
|
-
}
|
|
374
|
-
const remaining = [];
|
|
375
|
-
for (const watcher of watchers) {
|
|
376
|
-
let matched = false;
|
|
377
|
-
for (const dp of watcher.expectedDps) {
|
|
378
|
-
if (statusDps.has(dp)) {
|
|
379
|
-
matched = true;
|
|
380
|
-
break;
|
|
381
|
-
}
|
|
382
|
-
}
|
|
383
|
-
if (matched) {
|
|
384
|
-
watcher.cleanup();
|
|
385
|
-
watcher.resolve(true);
|
|
386
|
-
}
|
|
387
|
-
else {
|
|
388
|
-
remaining.push(watcher);
|
|
389
|
-
}
|
|
390
|
-
}
|
|
391
|
-
if (remaining.length > 0) {
|
|
392
|
-
this.pendingLocalResponseWatchers.set(deviceID, remaining);
|
|
393
|
-
}
|
|
394
|
-
else {
|
|
395
|
-
this.pendingLocalResponseWatchers.delete(deviceID);
|
|
396
|
-
}
|
|
397
|
-
this.emit(TuyaDeviceManager_1.default.Events.DEVICE_STATUS_UPDATE, device, statusUpdates);
|
|
374
|
+
/**
|
|
375
|
+
* Logic to suppress unnecessary discovery processes.
|
|
376
|
+
*/
|
|
377
|
+
static isTargetDevice(device) {
|
|
378
|
+
return !device.isVirtualDevice();
|
|
398
379
|
}
|
|
399
380
|
// ── Private helpers ────────────────────────────────────────────────────────
|
|
400
381
|
/**
|
|
@@ -407,7 +388,7 @@ class LocalDeviceManager extends TuyaDeviceManager_1.default {
|
|
|
407
388
|
}
|
|
408
389
|
this.isDiscoveryActive = true;
|
|
409
390
|
this.discoveredInCurrentPhase.clear();
|
|
410
|
-
this.log.
|
|
391
|
+
this.log.debug('Starting discovery phase');
|
|
411
392
|
this.discovery.start();
|
|
412
393
|
// Stop after configurable timeout (config is in seconds, default 60s)
|
|
413
394
|
// Convert to milliseconds
|
|
@@ -420,16 +401,16 @@ class LocalDeviceManager extends TuyaDeviceManager_1.default {
|
|
|
420
401
|
this.discovery.stop();
|
|
421
402
|
// Report discovery results for clarity
|
|
422
403
|
if (this.discoveredInCurrentPhase.size > 0) {
|
|
423
|
-
this.log.
|
|
404
|
+
this.log.debug(`Ended discovery phase – rediscovered ${this.discoveredInCurrentPhase.size} device(s)`);
|
|
424
405
|
}
|
|
425
406
|
else {
|
|
426
407
|
// No devices found; they may be using cached IPs from previous discovery
|
|
427
|
-
const knownDevices = this.
|
|
408
|
+
const knownDevices = this.devices.filter(d => d.localKey);
|
|
428
409
|
if (knownDevices.length > 0) {
|
|
429
|
-
this.log.
|
|
410
|
+
this.log.debug(`Ended discovery phase – no new devices found (${knownDevices.length} configured device(s) using cached IP)`);
|
|
430
411
|
}
|
|
431
412
|
else {
|
|
432
|
-
this.log.
|
|
413
|
+
this.log.debug('Ended discovery phase – no devices found');
|
|
433
414
|
}
|
|
434
415
|
}
|
|
435
416
|
this.discoveryTimeout = null;
|
|
@@ -462,28 +443,11 @@ class LocalDeviceManager extends TuyaDeviceManager_1.default {
|
|
|
462
443
|
const effectiveMap = Object.assign({}, DEFAULT_DP_MAP, cfg.dpMapping ?? {});
|
|
463
444
|
this.dpMaps.set(cfg.tuyaDeviceId, effectiveMap);
|
|
464
445
|
this.reverseDpMaps.set(cfg.tuyaDeviceId, buildDpToCodeMap(effectiveMap));
|
|
465
|
-
const existing = this.
|
|
466
|
-
// Check if config has changed since last run
|
|
467
|
-
// Hash the config fields that affect device behavior
|
|
468
|
-
const configToHash = {
|
|
469
|
-
tuyaDeviceId: cfg.tuyaDeviceId,
|
|
470
|
-
name: cfg.name,
|
|
471
|
-
tuyaKey: cfg.tuyaKey,
|
|
472
|
-
dpMapping: cfg.dpMapping,
|
|
473
|
-
switchCount: cfg.switchCount,
|
|
474
|
-
outletCount: cfg.outletCount,
|
|
475
|
-
protocolVersion: cfg.protocolVersion,
|
|
476
|
-
category: cfg.category,
|
|
477
|
-
};
|
|
478
|
-
const { changed: configChanged } = this.configHash.hasConfigChanged(cfg.tuyaDeviceId, configToHash);
|
|
479
|
-
this.configChanged.set(cfg.tuyaDeviceId, configChanged);
|
|
480
|
-
if (configChanged && existing) {
|
|
481
|
-
this.log.info(`Device ${cfg.tuyaDeviceId}: config changed, rebuilding schema`);
|
|
482
|
-
}
|
|
446
|
+
const existing = this.getDevice(cfg.tuyaDeviceId);
|
|
483
447
|
if (!existing) {
|
|
484
|
-
const device = this._buildTuyaDevice(cfg
|
|
485
|
-
this.
|
|
486
|
-
this.devices.push(device);
|
|
448
|
+
const device = this._buildTuyaDevice(cfg);
|
|
449
|
+
this.configDevice(device);
|
|
450
|
+
this.devices.push(device);
|
|
487
451
|
this.emit(TuyaDeviceManager_1.default.Events.DEVICE_ADD, device);
|
|
488
452
|
}
|
|
489
453
|
}
|
|
@@ -531,24 +495,8 @@ class LocalDeviceManager extends TuyaDeviceManager_1.default {
|
|
|
531
495
|
device.switchCount = detectedCount;
|
|
532
496
|
// Auto-detection is now complete
|
|
533
497
|
device.isAutoDetecting = false;
|
|
534
|
-
//
|
|
535
|
-
|
|
536
|
-
const updatedConfigToHash = {
|
|
537
|
-
tuyaDeviceId: cfg.tuyaDeviceId,
|
|
538
|
-
name: cfg.name,
|
|
539
|
-
tuyaKey: cfg.tuyaKey,
|
|
540
|
-
dpMapping: cfg.dpMapping,
|
|
541
|
-
switchCount: detectedCount,
|
|
542
|
-
outletCount: cfg.outletCount,
|
|
543
|
-
protocolVersion: cfg.protocolVersion,
|
|
544
|
-
category: cfg.category,
|
|
545
|
-
};
|
|
546
|
-
const { changed: schemaChanged } = this.configHash.hasConfigChanged(deviceId, updatedConfigToHash);
|
|
547
|
-
if (schemaChanged) {
|
|
548
|
-
this.log.debug('[AutoDetect] Schema changed after auto-detection, marking config as changed');
|
|
549
|
-
device.configChanged = true;
|
|
550
|
-
this.configChanged.set(deviceId, true);
|
|
551
|
-
}
|
|
498
|
+
// update config
|
|
499
|
+
cfg.switchCount = detectedCount;
|
|
552
500
|
// Notify the platform so configureServices() is re-run and switch_2+ services are added.
|
|
553
501
|
this.emit(TuyaDeviceManager_1.default.Events.DEVICE_INFO_UPDATE, device, { schemaUpdated: true });
|
|
554
502
|
}
|
|
@@ -568,7 +516,7 @@ class LocalDeviceManager extends TuyaDeviceManager_1.default {
|
|
|
568
516
|
this.discoveredVersions.set(result.id, result.version);
|
|
569
517
|
this.discoveredInCurrentPhase.add(result.id);
|
|
570
518
|
// If we already have a TuyaDevice for this ID (from manual config), update its IP
|
|
571
|
-
const existing = this.
|
|
519
|
+
const existing = this.getDevice(result.id);
|
|
572
520
|
if (existing) {
|
|
573
521
|
this.log.info(`Device ${result.id} (v${result.version}) rediscovered @ ${result.ip} ` +
|
|
574
522
|
'– updating connection');
|
|
@@ -594,14 +542,14 @@ class LocalDeviceManager extends TuyaDeviceManager_1.default {
|
|
|
594
542
|
// New device discovered via UDP – create a placeholder TuyaDevice
|
|
595
543
|
// (it won't be controllable until the user provides a tuyaKey via config)
|
|
596
544
|
const device = this._buildDiscoveredDevice(result);
|
|
597
|
-
this.
|
|
545
|
+
this.configDevice(device);
|
|
598
546
|
this.devices.push(device);
|
|
599
547
|
const productInfo = result.productKey ? ` productKey=${result.productKey}` : '';
|
|
600
548
|
this.log.info(`Local device discovered: ${result.id} @ ${result.ip} (v${result.version}${productInfo}) ` +
|
|
601
549
|
'– add to config with tuyaKey to control');
|
|
602
550
|
this.emit(TuyaDeviceManager_1.default.Events.DEVICE_ADD, device);
|
|
603
551
|
}
|
|
604
|
-
_buildTuyaDevice(cfg
|
|
552
|
+
_buildTuyaDevice(cfg) {
|
|
605
553
|
const device = new TuyaDevice_1.default({});
|
|
606
554
|
const deviceId = cfg.tuyaDeviceId ?? '';
|
|
607
555
|
device.id = deviceId;
|
|
@@ -638,8 +586,7 @@ class LocalDeviceManager extends TuyaDeviceManager_1.default {
|
|
|
638
586
|
device.isLocal = true;
|
|
639
587
|
device.switchCount = switchCount;
|
|
640
588
|
device.isAutoDetecting = isAutoDetecting;
|
|
641
|
-
|
|
642
|
-
device.configChanged = configChanged;
|
|
589
|
+
this.log.debug(`_buildTuyaDevice local device:${JSON.stringify(device)}`);
|
|
643
590
|
return device;
|
|
644
591
|
}
|
|
645
592
|
_buildDiscoveredDevice(result) {
|
|
@@ -665,6 +612,7 @@ class LocalDeviceManager extends TuyaDeviceManager_1.default {
|
|
|
665
612
|
device.schema = [];
|
|
666
613
|
device.isLocal = true;
|
|
667
614
|
device.localVersion = result.version;
|
|
615
|
+
this.log.info(`_buildDiscoveredDevice local device:${JSON.stringify(device)}`);
|
|
668
616
|
return device;
|
|
669
617
|
}
|
|
670
618
|
_buildSyntheticSchema(dpMapping, switchCount = 1) {
|
|
@@ -694,6 +642,7 @@ class LocalDeviceManager extends TuyaDeviceManager_1.default {
|
|
|
694
642
|
this.log.debug(`Filtered switches: kept [${switchCodes.join(', ')}], excluded others`);
|
|
695
643
|
}
|
|
696
644
|
}
|
|
645
|
+
this.log.debug(`local device schema codes:${JSON.stringify(filteredMapping)}`);
|
|
697
646
|
return Object.keys(filteredMapping).map(code => ({
|
|
698
647
|
code,
|
|
699
648
|
mode: TuyaDevice_1.TuyaDeviceSchemaMode.READ_WRITE,
|
|
@@ -702,7 +651,7 @@ class LocalDeviceManager extends TuyaDeviceManager_1.default {
|
|
|
702
651
|
}));
|
|
703
652
|
}
|
|
704
653
|
_createConnection(deviceID) {
|
|
705
|
-
const device = this.
|
|
654
|
+
const device = this.getDevice(deviceID);
|
|
706
655
|
if (!device) {
|
|
707
656
|
return undefined;
|
|
708
657
|
}
|
|
@@ -725,7 +674,7 @@ class LocalDeviceManager extends TuyaDeviceManager_1.default {
|
|
|
725
674
|
ip,
|
|
726
675
|
version,
|
|
727
676
|
name: device.name,
|
|
728
|
-
}
|
|
677
|
+
});
|
|
729
678
|
conn.on('connect', () => {
|
|
730
679
|
device.online = true;
|
|
731
680
|
this.emit(TuyaDeviceManager_1.default.Events.DEVICE_INFO_UPDATE, device, { online: true });
|
|
@@ -797,7 +746,7 @@ class LocalDeviceManager extends TuyaDeviceManager_1.default {
|
|
|
797
746
|
* Preserves the child's state and event listeners while updating the parent reference.
|
|
798
747
|
*/
|
|
799
748
|
_reconnectZigbeeChild(childDeviceId, cid, childConn, newParentConn) {
|
|
800
|
-
const childTuyaDevice = this.
|
|
749
|
+
const childTuyaDevice = this.getDevice(childDeviceId);
|
|
801
750
|
if (!childTuyaDevice) {
|
|
802
751
|
this.log.warn(`Zigbee child ${childDeviceId}: TuyaDevice not found during reconnect`);
|
|
803
752
|
return;
|
|
@@ -837,10 +786,10 @@ class LocalDeviceManager extends TuyaDeviceManager_1.default {
|
|
|
837
786
|
this.log.debug(`Zigbee child ${childDeviceId}: using per-child category override`);
|
|
838
787
|
}
|
|
839
788
|
// Register TuyaDevice if not already present
|
|
840
|
-
if (!this.
|
|
789
|
+
if (!this.getDevice(childDeviceId)) {
|
|
841
790
|
this._registerDeviceConfig(effectiveChildCfg);
|
|
842
791
|
}
|
|
843
|
-
const childTuyaDevice = this.
|
|
792
|
+
const childTuyaDevice = this.getDevice(childDeviceId);
|
|
844
793
|
if (!childTuyaDevice) {
|
|
845
794
|
this.log.warn(`Could not build TuyaDevice for Zigbee child ${childDeviceId}`);
|
|
846
795
|
return;
|
|
@@ -852,7 +801,7 @@ class LocalDeviceManager extends TuyaDeviceManager_1.default {
|
|
|
852
801
|
ip: parentConn['context'].ip,
|
|
853
802
|
version: parentConn['context'].version,
|
|
854
803
|
name: cfg.name ?? childDeviceId,
|
|
855
|
-
}
|
|
804
|
+
});
|
|
856
805
|
// Link parent ↔ child
|
|
857
806
|
childConn.parentDevice = parentConn;
|
|
858
807
|
childConn.childId = cid;
|
|
@@ -958,7 +907,7 @@ class LocalDeviceManager extends TuyaDeviceManager_1.default {
|
|
|
958
907
|
}
|
|
959
908
|
/** Connect all configured local devices eagerly (called after init). */
|
|
960
909
|
connectAllDevices() {
|
|
961
|
-
for (const device of this.
|
|
910
|
+
for (const device of this.devices) {
|
|
962
911
|
const localKey = device.localKey;
|
|
963
912
|
if (!localKey) {
|
|
964
913
|
continue; // Skip if no local key configured
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LocalDeviceManager.js","sourceRoot":"","sources":["../../src/local/LocalDeviceManager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"LocalDeviceManager.js","sourceRoot":"","sources":["../../src/local/LocalDeviceManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,18 +9,24 @@ const events_1 = __importDefault(require("events"));
|
|
|
9
9
|
const Logger_1 = require("../shared/util/Logger");
|
|
10
10
|
const UDP_KEY = Buffer.from('6c1ec8e2bb9bb59ab50b0daf649b410a', 'hex');
|
|
11
11
|
const GCM_DISCOVERY_KEY = crypto_1.default.createHash('md5').update('yGAdlopoPVldABfn').digest();
|
|
12
|
+
var Events;
|
|
13
|
+
(function (Events) {
|
|
14
|
+
Events["DEVICE_DISCOVER"] = "discover";
|
|
15
|
+
Events["END_DISCOVERY"] = "end";
|
|
16
|
+
})(Events || (Events = {}));
|
|
12
17
|
/**
|
|
13
18
|
* TuyaDiscovery – listens on UDP 6666 / 6667 (v3.1–3.4) and 7000 (v3.5)
|
|
14
19
|
* for Tuya local broadcast packets and emits 'discover' events.
|
|
15
20
|
*/
|
|
16
21
|
class TuyaDiscovery extends events_1.default {
|
|
17
|
-
|
|
22
|
+
static { this.Events = Events; }
|
|
23
|
+
constructor(debug = false) {
|
|
18
24
|
super();
|
|
19
25
|
this.debug = debug;
|
|
20
26
|
this.servers = {};
|
|
21
27
|
this.running = false;
|
|
22
28
|
this.discovered = new Map(); // id → ip
|
|
23
|
-
this.log = new Logger_1.PrefixLogger(
|
|
29
|
+
this.log = new Logger_1.PrefixLogger((0, Logger_1.logger)(), TuyaDiscovery.name, this.debug);
|
|
24
30
|
}
|
|
25
31
|
start() {
|
|
26
32
|
if (this.running) {
|
|
@@ -42,15 +48,15 @@ class TuyaDiscovery extends events_1.default {
|
|
|
42
48
|
this.stop();
|
|
43
49
|
process.nextTick(() => {
|
|
44
50
|
// Remove all listeners except those listening for 'end'
|
|
45
|
-
const endListeners = this.listeners(
|
|
51
|
+
const endListeners = this.listeners(Events.END_DISCOVERY);
|
|
46
52
|
this.removeAllListeners();
|
|
47
53
|
// Re-add the 'end' listeners
|
|
48
54
|
for (const listener of endListeners) {
|
|
49
|
-
this.once(
|
|
55
|
+
this.once(Events.END_DISCOVERY, listener);
|
|
50
56
|
}
|
|
51
57
|
this.discovered.clear();
|
|
52
58
|
this.log.info('Discovery ended.');
|
|
53
|
-
this.emit(
|
|
59
|
+
this.emit(Events.END_DISCOVERY);
|
|
54
60
|
});
|
|
55
61
|
}
|
|
56
62
|
clear() {
|
|
@@ -64,7 +70,7 @@ class TuyaDiscovery extends events_1.default {
|
|
|
64
70
|
server.on('close', () => this._onClose(port));
|
|
65
71
|
server.on('message', (msg, info) => this._onMessage(port, msg, info));
|
|
66
72
|
server.bind(port, () => {
|
|
67
|
-
this.log.
|
|
73
|
+
this.log.debug(`Discovery started on port ${port}.`);
|
|
68
74
|
server.unref(); // Allow process to exit even if socket is listening
|
|
69
75
|
});
|
|
70
76
|
}
|
|
@@ -147,6 +153,7 @@ class TuyaDiscovery extends events_1.default {
|
|
|
147
153
|
});
|
|
148
154
|
}
|
|
149
155
|
else if (decryptError) {
|
|
156
|
+
// eslint-disable-next-line max-len
|
|
150
157
|
this.log.debug(`v3.4 UDP from ${info.address}:${port} – decryption failed (${decryptError}), got JSON: ${JSON.stringify(result).slice(0, 100)}`);
|
|
151
158
|
}
|
|
152
159
|
}
|
|
@@ -208,7 +215,7 @@ class TuyaDiscovery extends events_1.default {
|
|
|
208
215
|
const shortId = data.id.slice(-8);
|
|
209
216
|
const typeInfo = data.gwType ? data.gwType : (data.productKey ? `Product(${data.productKey.slice(-6)})` : 'Unknown');
|
|
210
217
|
this.log.info(`Discovered Local-${shortId} (${data.id}) identified as ${typeInfo} (${data.version})`);
|
|
211
|
-
this.emit(
|
|
218
|
+
this.emit(Events.DEVICE_DISCOVER, data);
|
|
212
219
|
}
|
|
213
220
|
/** Send a GCM-encrypted probe so v3.5 devices respond immediately. */
|
|
214
221
|
_sendV35Probe() {
|