Демо №4 - Google Cloud Platform
В первой главе мы подключили WM2000 к беспроводной сети и безопасно передали в облако данные со встроенных датчиков освещённости и температуры платы WM2000EV. Затем мы настроили WM2000 на автоматическое подключение к сети Wi-Fi, включили беспроводную отладку, загрузили приложение и напрямую управляли RGB-светодиодом платы WM2000EV через веб-интерфейс.
Как и на предыдущем шаге, в этой главе мы обновим TiOS на WM2000, поскольку для работы с Google Cloud Platform нужна новая системная функция (syscall). Затем мы безопасно подключимся к Google Cloud Platform (GCP), чтобы передавать данные, а также принимать и выполнять команды.
В этой главе вам понадобится копировать длинные строки текста с веб-сайта в приложение L.U.I.S. (Loadable User Interface System). Чтобы упростить задачу, Tibbo настоятельно рекомендует выполнять весь урок на одном устройстве: на смартфоне (планшете) или на компьютере с интерфейсом (адаптером) Bluetooth 4.0. Из-за сложности GCP советуем использовать компьютер.
L.U.I.S. доступно как приложение для смартфонов на iOS и Android, а также как веб-приложение.
Из-за ограничений Web Bluetooth API веб-приложение работает только в последних версиях браузеров Chrome, Chromium, Edge или Opera на компьютерах Mac или Windows 10 (версия 1703 и новее) с адаптером Bluetooth 4.0.
Обновление TiOS на WM2000
Для проекта этой демонстрации (он находится в папке IoTCore репозитория проектов WM2000EV) требуется TiOS версии не ниже 4.01.04. Чтобы упростить загрузку приложения, мы подготовили файл Tibbo Composite Uncompressed (TCU) - GCP_IoTCore-wm2000.tcu. В нём собраны нужная прошивка, приложение Companion App и этот проект. В инструкции ниже используется веб-приложение BLE Firmware Updater, но обновление можно выполнить и через смартфонное приложение Tibbo Updater (для iOS и Android).
1. Переведите WM2000 в BLE-фазу режима обновления. Как это сделать, показано на блок-схеме Monitor/Loader V4. Можно также воспользоваться инфографикой с краткой последовательностью действий:
2. Откройте BLE Firmware Updater (нажмите здесь, чтобы открыть веб-приложение в новой вкладке или окне).
3. Нажмите кнопку 4 внизу. Затем нажмите Connect a device (подключить устройство).

4. Выберите свой WM2000 в появившемся диалоге и нажмите Pair (связать).

5. Нажмите Update Firmware From Local File (обновить прошивку из локального файла).
6. В диалоге найдите в репозитории файл GCP_IoTCore-wm2000.tcu и выберите его. Затем нажмите Open (открыть).

7. Обновление прошивки, Companion App и демонстрационный проект будут загружены в устройство.
Не отключайте питание устройства.

8. Когда обновление завершится, устройство перезагрузится автоматически.

Подключение WM2000 к Google Cloud Platform
Эта демонстрация подключается к Google Cloud Platform, поэтому, разумеется, вам понадобится учётная запись GCP. Если её ещё нет, Google сейчас предлагает бесплатную пробную версию сервисов GCP. Учтите, что для подтверждения личности требуется кредитная карта. Дальнейшие инструкции рассчитаны на создание новой учётной записи; если она у вас уже есть, откройте консоль GCP и переходите сразу к шагу 9.
Предполагается также, что вы настроили WM2000 на автоматическое подключение к сети Wi-Fi и включили беспроводную отладку. Если вам нужна помощь, обратитесь ко второй главе.
1. Откройте новое окно или вкладку браузера и перейдите на cloud.google.com.
2. Нажмите Get started for free (начать бесплатно).

3. Войдите в учётную запись Google или создайте её.
4. Введите данные учётной записи и нажмите Continue (продолжить).
5. Введите номер мобильного телефона и нажмите Send Code (отправить код), чтобы получить проверочный код.
6. Введите полученный код и нажмите Verify (подтвердить).
7. Введите платёжные данные. В зависимости от местного законодательства у вас могут запросить налоговые данные вашей компании. Наконец, для окончательного подтверждения личности нужно указать кредитную карту. Когда закончите, нажмите Start My Free Trial (начать бесплатный пробный период).
Примечание: Tibbo не связана с Google. Для этой демонстрации выбрана Google Cloud Platform, потому что это одна из крупнейших в мире облачных платформ, которую часто используют в приложениях Интернета вещей (IoT).
Как сказано на сайте Google Cloud Platform, с вашей кредитной карты ничего не спишут, пока вы не перейдёте на платный тариф. Если у вас возникли непредвиденные списания, связанные с Google Cloud Platform, обратитесь за помощью напрямую в Google.

8. Вы попадёте в консоль Google Cloud Platform, которая начнётся с вводного опроса. Можно пройти его или просто нажать Close (закрыть), чтобы продолжить.

9. В навигационном меню слева наведите курсор на IAM & Admin. В выпадающем подменю нажмите Create a Project (создать проект).

10. Задайте имя проекта и нажмите Create (создать).

11. В навигационном меню слева наведите курсор на APIs & Services. В выпадающем подменю нажмите Dashboard (панель).

12. Рядом с заголовком APIs & Services нажмите Enable APIs and Services (включить API и сервисы).

13. В поисковой строке в центре экрана введите Cloud IoT API и нажмите Enter.

14. Результат будет только один: Google Cloud IoT API. Нажмите на него.

15. На странице сведений об API нажмите Enable (включить).

16. В навигационном меню слева наведите курсор на APIs & Services. В выпадающем подменю нажмите Dashboard.
17. Рядом с заголовком APIs & Services нажмите Enable APIs and Services.
18. В поисковой строке в центре экрана введите Cloud Pub/Sub API и нажмите Enter.
19. Нажмите на результат Cloud Pub/Sub API.
20. На странице сведений об API нажмите Enable.

21. В поисковой строке вверху экрана введите IoT Core. В результатах поиска нажмите IoT Core.

22. Рядом с заголовком Registries нажмите Create Registry (создать реестр).

23. Задайте имя реестра и выберите ближайший к вам регион для хранения данных устройств.

24. Под заголовком Cloud Pub/Sub topics откройте выпадающее меню Select a Cloud Pub/Sub topic . Затем нажмите Create a Topic (создать тему).

25. Задайте имя темы. Не отмечайте ни один из флажков ниже. Нажмите Create Topic.

26. Под заголовком Additional topics нажмите Show Advanced Options (показать дополнительные параметры). Под заголовком Protocols убедитесь, что отмечены MQTT и HTTP.
27. Нажмите Create.


28. В навигационном меню слева нажмите Devices (устройства).

29. Рядом с заголовком Devices нажмите Create a Device (создать устройство).

30. Задайте имя устройства.
31. Нажмите Communication, Cloud Logging, Authentication, чтобы развернуть скрытые параметры страницы. Под заголовком Device communication убедитесь, что выбран вариант Allow (разрешить).

32. В правом верхнем углу нажмите значок Activate Cloud Shell (активировать Cloud Shell). В нижней части окна откроется Google Cloud Shell.

33. В Cloud Shell выполните команду: openssl ecparam -genkey -name prime256v1 -noout -out ec_private.pem. Она создаёт закрытый ключ на эллиптической кривой P-256.
34. Затем выполните команду: openssl ec -in ec_private.pem -pubout -out ec_public.pem. Она создаёт открытый ключ на эллиптической кривой P-256.
35. Наконец, выполните команду: openssl req -x509 -new -key ec_private.pem -out ec_cert.pem -subj "/CN=unused". Она создаёт ключ ES256 с самоподписанным сертификатом X.509.

36. В Cloud Shell выполните nano ec_public.pem. Откроется текстовый редактор с открытым ключом ES256.
37. Выделите весь ключ, включая начальную строку -----BEGIN PUBLIC KEY----- и конечную строку -----END PUBLIC KEY-----. Выделенный текст автоматически копируется в буфер обмена.
38. Нажмите Ctrl+X, чтобы выйти из текстового редактора.
39. Вставьте ключ в поле Public key value в разделе Authentication на странице настроек устройства.
40. Измените значение Public key format на ES256.
41. Нажмите Create.

Для этого демонстрационного проекта требуется TiOS версии 4.01.04 или новее. Если на устройстве установлена более старая версия, попытка подключить его к Google Cloud Platform приведёт к непрерывным перезагрузкам.
Если вы ещё не сделали этого, Tibbo настоятельно рекомендует выполнить процедуру обновления по BLE, описанную в разделе Обновление TiOS на WM2000, прежде чем продолжить.
L.U.I.S.
42. Включите питание устройства и откройте приложение L.U.I.S. (нажмите здесь, чтобы открыть веб-версию в новой вкладке или окне). Свяжите приложение с WM2000.
43. Введите SSID своей сети Wi-Fi в поле SSID.
44. Введите пароль своей сети Wi-Fi в поле WiFi password.
Примечание: если на WM2000 включена беспроводная отладка, смена параметров Wi-Fi в некоторых случаях может привести к потере соединения, особенно если модуль переключён в сегмент сети, не видимый вашему компьютеру. В таком случае можно заново подключиться через приложение L.U.I.S. и перенастроить Wi-Fi либо сменить интерфейс отладки через консоль BLE.

Google Cloud Platform
45. В левом верхнем углу нажмите на название своего проекта. Появится окно выбора проекта.
46. Скопируйте идентификатор своего проекта.
47. Вставьте скопированную строку в поле Project ID.
Google Cloud Platform
48. В навигационном меню слева нажмите Devices.
49. Скопируйте свой Registry ID.
50. Вставьте скопированную строку в поле Registry ID.
51. Задайте в поле Location ID то же расположение, что и в Google Cloud Platform.
52. Скопируйте свой Device ID.
53. Вставьте скопированную строку в поле Device ID.
54. В правом верхнем углу нажмите значок Activate Cloud Shell. В нижней части окна откроется Google Cloud Shell.
55. В Cloud Shell выполните nano ec_private.pem. Откроется текстовый редактор с закрытым ключом ES256.
56. Выделите весь ключ, включая начальную строку -----BEGIN EC PRIVATE KEY----- и конечную строку -----END EC PRIVATE KEY-----. Выделенный текст автоматически копируется в буфер обмена.
57. Вставьте скопированную строку в поле Private key.
58. Нажмите Save.
59. Нажмите Reboot.
60. В поисковой строке вверху экрана введите Pub/Sub. В результатах поиска нажмите Pub/Sub.

61. Нажмите на свой Topic ID.

62. На вкладке Subscriptions внизу нажмите Create Subscription, а затем Create subscription.

63. Задайте имя подписки.
64. Убедитесь, что под заголовком Delivery type выбран вариант Pull.
65. Нажмите Create.

66. На странице сведений о подписке откройте вкладку Messages.
67. Нажмите Pull.

Управление WM2000 из Google Cloud Platform
Как уже говорилось в начале этого урока, WM2000 может принимать и выполнять команды, отправленные через GCP. Демонстрационное приложение заранее настроено на приём команд от Google, которые включают RGB-светодиод WM2000EV по заданному вами шаблону. Приведённые ниже инструкции показывают, как пользоваться командой.
1. В поисковой строке вверху экрана введите IoT Core. В результатах поиска нажмите IoT Core.
2. Нажмите на свой реестр.
3. В меню слева нажмите Devices.
4. Нажмите на своё устройство.

5. Вверху страницы рядом с заголовком Device details нажмите Send Command (отправить команду).

6. В появившемся диалоге введите R-G-B- в поле Command data и LedTest в поле Subfolder. Нажмите Send Command. RGB-светодиод WM2000EV мигнёт красным, зелёным и синим цветом, а затем погаснет. Экспериментируйте с другими шаблонами.
Если шаблон не заканчивается символом «-» (дефис), светодиод останется включённым последним цветом шаблона.
