1. 项目背景与核心价值
宠物自助洗澡机正在成为城市养宠家庭的新宠。去年我在帮朋友调试一台进口宠物洗澡机时,发现这类设备普遍存在三个痛点:一是控制系统封闭,无法根据宠物品种调整水流参数;二是缺乏远程预约功能,高峰期排队严重;三是维护成本高,故障时需厂家专人检修。这正是我决定用Java开发开源物联网系统的初衷。
这个源码集合的核心价值在于:
- 采用模块化设计,包含洗澡机控制、用户预约、设备监控三大子系统
- 使用Spring Boot+MQTT架构,实测可承载200台设备同时在线
- 内置17种犬猫洗护方案数据库,根据宠物体重自动计算水流压力
- 提供完整的OAuth2.0鉴权方案和OpenAPI文档
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 系统架构设计解析
2.1 硬件通信层设计
洗澡机端采用STM32F407作为主控,通过ESP8266模组与云端通信。我们在Java服务端实现了两种通信方案:
java复制// 方案一:基于Netty的TCP长连接
EventLoopGroup bossGroup = new NioEventLoopGroup();
ServerBootstrap b = new ServerBootstrap();
b.group(bossGroup)
.channel(NioServerSocketChannel.class)
.handler(new LoggingHandler(LogLevel.INFO))
.childHandler(new IoTChannelInitializer());
// 方案二:MQTT协议接入
MqttClient client = new MqttClient(broker, clientId);
MqttConnectOptions connOpts = new MqttConnectOptions();
connOpts.setCleanSession(true);
client.connect(connOpts);
实测发现MQTT方案在设备频繁上下线场景下更稳定,消息送达率可达99.7%。关键配置参数包括:
| 参数 | 推荐值 | 说明 |
|---|---|---|
| QoS | 1 | 确保消息至少送达一次 |
| KeepAlive | 60s | 心跳间隔 |
| RetryInterval | 5s | 重连间隔 |
2.2 业务逻辑层实现
洗澡流程状态机是核心难点,我们采用Spring StateMachine框架建模:
java复制@Configuration
@EnableStateMachine
public class WashStateMachineConfig extends EnumStateMachineConfigurerAdapter<WashStates, WashEvents> {
