42 lines
1.9 KiB
TypeScript
42 lines
1.9 KiB
TypeScript
/**
|
|
* WiFi 配网凭据 —— 用于 Hub Mini 等需要连 WiFi 的设备添加流程。
|
|
*
|
|
* 分平台配置(Android / iOS 可用不同 WiFi)。取值优先级:
|
|
* 平台专用 env(WIFI_SSID_ANDROID / WIFI_SSID_IOS) > 通用 env(WIFI_SSID) > 默认(woanmarket/woankeji)
|
|
* 密码同理(WIFI_PASSWORD_ANDROID / WIFI_PASSWORD_IOS > WIFI_PASSWORD > woankeji)。
|
|
*
|
|
* 示例(.env 或 shell):
|
|
* WIFI_SSID_ANDROID=woanmarket WIFI_PASSWORD_ANDROID=woankeji
|
|
* WIFI_SSID_IOS=woanmarket_5g WIFI_PASSWORD_IOS=xxxx
|
|
* 当前两端默认相同(woanmarket/woankeji);后续要分开只需在 .env 设平台专用变量。
|
|
*/
|
|
export interface WifiCredentials {
|
|
ssid: string;
|
|
password: string;
|
|
}
|
|
|
|
const DEFAULT_SSID = 'ASUS_30';
|
|
const DEFAULT_PASSWORD = 'woan123456';
|
|
|
|
function pick(platformVar: string, genericVar: string, def: string): string {
|
|
return process.env[platformVar] || process.env[genericVar] || def;
|
|
}
|
|
|
|
/** 取当前(或指定)平台的 WiFi 凭据。platform 缺省读 PLATFORM env(android/ios)。
|
|
* 规则:**iOS 默认沿用 Android 配置** —— iOS 未显式设 WIFI_SSID_IOS 时回落到 WIFI_SSID_ANDROID
|
|
* (再到通用 WIFI_SSID、默认值)。这样过夜跑批两端同一套 WiFi(ASUS_30),只在确需分开时设 IOS 专属变量。 */
|
|
export function getWifiCredentials(platform?: 'android' | 'ios'): WifiCredentials {
|
|
const isIos = (platform || process.env.PLATFORM || 'android').toLowerCase() === 'ios';
|
|
if (isIos) {
|
|
// iOS 回落链:IOS 专用 → ANDROID(默认沿用) → 通用 → 默认
|
|
return {
|
|
ssid: process.env.WIFI_SSID_IOS || process.env.WIFI_SSID_ANDROID || process.env.WIFI_SSID || DEFAULT_SSID,
|
|
password: process.env.WIFI_PASSWORD_IOS || process.env.WIFI_PASSWORD_ANDROID || process.env.WIFI_PASSWORD || DEFAULT_PASSWORD,
|
|
};
|
|
}
|
|
return {
|
|
ssid: pick('WIFI_SSID_ANDROID', 'WIFI_SSID', DEFAULT_SSID),
|
|
password: pick('WIFI_PASSWORD_ANDROID', 'WIFI_PASSWORD', DEFAULT_PASSWORD),
|
|
};
|
|
}
|