Wishlist

Люблю наручные часы. Долгое время пытался без них обходится, ведь “зачем часы, когда есть телефон?”… Но, в итоге решил, что они мне все-таки нужны.

Ещё в далёком 2018-ом (5 лет назад 😮), купил я себе Garmin Fenix 5. Выбор пал на них, т.к. они виделись для меня этаким носимым умным устройством, для которого можно что-то сделать своё (циферблат, виджет, приложение), хорошо выглядят, и не нужно каждый день заряжать. И я решил, что обязательно разберусь, и сделаю для них что-то своё этакое. Но как-то всё до этого руки не доходили...

И вот, уже пошел второй год, как я не обременен тратой времени на ежедневный поход на работу... Когда, если не сейчас? - решил я! 😁

Помимо того, что во всех циферблатах, которые я пробовал, была хоть одна какая-то мелочь, которая мне не нравилась, я бы хотел видеть там ещё какие-то свои метрики. И в первую очередь меня на тот момент интересовала температура у меня в деревне. 👨‍🌾

Да, есть множество циферблатов, которые могут показывать температуру погоды. И зачастую разница с реальной температурой у них не более 1-2 градусов. Только не для моей деревни. У меня в деревне довольно часто реальная температура спускается на 6 градусов ниже, по сравнению с ближайшей метеостанцией. Вероятно это связанно с близостью к реке.

Уличную температуру я измеряю влагозащищённым датчиком DS18B20, подключенным к RaspberryPI, и выведенным на улицу. Ну, а дальше эти измерения доступны через HTTP-api, или PostgreSQL.

Задача - как-то вывести её на циферблат часов. Пути решения её мне виделось два:

  1. С циферблата периодически делать запрос в Интернет (через телефон) на своё API, получать температуру, и отображать её.
    Данный вариант, на сколько я понимаю, вполне реален, но я его пока не пробовал. Мне он показался не столь интересным в реализации. 🥱
  2. Иметь на телефоне приложение компаньон, которое будет собирать интересующие меня метрики из разных мест, и отправлять в память часов. А циферблат будет просто брать из памяти нужные данные, и отображать по ситуации. ✅

Выбрав второй вариант, я принялся за исследование и реализацию. Пару простеньких приложений для Android я когда-то писал на Java. Но оказалось, что сейчас рулит Kotlin. Пришлось и с ним познакомиться. 🙂

В общем, спустя 1-2 недели, у меня был готов прототип циферблата (на Monkey C), и приложение на телефон (на Kotlin с крупицей Java).

Прототип работал, как ожидалось... в эмуляторе! При заливке на телефон - меня ждал сюрприз! Оказалось, что просто указать в эмуляторе версию часов, и надеяться что там останутся  доступны функции только для них - было моим заблуждением! 😡
Циферблат крэшится при попытке вызова функции registerForPhoneAppMessageEvent(), которая доступна с API версии 3.2.0. А в моих Fenix 5 (прошивка 25) - 3.1.9.

Я расстроился, и забил! Возможно когда-нибудь реализую по первому варианту, или куплю себе часы посвежее. 😎