@homebridge-plugins/homebridge-tuya 3.0.0-beta.2 → 3.0.0-beta.21
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/README.md +354 -142
- package/config.schema.json +1221 -893
- package/dist/cloud/api/TuyaOpenAPI.js +108 -60
- package/dist/cloud/api/TuyaOpenAPI.js.map +1 -1
- package/dist/cloud/api/TuyaOpenMQ.js +45 -22
- package/dist/cloud/api/TuyaOpenMQ.js.map +1 -1
- package/dist/cloud/device/{TuyaDeviceManager.js → TuyaCloudDeviceManager.js} +146 -96
- package/dist/cloud/device/TuyaCloudDeviceManager.js.map +1 -0
- package/dist/cloud/device/TuyaCustomDeviceManager.js +75 -5
- package/dist/cloud/device/TuyaCustomDeviceManager.js.map +1 -1
- package/dist/cloud/device/TuyaDevice.js.map +1 -1
- package/dist/cloud/device/TuyaHomeDeviceManager.js +81 -13
- 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 +16 -3
- package/dist/local/LocalDevice.js.map +1 -1
- package/dist/local/LocalDeviceManager.js +361 -164
- package/dist/local/LocalDeviceManager.js.map +1 -1
- package/dist/local/TuyaDiscovery.js +16 -7
- package/dist/local/TuyaDiscovery.js.map +1 -1
- package/dist/local/ZigbeeGatewayDetection.js +7 -4
- 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 +253 -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 +147 -0
- package/dist/shared/TuyaDeviceManager.js.map +1 -0
- package/dist/shared/TuyaHybridDeviceManager.js +215 -0
- package/dist/shared/TuyaHybridDeviceManager.js.map +1 -0
- package/dist/shared/accessory/AccessoryFactory.js +350 -0
- package/dist/shared/accessory/AccessoryFactory.js.map +1 -0
- package/dist/shared/{accessories → accessory}/AirConditionerAccessory.js +21 -15
- package/dist/shared/accessory/AirConditionerAccessory.js.map +1 -0
- 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 +2 -2
- package/dist/shared/accessory/CameraAccessory.js.map +1 -0
- 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 +19 -2
- package/dist/shared/accessory/GarageDoorAccessory.js.map +1 -0
- 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/IRAdapter.js +167 -0
- package/dist/shared/accessory/IRAdapter.js.map +1 -0
- 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/IRFanAccessory.js +90 -0
- package/dist/shared/accessory/IRFanAccessory.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/{accessories → accessory}/characteristic/CurrentRelativeHumidity.js +3 -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/{accessories → accessory}/characteristic/CurrentWetBulbGlobeTemperature.js +3 -2
- 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 +28 -5
- package/dist/shared/accessory/characteristic/Light.js.map +1 -0
- package/dist/shared/accessory/characteristic/LightSensor.js.map +1 -0
- package/dist/shared/{accessories → accessory}/characteristic/LockPhysicalControls.js +3 -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/{accessories → accessory}/characteristic/RelativeHumidityDehumidifierThreshold.js +3 -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/{accessories → accessory}/characteristic/SwingMode.js +3 -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 +222 -0
- package/dist/shared/util/ConfigMigrator.js.map +1 -0
- package/dist/shared/util/FfmpegStreamingProcess.js +62 -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 +85 -10
- package/dist/shared/util/Logger.js.map +1 -1
- package/dist/shared/util/TuyaStreamDelegate.js +194 -97
- package/dist/shared/util/TuyaStreamDelegate.js.map +1 -1
- package/dist/shared/util/util.js +59 -4
- package/dist/shared/util/util.js.map +1 -1
- package/docs/ADVANCED_OPTIONS.md +603 -0
- package/docs/CONFIG_GUIDE.md +616 -0
- package/docs/Get-Local-Keys-for-Your-Devices.md +246 -0
- package/{SUPPORTED_DEVICES.md → docs/SUPPORTED_DEVICES.md} +24 -3
- package/eslint.config.mjs +0 -1
- package/{jest.config.js → jest.config.ts} +5 -2
- package/package.json +12 -9
- package/test/ConfigMigrator.test.ts +1060 -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/airConditioner.test.ts +742 -0
- 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/light.test.ts +250 -0
- package/test/localDevice.test.ts +21 -50
- package/test/localDeviceManager.behavior.test.ts +196 -31
- package/test/localDeviceManager.test.ts +124 -41
- package/test/mqttMessages.test.ts +33 -14
- package/test/platform.test.ts +337 -814
- 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 +107 -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 +19 -20
- package/test/zigbee/LocalDeviceManager.zigbee.test.ts +73 -35
- package/test/zigbee/ZigbeeGatewayDetection.test.ts +2 -2
- package/ADVANCED_OPTIONS.md +0 -267
- 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/AccessoryFactory.js +0 -276
- package/dist/shared/AccessoryFactory.js.map +0 -1
- package/dist/shared/accessories/AccessoryFactory.js +0 -305
- package/dist/shared/accessories/AccessoryFactory.js.map +0 -1
- package/dist/shared/accessories/AirConditionerAccessory.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/CameraAccessory.js.map +0 -1
- package/dist/shared/accessories/GarageDoorAccessory.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/wiki/Get-Local-Keys-for-Your-Devices.md +0 -85
- /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}/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}/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/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/LightSensor.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/RotationSpeed.js +0 -0
- /package/dist/shared/{accessories → accessory}/characteristic/SecuritySystemState.js +0 -0
- /package/dist/shared/{accessories → accessory}/characteristic/TargetTemperature.js +0 -0
- /package/dist/shared/{accessories → accessory}/characteristic/TemperatureDisplayUnits.js +0 -0
|
@@ -1,15 +1,28 @@
|
|
|
1
1
|
/* eslint-disable no-console */
|
|
2
|
-
import { describe, expect, test, beforeEach } from '@jest/globals';
|
|
2
|
+
import { describe, expect, test, beforeEach, jest } from '@jest/globals';
|
|
3
3
|
import { PlatformAccessory } from 'homebridge';
|
|
4
|
-
import AccessoryFactory from '../src/shared/AccessoryFactory';
|
|
4
|
+
import AccessoryFactory from '../src/shared/accessory/AccessoryFactory';
|
|
5
5
|
import TuyaDevice, { TuyaDeviceSchemaMode, TuyaDeviceSchemaType } from '../src/cloud/device/TuyaDevice';
|
|
6
|
-
import { TuyaPlatform } from '../src/platform';
|
|
6
|
+
import { TuyaPlatform, TuyaPluginAccessoryContext } from '../src/platform';
|
|
7
|
+
import { ExLogger, initLogger } from '../src/shared/util/Logger';
|
|
8
|
+
import { createDelegate } from '../src/shared/util/util';
|
|
7
9
|
|
|
8
10
|
describe('AccessoryFactory', () => {
|
|
9
11
|
let mockPlatform: Partial<TuyaPlatform>;
|
|
10
12
|
let mockAccessory: Partial<PlatformAccessory>;
|
|
11
13
|
|
|
12
14
|
beforeEach(() => {
|
|
15
|
+
// Mock Logger
|
|
16
|
+
const mockLog: ExLogger = {
|
|
17
|
+
debug: jest.fn(),
|
|
18
|
+
info: jest.fn(),
|
|
19
|
+
warn: jest.fn(),
|
|
20
|
+
error: jest.fn(),
|
|
21
|
+
log: jest.fn(),
|
|
22
|
+
success: jest.fn(),
|
|
23
|
+
} as unknown as ExLogger;
|
|
24
|
+
initLogger(mockLog);
|
|
25
|
+
|
|
13
26
|
// Create proper HAP mock structure
|
|
14
27
|
class MockService {
|
|
15
28
|
static AccessoryInformation = class {};
|
|
@@ -56,13 +69,7 @@ describe('AccessoryFactory', () => {
|
|
|
56
69
|
}
|
|
57
70
|
|
|
58
71
|
mockPlatform = {
|
|
59
|
-
log:
|
|
60
|
-
info: jest.fn(),
|
|
61
|
-
warn: jest.fn(),
|
|
62
|
-
error: jest.fn(),
|
|
63
|
-
debug: jest.fn(),
|
|
64
|
-
log: jest.fn(),
|
|
65
|
-
},
|
|
72
|
+
log: mockLog,
|
|
66
73
|
config: {} as any,
|
|
67
74
|
api: {
|
|
68
75
|
hap: {
|
|
@@ -74,9 +81,11 @@ describe('AccessoryFactory', () => {
|
|
|
74
81
|
accessories: [],
|
|
75
82
|
Service: MockService as any,
|
|
76
83
|
Characteristic: MockCharacteristic as any,
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
84
|
+
platformConfig: {
|
|
85
|
+
options: {
|
|
86
|
+
debug: false,
|
|
87
|
+
debugLevel: '',
|
|
88
|
+
}
|
|
80
89
|
},
|
|
81
90
|
deviceManager: {
|
|
82
91
|
getDevice: jest.fn().mockReturnValue({
|
|
@@ -92,8 +101,8 @@ describe('AccessoryFactory', () => {
|
|
|
92
101
|
isVirtualDevice: jest.fn().mockReturnValue(false),
|
|
93
102
|
isIRControlHub: jest.fn().mockReturnValue(false),
|
|
94
103
|
}),
|
|
104
|
+
getDeviceSchemaConfig: jest.fn().mockReturnValue({})
|
|
95
105
|
},
|
|
96
|
-
getDeviceSchemaConfig: jest.fn().mockReturnValue(null),
|
|
97
106
|
getDeviceStatusProperty: jest.fn().mockReturnValue(undefined),
|
|
98
107
|
} as any;
|
|
99
108
|
|
|
@@ -108,8 +117,8 @@ describe('AccessoryFactory', () => {
|
|
|
108
117
|
addService: jest.fn().mockReturnValue({
|
|
109
118
|
setCharacteristic: jest.fn().mockReturnThis(),
|
|
110
119
|
getCharacteristic: jest.fn().mockReturnValue({
|
|
111
|
-
onGet: jest.fn(
|
|
112
|
-
onSet: jest.fn(
|
|
120
|
+
onGet: jest.fn().mockReturnThis(),
|
|
121
|
+
onSet: jest.fn().mockReturnThis(),
|
|
113
122
|
setProps: jest.fn().mockReturnThis(),
|
|
114
123
|
}),
|
|
115
124
|
}),
|
|
@@ -131,7 +140,7 @@ describe('AccessoryFactory', () => {
|
|
|
131
140
|
|
|
132
141
|
const accessory = AccessoryFactory.createAccessory(
|
|
133
142
|
mockPlatform as TuyaPlatform,
|
|
134
|
-
mockAccessory as PlatformAccessory
|
|
143
|
+
mockAccessory as PlatformAccessory<TuyaPluginAccessoryContext>,
|
|
135
144
|
device,
|
|
136
145
|
);
|
|
137
146
|
|
|
@@ -149,7 +158,7 @@ describe('AccessoryFactory', () => {
|
|
|
149
158
|
|
|
150
159
|
const accessory = AccessoryFactory.createAccessory(
|
|
151
160
|
mockPlatform as TuyaPlatform,
|
|
152
|
-
mockAccessory as PlatformAccessory
|
|
161
|
+
mockAccessory as PlatformAccessory<TuyaPluginAccessoryContext>,
|
|
153
162
|
device,
|
|
154
163
|
);
|
|
155
164
|
|
|
@@ -170,7 +179,7 @@ describe('AccessoryFactory', () => {
|
|
|
170
179
|
expect(() => {
|
|
171
180
|
AccessoryFactory.createAccessory(
|
|
172
181
|
mockPlatform as TuyaPlatform,
|
|
173
|
-
mockAccessory as PlatformAccessory
|
|
182
|
+
mockAccessory as PlatformAccessory<TuyaPluginAccessoryContext>,
|
|
174
183
|
device,
|
|
175
184
|
);
|
|
176
185
|
}).not.toThrow();
|
|
@@ -190,7 +199,7 @@ describe('AccessoryFactory', () => {
|
|
|
190
199
|
|
|
191
200
|
const accessory = AccessoryFactory.createAccessory(
|
|
192
201
|
mockPlatform as TuyaPlatform,
|
|
193
|
-
mockAccessory as PlatformAccessory
|
|
202
|
+
mockAccessory as PlatformAccessory<TuyaPluginAccessoryContext>,
|
|
194
203
|
device,
|
|
195
204
|
);
|
|
196
205
|
|
|
@@ -209,7 +218,7 @@ describe('AccessoryFactory', () => {
|
|
|
209
218
|
|
|
210
219
|
const accessory = AccessoryFactory.createAccessory(
|
|
211
220
|
mockPlatform as TuyaPlatform,
|
|
212
|
-
mockAccessory as PlatformAccessory
|
|
221
|
+
mockAccessory as PlatformAccessory<TuyaPluginAccessoryContext>,
|
|
213
222
|
device,
|
|
214
223
|
);
|
|
215
224
|
|
|
@@ -228,7 +237,7 @@ describe('AccessoryFactory', () => {
|
|
|
228
237
|
|
|
229
238
|
const accessory = AccessoryFactory.createAccessory(
|
|
230
239
|
mockPlatform as TuyaPlatform,
|
|
231
|
-
mockAccessory as PlatformAccessory
|
|
240
|
+
mockAccessory as PlatformAccessory<TuyaPluginAccessoryContext>,
|
|
232
241
|
device,
|
|
233
242
|
);
|
|
234
243
|
|
|
@@ -247,7 +256,7 @@ describe('AccessoryFactory', () => {
|
|
|
247
256
|
|
|
248
257
|
const accessory = AccessoryFactory.createAccessory(
|
|
249
258
|
mockPlatform as TuyaPlatform,
|
|
250
|
-
mockAccessory as PlatformAccessory
|
|
259
|
+
mockAccessory as PlatformAccessory<TuyaPluginAccessoryContext>,
|
|
251
260
|
device,
|
|
252
261
|
);
|
|
253
262
|
|
|
@@ -266,7 +275,7 @@ describe('AccessoryFactory', () => {
|
|
|
266
275
|
|
|
267
276
|
const accessory = AccessoryFactory.createAccessory(
|
|
268
277
|
mockPlatform as TuyaPlatform,
|
|
269
|
-
mockAccessory as PlatformAccessory
|
|
278
|
+
mockAccessory as PlatformAccessory<TuyaPluginAccessoryContext>,
|
|
270
279
|
device,
|
|
271
280
|
);
|
|
272
281
|
|
|
@@ -285,7 +294,7 @@ describe('AccessoryFactory', () => {
|
|
|
285
294
|
|
|
286
295
|
const accessory = AccessoryFactory.createAccessory(
|
|
287
296
|
mockPlatform as TuyaPlatform,
|
|
288
|
-
mockAccessory as PlatformAccessory
|
|
297
|
+
mockAccessory as PlatformAccessory<TuyaPluginAccessoryContext>,
|
|
289
298
|
device,
|
|
290
299
|
);
|
|
291
300
|
|
|
@@ -304,7 +313,7 @@ describe('AccessoryFactory', () => {
|
|
|
304
313
|
|
|
305
314
|
const accessory = AccessoryFactory.createAccessory(
|
|
306
315
|
mockPlatform as TuyaPlatform,
|
|
307
|
-
mockAccessory as PlatformAccessory
|
|
316
|
+
mockAccessory as PlatformAccessory<TuyaPluginAccessoryContext>,
|
|
308
317
|
device,
|
|
309
318
|
);
|
|
310
319
|
|
|
@@ -323,7 +332,7 @@ describe('AccessoryFactory', () => {
|
|
|
323
332
|
|
|
324
333
|
const accessory = AccessoryFactory.createAccessory(
|
|
325
334
|
mockPlatform as TuyaPlatform,
|
|
326
|
-
mockAccessory as PlatformAccessory
|
|
335
|
+
mockAccessory as PlatformAccessory<TuyaPluginAccessoryContext>,
|
|
327
336
|
device,
|
|
328
337
|
);
|
|
329
338
|
|
|
@@ -355,7 +364,7 @@ describe('AccessoryFactory', () => {
|
|
|
355
364
|
|
|
356
365
|
const accessory = AccessoryFactory.createAccessory(
|
|
357
366
|
mockPlatform as TuyaPlatform,
|
|
358
|
-
mockAccessory as PlatformAccessory
|
|
367
|
+
mockAccessory as PlatformAccessory<TuyaPluginAccessoryContext>,
|
|
359
368
|
device,
|
|
360
369
|
);
|
|
361
370
|
|
|
@@ -374,7 +383,7 @@ describe('AccessoryFactory', () => {
|
|
|
374
383
|
|
|
375
384
|
const accessory = AccessoryFactory.createAccessory(
|
|
376
385
|
mockPlatform as TuyaPlatform,
|
|
377
|
-
mockAccessory as PlatformAccessory
|
|
386
|
+
mockAccessory as PlatformAccessory<TuyaPluginAccessoryContext>,
|
|
378
387
|
device,
|
|
379
388
|
);
|
|
380
389
|
|
|
@@ -393,7 +402,7 @@ describe('AccessoryFactory', () => {
|
|
|
393
402
|
|
|
394
403
|
const accessory = AccessoryFactory.createAccessory(
|
|
395
404
|
mockPlatform as TuyaPlatform,
|
|
396
|
-
mockAccessory as PlatformAccessory
|
|
405
|
+
mockAccessory as PlatformAccessory<TuyaPluginAccessoryContext>,
|
|
397
406
|
device,
|
|
398
407
|
);
|
|
399
408
|
|
|
@@ -424,7 +433,7 @@ describe('AccessoryFactory', () => {
|
|
|
424
433
|
|
|
425
434
|
const accessory = AccessoryFactory.createAccessory(
|
|
426
435
|
mockPlatform as TuyaPlatform,
|
|
427
|
-
mockAccessory as PlatformAccessory
|
|
436
|
+
mockAccessory as PlatformAccessory<TuyaPluginAccessoryContext>,
|
|
428
437
|
device,
|
|
429
438
|
);
|
|
430
439
|
|
|
@@ -453,7 +462,7 @@ describe('AccessoryFactory', () => {
|
|
|
453
462
|
|
|
454
463
|
const accessory = AccessoryFactory.createAccessory(
|
|
455
464
|
mockPlatform as TuyaPlatform,
|
|
456
|
-
mockAccessory as PlatformAccessory
|
|
465
|
+
mockAccessory as PlatformAccessory<TuyaPluginAccessoryContext>,
|
|
457
466
|
device,
|
|
458
467
|
);
|
|
459
468
|
|
|
@@ -474,7 +483,7 @@ describe('AccessoryFactory', () => {
|
|
|
474
483
|
|
|
475
484
|
const accessory = AccessoryFactory.createAccessory(
|
|
476
485
|
mockPlatform as TuyaPlatform,
|
|
477
|
-
mockAccessory as PlatformAccessory
|
|
486
|
+
mockAccessory as PlatformAccessory<TuyaPluginAccessoryContext>,
|
|
478
487
|
device,
|
|
479
488
|
);
|
|
480
489
|
|
|
@@ -493,7 +502,7 @@ describe('AccessoryFactory', () => {
|
|
|
493
502
|
|
|
494
503
|
const accessory = AccessoryFactory.createAccessory(
|
|
495
504
|
mockPlatform as TuyaPlatform,
|
|
496
|
-
mockAccessory as PlatformAccessory
|
|
505
|
+
mockAccessory as PlatformAccessory<TuyaPluginAccessoryContext>,
|
|
497
506
|
device,
|
|
498
507
|
);
|
|
499
508
|
|
|
@@ -512,11 +521,31 @@ describe('AccessoryFactory', () => {
|
|
|
512
521
|
|
|
513
522
|
const accessory = AccessoryFactory.createAccessory(
|
|
514
523
|
mockPlatform as TuyaPlatform,
|
|
515
|
-
mockAccessory as PlatformAccessory
|
|
524
|
+
mockAccessory as PlatformAccessory<TuyaPluginAccessoryContext>,
|
|
516
525
|
device,
|
|
517
526
|
);
|
|
518
527
|
|
|
519
528
|
expect(accessory).toBeDefined();
|
|
520
529
|
});
|
|
521
530
|
});
|
|
531
|
+
|
|
532
|
+
describe('delegated accessory', () => {
|
|
533
|
+
test('sanitize displayName', () => {
|
|
534
|
+
const originalAccessory = {
|
|
535
|
+
addService: jest.fn(),
|
|
536
|
+
};
|
|
537
|
+
class AccessoryFactoryForTest extends AccessoryFactory {
|
|
538
|
+
static getPlatformAccessoryOverrides() {
|
|
539
|
+
return super.platformAccessoryOverrides;
|
|
540
|
+
}
|
|
541
|
+
}
|
|
542
|
+
|
|
543
|
+
const overridedAccessory = createDelegate(originalAccessory as any, AccessoryFactoryForTest.getPlatformAccessoryOverrides());
|
|
544
|
+
|
|
545
|
+
const spyAddService = jest.spyOn(originalAccessory, 'addService');
|
|
546
|
+
overridedAccessory.addService('a@a', 'b@b', 'c@c');
|
|
547
|
+
|
|
548
|
+
expect(spyAddService).toHaveBeenCalledWith('a@a', 'b b', 'c@c');
|
|
549
|
+
});
|
|
550
|
+
});
|
|
522
551
|
});
|