Недостаточно памяти для подключения к облаку IoT Google Cloud - PullRequest
0 голосов
/ 12 января 2019

Мне удалось подключить Raspberry Pi к облачному IoT и я смог легко переключать устройство. Но через некоторое время устройство, по-моему, отключается и показывает «(« on_disconnect »,« 1: Out of memory. »)» И состояние подключения устанавливается на «Ложь». Поэтому я переустановил пакеты git (папку сообщества) и повторил те же шаги, и я снова добился успеха. Но, очевидно, та же ошибка возникла через некоторое время. Я не могу сузить это до того, что вызывает проблему. Я новичок здесь, так что дайте мне знать, если мне нужно больше информации.

РЕДАКТИРОВАТЬ: Поскольку я пытался сузить его, я обнаружил, что при повторном запуске команды "export GOOGLE_CLOUD_PROJECT = your-project-id-123" при возникновении вышеуказанной проблемы, помогите мне правильно установить соединение (без изменения что-нибудь). Хотя это не останавливает проблему «Недостаточно памяти», сейчас есть над чем поработать.

РЕДАКТИРОВАТЬ: https://github.com/GoogleCloudPlatform/community/tree/master/tutorials/cloud-iot-gateways-rpi Ссылка на папку

Ответы [ 2 ]

0 голосов
/ 03 мая 2019

Для всех, кто придет сюда при испытании примера MQTT

Проблема в моем случае заключалась в том, что я просто забыл правильно установить флаг --project в примере CLI, который разрешил имя проекта на None, что, очевидно, дает эту загадочную ошибку в восходящем направлении. Так что вы можете проверить, что ваш проект настроен правильно. Кстати, то же самое касается региона, что может привести к отказу в подключении.

0 голосов
/ 01 февраля 2019

Я помог автору этого вопроса решить эту проблему на другой платформе, но я публикую решение для справки.

Проблема заключается в том, что JWT, которые были сгенерированы в учебном пособии, за которым следовал OP, истекает примерно через час и также не содержит код для обновления токена после истечения срока его действия. Для получения дополнительной информации о создании и обновлении JWT см. здесь .

edit: По запросу добавляем фрагмент кода для обновления jwts. В этом случае get_client создает соединение MQTT, которое также обрабатывает создание JWT. Предполагается, что срок действия JWT истекает через 60 минут, но в Cloud IoT Core JWT могут быть действительны в течение 24 часов.

seconds_since_issue = (datetime.datetime.utcnow() - jwt_iat).seconds
if seconds_since_issue > 60 * jwt_exp_mins:
    print('Refreshing token after {}s').format(seconds_since_issue)
    jwt_iat = datetime.datetime.utcnow()
    client = get_client(
        args.project_id, args.cloud_region,
        args.registry_id, args.device_id, args.private_key_file,
        args.algorithm, args.ca_certs, args.mqtt_bridge_hostname,
        args.mqtt_bridge_port)
...