Commit bc7a7251 authored by 何金镒's avatar 何金镒

设备控制

parent 7ad22855
# mcp sse
## 智家中控屏AI集成 功能需求:
- 智能设备AI控制
通过AI语音交互,业主可以用自然语音交互的方式更加便捷快速的控制户内的智能家居设备,及楼栋单元门。
- AI生成场景
通过AI语音交互,业主可以用自然语音交互的方式更加便捷快速的控制户内的智能家居场景,并快速生成场景。
- 访客邀请
通过智慧屏/APP/小程序的AI语音交互,可实现访客邀请。访客到达社区后,无感通过社区出入口,联动道闸开启。
- 智能会所管理
通过智慧屏/APP/小程序的AI语音交互,可实现会所空间的快捷预约管理,提高会所利用率与运维效率,提升业主满意度
1、查 小区功能区列表(/third/screen/spaces/rooms)
2、查询可预约时间
2、预约付钱订单---->成功或失败
3、成功--->生产支付二维码-->支付
4、支付成功后---->提交订单(新)/third/screen/spaces/order/submit
- 机器人联动
通过智慧屏/APP/小程序的AI语音交互,可实现配送机器人/收垃圾机器人快捷预约上门服务,实现更加便捷下单,并支持语音对话。
- 社区活动推荐
主动推荐社区活动,业主可根据兴趣爱好,AI语音预约报名参加活动,增强邻里关系
- 知识库AI问答
业主可以自然语言的交互方式,语音快便捷的获取包含智能家居系统Q&A、使用说明等。
- 物业工单AI交互
业主可通过AI语音自然交互,可快速语音交互生成报事报修的工单。
## 智能家居控制
- 打开、关闭、暂停
- 调节亮度、温度、色温、音量、位置:参数是百分比,数字
- 设置模式
- 设置风速
-
## 普通灯
- 包含的设备类型operateId有:1,3,4,5,7,9,10,11,12,13,14,15,17,18,201,492,493,501
- 支持的命令有:
1、SwitchOpt(开关),对应的参数是true、false
## 调光灯(一)
- 包含的设备类型operateId有:503,504
- 支持的命令有:
1、SwitchOpt(开关),对应的参数是true、false
2、BrightnessOpt(调节亮度),对应的参数是0-100
## 调光灯(二)
- 包含的设备类型operateId有:506,507,509,510,511,517,518,701
- 支持的命令有:
1、SwitchOpt(开关),对应的参数是true、false
2、DimmerAdjustLuminance(调节亮度),对应的参数是0-100
## 调色灯
- 包含的设备类型operateId有:502
- 支持的命令有:
1、SwitchOpt(开关),对应的参数是true、false
2、DimmerAdjustLuminance(调节亮度),对应的参数是0-100
3、DimmerAdjustColor(调节色彩),对应的参数是RGB数组[ 0, 0, 0 ]
## 色温灯
- 包含的设备类型operateId有:512,513,514,515,516,519
- 支持的命令有:
1、SwitchOpt(开关),对应的参数是true、false
2、DimmerAdjustLuminance(调节亮度),对应的参数是0-100
3、AdjustColourTemperature(调节色温),对应的参数是0-100
## 色温色彩灯
- 包含的设备类型operateId有:516
- 支持的命令有:
1、SwitchOpt(开关),对应的参数是true、false
2、DimmerAdjustLuminance(调节亮度),对应的参数是0-100
3、AdjustColourTemperature(调节色温),对应的参数是0-100
4、DimmerAdjustColor(调节色彩),对应的参数是RGB数组[ 0, 0, 0 ]
## RGBW灯
- 包含的设备类型operateId有:505
- 支持的命令有:
1、SwitchOpt(开关),对应的参数是true、false
2、DimmerAdjustLuminance(调节亮度),对应的参数是0-100
3、DimmerAdjustColor(调节色彩),对应的参数是RGB数组[ 0, 0, 0 ]
4、DimmerAdjustWhiteLuminance(调节白光亮度),对应的参数是0-100
5、DimmerSetDynamicColorMode(设置动态炫彩),对应的参数是1-12
## 窗帘
- 包含的设备类型operateId有:1001,1002,1004,1005,1006,1007,1008,1009,1010,1011,1013,1014,1201
- 支持的命令有:
1、MotorOpt(开关停),对应的参数是CLOSE、OPEN、STOP
## 窗帘电机(一)
- 包含的设备类型operateId有:1003,1012,1015,1018
- 支持的命令有:
1、MotorOpt(开关停),对应的参数是CLOSE、OPEN、STOP
2、DooyaMotorSeek(移动至指定位置),对应的参数是0-100
## 窗帘电机(二)
- 包含的设备类型operateId有:1017,1203
- 支持的命令有:
1、MotorOpt(开关停),对应的参数是CLOSE、OPEN、STOP
2、MotorSeek(移动至指定位置),对应的参数是0-100
## 梦幻帘
- 包含的设备类型operateId有:1016
- 支持的命令有:
1、MotorOpt(开关停),对应的参数是CLOSE、OPEN、STOP
2、MotorSeek(移动至指定位置),对应的参数是0-100
3、CurtainAngle(调整角度),对应的参数是0-100
## 新风机
- 包含的设备类型operateId有:17131
- 支持的命令有:
1、SetDevUnit(参数设置,可设置开关 on、风速 speed、模式 mode),开关参数有true、false;风速参数有LOW、MID、HIGH、STRONG;模式参数有 INNER_CYCLE、FRESH_AIR、SLEEP,如:{"on":false,"speed":"LOW","mode":"INNER_CYCLE"}
## 中央空调
- 包含的设备类型operateId有:12010
- 支持的命令有:
1、OptCentralAcIndoorUnit(参数设置,可设置开关 on、风速 speed、模式 runModel、温度 temp),开关参数有true、false;风速参数有AUTO、LOW、MID、HIGH;模式参数有 AIR_SUPPLY、HOT、COLD、AUTO、DEHUMIDIFICATION;温度参数有16-30,步长为0.5,
如:{"on":false,"speed":"AUTO","runModel":"AIR_SUPPLY","temp":16.5}
......@@ -4,6 +4,7 @@ package com.ikonke.konkeaialibabamcp.aitools;
import com.ikonke.konkeaialibabamcp.entity.mongodb.DeviceStatus;
import com.ikonke.konkeaialibabamcp.service.SycDeviceService;
import com.ikonke.konkeaialibabamcp.service.mongdbservice.DeviceStatusService;
import com.ikonke.konkeaialibabamcp.utils.CcuUtils;
import com.ikonke.konkeaialibabamcp.utils.KonkeIotUtils;
import com.ikonke.konkeaialibabamcp.utils.WeatherUtils;
import lombok.extern.slf4j.Slf4j;
......@@ -30,7 +31,7 @@ public class DeviceTools {
public DeviceStatus findDeviceState(@ToolParam(description = "主机号") String ccuName,
@ToolParam(description = "设备ID") Integer devId) {
log.info("根据主机号和设备ID查询设备状态信息....ccuName:{},devId:{}",ccuName,devId);
return deviceStatusUtil.findUserByUserId(ccuName, devId);
return deviceStatusUtil.findUserByUserId(CcuUtils.getCcuName(ccuName), devId);
}
@Tool(description = "根据主机号和设备ID控制打开设备")
......@@ -38,20 +39,20 @@ public class DeviceTools {
@ToolParam(description = "设备ID")String devId,
@ToolParam(description = "设备类型")String operateId){
log.info("根据主机号和设备ID控制打开设备....ccuName:{},devId:{},operateId:{}",ccuName,devId,operateId);
return konkeIotServer.optDeviceOpen(ccuName, devId, operateId);
return konkeIotServer.optDeviceOpen(CcuUtils.getCcuName(ccuName), devId, operateId);
}
@Tool(description = "根据主机号和设备ID控制关闭设备")
public String optDeviceClosed(@ToolParam(description = "主机号")String ccuName,
@ToolParam(description = "设备ID")String devId,
@ToolParam(description = "设备类型")String operateId){
log.info("根据主机号和设备ID控制关闭设备....ccuName:{},devId:{},operateId:{}",ccuName,devId,operateId);
return konkeIotServer.optDeviceClosed(ccuName, devId, operateId);
return konkeIotServer.optDeviceClosed(CcuUtils.getCcuName(ccuName), devId, operateId);
}
@Tool(description = "根据主机号同步设备")
public boolean synchronousDevice(@ToolParam(description = "主机号")String ccuName){
log.info("根据主机号同步设备....ccuName:{}",ccuName);
return sycDeviceService.synchronousDevice(ccuName);
return sycDeviceService.synchronousDevice(CcuUtils.getCcuName(ccuName));
}
......
......@@ -36,8 +36,9 @@ public class SycDeviceService {
wrapper.eq("ccuId", ccuName);
List<SynDevice> list = synDeviceService.list(wrapper);
JSONArray jsonArray = new JSONArray();
JSONArray jsonArray = null;
if(!list.isEmpty()){
jsonArray = new JSONArray();
for (SynDevice synDevice : list) {
JSONObject jsonObject = new JSONObject();
jsonObject.set("deviceId", synDevice.getDeviceId());
......
package com.ikonke.konkeaialibabamcp.utils;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.StrUtil;
public class CcuUtils {
public static String getCcuName(String ccuName) {
if(StrUtil.isBlank(ccuName)){
return null;
}else if(StrUtil.startWith(ccuName, "CCU_")){
return ccuName;
}else if(StrUtil.startWith(ccuName, "ccu_")){
return StrUtil.swapCase(ccuName);
}else if(NumberUtil.isNumber(ccuName)){
return "CCU_"+ccuName;
}
return null;
}
}
package com.ikonke.konkeaialibabamcp;
import com.ikonke.konkeaialibabamcp.utils.CcuUtils;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
......@@ -8,6 +9,7 @@ class KonkeAiAlibabaMcpApplicationTests {
@Test
void contextLoads() {
System.out.println(CcuUtils.getCcuName("CCU_12345"));
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment