조그마한 상가건물관리를 맡고 있는데 거의 모든 제어를 mqtt broker를 통해서 합니다.
급수탱크 펌프제어, 조명제어, 전열관리, 보안경보 등등등...
처음 시스템을 구축할때는 잘 몰라서 mqtt 클라이언트쪽에 하드코딩으로 broker IP주소, 포트, 토픽 등등을 박아놨죠.(지금 생각해 보면 진짜 무식한 짓)
나중에 이런것들이 치명적인 것이 될것이란걸 인지한 후 DNS구축, 프로비저닝 설계구현 등을 구축해야지...하고 맘만 먹고 있었는데 모든 개발자가 그렇듯이 당장 잘 굴러가고 다른 할일이 많은데 굳이...그렇게 안일하게 생각했던게 화근이었습니다.
mosquitto(mqtt broker)가 실행되는 라즈베리파이3B에 나름 전원설계를 탄탄하게 해 놓는다고 DC-DC에 필터회로도 달고, 자동냉각팬도 달고 신경써 놨습니다.
그런데 5년간 문제 없이 돌아가던 라즈베리파이가 하필 오늘 낮에 죽어버렸네요.
아마도 폴리퓨즈가 장시간 사용으로 인해 열화가 된 모양입니다.(나중에 안 사실)
부랴부랴 모니터와 키보드 연결하고 로컬콘솔로 들어가보니 아예 부팅불량(SD카드가 맛이 감...ㅠ)이라서 예전에 백업했던 SD카드로 교체하고 봤더니 undervoltage가 뜨네요. 이건 라즈베리파이3B의 고질적인 문제라고 하던군요.
급한데로 GPIO포트에 바로 5V를 연결해서 하드웨어는 살려서 부팅했는데, 문제는 IP가 기존의 것을 써야 했습니다.(이럴때 하드코딩의 저주가...흑.)
chatGPT와 제미나이의 도움으로 기존 IP로 맞추는데 겨우 성공했습니다.
진짜 얘네들 없었으면 어찌되었을까 생각하니 아찔하네요.
지금 모든 mqtt 서비스가 되는걸 확인하고 이제야 한숨 돌립니다.
날도 추운데 식은땀을 꽤 흘렸네요.
급수탱크 펌프제어는 융합수위센서 가상화(현재 특허 준비중)로 무고장(자체 고장진단) 운영, 게이트웨이도 이중화하고, 현장 제어모듈도 이중화(자동절체)하고, 심지어 통신이 끊겼거나 제어모듈 둘다 죽었을 경우를 대비해 로컬 비상제어 모듈까지 설계했는데...
정작 장애나서 식겁한 부분은 라즈베리파이의 전원부 불량이네요.
수영장 물이 바닥나야 발가벗고 수영하는 사람들이 뽀록난다...는 서양의 속담처럼 이번에 설정값들을 하드코딩에 때려박는 무식한 한 짓이 얼마나 위험천만한지를 경험해 보네요.
일단 한숨 자고 라즈베리파이를 4B로 교체하고 아이피는 일단 기존의 것으로 다시 재세팅하고, 전원부는 외부에서 퓨즈(과전류), Ideal Diode(역급전 방지), TVS(서지 보호)로 구성해서 GPIO에 직접 5V를 집어넣는 걸로 교체해야겠습니다.
생각난김에 안정장치를 좀더 마련한다면 Power OR-ing(전원 이중화)로 파워서플라이와 12V자동차용 배터리로 UPS도 구축해 볼 예정입니다.