This is my custom aiomqtt client
Project description
DM-aiomqtt
Urls
Usage
Example
from dm_aiomqtt import DMAioMqttClient
import asyncio
# create handler for 'test' topic
async def test_topic_handler(publish: DMAioMqttClient.publish, topic: str, payload: str) -> None:
print(f"Received message from {topic}: {payload}")
publish("test/success", payload=True)
async def main():
# create client
mqtt_client = DMAioMqttClient("localhost", 1883, "username", "password")
# add handler for 'test' topic
mqtt_client.add_topic_handler("test", test_topic_handler)
# start connection
await mqtt_client.start()
# publish
mqtt_client.publish("test", payload="Hello World!", sent_logging=True)
# other code (for example, endless waiting)
await asyncio.Event().wait()
if __name__ == "__main__":
asyncio.run(main())
TLS connection
-
NOT required client certificate
mqtt_client = DMAioMqttClient( host="localhost", port=8883, ca_crt="ssl/ca.crt" )
-
REQUIRED client certificate
mqtt_client = DMAioMqttClient( host="localhost", port=8883, ca_crt="ssl/ca.crt", client_crt="ssl/client.crt", client_key="ssl/client.key" )
RESEND_NOT_SUCCESS_MESSAGES
Set this parameter resend_not_success_messages=True when create mqtt client
mqtt_client = DMAioMqttClient(
host="localhost",
port=1883,
resend_not_success_messages=True
)
Now, in case of loss of connection, all messages that were sent during this period will be re-sent as soon as the connection appears again.
BUT the payload will be in a changed format [your_payload]_dt_[iso_local_datetime]
Example:
Your payload: "{"temp": 12}"
Edited payload: "{"temp": 12}_dt_2024-04-19T09:57:40"
Set custom logger
If you want set up custom logger
from dm_aiomqtt import DMAioMqttClient
# create custom logger
class MyLogger:
def debug(self, message):
pass
def info(self, message):
pass
def warning(self, message):
print(message)
def error(self, message):
print(message)
# set up custom logger for all clients
DMAioMqttClient.set_logger(MyLogger())
Publish method parameters
| Parameter | Type | Default Value | Description |
|---|---|---|---|
topic |
str |
(required) | Topic name |
payload |
str |
"DEBUG" |
Content to send |
qos |
0 | 1 | 2 |
True |
MQTT QoS |
payload_to_json |
bool | "auto" |
True |
Whether to convert content to JSON |
sent_logging |
bool |
False |
Whether to print the sending notification |
error_logging |
bool |
False |
Whether to print a send error warning |
Run in Windows
If you run async code in Windows, set correct selector
import asyncio
import sys
if sys.platform == "win32":
asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dm_aiomqtt-0.4.6.tar.gz.
File metadata
- Download URL: dm_aiomqtt-0.4.6.tar.gz
- Upload date:
- Size: 5.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
066c2dd09c859323ddf30530f36b91b5eff3c03a9be6d7771e0e65cd7bf3c5b0
|
|
| MD5 |
e089769cdfc9911c63b03b8c7ad7f9c6
|
|
| BLAKE2b-256 |
55bfbdfa05ef4a1f5e8eb460b9e6ebc8e8bf41a82e86639fd2708086c7355909
|
File details
Details for the file dm_aiomqtt-0.4.6-py3-none-any.whl.
File metadata
- Download URL: dm_aiomqtt-0.4.6-py3-none-any.whl
- Upload date:
- Size: 5.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
370189fa8afb8b30cc82517b149314dd322ae3668ac0631e49944279a895bda1
|
|
| MD5 |
87e1068df349baaf412c2b6fa39b25e1
|
|
| BLAKE2b-256 |
c97e140d1f50a486293c698a54b4d6c7cb12b7126f4b4d1b755170e1559f1781
|