Обновление базы инфракрасных кодов
На протяжении всего месяца мы скрупулезно перебирали имеющиеся в нашем распоряжении инфракрасные коды, корректировали их, если замечали ошибки, и добавляли новые.
Мы взялись за эту задачу, поскольку при старте проекта допустили ошибку в проектировании базы данных кодов, заложив туда только 2 уровня вложенности для определения конкретного устройства - производитель и тип устройства. В итоге в базе стали появляться такие записи как Samsung - TV Most Models и Samsung - TV HLS old models. Все вроде хорошо, но в итоге при такой организации базы данных практически невозможно выделять типы устройств, например, телевизор или кондиционер. А раз так, то невозможно и сделать автоматическое определение устройства, если пользователь знает только тип и производителя, а также невозможно сделать автоподбор кодов, если пульт утерян, а точное, наименование модели неизвестно.
Раз обнаружено проблемное место - его нужно исправлять. Автоматически качественно проделать эту работу оказалось невозможным, поэтому мы прибегли к ручной модерации. За месяц нам удалось разобрать примерно 20% базы данных, прописывая тип устройства и модели, а также сокращая список доступных типов. Также было добавлено около 6000 новых кодов.
В обновленном приложении (1.30) база обновлена, добавлена возможность выбора типа и модели устройства, если устройство уже обработано и занесено в новом формате.
Улучшенное распознавание сигналов с пульта
Нам несколько раз сообщали о том, что устройство не находится при распознавании пульта по 2м кнопкам, но каждый раз причины были индивидуальны и зачастую устройства просто не было в базе.
Все изменилось, когда один из разработчиков взял неделю заслуженного отдыха и... уехал. Через несколько дней мы получаем сообщение о том, что пульт телевизора в его номере не распознается. Совсем. И это при том, что такой пульт 100% был в базе данных. На данный момент в саппорте висела уже одна заявка о том, что устройство в базе данных инфракрасных кодов есть, а при обучении пульта по 2м кнопкам не находится.
Итогом изучения кейсов стала доработка механизма нечеткого поиска инфракрасных сигналов и повышение качества распознавания. Поэтому, если ранее ваш пульт не распознавался, скорее всего теперь он будет найден.
Выбор пульта из списка
Переработка базы ИК кодов позволила реализовать добавление пульта по производителю, типу устройства и модели. Конечно, пока данная функция доступна не для всех пультов, но мы работаем над тем, чтобы расширить список и покрыть большинство видов техники и производителей. На экране добавления пульта добавилась кнопка "выбрать из списка", где вы можете найти свой пульт, если, например, он утерян.
Кнопка переключатель в пультах
Вот есть, скажем, ресивер, c 2мя каналами - один под тв-приставку, другой под медиа-приставку. При использовании приходится периодически переключать входы ресивера. Для упрощения данных действий добавлена кнопка "Переключатель", в которую можно занести 2 ИК сигнала и при нажатии данные сигналы будут передаваться попеременно. Удобство подсказано и доказано разработчиками в ежедневном использовании.
Отдельный endpoint для получения всей ключевой информации об устройстве
Если какое-либо устройство подключено к Wi-Fi сети пользователя, то для синхронизации устройства и приложения в самом простом случае требуется около 10 HTTP запросов к устройству. Если на устройстве сохранены сценарии, большое количество сенсоров или записей в транзакционной памяти, тогда это количество вырастает пропорционально. При этом на каждый запрос уходит неизвестное заранее время и в целом такое количество запросов снижает отзывчивость работы с устройствами. Кроме того, если какой-то запрос не увенчался успехом, то он будет повторяться до тех пор пока не истечет счетчик попыток или он не будет успешен (что наступит ранее) и, если истечет счетчик попыток ранее, то устройство будет отмечено в приложении как недоступное.
После анализа трафика между приложением и устройством мы обновили API, добавив ендпоинт, с помощью которого можно при старте одним запросом получить всю требуемую информацию об устройстве, также провели оптимизацию выполняемых запросов с тем, чтобы уменьшить их количество.
Выбор режима работы от батареек для Remote
Мы обнаружили, что после покупки некоторые пользователи сразу вставляют батарейки в Remote и начинают работать с устройством. Remote, в свою очередь, работая от батареек, переходит в режим датчика через несколько минут и перестает быть видимым. Это абсолютно непонятно нашим пользователям, а если что-то непонятно пользователям - это проблема производителя. Кроме того, некоторые пользователи интересовались тем, как именно изменить режим работы от батареек.
В новой версии прошивки и приложения появился переключатель режима работы устройства от батареек, который можно найти на экране самого устройства. При первом запуске новое устройство с батарейками всегда включается как будто работает от постоянного питания.
Wi-Fi, обновления по воздуху, веб-сервер
Только мы на основе обратной связи убедились, что с веб-частью устройств все хорошо, как всплыла неожиданная проблема: устройство, проданное в другую страну, отказалось подключаться ни к одному роутеру. Точнее подключаться - подключалось, но вот IP адрес получить не могло.
Fail? Нет, повод для того, чтобы что-то улучшить.
Команда разработки прошивки засучила рукава и после анализа причин ринулась в бой. Был изменен подход к работе Wi-Fi при подключении к точке доступа, синтетические тесты показали, что теперь с получением IP проблем быть не должно. Однако выяснилось также, что на некоторых роутерах веб-сервер может иногда пропускать запросы и не отвечать на них - это потянуло за собой переработку и веб-сервера.
Обновления по воздуху также подверглись глубокой переработке. Теперь устройства обновляются, приостанавливая все остальные процессы и назначая высокий приоритет задаче обновления. Это гарантирует бОльшую вероятность успешного обновления прошивки.
Надеемся, эти изменения приведут к тому, что больше никто из наших пользователей не столкнется с проблемами при работе с устройством.
Fail: P2P обновление прошивки
Под p2p обновлением мы имеем в виду возможность обновления прошивки напрямую из приложения, без необходимости подключения к интернету. В первых версиях устройств данный функционал работал как часы, однако с увеличением размера прошивки и ростом сложности архитектуры стал давать сбой.
Команда потратила немало сил в мае на то, чтобы заставить данный механизм работать, но на текущий момент этого сделать не удалось. Либо обновление прошивки всегда успешно, но занимает слишком много времени (порядка 15-20 минут), либо занимает меньшее время, но периодически прерывается. Выводить снова и снова пользователям надпись "Извините, обновление не удалось. Попробуйте снова" - плохой кейс. Заставлять сидеть с включенным приложением 15-20 минут еще хуже.
Решение обязательно найдется. Данный функционал является важным для нас, так что попытки продолжаться.
Доступность обновления
Firmware 1.20: выпущено и доступно для обновления из приложения.
LOOK.in Hub 1.30:
Android. Выпущено и доступно в Google Play Store.
iOS. Выпущено и доступно в App Store.
Мне, как не держателю устройства, нтересно читать про внутреннюю "кухню" команды, какие проблемы были, какие решены. Думаю, вам следует чаще писать)
Постараемся решить в течении месяца