Недостаточно памяти для подключения к облаку IoT Google Cloud

1

Я успешно подключил 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 Ссылка на папку

  • 1
    Это звучит как утечка памяти, когда выделенный ресурс не освобождается, и после достаточного количества циклов эти несвободные выделения занимают всю доступную память. Но без проблемного кода, присутствующего в вашем вопросе , это скорее проблема конечного пользователя, которая здесь будет не по теме, чем ошибка в программе по теме, которую SO-сообщество может помочь вам отладить.
Теги:
iot
cloud
memory
mqtt

2 ответа

0

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

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

0

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

Проблема заключается в том, что 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)
  • 1
    Пожалуйста, скопируйте еще несколько ответов сюда (например, фрагмент кода для обновления токенов), так как на данный момент это в основном ответ только для ссылок, который будет бесполезен, если ссылка не работает

Ещё вопросы

Сообщество Overcoder
Наверх
Меню