精华内容
下载资源
问答
  • 自定义MQTT Topic通信更新时间:2018-10-23 21:23:52Android SDK 提供了与云端长链接的基础能力接口,用户可以直接使用这些接口完成自定义 Topic 相关的功能。提供的基础能力包括:发布、订阅、取消订阅、RRPC、订阅...

    自定义MQTT Topic通信

    更新时间:2018-10-23 21:23:52

    Android SDK 提供了与云端长链接的基础能力接口,用户可以直接使用这些接口完成自定义 Topic 相关的功能。提供的基础能力包括:发布、订阅、取消订阅、RRPC、订阅下行。如果不想使用物模型,可以通过这部分接口实现云端数据的上下行。

    上行接口请求

    调用上行请求接口,SDK封装了上行发布、订阅和取消订阅等接口。

    /**

    * 发布

    *

    * @param request 发布请求

    * @param listener 监听器

    */

    void publish(ARequest request, IConnectSendListener listener);

    /**

    * 订阅

    *

    * @param request 订阅请求

    * @param listener 监听器

    */

    void subscribe(ARequest request, IConnectSubscribeListener listener);

    /**

    * 取消订阅

    *

    * @param request 取消订阅请求

    * @param listener 监听器

    */

    void unsubscribe(ARequest request, IConnectUnscribeListener listener);

    调用示例:

    // 发布

    MqttPublishRequest request = new MqttPublishRequest();

    request.isRPC = false;

    request.topic = topic;

    request.payloadObj = data;

    LinkKit.getInstance().publish(request, new IConnectSendListener() {

    @Override

    public void onResponse(ARequest aRequest, AResponse aResponse) {

    // 发布成功

    }

    @Override

    public void onFailure(ARequest aRequest, AError aError) {

    // 发布失败

    }

    });

    // 订阅

    MqttSubscribeRequest subscribeRequest = new MqttSubscribeRequest();

    subscribeRequest.topic = subTopic;

    subscribeRequest.isSubscribe = true;

    LinkKit.getInstance().subscribe(subscribeRequest, new IConnectSubscribeListener() {

    @Override

    public void onSuccess() {

    // 订阅成功

    }

    @Override

    public void onFailure(AError aError) {

    // 订阅失败

    }

    });

    // 取消订阅

    MqttSubscribeRequest unsubRequest = new MqttSubscribeRequest();

    unsubRequest.topic = unSubTopic;

    unsubRequest.isSubscribe = false;

    LinkKit.getInstance().unsubscribe(unsubRequest, new IConnectUnscribeListener() {

    @Override

    public void onSuccess() {

    // 取消订阅成功

    }

    @Override

    public void onFailure(AError aError) {

    // 取消订阅失败

    }

    });

    下行数据监听

    下行数据监听可以通过 RRPC 方式或者注册一个下行数据监听器实现。

    /**

    * RRPC 接口

    *

    * @param request RRPC 请求

    * @param listener 监听器

    */

    void subscribeRRPC(ARequest request, IConnectRrpcListener listener);

    /**

    * 注册下行数据监听器

    *

    * @param listener 监听器

    */

    void registerOnPushListener(IConnectNotifyListener listener);

    /**

    * 取消注册下行监听器

    *

    * @param listener 监听器

    */

    void unRegisterOnPushListener(IConnectNotifyListener listener);

    调用示例(数据监听):

    // 下行数据监听

    IConnectNotifyListener onPushListener = new IConnectNotifyListener() {

    @Override

    public void onNotify(String connectId, String topic, AMessage aMessage) {

    // 下行数据通知

    }

    @Override

    public boolean shouldHandle(String connectId, String topic) {

    return true; // 是否需要处理 该 topic

    }

    @Override

    public void onConnectStateChange(String connectId, ConnectState connectState) {

    // 连接状态变化

    }

    };

    // 注册

    LinkKit.getInstance().registerOnPushListener(onPushListener);

    // 取消注册

    LinkKit.getInstance().unRegisterOnPushListener(onPushListener);

    调用示例(RRPC):

    final MqttRrpcRegisterRequest registerRequest = new MqttRrpcRegisterRequest();

    registerRequest.topic = rrpcTopic;

    registerRequest.replyTopic = rrpcReplyTopic;

    registerRequest.payloadObj = payload;

    // 先订阅回复的 replyTopic

    // 云端发布消息到 replyTopic

    // 收到下行数据 回复云端 具体可参考 Demo 同步服务调用

    LinkKit.getInstance().subscribeRRPC(registerRequest, new IConnectRrpcListener() {

    @Override

    public void onSubscribeSuccess(ARequest aRequest) {

    // 订阅成功

    }

    @Override

    public void onSubscribeFailed(ARequest aRequest, AError aError) {

    // 订阅失败

    }

    @Override

    public void onReceived(ARequest aRequest, IConnectRrpcHandle iConnectRrpcHandle) {

    // 收到云端下行

    AResponse response = new AResponse();

    response.data = responseData;

    iConnectRrpcHandle.onRrpcResponse(registerRequest.topic, response);

    }

    @Override

    public void onResponseSuccess(ARequest aRequest) {

    // RRPC 响应成功

    }

    @Override

    public void onResponseFailed(ARequest aRequest, AError aError) {

    // RRPC 响应失败

    }

    });

    展开全文
  • * MQTT messages can be received by an MQTT client in topic "{base_topic}/bedroom/lamps/1" * MQTT messages can't be forwarded to the device with friendly name of "bedroom/lamps/1" ...
  • <div><p>Added MQTT topic configuration option as discussed in #38 </p><p>该提问来源于开源项目:espruino/EspruinoHub</p></div>
  • <p>The old emonHub MQTT topic structure posting a CSV with all the keys for a particular node to topic <code>emonhub/rx/[NODEID]/values</code>. This is not following MQTT recommended practices and ...
  • Region labels in MQTT topic

    2020-11-20 23:21:43
    <p>It would be useful to distinguish between regions in the MQTT topic so that the same camera can trigger multiple different actions. Thanks :) <p>Blake wrote: <p>Tripwires and similar features will...
  • MQTT Topic Mijia Thermostat

    2020-11-29 19:10:13
    <div><p>I reccive 3 different messages from my Mijia thermostats with the same MQTT topic: <pre><code> home/OpenMQTTGateway_ESP8266_BLE/BTtoMQTT/[MAC] { "hum" : 52.9, "tem" : 22.6 } ...
  • MQTT topic匹配规则

    2020-05-17 00:37:56
    MQTT topic匹配规则 原文连接: https://blog.csdn.net/JiangCheng817/article/details/81333893 内容: 主题层级分隔符 “/”: 表示层级关系 单层通配符 “+”: 订阅消息时使用,匹配一层主题如 a/+ 匹配诸如 a/b a/...

    MQTT topic匹配规则

    原文连接:

    https://blog.csdn.net/JiangCheng817/article/details/81333893

    内容:

    主题层级分隔符 “/”:
    表示层级关系
    单层通配符 “+”:
    订阅消息时使用,匹配一层主题如 a/+ 匹配诸如 a/b a/c 但是不能匹配 a/b/c,特别的单独的+可以匹配所有单层主题
    多层通配符”#”:
    订阅消息时使用,匹配零或层主题如 a/# 匹配诸如 a/b a/b/c a ,特别的#单独使用匹配所有。

    注:使用通配符时需要保证创建的policy里有相应规则的topic,比如a/+(设为只订阅),如果没有是无法在连接时通过订阅a/+匹配到该policy里其他相关的诸如a/b a/c等主题

    展开全文
  • platform: mqtt topic: testrfid - payload: Adminchip platform: mqtt topic: testrfid condition: [] action: - data: entity_id: switch.marlon_deckenlampe service: switch.toggle </code></pre>该...
  • MQTT topic匹配规则基础1.主题层级分隔符—“/”:用于分割主题层级,/分割后的主题,这是消息主题层级设计中很重要的符号e.g:aaaa/bbbb和 aaaa/bbbb/cccc 和aaaa/bbbb/cccc/dddd ,这样的消息主题格式,是一个层层...

    MQTT topic匹配规则基础

    1.主题层级分隔符—“/”:

    用于分割主题层级,/分割后的主题,这是消息主题层级设计中很重要的符号

    e.g:aaaa/bbbb和 aaaa/bbbb/cccc 和aaaa/bbbb/cccc/dddd ,这样的消息主题格式,是一个层层递进的关系,可通过多层通配符同时匹配两者,或者单层通配符只匹配一个。 这在现实场景中,可以应用到:公司的部门层级推送、国家城市层级推送等包含层级关系的场景。

    2.单层通配符—-“+”:

    单层通配符只能匹配一层主题。e.g: aaaa/+ 可以匹配 aaaa/bbbb ,但是不能匹配aaaa/bbbb/cccc。 单独的+号可以匹配单层的所有推送

    3.多层通配符—-“#”:

    #:多层通配符,多层通配符可以匹配于多层主题。比如: aaaa/# 不但可以匹配aaaa/bbbb,还可以匹配aaaa/bbbb/cccc/dddd。 也就是说,多层通配符可以匹配符合通配符之前主题层级的所有子集主题。单独的#匹配所有的消息主题.

    4.通配符 —-“$”:

    通配符“$”表示匹配一个字符,只要不是放在主题的最开头,即:

    $xx/$xx/xx$

    其它情况下都表示匹配一个字符。

    如果客户端想同时接受以 “SYS/”开头主题的消息和不以 开头主题的消息, 它需要同时订阅 “#” 和 ““$SYS/#”。

    5.总结:

    a、所有的主题名和主题过滤器必须至少包含一个字符b、主题名或主题过滤器以前置或后置斜杠 “/” 区分c、只包含斜杠 “/” 的主题名或主题过滤器是合法的d、主题名和主题过滤器是 UTF-8 编码字符串, 它们不能超过 65535 字节e、主题名和主题过滤器是区分大小写的注: 单层通配符和多层通配符只能用于订阅(subscribe)消息而不能用于发布(publish)消息,层级分隔符两种情况下均可使用

    MQTT topic 设计实践:

    不要在最前面加/比如:/home/device/light, 等于在最前面有一个空字符串层级,这完全没有必要而且增加了broker之类的处理,home/device/light才是合理的。就使用英文+数字字符,不要使用空格、特殊字符这些都会增加处理的复杂性,有时候还会有兼容性问题将设备ID或识别码包含在topic中多方面原因:便于订阅特定设备、便于后续的过滤、便于权限控制不要在运行中创建 topic这个好理解,交流还是有预期比较好。在规模较大的系统中,随意的创建 topic 会导致维护困难、处理复杂度增加,最主要的肯定非常容易导致遗漏和未知行为。命名简单明确太长了看太累,看不懂会困惑,太累或困惑都容易出错;topic 应该尽可能细致,能详细定位到不同的设备和消息

    Mosquitto 系统topic功能

    mosquitto的系统topic主要是以$SYS开头的topic,这些topic只能mosquitto自己发送,客户端只能订阅,无法发送;mosquitto的系统topic主要用于mosquitto对外发布一些自身状态的消息,例如当前客户端连接数量等等,如下所示:

    当前mosquitto维持的客户端数量:$SYS/broker/clients/total

    当前mosquitto维护的活跃的客户端数量:$SYS/broker/clients/inactive等等;

    展开全文
  • <p>If a protocol does not have channels, then the random ID is used in generating the MQTT topic. It's likely more useful, if the channel value is set to "0" in that case or is omitted ...
  • <div><ul><li>attributes MQTT topic with statistics and consumables status</li><li>json_attributes to Home Assistant autodiscovery</li><li>check for differences with previous MQTT messages, to prevent ...
  • Can I send a class of devices to a MQTT Topic?Instead of sending all the devices under one tenant to a MQTT Topic. Because i have so many getways in a tenant .</p><p>该提问来源于开源项目:...
  • MQTT topic规则和经验

    2021-02-25 08:35:58
    MQTT topic匹配规则基础 1.主题层级分隔符—“/”: 用于分割主题层级,/分割后的主题,这是消息主题层级设计中很重要的符号 e.g:aaaa/bbbb和 aaaa/bbbb/cccc 和aaaa/bbbb/cccc/dddd ,这样的消息主题格式,是一...

    MQTT topic匹配规则基础

    1.主题层级分隔符—“/”:

    用于分割主题层级,/分割后的主题,这是消息主题层级设计中很重要的符号

    e.g:aaaa/bbbb和 aaaa/bbbb/cccc 和aaaa/bbbb/cccc/dddd ,这样的消息主题格式,是一个层层递进的关系,可通过多层通配符同时匹配两者,或者单层通配符只匹配一个。 这在现实场景中,可以应用到:公司的部门层级推送、国家城市层级推送等包含层级关系的场景。

    2.单层通配符—-“+”:

    单层通配符只能匹配一层主题。e.g: aaaa/+ 可以匹配 aaaa/bbbb ,但是不能匹配aaaa/bbbb/cccc。 单独的+号可以匹配单层的所有推送

    3.多层通配符—-“#”:

    #:多层通配符,多层通配符可以匹配于多层主题。比如: aaaa/# 不但可以匹配aaaa/bbbb,还可以匹配aaaa/bbbb/cccc/dddd。 也就是说,多层通配符可以匹配符合通配符之前主题层级的所有子集主题。单独的#匹配所有的消息主题.

    4.通配符 —-“$”:

    通配符“$”表示匹配一个字符,只要不是放在主题的最开头,即:

    $xx/$xx/xx$

    其它情况下都表示匹配一个字符。

    如果客户端想同时接受以 “SYS/”开头主题的消息和不以 开头主题的消息, 它需要同时订阅 “#” 和 ““$SYS/#”。

    5.总结:

    a、所有的主题名和主题过滤器必须至少包含一个字符

    b、主题名或主题过滤器以前置或后置斜杠 “/” 区分

    c、只包含斜杠 “/” 的主题名或主题过滤器是合法的

    d、主题名和主题过滤器是 UTF-8 编码字符串, 它们不能超过 65535 字节

    e、主题名和主题过滤器是区分大小写的

    f、单层通配符和多层通配符只能用于订阅(subscribe)消息而不能用于发布(publish)消息,层级分隔符两种情况下均可使用

     

    MQTT topic 设计经验:

    a、不要在最前面加/比如:/home/device/light, 等于在最前面有一个空字符串层级,这完全没有必要而且增加了broker之类的处理,home/device/light才是合理的。

    b、就使用英文+数字字符,不要使用空格、特殊字符这些都会增加处理的复杂性,有时候还会有兼容性问题

    c、将设备ID或识别码包含在topic中多方面原因:便于订阅特定设备、便于后续的过滤、便于权限控制

    d、不要在运行中创建 topic这个好理解,交流还是有预期比较好。在规模较大的系统中,随意的创建 topic 会导致维护困难、处理复杂度增加,最主要的肯定非常容易导致遗漏和未知行为。

    e、命名简单明确太长了看太累,看不懂会困惑,太累或困惑都容易出错;

    f、topic 应该尽可能细致,能详细定位到不同的设备和消息

     

    展开全文
  • <p>My problem is that all sensor are published on a single MQTT topic. Example with 2 different sensor devices: <pre><code> rf433gwOpenMQTTGateway/PilighttoMQTT {"message":{"unit":...
  • I want save body MQTT topic to mysql. <p>How to implement this in mqttwarn.ini ? <p>My mqttwarn.ini: <pre><code> [defaults] hostname = 'localhost' port = 1883 ; name the service ...
  • No Map Data on MQTT topic

    2020-12-30 12:48:05
    <p>When I listend to mqtt topic "valetudo/#" I can see status messages but can't get no map data: <code>Message 14 received on valetudo/tachikoma/state at 9:02 PM: { "state": "...
  • <div><p>As requested by , include the summer mode in the <code>thermostat_data</code> MQTT topic for RC35/30 type models. <p>Question: how best to represent this? 1. program=summer | holiday 2. ...
  • MQTT Topic通配符 一、MQTT Topic匹配规则基础 1. 主题层级分隔符—“/” 用于分割主题层级 2.单层通配符—“+” 单层通配符只能匹配一层主题 3.多层通配符—“#” 多层通配符,多层通配符可以匹配于多层主题 二、...
  • MQTT topic设计

    千次阅读 2019-03-29 19:49:56
    翻译自:https://harizanov.com/2014/09/mqtt-topic-tree-structure-improvements/ 我已经很久没有对我的旧MQTT主题树结构感到不满,并对如何改进它做了一些思考/研究。谷歌向我指出了Tinkerman关于类似主题的文章...
  • MQTT Topic / Message

    2020-12-09 00:21:06
    <p>What is the exact topic that I should use in order for kapua, ActiveMQ, to accept it? <p>Probably something like #account/client-id/etc…. <p>Thanks, Tissa.</p><p>该提问来源于开源项目:...
  • <div><p>Within 1.9.5 (master), can it be that the MQTT topic: home/ems-esp/start isn't send or filled with old data after reboot/system start? Was introduced with #348 (retain flag) <p>Isn't ...
  • <div><p>In the demo application, if the MQTT topic is freertos/demos/echo, it works fine. But if I change the topic name(echoTOPIC_NAME) : freertos/demos/eche or freertos/demos/echod or "test"...
  • part of the mqtt topic but still have a name and location set for when changing things inside the z2m web interface. <p>So the topic would look like `///... <p><strong>Describe the solution you&#...
  • <p>Mqtt topic and data is received as expected, checked in mqtt-explorer. <pre><code> current_temperature_topic: "ems-esp/dallassensor_data" current_temperature_template: "{<!-- -->{ ...
  • <div><p>http://mqtt.org/wiki/doku.php/topic_format</p> <p>It seems like Mosca/MQTT.js support the "+" wildcard but the "#" wildcard does not seem to work on subscribing to a topic....
  • No Response to MQTT topic

    2020-12-02 12:01:02
    <div><p>can anyone give the list of mqtt topics from espurna? <p>i am trying to get it to work without succes. relay? state_topic: '/Hostname/Client ID/relay/0' command_topic: '/Hostname...
  • <div><p>I am using node-red to controle zigbee devices, it would be nice if I could have two topics when communicating with zigbee2mqtt. <p>One topic where I could send my request to (ex. mqtt2zigbee...
  • <p>This is done by calling <code>rabbit_access_control:check_resource_access</code> using the new resource kind of <code>mqtt_topic</code>. This works fine with the <code>internal</code> and <code>...
  • <p>It would be good to be able to set the MQTT base_topic to match the one used in Zigbee2MQTT's config.</p><p>该提问来源于开源项目:yllibed/Zigbee2MqttAssistant</p></div>

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,872
精华内容 1,548
关键字:

mqtttopic