Connect to a specific Wi-Fi network - NEVER deletes existing system profiles
(self, ssid, password=None)
| 1868 | self._cache_interface_networks(target_iface, fallback_networks) |
| 1869 | return fallback_networks |
| 1870 | |
| 1871 | # Strategy 5: Return known networks as available options |
| 1872 | if self.known_networks: |
| 1873 | self.ap_logger.info("Returning known networks as scan alternatives") |
| 1874 | known_as_available = [] |
| 1875 | for i, net in enumerate(self.known_networks): |
| 1876 | known_as_available.append({ |
| 1877 | 'ssid': net['ssid'], |
| 1878 | 'signal': 80 - (i * 5), # Decreasing signal strength |
| 1879 | 'security': 'WPA2' if net.get('password') else 'Open', |
| 1880 | 'known': True |
| 1881 | }) |
| 1882 | self._cache_interface_networks(target_iface, known_as_available) |
| 1883 | return known_as_available |
| 1884 | |
| 1885 | # Strategy 5: Return helpful message for manual entry |
| 1886 | help_networks = [ |
| 1887 | { |
| 1888 | 'ssid': '📡 Cached networks may be available', |
| 1889 | 'signal': 100, |
| 1890 | 'security': '', |
| 1891 | 'instruction': True, |
| 1892 | 'known': False |
| 1893 | }, |
| 1894 | { |
| 1895 | 'ssid': '✏️ Or type network name manually below', |
| 1896 | 'signal': 90, |
| 1897 | 'security': '', |
| 1898 | 'instruction': True, |
| 1899 | 'known': False |
| 1900 | }, |
| 1901 | { |
| 1902 | 'ssid': '� Click refresh to try scanning again', |
| 1903 | 'signal': 80, |
| 1904 | 'security': '', |
| 1905 | 'instruction': True, |
| 1906 | 'known': False |
| 1907 | } |
| 1908 | ] |
| 1909 | |
| 1910 | self.ap_logger.info("Returning instructional networks for manual entry") |
| 1911 | self._cache_interface_networks(target_iface, help_networks) |
| 1912 | return help_networks |
| 1913 | |
| 1914 | except Exception as e: |
| 1915 | self.logger.error(f"Error in smart AP scanning: {e}") |
| 1916 | self.ap_logger.error(f"Error during smart AP scan: {e}") |
| 1917 | return [] |
| 1918 | |
| 1919 | def _parse_iwlist_output(self, output): |
| 1920 | """Parse iwlist scan output into network list for Pi Zero W2 compatibility""" |
| 1921 | networks = [] |
| 1922 | current_network = {} |
| 1923 | |
| 1924 | try: |
| 1925 | for line in output.split('\n'): |
| 1926 | line = line.strip() |
| 1927 |
no test coverage detected