company_banner

Гиперкуб. Как мы обеспечили разработчиков тестовыми устройствами и не потеряли их

    Невозможно полноценно тестировать и отлаживать мобильные приложения без тестовых устройств. Таких устройств должно быть много, потому что один и тот же код на разных моделях ведёт себя по-разному. Но как организовать учёт устройств? Как сделать так, чтобы разработчики и тестировщики быстро и без волокиты получали конкретный смартфон в необходимой конфигурации?


    Меня зовут Алексей Лавренюк. Вы можете знать меня как одного из авторов Яндекс.Танка и докладчика на тему нагрузочного тестирования. Потом я измерял энергопотребление мобильных телефонов. Теперь я делаю Яндекс.Ровер в команде беспилотных автомобилей (и иногда подрабатываю Дедом Морозом). А между телефонами и Ровером был Гиперкуб.


    Пару лет назад в наш отдел нагрузочного тестирования зашёл руководитель мобильной разработки и пожаловался на ситуацию с тестовыми устройствами. Телефоны кочевали из рук в руки, выбрать и быстро найти телефон было проблемой. У нас уже был опыт работы с мобильными устройствами: мы строили цифровой амперметр, чтобы измерять их энергопотребление. Поэтому мы решили помочь коллегам и быстро сделать классную штуку: казалось, работы всего на три месяца. Смеюсь над собой, наивным, из 2020 года и рассказываю, что нас ждало на самом деле.




    Концепция сервиса и первые идеи


    Мы были одними из немногих в Яндексе, кто собирал железные устройства. Кроме того, мы разбирались в мобильных. Для меня идея работы сервиса лежала на поверхности: надо подключить телефоны к хабу и отслеживать по USB их наличие и перемещение по офису. Конструкция поместится в серверный шкаф.


    Вот как я представлял себе процесс:


    1. Ведём учёт телефонов по USB. Все телефоны в шкафу подключены по USB. Телефон заряжается, а мы видим информацию о нём, в том числе Device ID — уникальный идентификатор (на самом деле для некоторых китайских устройств не всегда уникальный), по которому можно отличить один телефон от другого. Кстати, по идентификатору — а он есть вообще у любых USB-устройств — можно вести учёт чего угодно: прикрепить обычную флешку к ключам от автомобилей, например, и вести автоматический учёт ключей.
    2. Считываем пользователей по бейджику. Всех, кто берёт телефон из шкафа, мы идентифицируем по бейджику (пропуску, по которому можно узнать любого сотрудника Яндекса). После того как сотрудник открывает шкаф, считается, что все перемещения телефонов в шкафу сделал он.
    3. Вся информация о перемещениях централизованно хранится в сервисе. Мы видим, где и у кого находится каждый мобильный. Можем отслеживать статистику: какие модели более популярны, каких телефонов не хватает.

    Таких шкафов может быть много, но информация обо всех мобильных устройствах в них лежит в одном месте. Все кубы (шкафы) объединены и логически связаны, а вместе они образуют большой Гиперкуб (отсюда и пошло внутреннее название сервиса).


    Идея всем понравилась, мы начали работу.


    Гиперкуб. Начало


    Мы взяли в хелпдеске RFID-считыватель и мини-компьютер Intel NUC. Купили ардуинку, электрозамок, шкафчик для сетевого оборудования (он был меньше серверного шкафа, но с такими же «рельсами» для крепления оборудования).




    Конечно, нам не дали ТЗ и списка покупок. Мы не знали точно, какая модель шкафа подойдёт, сколько нужно болтов и метров провода. Требования к шкафу менялись на ходу в соответствии с пожеланиями команд. Мы договорились, например, что в одном шкафу будем хранить 40 мобильных телефонов, а шкаф обязательно поставим на тумбочку, потому что он маленький и наклоняться к нему неудобно.




    Полки для телефонов


    Мы долго думали, как сделать полки удобными. В Яндексе были стойки для демонстрации телефонов или тестирования интерфейсов. Думали переиспользовать стойки, но они не очень подходили нам: телефоны там ставят экраном к пользователю, как на витрине — нам это незачем. Мы хотели оптимизировать место в шкафу, поэтому решили сами сделать полки.


    Появилась идея сложить телефоны внутри плотно, как книги. Для этого мы искали разделители в магазинах канцтоваров, пробовали использовать держатели CD-дисков, магазинные полки — всё мимо. В порядке эксперимента приклеили термоклеем к полке пластиковые уголки из порезанного на куски разделителя от кабельного короба. «Книжная раскладка» получилась очень удачной и понравилась нам.




    Мало места и много хабов


    Внизу шкафа было мало места для четырёх 10-портовых хабов и Intel NUC — нам далеко не с первой попытки удалось впихнуть их туда. Дверь шкафа не предназначалась для крепления замка — мы использовали много термоклея, деревянные бруски и ножовку. Напомню: проект делала группа нагрузочного тестирования, ни у кого из нас ещё не было опыта работы с болгаркой на кофе-пойнте.




    Прототип сервиса


    С этим разобрались быстро: сделали страничку, которая показывала местонахождение телефонов, и разместили её прямо в нашем сервисе нагрузочного тестирования. Просто потому, что это позволяло быстро и практически без усилий попробовать, что получилось.


    Первый работающий прототип


    Мы собрали первый Гиперкуб за три недели. Выглядел он так:




    Сначала решили протестировать прототип у себя, в московском офисе Яндекса (заказчик находился в Екатеринбурге). Он уехал на обкатку к команде мобильного Яндекс.Браузера — с ней мы уже были знакомы по проекту Yandex Volta (более свежая версия доклада тут). Эти ребята хорошо разбираются в энергопотреблении.


    Первое тестирование


    Снова полки


    Оказалось, термоклей плохо держит пластиковые уголки на металлических полках. Мы вернулись к идее подставок для телефонов. Я долго думал о том, как должна выглядеть идеальная полка в шкафу. Сейчас кажется, что нарисовать её можно было за 15 минут. В итоге получилось не совсем так, как на первом эскизе, но вот что я нарисовал тогда:




    Мы взяли покупные полки для серверных шкафов, а сверху поставили фрезерованные разделители из листового пластика, которые изготовили под заказ. Эта конструкция сохранилась до сих пор.




    Неудобные хабы


    Хабы для первых шкафов были с выключателем питания, кнопками без фиксации, выключенные по умолчанию. Поэтому после каждой перезагрузки приходилось руками включать все четыре хаба. Мы подключили SpeechKit Яндекса, чтобы куб произносил, если хабы вылетают: «Мне нехорошо, позови, пожалуйста, ответственного». Когда приходит ответственный — голос подсказывает проверить хабы. А ещё голосовой помощник стал называть сотрудников по имени и озвучивать, кто сколько телефонов взял.


    Проблема с замком


    С замком было несколько итераций. Когда я искал замки для прототипа в самом начале, я нашёл единственный устроивший меня вариант — «Шериф»: маленький, сильный и очень остроумно сделанный (аналогов я до сих пор не видел). Закрывался отлично, но, чтобы открыть шкаф, требовалось слегка нажать на дверь. Не все пользователи это понимали, поэтому мы решили сменить замок.


    Взяли «Шерифа» с пружинкой, которая отталкивала дверь. Шкаф открывался отлично — но стал плохо закрываться и оставался открытым (а сам себя считал закрытым). Это происходило потому, что датчик закрытия был установлен отдельно от замка, дверь имела люфт и датчик иногда срабатывал до закрытия двери. Настроить его было нереально.


    Мы ещё раз сменили замок на очередного «Шерифа» уже не такой остроумной конструкции, но зато прямо в него был встроен датчик закрытия. На прототипе замок работал, но после запуска в эксплуатацию в первом же шкафу он стал заедать. Пришлось танцевать с бубном: разбирать, смазывать, допиливать напильником. С горем пополам он завёлся.


    После первых тестов стало понятно: шкаф нравится разработчикам и тестировщикам, они активно им пользуются. Это удобно: можно следить за устройствами и искать нужное в веб-сервисе, а не спрашивать у коллег: «У кого сейчас этот телефон?». Мы выявили самые важные проблемы: неудобные USB-хабы, которые нужно включать руками, длинные USB-провода плохого качества (разъёмы ломались, а провода путались), плохой замок и ненадёжные разделители полок, которые всё время отваливались. Работа продолжалась.


    Экспансия в гиперпространство


    Менеджер из отдела управления проектами — он же помог нам организовать аутсорс для полок — активно занимался внутренним пиаром в Яндексе: ходил в разные команды и рассказывал о нашем замечательном сервисе. Мы встречались с представителями других отделов и неожиданно для себя стали получать внутренние заказы на несколько десятков шкафов. Вырисовывалась мрачная картина: нагрузочные тестировщики неделями всей командой вручную собирают шкафы из того, что под рукой.


    Мы поняли, что нам нужна помощь со сборкой. Перед этим следовало оптимизировать стоимость одного экземпляра шкафа и его конструкцию для мелкосерийного производства.


    Стажёр


    На полтора летних месяца нам удалось взять стажёра, который умел паять, сверлить и немного кодить. С его помощью мы переделали старый шкаф на Raspberry Pi (чтобы избавиться от дорогостоящего и ненужного Intel NUC) и собрали ещё по одному шкафу для установки в хелпдесках в Москве и в Питере (там сидят умные ребята, которые помогут нашим пользователям справиться с прототипом и дадут полезный фидбек).


    Бюджетные альтернативы


    Чтобы оптимизировать стоимость, мы заменили самые неоправданно дорогие компоненты в прототипе: мини-компьютер Intel NUC (25 тыс. рублей) и RFID-читалку (5 тыс.). Альтернативную читалку нашли на АлиЭкспрессе за 150 рублей, а с мини-компьютера переехали на Raspberry Pi за 3,5 тыс. рублей.


    На новой платформе мы столкнулись с несколькими неприятностями. Сначала выяснилось, что реле для замков не переключаются, потому что RPi выдаёт 3,3 В, а механические реле рассчитаны на 5 В. Пришлось перейти на твердотельные. Потом обнаружили, что на плате нет часов, а забирать время по NTP не получится: без правильного времени нельзя аутентифицироваться в офисной сети (нашли специальную плату-расширение с часами для RPi).


    Самая фееричная проблема была с айфонами. Как только в RPi втыкали шестой по счёту айфон, она становилась недоступна по сети. С этим нам помог разобраться проходивший мимо руководитель проектов (а в прошлом суровый админ). Оказалось, что сетевая карта на RPi разведена через USB, а айфоны провоцировали один глючный сервис досить USB-шину. Эта проблема впервые появилась в минском офисе, ребята смогли оперативно её воспроизвести и дать обратную связь, которая нам очень помогла. Решили проблему, когда снесли графический интерфейс (если я правильно помню), потому что сервис был в него проинтегрирован.


    Шкафы растут


    О размере шкафа шли споры. Кто-то считал, что нужно помещать в шкаф в два раза больше телефонов, кто-то — что большие шкафы неудобно использовать в офисе. А потом мы обнаружили, что уже скупили все маленькие шкафы из московских магазинов, и следующая поставка будет только через три месяца. Споры завершились сами собой.


    Все следующие шкафы решили делать большими. Забегая вперёд, скажу: это оказалось верным решением. На базе большого шкафа стало проще размещать электронику, в него помещалось уже не 40, а 80 телефонов. В нём между рельсами были стандартные серверные 19 дюймов. В маленьком шкафу расстояния между рельсами не хватало.




    Веб-разработка и UX


    Мы своими силами потыкали палочкой в один из внутренних фреймворков для веб-разработки, поняли, что он хорош, и перетащили табличку телефонов из Django в React. Но было ясно, что просто табличка никого не устроит. Отдел геосервисов подумал и запилил нам задачу на несколько экранов.


    Пришлось подключать команду веб-разработки. Нам выделили дизайнера продукта, который полностью продумал взаимодействие пользователей с сервисом. Он сделал удобные наклейки на шкафы, разместил шкафы на карте офиса, изучил чат поддержки, чтобы лучше понять, чего хотят пользователи. Короче говоря, взял проект под своё крыло с точки зрения пользовательского опыта.


    Веб-разработчики взялись за фронтенд и быстро реализовали дизайн-макеты. У нас появилось что-то похожее на Яндекс.Маркет в уменьшенном масштабе: приходишь, выбираешь телефон, идёшь его забирать в шкафу. Мечта просто.




    Где-то здесь мы поняли, что проект придётся раскатывать на весь Яндекс. Мы согласовали траты, чтобы поправить ошибки и серьёзно улучшить качество сервиса: появился общий бюджет на покупку шкафов, запчастей и инструментов. С помощью Паши Мельникова, руководителя группы железных RnD-проектов (на тот момент, а теперь он занимается Яндекс.Станцией), удалось договориться с внешней компанией о производстве серийных шкафов с учётом наших требований.


    Новая версия хабов


    Купили другую версию хабов, без кнопок включения. Теперь не нужно было лезть внутрь шкафа и включать хабы после перезагрузки. Мы собрали один прототип вручную — он работал отлично. Но когда мы отправили его в Екатеринбург, нам сразу же стали поступать жалобы, что шкаф не видит некоторые телефоны. Разобрались в этом только на месте. Оказалось, что у новых хабов другая топология (даже у одной и той же модели хаба в разных сериях топология может различаться).


    И старый, и новый 10-портовый хаб внутри состоит из трёх USB-чипов по четыре порта. Но в старом хабе с кнопкой питания два чипа воткнуты в один, а в новом они соединены «гирляндой». Количество портов одинаковое, но глубина вложенности разная. Старые телефоны не определялись в портах с большой глубиной вложенности. Хорошо, что они были старыми и не очень нужными. Мы решили проблему больной головы путём отрубания головы: просто взяли для шкафа более новые модели телефонов, ну и ждали реализации собственных хабов. Правда, в софте пришлось заложить возможность задавать разные конфигурации топологии USB для разных шкафов.


    Свои хабы


    Вместе с Пашей мы начали разработку нашего собственного USB-хаба на стороне. Он требовался, чтобы решить проблему покупных хабов, а ещё — чтобы подсвечивать устройства, за которыми пришёл пользователь, и ускорить зарядку современных телефонов: для этого мы взяли мощные блоки питания и поддержали последние стандарты. В хабах была заложена возможность подключать внешние датчики температуры — так мы сможем контролировать её на каждой полке. Размеры выбрали такие, чтобы две платы хаба, установленные в один корпус, в точности встали в 19-дюймовую серверную стойку. Хабы получили низкий профиль, чтобы сэкономить место между полок — в общем, они получились клёвые и современные. Паша ещё расскажет подробнее об этом проекте на Хабре.




    Сборка


    Сборка из комплектующих на базе покупных шкафов тоже отправилась на аутсорс. По нашим расчётам, команда сборки должна была справиться за пару вечеров, но из-за обилия ручного труда это растянулось на пару недель. Провода, которые подключаются нестандартным образом по схемам, нарисованным ручкой на листочке, ручная пайка, отсутствие готовых посадочных мест для компонентов и самих готовых компонентов… Шкафы допиливали в буквальном смысле слова: сверлили отверстия для замков и фигурно выпиливали болгаркой под другие компоненты.


    Ближе к продакшену


    Мы уже мечтали отдать шкафы в продакшен. Решили, что для ускорения нужно упростить производство и увеличить долю аутсорса.


    Периферийная плата


    Спроектировали периферийную плату и обновили компоненты. Теперь она подключалась к Raspberry Pi одним шлейфом, а все остальные компоненты — стандартными разъёмами.


    Развели на плате часы для RPi: раньше мы втыкали отдельный готовый компонент, купленный в магазине. Ещё мы разместили там DC/DC-преобразователь (раньше был отдельный БП) и интерфейс RS-485: это позволило избавиться от паутины проводов. Раньше мы их вручную подключали от точки к точке с помощью пайки или втыкания в один из пинов RPi. Сверялись со схемой, смотрели место входа для провода, искали нужное отверстие — и так с каждым проводом по очереди. Это было очень трудоёмко и провоцировало ошибки при сборке. На новой плате использовались телефонные разъёмы.



    Позже оказалось: при разводке я не учёл, что подключать микросхему RS-485 нужно ко вполне определённым ножкам RPi. Пришлось обновлять версию платы. Когда рисовал компонент для развязки питания RS-485, я не обратил внимания на то, что в даташите на микросхему дан вид снизу, а не сверху, и при первом включении она сделала «Бах!» с характерным запахом. Пришлось для всей первой серии плат перепаять микросхему на обратную сторону платы.




    Новая версия шкафа


    Покупные шкафы перестали нас устраивать. Они странно выглядели, потому что предназначались для серверной, а не офиса, а ещё их требовалось дорабатывать руками. На это уходило много времени, и результат получался кустарный. Решили делать собственные шкафы на заводе в Арзамасе.


    Мы попросили завод собрать модифицированный шкаф на базе их стандартного серверного шкафа: поменять размер, установить замок, вывести наружу нужные разъёмы, сделать отверстия для крепления элементов. Нарисовали эскизы полок, сделали корпус для блока электроники (RPi и её друзья), корпус для хаба. Когда дело дошло до замка, инженер-проектировщик с завода слегка модифицировал покупной вариант, и тот стал работать лучше. Баг-репорт с пулл-реквестом на доработку железа отправили авторам «Шерифа».


    Очень удобно, что вся электроника управления шкафом теперь сосредоточилась в одном корпусе, который крепится на четыре болта. Его можно собирать отдельно от шкафа, его легко извлечь и заменить целиком при поломке.






    В тестовых шкафах провода путались, разъёмы вылетали из хаба и ломались, а порой сотрудники забирали с собой провода. Мы решили жёстко прикрепить провода к полкам, при этом оставив возможность менять провода. Я нарисовал эскиз — и завод реализовал нам его в железе.





    Мы, конечно, несколько раз ездили в Арзамас: договариваться, налаживать производство, принимать результат. В результате мы получили шкафы практически полностью готовыми, оставалось ввести их в эксплуатацию. Но это уже отдельная история.




    Кстати, если случится побывать в Арзамасе, зайдите в бургерную в центре: она клёвая.


    В следующих сериях


    Сейчас наши кубы активно используются в компании. Мы даже придумали для них названия: Стэнли Кубик, Кубик Магги, Кубик Арни (Арнольда Шварценеггера, шесть штук) и т. п.


    В ближайшее время коллеги поделятся с вами историями о дальнейшей судьбе сервиса. Например, о том, как разрабатывался Яндекс.Хаб. Или о том, как некоторые порты хабов стали «неметь». На «онемевшем» порту не видно отключений USB-устройств, даже в сообщениях ядра ничего нет. Но всё нормализуется, если вытащить из порта телефон и воткнуть его обратно. А пока ребята пишут для вас статьи — попробуйте угадать сами, почему такое может быть.

    Яндекс
    Как мы делаем Яндекс

    Комментарии 55

      +2
      Можно про хаб с быстрой зарядкой? Полгода назад искал готовые варианты, чтобы одновременно заряжать 5+ телефонов с QC 2, так и не нашёл, остался на колхозном варианте с кучей блоков питания.
        +1

        Я вот таким пользуюсь, очень доволен. Про скорость не уверен, но это лучшее, что удалось подобрать опытным путем.
        https://plugable.com/products/usb3-hub7bc

          0
          Использовал такие в QA ферме, горят они очень хорошо, правда это в 2015 было, может у них новая ревизия. Похожий шкаф проектировал в интеле, когда интел пытался ворваться на рынок Android-девайсов, только у нас все было несколько масштабнее.
          0

          Про хаб Паша планирует сделать отдельную статью, спойлерить не буду )

            +1
            Есть вот такие модули с поддержкой разных стандартов — s.aliexpress.com/AVJrMJFj
              0
              Спасибо, это хороший вариант!
              0
                0
                А у него не только на одном порту быстрая зарядка? По описанию так выглядит.
              +1
              Пост хороший, а вот заголовок двусмысленный :) не потеряли разработчиков, или устройства?
                +1

                Ни тех, ни других ;)

                0

                Индикацию можно сделать RGB-светодиодом, например, если телефон отсутствует — горит красный, при зарядке — зеленый, а если забронирован кем-то — то синий.

                  0

                  Так и задумано, в статье про хаб Паша про это расскажет.

                  +1
                  Хорошая статья. Показывает процесс хардварной разработки с ракурса без технических деталей. Так как написана «живенько», то читать интересно. Чем-то напомнило произведение искусства — статью про робота-библиотекаря)

                  Поэтому мы решили помочь коллегам и быстро сделать классную штуку: казалось, работы всего на три месяца.

                  За три месяца как раз делается всё самое интересное — воплощаемая идея на коленке «живёт и эволюционирует». Весь спектр того, за что я люблю разработку: удовлетворение, озарение, удивление и всё такое. Тут и пайка, и сопли термоклея и прочее выпиливание лобзиком) Короче говоря — сплошное творчество. А вот чтобы довести до того, как это выглядит на последней картинке…
                    0

                    Правило 80/20 в действии, угу.

                    +3
                    Не люблю яндекс, но тут даже захотелось поработать в этом отделе — «диванном интеграторе».

                    Пришлось для всей первой серии плат перепаять микросхему на обратную сторону платы.

                    Не очень понятно как вы smd-микросхему перепаяли на другую сторону платы O_o

                    И сразу напрашивается следующий логический шаг — пока соьрудник идет к щкафу ваша CI/CD заливает в телефон свеже-собранную apk — останется только взять телефон с полки и начать тестировать.
                      0

                      Она была не SMD (к счастью), выводной корпус с четырьмя ножками в ряд. Забыл, как называлась.


                      А следующий шаг вы примерно угадали ) Там еще сертификаты для внутренней wifi сети накатываются. Но это уже было без моего участия делается.

                        0
                        ваша CI/CD заливает в телефон свеже-собранную apk
                        Прекрасная идея. Только там сложности с выбором правильной apk для установки. Слишком много проектов и вариантов.
                          0

                          Вариантов много, но мы знаем, кто забронировал телефон и из какого он проекта. Можно на проект назначить профиль наливки и настройки. Больше вопросов с зоопарком телефонов и версий ОС на них.

                            0
                            Еще интереснее как ipa залить принудительно на iphone. Да, там есть ad-hoc профили, да можно через браузер, но по ссылке на plist кто-то должен кликнуть, а потом еще и подтвердить (насколько помню, давно делал)

                            ЗЫ более того, можно пойти еще дальше и прямо из CI/CD выбирать на какой телефон заливать, в какой шкаф, на какую полку. И угадывать ничего не придется.

                            ЗЫ2 to Aracon есть готовые чипы — один чип один телефон, напихать таких на плату можно десятки, плату развести не так чтобы и сложно и дорого, дальше китай (или сша), пайка и вуаля
                              0
                              Можно устанавливать без подтверждения через UI. Например, с помощью fbsimctl или ideviceinstaller.
                                0
                                Спасибо, это дельный совет! Попробую так собрать. Выше, похоже, как раз на такой чип дали ссылку.
                          +1
                          Выбор разъема питания для платы Hypercube странный — обычно используется что-то типа JST SH, а XT для таких токов — это перебор, мне кажется. Всё-таки XT — это для силовых цепей.

                          Нет вентиляции в блоке электроники, а малинка греется неплохо. Или там верхней крышки нет совсем?

                          А для чего используется RS-485 — из текста не ясно?

                            0

                            Можно для питания и обычный коаксиальный использовать.

                              0

                              Просто у нас они остались с предыдущего проекта ) И не было обжимного инструмента. Сейчас бы я наверное microfit взял.


                              Есть вентиляционные отверстия на передней панели, по опыту эксплуатации, этого достаточно.


                              RS-485 используется для управления хабами.

                              –9

                              Ппц. Чем только люди не занимаются, лишь бы не работать.

                                +1
                                А что если в пустой слот положить свой телефон?)
                                  0

                                  Он попадет в базу, если его забрать, шкаф будет считать тебя должником. Чтобы забрать, нужно будет пообщаться с админом шкафа, который убедится, что это правда твой телефон.

                                  0
                                  А что если сделать терминал в который встраиваются мобильные девайсы и просто работать с ним?
                                    0

                                    Терминал с удаленным доступом? Такой проект у нас тоже есть, но не все кейсы им покрываются. Еще была идея добавить возможность в Гиперкубе на неиспользуемые в данный момент девайсы удаленно заходить или гонять на них тесты. Так парк устройств получится еще лучше утилизировать.

                                    +1
                                    Спасибо за статью, очень интересно почитать про доводку устройства до ума. У вас Raspberry на SD-карточках работают? Насколько долго они протянут?
                                      +1

                                      За время, пока я работал над проектом — 2 года, карточки не дохли.

                                        0
                                        Прекрасно. Этот момент останавливал меня от использования Raspberry, по совету ваших коллег используем NanoPi.
                                        Если не секрет, какие SD-карточки использовали?
                                          0

                                          Да я уже не помню. Что-то выбрали не самое дешевое в ассортименте компьютерного магазина. Мы тоже хотим NanoPi попробовать, на текущем проекте )

                                            0
                                            Видимо зависит от сценариев использования. Если много записей в БД у сервера умного дома, то на год примерно хватает. Если чисто для управления поставить, наверное долго проживёт, особенно если что-то типа dietpi ставить.
                                        0
                                        при разводке я не учёл, что подключать микросхему RS-485 нужно ко вполне определённым ножкам RPi

                                        Так понял, что RE#/DE программное? Можно реализовать схему аппаратного управления, тогда микросхема RS485 будет не зависеть от драйвера в ядре, а просто преобразовывать уровни uart'а к логике RS485.
                                        На «онемевшем» порту не видно отключений USB-устройств, даже в сообщениях ядра ничего нет.

                                        Стоило предусмотреть отключение питания на USB-хабе/разъеме. Если у микросхемы хаба нет программно управляемых GPIO, то есть расширители портов, которые эти GPIO добавляют.
                                          0
                                          Можно реализовать схему аппаратного управления, тогда микросхема RS485 будет не зависеть от драйвера в ядре, а просто преобразовывать уровни uart'а к логике RS485.

                                          Огород довольно большой городить, если не брать готовые трансиверы с автоматическим управлением передачей.
                                          Другая проблема в том, что у RPi смехотворно мало UART, в этом качестве плата отвратительна.

                                            0
                                            Возможно, я не схемотехник. Но такой вариант уж точно дешевле готовых решений.
                                            Плюс, если много различных устройств на разных платформах, то такой вариант облегчает разработку ПО. Так как с UART работать проще.
                                            0

                                            Я подключил микросхему UART <-> RS485 к произвольным ножкам GPIO RPI, на которых UART не оказалось.


                                            Стоило предусмотреть отключение питания на USB-хабе/разъеме. Если у микросхемы хаба нет программно управляемых GPIO, то есть расширители портов, которые эти GPIO добавляют.

                                            В нашем хабе предусмотрели управление по modbus, в том числе, питанием, а в покупных такой возможности не было. Пишут, что некоторые хабы даже по usb умеют управляться, но на практике мало кто из производителей это нормально реализует. В тех, что мы купили, команды были и работали, но питание не отключалось.

                                              0
                                              Я подключил микросхему UART <-> RS485 к произвольным ножкам GPIO RPI, на которых UART не оказалось.

                                              И такое бывает, но с опытом выясняется, что мир устроен чуточку сложнее. Главное потом таких оплошностей не допускать)
                                              Пишут, что некоторые хабы даже по usb умеют управляться, но на практике мало кто из производителей это нормально реализует.

                                              На один из портов хаба цепляется микросхема cp2112, например — это преобразователь USB-SMBus с 8 GPIO. В линуксе с ними можно работать как и с обычными GPIO RPI. Просто и надежно.
                                                0
                                                И такое бывает, но с опытом выясняется, что мир устроен чуточку сложнее. Главное потом таких оплошностей не допускать)
                                                Надо было просто нормально протестировать прототип )

                                                У нас не было "лишних" портов в хабах, поэтому сделали отдельный интерфейс для управления. Там внутри stm32, в принципе ее можно было развести на один из портов usb прямо на плате, но не хотелось его занимать.

                                                  0

                                                  Да, понятно, что модбас используется для связи с микроконтроллером.
                                                  Отдельный МК это и плюс, и минус. Плюс — любые извращения можно реализовать. Минус — требуется прошивка МК и дополнительный программист, сама система усложняется, как следствие — дополнительная точка отказа, а потом выяснится, что мк зависает и нужен вотчдог…
                                                  Вообще, по таким статьям складывается впечатление, что яндекс не компания-флагман российского IT, а небольшой стартап в гараже (по части железа).
                                                  Надеюсь, что и железное направление будет развиваться, и ещё не одну статью доведётся прочитать)

                                                    0

                                                    Ну, эта статья описывает события двухлетней давности, когда мы паяли железячки в курилке и травили платы на кофепоинте: в офисе просто не было оборудованных мест для работы с железками. И да, Гиперкуб — это действительно внутренний стартап, сделанный в условиях ограниченных ресурсов и бюджета, параллельно с другими задачами.


                                                    Сейчас, работая в беспилотниках, я вижу поставленный процесс embedded разработки, а Паша, я думаю, расскажет про разработку Станции: они тоже крутые штуки делают. (Паша, я тебя тут уже во всех комментах прорекламировал, придется тебе писать =))

                                            0
                                            На али есть готовые варианты на 8 портов с монитором тока.
                                            что-то вроде. Fanshu Мульти USB 8
                                              0
                                              А почему бы не использовать openstf.io для удаленного доступа?

                                              Может у кого был реальный опыт с ним?
                                                0

                                                У нас есть ферма openstf, но я ею не занимался. Была идея в Гиперкубе до неиспользуемых в данный момент телефонов давать удаленный доступ.

                                                  0
                                                  А с точки зрения пользователя (разработчика) насколько openstf хороша/удобна?
                                                    0

                                                    Не могу сказать — сам я не пробовал с ней работать.

                                              • НЛО прилетело и опубликовало эту надпись здесь
                                                  0
                                                  Возможно дилетантский вопрос, но всё же, насколько безвредно для батареи телефона быть (возможно) большую часть времени на зарядке?
                                                    0

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

                                                    0

                                                    Сначала читалось с интересом, но по мере прочтения обуяла грусть. Очень напомнило кружок умелые руки и вспомнилась фраза — я его слепила из того, что было, с той только лишь разницей, "что было" — это состояние сознания делавших.

                                                      0

                                                      Датчик дыма внутрь поставьте, а то один загорится — все сгорят :)

                                                        0

                                                        Там система пожаротушения стоит. Правда, не факт, что это поможет потушить горящий lipo аккумулятор. Мы искали человека, который бы нам рассказал, чем его тушить, но так толком и не нашли.

                                                          +1

                                                          Водой тушат. Газовые системы не подойдут, там важно обильно проливать батарею, чтобы тепло быстро отводить и предотвратить тепловой разгон.

                                                        +1
                                                        Спасибо за статью. В одной фирме где работал для отслеживания нахождения телефонов на все тестовые телефоны поставили самописную программу. Кто брал устройство — в программе указывал что он его взял.
                                                        Это, конечно, не так надежно, но программа на телефоне позволяла послать туда уведомление что этот телефон кому-то нужен.

                                                        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                        Самое читаемое