|
- import json
-
-
- def initialize():
- """
- This function is invoked after the script file has been loaded.
- It will be executed only one time.
- """
-
- print("Hello World from sample script.")
-
-
- def destroy():
- """
- This function is invoked when the script is unloaded due to a script file update etc.
- """
-
- print("Bye from sample script.")
-
-
- def on_validate_client_connection(context):
- """
- This function is invoked whenever a client wants to connect. It can be used to validate the connection.
- """
-
- print(context)
-
- # Access some custom data here which was inserted upon connect and may use it for validation.
- mqtt_net_server.write_shared_data(context["client_id"], {"custom_value_1": 1, "custom_value_2": True})
-
- return
-
- # Supported results:
- # * success
- # * unspecified_error
- # * malformed_packet
- # * protocol_error
- # * implementation_specific_error
- # * unsupported_protocol_version
- # * client_identifier_not_valid
- # * bad_user_name_or_password
- # * not_authorized
- # * server_unavailable
- # * server_busy
- # * banned
- # * bad_authentication_method
- # * topic_name_invalid
- # * packet_too_large
- # * quota_exceeded
- # * payload_format_invalid
- # * retain_not_supported
- # * qos_not_supported
- # * use_another_server
- # * server_moved
- # * connection_rate_exceeded
-
- if context["client_id"] != "test_client":
- context["result"] = "bad_user_name_or_password"
- return
-
- if context["username"] != "bud spencer":
- context["result"] = "bad_user_name_or_password"
- return
-
- if context["password_string"] != "secret":
- context["result"] = "bad_user_name_or_password"
-
- print(context)
-
-
- def on_intercept_subscription(context):
- """
- This function is invoked whenever a client wants to subscribe to a topic.
- """
-
- print("Client '{client_id}' want's to subscribe to topic '{topic}'.".format(client_id=context["client_id"], topic=context["topic"]))
-
-
- def on_intercept_application_message(context):
- """
- This function is invoked for every processed application message. It also allows modifying
- the message or cancel processing at all.
- """
-
- client_id = context["client_id"]
-
- if client_id != None:
- shared_data = mqtt_net_server.read_shared_data(context["client_id"], {})
- print(shared_data)
-
- if context["topic"] == "topic_with_response":
-
- json_payload = {
- "hello": "world",
- "x": 1,
- "y": True,
- "z": None
- }
-
- application_message = {
- "retain": False,
- "topic": "reply",
- "payload": json.dumps(json_payload)
- }
-
- mqtt_net_server.publish(application_message)
-
- print("Client '{client_id}' published topic '{topic}'.".format(client_id=context["client_id"], topic=context["topic"]))
-
-
- def on_client_connected(event_args):
- """
- This function is called whenever a client has passed the validation is connected.
- """
-
- print("Client '{client_id}' is now connected.".format(client_id=event_args["client_id"]))
-
-
- def on_client_disconnected(event_args):
- """
- This function is called whenever a client has disconnected.
- """
-
- print("Client '{client_id}' is now disconnected (type = {type}).".format(client_id=event_args["client_id"], type=event_args["type"]))
-
-
- def on_client_subscribed_topic(event_args):
- """
- This function is called whenever a client has subscribed to a topic (when allowed).
- """
-
- print("Client '{client_id}' has subscribed to '{topic}'.".format(client_id=event_args["client_id"], topic=event_args["topic"]))
-
-
- def on_client_unsubscribed_topic(event_args):
- """
- This function is called whenever a client has unsubscribed from a topic.
- """
-
- print("Client '{client_id}' has unsubscribed from '{topic}'.".format(client_id=event_args["client_id"], topic=event_args["topic"]))
|