LAPTOP-KB9HII50\70708 2 лет назад
Родитель
Сommit
4bed4f0724

+ 163 - 57
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/util/MQTTKXClientUtil.java

@ -1,8 +1,6 @@
package com.yihu.jw.care.util;
import com.yihu.jw.care.dao.device.BaseMqttCallbackRecordDao;
import com.yihu.jw.entity.care.device.BaseMqttCallbackRecordDO;
import org.apache.commons.lang3.StringUtils;
import org.eclipse.paho.client.mqttv3.*;
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
import org.slf4j.Logger;
@ -11,6 +9,10 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
import java.util.concurrent.ScheduledExecutorService;
/**
@ -22,7 +24,7 @@ public class MQTTKXClientUtil {
    private static Logger logger = LoggerFactory.getLogger(MQTTKXClientUtil.class);
    public static final String HOST = "tcp://121.40.135.79";
    public static final String deviceId = "18202a08724e5573";
    public static final String deviceId = "18183412724e5573";
    public static final Integer qos = 1;
    @Autowired
@ -30,24 +32,71 @@ public class MQTTKXClientUtil {
    @Autowired
    private BaseMqttCallbackRecordDao mqttCallbackRecordDao;
/*    	1、心跳保活,设置为30s:
    mosquitto_pub -h 121.40.135.79 -t "device/18202a08724e5573/cmd/ipcam_keep_alive" -u admin -P admin -m "30"
            2、订阅:
    mosquitto_sub -h 121.40.135.79 -t "device/18202a08724e5573/response/+"
            3、开启视频推流:
    mosquitto_pub -h 121.40.135.79 -t "device/18202a08724e5573/cmd/ipcam_video_start" -u admin -P admin -m "1"
            6、解析步骤2的payload,获取直播SourceURL:
    如:http://121.40.135.79/live/18202a08724e5573_1673488105807/hls.m3u8
    /**
     * 获取凯旋摄像头列表
     * @return
     */
    public List<Map<String,Object>> getDeviceList(){
        String sql = "select dict_code code,dict_value name from wlyy_hospital_sys_dict where dict_name = 'mqttkxVideoDevice' order by sort";
        List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);
        return list;
    }
            5、关闭视频推流:
    mosquitto_pub -h 121.40.135.79 -t "device/18202a08724e5573/cmd/ipcam_video_start" -u admin -P admin -m "0"*/
/*  	1、心跳保活,设置为30s:
		mosquitto_pub -h 121.40.135.79 -t "device/18183412724e5573/cmd/ipcam_keep_alive" -u admin -P admin -m "30"
	2、订阅:
		mosquitto_sub -h 121.40.135.79 -t "device/18183412724e5573/response/+"
	3、开启视频推流:
		mosquitto_pub -h 121.40.135.79 -t "device/18183412724e5573/cmd/ipcam_video_start" -u admin -P admin -m "1"
	6、解析步骤2的payload,获取直播SourceURL:
		如:http://121.40.135.79/live/18183412724e5573_1673488105807/hls.m3u8
	5、关闭视频推流:
		mosquitto_pub -h 121.40.135.79 -t "device/18183412724e5573/cmd/ipcam_video_start" -u admin -P admin -m "0"
	5、开启音频推流:[优化中]
		mosquitto_pub -h 121.40.135.79 -t "device/18183412724e5573/cmd/ipcam_audio_start" -u admin -P admin -m "1"
	6、关闭音频推流(静音):[优化中]
		mosquitto_pub -h 121.40.135.79 -t "device/18183412724e5573/cmd/ipcam_audio_start" -u admin -P admin -m "1"
	7、固件升级:[临时测试使用,后续调整OTA升级策略]
		mosquitto_pub -h 121.40.135.79 -t "device/18183412724e5573/cmd/ipcam_upgrade_firmware" -u admin -P admin -m "http://192.168.168.218:8866/9.20230116.zip"
	8、视频画面截图保存:
		mosquitto_pub -h 121.40.135.79 -t "device/18183412724e5573/cmd/ipcam_jpeg_snapshot" -u admin -P admin -m "1"
	9、控制云台复位(校准):
		mosquitto_pub -h 121.40.135.79 -t "device/18183412724e5573/cmd/ipcam_motor_reset" -u admin -P admin -m "0"
	10、控制云台左移:
		mosquitto_pub -h 121.40.135.79 -t "device/18183412724e5573/cmd/ipcam_motor_left" -u admin -P admin -m "0"
	11、控制云台右移:
		mosquitto_pub -h 121.40.135.79 -t "device/18183412724e5573/cmd/ipcam_motor_right" -u admin -P admin -m "0"
	12、控制云台上移:
		mosquitto_pub -h 121.40.135.79 -t "device/18183412724e5573/cmd/ipcam_motor_up" -u admin -P admin -m "0"
	13、控制云台下移:
		mosquitto_pub -h 121.40.135.79 -t "device/18183412724e5573/cmd/ipcam_motor_down" -u admin -P admin -m "0"*/
    public static final String ipcam_keep_alive = "device/{deviceId}/cmd/ipcam_keep_alive";
    public static final String TOPIC = "device/{deviceId}/response/+";
    public static final String ipcam_video_start = "device/{deviceId}/cmd/ipcam_video_start";
    public static final String ipcam_audio_start = "device/{deviceId}/cmd/ipcam_audio_start";
    public static final String ipcam_upgrade_firmware = "device/{deviceId}/cmd/ipcam_upgrade_firmware";
    public static final String ipcam_jpeg_snapshot = "device/{deviceId}/cmd/ipcam_jpeg_snapshot";
    public static final String ipcam_motor_reset = "device/{deviceId}/cmd/ipcam_motor_reset";
    public static final String ipcam_motor_left = "device/{deviceId}/cmd/ipcam_motor_left";
    public static final String ipcam_motor_right = "device/{deviceId}/cmd/ipcam_motor_right";
    public static final String ipcam_motor_up = "device/{deviceId}/cmd/ipcam_motor_up";
    public static final String ipcam_motor_down = "device/{deviceId}/cmd/ipcam_motor_down";
    public static Map<String,String> commandMap = new HashMap<>();
    static {
        commandMap.put("ipcam_keep_alive",ipcam_keep_alive);
        commandMap.put("TOPIC",TOPIC);
        commandMap.put("ipcam_video_start",ipcam_video_start);
        commandMap.put("ipcam_audio_start",ipcam_audio_start);
        commandMap.put("ipcam_upgrade_firmware",ipcam_upgrade_firmware);
        commandMap.put("ipcam_jpeg_snapshot",ipcam_jpeg_snapshot);
        commandMap.put("ipcam_motor_reset",ipcam_motor_reset);
        commandMap.put("ipcam_motor_left",ipcam_motor_left);
        commandMap.put("ipcam_motor_right",ipcam_motor_right);
        commandMap.put("ipcam_motor_up",ipcam_motor_up);
        commandMap.put("ipcam_motor_down",ipcam_motor_down);
    }
    private static final String clientid = String.valueOf(System.currentTimeMillis());;
@ -88,18 +137,18 @@ public class MQTTKXClientUtil {
                @Override
                public void messageArrived(String topic, MqttMessage message) throws Exception {
                    // subscribe后得到的消息会执行到这里面
                    BaseMqttCallbackRecordDO mqttCallbackRecordDO = new BaseMqttCallbackRecordDO();
                    if(StringUtils.isNotBlank(topic)){
                        String[] deviceId = topic.split("//");
                        if(deviceId.length>1){
                            mqttCallbackRecordDO.setDeviceId(deviceId[1]);
                        }
                    }
                    mqttCallbackRecordDO.setTopic(topic);
                    mqttCallbackRecordDO.setPayload(new String(message.getPayload()));
                    mqttCallbackRecordDao.save(mqttCallbackRecordDO);
                    logger.info("接收消息主题 : " + topic+","+"接收消息内容 : " + new String(message.getPayload()));
                    // subscribe后得到的消息会执行到这里面
//                    BaseMqttCallbackRecordDO mqttCallbackRecordDO = new BaseMqttCallbackRecordDO();
//                    if(StringUtils.isNotBlank(topic)){
//                        String[] deviceId = topic.split("//");
//                        if(deviceId.length>1){
//                            mqttCallbackRecordDO.setDeviceId(deviceId[1]);
//                        }
//                    }
//                    mqttCallbackRecordDO.setTopic(topic);
//                    mqttCallbackRecordDO.setPayload(new String(message.getPayload()));
//                    mqttCallbackRecordDao.save(mqttCallbackRecordDO);
                }
                @Override
@ -135,6 +184,26 @@ public class MQTTKXClientUtil {
        getClient().publish(topic, message);
    }
    /**
     * 通用方法
     * @param open
     * @param deviceId
     * @param command
     * @throws Exception
     */
    public void common(String open,String deviceId,String command) throws Exception{
        String payload = open;//
        MqttMessage message = new MqttMessage(payload.getBytes("UTF-8"));
        // 设置消息的服务质量
        message.setQos(qos);
        message.setRetained(true);
        // 发布消息
        String topic = commandMap.get(command).replace("{deviceId}",deviceId);
        logger.info(topic);
        getClient().publish(topic, message);
    }
    /**
     * 心跳
     */
@ -161,35 +230,72 @@ public class MQTTKXClientUtil {
        getClient().subscribe(topic1, Qos);
    }
//    public static void main(String[] args) throws Exception {
//        try {
//            MQTTKXClientUtil mqttkxClientUtil = new MQTTKXClientUtil();
//            mqttkxClientUtil.start();
//            logger.info("启动监听mqtt");
//            // 心跳
//            heart(client,deviceId);
//
//            //订阅消息
//            subscribe(client,deviceId);
//
//            Scanner scanner = new Scanner(System.in);
//            System.out.println("请输入1-3数字");
//            String username = scanner.nextLine();
//            if("1".equals(username)){
//                //开启直播
//                logger.info("开启直播");
//                ipcam_video_start(client,"1",deviceId);
//            }
//            System.out.println("请输入密码");
//            String password = scanner.nextLine();
//            if("2".equals(password)){
//                //关闭直播
//                logger.info("关闭直播");
//                ipcam_video_start(client,"0",deviceId);
//            }
//        }catch (Exception e){
//            e.printStackTrace();
//        }
//    }
    public static void main(String[] args) throws Exception {
        try {
            MQTTKXClientUtil mqttkxClientUtil = new MQTTKXClientUtil();
            mqttkxClientUtil.start();
            logger.info("启动监听mqtt");
            // 心跳
            mqttkxClientUtil.heart(deviceId);
            //订阅消息
            mqttkxClientUtil.subscribe(deviceId);
            boolean flag = true;
            Scanner scanner = new Scanner(System.in);
            while (flag){
                System.out.println("请输入3-13数字");
                String username = scanner.nextLine();
                switch (username){
                    case "3":
                        logger.info("开启视频推流");
                        mqttkxClientUtil.common("1",deviceId,"ipcam_video_start");
                        break;
                    case "4":
                        logger.info("关闭视频推流");
                        mqttkxClientUtil.common("0",deviceId,"ipcam_video_start");
                        break;
                    case "5":
                        logger.info("开启音频推流");
                        mqttkxClientUtil.common("1",deviceId,"ipcam_audio_start");
                        break;
                    case "6":
                        logger.info("关闭音频推流");
                        mqttkxClientUtil.common("0",deviceId,"ipcam_audio_start");
                        break;
                    case "8":
                        logger.info("视频画面截图保存");
                        mqttkxClientUtil.common("1",deviceId,"ipcam_jpeg_snapshot");
                        break;
                    case "9":
                        logger.info("控制云台复位(校准)");
                        mqttkxClientUtil.common("0",deviceId,"ipcam_motor_reset");
                        break;
                    case "10":
                        logger.info("控制云台左移");
                        mqttkxClientUtil.common("0",deviceId,"ipcam_motor_left");
                        break;
                    case "11":
                        logger.info("控制云台右移");
                        mqttkxClientUtil.common("0",deviceId,"ipcam_motor_right");
                        break;
                    case "12":
                        logger.info("控制云台上移");
                        mqttkxClientUtil.common("0",deviceId,"ipcam_motor_up");
                        break;
                    case "13":
                        logger.info("控制云台下移");
                        mqttkxClientUtil.common("0",deviceId,"ipcam_motor_down");
                        break;
                    default:
                        flag = false;
                        System.out.println("结束");
                        break;
                }
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

+ 0 - 7
svr/svr-wlyy-specialist/src/main/java/com/yihu/jw/controller/rehabilitation/RehabilitationPlanController.java

@ -172,13 +172,6 @@ public class RehabilitationPlanController extends EnvelopRestEndpoint {
            PatientRehabilitationPlanDO planDO = toEntity(json.toString(), PatientRehabilitationPlanDO.class);
            planDO = rehabilitationPlanService.createPatientRehabilitationPlan(planDO);
            details = rehabilitationPlanService.createRehabilitationDetail(details, planDO.getId());
            //调用服务包接口
            /*if(planDO != null && details != null) {
                String servicePackageId = rehabilitationPlanService.addServicePackage(planDO, details);
                if (StringUtils.isNotBlank(servicePackageId)) {
                    rehabilitationPlanService.updateServicePackageId(planDO.getId(), servicePackageId);
                }
            }*/
            return MixEnvelop.getSuccessList(SpecialistMapping.api_success, details);
        }catch (Exception e){
            e.printStackTrace();