assignment
파이썬 성적관리 - 자바 메인 하나에 풀기
https://blog.naver.com/heaves1/224025711023 - sql 최종 완성하고 이해하기
review
fstring, function_args_exam2, 클래스 예제1, join, mro, file_test1. SQL 인라인뷰
클래스로 바꾸고 쓰레드 처리
오늘의 미션
1. MQttClientTest에서 servo도 publish할 수 있도록
RaspberryPI에서
led1:led_on, led:2:led_on
led1:;led_off, led:2:led_off
를 받아서 1번2번 LED를 켜고 끌 수 있도록 처리
assignment
파이썬 성적관리 - 자바 메인 하나에 풀기
https://blog.naver.com/heaves1/224025711023 - sql 최종 완성하고 이해하기
review
fstring, function_args_exam2, 클래스 예제1, join, mro, file_test1. SQL 인라인뷰
클래스로 바꾸고 쓰레드 처리
assignment
review
클래스로 바꾸고 쓰레드 처리
라즈베리파이(publish) -> MQTT 브로커(Mosquitto) -> 서버(MQttManager.class자바파일)(subscribe) - Service(문자열 해석 및 DTO 변환) - DAO(SQL 실행) - DB(테이블 저장)
SensorImpl에서 가져온 topic과 payload를
split("/") -> 괄호 안에 있는 것을 기준으로 잘라서 SensorDataDTO 객체에 넣고 묶어줌.
DAO가 SQL 실행하고 DB에 저장
Q. 자바 -> 파이썬으로 pub 할 필요가 있나?
= 명령을 내려서 제어를 할때, 즉 물부족, 온도가 높음 등등 : 주도권이 어디에 있는지 확인 필요
assignment
review
DB 구조 이해
//사용자가 로그를 요청히면 db에 저장
📦 SmartFarmSystem
┣ 📂 controller → 프로그램 흐름 제어 (메인, 메뉴 등)
┣ 📂 dao → DB 접근 (데이터 CRUD 담당)
┣ 📂 dto → 데이터 전송 객체 (VO, 모델 역할)
┣ 📂 service → 비즈니스 로직 (DAO를 이용해 기능 수행)
┣ 📂 mqtt → 라즈베리파이 ↔ 서버 MQTT 통신 관리
┣ 📂 util → DB 연결 및 콘솔 유틸 등 공용 기능
┣ 📂 view → 사용자 인터페이스(UI)
┗ 📦 lib, README → 외부 라이브러리 및 설명문
📁 SmartFarm SensorData 기능 정리
🧩 SensorDataDTO.java
센서 데이터 1건을 담는 객체.
→ DB의 sensor_logs 한 행(row)을 자바 객체로 매핑.
⚙️ SensorDataDAO.java
DB 접근용 인터페이스.
→ 센서 데이터 저장(insert), 조회(getLogsByFarm, getLogsByUser) 메서드 정의.
🧠 SensorDataDAOImpl.java
DB 연동 구현 클래스.
→ SQL 실행(INSERT, SELECT), INTERVAL ? HOUR로 시간별 조회 기능 추가.
🧩 SensorDataService.java
비즈니스 로직 인터페이스.
→ MQTT 수신 데이터 처리(saveData), 최신 로그 조회 등 기능 정의.
⚡ SensorDataServiceImpl.java
MQTT 데이터 파싱 후 DB 저장하는 핵심 클래스.
→ topic.split("/")로 농장번호 추출,
→ payload.split("=")로 센서값 파싱 후 DTO 저장.
🧰 DBUtil.java
DB 연결 관리 유틸.
→ getConnect() / close() 로 연결과 자원 해제 담당.
🔗 전체 흐름
MQTT → Service(saveData) → DAO → MySQL(sensor_logs)
→ 실시간 센서 데이터를 DB에 자동 저장하는 구조 완성.


// // 특정 팜의 최신 로그 조회 : “현재 환경 상태” 표시할 때 사용
// SensorDataDTO getLatestLog(int farmUid);
// // 특정 팜의 로그 조회 : “그래프나 통계 화면”에서 사용
// List<SensorDataDTO> getLogsByFarm(int farmUid);
// DB에 접근하는 객체만 가능
//int saveData(String topic, String payload);
DTO에서 복잡함의 차이
assignment
review
spi 통신 - T블럭 8,9, 10번
