Так - і поточна мережа, і потенційні мережі можуть бути скриптовані з командного рядка / оболонки unix, так що вони поширюються на більшість мов автоматизації - включаючи AppleScript. Я б склав вашу остаточну програму в python або swift, але ось як розпочати процес із силою сигналу.
Отримання поточної підключеної мережі легко та швидко. Відповідні записи для сигналу та шуму - це необроблені значення радіо на каналі, який узгоджується, але було б краще відключити швидкість передачі, оскільки поки ви швидше, ніж мережа X, це не має особливого значення, який шум / сигнал після передачі швидкість падає, коли сигнал падає або шум піднімається.
system_profiler SPAirPortDataType
:
AC88U_5G:
PHY Mode: 802.11ac
BSSID: 54:36:9b:2d:78:e2
Channel: 149
Country Code: CN
Network Type: Infrastructure
Security: WPA2 Personal
Signal / Noise: -26 dBm / -81 dBm
Transmit Rate: 867
MCS Index: 9
Other Local Wi-Fi Networks:
AC88U:
PHY Mode: 802.11n
BSSID: 54:36:9b:2d:78:e1
Channel: 7
Country Code: CN
Network Type: Infrastructure
Security: WPA2 Personal
Signal / Noise: -18 dBm / 0 dBm
Сканування всіх можливих радіостанцій та каналів відбувається досить повільніше (5–10 секунд замість частки секунди для запуску), ніж простий дамп вгорі, тому вам знадобиться програма для обробки цього або сценарій, який набагато більш кмітливий. Я б почав airport --scan
і фільтрував бажаний SSID або відому MAC-адресу на базових станціях:
/System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Resources/airport --scan
Після сканування, ви system_profiler
повинні повідомити про більше результатів, оскільки результати сканування, здається, кешуються локально протягом певного часу.
Інженери WiFi проводять цю оптимізацію постійно, контролюючи швидкість MCS / передачі. Просто виберіть усі швидкості передачі, якими ви бажаєте виселити всіх клієнтів для свого основного радіо, і як тільки вони втратять зв’язок на бажаних високих швидкостях, усі ОС впадуть, а потім підберіть наступне радіо, яке є в наявності. Набагато простіше, ніж розгортати спеціальні сценарії на всі пристрої, які підключаються до двох ваших радіо.
Крім того, само собою зрозуміло - якщо ви могли б зробити обидва радіопередачі на одному SSID - тоді ваші продукти Apple просто блукали, але, можливо, у вас є вагомі причини не мати однакового мережевого імені та спростити свою роботу.
А щоб відповісти на запитання @nohillside "як вирішити, який Wi-Fi сильніший", ось декілька вказівок.