[英]Pass __init__ argument and use it as variable within the class
我正在尝试使用三个给定的__init__
参数调用 AWS IoT 调用方法。 但不知何故,这些参数无法传递到类本身中。 正如您从给定的屏幕截图中看到的,在类中找不到变量ENDPOINT
。 任何帮助将不胜感激。
import AWS_Publishing
AWSEndPoint = "ak2faelus7i02-ats.iot.ap-southeast-1.amazonaws.com"
AWSClientId = ""
publishMessage = AWS_Publishing(AWSEndPoint, AWSClientId, "Test")
publishMessage
from awscrt import io, mqtt, auth, http
from awsiot import mqtt_connection_builder
import time as t
import json
class AWS_Publishing:
def __init__(self, endpoint, client_id, topic):
self.ENDPOINT = endpoint
self.CLIENT_ID = client_id
self.TOPIC = topic
PATH_TO_CERT = "certs/device.pem.crt"
PATH_TO_KEY = "certs/private.pem.key"
PATH_TO_ROOT = "certs/Amazon-root-CA-1.pem"
MESSAGE = "Hello World"
RANGE = 20
# Spin up resources
event_loop_group = io.EventLoopGroup(1)
host_resolver = io.DefaultHostResolver(event_loop_group)
client_bootstrap = io.ClientBootstrap(event_loop_group, host_resolver)
mqtt_connection = mqtt_connection_builder.mtls_from_path(
endpoint=ENDPOINT,
cert_filepath=PATH_TO_CERT,
pri_key_filepath=PATH_TO_KEY,
client_bootstrap=client_bootstrap,
ca_filepath=PATH_TO_ROOT,
client_id=CLIENT_ID,
clean_session=False,
keep_alive_secs=6
)
将“端点”传递给“端点”
谢谢你们的帮助。 我设法以某种方式解决了这个问题。 我没有创建一个类,而是创建了一个函数。
import AWS_Publishing
AWSEndPoint = "ak2faelus7i02-ats.iot.ap-southeast-1.amazonaws.com"
AWSClientId = "test"
Topic = "Testing"
publishAWS = AWS_Publishing.publish(AWSEndPoint, AWSClientId, Topic)
publishAWS
from awscrt import io, mqtt, auth, http
from awsiot import mqtt_connection_builder
import time as t
import json
def publish(ENDPOINT, CLIENT_ID, TOPIC):
PATH_TO_CERT = "certs/device.pem.crt"
PATH_TO_KEY = "certs/private.pem.key"
PATH_TO_ROOT = "certs/Amazon-root-CA-1.pem"
MESSAGE = "Hello World"
RANGE = 20
event_loop_group = io.EventLoopGroup(1)
host_resolver = io.DefaultHostResolver(event_loop_group)
client_bootstrap = io.ClientBootstrap(event_loop_group, host_resolver)
mqtt_connection = mqtt_connection_builder.mtls_from_path(
endpoint=ENDPOINT,
cert_filepath=PATH_TO_CERT,
pri_key_filepath=PATH_TO_KEY,
client_bootstrap=client_bootstrap,
ca_filepath=PATH_TO_ROOT,
client_id=CLIENT_ID,
clean_session=False,
keep_alive_secs=6
)
print("Connecting to {} with client ID '{}'...".format(
ENDPOINT, CLIENT_ID))
# Make the connect() call
connect_future = mqtt_connection.connect()
# Future.result() waits until a result is available
connect_future.result()
print("Connected!")
# Publish message to server desired number of times.
print('Begin Publish')
for i in range(RANGE):
data = "{} [{}]".format(MESSAGE, i + 1)
message = {"message": data}
mqtt_connection.publish(topic=TOPIC, payload=json.dumps(
message), qos=mqtt.QoS.AT_LEAST_ONCE)
print("Published: '" + json.dumps(message) +
"' to the topic: " + TOPIC)
t.sleep(0.1)
print('Publish End')
disconnect_future = mqtt_connection.disconnect()
disconnect_future.result()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.