Pebble оказались действительно хороши для быстрого написания приложений для себя. Начиная от получения какой либо информации, заканчивая управлением с часов
На хабре и раньше были статьи о программировании для Pebble, но они несколько устарели. В этой статье я расскажу о современном состоянии дел с Pebble IDE и мы напишем простенькое приложение на JavaScript.
Легкость и скорость программирования начинается с IDE. У Pebble с этим очень и очень хорошо. Я не удивлюсь, если одна из причин покупки компании, это заполучить в собственность такие замечательные средства разработки.
IDE есть в нескольких вариантах: «offline» и новомодное «облачное», благодаря которому, начать работать с «нуля» и получить первое работающее приложение, можно буквально за 5 минут, используя только браузер.
Пару слов об «offline»: официально IDE доступно для linux и Mac OS. Пользователям windows предлагается воспользоваться виртуальной машиной. Мне лично не очень нравится ими пользоваться (шутка про секс в презервативе), и я нашел способ запуска IDE «нативно».
Трюк заключается в использовании встроенного bash в windows 10. Единственная проблема возникла с эмулятором, которому нужно GUI. Проблема решилась установкой xming, после чего эмулятор нужно запускать вот так:
DISPLAY=:0 pebble install --emulator basalt
CloudPebble IDE
Это действительно удобный инструмент (доступен тут).
Из плюсов:
- Интеграция с github (импорт проектов, экспорт и коммиты не выходя из браузера)
- Полный цикл разработки, начиная от создания проекта, заканчивая получением готового пакета для распространения.
- Отладка и запуск приложения в эмуляторе (да да, эмулятор запускается прямо в окне браузера), либо сразу на часах.
Для тех, кто не использует облака принципиально, а так же, для тех, кто прочитает эту статью после 2017 года, когда возможно online IDE уже работать не будет, есть возможность установить и запустить ее на своей локальной машине или сервере. Способ официальный, от разработчиков.
Программируем легко и быстро.
Программирование для Pebble на С, было посвящено много статей, в том числе и на хабре. Сейчас появился еще один интересный инструмент, это фреймворк Pebble.js.
Написанная на JavaScript программа выполняется не на самих часах непосредственно, а в приложении Pebble, которое установлено на смартфоне. Часы служат своего рода терминалом, который передает нажатие кнопок и пр., и на который приходят «команды», типа нарисовать текст, отобразить меню и пр. Все это совершенно прозрачно для программиста.
Но из этого вытекает существенный минус: без соединения со смартфоном, приложение даже не запустится. Поэтому не рекомендуется писать на этом фреймворке, например, вотчфейсы (циферблаты). А вот приложения, которые без смартфона работать в любом случае не смогут (например, прогноз погоды), можно спокойно писать на JavaScript).
Еще есть небольшие проблемы с эмулятором: иногда приложение ведет себя совсем не так как нужно, но при установке на часы, все работает нормально.
Давайте напишем что нибудь простое приложение, которое будет показывать нам какую нибудь
Откроем online ide и создадим проект.
В первую очередь нам нужно создать иконку для меню и настроить приложение. В меню слева RESOURCES > Add New. Загружаем png иконку (25х25), сохраняем и в настройках (settings) menu image выбираем сохраненное изображение. Обратите внимание, что в настройках мы может указать для каких платформ мы будем компилировать приложение (aplite — pebble и pebble steel, basalt — pebble time и time steel, chalk — pebble round). Поддержка нескольких платформ вещь желательная, если вы будете распространять приложение, а для себя можете оставить одну платформу. Если разница с цветными и не цветными pebble минимальна, то с pebble round нужно немного по другому делать UI, хотя pebble.js многое делает за вас.
Итак, щелкаем на app source — app.js и напишем несколько строк:
var UI = require('ui');
var main = new UI.Card({
banner: 'images/app_icon.png',
title:'Hello!',
body: 'Привет, мир!',
style:'large'
});
main.show();
Все, мы уже получили работающее приложение, которое мы сейчас же и запустим. Нажимаем кнопку build справа. Приложение компилируется и запускается в выбранном месте. Во вкладке compilation мы можем выбрать место запуска приложение. Это либо встроенный эмулятор, либо непосредственно на часах (должен быть включен режим разработчика в приложении pebble и devolopment connection).
Обратите внимание на русский язык. Сейчас pebble поддерживает русский язык из коробки, если выбрана соответствующая настройка, но в эмуляторе этого сделать нельзя. На самих часах все работает без проблем:
Теперь осталось добавить возможность получать информацию из интернета, для этого есть самая обычная библиотека ajax. Так же добавим возможность выбирать тему подсказок и сохранять эту настройку. Для этого нам доступен самый обычный localStorage.
var UI = require('ui');
var ajax = require('ajax');
// список тем для советов
var themes=['дизайнеру','кодеру','верстальщику','фотографу','копирайтеру','маркетологу','сеошнику','водителю','музыканту','фокуснику','врачу','студенту','за жизнь','для него','для неё'];
// получаем текущую тему советов из localStorage
var cur_theme=localStorage.getItem('theme');
if (!cur_theme){cur_theme=0;}
var main = new UI.Card({
banner: 'images/app_icon.png',
subtitle:'',
body: '',
style:'large'
});
function update(){
// Получаем json из API
ajax({ url: 'http://fucking-great-advice.ru/api/random_by_tag/'+themes[cur_theme]+'/', type: 'json' },
function(data) {
// И отображаем на дисплее
main.subtitle(themes[cur_theme]);
main.body(data.text.replace(/ /g, ' '));
}
);
}
function changeTheme(){
// меняем текущую тему, сохраняем настройку и обновляем экран
cur_theme++;
if (cur_theme==themes.length){cur_theme=0;}
localStorage.setItem('theme',cur_theme);
update();
}
main.show();
// реакция на нажатие кнопки select - новый совет
main.on('click','select',update);
// реакция на долгое нажатие select - меняем тему
main.on('longClick','select',changeTheme);
update();
В итоге мы получили работающее приложение, которое можно установить непосредственно на часы (compilation — get PBW, и затем этот файл открыть на смартфоне), либо выложить на pebble market.
За несколько свободных вечером, я написал и выложил уже 4 приложения (одно из них — клиент для instagram, был написан на С, так как в pebble.js не нашел способа показывать загруженную графику из интернета).
Полную документацию по pebble.js можно найти тут. А этот проект доступен на github.
Комментарии (31)
Kondra007
02.01.2017 22:52А расскажите, пожалуйста, про Ваше приложение для чтения Башорга.
Когда делал своё, то столкнулся с проблемой: длинные цитаты просто обрезаются, где-то после 1000 символов. Проверяли ли Вы приложение на такие вещи?kAIST
02.01.2017 23:01Если честно, не проверял. Вообще, "большие" приложения писать с помощью pebble.js не очень то хорошо, вылезает много разных глюков. Например, в моем ридере баша, если выбрать не первый пункт меню и по нему перейти, при нажатии back приложение падает почему то. И таких мелочей много.
Pebble.js годится только для мелких поделок. Хотя что то более крупное у меня написать получилось (клиент Яндекс метрики и игра "кто хочет стать миллионером"), хоть и с некоторыми костылями.
P.S. написал свой башорг, потому что не работал почему то ваш )Kondra007
02.01.2017 23:23+1С моей версией какая-то фигня получилась. Поменял ссылку внутри приложения на другую, т.к. хостинг заканчивался, да и уже есть более полная база цитат (для бота Telegram).
Отправил в PebbleStore, а на следующий день Pebble продался Fitbit, и на мой релиз все забили (завис в Pending). Я уж было подумал, что всё, облом.
Но, благодаря Вашему посту, оказалось, что достаточно перезалить сейчас новую версию, и она моментально пройдёт. Так что теперь всё заработало :) Вам спасибо!
icepro
Не пора ли альтернативу этим часам искать? Производство все-таки остановили. Я чесно сам огорчен, клепал-клепал фреймфорк, а тут все загнулось.
kAIST
А какие есть альтернативы? Чтоб не фитнес браслет с поддержкой некоторых функций умных часов, а наоборот. Да и с более менее большим временем работы. Мне в них нужно спать, а не ставить каждый вечер на зарядку.
А какой фреймворк клепали, если не секрет?
dmkuznetsov
Под garmin можно писать приложения https://developer.garmin.com/connect-iq. Сам не пробовал, пока присматриваюсь, выглядит неплохо.
kAIST
Ну опять же, у гармина больше фитнес трекер, чем умные часы. Да и функций там полно, не нужных мне, типа gps, барометра и пр, что очень сказывается на цене.
Да и экран там вроде обычный, а не e-ink. Так можно и обычные android wear купить.
icepro
Но ведь получилось что фитнес трекеры это именно то что нужно людям. Ведь на сколько я понимаю пебл именно из-за этого и накрылся. Так сказать не смогли найти аудиторию.
vconst
Те, кому нужен фитнестрекер — покупают фитнестрекеры, а пебл покупают те, кому нужен эффективный компаньон для смартфона, неожиданно — но вторых отказалась недостаточно много для того, что бы компания выжила.
kAIST
Есть такое. Пользователи pebble на это жаловались — в последних прошивках начали плавно уводить в область фитнесс трекеров.
Когда показываю pebble обычным людям, всем больше интересны как раз таки умные часы, особенно в восторге от уведомлений. А вот про фитнесс функции как то ровно, единственное что, умный будильник нравится.
Nakosika
Что-то мне подсказывает что причина провала пеббл это дизайн, а фитнес трекеры хоть и являются конкурентами, но выбраны руководством в качестве отмазки.
kAIST
Steel версия вполне себе хороший дизайн имеет, да и round нашли своих поклонников Обычные версии, да, на любителя.
Nakosika
Сколько я знакомых не агитировал все говорили одно и то же — я гламурная девушка такое не надену. Или я брутальный мужик, мне нужна настоящая вещ, и тп. При продажах часов дизайн находится на первом, втором, третьем, и во многих случаях на четвертом месте. Это же часть внешнего облика.
ChapayHabr
у меня те же ощущения
внешне они под конец уже подтянули свои модели, может слабый маркетинг (
я не купил по причине того, как увидел те что понравились надо было еще их ждать и поэтому захотел купить уже в реале, думал начнут возить и возьму, а вот не дожили часики… (((
Фитнес наполнение важная составляющая и сейчас те кто пользуется часами, как правило внимательны к своему здоровью (по моим наблюдениям), но это не самый важный момент
vadim_ig
Это гораздо больше умные часы, чем кажется, разве что без сенсорного экрана. Просто фитнес-функции выгодно в рекламе показывать. Экран постоянно активный, цветной (цветов, правда, негусто), при этом со включенным трекингом активности, паре часах GPS-трекинга в неделю и ежедневной синхронизацией с облаком тянут 20 дней на одном заряде. Без излишеств умных вообще заявлено 40 дней работы.
icepro
Фреймворк для построения UI. Layouts, события и прочее.
kAIST
Где нибудь можно на него посмотреть? На си?
icepro
К сожалению до релиза дело так и не дошло.
Да, написан на С.
DenimTornado
А что вы от умных часов хотите?
kAIST
Расскажу чем мне приглянулись именно pebble.
Самое главное это наверное работа с уведомлениями. Купил недавно новый телефон, и даже не знаю какой у него там по умолчанию стоит звук на звонок и сообщения. Привык к тишине — все что приходит, попадает на часы, и одним взглядом могу оценить, что то срочное или нет. Плюс могу даже ответить, особенно удобно, когда заняты руки.
Всякие мелкие приложения, которые чуть чуть облегчают жизнь. Сейчас как раз делаю проект, ради которого часы и покупались: следить за таймингом мероприятий. Чтоб одного взгляда на часы было достаточно, чтоб оценить через сколько начнется событие 2, и сколько у тебя есть чтоб завершить событие 1 и т.д.
Да и полно всяких мелочей, которые облегчают жизнь, например, пользуюсь приложение, которое помогает найти машину на большой парковке. Ну или найти смартфон в комнате, выключить свет и пр.
К тому же оно должно оставаться часами и показывать время (как бонус — доп информация), в любое время, даже при ярком солнце (привет обычным экранам, которые слепнут на ярком солнце). Тут электронные чернила пока не в конкуренции.
Да и автономность все же очень важная штука. Я не хочу ставить на зарядку их каждый вечер и беспокоиться чтоб хватило до позднего вечера. Я хочу в них спать, как минимум чтоб с утра они разбудили именно меня, а не всю мою семью.
Sonatix
Купил точно для тех же целей что и вы :)
Очень раздражают звонки телефонов, поэтому всю жизнь хожу с вибро режимом, но в движении пропускаю звонки. Хотелось получать уведомления на часы и сигнал звонка получать на них же + использую программу Sleep As Android, но надоело спать с телефоном в постели, хотелось этот функционал переложить на часы.
ChapayHabr
я взял себе ксаоми браслет и блин вибро на звонок это урааааа!!!
просто вибро на руке когда звонят!!! и я счастлив
а если еще маленькие плюшки что вы описали добавит, то это просто атас был бы ))))
есть конечно надежда что фитбит не угробит идею умных часов а разовьет ее
Sonatix
А меня часики откровенно расстроили. К офф. приложению так и не удалось подключить (неделю плясал вокруг них). Теперь на них просто смотрю время.
kAIST
Возможно брак попался. Смартфон видит их? На запрос часы отвечают? (сначала подтвердить на часах нужно, потом уже конфирм на мартфоне).
Sonatix
В том то и дело что по BT часы спариваются со смартфоном и переходят в состояние — подключено. И «Pebble App» их видит, но увы замирает на состоянии «connecting».
Тут много таких «счастливчиков» https://forums.pebble.com/t/pebble-2-will-not-connect-to-app-android/24911
При чем эта проблема не зависит от версии андроида. От нее страдают и владельцы именитых брендов, и владельцы разных «китайцев».
При этом можно подключить к gadgebridge, но с очень ограниченным функционалом + он очень не стабильный (то отваливается каждую минуту в течении недели, то стабильно держит «конект» день).
Sonatix
Вот человек начал разбираться с проблемой https://forums.pebble.com/t/pebble-2-will-not-connect-to-app-android/24911/86
Но увы, суппорт от Fitbit вроде как и был обещан, но его как бы и нет совсем.
yota9
Хотел обновиться с Time на Time2, но в день закрытия компании объявили, что их не будет :( Обновился просто на пеблы 2 с пульсометром. Вообщем то тоже пока не вижу альтернативы, отличные часы :((
Yogo
Есть, например, самсунг, со своим Tizen, но гораздо дороже. Есть LG, с Android Wear с неизвестной судьбой.
kAIST
Да полно их есть (и с чего это у Android Wear не известная судьба — не только LG выпускают на ней часы).
Но pebble как бы несколько из этого всего выделяется.
ChapayHabr
были статьи, что часы на андройде пользуются небольшой популярностью
наверное это имеется ввиду
kAIST
Да собственно и у apple так же. Где то была статья о том что рынок умных часов вообще не оправдал надежд.
Люди вроде засматриваются, но не понимают зачем они нужны. У apple хоть есть "имиджевая" составляющая.