Шалость удалась (часть 3)

Когда приехало железо

К моменту, когда приехала ESP32, программная часть проекта уже заметно продвинулась.

Был Go backend, API регистрации устройств и heartbeat, база данных и simulator. Сервер уже умел разговаривать с устройством, которого физически ещё не существовало.

Оставалось, казалось бы, самое простое: заменить simulator настоящей ESP32. Первоначальный план предполагал Ethernet. Я заказал ESP32 и отдельный LAN - модуль, припаял необходимые контакты и начал собирать всё вместе. И здесь план впервые встретился с реальным железом.

Ethernet, который не случился Ethernet казался логичным выбором. Устройство должно постоянно находиться рядом с роутером, мобильность ему не нужна, а проводное соединение выглядит максимально предсказуемо: подключил кабель — и работаешь. По крайней мере, на бумаге.

На практике подружить ESP32 с LAN-модулем не получилось. После множества попыток всё больше подозрений падало уже не на прошивку, а на сам модуль. Вернуть его было поздно.

Можно было заказать новый, ждать доставку и продолжать бороться за первоначальную архитектуру. А можно было посмотреть на ESP32 и вспомнить одну очевидную вещь: в ней уже есть Wi-Fi.

Да, Ethernet для такого устройства мне всё ещё казался более красивым решением. Но задача проекта была не в создании идеального Ethernet-монитора. Мне нужно было понять, есть ли в офисе интернет. И Wi-Fi для этого подходил прекрасно.

Так Ethernet отправился в список «когда-нибудь потом», а первая настоящая версия устройства стала беспроводной. Питание тоже оказалось простым: обычный блок и USB Type-C.

Simulator уходит, ESP32 приходит

И здесь пригодилось одно из ранних архитектурных решений. Backend вообще не знал, как устройство подключено к сети. Вчера его клиентом был simulator. Сегодня — настоящая ESP32.

Устройство регистрировалось, получало необходимые данные и начинало периодически отправлять heartbeat. ESP32 подключалась к офисному Wi-Fi, выходила в интернет и обращалась к backend на VPS.

А сервер видел главное: - устройство вышло на связь.

Значит, ESP32 включена, офисная сеть работает, роутер имеет доступ в интернет, а запрос смог добраться до моего сервера.

Для исходной задачи этого было достаточно. Иногда сломанный компонент — это полезно. Можно было ещё несколько дней разбираться с Ethernet, проверять SPI, менять конфигурацию и заказывать новый модуль. Но это почти не приближало бы меня к решению задачи.

В pet-проектах особенно легко начать совершенствовать решение проблемы, которая уже перестала быть проблемой. Никто не ограничивает сроки — и можно бесконечно доводить первоначальную архитектуру до идеала просто потому, что когда-то именно так её придумал.

В моём случае достаточно было оставить Ethernet в покое и использовать то, что уже было на плате.

Шалость должна была когда-нибудь начать удаваться…

#backend #go #IoT #ESP32

Шалость удалась (часть 3) | Сетка — социальная сеть от hh.ru