Как настроить в Google Core IoT? - PullRequest
       28

Как настроить в Google Core IoT?

0 голосов
/ 08 октября 2019

Я создал программу на Python для Raspberry Pi 3 Model B, которая должна подключаться к Google Cloud IoT Core с MQTT-протоколом и получать конфигурации. Отправка данных в Core до сих пор работала, но я просто не могу понять, как работает конфигурация! Вот код, который просто должен получить конфигурацию:


    import time
    import datetime
    import jwt
    import ssl
    import json
    import paho.mqtt.client as mqtt


    time_now = datetime.datetime.utcnow()


    #make key
    token  = {'iat' : time_now ,
              'exp' : time_now + datetime.timedelta(minutes=60),
              'aud' : "[PROJECT]"}

    r = open("[PRIVATE KEY]", 'r')
    pub_key = r.read()

    jwt_key = jwt.encode(token, pub_key, algorithm='RS256')


    #connect to iot-core
    client = mqtt.Client(client_id='projects/[PROJECT]/locations/[LOCATION]/registries/[REGISTER]/devices/[DEVICE]')
    client.username_pw_set(username='unused', password=jwt_key)

    client.tls_set(ca_certs='/home/pi/.local/lib/python2.7/site-packages/grpc/_cython/_credentials/roots.pem', tls_version=ssl.PROTOCOL_TLSv1_2)
    client.connect("mqtt.googleapis.com", 8883)

    #configure and change state
    state = 0

    print state #naturally shows 0

    print client.subscribe([DEVICE]/config, qos=1) #doesn't print custom config either, just (0,1) 

    print state #still shows 0

Конфигурация в Iot Core id устройства:

{ "state": 1 }

Даже после запуска программы,переменная «состояние» устройства остается на 0, а конфигурация ядра и история состояний указывают, что CONFIG «еще не подтверждено устройством»

Как получить изменение переменной «состояние» устройства с 0 на 1из ядра?

1 Ответ

0 голосов
/ 08 октября 2019

Вы сделали половину работы. 2 замечания.

  1. Возможно, это деталь, но вы называете свой закрытый ключ pub_key. И вы не закрываете файл.

  2. На основании этого урока вы подписываетесь только на MQTT. Обратный кортеж (0,1) означает MQTT_ERR_SUCCESS на QOS = 1. Таким образом, вы подключены. Большой! Теперь выполните вторую часть: используйте сообщения в канале и сделайте свою логику (в соответствии с полученным сообщением измените состояние в вашем приложении, если это ваш вариант использования)

...