diff --git a/.gitignore b/.gitignore index 5d381cc..8575529 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,7 @@ __pycache__/ # C extensions *.so +.idea/ # Distribution / packaging .Python diff --git a/new_test.py b/new_test.py new file mode 100644 index 0000000..76489d2 --- /dev/null +++ b/new_test.py @@ -0,0 +1,51 @@ +# -*- coding: utf-8 -*-# -*- coding: utf-8 -*- +# 订阅者 + +import paho.mqtt.client as mqtt +broker = '121.40.129.71' + +# 连接成功回调 +def on_connect(client, userdata, flags, rc,properties): + if rc.is_failure: + print(f"连接失败: {rc}. loop_forever()将重新连接") + else: + print(f'连接成功: {rc}') + client.subscribe('host_status/#') + + +def on_subscribe(client, userdata, mid, reason_code_list, properties): # 订阅回调 + if reason_code_list[0].is_failure: + print(f'订阅失败: {reason_code_list[0]}') + else: + print(f'订阅成功: {reason_code_list[0].value}') + +def on_unsubscribe(client, userdata, mid, reason_code_list, properties): # 取消订阅回调 + if len(reason_code_list) == 0 or not reason_code_list[0].is_failure: + print("取消订阅成功(if SUBACK is received in MQTTv3 it success)") + else: + print(f"取消订阅失败: {reason_code_list[0]}") + client.disconnect() # 断开连接 + +# 消息接收回调 +def on_message(client, userdata, msg): + print(msg.topic+" "+str(msg.payload)) + +mqtt = mqtt.Client(mqtt.CallbackAPIVersion.VERSION2, client_id="book_1") +mqtt.on_connect = on_connect +mqtt.on_message = on_message +mqtt.on_subscribe = on_subscribe +mqtt.on_unsubscribe = on_unsubscribe +mqtt.is_connected() + +mqtt.user_data_set(["user_data", "book_1"]) +mqtt.connect(broker, 48835, 60) + +mqtt.loop_forever() +print(f"收到以下消息: {mqtt.user_data_get()}") +# while True: +# rc = mqtt.loop(timeout=1.0) +# print(11) +# if rc != 0: +# mqtt.reconnect() + + diff --git a/publish.py b/publish.py new file mode 100644 index 0000000..d475057 --- /dev/null +++ b/publish.py @@ -0,0 +1,63 @@ +import time +import paho.mqtt.client as mqtt + +broker = '121.40.129.71' +def on_publish(client, userdata, mid, reason_code, properties): + # reason_code and properties will only be present in MQTTv5. It's always unset in MQTTv3 + print(f"mid: {mid}, reason_code: {reason_code}, properties: {properties}") # mid: 消息ID, reason_code: 返回码, properties: 属性 + +def on_connect(client, userdata, flags, rc, properties): + if rc.is_failure: + print(f"连接失败: {rc}. loop_forever()将重新连接") + else: + print(f'连接成功: {rc}') + client.subscribe('host_status/#') + +# unacked_publish = set() +mqttc = mqtt.Client(mqtt.CallbackAPIVersion.VERSION2, client_id="book_1") +mqttc.on_publish = on_publish +mqttc.on_connect = on_connect + +# mqttc.user_data_set(unacked_publish) +mqttc.connect(broker, 48835, 60) + + +# mqttc.loop_start() + +while True: + if not mqttc.is_connected(): + print("连接断开,重新连接") + mqttc.connect(broker, 48835, 60,) + + keys = input("输入任意键发送消息,输入q退出:") + if keys == 'q': + break + mqttc.loop(timeout=1.0) + # Our application produce some messages + msg_info = mqttc.publish("tts/1", keys, qos=1) + # unacked_publish.add(msg_info.mid) + + # msg_info2 = mqttc.publish("host_status", "my message2", qos=1) + # unacked_publish.add(msg_info2.mid) + + # # Wait for all message to be published + # while len(unacked_publish): + # time.sleep + +# Our application produce some messages +# msg_info = mqttc.publish("host_status", "my message", qos=1) +# # unacked_publish.add(msg_info.mid) +# +# msg_info2 = mqttc.publish("host_status", "my message2", qos=1) +# # unacked_publish.add(msg_info2.mid) + +# # Wait for all message to be published +# while len(unacked_publish): +# time.sleep(0.1) + +# Due to race-condition described above, the following way to wait for all publish is safer +# msg_info.wait_for_publish() +# msg_info2.wait_for_publish() +# +mqttc.disconnect() +mqttc.loop_stop() \ No newline at end of file diff --git a/subs.py b/subs.py new file mode 100644 index 0000000..ce881c1 --- /dev/null +++ b/subs.py @@ -0,0 +1,32 @@ +# MQTT订阅客户端 + +import paho.mqtt.client as mqtt + +broker = "121.40.129.71" + +# 连接成功回调 +def on_connect(client, userdata, flags, rc,properties): + print('Connected with result code '+str(rc)) + client.subscribe('tts/#') + +# 消息接收回调 +def on_message(client, userdata, msg): + print(msg.topic+" "+str(msg.payload)) + + +client = mqtt.Client(mqtt.CallbackAPIVersion.VERSION2, clean_session=True) + +# username = "gd32" +# password = "educoder" +# client.username_pw_set(username, password) +# 指定回调函数 +client.on_connect = on_connect +client.on_message = on_message + +# 建立连接 +client.connect(broker, 48835, 60) +# 发布消息 + +# client.publish('emqtt',payload='Hello World',qos=0) + +client.loop_forever() \ No newline at end of file diff --git a/换源.md b/换源.md new file mode 100644 index 0000000..8a73f87 --- /dev/null +++ b/换源.md @@ -0,0 +1,93 @@ +更换为国内源可以提高软件包下载速度。常用的国内源有中科大、清华大学、阿里云等。下面是将 Debian Bookworm 的源替换为国内源的步骤: + +### 步骤: + +1. **备份当前源列表(可选):** + + ```bash + sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup + ``` + +2. **编辑 `sources.list` 文件:** + + 使用你喜欢的文本编辑器(例如 `nano`、`vim` 或 `gedit`)编辑 `/etc/apt/sources.list` 文件: + + ```bash + sudo nano /etc/apt/sources.list + ``` + +3. **更新源列表内容:** + + 下面是使用清华大学的镜像源作为示例,可以将其内容粘贴到 `sources.list` 文件中: + + ```plaintext + deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main contrib non-free non-free-firmware + deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bookworm-security main contrib non-free non-free-firmware + deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-updates main contrib non-free non-free-firmware + #deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main contrib non-free non-free-firmware + #deb-src https://mirrors.tuna.tsinghua.edu.cn/debian-security bookworm-security main contrib non-free non-free-firmware + #deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-updates main contrib non-free non-free-firmware + ``` + + 其他可用的国内源示例: + + **中科大镜像源:** + + ```plaintext + deb http://mirrors.ustc.edu.cn/debian/ bookworm main contrib non-free non-free-firmware + deb http://mirrors.ustc.edu.cn/debian-security/ bookworm-security main contrib non-free non-free-firmware + deb http://mirrors.ustc.edu.cn/debian/ bookworm-updates main contrib non-free non-free-firmware + #deb-src http://mirrors.ustc.edu.cn/debian/ bookworm main contrib non-free non-free-firmware + #deb-src http://mirrors.ustc.edu.cn/debian-security/ bookworm-security main contrib non-free non-free-firmware + #deb-src http://mirrors.ustc.edu.cn/debian/ bookworm-updates main contrib non-free non-free-firmware + ``` + + **阿里云镜像源:** + + ```plaintext + deb http://mirrors.aliyun.com/debian/ bookworm main contrib non-free non-free-firmware + deb http://mirrors.aliyun.com/debian-security/ bookworm-security main contrib non-free non-free-firmware + deb http://mirrors.aliyun.com/debian/ bookworm-updates main contrib non-free non-free-firmware + #deb-src http://mirrors.aliyun.com/debian/ bookworm main contrib non-free non-free-firmware + #deb-src http://mirrors.aliyun.com/debian-security/ bookworm-security main contrib non-free non-free-firmware + #deb-src http://mirrors.aliyun.com/debian/ bookworm-updates main contrib non-free non-free-firmware + ``` + +4. **保存并退出编辑器:** + + - 如果使用 `nano`,按 `Ctrl+O` 保存文件,然后按 `Ctrl+X` 退出编辑器。 + +5. **更新软件包列表:** + + 运行以下命令来更新软件包列表: + + ```bash + sudo apt-get update + ``` + +### 验证更新 + +在运行 `sudo apt-get update` 后,你应该看到类似如下的输出,表示成功从新的软件源获取了软件包列表: + +```plaintext +Hit:1 https://mirrors.tuna.tsinghua.edu.cn/debian bookworm InRelease +Hit:2 https://mirrors.tuna.tsinghua.edu.cn/debian-security bookworm-security InRelease +Hit:3 https://mirrors.tuna.tsinghua.edu.cn/debian bookworm-updates InRelease +Reading package lists... Done +``` + +### 安装和升级软件包 + +如果需要升级所有已安装的软件包,可以运行: + +```bash +sudo apt-get upgrade +``` + +或者安装特定软件包: + +```bash +sudo apt-get install +``` + +通过这些步骤,你可以使用国内镜像源加快软件包的下载速度。 \ No newline at end of file