Skip to content

adminkk/as-sound-reminder

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AS Sound Reminder Client

基于 MQTT 协议的安圣(AnSheng)IoT 设备控制 SDK,支持云喇叭和智能开关的远程指令下发与事件监听。

功能特性

  • TTS 语音播报(文本转语音)
  • URL 音频文件播放
  • 音频控制(音量调节、暂停、停止、下一曲)
  • 智能开关控制(开关操作、延时任务)
  • 订单/充电管理任务
  • 设备配置(MQTT 参数、按键配置、自动上报)
  • 设备状态查询与事件监听

技术栈

  • Java 17
  • Spring Boot 3.2.5
  • Eclipse Paho MQTT v3 (1.2.5)
  • Jackson Databind
  • Lombok
  • Maven(多模块构建)

项目结构

as-sound-reminder/
├── as-sound-reminder-client/          # SDK 核心库
│   └── src/main/java/com/as/soundreminder/
│       ├── spi/                        # 接口定义(DeviceClient、DeviceEventListener)
│       ├── mqtt/                       # MQTT 传输层实现
│       ├── model/request/             # 请求模型
│       ├── model/response/            # 响应模型
│       ├── config/                    # 配置类
│       └── autoconfigure/             # Spring Boot 自动配置
├── as-sound-reminder-client-demo/     # 示例应用
│   └── src/main/java/com/as/soundreminder/
│       ├── config/                    # 示例配置
│       └── example/                   # 使用示例
└── pom.xml                            # 父 POM

快速开始

1. 构建项目

mvn clean install -DskipTests

2. 引入依赖

在你的 Spring Boot 项目中添加依赖:

<dependency>
    <groupId>com.as</groupId>
    <artifactId>as-sound-reminder-client</artifactId>
    <version>1.0.0-SNAPSHOT</version>
</dependency>

3. 配置 MQTT 连接

application.yml 中添加配置:

mqtt:
  broker-url: tcp://mqtt.example.com:1883
  client-id: your-client-id
  username: your-username
  password: your-password
  publish-topic: /as/sub/client-{imei}
  subscribe-topic: /as/pub/#
  default-qos: 1
  keep-alive: 30
  clean-session: true
  command-timeout-ms: 10000

4. 提供配置 Bean

@Configuration
public class MyMqttConfig extends MqttConfig {
    // 扩展自定义属性(如设备 IMEI)
}

5. 使用 DeviceClient

@Service
public class MyService {

    @Autowired
    private DeviceClient deviceClient;

    public void playTts(String imei, String text) {
        TtsPlayRequest request = TtsPlayRequest.builder()
                .text(text)
                .build();
        BaseResponse response = deviceClient.ttsPlay(imei, request);
    }
}

架构设计

请求-响应模式(基于 MQTT):

  1. 每个命令生成唯一 frameId(基于时间戳)
  2. 命令序列化为 JSON 并发布到 /as/sub/client-{imei}
  3. 客户端通过 CompletableFuture 阻塞等待响应
  4. 设备通过 /as/pub/# 返回相同 frameId 的响应
  5. MqttCallbackHandler 根据 frameId 匹配响应并完成 Future
  6. 超时时间可配置(默认 10 秒)

核心接口

类/接口 说明
DeviceClient SPI 接口,定义 30+ 设备控制方法
MqttDeviceClient DeviceClient 的 MQTT 实现
MqttGateway 管理 MQTT 连接、主题解析、待处理请求
MqttCallbackHandler 消息路由:匹配 frameId 或分发至事件监听器
DeviceEventListener 设备事件回调接口

运行示例

# 运行 Demo 应用
mvn spring-boot:run -pl as-sound-reminder-client-demo

# 运行测试
mvn test -pl as-sound-reminder-client-demo

License

Private

About

基于 MQTT 协议的安圣(AnSheng)IoT 设备控制 SDK,支持云喇叭和智能开关的远程指令下发与事件监听。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages