관련 백로그
‣
[1] 복잡
센서 노드 MQTT Subscribe 파이프라인 개발
사용자 시나리오
센서 연결 항목 및 계산 변수 수정
- 언제 하나요? 초기 세팅 시, 초기 세팅이 끝났는데 납품 직전 뭔가 잘못되었는지 중간에 확인할 경우, 농가에서 센서를 추가로 구매했을 경우, 농가에서 여러 노드의 센서를 서로 바꿔치기할 경우
- 얼마나 자주 하나요? 자주하지 않음, 특히 농가의 요청으로 인해 수정해야하는 경우는 1/100 확률. 어드민 내에 편리한 UI 는 중요하지 않음. 채널이 있다는 것 자체와 실시간성이 오히려 중요
- 따라서 갱신 주기가 실시간이길 원하며, LTE 처음 세팅되거나 port.config 가 하드웨어에서 수정이 될 때 마다 어드민으로 전송했으면 함
[하드웨어에서]
- 노드박스의 MPU에 직접 접속하여 ~/.ioCrops/sensors/ 디렉토리의 port.config 파일을 수정
- port.config 파일의 형식과 센서 별 포트의 종류는 다음과 같음
uart1 :
{
con="sensor7";
add=[0x01];
key=2;
fnd = [1, 2, 3, 10];
kconstant = 10;
};
[어드민에서]
- 어드민 웹 로그인
- 센서 연결 항목 수정을 진행할 특정 노드(아이오크롭스 제조사)를 선택
- 연결 항목 수정 및 기타 세부 정보 기입하여 하드웨어로 해당 정보 전송
- 일단은 port.config 파일을 그대로 입력할 수 있는 창
- 노드에 센서키 맞게 연결 (원래도 있는 과정)
- 해당 센서키의 데이터가 잘 들어오는지 확인
[아이오팜에서]
- 농가가 아이오팜 웹/앱 로그인
- 농가가 계산함수율 변수 변경
- 하드웨어에 적용
센서 프로그램 재시동 및 웜부팅
- 언제 하나요? 데이터가 끊겼다는 VoC가 들어왔을 때, 노드를 무작위로 둘러보다가 데이터가 이상하다 싶을 때, 쪽보드 디스플레이에 에러코드가 떠있다는 사실을 알았을 때, 새로운 센서를 꽂았는데 농가에서 전원 재부팅을 까먹었을 때는 1시간 뒤에야 제대로 체결되었는지 여부를 알 수 있는데 바로 확인하고 싶을 때
- 재시동(리스타트)와 재부팅에 차이가 있을까요? 보통은 재부팅을 할 것 같은데.. 재시동은 잘 모르겠음
[하드웨어에서]
-
재시동 : 노드박스의 MPU에 직접 접속하여 데몬 프로세스(백그라운드) 로 실행되고 있는 프로그램을 재시작
$ sudo systemctl restart sensor #센서 로깅 앱
$ sudo systemctl restart publisher #클라우드 전송 앱
$ sudo systemctl restart sensor-publisher #통합 앱
-
웜부팅 : 노드박스의 MPU에 직접 접속하여 os 재부팅
[어드민에서]
-
어드민 웹 로그인
-
재시동 또는 웜부팅을 진행할 특정 노드(아이오크롭스 제조사)를 선택
-
재시동의 경우, 재시동할 프로그램 선택하여 하드웨어에 명령 전송
-
웜부팅의 경우, 하드웨어에 명령 전송
-
재시동 또는 웜부팅 이후 에러 없이 동작하는지 확인
센서 에러 로그 확인
[하드웨어에서]
- 프로그램을 포그라운드 실행할 시에는 에러 로그 실시간으로 확인 가능
- 백그라운드 실행 시에는 로그 파일에서 확인
[어드민에서]
- 어드민 웹 로그인
에러 로그를 볼 수 있는 페이지에서 노드 별로 필터를 걸어서 확인 → 에러 로그를 보는게 꼭 필요할까? 일단은 그냥 DB 에만 쌓기
- 그러나 어드민의
최근 데이터 갱신 시간
처럼 노드 리스트에 에러 여부
정도는 간단히 표시되어있으면 좋겠음 (정상 / 에러)
- 에러 떠있는건 상세로 들어가서 봐도 되고
- 크리티컬한 에러 발생 시 슬랙 알람
- 크리티컬한 에러의 종류 정의 필요
- 모뎀이 수신이 원활하지 않을 때, 신호가 약할때도
- 데이터가 잘 안 보내졌을 때, 측정은 되고 있는데, 데이터가 잘 안 보내졌을 때
- 센서 포트를 열어놓았는데, 실제로 센서가 연결이 안되어있을 때 → 근데 이건 쓸데없는 알람이 많이 울릴 것 같긴함
펌웨어 업데이트