Основная проблема IoT с Rasperry PI - PullRequest
0 голосов
/ 27 мая 2020

Мы следовали руководству здесь: https://cloud.google.com/community/tutorials/cloud-iot-gateways-rpi

Мы настроили реестр, шлюз и устройства, и мы проверили, что шлюз (ноутбук) подключен. Консоль Google Cloud с отображением шлюзов

Мы получаем сообщение ниже на шлюзе:

Создание JWT с использованием RS256 из файла закрытого ключа rsa_private.pem статус подключения False on_connect Подключение принято. on_subscribe: mid 1, qos (1,) Не удалось найти ключ 1 Получено сообщение '' on topi c '/ devices / test-gateway / config' с Qos 1 Никто не подписывается на topi c / devices / test-gateway / config Получено сообщение '' на topi c '/ devices / test-gateway / config' с Qos 1 Никто не подписывается на topi c / devices / test-gateway / config

Однако в Raspberry Pi, он говорит «Ожидание ответа», и устройство ожидало ответа и не доходит до шага «принято». См. Приложенные снимки экрана с выходными данными Raspberry Pi, а также Iot Core Google Cloud, которые показывают, что шлюз подключен. Вывод консоли Raspberry Pi

1 Ответ

2 голосов
/ 27 мая 2020

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

В примере, который вы запускаете, сервер шлюза должен быть запущен до запуска кода термостата или светодиодной подсветки.

Кроме того, в коде Raspberry Pi без датчика DHT-22, подключенного к Raspberry Pi, вы не дойдете до кода, где снимаются показания. Если вы ищете версию, которая не требует оборудования, версия python -docs-samples светодиодов и термостата имитирует оборудования. Я убедился, что инструкции работают как минимум для светодиодной части демонстрации (мне удалось включить / выключить светодиодную подсветку).

Наконец, может быть ошибка в таблице для исходного кода в строке 51 thermostat.py, которая вызывает некоторые проблемы в протоколе UDP. Я обновлю статью, если смогу убедиться, что это вызывает у меня икоту, но если вы хотите исправить свою копию до ее повторной публикации, установите код следующим образом:

    # Receive response
    if log:
        print('waiting for response', file=sys.stderr)

    response, _ = sock.recvfrom(4096)

    if log:
        print('received: "{}"'.format(response), file=sys.stderr)
...