星期三, 一月 8日 2020, 8:48 早上

本文作者:[wangwenhai] # 概要:本文主要讲一下刚接触EMQ的时候遇到的一些新手问题,这些问题每天都有人问,但是没人总结,故抽空总结一下,以便后人翻阅.

1.概述

相信很多朋友在初次接触EMQ的时候,都会有一些基础问题,什么端口在哪?还有API怎么调用等等,每天都在群里看到新人问,为了方便大家统一查阅,我专门整理了个文档来记录下来.

2.问答

下面这些是起步的时候遇到的基础问题:

  1. EMQ怎么下载?

    下载地址:https://www.emqx.io/cn/downloads

    image-20200108090253684

    版本选择:

    • 如果你是个人用户,建议下载Broker;

    • 如果是企业用户,建议下载Enterprise.

  2. EMQ在windows怎么启动?

    ​ 根据这两年的研究和使用,我自己发现在windows下启动的时候很不友好,有时候经常启动失败,我总结的办法是:当输入:emqx start的时候,会卡住比较久,在这个时候Ctrl+C取消,然后再来一遍,可能就成功了,总之在windows下启动不太理想,建议用linux或者WSL也可以.

  3. 为何我的WEB控制台报404?

    ​ EMQ的WEB控制台的端口默认是8080,如果你事先已经占用了8080,比如启动了tomcat,请先去看下是不是冲突了,这种情况大部分是端口冲突.

  4. 为何我的WEB控制台启动不了?

    ​ 原因同上面第三点,端口冲突.

  5. 怎么设置WEB界面为中文?

    image-20200108090839669

  6. WEB界面的管理员账号怎么设置?

    image-20200108090915883

下面这些在使用过程中遇到的:

  1. 为何我的MQTT客户端连接不了EMQ?

    请检查端口是否是1883,或者看看EMQ启动成功了没.

  2. 为何我改了XXX配置还是不行?

    EMQ的配置修改了以后需要重启才能加载进内存.

  3. 为何我的Mysql插件配置成功了但是还是没有效果?

    EMQ的匿名连接默认是开的,也就是默认不需要认证,如果开启Mysql认证插件,就需要配合关闭匿名,具体操作如下:

    • 打开emqx.conf,关闭匿名模式,大概在410行的位置处,把【anonymous=true】改成【anonymous=false】;

    • 在大约415行处【acl_nomatch = allow】改成【acl_nomatch = deny】;

    • 如果需要严格约束,可以配置当ACL不匹配的时候拒绝连接:445行的【acl_deny_action=ignore】改为【acl_deny_action=disconnect】。

  4. 为何我的Mysql认证插件老是拒绝连接?

    检查密码的加密方式是不是有问题.

  5. 为何我的WebHook插件没有效果?

    有2种情况:

    • URL配置错误,倒是webhook请求不到
    • webhook压根没启动
  6. 怎么监控设备上下线?

    目前有2种形式:

    1. 用一个MQTT客户端订阅下面的两个topic:

      主题(Topic) 说明
      ${clientid}/connected 上线事件。当某客户端上线时,会发布该消息
      ${clientid}/disconnected 下线事件。当某客户端离线时,会发布该消息
      • ‘connected’ 事件消息的 Payload 可解析成 JSON 格式:
      {
          "clientid":"id1",
          "username":"u",
          "ipaddress":"127.0.0.1",
          "connack":0,
          "ts":1554047291,
          "proto_ver":3,
          "proto_name":"MQIsdp",
          "clean_start":true,
          "keepalive":60
      }
      • ‘disconnected’ 事件消息的 Payload 可解析成 JSON 格式:
      {
          "clientid":"id1",
          "username":"u",
          "reason":"normal",
          "ts":1554047291
      }
    2. 用WebHook插件:

      WebHook 插件

      emqx_web_hook 插件可以将所有 EMQ X 的事件及消息都发送到指定的 HTTP 服务器。

      配置 WebHook 插件

      • etc/plugins/emqx_web_hook.conf:
      ## 回调的 Web Server 地址
      web.hook.api.url = http://127.0.0.1:8080
      
      ## 编码 Payload 字段
      ## 枚举值: undefined | base64 | base62
      ## 默认值: undefined (不进行编码)
      ## web.hook.encode_payload = base64
      
      ## 消息、事件配置
      web.hook.rule.client.connected.1     = {"action": "on_client_connected"}
      web.hook.rule.client.disconnected.1  = {"action": "on_client_disconnected"}
      web.hook.rule.client.subscribe.1     = {"action": "on_client_subscribe"}
      web.hook.rule.client.unsubscribe.1   = {"action": "on_client_unsubscribe"}
      web.hook.rule.session.created.1      = {"action": "on_session_created"}
      web.hook.rule.session.subscribed.1   = {"action": "on_session_subscribed"}
      web.hook.rule.session.unsubscribed.1 = {"action": "on_session_unsubscribed"}
      web.hook.rule.session.terminated.1   = {"action": "on_session_terminated"}
      web.hook.rule.message.publish.1      = {"action": "on_message_publish"}
      web.hook.rule.message.deliver.1      = {"action": "on_message_deliver"}
      web.hook.rule.message.acked.1        = {"action": "on_message_acked"}
  7. 怎么监控设备发送的数据?

    可以和第八点一样的形式,或者使用规则引擎

下面这些是比较高级的使用:

  1. 怎么让我的XXX设备通过MQTT协议把数据上报到EMQ?

    让设备作为一个客户端,然后向一个topic发送数据即可.

  2. 怎么设计一个简单的物联网平台?

    设计一个平台比较复杂,没有能分分钟完成的,建议先参考同类,总结需求再提出设计方案..

    欢迎加入QQ群进行讨论:475512169

3.建议

建议大家多阅读文档,最好是通读一遍,大概有个印象,每次遇到问题就能直接去查阅,而不是反反复复的问问题,其实每个问题都是很多人重复问过的.

4.总结

本文总结了一些EMQ的新手使用问题.



EMQX  

erlang emqx

本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!

 目录

物联网技术开发交流QQ群

友情链接

TTalk.im
MAIN.RUN