Настройка макета Далее следует установить Google IoT Core, следуя инструкциям в
руководстве.
В этом же руководстве описан процесс создания проектов и реестров устройств (device registry). На данном этапе настройки пока не следует генерировать ключи или создавать проект устройства.
Инициализация устройства Запускаем команду «mos flash esp8266» для установки Mongoose OS на плату NodeMCU.
Запускаем команду «mos wifi SSID PASS» для включения WiFi.
Настройка ECC508A Запускаем команду «mos config-set sys.atca.enable=true»
Убеждаемся, что криптографическая микросхема успешно обнаружена:
$ mos -X atca-get-config Using port /dev/ttyUSB0 AECC508A rev 0x5000 S/N 0x012352aad1bbf378ee, config is locked, data is locked 0x01, 0x23, 0x52, 0xaa, ... Если разделы памяти устройства с настройками и данными автоматически не перешли в защищенное состояние «locked», то следует выполнить настройку криптографического чипа перед продолжением дальнейших операций. В дальнейшем примере будем считать, что slot 0 задействован для хранения приватных ключей ECC, а генерация ключей активирована.
Генерируем ключ:
$ mos -X atca-gen-key 0 ec_public.pem --dry-run=false Using port /dev/ttyUSB0 AECC508A rev 0x5000 S/N 0x012352aad1bbf378ee, config is locked, data is locked Generated new ECC key on slot 0 Wrote ec_public.pem Создаем объект GCP-устройства (GCP - Google Cloud Platform):
$ gcloud beta iot devices create $DEVICE_ID --project=$PROJECT --region=$REGION --registry=$REGISTRY --public-key path=ec_public.pem,type=es256 Конфигурируем настройки GCP-устройства:
mos config-set mqtt.enable=true mqtt.server=mqtt.googleapis.com:8883 mqtt.ssl_ca_cert=ca.pem sntp.enable=true gcp.enable=true gcp.project=$PROJECT gcp.region=$REGION gcp.registry=$REGISTRY gcp.device=$DEVICE_ID device.id=$DEVICE_ID gcp.key=ATCA:0 sys.atca.enable=true debug.stderr_topic=/devices/$DEVICE_ID/events/log debug.stdout_topic=/devices/$DEVICE_ID/events/log Тестирование Запускаем команду «mos ui» для получения доступа к пользовательскому Web-интерфейсу. Указываем адрес устройства (последовательный порт) для подключения и выполняем перезагрузку устройства. В окне пользовательского интерфейса должны появиться сообщения:
... mgos_wifi_setup_sta WiFi STA: Connecting to SSID mgos_i2c_create I2C GPIO init ok (SDA: 12, SCL: 14) mgos_atca_init ATECC508 @ 0x60: rev 0x5000 S/N 0x12352aad1bbf378ee, zone lock status: yes, yes; ECDH slots: 0x0c ... mgos_gcp_init GCP client for my-project/us-central1/my-registry/my-es256-device, EC(ATCA) key in ATCA:0 ... mgos_mqtt_ev MQTT Connect (1) ATCA:0 ECDSA sign ok mgos_mqtt_ev MQTT CONNACK 0 mgos_mqtt_ev Subscribing to 'my-es256-device/rpc' mgos_mqtt_ev Subscribing to 'my-es256-device/rpc/#' ... Здесь «
EC(ATCA) key in ATCA:0 part» означает, что slot 0 криптографического чипа ATECC508A задействован.
«ATCA:0 ECDSA sign ok» означает ,что ATCA:0 используется для авторизации доступа в ходе рукопожатия в протоколе MQTT.
Далее, прошивка, загруженная в устройство по умолчанию, каждый раз при нажатии пользователем кнопки «Flash» будет выводить в пользовательский интерфейс MQTT-сообщение:
Published: yes topic: /devices/my-es256-device/events message: {"free_ram":30080,"total_ram":51912}