homebridge-openwrt-control 0.0.2-beta.31 → 0.0.2-beta.33

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 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/apdevice.js';
5
- import Switch from './src/swdevice.js';
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 ? ', disply type disabled' : ''} in config, will not be published in the Home app`);
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,43 +64,35 @@ 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) return;
68
-
69
- const openWrt = new OpenWrt(deviceConfig)
70
- .on('success', msg => logLevel.success && log.success(`Device: ${host}, ${msg}`))
71
- .on('info', msg => log.info(`Device: ${host} ${name}, ${msg}`))
72
- .on('debug', msg => log.info(`Device: ${host} ${name}, debug: ${msg}`))
73
- .on('warn', msg => log.warn(`Device: ${host} ${name}, ${msg}`))
74
- .on('error', msg => log.error(`Device: ${host} ${name}, ${msg}`))
75
-
76
- const openWrtInfo = await openWrt.connect();
77
- if (!openWrtInfo.state) {
78
- if (logLevel.warn) log.warn(`Device: ${host} ${name}, no data received`);
79
- return;
80
- }
81
-
82
- // start openwrt impulse generator
83
- await openWrt.impulseGenerator.state(true, [{ name: 'connect', sampling: refreshInterval }], false);
67
+ if (configuredDevices.length === 0) continue;
68
+
69
+ try {
70
+ const openWrt = new OpenWrt(deviceConfig)
71
+ .on('success', msg => logLevel.success && log.success(`Device: ${host}, ${msg}`))
72
+ .on('info', msg => log.info(`Device: ${host} ${name}, ${msg}`))
73
+ .on('debug', msg => log.info(`Device: ${host} ${name}, debug: ${msg}`))
74
+ .on('warn', msg => log.warn(`Device: ${host} ${name}, ${msg}`))
75
+ .on('error', msg => log.error(`Device: ${host} ${name}, ${msg}`))
76
+
77
+ const openWrtInfo = await openWrt.connect();
78
+ if (!openWrtInfo.state) {
79
+ if (logLevel.warn) log.warn(`Device: ${host} ${name}, no data received`);
80
+ continue;
81
+ }
84
82
 
85
- for (const device of configuredDevices) {
86
- try {
83
+ // start openwrt impulse generator
84
+ await openWrt.impulseGenerator.state(true, [{ name: 'connect', sampling: refreshInterval }], false);
87
85
 
88
- // create impulse generator
86
+ // create impulse generator for every device
87
+ for (const device of configuredDevices) {
89
88
  const impulseGenerator = new ImpulseGenerator()
90
89
  .on('start', async () => {
91
90
  try {
92
91
 
93
- // create device instance
94
- let type;
95
- switch (device) {
96
- case 'accessPoint': type = new AccessPoint(api, deviceConfig, openWrt, openWrtInfo); break;
97
- case 'switch': type = new Switch(api, deviceConfig, openWrt, openWrtInfo); break;
98
- default:
99
- if (logLevel.warn) log.warn(`Device: ${host} ${name}, unknown device: ${device}`);
100
- return;
101
- }
102
-
103
- type
92
+ // create device clases
93
+ const DeviceClasses = { accessPoint: AccessPoint, switch: Switch };
94
+ const DeviceClass = DeviceClasses[device];
95
+ const type = new DeviceClass(api, deviceConfig, openWrt, openWrtInfo)
104
96
  .on('devInfo', msg => logLevel.devInfo && log.info(msg))
105
97
  .on('success', msg => logLevel.success && log.success(`Device: ${host} ${name}, ${msg}`))
106
98
  .on('info', msg => log.info(`Device: ${host} ${name}, ${msg}`))
@@ -126,9 +118,9 @@ class OpenWrtPlatform {
126
118
 
127
119
  // start accessory impulse generator
128
120
  await impulseGenerator.state(true, [{ name: 'start', sampling: 120000 }]);
129
- } catch (error) {
130
- if (logLevel.error) log.error(`Device: ${host} ${name}, Did finish launching error: ${error.message ?? error}`);
131
121
  }
122
+ } catch (error) {
123
+ if (logLevel.error) log.error(`Device: ${host} ${name}, Did finish launching error: ${error.message ?? error}`);
132
124
  }
133
125
  }
134
126
  });
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "displayName": "OpenWrt Control",
3
3
  "name": "homebridge-openwrt-control",
4
- "version": "0.0.2-beta.31",
4
+ "version": "0.0.2-beta.33",
5
5
  "description": "Homebridge plugin to control OpenWrt flashed devices.",
6
6
  "license": "MIT",
7
7
  "author": "grzegorz914",
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 []; // pomijamy wszystko inne
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