homebridge-openwrt-control 0.0.2-beta.32 → 0.0.2-beta.34
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/index.js +10 -15
- package/package.json +1 -1
- package/src/openwrt.js +14 -17
- /package/src/{apdevice.js → accesspoint.js} +0 -0
- /package/src/{swdevice.js → switch.js} +0 -0
package/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { join } from 'path';
|
|
2
2
|
import { mkdirSync, existsSync, writeFileSync } from 'fs';
|
|
3
3
|
import OpenWrt from './src/openwrt.js';
|
|
4
|
-
import AccessPoint from './src/
|
|
5
|
-
import Switch from './src/
|
|
4
|
+
import AccessPoint from './src/accesspoint.js';
|
|
5
|
+
import Switch from './src/switch.js';
|
|
6
6
|
import ImpulseGenerator from './src/impulsegenerator.js';
|
|
7
7
|
import { PluginName, PlatformName } from './src/constants.js';
|
|
8
8
|
|
|
@@ -28,7 +28,7 @@ class OpenWrtPlatform {
|
|
|
28
28
|
for (const deviceConfig of config.devices) {
|
|
29
29
|
const { name, host, displayType } = deviceConfig;
|
|
30
30
|
if (!name || !host || !displayType) {
|
|
31
|
-
log.warn(`Device: ${host || 'host missing'}, ${name || 'name missing'}, ${!displayType ? ',
|
|
31
|
+
log.warn(`Device: ${host || 'host missing'}, ${name || 'name missing'}, ${!displayType ? ', display type disabled' : ''} in config, will not be published in the Home app`);
|
|
32
32
|
continue;
|
|
33
33
|
}
|
|
34
34
|
|
|
@@ -64,7 +64,7 @@ class OpenWrtPlatform {
|
|
|
64
64
|
const refreshInterval = (deviceConfig.refreshInterval ?? 5) * 1000;
|
|
65
65
|
if (deviceConfig.accessPoint?.enable) configuredDevices.push('accessPoint');
|
|
66
66
|
if (deviceConfig.switch?.enable) configuredDevices.push('switch');
|
|
67
|
-
if (configuredDevices.length === 0)
|
|
67
|
+
if (configuredDevices.length === 0) continue;
|
|
68
68
|
|
|
69
69
|
try {
|
|
70
70
|
const openWrt = new OpenWrt(deviceConfig)
|
|
@@ -77,7 +77,7 @@ class OpenWrtPlatform {
|
|
|
77
77
|
const openWrtInfo = await openWrt.connect();
|
|
78
78
|
if (!openWrtInfo.state) {
|
|
79
79
|
if (logLevel.warn) log.warn(`Device: ${host} ${name}, no data received`);
|
|
80
|
-
|
|
80
|
+
continue;
|
|
81
81
|
}
|
|
82
82
|
|
|
83
83
|
// start openwrt impulse generator
|
|
@@ -89,17 +89,12 @@ class OpenWrtPlatform {
|
|
|
89
89
|
.on('start', async () => {
|
|
90
90
|
try {
|
|
91
91
|
|
|
92
|
-
// create device
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
case 'accessPoint': type = new AccessPoint(api, deviceConfig, openWrt, openWrtInfo); break;
|
|
96
|
-
case 'switch': type = new Switch(api, deviceConfig, openWrt, openWrtInfo); break;
|
|
97
|
-
default:
|
|
98
|
-
if (logLevel.warn) log.warn(`Device: ${host} ${name}, unknown device: ${device}`);
|
|
99
|
-
return;
|
|
100
|
-
}
|
|
92
|
+
// create device clases
|
|
93
|
+
const DeviceClasses = { accessPoint: AccessPoint, switch: Switch };
|
|
94
|
+
const DeviceClass = DeviceClasses[device];
|
|
101
95
|
|
|
102
|
-
|
|
96
|
+
if (!DeviceClass) return;
|
|
97
|
+
const type = new DeviceClass(api, deviceConfig, openWrt, openWrtInfo)
|
|
103
98
|
.on('devInfo', msg => logLevel.devInfo && log.info(msg))
|
|
104
99
|
.on('success', msg => logLevel.success && log.success(`Device: ${host} ${name}, ${msg}`))
|
|
105
100
|
.on('info', msg => log.info(`Device: ${host} ${name}, ${msg}`))
|
package/package.json
CHANGED
package/src/openwrt.js
CHANGED
|
@@ -67,9 +67,7 @@ class OpenWrt extends EventEmitter {
|
|
|
67
67
|
});
|
|
68
68
|
|
|
69
69
|
const result = response.data?.result?.[1];
|
|
70
|
-
if (!result?.ubus_rpc_session)
|
|
71
|
-
throw new Error('ubus login failed');
|
|
72
|
-
}
|
|
70
|
+
if (!result?.ubus_rpc_session) throw new Error('Ubus login failed');
|
|
73
71
|
|
|
74
72
|
this.sessionId = result.ubus_rpc_session;
|
|
75
73
|
this.sessionExpiresAt = now + 240_000;
|
|
@@ -80,7 +78,6 @@ class OpenWrt extends EventEmitter {
|
|
|
80
78
|
|
|
81
79
|
async ubusCall(service, method, params = {}) {
|
|
82
80
|
const session = await this.login();
|
|
83
|
-
|
|
84
81
|
const response = await this.axiosInstance.post('', {
|
|
85
82
|
jsonrpc: '2.0',
|
|
86
83
|
id: 2,
|
|
@@ -88,9 +85,7 @@ class OpenWrt extends EventEmitter {
|
|
|
88
85
|
params: [session, service, method, params]
|
|
89
86
|
});
|
|
90
87
|
|
|
91
|
-
if (response.data?.error)
|
|
92
|
-
throw new Error(response.data.error.message || 'ubus call error');
|
|
93
|
-
}
|
|
88
|
+
if (response.data?.error) throw new Error(response.data.error.message || 'Ubus call error');
|
|
94
89
|
|
|
95
90
|
return response.data.result[1];
|
|
96
91
|
}
|
|
@@ -118,7 +113,7 @@ class OpenWrt extends EventEmitter {
|
|
|
118
113
|
|
|
119
114
|
//const ssids = wirelessRadios.flatMap(radio => radio.interfaces);
|
|
120
115
|
const ssids = Object.entries(wirelessStatus.values || {}).flatMap(([key, data]) => {
|
|
121
|
-
if (!key.startsWith('wifinet')) return [];
|
|
116
|
+
if (!key.startsWith('wifinet')) return [];
|
|
122
117
|
return [{
|
|
123
118
|
ifname: data['.name'] || key,
|
|
124
119
|
name: data.ssid || null,
|
|
@@ -128,15 +123,6 @@ class OpenWrt extends EventEmitter {
|
|
|
128
123
|
state: true
|
|
129
124
|
}];
|
|
130
125
|
});
|
|
131
|
-
this.emit('systemInfo', systemInfo);
|
|
132
|
-
this.emit('wirelessStatus', wirelessStatus);
|
|
133
|
-
//this.emit('wirelessRadios', wirelessRadios);
|
|
134
|
-
this.emit('ssids', ssids);
|
|
135
|
-
|
|
136
|
-
if (this.firstRun) {
|
|
137
|
-
this.emit('success', `Connect success`);
|
|
138
|
-
this.firstRun = false;
|
|
139
|
-
}
|
|
140
126
|
|
|
141
127
|
openWrtInfo.state = true;
|
|
142
128
|
openWrtInfo.systemInfo = systemInfo;
|
|
@@ -144,6 +130,17 @@ class OpenWrt extends EventEmitter {
|
|
|
144
130
|
//openWrtInfo.wirelessRadios = wirelessRadios;
|
|
145
131
|
openWrtInfo.ssids = ssids;
|
|
146
132
|
|
|
133
|
+
if (this.firstRun) {
|
|
134
|
+
this.emit('success', `Connect success`);
|
|
135
|
+
this.firstRun = false;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
// emit data
|
|
139
|
+
this.emit('systemInfo', systemInfo);
|
|
140
|
+
this.emit('wirelessStatus', wirelessStatus);
|
|
141
|
+
//this.emit('wirelessRadios', wirelessRadios);
|
|
142
|
+
this.emit('ssids', ssids);
|
|
143
|
+
|
|
147
144
|
return openWrtInfo;
|
|
148
145
|
} catch (error) {
|
|
149
146
|
if (this.logError) this.emit('error', `Connect error: ${error.message}`);
|
|
File without changes
|
|
File without changes
|