| | |
| | | package com.sandu.ximon.admin; |
| | | |
| | | import cn.hutool.core.collection.CollectionUtil; |
| | | import com.aliyuncs.iot.model.v20180120.QueryDeviceDetailResponse; |
| | | import com.aliyuncs.iot.model.v20180120.RegisterDeviceResponse; |
| | | import com.sandu.common.execption.BusinessException; |
| | | import com.sandu.ximon.admin.dto.DeviceStatus; |
| | | import com.sandu.ximon.admin.manager.iot.frame.A1Frame; |
| | | import com.sandu.ximon.admin.manager.iot.frame.A5Frame; |
| | | import com.sandu.ximon.admin.manager.iot.frame.FrameBuilder; |
| | | import com.sandu.ximon.admin.manager.iot.frame.IRequestFrame; |
| | | import com.sandu.ximon.admin.manager.iot.frame.inner.request.EmptyRequestInnerFrame; |
| | | import com.sandu.ximon.admin.manager.iot.frame.inner.request.LightBrightnessReqInnerFrame; |
| | | import com.sandu.ximon.admin.manager.iot.frame.inner.request.LightHeartbeatReqInnerFrame; |
| | | import com.sandu.ximon.admin.manager.iot.frame.inner.response.LightBrightnessRespInnerFrame; |
| | | import com.sandu.ximon.admin.manager.iot.frame.inner.response.LightHeartbeatRespInnerFrame; |
| | | import com.sandu.ximon.admin.manager.iot.frame.inner.request.*; |
| | | import com.sandu.ximon.admin.manager.iot.frame.inner.response.A1DeviceMacRespInnerFrame; |
| | | import com.sandu.ximon.admin.manager.iot.frame.inner.response.A1TernaryCodeRespInnerFrame; |
| | | import com.sandu.ximon.admin.manager.iot.frame.inner.response.A5LightBrightnessRespInnerFrame; |
| | | import com.sandu.ximon.admin.manager.iot.frame.inner.response.A5LightHeartbeatRespInnerFrame; |
| | | import com.sandu.ximon.admin.manager.iot.rrpc.dto.CommonFrame; |
| | | import com.sandu.ximon.admin.manager.iot.rrpc.dto.WrapResponseCommonFrame; |
| | | import com.sandu.ximon.admin.manager.iot.rrpc.enums.A1OrderEnum; |
| | | import com.sandu.ximon.admin.manager.iot.rrpc.enums.A5LightDataEnum; |
| | | import com.sandu.ximon.admin.manager.iot.rrpc.enums.A2OrderEnum; |
| | | import com.sandu.ximon.admin.manager.iot.rrpc.enums.A5OrderEnum; |
| | | import com.sandu.ximon.admin.manager.iot.rrpc.mainboard.MainBoardInvokeSyncService; |
| | | import com.sandu.ximon.admin.service.PoleService; |
| | | import com.sandu.ximon.admin.service.RoleMenuRelationService; |
| | | import com.sandu.ximon.dao.domain.RoleMenuRelation; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.junit.jupiter.api.Test; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.boot.test.context.SpringBootTest; |
| | | |
| | | import java.util.List; |
| | | |
| | | @SpringBootTest |
| | | @Slf4j |
| | | class BaseTopicTests { |
| | | @Autowired |
| | | PoleService poleService; |
| | | @Autowired |
| | | RoleMenuRelationService roleMenuRelationService; |
| | | |
| | | |
| | | // 查询设备详情 |
| | | @Test |
| | | void queryDeviceDetail() { |
| | | QueryDeviceDetailResponse.Data data = MainBoardInvokeSyncService.getInstance().queryDeviceDetail("32313243305005ff0431ffff", null); |
| | | QueryDeviceDetailResponse.Data data = MainBoardInvokeSyncService.getInstance().queryDeviceDetail("32313243305007ff8d60ffff", null); |
| | | System.out.println(data.toString()); |
| | | |
| | | List<DeviceStatus> statusList = poleService.listStatusByDeviceCode(CollectionUtil.toList("32313243305008ff0805ffff","32313243305007ff8d60ffff")); |
| | | System.out.println(statusList); |
| | | } |
| | | |
| | | |
| | | // 控制灯的亮度级别 0-100 |
| | | @Test |
| | | void rrpcLightControl() { |
| | | LightBrightnessReqInnerFrame lightControlFrame = new LightBrightnessReqInnerFrame(80); |
| | | // 32313243305008ff1a06ffff |
| | | A5LightBrightnessReqInnerFrame lightControlFrame = new A5LightBrightnessReqInnerFrame(80); |
| | | A5Frame a5Frame = new A5Frame(A5OrderEnum.REQUEST_LIGHT_DATA.getCode(), lightControlFrame); |
| | | WrapResponseCommonFrame<LightBrightnessRespInnerFrame> frame = MainBoardInvokeSyncService.getInstance() |
| | | .sendRRPC("32313243305008ff1a06ffff", a5Frame, LightBrightnessRespInnerFrame.class); |
| | | // LightControlResponseInnerFrame lightControlResponseInnerFrame = new LightControlResponseInnerFrame(); |
| | | // LightControlResponseInnerFrame innerFrame = lightControlResponseInnerFrame.transformFrame(commonFrame.getPayload()); |
| | | System.out.println(frame.toString()); |
| | | try { |
| | | WrapResponseCommonFrame<A5LightBrightnessRespInnerFrame> frame = MainBoardInvokeSyncService.getInstance() |
| | | .sendRRPC("32313243305005ff2930ffff", a5Frame, A5LightBrightnessRespInnerFrame.class); |
| | | System.out.println(frame.toString()); |
| | | }catch (BusinessException e){ |
| | | e.printStackTrace(); |
| | | } |
| | | |
| | | } |
| | | |
| | | // 读取未注册设备mac |
| | | @Test |
| | | void readDeviceUniqueMac() { |
| | | A1Frame a1Frame = new A1Frame(A1OrderEnum.REQUEST_READ_DEVICE_UNIQUE_MAC.getCode(), new EmptyRequestInnerFrame()); |
| | |
| | | System.out.println(commonFrame.toString()); |
| | | } |
| | | |
| | | // 设备注册 |
| | | @Test |
| | | void registerWithReturn() { |
| | | String de = "baseDevice".toLowerCase(); |
| | | QueryDeviceDetailResponse.Data data = MainBoardInvokeSyncService.getInstance().queryDeviceDetail("baseDevice", null); |
| | | System.out.println(data.toString()); |
| | | void register() { |
| | | // 1获取新的Mac |
| | | String baseMac = "baseDevice"; |
| | | A1Frame a1Frame = new A1Frame(A1OrderEnum.REQUEST_READ_DEVICE_UNIQUE_MAC.getCode(), new EmptyRequestInnerFrame()); |
| | | CommonFrame commonFrame = MainBoardInvokeSyncService.getInstance() |
| | | .sendRRPC(baseMac, a1Frame); |
| | | if(commonFrame == null){ |
| | | throw new BusinessException("读取设备唯一ID失败"); |
| | | } |
| | | A1DeviceMacRespInnerFrame a1DeviceMacRespInnerFrame = new A1DeviceMacRespInnerFrame().transformFrame(commonFrame.getPayload()); |
| | | log.info(commonFrame.toString()); |
| | | String uniqueMac = a1DeviceMacRespInnerFrame.getMac(); |
| | | uniqueMac = uniqueMac.toLowerCase(); |
| | | log.info("唯一码{}",uniqueMac); |
| | | |
| | | // 2 从阿里注册 |
| | | MainBoardInvokeSyncService.getInstance().registerDevice(uniqueMac); |
| | | |
| | | // 3 获取设备详情 |
| | | QueryDeviceDetailResponse.Data deviceDetail = MainBoardInvokeSyncService.getInstance().queryDeviceDetail(uniqueMac, null); |
| | | if(deviceDetail == null){ |
| | | throw new BusinessException("注册失败"); |
| | | } |
| | | log.info(deviceDetail.toString()); |
| | | |
| | | // 4 配置Mac① |
| | | WrapResponseCommonFrame<A1TernaryCodeRespInnerFrame> productKeyResp = MainBoardInvokeSyncService.getInstance() |
| | | .sendRRPC(baseMac, |
| | | FrameBuilder.builderA1().innerFrame(new A1TernaryCodeReqInnerFrame(MainBoardInvokeSyncService.getInstance().getProductKey())) |
| | | .orderType(A1OrderEnum.REQUEST_SET_PRODUCT_KEY.getCode()).build(), |
| | | A1TernaryCodeRespInnerFrame.class); |
| | | A1TernaryCodeRespInnerFrame responseInnerFrame = productKeyResp.getResponseInnerFrame(); |
| | | if(!MainBoardInvokeSyncService.getInstance().getProductKey().equals(responseInnerFrame.getTernaryCode())){ |
| | | throw new BusinessException("设备配置ProductKey失败"); |
| | | } |
| | | |
| | | // 5 配置Mac② |
| | | WrapResponseCommonFrame<A1TernaryCodeRespInnerFrame> responseCommonFrame = MainBoardInvokeSyncService.getInstance() |
| | | .sendRRPC(baseMac, |
| | | FrameBuilder.builderA1().innerFrame(new A1TernaryCodeReqInnerFrame(uniqueMac)) |
| | | .orderType(A1OrderEnum.REQUEST_SET_DEVICE_NAME.getCode()).build(), |
| | | A1TernaryCodeRespInnerFrame.class); |
| | | A1TernaryCodeRespInnerFrame deviceNameFrame = responseCommonFrame.getResponseInnerFrame(); |
| | | if(!uniqueMac.equals(deviceNameFrame.getTernaryCode())){ |
| | | throw new BusinessException("设备配置名失败"); |
| | | } |
| | | |
| | | // 6 配置Mac③ |
| | | WrapResponseCommonFrame<A1TernaryCodeRespInnerFrame> wrapResponseCommonFrame = MainBoardInvokeSyncService.getInstance() |
| | | .sendRRPC(baseMac, |
| | | FrameBuilder.builderA1().innerFrame(new A1TernaryCodeReqInnerFrame(deviceDetail.getDeviceSecret())) |
| | | .orderType(A1OrderEnum.REQUEST_SET_DEVICE_SECRET.getCode()).build(), |
| | | A1TernaryCodeRespInnerFrame.class); |
| | | A1TernaryCodeRespInnerFrame deviceSecretFrame = wrapResponseCommonFrame.getResponseInnerFrame(); |
| | | if (!deviceDetail.getDeviceSecret().equals(deviceSecretFrame.getTernaryCode())) { |
| | | throw new BusinessException("设备密钥失败"); |
| | | } |
| | | |
| | | // 7 重启设备 并使用新的Mac |
| | | CommonFrame rebootFrame = MainBoardInvokeSyncService.getInstance() |
| | | .sendRRPC(baseMac, |
| | | FrameBuilder.builderA2().innerFrame(new EmptyRequestInnerFrame()) |
| | | .orderType(A2OrderEnum.REQUEST_MAIN_BOARD_RESET.getCode()).build()); |
| | | if (rebootFrame.getPayload().equals("00")) { |
| | | System.out.println("重启成功"); |
| | | } |
| | | } |
| | | |
| | | // 获取灯的心跳数据 |
| | | @Test |
| | | void LightHeartbeat() { |
| | | IRequestFrame build = FrameBuilder.builderA5() |
| | | .orderType(A5OrderEnum.REQUEST_LIGHT_DATA.getCode()) |
| | | .innerFrame(new LightHeartbeatReqInnerFrame()) |
| | | .innerFrame(new A5LightHeartbeatReqInnerFrame()) |
| | | .build(); |
| | | WrapResponseCommonFrame<LightHeartbeatRespInnerFrame> responseCommonFrame = MainBoardInvokeSyncService.getInstance().sendRRPC("32313243305008ff1a06ffff", build, LightHeartbeatRespInnerFrame.class); |
| | | WrapResponseCommonFrame<A5LightHeartbeatRespInnerFrame> responseCommonFrame = MainBoardInvokeSyncService.getInstance().sendRRPC("32313243305008ff1a06ffff", build, A5LightHeartbeatRespInnerFrame.class); |
| | | System.out.println("responseCommonFrame.toString()"); |
| | | System.out.println(responseCommonFrame.toString()); |
| | | } |
| | | |
| | | // 设备恢复出厂设置 |
| | | @Test |
| | | void LightReset() { |
| | | String deviceName = "32313243305007ff3055ffff"; |
| | | IRequestFrame build = FrameBuilder.builderA5() |
| | | .orderType(A5OrderEnum.REQUEST_LIGHT_DATA.getCode()) |
| | | .innerFrame(new A5LightResetReqInnerFrame()) |
| | | .build(); |
| | | CommonFrame commonFrame = MainBoardInvokeSyncService.getInstance() |
| | | .sendRRPC(deviceName, build); |
| | | System.out.println(commonFrame.toString()); |
| | | CommonFrame rebootFrame = MainBoardInvokeSyncService.getInstance() |
| | | .sendRRPC(deviceName, |
| | | FrameBuilder.builderA2().innerFrame(new EmptyRequestInnerFrame()) |
| | | .orderType(A2OrderEnum.REQUEST_MAIN_BOARD_RESET.getCode()).build()); |
| | | if (rebootFrame.getPayload().equals("00")) { |
| | | System.out.println("重启成功"); |
| | | } |
| | | |
| | | CommonFrame result = MainBoardInvokeSyncService.getInstance() |
| | | .sendRRPC(deviceName, |
| | | FrameBuilder.builderA2().innerFrame(new EmptyRequestInnerFrame()) |
| | | .orderType(A2OrderEnum.REQUEST_MAIN_BOARD_RESET.getCode()).build()); |
| | | if (result.getPayload().equals("00")) { |
| | | System.out.println("重启成功"); |
| | | } |
| | | |
| | | } |
| | | } |