Сайт Данила

Розумний будинок

Кількість слів: ~980

plug_front
Розетка, вид спереду

Відчуваючи сильне бажання зайнятися hardware проєктом, я придбав собі розумну розетку. Але перед покупкою треба завжди знаходити найкращу пропозицію, тому дякую @CakesTwix за пораду та відповіді на мої запитання. А ще всім іншим учасникам XMPP чату!

Існує безліч смарт пристроїв, але далеко не всі вони працюють на вільному ПЗ. Визначивши потрібну модель та спосіб її прошивки я замовив собі дві розетки Aubess 20A. У неї купа варіацій, а в моєму випадку вона працює на чипі BK7231N що знаходиться на CB2S модулі. Як я зрозумів, раніше був експлойт з Wi-Fi де не треба було розбирати корпус для перепрошивки, але він наче як давно пропатчений, хоч я не розраховував на цей експлойт і планував перепрошити по UART, після всьго процесу я бажаю щоб таких уразливостей було більше.

Щоб дістатися до UART пінів треба вийняти внутрощі з корпусу пристрою. Якби я знав як сильно китайці не хочуть щоб я розбирав їх девайси!

plug_back
Розетка, вид сзаду

Може це я такий, а може воно там приклеєно, але розібрати корпус було дуже важко. Я пробував і нагрівати й стискати й тягнути. Результат один, треба частково руйнувати корпус для отримання доступу до внутрішніх елементів пристрою. Якщо ви майже не пошкодили корпус у процесі – вітаю, гарна робота.

closeup_chip
Чип, макро вид

Побачивши що в мене за чип, я пошукав за назвою в https://openbekeniot.github.io/webapp/devicesList.html знайшовши https://www.elektroda.com/rtvforum/topic4031269.html пост про такий же чип! Там навіть уже є готовий конфіг для налаштування пінів OpenBeken прошивки. Модуль з фото має дві сторони й кожна сторона має різні контакти. Для підключення UART достатньо припаяти чотири дроти 3.3V, Ground, TX, RX. Під час перепрошивки треба перезавантажити пристрій, тому для зручності можна ще припаяти CEN який потім у визначений час замкнеться до землі.

soldered_up
Припаяв, вид згори
soldered_side
Припаяв, вид збоку

Я очікував те що після припаювання, наступний крок прошивки по UART повиннен би бути легким, але щось не працювало, як завжди. Почну з того що більшість GUI флешерів розраховані на Windows, це суттєвий мінус, хоча CLI варіанти прошивачів існують і під Linux. Я зміг запустити https://github.com/openshwprojects/BK7231GUIFlashTool з допомогою mono на лінуксі, але під час читання пам’яті пристрою ставався timeout. Не знаю чи я неправильно замикав CEN, чи погано час підбирав для перезавантаження, так чи інакше воно не працювало деякий час. Коли запрацювало (все ще на лінукс) видало помилку про недостатню кількість зчитаних байт… Пошукавши за цією помилкою, на форумі знайшлася відповідь спробувати https://github.com/OpenBekenIOT/hid_download_py старий legacy прошивач. На диво він спрацював. Перше що я зробив це зчитування всієї пам’яті для бекапу, але й тут отримав попередження – CRC hash mismatch. Ігноруючи лог прошив останньою версією прошивки https://github.com/openshwprojects/OpenBK7231T_App/releases/, в результаті все запрацювало. А щоб записати базові налаштування знову використав BK7231GUIFlashTool.

Але нащо комусь смарт розетка якщо нема де подивитися на гарні графіки та віджети? Решту наступного дня витратив на налаштування HomeAssistant під NixOS https://codeberg.org/knightpp/nixos-cfg/commit/0894916bd1c2d1c5c1c4673916dc75a7078762c7.

Розумне сортування
Парсер з рекурсивним спуском у Go