Интернет неработающих вещей

Сегодня - на примере Suunto Spartan и Garmin GPSMAP 64

Словосочетание “internet of shit”, если вы находитесь приблизительно на одной волне со мной, рождает в вашем сознании, скорее всего, следующую картину: абсурдно плохо спроектированные “умные” устройства, отказывающие в самых базовых ситуациях, или имеющие невообразимо дилетантские проблемы с безопасностью.

Не самая оригинальная мысль: современные подходы к разработке и лёгкая доступность открытых платформ на каждый случай дают инженерам возможность быстро создавать невероятно комплексные системы, но отказывают им в возможности эти системы полностью понимать. Вы собрали устройство впопыхах из готовых кирпичиков, и унеслись писать для него софт пользовательского уровня, как только оно начало загружаться. Откуда вам вообще знать, что загрузчик при включении с удовольствием скачает неподписанный новый образ диска из сети, если обнаружит его по определённому адресу?

Если сложный потребительский продукт может быть создан командой из нескольких человек за полгода, то каких-то больших усилий почти никто и не будет прикладывать; совершенно точно — не для того, чтобы довести до ума аспекты, которые не принято восславлять глянцевым принтом на коробке.

Именно так вы получаете ботнет из умных лампочек, давящих WiFi по всему городу (просто повертите эту фразу на языке, просто ощутите уровни абсурдности), постоянные утечки паролей, и умные замки, скорее помогающие украсть охраняемое ими, чем препятствующие.

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


/2019/internetofshit-suunto/images/internetofshit_hu395ec21728a065b2a521b558c8712b34_422778_64x64_fit_q60_lanczos.jpg

Да, я очевидно не смог в полевых условиях загрузить новый трек в навигатор, и мне осталось лишь пропихнуть его в часы, и ехать по ним1. Почему так? Ну, GPSMAP 64 - старый навигатор, и у него нет Bluetoo…

У него есть Bluetooth. Он просто используется для других вещей: отображения нотификейшнов с телефона (безусловно крайне необходимая функция), и для периодической отправки ваших координат родным и близким через интернет (окей, это неиронически крайне полезная функция). Принимать треки по Bluetooth он почему-то не мо…

Может. Но только с других устройств Garmin2. Как можно было сделать вот так — я не вполне понимаю. У Garmin, впрочем, могут быть какие-то мысли по этому поводу, потому что приём треков с телефона по Bluetooth был с большой помпой анонсирован как отличительная особенность следующей модели, GPSMAP 66.

Всё это рождает к фирме Garmin несколько (очередных) вопросов, и среди них нет цензурных. Как хорошо, что в крайнем случае всегда можно положиться на часы Suunto Spartan.

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


Я упоминал, что они крутят на ARM M0-микроконтроллере код на Javascript? Да, вообще-то, несколько раз, но сейчас хотел бы просто сказать, что ОНИ КРУТЯТ НА ARM M0-МИКРОКОНТРОЛЛЕРЕ КОД НА JAVASCRIPT

Я упоминал, что они крутят на ARM M0-микроконтроллере код на Javascript? Да, вообще-то, несколько раз, но сейчас хотел бы просто сказать, что ОНИ КРУТЯТ НА ARM M0-МИКРОКОНТРОЛЛЕРЕ КОД НА JAVASCRIPT


Два года назад Suunto Spartan кроме самых фундаментальных вещей — навигации по треку и записи активности — не умели практически ничего. Зато у них замечательно получалось выводить меня из себя тем, что в них работало коряво. Записывал трек двое суток (ММБ же)? Готовься к тому, что синхронизироваться с сервером он будет трое, два раза подряд при этом опустошив батарейку. Я не шучу, и примерно, наверное, догадываюсь, какая логика за этим стоит: часы имеют таймаут на передачу трека, изначально это, скажем, тридцать секунд. К сожалению, передача крайне медленная, и часы постепенно увеличивают таймаут перед каждой следующей попыткой. Последняя, удачная попытка занимает где-то в районе получаса.3

В первой итерации всё это происходило через мобильное приложение Movescount, загружающее треки на одноименный сайт — Suunto тогда была ещё уверена, что надо делать не интеграцию со Strava, а ещё одну Strava. Загрузка GPX-треков в часы была удивительным процессом: вы открываете сайт (тяжёлый, десктопный, с картой во весь экран, и пугающим количеством джаваскрипта за ним), выдавливаете на него трек, подключаете часы кабелем к машине с Windows, и другое, десктопное приложение уже по кабелю закачивает трек в часы. Удобно, правда?

Парой апдейтов позже Suunto сделала возможным синхронизировать треки с сайта по Bluetooth — теперь вы чисто гипотетически могли поймать в пути какой-то интернет, найти подходящий вам трек, загрузить его (на всё ещё чудовищно тяжёлый, сделанный точно не для 2G-соединений) сайт, и уже нажатием одной кнопки в мобильном приложении — отправить его оттуда в часы. Лучше чем ничего, наверное.

Наконец, в этом году Suunto смирилась с тем, что собственным сервисом со Strava конкурировать не получится, и поэтому… купила Sports Tracker и начала его интегрировать в свою экосистему, перестав поддерживать часы чуть постарше, и поломав вообще всё, что можно представить, в процессе (очень, очень пока далёком от завершения).

Плодами этой масштабной переработки я имел счастье насладиться в полной мере на выезде в Дагестан, где, стоя на брифинге забега, за четыре часа до отправки на старт я вдруг обнаружил, что трек моей дистанции, который я перед вылетом закинул на часы, на часах не появился. Неприятно, но у меня ведь ещё есть время? Хорошо, заходим на этот сайт снова, загружаем трек… нет, трек уже загружен. Не знаю, попробуем удалить и загрузить заново… Запускаем Movescount… Nope, ничего, трек отказывается синхронизироваться.

Ах, да. Конечно же, приложение Movescount и сайт Movescount теперь не поддерживаются (но не говорят вам об этом, когда вы пытаетесь закачать критически важный трек в часы), и мне необходимо скачать новое приложение4, и обнаружить, что в нём наконец есть кнопка “передать GPX-трек на часы”.

Напрямую.

С телефона.

По Bluetooth.

Невероятный прорыв, Suunto понадобилось два года (а Garmin не хватило и пяти), чтобы сделать вещь, которая просто обязана была работать с самого первого дня. Как можно выпустить устройство с функцией GPS-навигации, и не дать возможности загружать на него трек вне дома? На самом деле, я могу, конечно, понять, почему такие вещи вообще происходят — имея возможность поправить вещи в софте, сложно отказаться от искушения поправить вещи в софте когда-нибудь потом.

Но вот что неуютно: если вы пролистаете десятки стартовых ревью этих часов (я пролистал перед покупкой), вы найдёте среди них может быть пару, упоминающих, что софт “несколько сыроват”, но ни одного, кричащего, что сука олло, так делать нельзя. За каких-то два десятка лет жизни с перепрошиваемыми околобытовыми устройствами мы настолько привыкли к сервисной модели для осязаемых, физических вещей, что возмущение покупкой продукта, который доделают когда-нибудь и может быть, сменилось у многих из нас на радость, когда что-то “новенькое” апдейтом всё же добавляют.

Я не могу оставаться в полном спокойствии, полагаясь на такие устройства. В качестве абсолютного минимума — мне нужно время, чтобы… нет, не научиться пользоваться ими: составить в голове карту вещей, которые могут пойти не так в юзкейсах, хотя бы минимально отличающихся от основных замысленных (и протестированных) создателями, и заранее найти обходные пути.

Сейчас абсолютно бытовыми вещами стало многое из того, что фантастические фильмы моего детства рисовали как безусловный атрибут (обычно светлого, иногда дистопичного, но всегда — невероятно удалённого от кристально-пластиковых девяностых технологически) будущего, но ничто не готовило меня к затянувшемуся периоду, когда всё это будет работать через раз.

Периоду же?


  1. “Надо было всего-то взять с собой OTG-кабель и залить трек в навигатор!” — да, с собой вообще можно взять удивительное количество вещей, но я знал, что смогу худо-бедно обойтись часами в случае, если мне придётся прорываться к ближайшей точке эвакуации: достаточно работоспособный вариант, чтоб не волноваться из-за отсутствия кабеля, и, как видим, достаточно неудобный, чтобы всё равно потом накатать яростный пост; также можно было бы иметь телефон со слотом для SD-карт, но увы и ах. ↩︎

  2. В забытых частях интернета сохранились записи о приложении BaseCamp Mobile, которое когда-то существовало исключительно для iOS и вроде бы (я не полностью уверен) могло передавать на навигаторы треки, но оно было закрыто где-то лет пять назад. ↩︎

  3. Чуть в стороне о том, как происходят апдейты: через приложение для Windows. Вас может посетить мысль, что если Windows не ваша основная система, то можно воспользоваться для этого виртуальной машиной, но в процессе обновления часы пару раз сменят USB VID/PID, что приведёт к интересным последствиям, если ваша VM предпочитает работать с USB-устройствами по вайтлистам. ↩︎

  4. Называется Suunto, и первое время поисковый запрос “suunto android app” неизменно направлял вас на неподдерживаемый Movescount. ↩︎

Смотрите также