Совсем недавно Amazfit (партнёр Xiaomi) представила новое поколение умных часов, в линейку которого вошли модели GTR 3 Pro, GTR 3 и GTS 3. Эти часы официально продаются и теперь можно без проблем купить. Я бы обошёл новинку стороной, ведь есть модели и подешевле с практически теми же возможностями, например Bip S. И всё же главной изюминкой новых часов можно назвать новую операционную систему Zepp OS.
Для меня самой интересной особенностью новой ОС стала возможность запускать на часах приложения на JavaScript, чем мы сегодня и займёмся и напишем нашу самую первую программу.
Zepp Open Platform
Компания открыла разработчикам документацию и инструменты к платформе Zepp Open Platform. Сама платформа предлагает довольно обширные возможности для исследований, передачи данных, обмена данными между устройствами, приложениями для фитнесса и здоровья, интернета вещей (IoT) и много чего ещё, в основном для enterprise. Возможности заявлены огромные, но большая часть из них требует специальной регистрации как разработчика для получения доступа к разработке решений в этих областях и не доступно обычным смертным.
Тем же, кто хочет просто рисовать свои циферблаты и писать приложения под часы доступны инструменты разработчика Zepp OS (среда разработки Zepp Studio и редактор циферблатов Zepp WatchFace Maker, эмулятор и инструменты для консоли).
Подготовка
Для синхронизации с часами используется фирменное приложение Zepp. Через приложение можно настраивать часы, менять циферблаты и устанавливать приложения из официального каталога.
Для того чтобы приложение или циферблат попало в каталог требуется статус сертифицированного разработчика, который подтверждается сканом документов через модераторов. На данный момент верифицированный статус могут получить лишь работники крупных компаний или институтов. Индивидуальные разработчики могут подать заявление, но в каталог их приложения судя по всему пока не будут публиковаться.
Чтобы писать приложения для себя и заливать их себе на часы всё это не обязательно и не требуется. А те же циферблаты можно почти без сложностей заливать через приложение AmazFaces от одного из крупных каталогов циферблатов для часов Amazfit.
Итак, мы знаем что для часов на Zepp OS можно писать приложения двух типов — циферблаты (watchface) и приложения (app). Они имеют схожую внутреннюю структуру и пишутся на JavaScript. Циферблаты нас пока не интересуют и в этой статье мы более подробно разберём приложения.
Включаем режим разработчика
Чтобы мы могли заливать на свои часы сторонние приложения нам надо включить режим разработчика в приложении Zepp. Естественно, ставим на телефон Zepp (если ещё этого не сделали), создаём учётную запись или заходим в уже имеющуюся и подключаем часы как обычно, если ещё не подключили.
Выключить режим можно галкой в «Профиль» -> «Настройки».
После этих манипуляций мы можем заходить в «Устройства» -> «Amazfit GTS 3» (или другие подходящие часы) -> листаем вниз до пункта «Режим разработчика».
Там есть две вкладки «Дисплей» и «Приложение» и кнопка сканирования QR-кодов в правом верхнем углу:
Создаём учётную запись
Чтобы иметь возможность запускать приложения на устройстве, надо иметь учётную запись с такой же электронной почтой, что и в приложении Zepp.
Регистрируемся тут (страну я указал родную): dev.huami.com
Приложение
И вот теперь мы наконец можем приступить к разработке.
Код можно писать в своём любимом редакторе, используя инструменты CLI. А можно воспользоваться готовым инструментом «всё-в-одном». В нашем примере мы пойдём вторым путём и откроем онлайн редактор: studio.huami.com
Нам предложат создать новый проект:
Можно воспользоваться шаблоном «Hello world» или импортировать zip архив с готовым проектом. Как вам больше нравится. Я немного упростил проект, и при желании можете взять его с моего githib.
Коротко о структуре проекта
После того как проект импортируется, откроем его в редакторе и увидим примерно такую структуру:
В настройках программы (app.json), которые редактируются в редакторе визуально, указывается экран (сцена / страница), отображаемый при старте, вот её код:
const { width: DEVICE_WIDTH, height: DEVICE_HEIGHT } = hmSetting.getDeviceInfo()
const HELLO_TEXT = {
text: 'Hello, Habr!',
x: px(42),
y: px(200),
w: DEVICE_WIDTH - px(42) * 2,
h: px(100),
color: 0xffff00,
text_size: px(36),
align_h: hmUI.align.CENTER_H,
text_style: hmUI.text_style.WRAP,
}
const logger = DeviceRuntimeCore.HmLogger.getLogger('firstapp')
Page({
build() {
logger.debug('page build invoked')
hmUI.createWidget(hmUI.widget.TEXT, {
...HELLO_TEXT,
})
},
onInit() {
logger.debug('page onInit invoked')
},
onDestroy() {
logger.debug('page onDestroy invoked')
},
})
Как можно догадаться, элементы интерфейса, стили и обработчики событий инициализируются непосредственно в коде. А конкретно этот код создаёт виджет текста «Hello, Habr!» с заданными характеристиками.
Запускаем
Теперь нам осталось собрать и опубликовать ссылку на приложение, для чего можно воспользоваться этой кнопкой:
В результате получим QR-код, отсканировав который из приложения Zepp мы сразу же установим приложение на часы:
Итоги
Оказалось, начать разработку под новую ОС совсем не сложно. Теперь можно подглядывать в документацию и писать свои приложения или даже игры для часов на Zepp OS. Информации по этой теме в сети практически нет, и даже ссылки на официальную документацию пришлось искать по форумам.
Я надеюсь, этот туториал кому-то станет отправной точкой для новых хороших, интересных и нужных приложений.
Документация для разработчика на китайском и английском доступна без регистрации:
docs.huami.com/docs/intro
Upd: Разработчики открыли канал в Slack (спасибо idimas13 ) и тут же его закрыли.
У них также есть внутренний Lark канал. Пока не знаю, можно ли туда приглашать.
Комментарии (31)
otchgol
13.02.2022 10:09-4Сложно представить себе приложение для браслета, которым захотелось пользоваться с него. Игрушка автономна. Она не умеет общаться с телефоном и внешним миром. Это не часы а браслет с увеличным экраном. Сложив вместе маленький экран, убогость софта на телефоне и браслете не вижу смысла тратить время на разработку под него.
AllexIn
13.02.2022 10:24Не знаю как у этих часов, но у первого Amazfit Bip есть возможность слать данные на телефон. Соответственно прилоежение на часах + Tasker и делай что хочешь.
pewpew Автор
13.02.2022 11:22+2Из разрешений там есть сразу две галки «gps» и «интернет». Уже простор для фантазии. С телефоном тоже может обращаться через систему сообщений.
Интернет — через Fetch API.
И вообще странный подход по разделению часы — браслет. У меня есть часы на Android Wear. И вы знаете, с ними всё ровно так же. В них есть ровно те приложения, что для них написали. А по возможностям даже глядя на документацию кажется Zepp OS вполне сравнима с Wear. Было бы желание.
Здесь куча приложений сразу крутится в голове от курса валют до интерфейса управления умным домом. А если связать с приложением на телефоне, можно горы свернуть, написав например вполне годный навигатор.idimas13
13.02.2022 11:54Поддерживаю. Если нет идей по приложениям, это не значит что оно никому не нужно.
Понятное дело, игры и прочие ютубы на часах - это баловство. Но есть очень много того, что хотелось бы видеть в часах, для упрощения жизни.
Рад, что теперь это реализуемо в часах Amazfit.
Hvorovk
13.02.2022 15:27У меня gtr 2e я бы очень хотел иметь возможность напилить прогу, которая будет QR код отображать - прям мастхев)
NG-200
14.02.2022 15:23У меня, кстати, тоже gtr 2e. Мне всегда казалось, что доп.приложения мне не требуются. Но ваша идея - отличная, приложение с отображением куаров я бы тоже себе хотел.
pewpew Автор
14.02.2022 15:31+1
Готово. Пока что эта версия не сложнее чем Hello, world, но с картинкой.
Кто хочет проверить, не забудьте поменять QR-код на свой.
github.com/gsomgsom/zepp_os_my_qrcode
Ну и gtr 2e скорее всего не поддерживает.
Попробую дописать версию с настройками, чтобы можно было любые произвольные QR-коды вставлять через настройки. Пока что есть сложности с передачей настроек. Обсуждаю с разработчиками.
idimas13
13.02.2022 11:17+3Автору плюс за интерес к теме и её освещение. Но, небольшой минус за приплетание Xiaomi.
Поясню. Бренд Amazfit принадлежит компании Zepp Health (бывшая Huami), которая явяляется давним партнером Xiaomi, но никак не подразделением. Они разнабатывают и производят для Xiaomi браслеты Miband, весы, возможно, еще что-то.
По приложениям. Всё это, конечно, хорошо. Респект компании за движение в сторону сообщества. Официальные инструменты для разработки приложений на часы (да даже хотя бы циферблатов) - это похвально.
Но как-то скомканно всё. Полной документации по разработке до сих пор не представлено. На сайте только гайды для начала работы - то, что описано в статье, и немного больше.
pewpew Автор
13.02.2022 11:36+1Документации достаточно, как мне кажется. Хотя конечно да, всё скомкано и нет даже базового поиска. Примеров очень мало (я нашёл там только полноценные примеры двух приложений, жаль, что остальные не в open source). Но их хватает для старта а для вопросов и ответов есть комьюнити (ссылка действительно ведёт на стекоферфлоу, но пока туда никто не писал). Для проекта, который стартовал три месяца назад и ещё не успел набрать обороты это наверное нормально. Во всяком случае я узнал про Zepp OS совершенно случайно. И обновил часы с Bip S на GTS 3 только после гугления Zepp OS.
Для себя точно напишу простенькие приложения, облегчающие жизнь.
Про Xiaomi тут и правда путаница (в статье поправил). Я не в курсе кто там с кем партнёрствует, знаю только что Amazfit Band 6 абсолютная копия Mi Band 5.idimas13
13.02.2022 11:42+1Действительно, уже гораздо лучше. Давно туда не заходил.
Думаю, Вам в конце статьи стоило указать именно эту ссылку на документацию по приложениям)
idimas13
13.02.2022 12:21А с симулятором разбирались? Насколько я понял, его нужно поднимать под убунтой (хотя бы виртуальной), а дальше он запусакается из studio, по 127.0.0.1 с той же машины, либо по адресу, который прописывается в настройках.
Вообще, было бы интересно почитать в будущем о Ваших приложениях, хоть и простеньких, но сложнее, чем Hello world)
pewpew Автор
13.02.2022 12:30+1Ubuntu есть, попробую. Прочитал в документации, вроде бы всё понятно. Пока просто смысла не было, в часах оно прекрасно заработало. Но да, для отладки лучше конечно с симулятором. Приложения писать буду, и если они не будут выглядеть сильно плохо, выложу на github. Хотя, JavaScript — не моя самая сильная сторона и на красоту кода не претендую.
idimas13
13.02.2022 12:37"Amazfit Band 6 абсолютная копия Mi Band 5."
Была бы копия, они бы его не выпустили. Скажем так, это то, каким должен был быть мибенд 5, по версии разработчиков хуами, но сяоми не одобрили. или какие-то другие их тёрки) Из того, что помню и сразу приходит в голову, АБ6 умееет в пресловутую сатурацию, а МБ5 - нет.
А вообще, та же Zepp OS, по сути - эволюция оси мибенда. Хотя, первые цветные устройства на ней были выпущены под брендом амазфит. Тот же легендарный Bip, или браслет Cor, который я в свое время предпочел третьему мибенду. В те времена они все даже работали с Mifit, а отдельное приложение Amazfit появилось чуть позже, и было практически полной копией мифита.
pewpew Автор
13.02.2022 12:55У меня были оба эти браслета. По начинке они отличаются датчиками (АБ6 с зелёным сенсором и умеет в сатурацию а МБ5 — не умеет) и вроде бы микрофоном (АБ6 умеет звать Алексу). Циферблаты подходят 1 к 1, даже по недокументированным возможностям. Характеристики экрана и возможности прошивки совпадают. Так что АБ6 — определённо основан на МБ5.
Конечно мы так и не узнаем, как так получилось, но определённо Xiaomi идёт своим загадочным путём и развитие Huami мне тут больше нравится. Та же открытая платформа (пусть пока ещё без возможности публикации приложений), SDK, разворот лицом к сообществу разработчиков. Будем надеяться, что Amazfit продолжит эти традиции.
AllexIn
13.02.2022 12:55+1Они уроды на самом деле. Когда появилась прошивка позволяющая запускать приложения на первом Бипе - они стали этому целенаправленно мешать.
pewpew Автор
13.02.2022 12:58Кто знает… Может быть именно поэтому им пришла в голову мысль выпустить Zepp OS и SDK к ней. Поддерживать чужую кастомную прошивку и писать свою закрытую с контролируемым API — это разные вещи.
AllexIn
13.02.2022 13:09Ну так не мешали бы хотя бы.
Но оно и понятно: никто не будет покупать часы за 14000 рублей, когда рядом лежат с той же функицональностью за 4000.
predator86
13.02.2022 15:28Где можно почитать про саму Zepp OS(техническую информацию)?
Она открытая или проприетарная?
pewpew Автор
13.02.2022 15:46Всё что есть можно найти тут:
dev.huami.com
docs.huami.com/docs/guides/architecture/arc
Подпрограммы под ОС пишутся на Zeus Mini-program Framework.
Сама ОС основана на FreeRTOS.
Официальных ссылок найти не могу. Только неофициальные:
www.gizmochina.com/2021/07/17/zepp-os-facts-about-huamis-new-ultralightweight-smartwatch-ospredator86
13.02.2022 16:19Я так понимаю что напрямую API этой ОС недоступны. Своя ОС(хоть и freertos внутрои), свой чип, мало документации. Тяжеловато с такими работать.
Sergey_215
13.02.2022 19:00Не нашел в документации можно ли получать данные с акслерометра и гироскопа устройства напрямую. Подскажите, пожалуйста, есть ли такая возможность? Или только можно работать с уже интерпретированными данными?
pewpew Автор
13.02.2022 19:02Я не нашёл, но есть стороннее приложение компаса. Значит какие-то датчики всё же можно опрашивать. Надо бы научиться забирать приложения из каталога. Тогда получится их проанализировать.
idimas13
14.02.2022 07:27Разработчики открыли канал в Slack. Там можно поспрашивать всё, что интересно.
Думаю, можно даже в статью добавить ссыль.
pewpew Автор
14.02.2022 16:00А ещё у них есть канал в Lark (аналог Slack). Там активное общение, но на китайском. Lark умеет автоматически переводить. Я прошёл квест благодаря Sean из слака. Ссылку выдать не могу, но кому интересно можно обратиться к нему через Slack.
cerebrum666
14.02.2022 10:26Что то в API не увидел ничего про GPS.
Было бы интересно написать свой навигатор
nblxA07
14.02.2022 13:50Добрый день. Спасибо за интересный посыл.
Подскажите, а на сколько сложно сделать модификацию в существующий zepp apk чтобы к примеру изменить приходящие уведомления от приложений?Есть несколько мыслей что хотелось бы добавить:
1) Иконки приложений отображать (добавить иконки самому)
2) Добавить читаемой смайликов
3) Позволять отсылать на часы превью изображения или целиком изображение (все же берется из шторки)Если примерно оцениться, это возможно и насколько сложно?
pewpew Автор
14.02.2022 13:55Думаю не всё так просто. И дело не в сложности модификации APK (декомпилировать и собрать можно, и это уже делают энтузиасты на 4pda, и наверное есть смысл задать вопрос там). Дело в том, что сами часы также должны поддерживать изменения, а для этого надо научиться делать кастомные прошивки, если это вообще реально. И если первые два пункта хоть как-то ещё можно реализовать, то третий пункт — это серьёзная доработка как для встроенной в прошивку часов программы, так и в Zepp. Возможно протокол общения этого делать не позволяет.
antonovdan4
14.02.2022 19:06Круто! Тоже попробую сегодня свой циферблат создать. Классная возможность =)
AllexIn
Писать приложения на самом деле можно даже под первый Amazfit Bip. Наши ребята сделали прошивку, которая во первых позволяет улучшить базовые возможности, а во вторых - загружать сторонние приложения.
Было желание про это статью написать, но не уверен что это кому-то интересно. тем более что первую версию и не купить уже.
pewpew Автор
Очень круто, когда энтузиасты расширяют возможности казалось бы там, где некуда двигаться и нечего расширять. Вспомнился такой древний телефон как Sony CMD-J70. Энтузиасты научились писать для него программы на ассемблере, хотя сам телефон не поддерживает сторонние приложения. Понятно, было это давно и всё что было в интернете уже постепенно потерялось. Но это в очередной раз доказывает, что достаточно одного желания и упорства для достижения целей.