-
Notifications
You must be signed in to change notification settings - Fork 531
Expand file tree
/
Copy pathsubscriptions.lua
More file actions
99 lines (96 loc) · 4.37 KB
/
subscriptions.lua
File metadata and controls
99 lines (96 loc) · 4.37 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
-- Copyright © 2026 SmartThings, Inc.
-- Licensed under the Apache License, Version 2.0
local capabilities = require "st.capabilities"
local clusters = require "st.matter.clusters"
local SubscriptionMap = {
subscribed_attributes = {
[capabilities.audioMute.ID] = {
clusters.CameraAvStreamManagement.attributes.SpeakerMuted,
clusters.CameraAvStreamManagement.attributes.MicrophoneMuted
},
[capabilities.audioVolume.ID] = {
clusters.CameraAvStreamManagement.attributes.SpeakerVolumeLevel,
clusters.CameraAvStreamManagement.attributes.SpeakerMaxLevel,
clusters.CameraAvStreamManagement.attributes.SpeakerMinLevel,
clusters.CameraAvStreamManagement.attributes.MicrophoneVolumeLevel,
clusters.CameraAvStreamManagement.attributes.MicrophoneMaxLevel,
clusters.CameraAvStreamManagement.attributes.MicrophoneMinLevel
},
[capabilities.cameraPrivacyMode.ID] = {
clusters.CameraAvStreamManagement.attributes.SoftRecordingPrivacyModeEnabled,
clusters.CameraAvStreamManagement.attributes.SoftLivestreamPrivacyModeEnabled,
clusters.CameraAvStreamManagement.attributes.HardPrivacyModeOn
},
[capabilities.cameraViewportSettings.ID] = {
clusters.CameraAvStreamManagement.attributes.MinViewportResolution,
clusters.CameraAvStreamManagement.attributes.VideoSensorParams,
clusters.CameraAvStreamManagement.attributes.Viewport
},
[capabilities.hdr.ID] = {
clusters.CameraAvStreamManagement.attributes.HDRModeEnabled,
clusters.CameraAvStreamManagement.attributes.ImageRotation
},
[capabilities.imageControl.ID] = {
clusters.CameraAvStreamManagement.attributes.ImageFlipHorizontal,
clusters.CameraAvStreamManagement.attributes.ImageFlipVertical
},
[capabilities.localMediaStorage.ID] = {
clusters.CameraAvStreamManagement.attributes.LocalSnapshotRecordingEnabled,
clusters.CameraAvStreamManagement.attributes.LocalVideoRecordingEnabled
},
[capabilities.mechanicalPanTiltZoom.ID] = {
clusters.CameraAvSettingsUserLevelManagement.attributes.MPTZPosition,
clusters.CameraAvSettingsUserLevelManagement.attributes.MPTZPresets,
clusters.CameraAvSettingsUserLevelManagement.attributes.MaxPresets,
clusters.CameraAvSettingsUserLevelManagement.attributes.ZoomMax,
clusters.CameraAvSettingsUserLevelManagement.attributes.PanMax,
clusters.CameraAvSettingsUserLevelManagement.attributes.PanMin,
clusters.CameraAvSettingsUserLevelManagement.attributes.TiltMax,
clusters.CameraAvSettingsUserLevelManagement.attributes.TiltMin
},
[capabilities.mode.ID] = {
clusters.CameraAvStreamManagement.attributes.StatusLightBrightness
},
[capabilities.nightVision.ID] = {
clusters.CameraAvStreamManagement.attributes.NightVision,
clusters.CameraAvStreamManagement.attributes.NightVisionIllum
},
[capabilities.sounds.ID] = {
clusters.Chime.attributes.InstalledChimeSounds,
clusters.Chime.attributes.SelectedChime
},
[capabilities.switch.ID] = {
clusters.CameraAvStreamManagement.attributes.StatusLightEnabled
},
[capabilities.videoStreamSettings.ID] = {
clusters.CameraAvStreamManagement.attributes.RateDistortionTradeOffPoints,
clusters.CameraAvStreamManagement.attributes.MaxEncodedPixelRate,
clusters.CameraAvStreamManagement.attributes.VideoSensorParams,
clusters.CameraAvStreamManagement.attributes.AllocatedVideoStreams
},
[capabilities.webrtc.ID] = {
clusters.CameraAvStreamManagement.attributes.TwoWayTalkSupport
},
[capabilities.zoneManagement.ID] = {
clusters.ZoneManagement.attributes.MaxZones,
clusters.ZoneManagement.attributes.Zones,
clusters.ZoneManagement.attributes.Triggers,
clusters.ZoneManagement.attributes.SensitivityMax,
clusters.ZoneManagement.attributes.Sensitivity
},
},
subscribed_events = {
[capabilities.zoneManagement.ID] = {
clusters.ZoneManagement.events.ZoneTriggered,
clusters.ZoneManagement.events.ZoneStopped
}
},
conditional_subscriptions = {
[function(device)
local fields = require "switch_utils.fields"
local switch_utils = require "switch_utils.utils"
return #switch_utils.get_endpoints_by_device_type(device, fields.DEVICE_TYPE_ID.CAMERA) > 0
end] = { clusters.CameraAvStreamManagement.attributes.AttributeList }
}
}
return SubscriptionMap