@camera.ui/camera-ui-tuya 0.0.19 → 0.0.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/bundle.zip +0 -0
- package/package.json +16 -37
- package/CHANGELOG.md +0 -8
- package/CONTRIBUTING.md +0 -1
- package/LICENSE.md +0 -22
- package/README.md +0 -1
- package/config.schema.json +0 -296
- package/dist/camera.d.ts +0 -34
- package/dist/camera.js +0 -243
- package/dist/camera.js.map +0 -1
- package/dist/index.d.ts +0 -24
- package/dist/index.js +0 -225
- package/dist/index.js.map +0 -1
- package/dist/peer.d.ts +0 -34
- package/dist/peer.js +0 -268
- package/dist/peer.js.map +0 -1
- package/dist/tuya/cloud.d.ts +0 -35
- package/dist/tuya/cloud.js +0 -227
- package/dist/tuya/cloud.js.map +0 -1
- package/dist/tuya/const.d.ts +0 -121
- package/dist/tuya/const.js +0 -2
- package/dist/tuya/const.js.map +0 -1
- package/dist/tuya/device.d.ts +0 -14
- package/dist/tuya/device.js +0 -68
- package/dist/tuya/device.js.map +0 -1
- package/dist/tuya/mq.d.ts +0 -25
- package/dist/tuya/mq.js +0 -85
- package/dist/tuya/mq.js.map +0 -1
- package/dist/tuya/pulsar.d.ts +0 -74
- package/dist/tuya/pulsar.js +0 -198
- package/dist/tuya/pulsar.js.map +0 -1
- package/dist/tuya/utils.d.ts +0 -16
- package/dist/tuya/utils.js +0 -276
- package/dist/tuya/utils.js.map +0 -1
- package/dist/types.d.ts +0 -11
- package/dist/types.js +0 -2
- package/dist/types.js.map +0 -1
package/dist/tuya/cloud.js
DELETED
|
@@ -1,227 +0,0 @@
|
|
|
1
|
-
import axios from 'axios';
|
|
2
|
-
import { randomBytes } from 'crypto';
|
|
3
|
-
import CryptoJS from 'crypto-js';
|
|
4
|
-
import { getTuyaCloudEndpoint, TUYA_COUNTRIES } from './utils.js';
|
|
5
|
-
export class TuyaCloud {
|
|
6
|
-
config;
|
|
7
|
-
// Tuya IoT Cloud API
|
|
8
|
-
nonce;
|
|
9
|
-
session = undefined;
|
|
10
|
-
client;
|
|
11
|
-
userId;
|
|
12
|
-
clientId;
|
|
13
|
-
secret;
|
|
14
|
-
country;
|
|
15
|
-
whitelist = [];
|
|
16
|
-
_cameras;
|
|
17
|
-
get cameras() {
|
|
18
|
-
return this._cameras;
|
|
19
|
-
}
|
|
20
|
-
constructor(config) {
|
|
21
|
-
this.config = config;
|
|
22
|
-
this.userId = config.home.userId;
|
|
23
|
-
this.clientId = config.home.accessId;
|
|
24
|
-
this.secret = config.home.accessKey;
|
|
25
|
-
this.nonce = CryptoJS.lib.WordArray.random(16).toString();
|
|
26
|
-
this.country = TUYA_COUNTRIES.find((value) => value.country == config.home.country);
|
|
27
|
-
this.whitelist = config.home.homeWhitelist;
|
|
28
|
-
this.client = new axios.Axios({
|
|
29
|
-
baseURL: getTuyaCloudEndpoint(this.country),
|
|
30
|
-
timeout: 5 * 1e3,
|
|
31
|
-
});
|
|
32
|
-
this._cameras = undefined;
|
|
33
|
-
}
|
|
34
|
-
async login() {
|
|
35
|
-
await this.refreshAccessTokenIfNeeded();
|
|
36
|
-
return this.isLoggedIn();
|
|
37
|
-
}
|
|
38
|
-
isLoggedIn() {
|
|
39
|
-
return this.session !== undefined && this.session.tokenExpiresAt.getTime() > Date.now();
|
|
40
|
-
}
|
|
41
|
-
// Set Device Status
|
|
42
|
-
async updateDevice(device, statuses) {
|
|
43
|
-
if (!device) {
|
|
44
|
-
return false;
|
|
45
|
-
}
|
|
46
|
-
const result = await this.post(`/v1.0/devices/${device.id}/commands`, {
|
|
47
|
-
commands: statuses,
|
|
48
|
-
});
|
|
49
|
-
return result.success && result.result;
|
|
50
|
-
}
|
|
51
|
-
// Get Homes
|
|
52
|
-
async getHomeList() {
|
|
53
|
-
const response = await this.get(`/v1.0/users/${this.userId}/homes`);
|
|
54
|
-
if (!response.success) {
|
|
55
|
-
return [];
|
|
56
|
-
}
|
|
57
|
-
return response.result;
|
|
58
|
-
}
|
|
59
|
-
async getHomeDeviceList(homeID) {
|
|
60
|
-
const response = await this.get(`/v1.0/homes/${homeID}/devices`);
|
|
61
|
-
if (!response.success) {
|
|
62
|
-
return [];
|
|
63
|
-
}
|
|
64
|
-
return response.result;
|
|
65
|
-
}
|
|
66
|
-
// Get Devices
|
|
67
|
-
async fetchDevices() {
|
|
68
|
-
const homeResponse = await this.getHomeList();
|
|
69
|
-
const cameras = [];
|
|
70
|
-
const homeIds = homeResponse.map((home) => home.home_id.toString());
|
|
71
|
-
for (const id of homeIds) {
|
|
72
|
-
if (this.whitelist.length && !this.whitelist.includes(id)) {
|
|
73
|
-
continue;
|
|
74
|
-
}
|
|
75
|
-
const devices = await this.getHomeDeviceList(parseInt(id));
|
|
76
|
-
cameras.push(...devices);
|
|
77
|
-
}
|
|
78
|
-
for (const state of cameras) {
|
|
79
|
-
const response = await this.get(`/v1.0/devices/${state.id}/functions`);
|
|
80
|
-
if (!response.success) {
|
|
81
|
-
continue;
|
|
82
|
-
}
|
|
83
|
-
state.functions = response.result.functions;
|
|
84
|
-
}
|
|
85
|
-
this._cameras = cameras.filter((element) => element.category === 'sp');
|
|
86
|
-
return true;
|
|
87
|
-
}
|
|
88
|
-
// Camera Functions
|
|
89
|
-
async getRTSPS(camera) {
|
|
90
|
-
const response = await this.post(`/v1.0/devices/${camera.id}/stream/actions/allocate`, { type: 'rtsp' });
|
|
91
|
-
if (response.success) {
|
|
92
|
-
return {
|
|
93
|
-
url: response.result.url,
|
|
94
|
-
expires: new Date(response.t + 30 * 1000), // This will expire in 30 seconds.
|
|
95
|
-
};
|
|
96
|
-
}
|
|
97
|
-
else {
|
|
98
|
-
return undefined;
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
async getDeviceWebRTConfig(camera) {
|
|
102
|
-
const response = await this.get(`/v1.0/users/${this.userId}/devices/${camera.id}/webrtc-configs`);
|
|
103
|
-
return response;
|
|
104
|
-
}
|
|
105
|
-
async getWebRTCMQConfig(webRTCDeviceConfig) {
|
|
106
|
-
const response = await this.post('/v1.0/open-hub/access/config', {
|
|
107
|
-
link_id: randomBytes(8).readUInt8(),
|
|
108
|
-
uid: this.userId,
|
|
109
|
-
link_type: 'mqtt',
|
|
110
|
-
topics: 'ipc',
|
|
111
|
-
});
|
|
112
|
-
if (response.success) {
|
|
113
|
-
response.result = {
|
|
114
|
-
...response.result,
|
|
115
|
-
sink_topic: response.result.sink_topic.ipc.replace('{device_id}', webRTCDeviceConfig.id).replace('moto_id', webRTCDeviceConfig.moto_id),
|
|
116
|
-
source_topic: response.result.source_topic.ipc,
|
|
117
|
-
};
|
|
118
|
-
return response;
|
|
119
|
-
}
|
|
120
|
-
return response;
|
|
121
|
-
}
|
|
122
|
-
getSessionUserId() {
|
|
123
|
-
return this.session?.uid;
|
|
124
|
-
}
|
|
125
|
-
// Tuya IoT Cloud Requests API
|
|
126
|
-
async get(path, query = {}) {
|
|
127
|
-
return this.request('GET', path, query);
|
|
128
|
-
}
|
|
129
|
-
async post(path, body = {}) {
|
|
130
|
-
return this.request('POST', path, {}, body);
|
|
131
|
-
}
|
|
132
|
-
async request(method, path, query = {}, body = {}) {
|
|
133
|
-
if (!(await this.login())) {
|
|
134
|
-
return {
|
|
135
|
-
result: undefined,
|
|
136
|
-
success: false,
|
|
137
|
-
t: Date.now(),
|
|
138
|
-
};
|
|
139
|
-
}
|
|
140
|
-
const timestamp = Date.now().toString();
|
|
141
|
-
const headers = { client_id: this.clientId };
|
|
142
|
-
const stringToSign = this.getStringToSign(method, path, query, headers, body);
|
|
143
|
-
const sign = CryptoJS.HmacSHA256(this.clientId + this.session?.accessToken + timestamp + this.nonce + stringToSign, this.secret)
|
|
144
|
-
.toString()
|
|
145
|
-
.toUpperCase();
|
|
146
|
-
const requestHeaders = {
|
|
147
|
-
client_id: this.clientId,
|
|
148
|
-
sign: sign,
|
|
149
|
-
sign_method: 'HMAC-SHA256',
|
|
150
|
-
t: timestamp,
|
|
151
|
-
access_token: this.session.accessToken,
|
|
152
|
-
'Signature-Headers': Object.keys(headers).join(':'),
|
|
153
|
-
nonce: this.nonce,
|
|
154
|
-
};
|
|
155
|
-
return this.client
|
|
156
|
-
.request({
|
|
157
|
-
method,
|
|
158
|
-
url: path,
|
|
159
|
-
data: Object.keys(body).length > 0 ? JSON.stringify(body) : undefined,
|
|
160
|
-
params: query,
|
|
161
|
-
headers: requestHeaders,
|
|
162
|
-
responseType: 'json',
|
|
163
|
-
transformResponse: (data) => JSON.parse(data),
|
|
164
|
-
})
|
|
165
|
-
.then((value) => {
|
|
166
|
-
return value.data;
|
|
167
|
-
});
|
|
168
|
-
}
|
|
169
|
-
getStringToSign(method, path, query = {}, headers = {}, body = {}) {
|
|
170
|
-
const isQueryEmpty = Object.keys(query).length == 0;
|
|
171
|
-
const isHeaderEmpty = Object.keys(headers).length == 0;
|
|
172
|
-
const isBodyEmpty = Object.keys(body).length == 0;
|
|
173
|
-
const httpMethod = method.toUpperCase();
|
|
174
|
-
const url = path +
|
|
175
|
-
(isQueryEmpty
|
|
176
|
-
? ''
|
|
177
|
-
: '?' +
|
|
178
|
-
Object.keys(query)
|
|
179
|
-
.map((key) => `${key}=${query[key]}`)
|
|
180
|
-
.join('&'));
|
|
181
|
-
const contentHashed = CryptoJS.SHA256(isBodyEmpty ? '' : JSON.stringify(body)).toString();
|
|
182
|
-
const headersParsed = Object.keys(headers)
|
|
183
|
-
.map((key) => `${key}:${headers[key]}`)
|
|
184
|
-
.join('\n');
|
|
185
|
-
const headersStr = isHeaderEmpty ? '' : headersParsed + '\n';
|
|
186
|
-
const signStr = [httpMethod, contentHashed, headersStr, url].join('\n');
|
|
187
|
-
return signStr;
|
|
188
|
-
}
|
|
189
|
-
async refreshAccessTokenIfNeeded() {
|
|
190
|
-
if (this.isLoggedIn()) {
|
|
191
|
-
return;
|
|
192
|
-
}
|
|
193
|
-
let url;
|
|
194
|
-
if (!this.session) {
|
|
195
|
-
url = '/v1.0/token?grant_type=1';
|
|
196
|
-
}
|
|
197
|
-
else {
|
|
198
|
-
url = `/v1.0/token/${this.session.refreshToken}`;
|
|
199
|
-
}
|
|
200
|
-
const timestamp = new Date().getTime().toString();
|
|
201
|
-
const stringToSign = this.getStringToSign('GET', url);
|
|
202
|
-
const signString = CryptoJS.HmacSHA256(this.clientId + timestamp + stringToSign, this.secret)
|
|
203
|
-
.toString()
|
|
204
|
-
.toUpperCase();
|
|
205
|
-
const headers = {
|
|
206
|
-
t: timestamp,
|
|
207
|
-
sign_method: 'HMAC-SHA256',
|
|
208
|
-
client_id: this.clientId,
|
|
209
|
-
sign: signString,
|
|
210
|
-
};
|
|
211
|
-
const { data } = await this.client.get(url, { headers });
|
|
212
|
-
const response = JSON.parse(data);
|
|
213
|
-
if (!response.success) {
|
|
214
|
-
this.session = undefined;
|
|
215
|
-
}
|
|
216
|
-
else {
|
|
217
|
-
const newExpiration = new Date(Date.now() + response.result.expire_time * 1000);
|
|
218
|
-
this.session = {
|
|
219
|
-
accessToken: response.result.access_token,
|
|
220
|
-
refreshToken: response.result.refresh_token,
|
|
221
|
-
tokenExpiresAt: newExpiration,
|
|
222
|
-
uid: response.result.uid,
|
|
223
|
-
};
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
//# sourceMappingURL=cloud.js.map
|
package/dist/tuya/cloud.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cloud.js","sourceRoot":"","sources":["../../src/tuya/cloud.ts"],"names":[],"mappings":"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"}
|
package/dist/tuya/const.d.ts
DELETED
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
export interface TuyaResponse<T> {
|
|
2
|
-
success: boolean;
|
|
3
|
-
t: number;
|
|
4
|
-
result: T;
|
|
5
|
-
}
|
|
6
|
-
export interface TuyaHomeConfig {
|
|
7
|
-
geo_name: string;
|
|
8
|
-
home_id: number;
|
|
9
|
-
name: string;
|
|
10
|
-
lat: number;
|
|
11
|
-
lon: number;
|
|
12
|
-
role: string;
|
|
13
|
-
}
|
|
14
|
-
export interface TuyaDeviceConfig {
|
|
15
|
-
id: string;
|
|
16
|
-
name: string;
|
|
17
|
-
local_key: string;
|
|
18
|
-
category: string;
|
|
19
|
-
product_id: string;
|
|
20
|
-
product_name: string;
|
|
21
|
-
sub: boolean;
|
|
22
|
-
uuid: string;
|
|
23
|
-
online: boolean;
|
|
24
|
-
icon: string;
|
|
25
|
-
ip: string;
|
|
26
|
-
time_zone: string;
|
|
27
|
-
active_time: number;
|
|
28
|
-
create_time: number;
|
|
29
|
-
update_time: number;
|
|
30
|
-
status: TuyaDeviceStatus[];
|
|
31
|
-
functions?: DeviceFunction[];
|
|
32
|
-
uid: string;
|
|
33
|
-
biz_type: number;
|
|
34
|
-
model: string;
|
|
35
|
-
owner_id: string;
|
|
36
|
-
}
|
|
37
|
-
export interface TuyaDeviceStatus {
|
|
38
|
-
code: string;
|
|
39
|
-
value: any;
|
|
40
|
-
}
|
|
41
|
-
export interface DeviceFunction {
|
|
42
|
-
code: string;
|
|
43
|
-
type: string;
|
|
44
|
-
values: string;
|
|
45
|
-
desc: string;
|
|
46
|
-
name: string;
|
|
47
|
-
}
|
|
48
|
-
export interface RTSPToken {
|
|
49
|
-
url: string;
|
|
50
|
-
expires: Date;
|
|
51
|
-
}
|
|
52
|
-
export interface MQTTConfig {
|
|
53
|
-
url: string;
|
|
54
|
-
username: string;
|
|
55
|
-
password: string;
|
|
56
|
-
client_id: string;
|
|
57
|
-
source_topic: string;
|
|
58
|
-
sink_topic: string;
|
|
59
|
-
expire_time: number;
|
|
60
|
-
}
|
|
61
|
-
export interface DeviceWebRTConfig {
|
|
62
|
-
audio_attributes: AudioAttributes;
|
|
63
|
-
auth: string;
|
|
64
|
-
id: string;
|
|
65
|
-
moto_id: string;
|
|
66
|
-
p2p_config: P2PConfig;
|
|
67
|
-
skill: string;
|
|
68
|
-
supports_webrtc: boolean;
|
|
69
|
-
vedio_clarity: number;
|
|
70
|
-
}
|
|
71
|
-
interface AudioAttributes {
|
|
72
|
-
call_mode: number[];
|
|
73
|
-
hardware_capability: number[];
|
|
74
|
-
}
|
|
75
|
-
interface P2PConfig {
|
|
76
|
-
ices: Ice[];
|
|
77
|
-
}
|
|
78
|
-
interface Ice {
|
|
79
|
-
urls: string;
|
|
80
|
-
credential?: string;
|
|
81
|
-
ttl?: number;
|
|
82
|
-
username?: string;
|
|
83
|
-
}
|
|
84
|
-
export interface WebRTCMQMessage {
|
|
85
|
-
protocol: number;
|
|
86
|
-
pv: string;
|
|
87
|
-
t: number;
|
|
88
|
-
data: {
|
|
89
|
-
header: {
|
|
90
|
-
type: 'offer' | 'answer' | 'candidate' | 'disconnect';
|
|
91
|
-
from: string;
|
|
92
|
-
to: string;
|
|
93
|
-
sub_dev_id: string;
|
|
94
|
-
sessionid: string;
|
|
95
|
-
moto_id: string;
|
|
96
|
-
tid: string;
|
|
97
|
-
};
|
|
98
|
-
msg: OfferMessage | AnswerMessage | CandidateMessage | DisconnectMessage;
|
|
99
|
-
};
|
|
100
|
-
}
|
|
101
|
-
export interface OfferMessage {
|
|
102
|
-
mode: string;
|
|
103
|
-
sdp: string;
|
|
104
|
-
auth: string;
|
|
105
|
-
stream_type: number;
|
|
106
|
-
}
|
|
107
|
-
export interface AnswerMessage {
|
|
108
|
-
mode: string;
|
|
109
|
-
sdp: string;
|
|
110
|
-
stream_type: number;
|
|
111
|
-
token: Ice[];
|
|
112
|
-
replay: any;
|
|
113
|
-
}
|
|
114
|
-
export interface CandidateMessage {
|
|
115
|
-
mode: string;
|
|
116
|
-
candidate: string;
|
|
117
|
-
}
|
|
118
|
-
export interface DisconnectMessage {
|
|
119
|
-
mode: string;
|
|
120
|
-
}
|
|
121
|
-
export {};
|
package/dist/tuya/const.js
DELETED
package/dist/tuya/const.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"const.js","sourceRoot":"","sources":["../../src/tuya/const.ts"],"names":[],"mappings":""}
|
package/dist/tuya/device.d.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import type { TuyaCloud } from './cloud.js';
|
|
2
|
-
import type { TuyaDeviceConfig, TuyaDeviceStatus } from './const.js';
|
|
3
|
-
export declare namespace TuyaDevice {
|
|
4
|
-
function hasLightSwitch(camera: TuyaDeviceConfig): boolean;
|
|
5
|
-
function getLightSwitchStatus(camera: TuyaDeviceConfig): TuyaDeviceStatus | undefined;
|
|
6
|
-
function hasStatusIndicator(camera: TuyaDeviceConfig): boolean;
|
|
7
|
-
function getStatusIndicator(camera: TuyaDeviceConfig): TuyaDeviceStatus | undefined;
|
|
8
|
-
function isDoorbell(camera: TuyaDeviceConfig): boolean;
|
|
9
|
-
function getDoorbellRing(camera: TuyaDeviceConfig): TuyaDeviceStatus | undefined;
|
|
10
|
-
function hasMotionDetection(camera: TuyaDeviceConfig): boolean;
|
|
11
|
-
function getMotionDetectionStatus(camera: TuyaDeviceConfig): TuyaDeviceStatus | undefined;
|
|
12
|
-
function supportsWebRTC(camera: TuyaDeviceConfig, cloud: TuyaCloud): Promise<boolean>;
|
|
13
|
-
function getStatus(camera: TuyaDeviceConfig, statusCode: string[]): TuyaDeviceStatus | undefined;
|
|
14
|
-
}
|
package/dist/tuya/device.js
DELETED
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
export var TuyaDevice;
|
|
2
|
-
(function (TuyaDevice) {
|
|
3
|
-
// MARK: Switch Light
|
|
4
|
-
function hasLightSwitch(camera) {
|
|
5
|
-
return getLightSwitchStatus(camera) !== undefined;
|
|
6
|
-
}
|
|
7
|
-
TuyaDevice.hasLightSwitch = hasLightSwitch;
|
|
8
|
-
function getLightSwitchStatus(camera) {
|
|
9
|
-
const lightStatusCode = [
|
|
10
|
-
'floodlight_switch', // Devices with floodlight switch
|
|
11
|
-
];
|
|
12
|
-
return getStatus(camera, lightStatusCode);
|
|
13
|
-
}
|
|
14
|
-
TuyaDevice.getLightSwitchStatus = getLightSwitchStatus;
|
|
15
|
-
// MARK: Status Indicator
|
|
16
|
-
function hasStatusIndicator(camera) {
|
|
17
|
-
return getStatusIndicator(camera) !== undefined;
|
|
18
|
-
}
|
|
19
|
-
TuyaDevice.hasStatusIndicator = hasStatusIndicator;
|
|
20
|
-
function getStatusIndicator(camera) {
|
|
21
|
-
return getStatus(camera, ['basic_indicator']);
|
|
22
|
-
}
|
|
23
|
-
TuyaDevice.getStatusIndicator = getStatusIndicator;
|
|
24
|
-
// MARK: Doorbell
|
|
25
|
-
function isDoorbell(camera) {
|
|
26
|
-
const search = [
|
|
27
|
-
'wireless_powermode', // According to tuya, most low-powered devices are doorbells
|
|
28
|
-
'doorbell_ring_exist', // Typically, doorbells are able to add chimes. If this option is available, then most likely it is a doorbell.
|
|
29
|
-
// 'doorbell_active', // Seems to be very common even in non-doorbell config
|
|
30
|
-
];
|
|
31
|
-
for (const code of search) {
|
|
32
|
-
const status = camera.status.find((status) => status.code == code);
|
|
33
|
-
if (status?.value !== undefined) {
|
|
34
|
-
return true;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
return false;
|
|
38
|
-
}
|
|
39
|
-
TuyaDevice.isDoorbell = isDoorbell;
|
|
40
|
-
function getDoorbellRing(camera) {
|
|
41
|
-
const ring = ['alarm_message', 'doorbell_pic'];
|
|
42
|
-
return getStatus(camera, ring);
|
|
43
|
-
}
|
|
44
|
-
TuyaDevice.getDoorbellRing = getDoorbellRing;
|
|
45
|
-
// MARK: Motion Detection
|
|
46
|
-
function hasMotionDetection(camera) {
|
|
47
|
-
const motionSwitchCodes = ['motion_switch', 'pir_sensitivity'];
|
|
48
|
-
return getStatus(camera, motionSwitchCodes) !== undefined;
|
|
49
|
-
}
|
|
50
|
-
TuyaDevice.hasMotionDetection = hasMotionDetection;
|
|
51
|
-
function getMotionDetectionStatus(camera) {
|
|
52
|
-
const motionDetectionCodes = ['movement_detect_pic'];
|
|
53
|
-
return getStatus(camera, motionDetectionCodes);
|
|
54
|
-
}
|
|
55
|
-
TuyaDevice.getMotionDetectionStatus = getMotionDetectionStatus;
|
|
56
|
-
// Supports WebRTC
|
|
57
|
-
async function supportsWebRTC(camera, cloud) {
|
|
58
|
-
const webRTConfig = await cloud.getDeviceWebRTConfig(camera);
|
|
59
|
-
return webRTConfig.success && webRTConfig.result.supports_webrtc;
|
|
60
|
-
}
|
|
61
|
-
TuyaDevice.supportsWebRTC = supportsWebRTC;
|
|
62
|
-
// Device Status
|
|
63
|
-
function getStatus(camera, statusCode) {
|
|
64
|
-
return camera.status.find((value) => statusCode.includes(value.code));
|
|
65
|
-
}
|
|
66
|
-
TuyaDevice.getStatus = getStatus;
|
|
67
|
-
})(TuyaDevice || (TuyaDevice = {}));
|
|
68
|
-
//# sourceMappingURL=device.js.map
|
package/dist/tuya/device.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"device.js","sourceRoot":"","sources":["../../src/tuya/device.ts"],"names":[],"mappings":"AAGA,MAAM,KAAW,UAAU,CA0E1B;AA1ED,WAAiB,UAAU;IACzB,qBAAqB;IAErB,SAAgB,cAAc,CAAC,MAAwB;QACrD,OAAO,oBAAoB,CAAC,MAAM,CAAC,KAAK,SAAS,CAAC;IACpD,CAAC;IAFe,yBAAc,iBAE7B,CAAA;IAED,SAAgB,oBAAoB,CAAC,MAAwB;QAC3D,MAAM,eAAe,GAAG;YACtB,mBAAmB,EAAE,iCAAiC;SACvD,CAAC;QAEF,OAAO,SAAS,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC5C,CAAC;IANe,+BAAoB,uBAMnC,CAAA;IAED,yBAAyB;IAEzB,SAAgB,kBAAkB,CAAC,MAAwB;QACzD,OAAO,kBAAkB,CAAC,MAAM,CAAC,KAAK,SAAS,CAAC;IAClD,CAAC;IAFe,6BAAkB,qBAEjC,CAAA;IAED,SAAgB,kBAAkB,CAAC,MAAwB;QACzD,OAAO,SAAS,CAAC,MAAM,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAChD,CAAC;IAFe,6BAAkB,qBAEjC,CAAA;IAED,iBAAiB;IAEjB,SAAgB,UAAU,CAAC,MAAwB;QACjD,MAAM,MAAM,GAAG;YACb,oBAAoB,EAAE,4DAA4D;YAClF,qBAAqB,EAAE,+GAA+G;YACtI,8EAA8E;SAC/E,CAAC;QAEF,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;YAC1B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;YACnE,IAAI,MAAM,EAAE,KAAK,KAAK,SAAS,EAAE,CAAC;gBAChC,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAde,qBAAU,aAczB,CAAA;IAED,SAAgB,eAAe,CAAC,MAAwB;QACtD,MAAM,IAAI,GAAG,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC;QAC/C,OAAO,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACjC,CAAC;IAHe,0BAAe,kBAG9B,CAAA;IAED,yBAAyB;IAEzB,SAAgB,kBAAkB,CAAC,MAAwB;QACzD,MAAM,iBAAiB,GAAG,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC;QAE/D,OAAO,SAAS,CAAC,MAAM,EAAE,iBAAiB,CAAC,KAAK,SAAS,CAAC;IAC5D,CAAC;IAJe,6BAAkB,qBAIjC,CAAA;IAED,SAAgB,wBAAwB,CAAC,MAAwB;QAC/D,MAAM,oBAAoB,GAAG,CAAC,qBAAqB,CAAC,CAAC;QAErD,OAAO,SAAS,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IACjD,CAAC;IAJe,mCAAwB,2BAIvC,CAAA;IAED,kBAAkB;IAEX,KAAK,UAAU,cAAc,CAAC,MAAwB,EAAE,KAAgB;QAC7E,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAC7D,OAAO,WAAW,CAAC,OAAO,IAAI,WAAW,CAAC,MAAM,CAAC,eAAe,CAAC;IACnE,CAAC;IAHqB,yBAAc,iBAGnC,CAAA;IAED,gBAAgB;IAEhB,SAAgB,SAAS,CAAC,MAAwB,EAAE,UAAoB;QACtE,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IACxE,CAAC;IAFe,oBAAS,YAExB,CAAA;AACH,CAAC,EA1EgB,UAAU,KAAV,UAAU,QA0E1B"}
|
package/dist/tuya/mq.d.ts
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import * as mqtt from 'mqtt';
|
|
2
|
-
import type { MqttClient } from 'mqtt';
|
|
3
|
-
import type { MQTTConfig } from './const.js';
|
|
4
|
-
export declare class TuyaMQ {
|
|
5
|
-
static connected: string;
|
|
6
|
-
static message: string;
|
|
7
|
-
static error: string;
|
|
8
|
-
static close: string;
|
|
9
|
-
private client?;
|
|
10
|
-
private config;
|
|
11
|
-
private event;
|
|
12
|
-
constructor(config: MQTTConfig);
|
|
13
|
-
stop(): void;
|
|
14
|
-
connect(): Promise<MqttClient>;
|
|
15
|
-
message(cb: (client: mqtt.MqttClient, message: any) => void): void;
|
|
16
|
-
error(cb: (client: mqtt.MqttClient, error: Error) => void): void;
|
|
17
|
-
close(cb: (client: mqtt.MqttClient) => void): void;
|
|
18
|
-
publish(message: string): void;
|
|
19
|
-
removeMessageListener(cb: (client: mqtt.MqttClient, message: any) => void): void;
|
|
20
|
-
private _connect;
|
|
21
|
-
private subConnect;
|
|
22
|
-
private subMessage;
|
|
23
|
-
private subError;
|
|
24
|
-
private subClose;
|
|
25
|
-
}
|
package/dist/tuya/mq.js
DELETED
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
import Event from 'events';
|
|
2
|
-
import * as mqtt from 'mqtt';
|
|
3
|
-
export class TuyaMQ {
|
|
4
|
-
static connected = 'TUYA_CONNECTED';
|
|
5
|
-
static message = 'TUYA_MESSAGE';
|
|
6
|
-
static error = 'TUYA_ERROR';
|
|
7
|
-
static close = 'TUYA_CLOSE';
|
|
8
|
-
client;
|
|
9
|
-
config;
|
|
10
|
-
event;
|
|
11
|
-
constructor(config) {
|
|
12
|
-
this.config = Object.assign({}, config);
|
|
13
|
-
this.event = new Event();
|
|
14
|
-
}
|
|
15
|
-
stop() {
|
|
16
|
-
this.client?.end();
|
|
17
|
-
}
|
|
18
|
-
async connect() {
|
|
19
|
-
return new Promise((resolve, reject) => {
|
|
20
|
-
this.event.on(TuyaMQ.connected, (client) => {
|
|
21
|
-
if (client.connected) {
|
|
22
|
-
resolve(client);
|
|
23
|
-
}
|
|
24
|
-
else {
|
|
25
|
-
reject(new Error('Client did not connect successfully.'));
|
|
26
|
-
}
|
|
27
|
-
});
|
|
28
|
-
this.client = this._connect();
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
|
-
message(cb) {
|
|
32
|
-
this.event.on(TuyaMQ.message, cb);
|
|
33
|
-
}
|
|
34
|
-
error(cb) {
|
|
35
|
-
this.event.on(TuyaMQ.error, cb);
|
|
36
|
-
}
|
|
37
|
-
close(cb) {
|
|
38
|
-
this.event.on(TuyaMQ.close, cb);
|
|
39
|
-
}
|
|
40
|
-
publish(message) {
|
|
41
|
-
const properties = {
|
|
42
|
-
qos: 1,
|
|
43
|
-
retain: false,
|
|
44
|
-
};
|
|
45
|
-
this.client?.publish(this.config.sink_topic, message, properties);
|
|
46
|
-
}
|
|
47
|
-
removeMessageListener(cb) {
|
|
48
|
-
this.event.removeListener(TuyaMQ.message, cb);
|
|
49
|
-
}
|
|
50
|
-
_connect() {
|
|
51
|
-
this.client = mqtt.connect(this.config.url, {
|
|
52
|
-
clientId: this.config.client_id,
|
|
53
|
-
username: this.config.username,
|
|
54
|
-
password: this.config.password,
|
|
55
|
-
});
|
|
56
|
-
this.subConnect(this.client);
|
|
57
|
-
this.subMessage(this.client);
|
|
58
|
-
this.subError(this.client);
|
|
59
|
-
this.subClose(this.client);
|
|
60
|
-
return this.client;
|
|
61
|
-
}
|
|
62
|
-
subConnect(client) {
|
|
63
|
-
client.on('connect', () => {
|
|
64
|
-
client.subscribe(this.config.source_topic);
|
|
65
|
-
this.event.emit(TuyaMQ.connected, client);
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
subMessage(client) {
|
|
69
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
70
|
-
client.on('message', (topic, payload, packet) => {
|
|
71
|
-
this.event.emit(TuyaMQ.message, client, payload);
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
subError(client) {
|
|
75
|
-
client.on('error', (error) => {
|
|
76
|
-
this.event.emit(TuyaMQ.error, error);
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
subClose(client) {
|
|
80
|
-
client.on('close', () => {
|
|
81
|
-
this.event.emit(TuyaMQ.close, this.client);
|
|
82
|
-
});
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
//# sourceMappingURL=mq.js.map
|
package/dist/tuya/mq.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mq.js","sourceRoot":"","sources":["../../src/tuya/mq.ts"],"names":[],"mappings":"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"}
|
package/dist/tuya/pulsar.d.ts
DELETED
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import type { LoggerService } from '@camera.ui/types';
|
|
2
|
-
import WebSocket from 'ws';
|
|
3
|
-
export interface TuyaPulsarMessage {
|
|
4
|
-
payload: {
|
|
5
|
-
data: {
|
|
6
|
-
devId: string;
|
|
7
|
-
productKey: string;
|
|
8
|
-
bizCode?: string;
|
|
9
|
-
bizData?: any;
|
|
10
|
-
status?: StatusItem[];
|
|
11
|
-
};
|
|
12
|
-
protocol: number;
|
|
13
|
-
pv: string;
|
|
14
|
-
sign: string;
|
|
15
|
-
t: number;
|
|
16
|
-
};
|
|
17
|
-
messageId: string;
|
|
18
|
-
properties: any;
|
|
19
|
-
publishTime: string;
|
|
20
|
-
redeliveryCount: number;
|
|
21
|
-
key: string;
|
|
22
|
-
}
|
|
23
|
-
interface StatusItem {
|
|
24
|
-
code: string;
|
|
25
|
-
value: any;
|
|
26
|
-
t: number;
|
|
27
|
-
}
|
|
28
|
-
export interface IConfig {
|
|
29
|
-
accessId: string;
|
|
30
|
-
accessKey: string;
|
|
31
|
-
url: string;
|
|
32
|
-
timeout?: number;
|
|
33
|
-
maxRetryTimes?: number;
|
|
34
|
-
retryTimeout?: number;
|
|
35
|
-
}
|
|
36
|
-
export declare class TuyaPulsar {
|
|
37
|
-
static data: string;
|
|
38
|
-
static error: string;
|
|
39
|
-
static open: string;
|
|
40
|
-
static close: string;
|
|
41
|
-
static reconnect: string;
|
|
42
|
-
static ping: string;
|
|
43
|
-
static pong: string;
|
|
44
|
-
static maxRetries: string;
|
|
45
|
-
private config;
|
|
46
|
-
private server?;
|
|
47
|
-
private timer;
|
|
48
|
-
private retryTimes;
|
|
49
|
-
private event;
|
|
50
|
-
constructor(config: IConfig, logger: LoggerService);
|
|
51
|
-
start(): void;
|
|
52
|
-
stop(): void;
|
|
53
|
-
open(cb: (ws: WebSocket) => void): void;
|
|
54
|
-
message(cb: (ws: WebSocket, message: any) => void): void;
|
|
55
|
-
ping(cb: (ws: WebSocket) => void): void;
|
|
56
|
-
pong(cb: (ws: WebSocket) => void): void;
|
|
57
|
-
reconnect(cb: (ws: WebSocket) => void): void;
|
|
58
|
-
ackMessage(messageId: string): void;
|
|
59
|
-
error(cb: (ws: WebSocket, error: any) => void): void;
|
|
60
|
-
close(cb: (ws: WebSocket) => void): void;
|
|
61
|
-
maxRetries(cb: () => void): void;
|
|
62
|
-
private _reconnect;
|
|
63
|
-
private _connect;
|
|
64
|
-
private subOpen;
|
|
65
|
-
private subPing;
|
|
66
|
-
private subPong;
|
|
67
|
-
private subMessage;
|
|
68
|
-
private subClose;
|
|
69
|
-
private subError;
|
|
70
|
-
private clearKeepAlive;
|
|
71
|
-
private keepAlive;
|
|
72
|
-
private handleMessage;
|
|
73
|
-
}
|
|
74
|
-
export {};
|