设备控制设备状态等大致框架

This commit is contained in:
zhangzhicheng 2024-07-25 17:57:37 +08:00
parent 814a52c707
commit 5d847e626a
13 changed files with 359 additions and 90 deletions

View File

@ -16,10 +16,12 @@ public class CommonYmlConfig {
public static String URL_IOT_SERVER_ATTRIBUTE = "服务器属性";
public static String URL_IOT_TELEMETRY = "遥测";
public static String URL_IOT_OPERATE = "操作控制";
public static String URL_IOT_BASEURL = "ip端口";
public String serverAttribute = "";
public String telemetry = "";
public String operate = "";
public String baseurl = "";
@Value("${iot.url.serverAttribute}")
public String setServerAttribute(String serverAttribute) {
@ -35,4 +37,9 @@ public class CommonYmlConfig {
public String setOperate(String operate) {
return URL_IOT_OPERATE = operate;
}
@Value("${iot.baseurl}")
public String setBase(String baseurl) {
return URL_IOT_BASEURL = baseurl;
}
}

View File

@ -18,8 +18,12 @@ import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/**
* app首页
* app 设备业务
*
* @author Lion Li
* @date 2024-07-14
@ -70,12 +74,10 @@ public class EqDeviceController extends BaseController {
* @param bo
* @return
*/
@GetMapping("/getDeviceStatus")
public R<EqEquipmentStatusVo> getDeviceStatus(EqAppHomeBo bo){
EqEquipmentStatusVo result = new EqEquipmentStatusVo();
return R.ok(result);
@GetMapping("/getDeviceMsg")
public R<EqEquipmentStatusVo> getDeviceMsg(EqAppHomeBo bo){
if (bo.getEquipmentCode() == null) throw new ServiceException("设备编码不能为空");
return R.ok(eqEquipmentService.getDeviceMsg(bo));
}
@ -98,6 +100,23 @@ public class EqDeviceController extends BaseController {
*/
@GetMapping("/saveDeviceLogs")
public void saveDeviceLogs(EqEquipmentLogBo eqEquipmentLogBo){
Date createTime = eqEquipmentLogBo.getCreateTime();
if (createTime == null) {
createTime = new Date();
eqEquipmentLogBo.setCreateTime(createTime);
}
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// 格式化当前时间
String formattedDate = dateFormat.format(createTime);
String[] timeStr = formattedDate.split(" ");
eqEquipmentLogBo.setCreatedYearDay(timeStr[0]);//年月日
eqEquipmentLogBo.setCreatedHourSecond(timeStr[1]);//时分秒
//星期
Calendar calendar = Calendar.getInstance();
calendar.setTime(createTime);
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
eqEquipmentLogBo.setDayOfWeek(dayOfWeek - 1);// Calendar类中星期日为1星期一为2依此类推
logService.insertByBo(eqEquipmentLogBo);
}

View File

@ -23,7 +23,7 @@ import java.util.Collections;
import java.util.List;
/**
* app首页
* app通用业务
*
* @author Lion Li
* @date 2024-07-14

View File

@ -27,7 +27,7 @@ import java.util.Collections;
import java.util.List;
/**
* 固定文本获取
* app 固定文本获取
*
* @author zzc
* @date 2024-07-14

View File

@ -1,65 +0,0 @@
package org.dromara.web.device;
/**
* @ClassName : DeviceMsg
* @Author : ZZC
* @Date : 2024/7/25 0:44
* @Description : 设备信息
**/
public class DeviceMsg {
//属性上报 todo 该属性上报 无需解析指令 需要调用api 当前需要创建属性用来装载
//自动关门功能开关 AT+ECTPP=GarageDoorLightControl,AutomaticDoorClosingSwitch,0,false,{},b2
//自动关门功能开关 AT+ECTPP=GarageDoorLightControl,AutomaticDoorClosingSwitch,0,true,{},a7
//延时自动关门的延时时长 AT+ECTPP=GarageDoorLightControl,AutomaticDoorClosingTime,1,1,{},98
//运行次数开关 AT+ECTPP=GarageDoorLightControl,DoorRunningTimesSwitch,0,true,{},ae
//运行次数开关 AT+ECTPP=GarageDoorLightControl,DoorRunningTimesSwitch,0,false,{},2e
//倒计时剩余时间 AT+ECTPP=GarageDoorLightControl,ResidualCountDown,1,180
//运行次数 AT+ECTPP=GarageDoorLightControl,DoorRunningTimes,1,0
//车库门异常状态无异常 AT+ECTPP=GarageDoorLightControl,GarageException,3,none,{}
//车库门异常状态电机运行故障 AT+ECTPP=GarageDoorLightControl,GarageException,3,motorRunException,{}
//倒计时设置时间 AT+ECTPP=GarageDoorLightControl,CountDownConfig,1,188
//照明灯开关 AT+ECTPP=GarageDoorLightControl,LightSwitch,0,false,{},4d
//照明灯开关 AT+ECTPP=GarageDoorLightControl,LightSwitch,0,true,{},98
//提醒关门时间设置 AT+ECTPP=CustomGarageDoor,RemindCloseDoorConfig,1,1,{},ee
//提醒关门功能开关 AT+ECTPP=CustomGarageDoor,RemindCloseDoorSwitch,0,true,{},7c
//提醒关门功能开关 AT+ECTPP=CustomGarageDoor,RemindCloseDoorSwitch,0,false,{},c5
//半开门高度设置 AT+ECTPP=CustomGarageDoor,PartOpenConfig,1,10,{},aa
//半开门功能开关 AT+ECTPP=CustomGarageDoor,PartOpenSwitch,0,false,{},f9
//半开门功能开关 AT+ECTPP=CustomGarageDoor,PartOpenSwitch,0,true,{},52
//开合度百分比 AT+ECTPP=CustomGarageDoor,OpenPercentage,1,50
//门体运行状态停止中 AT+ECTPP=CustomGarageDoor,WorkState,3,stop,{}
//门体运行状态关闭中 AT+ECTPP=CustomGarageDoor,WorkState,3,closing,{}
//门体运行状态开启中 AT+ECTPP=CustomGarageDoor,WorkState,3,openning,{}
//是否已经校准行程 AT+ECTPP=GarageDoor,RouteCorrectStatus,0,true
//遇阻回弹的阻力设置 AT+ECTPP=GarageDoor,BounceSensitivity,1,3
//红外感应开关开启 AT+ECTPP=GarageDoor,IRSwitch,0,true,{},52
////枚举型属性枚举值
//车库门异常状态 AT+ECTPP=GarageDoorLightControl,GarageException, = {"3,none"}; //车库门异常状态//无故障
// = {"3,irException"}; //车库门异常状态//红外故障
// = {"3,motorRunException"}; //车库门异常状态//电机运转故障
// = {"3,motorMaintainException"}; //车库门异常状态//电机维护故障
// = {"3,deviceException"}; //车库门异常状态//设备故障
//
//门体开合状态 AT+ECTPP=CustomGarageDoor,WorkState, = {"3,stop"}; //车库门工作状态//车库门停止中
// = {"3,closing"}; //车库门工作状态//车库门正在关闭
// = {"3,openning"}; //车库门工作状态//车库门正在开启
//事件上报
//烟雾报警 AT+ECTEP=GarageDoorLightControl,SmokeAlarm,{}
//红外触发报警 AT+ECTEP=GarageDoorLightControl,InfraredTrig,{}
//电机运行报警 AT+ECTEP=GarageDoorLightControl,MotorAbnormal,{}
//电机维修报警 AT+ECTEP=GarageDoorLightControl,MotorMaintenance,{}
//非APP开门提醒 AT+ECTEP=GarageDoorLightControl,NonAppOpen,{}
//非APP关门提醒 AT+ECTEP=GarageDoorLightControl,NonAppClose,{}
//关门故障报警 AT+ECTEP=GarageDoorLightControl,CloseFault,{}
//开门故障报警 AT+ECTEP=GarageDoorLightControl,OpenFault,{}
//开门运行提醒 AT+ECTEP=GarageDoorLightControl,OpenGarage,{}
//关门运行提醒 AT+ECTEP=GarageDoorLightControl,CloseGarage,{}
//忘记关门提醒 AT+ECTEP=GarageDoorLightControl,CloseDoorRemind,{}
//门体手动开启提醒 AT+ECTEP=GarageDoorLightControl,OpenManual,{}
//半开门运行提醒 AT+ECTEP=GarageDoorLightControl,PartOpenGarage,{}
//门体停止运行提醒 AT+ECTEP=GarageDoorLightControl,StopGarage,{}
}

View File

@ -0,0 +1,191 @@
package org.dromara.web.device;
import lombok.Data;
/**
* @ClassName : DeviceMsgDto
* @Author : ZZC
* @Date : 2024/7/25 0:44
* @Description : 设备信息
**/
@Data
public class DeviceMsgDto {
//属性上报 todo 该属性上报 无需解析指令 需要调用api 当前需要创建属性用来装载
//自动关门功能开关 AT+ECTPP=GarageDoorLightControl,AutomaticDoorClosingSwitch,0,false,{},b2
//自动关门功能开关 AT+ECTPP=GarageDoorLightControl,AutomaticDoorClosingSwitch,0,true,{},a7
//延时自动关门的延时时长 AT+ECTPP=GarageDoorLightControl,AutomaticDoorClosingTime,1,1,{},98
//运行次数开关 AT+ECTPP=GarageDoorLightControl,DoorRunningTimesSwitch,0,true,{},ae
//运行次数开关 AT+ECTPP=GarageDoorLightControl,DoorRunningTimesSwitch,0,false,{},2e
//倒计时剩余时间 AT+ECTPP=GarageDoorLightControl,ResidualCountDown,1,180
//运行次数 AT+ECTPP=GarageDoorLightControl,DoorRunningTimes,1,0
//车库门异常状态无异常 AT+ECTPP=GarageDoorLightControl,GarageException,3,none,{}
//车库门异常状态运行故障 AT+ECTPP=GarageDoorLightControl,GarageException,3,motorRunException,{}
//倒计时设置时间 AT+ECTPP=GarageDoorLightControl,CountDownConfig,1,188
//照明灯开关 AT+ECTPP=GarageDoorLightControl,LightSwitch,0,false,{},4d
//照明灯开关 AT+ECTPP=GarageDoorLightControl,LightSwitch,0,true,{},98
//提醒关门时间设置 AT+ECTPP=CustomGarageDoor,RemindCloseDoorConfig,1,1,{},ee
//提醒关门功能开关 AT+ECTPP=CustomGarageDoor,RemindCloseDoorSwitch,0,true,{},7c
//提醒关门功能开关 AT+ECTPP=CustomGarageDoor,RemindCloseDoorSwitch,0,false,{},c5
//半开门高度设置 AT+ECTPP=CustomGarageDoor,PartOpenConfig,1,10,{},aa
//半开门功能开关 AT+ECTPP=CustomGarageDoor,PartOpenSwitch,0,false,{},f9
//半开门功能开关 AT+ECTPP=CustomGarageDoor,PartOpenSwitch,0,true,{},52
//开合度百分比 AT+ECTPP=CustomGarageDoor,OpenPercentage,1,50
//门体运行状态停止中 AT+ECTPP=CustomGarageDoor,WorkState,3,stop,{}
//门体运行状态关闭中 AT+ECTPP=CustomGarageDoor,WorkState,3,closing,{}
//门体运行状态开启中 AT+ECTPP=CustomGarageDoor,WorkState,3,openning,{}
//是否已经校准行程 AT+ECTPP=GarageDoor,RouteCorrectStatus,0,true
//遇阻回弹的阻力设置 AT+ECTPP=GarageDoor,BounceSensitivity,1,3
//红外感应开关开启 AT+ECTPP=GarageDoor,IRSwitch,0,true,{},52
////枚举型属性枚举值
//车库门异常状态 AT+ECTPP=GarageDoorLightControl,GarageException,
// = {"3,none"}; //车库门异常状态//无故障
// = {"3,irException"}; //车库门异常状态//红外故障
// = {"3,motorRunException"}; //车库门异常状态//电机运转故障
// = {"3,motorMaintainException"}; //车库门异常状态//电机维护故障
// = {"3,deviceException"}; //车库门异常状态//设备故障
//
//门体开合状态 AT+ECTPP=CustomGarageDoor,WorkState,
// = {"3,stop"}; //车库门工作状态//车库门停止中
// = {"3,closing"}; //车库门工作状态//车库门正在关闭
// = {"3,openning"}; //车库门工作状态//车库门正在开启
//事件上报
//烟雾报警 AT+ECTEP=GarageDoorLightControl,SmokeAlarm,{}
//红外触发报警 AT+ECTEP=GarageDoorLightControl,InfraredTrig,{}
//电机运行报警 AT+ECTEP=GarageDoorLightControl,MotorAbnormal,{}
//电机维修报警 AT+ECTEP=GarageDoorLightControl,MotorMaintenance,{}
//非APP开门提醒 AT+ECTEP=GarageDoorLightControl,NonAppOpen,{}
//非APP关门提醒 AT+ECTEP=GarageDoorLightControl,NonAppClose,{}
//关门故障报警 AT+ECTEP=GarageDoorLightControl,CloseFault,{}
//开门故障报警 AT+ECTEP=GarageDoorLightControl,OpenFault,{}
//开门运行提醒 AT+ECTEP=GarageDoorLightControl,OpenGarage,{}
//关门运行提醒 AT+ECTEP=GarageDoorLightControl,CloseGarage,{}
//忘记关门提醒 AT+ECTEP=GarageDoorLightControl,CloseDoorRemind,{}
//门体手动开启提醒 AT+ECTEP=GarageDoorLightControl,OpenManual,{}
//半开门运行提醒 AT+ECTEP=GarageDoorLightControl,PartOpenGarage,{}
//门体停止运行提醒 AT+ECTEP=GarageDoorLightControl,StopGarage,{}
//属性上报
/**
* //自动关门功能开关 false
* //自动关门功能开关 true
*/
private Boolean AutomaticDoorClosingSwitch;
/**
* //延时自动关门的延时时长
*/
private Integer AutomaticDoorClosingTime;
/**
* //运行次数开关 false
* //运行次数开关 true
*/
private Integer DoorRunningTimesSwitch;
/**
* //倒计时剩余时间
*/
private Integer ResidualCountDown;
/**
* //运行次数
*/
private Integer DoorRunningTimes;
/**
车库门异常状态
10.无异常 none
11.红外故障 irException
12.电机运转故障 motorRunException
13.电机维护故障 motorMaintainException
14.设备故障 deviceException
*/
private String GarageException;
/**
* //倒计时设置时间
*/
private Integer CountDownConfig;
/**
* //照明灯开关 false
* //照明灯开关 true
*/
private Boolean LightSwitch;
/**
* //提醒关门时间设置
*/
private Integer RemindCloseDoorConfig;
/**
* //提醒关门功能开关 false
* //提醒关门功能开关 true
*/
private Boolean RemindCloseDoorSwitch;
/**
* //半开门高度设置
*/
private Integer PartOpenConfig;
/**
* //半开门功能开关 false
* //半开门功能开关 true
*/
private Boolean PartOpenSwitch;
/**
* //开合度百分比
*/
private Integer OpenPercentage;
/**
* //门体运行状态
* 0.停止中 stop
* 1.关闭中 closing
* 2.开启中 openning
*/
private String WorkState;
/**
* //是否已经校准行程
*/
private Boolean RouteCorrectStatus;
/**
* //遇阻回弹的阻力设置
*/
private Integer BounceSensitivity;
/**
* //红外感应开关开启关闭
*/
private Boolean IRSwitch;
/**
* 事件上报
* 101.烟雾报警
* 102.红外触发报警
* 103.电机运行报警
* 104.电机维修报警
* 105.非APP开门提醒
* 106.非APP关门提醒
* 107.关门故障报警
* 108.开门故障报警
* 109.开门运行提醒
* 110.关门运行提醒
* 111.忘记关门提醒
* 112.门体手动开启提醒
* 113.半开门运行提醒
* 114.门体停止运行提醒
*/
private Integer warningStatus;
}

View File

@ -0,0 +1,15 @@
package org.dromara.web.device;
import lombok.Data;
/**
* @ClassName : DeviceMsgDto
* @Author : ZZC
* @Date : 2024/7/25 0:44
* @Description : 设备信息
**/
@Data
public class DeviceServerMsgDto {
private Boolean lineStatus;
}

View File

@ -62,12 +62,12 @@ public class EqEquipmentLog extends BaseEntity {
/**
* 年月日
*/
private Date createdYearDay;
private String createdYearDay;
/**
* 时分秒
*/
private Date createdHourSecond;
private String createdHourSecond;
/**
* 星期几

View File

@ -48,18 +48,49 @@ public class EqEquipmentLogBo extends BaseEntity {
/**
* 状态
* 0.停止中 stop
* 1.关闭中 closing
* 2.开启中 openning
*
* 10.无异常 none
* 11.红外故障 irException
* 12.电机运转故障 motorRunException
* 13.电机维护故障 motorMaintainException
* 14.设备故障 deviceException
*
* 101.烟雾报警
* 102.红外触发报警
* 103.电机运行报警
* 104.电机维修报警
* 105.非APP开门提醒
* 106.非APP关门提醒
* 107.关门故障报警
* 108.开门故障报警
* 109.开门运行提醒
* 110.关门运行提醒
* 111.忘记关门提醒
* 112.门体手动开启提醒
* 113.半开门运行提醒
* 114.门体停止运行提醒
*/
@NotNull(message = "状态不能为空", groups = { AddGroup.class, EditGroup.class })
private Integer status;
/**
* 故障状态
* 10.无异常 none
* 11.红外故障 irException
* 12.电机运转故障 motorRunException
* 13.电机维护故障 motorMaintainException
* 14.设备故障 deviceException
*/
@NotNull(message = "故障状态不能为空", groups = { AddGroup.class, EditGroup.class })
private Integer faultStatus;
/**
* 离线状态
* 1.在线
* 0.离线
*/
@NotNull(message = "离线状态不能为空", groups = { AddGroup.class, EditGroup.class })
private Integer lineStatus;
@ -68,16 +99,23 @@ public class EqEquipmentLogBo extends BaseEntity {
* 年月日
*/
@NotNull(message = "年月日不能为空", groups = { AddGroup.class, EditGroup.class })
private Date createdYearDay;
private String createdYearDay;
/**
* 时分秒
*/
@NotNull(message = "时分秒不能为空", groups = { AddGroup.class, EditGroup.class })
private Date createdHourSecond;
private String createdHourSecond;
/**
* 星期几
* 0."星期日",
* 1."星期一",
* 2."星期二",
* 3."星期三",
* 4."星期四",
* 5."星期五",
* 6."星期六"
*/
@NotNull(message = "星期几不能为空", groups = { AddGroup.class, EditGroup.class })
private Integer dayOfWeek;

View File

@ -79,13 +79,13 @@ public class EqEquipmentLogVo implements Serializable {
* 年月日
*/
@ExcelProperty(value = "年月日")
private Date createdYearDay;
private String createdYearDay;
/**
* 时分秒
*/
@ExcelProperty(value = "时分秒")
private Date createdHourSecond;
private String createdHourSecond;
/**
* 星期几

View File

@ -3,6 +3,7 @@ package org.dromara.web.service;
import org.dromara.web.domain.bo.EqAppHomeBo;
import org.dromara.web.domain.bo.EqDeviceCmdBo;
import org.dromara.web.domain.bo.EqDeviceSetBo;
import org.dromara.web.domain.vo.EqEquipmentStatusVo;
import org.dromara.web.domain.vo.EqEquipmentVo;
import org.dromara.web.domain.bo.EqEquipmentBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
@ -73,4 +74,10 @@ public interface IEqEquipmentService {
String setting(EqDeviceSetBo bo);
/**
* 获取设备信息
* @param bo
* @return
*/
EqEquipmentStatusVo getDeviceMsg(EqAppHomeBo bo);
}

View File

@ -1,7 +1,9 @@
package org.dromara.web.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
@ -11,11 +13,11 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.dromara.web.config.CommonYmlConfig;
import org.dromara.web.device.DeviceCtlCmd;
import org.dromara.web.device.DeviceCtlDto;
import org.dromara.web.device.DeviceSetCmd;
import org.dromara.web.device.*;
import org.dromara.web.domain.bo.EqAppHomeBo;
import org.dromara.web.domain.bo.EqDeviceCmdBo;
import org.dromara.web.domain.bo.EqDeviceSetBo;
import org.dromara.web.domain.vo.EqEquipmentStatusVo;
import org.springframework.stereotype.Service;
import org.dromara.web.domain.bo.EqEquipmentBo;
import org.dromara.web.domain.vo.EqEquipmentVo;
@ -160,7 +162,7 @@ public class EqEquipmentServiceImpl implements IEqEquipmentService {
return "指令类型错误";
}
//增加操作次数 更新到设备表中
return httpCtlPostSend(cmd);
return httpCtlPostSend(bo.getEquipmentCode(),cmd);
}
@Override
@ -190,18 +192,72 @@ public class EqEquipmentServiceImpl implements IEqEquipmentService {
cmd = cmd.replace(DeviceSetCmd.MODEL,bo.getOperateValue()+"");
}
//增加操作次数 更新到设备表中
return httpCtlPostSend(cmd);
return httpCtlPostSend(bo.getEquipmentCode(),cmd);
}
@Override
public EqEquipmentStatusVo getDeviceMsg(EqAppHomeBo bo) {
EqEquipmentStatusVo result = new EqEquipmentStatusVo();
result.setEquipmentId(bo.getEquipmentId());
result.setEquipmentCode(bo.getEquipmentCode());
//获取服务属性状态
String serverMsg = httpServerGetSend(bo.getEquipmentCode());
DeviceServerMsgDto serverMsgDto = JSONObject.parseObject(serverMsg, DeviceServerMsgDto.class);
if (!serverMsgDto.getLineStatus()){
result.setLineStatus(0);//离线
return result;
}
//获取遥测数据
String telemetryMsg = httpTelemetryGetSend(bo.getEquipmentCode());
DeviceMsgDto deviceMsgDto = JSONObject.parseObject(telemetryMsg, DeviceMsgDto.class);
BeanUtil.copyProperties(deviceMsgDto,result,true);
return result;
}
private String httpCtlPostSend(String cmd){
/**
* 设备控制指令
* @param deviceCode
* @param cmd
* @return
*/
private String httpCtlPostSend(String deviceCode,String cmd){
DeviceCtlDto dto = new DeviceCtlDto();
// dto.setMethod();//todo 方法
DeviceCtlDto.Params params = dto.getParams();
params.setCommand(cmd);
dto.setParams(params);
// todo 登录相关 token
return HttpUtil.post(CommonYmlConfig.URL_IOT_OPERATE, JSON.toJSONString(dto));
String url = CommonYmlConfig.URL_IOT_BASEURL+CommonYmlConfig.URL_IOT_OPERATE;
url = url.replace("{deviceId}",deviceCode) ;
return HttpUtil.post(url, JSON.toJSONString(dto));
}
/**
* 获取设备信息
* @param deviceCode
* @return
*/
private String httpTelemetryGetSend(String deviceCode){
String url = CommonYmlConfig.URL_IOT_BASEURL+CommonYmlConfig.URL_IOT_TELEMETRY;
url = url.replace("{entityType}","DEVICE") ;
url = url.replace("{entityId}",deviceCode) ;
// todo 登录相关 token
return HttpUtil.get(url);
}
/**
* 获取服务端属性信息
* @param deviceCode
* @return
*/
private String httpServerGetSend(String deviceCode){
String url = CommonYmlConfig.URL_IOT_BASEURL+CommonYmlConfig.URL_IOT_SERVER_ATTRIBUTE;
url = url.replace("{entityType}","DEVICE") ;
url = url.replace("{entityId}",deviceCode) ;
// todo 登录相关 token
return HttpUtil.get(url);
}
}

View File

@ -258,7 +258,8 @@ justauth:
redirect-uri: ${justauth.address}/social-callback?source=gitlab
iot:
baseurl: http://127.0.0.1:4523/m1/4875377-0-default
url:
serverAttribute: https://www.baidu.com
telemetry: https://www.baidu.com
operate: https://www.baidu.com
serverAttribute: /api/plugins/telemetry/{entityType}/{entityId}/values/attributes
telemetry: /api/plugins/telemetry/{entityType}/{entityId}/values/timeseries
operate: /api/plugins/rpc/oneway/{deviceId}