Мне «повезло» — часы Pebble Time пришли ко мне одновременно с новостью о продаже компании. Радость от покупки была омрачена двумя вещами: неясностью будущего платформы и не очень то большого комьюнити разработчиков и отсутствием необходимых мне приложений. Но эти недостатки с лихвой окупились возможностью легко и быстро написать нужные мне приложения, несмотря на недостаток опыта в программировании на С и JavaScript (о нем сегодня расскажу подробней).

Pebble оказались действительно хороши для быстрого написания приложений для себя. Начиная от получения какой либо информации, заканчивая управлением с часов своими поделками умным домом. Так что поторопитесь купить pebble, пока они есть в наличии. Если у вас уже есть 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).

Еще есть небольшие проблемы с эмулятором: иногда приложение ведет себя совсем не так как нужно, но при установке на часы, все работает нормально.

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

Откроем 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)


  1. icepro
    02.01.2017 16:06

    Не пора ли альтернативу этим часам искать? Производство все-таки остановили. Я чесно сам огорчен, клепал-клепал фреймфорк, а тут все загнулось.


    1. kAIST
      02.01.2017 16:33
      +1

      А какие есть альтернативы? Чтоб не фитнес браслет с поддержкой некоторых функций умных часов, а наоборот. Да и с более менее большим временем работы. Мне в них нужно спать, а не ставить каждый вечер на зарядку.
      А какой фреймворк клепали, если не секрет?


      1. dmkuznetsov
        02.01.2017 17:41

        Под garmin можно писать приложения https://developer.garmin.com/connect-iq. Сам не пробовал, пока присматриваюсь, выглядит неплохо.


        1. kAIST
          02.01.2017 17:54

          Ну опять же, у гармина больше фитнес трекер, чем умные часы. Да и функций там полно, не нужных мне, типа gps, барометра и пр, что очень сказывается на цене.
          Да и экран там вроде обычный, а не e-ink. Так можно и обычные android wear купить.


          1. icepro
            02.01.2017 19:24

            Но ведь получилось что фитнес трекеры это именно то что нужно людям. Ведь на сколько я понимаю пебл именно из-за этого и накрылся. Так сказать не смогли найти аудиторию.


            1. vconst
              02.01.2017 19:47
              +1

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


              1. kAIST
                02.01.2017 21:07
                +1

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


            1. Nakosika
              03.01.2017 13:07

              Что-то мне подсказывает что причина провала пеббл это дизайн, а фитнес трекеры хоть и являются конкурентами, но выбраны руководством в качестве отмазки.


              1. kAIST
                03.01.2017 13:09

                Steel версия вполне себе хороший дизайн имеет, да и round нашли своих поклонников Обычные версии, да, на любителя.


                1. Nakosika
                  03.01.2017 16:39

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


              1. ChapayHabr
                07.01.2017 12:07

                у меня те же ощущения
                внешне они под конец уже подтянули свои модели, может слабый маркетинг (
                я не купил по причине того, как увидел те что понравились надо было еще их ждать и поэтому захотел купить уже в реале, думал начнут возить и возьму, а вот не дожили часики… (((

                Фитнес наполнение важная составляющая и сейчас те кто пользуется часами, как правило внимательны к своему здоровью (по моим наблюдениям), но это не самый важный момент


          1. vadim_ig
            02.01.2017 23:39
            +1

            Это гораздо больше умные часы, чем кажется, разве что без сенсорного экрана. Просто фитнес-функции выгодно в рекламе показывать. Экран постоянно активный, цветной (цветов, правда, негусто), при этом со включенным трекингом активности, паре часах GPS-трекинга в неделю и ежедневной синхронизацией с облаком тянут 20 дней на одном заряде. Без излишеств умных вообще заявлено 40 дней работы.


      1. icepro
        02.01.2017 19:26

        Фреймворк для построения UI. Layouts, события и прочее.


        1. kAIST
          02.01.2017 21:07

          Где нибудь можно на него посмотреть? На си?


          1. icepro
            02.01.2017 22:41

            К сожалению до релиза дело так и не дошло.
            Да, написан на С.


      1. DenimTornado
        03.01.2017 01:08

        А что вы от умных часов хотите?


        1. kAIST
          03.01.2017 01:27
          +4

          Расскажу чем мне приглянулись именно pebble.
          Самое главное это наверное работа с уведомлениями. Купил недавно новый телефон, и даже не знаю какой у него там по умолчанию стоит звук на звонок и сообщения. Привык к тишине — все что приходит, попадает на часы, и одним взглядом могу оценить, что то срочное или нет. Плюс могу даже ответить, особенно удобно, когда заняты руки.
          Всякие мелкие приложения, которые чуть чуть облегчают жизнь. Сейчас как раз делаю проект, ради которого часы и покупались: следить за таймингом мероприятий. Чтоб одного взгляда на часы было достаточно, чтоб оценить через сколько начнется событие 2, и сколько у тебя есть чтоб завершить событие 1 и т.д.
          Да и полно всяких мелочей, которые облегчают жизнь, например, пользуюсь приложение, которое помогает найти машину на большой парковке. Ну или найти смартфон в комнате, выключить свет и пр.
          К тому же оно должно оставаться часами и показывать время (как бонус — доп информация), в любое время, даже при ярком солнце (привет обычным экранам, которые слепнут на ярком солнце). Тут электронные чернила пока не в конкуренции.
          Да и автономность все же очень важная штука. Я не хочу ставить на зарядку их каждый вечер и беспокоиться чтоб хватило до позднего вечера. Я хочу в них спать, как минимум чтоб с утра они разбудили именно меня, а не всю мою семью.


          1. Sonatix
            03.01.2017 16:03
            +1

            Купил точно для тех же целей что и вы :)
            Очень раздражают звонки телефонов, поэтому всю жизнь хожу с вибро режимом, но в движении пропускаю звонки. Хотелось получать уведомления на часы и сигнал звонка получать на них же + использую программу Sleep As Android, но надоело спать с телефоном в постели, хотелось этот функционал переложить на часы.


          1. ChapayHabr
            07.01.2017 12:13

            я взял себе ксаоми браслет и блин вибро на звонок это урааааа!!!
            просто вибро на руке когда звонят!!! и я счастлив
            а если еще маленькие плюшки что вы описали добавит, то это просто атас был бы ))))

            есть конечно надежда что фитбит не угробит идею умных часов а разовьет ее


      1. Sonatix
        03.01.2017 14:44

        А меня часики откровенно расстроили. К офф. приложению так и не удалось подключить (неделю плясал вокруг них). Теперь на них просто смотрю время.


        1. kAIST
          03.01.2017 14:45

          Возможно брак попался. Смартфон видит их? На запрос часы отвечают? (сначала подтвердить на часах нужно, потом уже конфирм на мартфоне).


          1. Sonatix
            03.01.2017 15:31

            В том то и дело что по BT часы спариваются со смартфоном и переходят в состояние — подключено. И «Pebble App» их видит, но увы замирает на состоянии «connecting».
            Тут много таких «счастливчиков» https://forums.pebble.com/t/pebble-2-will-not-connect-to-app-android/24911
            При чем эта проблема не зависит от версии андроида. От нее страдают и владельцы именитых брендов, и владельцы разных «китайцев».
            При этом можно подключить к gadgebridge, но с очень ограниченным функционалом + он очень не стабильный (то отваливается каждую минуту в течении недели, то стабильно держит «конект» день).


          1. Sonatix
            03.01.2017 15:40

            Вот человек начал разбираться с проблемой https://forums.pebble.com/t/pebble-2-will-not-connect-to-app-android/24911/86
            Но увы, суппорт от Fitbit вроде как и был обещан, но его как бы и нет совсем.


      1. yota9
        04.01.2017 01:19

        Хотел обновиться с Time на Time2, но в день закрытия компании объявили, что их не будет :( Обновился просто на пеблы 2 с пульсометром. Вообщем то тоже пока не вижу альтернативы, отличные часы :((


      1. Yogo
        07.01.2017 10:41

        Есть, например, самсунг, со своим Tizen, но гораздо дороже. Есть LG, с Android Wear с неизвестной судьбой.


        1. kAIST
          07.01.2017 10:43

          Да полно их есть (и с чего это у Android Wear не известная судьба — не только LG выпускают на ней часы).
          Но pebble как бы несколько из этого всего выделяется.


          1. ChapayHabr
            07.01.2017 12:24

            были статьи, что часы на андройде пользуются небольшой популярностью
            наверное это имеется ввиду


            1. kAIST
              07.01.2017 12:35

              Да собственно и у apple так же. Где то была статья о том что рынок умных часов вообще не оправдал надежд.
              Люди вроде засматриваются, но не понимают зачем они нужны. У apple хоть есть "имиджевая" составляющая.


  1. Kondra007
    02.01.2017 22:52

    А расскажите, пожалуйста, про Ваше приложение для чтения Башорга.
    Когда делал своё, то столкнулся с проблемой: длинные цитаты просто обрезаются, где-то после 1000 символов. Проверяли ли Вы приложение на такие вещи?


    1. kAIST
      02.01.2017 23:01

      Если честно, не проверял. Вообще, "большие" приложения писать с помощью pebble.js не очень то хорошо, вылезает много разных глюков. Например, в моем ридере баша, если выбрать не первый пункт меню и по нему перейти, при нажатии back приложение падает почему то. И таких мелочей много.
      Pebble.js годится только для мелких поделок. Хотя что то более крупное у меня написать получилось (клиент Яндекс метрики и игра "кто хочет стать миллионером"), хоть и с некоторыми костылями.
      P.S. написал свой башорг, потому что не работал почему то ваш )


      1. Kondra007
        02.01.2017 23:23
        +1

        С моей версией какая-то фигня получилась. Поменял ссылку внутри приложения на другую, т.к. хостинг заканчивался, да и уже есть более полная база цитат (для бота Telegram).
        Отправил в PebbleStore, а на следующий день Pebble продался Fitbit, и на мой релиз все забили (завис в Pending). Я уж было подумал, что всё, облом.
        Но, благодаря Вашему посту, оказалось, что достаточно перезалить сейчас новую версию, и она моментально пройдёт. Так что теперь всё заработало :) Вам спасибо!