『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 1753|回复: 4

[技术探讨] 怎么获取mqtt主题中的特定字符???

[复制链接]

1

主题

21

帖子

456

积分

中级会员

Rank: 3Rank: 3

积分
456
金钱
435
HASS币
0
发表于 2023-7-26 21:23:03 | 显示全部楼层 |阅读模式
我有一个zigbee的旋钮开关通过zigbee2mqtt接入到HA里, 接入后发现zigbee2mqtt只能识别到一些动作, 通过查看日志发现旋钮开关还额外发送了一些信息, 这些信息正是需要的, 然后想从mqtt的主题信息中提取这些特定字符串作为自动化的触发条件, 目前不知道如何提取.

zigbee2mqtt发送的信息文本如下:
Zigbee2MQTT:info  2023-07-26 19:29:03: MQTT publish: topic 'zigbee2mqtt/旋钮开关', payload '{"action":"rotate","action_direction":"clockwise","action_number":12,"battery":85,"direction":null,"linkquality":112,"update":{"installed_version":18,"latest_version":26,"state":"available"},"update_available":true}'

我需要提取的是主题:'zigbee2mqtt/旋钮开关'中的"action_direction":"clockwise"这一字段作为触发条件, 不知道是否可以实现, 是否可以填入通配符来实现,可以的话通配符的符号是什么呢? 不知道有没有熟悉的大佬可以指教一下.

截屏2023-07-26 21.19.28.png

回复

使用道具 举报

47

主题

1657

帖子

6692

积分

论坛元老

Rank: 8Rank: 8

积分
6692
金钱
5025
HASS币
40
发表于 2023-7-26 21:34:26 | 显示全部楼层
直接用nr
折腾精神永存,感恩感谢论坛每一位愿意分享和帮助过我的大佬,论坛有你更精彩
回复

使用道具 举报

1

主题

21

帖子

456

积分

中级会员

Rank: 3Rank: 3

积分
456
金钱
435
HASS币
0
 楼主| 发表于 2023-7-26 21:59:08 | 显示全部楼层

谢谢, 为了一个功能不大想再去安装另外一个插件.  如果真解决不了我再安装nr来实现自动化.
回复

使用道具 举报

18

主题

587

帖子

4289

积分

元老级技术达人

积分
4289
金钱
3667
HASS币
182
发表于 2023-7-27 07:48:59 | 显示全部楼层
回复

使用道具 举报

0

主题

31

帖子

1039

积分

金牌会员

Rank: 6Rank: 6

积分
1039
金钱
1008
HASS币
0
发表于 2023-7-27 09:24:09 | 显示全部楼层
本帖最后由 eggie 于 2023-7-27 09:28 编辑

从 MQTT 消息中提取特定字段的值需要对消息进行解析和处理。你可以使用编程语言中的 JSON 解析器来解析 Zigbee2MQTT 发送的 JSON 格式的消息,然后提取action_direction字段的值。

在大多数编程语言中,你可以使用内置的 JSON 解析器或第三方 JSON 库来解析 JSON 格式的数据。以下是一个 Python 代码示例,用于提取 MQTT 消息中的action_direction字段的值:
import json

# 假设以下是从 MQTT 中接收到的消息
mqtt_message = '{"action":"rotate","action_direction":"clockwise","action_number":12,"battery":85,"direction":null,"linkquality":112,"update":{"installed_version":18,"latest_version":26,"state":"available"},"update_available":true}'

# 将 JSON 格式的消息解析成 Python 字典
message_dict = json.loads(mqtt_message)

# 提取 action_direction 字段的值
action_direction = message_dict.get("action_direction")

print(action_direction)  # 输出: 'clockwise'

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-27 03:47 , Processed in 0.261538 second(s), 29 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表