homebridge-openwrt-control 0.0.2-beta.32 → 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,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) return;
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
- return;
80
+ continue;
81
81
  }
82
82
 
83
83
  // start openwrt impulse generator
@@ -89,17 +89,10 @@ class OpenWrtPlatform {
89
89
  .on('start', async () => {
90
90
  try {
91
91
 
92
- // create device instance
93
- let type;
94
- switch (device) {
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
- }
101
-
102
- 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)
103
96
  .on('devInfo', msg => logLevel.devInfo && log.info(msg))
104
97
  .on('success', msg => logLevel.success && log.success(`Device: ${host} ${name}, ${msg}`))
105
98
  .on('info', msg => log.info(`Device: ${host} ${name}, ${msg}`))
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.32",
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