
Уверен, что практически все наши читатели сталкивались с неожиданным поведением обычных устройств. Вроде бы должно работать, но на каком-то этапе происходит сбой, а документация не дает никакого ответа. Так недавно произошло со мной. Так что искренне надеюсь, что этот небольшой пост на Хабре сэкономит немало времени и нервов тем, кто решит настроить модульное освещение Nanoleaf и в процессе столкнется с ошибкой, когда контроллер отказывается добавляться в систему умного дома.
Начало истории

Итак, первым в нашем в доме поселился Xiaomi Bedside Lamp — жене подарили умный светильник на день рождения. Какое-то время он работал без подключения к сети, просто как ночник, цвет которого легко регулировался с помощью сенсорной панели на верхней части.
Все поменялось, когда я приобрел шлюз одноименной фирмы и несколько датчиков на движение и открытие. Я легко добавил их в домашнюю сеть, но как только попытался сделать то же самое с ночником, меня ждало фиаско. Этот умный девайс ни в какую не хотел добавляться. После сброса на заводские настройки я видел его в Mi Home, но на этапе подключения к Wi-Fi процесс останавливался и добавить его не получалось.
Я потратил несколько часов на форумах, пытаясь понять, почему система зависает, но так и не смог найти причину. Ночник продолжал работать офлайн, и всех это устраивало. Очередным поводом попробовать победить проблему стала покупка датчика температуры и влажности Xiaomi Mijia Bluetooth Temperature Humidity Sensor:

Он связывается с умным домом как Bluetooth Low Energy Device, а фишка ночника в том, что он еще умеет работать BLE-шлюзом. Последний берет на себя функции посредника между множеством Bluetooth-датчиков и контроллером умного дома. Чтобы получать данные без использования прямого соединения, нужно обязательно выполнить сопряжение ночника с Mi Home.

Так что я в очередной раз попытался его настроить, но используя другой беспроводной маршрутизатор. В спецификации устройства сказано, что оно поддерживает только Wi-Fi сети 2.4GHz. Роутер провайдера создавал сразу две сети обоих стандартов: 2.4GHz и 5GHz. Взятый у друга был попроще, поддерживая протоколы 802.11 b/g/n.
С ним подключиться тоже не удалось, несмотря на множество попыток смены настроек. Пробовал переключать режимы вручную, менял каналы и страны — все впустую. Mi Home почти всегда видел сеть, пытался с ней соединиться, но каждый раз попытка заканчивалась сбоем. Смена версии Mi Home не дала ровным счетом ничего, и я в очередной раз отложил решение в долгий ящик.
Nanoleaf Shapes Hexagon

В этот Новый год друзья положили нам под елочку Nanoleaf — да, такой гаджет оценит любой гик. Модульный светильник собирается из независимых друг от друга панелей. В нашем комплекте их было девять штук, их можно закрепить на любой стене особым типом двусторонней клейкой ленты. От обычной она отличается специальным «язычком» — если потянуть за него, крепежный элемент без проблем отделяется от поверхности. Особенно ценно, если живете в съемной квартире и не хотите повредить стены.
Между собой панели соединяются при помощи особых перемычек. Блок питания достаточно мощный, чтобы вытянуть 21 элемент. «Мозг» — специальный контроллер, который можно подсоединить к любой из панелей:

Этот небольшой девайс самостоятельно определяет топологию всех подключенных панелей и позволяет управлять ими как единым целым. У контроллера беспроводные интерфейсы вроде Wi-Fi и NFC. Последний выполняет сопряжение без ввода пароля, то есть ты просто подносишь смартфон.
Сначала он открывает собственную точку доступа. Потом приложение спрашивает, с какой из известных Wi-Fi-сетей нужно соединиться, и отправляет SSID и пароль этой сети. Nanoleaf Shapes должен самостоятельно выполнить подключение к Wi-Fi-сети дома и отобразиться в приложении. Именно на этом этапе я снова встретился с точно такой же проблемой, которую описал выше — с Xiaomi Bedside Lamp.
Сопряжение прерывалось на моменте соединения с сетью Wi-Fi, а официальная документация предлагала полный сброс устройства. Изначально я пробовал использовать iPhone с актуальной, на момент написания этого текста, версией iOS 18. В качестве альтернативы проверил на Android-телефонах, таких как Honor 50 и Huawei P Smart Z. Оба после сброса видели контроллер, пробовали соединить его с беспроводной сетью, и на этом процесс останавливался. В бесплодных попытках я проверил все три способа сопряжения: с помощью NFC, отсканировав QR-код на обороте контроллера и даже через ручной ввод пин-кода.
На Reddit я увидел сообщение, что у одного из пользователей была похожая ситуация, которая якобы решилась перепрошивкой. Получается замкнутый круг: чтобы решить проблему с Wi-Fi, нужно перепрошить контроллер, вот только сделать это можно только «по воздуху», то есть приконнектившись к Wi-Fi.
Разгадка
Решить проблему помогло вот что. На iPhone я поднял точку доступа, а на Honor 50 сделал ее основным способом подключения. После этого выполнил сброс Nanoleaf до заводских настроек и запустил сопряжение. Это была небольшая, но значимая победа. Через мобильное приложение я обновил прошивку контроллера и надеялся, что это поможет подключиться к домашней сети.
Впрочем, надежда разбилась о суровую реальность: после того как я попытался повторить сопряжение с Wi-Fi-сетью, контроллер вновь отказался работать — Accessory is not reachable. Тем не менее стало ясно: если я обнаружу разницу между хотспотом на iPhone и домашней сетью, проблема будет решена.
Мы привыкли думать, что все производители стремятся обеспечить обратную совместимость, но это не так. В беспроводных сетях вендоры по-прежнему сохраняют возможность установить шифрование WEP, которое уже больше 20 лет считается небезопасным. Но вот производители современных устройств не позволяют соединяться с такими сетями.
Если вы на iPhone попробуете подключиться к Wi-Fi-сети, зашифрованной WPA TKIP или WPA2 TKIP, то iOS пометит соединение как плохо защищенное. В качестве приемлемого уровня безопасности предлагается WPA2 AES или WPA3. Ну а некоторые производители устройств уже перестали использовать WPA TKIP, даже если поддержка формально заявлена.
Моя домашняя беспроводная сеть сейчас построена на роутерах Mikrotik с помощью технологии CAPsMAN. Все они для максимальной совместимости поддерживают WPA и WPA2, как TKIP, так и AES. Часть клиентов у меня очень старая, и WPA TKIP — их предел. Когда любое устройство пытается подключиться к сети, роутер по умолчанию предлагает WPA TKIP. Это источник проблемы с Wi-Fi-соединением для многих smart-гаджетов.
Если вы уберете поддержку WPA TKIP и WPA AES, оставив WPA2 TKIP, то подключение пройдет без каких-либо сложностей. Это сработало не только для Nanoleaf, но и с проблемным ночником Xiaomi. При этом нет разницы, какая версия протокола 802.11 b/g/n используется. Производители этих устройств, несмотря на заявленную поддержку WPA TKIP и WPA2 TKIP, нормально работают только с последним.
Это объяснило все мои предыдущие попытки. Роутер провайдера по умолчанию использовал WPA TKIP. Точка доступа iPhone в режиме совместимости предлагает WPA2 TKIP в качестве минимально допустимого протокола, и это дало наконец Nanoleaf успешно подключиться.
В домашней сети мне по-прежнему нужно использовать устройства, которые не поддерживают WPA2, так что я решил создать еще одну точку доступа. У меня в ящике давно лежал миниатюрный роутер Mikrotik mAP lite. Для него я сделал отдельный профиль CAPsMAN, указав только WPA2 TKIP в качестве единственного поддерживаемого способа.

На это, казалось бы, элементарное решение у меня ушло огромное количество времени и попыток. На профильных форумах я несколько раз видел, что пользователи рекомендуют предпочитать WPA2 TKIP другим стандартам, но не придал этому значения. Я был убежден, что все современные устройства поддерживают WPA-протокол. Оказалось, это не всегда верно.
А вы когда-нибудь сталкивались с такой проблемой? Было бы интересно послушать!
Автор: Rebrov_S