From f11eb1911b5e85a7dc88914aa05d15cb1bb02ef4 Mon Sep 17 00:00:00 2001 From: sdvdxl Date: Wed, 12 May 2021 10:22:09 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=8D=87=E7=BA=A7=20gateway=20=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E4=B8=BA2.0.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: sdvdxl --- pom.xml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index af9b16f..7e0020f 100644 --- a/pom.xml +++ b/pom.xml @@ -14,6 +14,7 @@ 8 8 + 2.0.0 @@ -28,13 +29,13 @@ me.hekr.iotos.softgateway framework-core - 0.0.1 + ${iotos.softgateway.version} me.hekr.iotos.softgateway framework-network-udp - 0.0.1 + ${iotos.softgateway.version} -- Gitee From 7d92dd40fc67f5c14b4d5b8d507f9d3a68339d9f Mon Sep 17 00:00:00 2001 From: sdvdxl Date: Wed, 12 May 2021 12:50:37 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=8E=A7=E5=88=B6?= =?UTF-8?q?=E9=80=BB=E8=BE=91=EF=BC=9B=20=E6=B7=BB=E5=8A=A0=E4=BA=A7?= =?UTF-8?q?=E5=93=81=E5=8D=8F=E8=AE=AE=EF=BC=8C=E8=BF=9C=E7=A8=8B=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E7=AD=89=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/iotos-soft-gateway-demo.iml | 6 ++-- ...\347\211\251\346\250\241\345\236\213.json" | 1 + ...4\347\250\213\351\205\215\347\275\256.txt" | 2 ++ pom.xml | 2 +- .../subsystem/dto/RadioDevice.java | 18 +++++++++-- .../DemoSubSystemCommandServiceImpl.java | 13 +++++--- .../subsystem/service/UdpServerService.java | 30 ++++++++----------- 7 files changed, 44 insertions(+), 28 deletions(-) create mode 100644 "docs/\345\255\220\347\263\273\347\273\237\346\265\213\350\257\225demo\347\211\251\346\250\241\345\236\213.json" create mode 100644 "docs/\347\275\221\345\205\263\350\277\234\347\250\213\351\205\215\347\275\256.txt" diff --git a/.idea/iotos-soft-gateway-demo.iml b/.idea/iotos-soft-gateway-demo.iml index e53dca1..d2c34ec 100644 --- a/.idea/iotos-soft-gateway-demo.iml +++ b/.idea/iotos-soft-gateway-demo.iml @@ -11,9 +11,9 @@ - - - + + + diff --git "a/docs/\345\255\220\347\263\273\347\273\237\346\265\213\350\257\225demo\347\211\251\346\250\241\345\236\213.json" "b/docs/\345\255\220\347\263\273\347\273\237\346\265\213\350\257\225demo\347\211\251\346\250\241\345\236\213.json" new file mode 100644 index 0000000..555ecae --- /dev/null +++ "b/docs/\345\255\220\347\263\273\347\273\237\346\265\213\350\257\225demo\347\211\251\346\250\241\345\236\213.json" @@ -0,0 +1 @@ +{"params":[{"name":"音量","param":"vol","dataType":"INT","frameType":"DEV_UP_DOWN","checkType":{"max":{"value":100,"desc":"最大值"},"min":{"value":0,"desc":"最小值"},"type":"RANGE"}},{"name":"播放状态","param":"playStat","dataType":"INT","frameType":"DEV_UP_DOWN","checkType":{"max":{"value":3,"desc":"最大值"},"min":{"value":0,"desc":"最小值"},"type":"RANGE"}}],"cmds":[{"name":"上报","cmd":"report","frameType":"DEV_UP","params":["playStat","vol"]},{"name":"设置音量","cmd":"setVol","frameType":"DEV_DOWN","params":["vol"]}]} \ No newline at end of file diff --git "a/docs/\347\275\221\345\205\263\350\277\234\347\250\213\351\205\215\347\275\256.txt" "b/docs/\347\275\221\345\205\263\350\277\234\347\250\213\351\205\215\347\275\256.txt" new file mode 100644 index 0000000..2cd6444 --- /dev/null +++ "b/docs/\347\275\221\345\205\263\350\277\234\347\250\213\351\205\215\347\275\256.txt" @@ -0,0 +1,2 @@ +{"pk":"37743d2ebbe44fb7997a6050fa549411","devId":"demo_subsystem_001","radioDevId":"radio_id_0","devName":"demo子系统终端001"} +{"pk":"37743d2ebbe44fb7997a6050fa549411","devId":"demo_subsystem_002","radioDevId":"radio_id_1","devName":"demo子系统终端002"} diff --git a/pom.xml b/pom.xml index 7e0020f..2a87494 100644 --- a/pom.xml +++ b/pom.xml @@ -14,7 +14,7 @@ 8 8 - 2.0.0 + 2.0.1-SNAPSHOT diff --git a/src/main/java/me/hekr/iotos/softgateway/subsystem/dto/RadioDevice.java b/src/main/java/me/hekr/iotos/softgateway/subsystem/dto/RadioDevice.java index e26d5d1..797c9fe 100644 --- a/src/main/java/me/hekr/iotos/softgateway/subsystem/dto/RadioDevice.java +++ b/src/main/java/me/hekr/iotos/softgateway/subsystem/dto/RadioDevice.java @@ -1,6 +1,9 @@ package me.hekr.iotos.softgateway.subsystem.dto; import lombok.Data; +import me.hekr.iotos.softgateway.core.config.DeviceRemoteConfig; +import me.hekr.iotos.softgateway.core.config.DeviceRemoteConfig.Props; +import me.hekr.iotos.softgateway.core.dto.DeviceMapper; /** * 广播设备 @@ -8,8 +11,8 @@ import lombok.Data; * @author iotos */ @Data -public class RadioDevice { - +public class RadioDevice implements DeviceMapper { + private static final String RADIO_DEV_ID = "radioDevId"; /** 设备id */ private String radioDevId; @@ -21,4 +24,15 @@ public class RadioDevice { /** 播放状态 0 停止, 1 播放, 2 暂停 */ private int playStat; + + public static RadioDevice parse(DeviceRemoteConfig device) { + RadioDevice dev = new RadioDevice(); + dev.setRadioDevId(device.getProp(RADIO_DEV_ID)); + return dev; + } + + @Override + public Props getProps() { + return Props.p(RADIO_DEV_ID, radioDevId).get(); + } } diff --git a/src/main/java/me/hekr/iotos/softgateway/subsystem/service/DemoSubSystemCommandServiceImpl.java b/src/main/java/me/hekr/iotos/softgateway/subsystem/service/DemoSubSystemCommandServiceImpl.java index 4de854e..ace9173 100644 --- a/src/main/java/me/hekr/iotos/softgateway/subsystem/service/DemoSubSystemCommandServiceImpl.java +++ b/src/main/java/me/hekr/iotos/softgateway/subsystem/service/DemoSubSystemCommandServiceImpl.java @@ -1,24 +1,29 @@ package me.hekr.iotos.softgateway.subsystem.service; import lombok.extern.slf4j.Slf4j; -import me.hekr.iotos.softgateway.core.config.DeviceMapper; +import me.hekr.iotos.softgateway.core.config.DeviceRemoteConfig; import me.hekr.iotos.softgateway.core.klink.ModelData; import me.hekr.iotos.softgateway.core.subsystem.SubsystemCommandService; +import me.hekr.iotos.softgateway.subsystem.dto.RadioDevice; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** * demo 命令测试用例,如果需要处理,则需要在 iot 上物模型中定义一个 demo 的命令 * - * @see me.hekr.iotos.softgateway.core.subsystem.SubsystemCommandService#handle(DeviceMapper, + * @see me.hekr.iotos.softgateway.core.subsystem.SubsystemCommandService#handle(DeviceRemoteConfig, * ModelData) * @author iot */ -@Service("demoSubSystemCommandService") +@Service("setVol@SubSystemCommandService") @Slf4j public class DemoSubSystemCommandServiceImpl implements SubsystemCommandService { + @Autowired private UdpServerService udpServerService; @Override - public void handle(DeviceMapper device, ModelData data) { + public void handle(DeviceRemoteConfig device, ModelData data) { log.info("设备收到命令, 设备:{},命令:{}", device, data); + RadioDevice dev = RadioDevice.parse(device); + udpServerService.setVol(dev.getRadioDevId(), (Integer) data.getParam("vol")); } } diff --git a/src/main/java/me/hekr/iotos/softgateway/subsystem/service/UdpServerService.java b/src/main/java/me/hekr/iotos/softgateway/subsystem/service/UdpServerService.java index 9bb98c8..ea59d9a 100644 --- a/src/main/java/me/hekr/iotos/softgateway/subsystem/service/UdpServerService.java +++ b/src/main/java/me/hekr/iotos/softgateway/subsystem/service/UdpServerService.java @@ -4,15 +4,11 @@ import static java.util.stream.Collectors.toList; import com.fasterxml.jackson.core.type.TypeReference; import java.nio.charset.StandardCharsets; -import java.util.HashMap; import java.util.List; -import java.util.Map; -import java.util.Optional; import java.util.stream.IntStream; import lombok.extern.slf4j.Slf4j; -import me.hekr.iotos.softgateway.core.config.DeviceMapper; -import me.hekr.iotos.softgateway.core.config.DeviceMapper.Props; import me.hekr.iotos.softgateway.core.klink.KlinkService; +import me.hekr.iotos.softgateway.core.klink.ModelData; import me.hekr.iotos.softgateway.core.utils.JsonUtil; import me.hekr.iotos.softgateway.network.common.DecodePacket; import me.hekr.iotos.softgateway.network.common.PacketCoder; @@ -54,25 +50,16 @@ public class UdpServerService { udpClient.send("getAllStatus"), new TypeReference>() {}); for (RadioDevice d : devices) { - Optional subsystemDev = - DeviceMapper.getBySubSystemProperties(Props.p("radioDevId", d.getRadioDevId()).get()); - if (!subsystemDev.isPresent()) { - log.warn("没有配置映射设备信息,请在远程配置中进行配置,设备信息:{}", d); - continue; - } - - DeviceMapper dev = subsystemDev.get(); // 如果是离线,设置iot的设备离线 if (d.getStatus() == 0) { - klinkService.devLogout(dev.getPk(), dev.getDevId()); + klinkService.devLogout(d); continue; } - Map params = new HashMap<>(3); - params.put("vol", d.getVol()); - params.put("playStat", d.getPlayStat()); - klinkService.devSend(dev.getPk(), dev.getDevId(), "report", params); + ModelData data = + ModelData.cmd("report").param("vol", d.getVol()).param("playStat", d.getPlayStat()); + klinkService.devSend(d, data); } } @@ -111,6 +98,9 @@ public class UdpServerService { break; // 可以自行扩展其他指令 default: + if (msg.startsWith("setVol")) { + udpServer.send(ctx, "OK"); + } } }); // 开启网络日志 @@ -131,4 +121,8 @@ public class UdpServerService { }) .collect(toList()); } + + public void setVol(String radioDevId, Integer vol) { + System.out.println(udpClient.send("setVol:" + radioDevId + ":" + vol)); + } } -- Gitee