[오픈소스] Vue와 SpringBoot를 기반으로 한 산불 조기 경보 시스템

여기에 이미지 설명을 삽입하세요.

프로젝트 번호: S 019, 기사 끝부분에서 소스 코드를 얻으세요. \color{red}{프로젝트 번호: S019, 기사 마지막 부분에서 소스 코드를 얻으세요. }참치호호:S019, 문말포용원.



1. 초록

1.1 프로젝트 소개

websocket+Vue+SpringBoot+MySQL을 기반으로 한 산불 조기 경보 시스템에는 공원 데이터 모듈, 온도 센서 모듈, 연기 센서 모듈, 공원 모니터링 모듈, 공원 경보 이력 모듈이 포함되어 있으며 시스템 자체 사용자 관리, 부서 관리, 역할 관리, 메뉴 관리, 로그 관리, 데이터 사전 관리, 파일 관리, 차트 표시 등 기본 모듈 산불 조기 경보 시스템은 공원 관리자와 일반 사용자를 대상으로 역할 기반 접근 제어 기능을 갖추고 있습니다.

1.2 프로젝트 화면 녹화

소스코드 다운로드


2. 기능 모듈

본 논문에서 설계한 산불 조기 경보 시스템에는 관리 시스템의 공통 모듈을 저장하는 데 사용되는 시스템 데이터 센터 모듈과 시스템 기반, 연기 센서, 온도 센서, 이력 기록 및 공원의 5개 모듈이 포함됩니다. 데이터는 시스템 핵심 비즈니스 로직을 저장하도록 설계되었습니다.

2.1 데이터 센터 모듈

데이터 센터 모듈에는 시스템에 로그인할 수 있는 사람을 관리하고, 이러한 사람들이 시스템에 로그인하는 내용을 기록하고, 다양한 권한을 가진 다양한 사람들과 같은 산불 조기 경보 시스템의 기본 모듈이 포함되어 있습니다.

2.2 시스템 기본 모듈

시스템의 기본 모듈에서는 사용자 관리, 부서 관리, 클라우드 디스크, 역할 지원, 메뉴 지원, 로그 관리, 데이터 사전, 프런트엔드 테이블 등 파크 정보를 관리합니다. 파크의 추가, 편집, 업데이트, 삭제가 가능합니다. 이 모듈을 통해 쿼리 작업을 수행합니다.

2.3 연기 센서 모듈

연기 센서 모듈은 산불을 일으키는 중요한 요소인 연기 농도를 기록하고 연기 농도에 대한 임계값을 설정하며, 이 임계값에 도달하면 경보가 발생합니다. 연기 농도 데이터를 정확하게 수집하면 산불을 효과적으로 예방할 수 있으며, 산림 관리자는 다양한 계절의 산림 상태에 대응하기 위해 임계값을 변경할 수 있습니다.

2.4 온도 센서 모듈

온도 센서 모듈은 산불 발생의 중요한 요소인 산림 온도를 기록하고, 산림 온도 임계값을 설정하며, 이 임계값에 도달하면 경보가 발생합니다. 산림 온도 데이터를 정확하게 수집하면 산불을 효과적으로 예방할 수 있으며, 산림 온도가 높을수록 산불 발생 확률이 높아지므로 산림 온도 변화에 적시에 주의를 기울여 적시에 경고를 받을 수 있어야 합니다. .

2.5 히스토리 모듈

이력 기록 모듈은 산불 경보 건수를 관찰하여 어느 공원이 산불 발생 가능성이 높은지 확인하도록 설계되었으며, 대응 인력과 자재를 배치하여 위험도가 높은 지역에 더 많이 배치할 수 있어 효과적입니다. 구조 인력 및 자재 부족 문제를 해결하기 위해 화재 발생 위험이 높은 지역에서는 화재 예방에 중점을 두고 산불이 발생하면 적시에 대응 조치를 취할 수 있습니다.

2.6 파크 데이터 모듈

공원 데이터 모듈의 설계는 다양한 공원 간의 관계를 통합하고 각 공원의 데이터를 하나의 모듈에 수집하는 것으로, 관리자는 공원 데이터 모듈을 활용하여 적시에 산림 상황을 파악할 수 있습니다. a 감지 데이터가 임계 값에 빠르게 도달하여 더 빠른 응답 속도를 얻을 수 있습니다.


3. 시스템 설계

3.1 사용 사례 디자인

3.1.1 산림공원 기본 시스템 활용 사례 설계

여기에 이미지 설명을 삽입하세요.

3.1.2 산림조기경보 데이터 활용 사례 설계

여기에 이미지 설명을 삽입하세요.

3.2 데이터베이스 설계

3.2.1 연기 감지기

연기 센서 모듈은 산불을 일으키는 중요한 요소인 연기 농도를 기록하고 연기 농도에 대한 임계값을 설정하며, 이 임계값에 도달하면 경보가 발생합니다. 연기 농도 데이터를 정확하게 수집하면 산불을 효과적으로 예방할 수 있으며, 산림 관리자는 다양한 계절의 산림 상태에 대응하기 위해 임계값을 변경할 수 있습니다.

여기에 이미지 설명을 삽입하세요.

3.2.2 온도 센서

온도 센서 모듈은 산불 발생의 중요한 요소인 산림 온도를 기록하고, 산림 온도 임계값을 설정하며, 이 임계값에 도달하면 경보가 발생합니다. 산림 온도 데이터를 정확하게 수집하면 산불을 효과적으로 예방할 수 있으며, 산림 온도가 높을수록 산불 발생 확률이 높아지므로 산림 온도 변화에 적시에 주의를 기울여 적시에 경고를 받을 수 있어야 합니다. .

여기에 이미지 설명을 삽입하세요.

3.2.3 역사

이력 기록 모듈은 산불 경보 건수를 관찰하여 어느 공원이 산불 발생 가능성이 높은지 확인하도록 설계되었으며, 대응 인력과 자재를 배치하여 위험도가 높은 지역에 더 많이 배치할 수 있어 효과적입니다. 구조 인력 및 자재 부족 문제를 해결하기 위해 화재 발생 위험이 높은 지역에서는 화재 예방에 중점을 두고 산불이 발생하면 적시에 대응 조치를 취할 수 있습니다.

여기에 이미지 설명을 삽입하세요.

3.2.4 공원 데이터

공원 데이터 모듈의 설계는 다양한 공원 간의 관계를 통합하고 각 공원의 데이터를 하나의 모듈에 수집하는 것으로, 관리자는 공원 데이터 모듈을 활용하여 적시에 산림 상황을 파악할 수 있습니다. a 감지 데이터가 임계 값에 빠르게 도달하여 더 빠른 응답 속도를 얻을 수 있습니다.

여기에 이미지 설명을 삽입하세요.


4. 시스템 디스플레이

여기에 이미지 설명을 삽입하세요.
여기에 이미지 설명을 삽입하세요.
여기에 이미지 설명을 삽입하세요.
여기에 이미지 설명을 삽입하세요.
여기에 이미지 설명을 삽입하세요.
여기에 이미지 설명을 삽입하세요.


5. 핵심코드

5.1 원클릭으로 센서 생성

@RequestMapping(value = "/createSensor", method = RequestMethod.GET)
@ApiOperation(value = "一键创建传感器")
public Result<ForestPark> createSensor(@RequestParam String id){
    
    
    ForestPark park = iForestParkService.getById(id);
    if(park == null) {
    
    
        return ResultUtil.error("园区不存在");
    }
    // 删除原烟雾传感器
    QueryWrapper<SmokeSensor> ssOldQw = new QueryWrapper<>();
    ssOldQw.eq("park_id",park.getId());
    iSmokeSensorService.remove(ssOldQw);
    // 删除原温度传感器
    QueryWrapper<TemperatureSensor> tsOldQw = new QueryWrapper<>();
    tsOldQw.eq("park_id",park.getId());
    iTemperatureSensorService.remove(tsOldQw);
    // 创建传感器
    SmokeSensor ss = new SmokeSensor();
    ss.setParkId(park.getId());
    ss.setParkName(park.getTitle());
    ss.setValue(0);
    ss.setLastTime("");
    iSmokeSensorService.saveOrUpdate(ss);
    TemperatureSensor ts = new TemperatureSensor();
    ts.setParkId(park.getId());
    ts.setParkName(park.getTitle());
    ts.setValue(0);
    ts.setLastTime("");
    iTemperatureSensorService.saveOrUpdate(ts);
    return ResultUtil.success();
}

5.2 센서 데이터 변경 시뮬레이션

private void changeValue1Fx() {
    
    
    List<SmokeSensor> sensorList = iSmokeSensorService.list();
    Random r = new Random();
    for (SmokeSensor ss : sensorList) {
    
    
        int tempValue = r.nextInt(100);
        ss.setValue(tempValue);
        ss.setLastTime(DateUtil.now());
        iSmokeSensorService.saveOrUpdate(ss);
        try {
    
    
            parkTask.updatePartAlertTime(ss.getParkId());
        } catch (InterruptedException e) {
    
    }
        BaseWebSocketService.sendInfo("Smoke@@" + ss.getParkId() + "@@" + tempValue);
    }
}

5.3 웹소켓 설정

@Configuration
@EnableWebSocketMessageBroker
public class StompWebSocketConfig implements WebSocketMessageBrokerConfigurer {
    
    

    @Autowired
    private StompChannelInterceptor myChannelInterceptor;

    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
    
    
        // 1.定义客户端连接地址/stomp-ws
        // 2.使用sockJS,stomp协议
        // 3.配置跨域
        registry.addEndpoint("/stomp-ws").setAllowedOriginPatterns("*").withSockJS();
    }

    @Override
    public void configureMessageBroker(MessageBrokerRegistry registry) {
    
    
        // 1.设置服务端推送数据的主题节点
        registry.enableSimpleBroker("/topic", "/queue");
        // 2.设置客户端向服务端推送消息的前缀
//        registry.setApplicationDestinationPrefixes("app");
    }

    @Override
    public void configureClientInboundChannel(ChannelRegistration registration) {
    
    
        // 注册拦截器中间件
        registration.interceptors(myChannelInterceptor);
    }
}


6. 면책조항

  • 본 프로젝트는 개인적인 연구용이므로 상업적인 허가를 받으시려면 해당 블로거에게 연락주시기 바랍니다. 그렇지 않을 경우 그에 대한 책임은 귀하에게 있습니다.
  • 블로거는 이 소프트웨어로 구축된 응용 프로그램 시스템의 모든 콘텐츠와 독립적인 지적 재산권을 소유하며 최종 해석권을 갖습니다.
  • 문의사항이 있으신 경우 창고이슈에 메시지를 남겨주시면 확인 후 최대한 빠른 시일 내로 답변해드리겠습니다. 관련 의견은 적절하게 고려하겠지만, 채택될 것이라는 약속이나 보장은 없습니다.

이 시스템 코드를 다운로드하거나 이 시스템을 사용하는 사용자는 다음 내용에 동의해야 합니다. 그렇지 않으면 다운로드하지 마십시오!

  1. 귀하는 이 소프트웨어를 자발적으로 사용/개발하고, 이 소프트웨어 사용에 따른 위험을 이해하고, 이 소프트웨어 사용으로 인한 위험을 감수하는 데 동의합니다.
  2. 이 소프트웨어를 사용하여 구축된 웹사이트의 모든 정보 콘텐츠와 그에 따른 저작권 분쟁, 법적 분쟁 및 결과는 블로거와 아무 관련이 없으며 블로거는 이에 대해 어떠한 책임도 지지 않습니다.
  3. 어떠한 경우에도 블로거는 이 소프트웨어의 사용 또는 사용 불가로 인해 발생하는 합리적으로 예측하기 어려운 손실(상업 이익 손실, 비즈니스 중단 및 비즈니스 정보 손실을 포함하되 이에 국한되지 않음)에 대해 책임을 지지 않습니다.
  4. 귀하는 이 소프트웨어를 사용하는 데 따르는 위험을 이해해야 합니다. 블로거는 일대일 기술 지원이나 사용 보증을 약속하지 않으며 이 소프트웨어로 인해 발생하는 예상치 못한 문제에 대해 어떠한 책임도 지지 않습니다.

여기에 이미지 설명을 삽입하세요.

추천

출처blog.csdn.net/yangyin1998/article/details/134918338