Как поднять MQTT сервер в Google IoT Core? Как организовать сбор данных с помощью Google IoT Core по протоколу MQTT? Как поднять сервер который был бы связан с Pub/Sub?Вот мой python клиент:import time
import paho.mqtt.client as mqtt
broker="mqtt.googleapis.com"
device_id = 'my-devic-1'
project_id = '****'
cloud_region = '***'
registry_id = '***'
private_key_file = 'rsa_private.pem'
client = mqtt.Client(
client_id=('projects/{}/locations/{}/registries/{}/devices/{}'
.format(
project_id,
cloud_region,
registry_id,
device_id)))
print("connecting to broker ",broker)
client.username_pw_set(
username='unused',
password=create_jwt(
project_id, private_key_file, algorithm))
client.connect(broker, port=8883)#connect
client.loop_start() #start loop to process received messages
print("publishing ")
time.sleep(2)
client.publish("projects/****/topics/pub1",payload="test1", qos=1)
time.sleep(4)
client.disconnect() #disconnect
client.loop_stop() #stop loopПро create_jwtimport argparse
import datetime
import os
import random
import ssl
import time
import jwt
import paho.mqtt.client as mqtt
def create_jwt(project_id, private_key_file, algorithm):
"""Creates a JWT (https://jwt.io) to establish an MQTT connection.
Args:
project_id: The cloud project ID this device belongs to
private_key_file: A path to a file containing either an RSA256 or
ES256 private key.
algorithm: The encryption algorithm to use. Either 'RS256' or 'ES256'
Returns:
An MQTT generated from the given project_id and private key, which
expires in 20 minutes. After 20 minutes, your client will be
disconnected, and a new JWT will have to be generated.
Raises:
ValueError: If the private_key_file does not contain a known key.
"""
token = {
# The time that the token was issued at
'iat': datetime.datetime.utcnow(),
# The time the token expires.
'exp': datetime.datetime.utcnow() + datetime.timedelta(minutes=60),
# The audience field should always be set to the GCP project id.
'aud': project_id
}
# Read the private key file.
with open(private_key_file, 'r') as f:
private_key = f.read()
print('Creating JWT using {} from private key file {}'.format(
algorithm, private_key_file))
return jwt.encode(token, private_key, algorithm=algorithm)
print(create_jwt("project_id", "rsa_private.pem", "RS256"))

21 Авг 2019 в 06:41
303 +1
1
Ответы
1

Для поднятия MQTT сервера в Google IoT Core и организации сбора данных по протоколу MQTT вы можете использовать следующие шаги:

Создайте учетную запись в Google IoT Core и зарегистрируйте устройство.Создайте приватный ключ (например, rsa_private.pem) и добавьте его в учетную запись устройства.Используйте данный Python код для подключения к MQTT серверу Google IoT Core, публикации сообщения и отключения:import time
import paho.mqtt.client as mqtt
def create_jwt(project_id, private_key_file, algorithm):
# Функция для создания JWT токена
# Реализация опущена для краткости кода
# Параметры подключения к серверу
broker = "mqtt.googleapis.com"
device_id = 'my-device-1'
project_id = 'your-project-id'
cloud_region = 'your-region'
registry_id = 'your-registry-id'
private_key_file = 'rsa_private.pem'
client = mqtt.Client(client_id=('projects/{}/locations/{}/registries/{}/devices/{}'
.format(project_id, cloud_region, registry_id, device_id)))
client.username_pw_set(username='unused', password=create_jwt(project_id, private_key_file, 'RS256'))
client.connect(broker, port=8883)
client.loop_start()
# Публикация сообщения
print("Publishing message...")
client.publish("projects/{}/topics/pub1".format(project_id), payload="test message", qos=1)
time.sleep(4)
client.disconnect()
client.loop_stop()Убедитесь, что файл rsa_private.pem содержит правильный приватный ключ для вашего устройства и учетной записи в Google IoT Core.Замените значения project_id, cloud_region, registry_id на свои реальные значения.Запустите код и убедитесь, что сообщение успешно опубликовано в указанную тему в Google IoT Core.

Чтобы организовать сбор данных с помощью Google IoT Core по протоколу MQTT и связать его с Pub/Sub, необходимо настроить правила маршрутизации в Google IoT Core. Эти правила позволят перенаправить полученные данные из MQTT в Pub/Sub для дальнейшей обработки.

Для этого вам нужно:

Создать темы Pub/Sub в Google Cloud Console.Настроить правила маршрутизации в Google IoT Core для отправки данных в созданные вами темы Pub/Sub.После настройки правил, данные из MQTT будут автоматически отправляться в Pub/Sub для дальнейшей обработки.

Надеюсь, это поможет вам настроить сбор данных с использованием Google IoT Core и протокола MQTT. Если у вас возникнут дополнительные вопросы или потребуется дальнейшая помощь, не стесняйтесь задавать.

20 Апр в 13:14
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 84 622 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир