Я создал программу на 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из ядра?