Как поднять 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
550 +1
2
Ответы
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 Апр 2024 в 13:14
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир