pushdeer/other_devices/README.md
2022-02-16 18:57:15 +08:00

3.0 KiB
Raw Blame History

使用MQTT接受PushDeer推送的消息

PushDeer自架版支持通过MQTT协议向兼容的设备以下简称设备发送信息其主要工作原理是

  1. 自架版docker-compose文件中预置了MQTT服务器手动开启后设备可以通过配置的端口连接到服务器
  2. 设备通过订阅主题实时获得消息文字类型text/markdown消息主题为{{pushkey}}_text 图片类型的主题为{{pushkey}}_bg_url

开启MQTT服务

修改根目录下的 docker-compose.self-hosted.yml:

  app:
    #image: 'webdevops/php-apache:8.0-alpine'
    build: './docker/web/'
    ports:
      - '8800:80'
    volumes:
      - './:/app'
    depends_on:
      - mariadb
      - redis
    environment:
      - DB_HOST=mariadb
      - DB_PORT=3306
      - DB_USERNAME=root
      - DB_DATABASE=pushdeer
      - DB_PASSWORD=theVeryp@ssw0rd
      - GO_PUSH_IOS_TOPIC=com.pushdeer.self.ios
      - GO_PUSH_IOS_CLIP_TOPIC=com.pushdeer.self.ios.Clip
      - APP_DEBUG=false
      - MQTT_API_KEY=9LKo3
      - MQTT_ON=false <---- 这里改为 true 
      # 下边去掉注释
  # mqtt:
  #   image: 'ccr.ccs.tencentyun.com/ftqq/pushdeeresp'
  #   ports:
  #     - '1883:1883'
  #   environment:
  #     - API_KEY=9LKo3 <---- 这里和上边的MQTT_API_KEY值一致
  #     - MQTT_PORT=1883
  #     - MQTT_USER=easy <---- 自己起一个用户名
  #     - MQTT_PASSWORD=y0urp@ss <---- 自己起一个密码
  #     - MQTT_BASE_TOPIC=default  

修改完成后类似:

      - MQTT_API_KEY=2134grt
      - MQTT_ON=true
  mqtt:
    image: 'ccr.ccs.tencentyun.com/ftqq/pushdeeresp'
    ports:
      - '1883:1883'
    environment:
      - API_KEY=2134grt
      - MQTT_PORT=1883
      - MQTT_USER=mynameisLili
      - MQTT_PASSWORD=howoldareU
      - MQTT_BASE_TOPIC=default  

再通过以下命令启动服务:

docker-compose -f docker-compose.self-hosted.yml up --build -d

连接示例

这里以上边的设置为例详细说明MQTT连接中用到的值假设你的PushkeyPDU01234,那么:

  1. MQTT服务器的IP为你架设PushDeer服务的IP注意127.0.0.1和localhost是环回地址如果想其他设备能连接至少需要局域网IP设备在同一个局域网里或者公网IP。
  2. MQTT用户名为mynameisLili MQTT_USER
  3. MQTT密码为howoldareUMQTT_PASSWORD

有了上边三个信息你就可以连接上MQTT服务了。如果你不想要访问权限控制可以这样

      - MQTT_USER=
      - MQTT_PASSWORD=

连上服务器以后,还需要知道topic才能接收消息,你可以把它当成消息分组名称,只有订阅了这个分组,才能收到对应的消息。

当设置 MQTT_ON=true 以后在发送信息时PushDeer会抄送一份给MQTT这样连接着的设备就可以收到消息了。为了方便设备进行消息处理我们分两个分组抄送信息

  1. text/markdown类型的消息会通过PDU01234_text发送
  2. image类型的消息会通过PDU01234_bg_url发送