CLIEN

본문 바로가기 메뉴 바로가기 보기설정 테마설정
톺아보기 공감글
커뮤니티 커뮤니티전체 C 모두의광장 F 모두의공원 I 사진게시판 Q 아무거나질문 D 정보와자료 N 새로운소식 T 유용한사이트 P 자료실 E 강좌/사용기 L 팁과강좌 U 사용기 · 체험단사용기 W 사고팔고 J 알뜰구매 S 회원중고장터 B 직접홍보 · 보험상담실 H 클리앙홈
소모임 소모임전체 ·굴러간당 ·아이포니앙 ·주식한당 ·MaClien ·방탄소년당 ·일본산당 ·소시당 ·개발한당 ·자전거당 ·이륜차당 ·AI당 ·안드로메당 ·소셜게임한당 ·골프당 ·바다건너당 ·걸그룹당 ·곰돌이당 ·나스당 ·콘솔한당 ·가상화폐당 ·키보드당 ·클다방 ·패스오브엑자일당 ·리눅서당 ·퐁당퐁당 ·물고기당 ·전기자전거당 ·노젓는당 ·디아블로당 ·찰칵찍당 ·라즈베리파이당 ·3D메이킹 ·X세대당 ·ADHD당 ·AI그림당 ·날아간당 ·사과시계당 ·육아당 ·배드민턴당 ·야구당 ·농구당 ·블랙베리당 ·비어있당 ·FM당구당 ·블록체인당 ·보드게임당 ·활자중독당 ·볼링친당 ·캠핑간당 ·냐옹이당 ·문명하셨당 ·클래시앙 ·요리한당 ·쿠키런당 ·대구당 ·DANGER당 ·뚝딱뚝당 ·개판이당 ·동숲한당 ·날아올랑 ·e북본당 ·갖고다닌당 ·이브한당 ·패셔니앙 ·도시어부당 ·FM한당 ·맛있겠당 ·포뮬러당 ·젬워한당 ·안경쓴당 ·차턴당 ·총쏜당 ·땀흘린당 ·하스스톤한당 ·히어로즈한당 ·인스타한당 ·IoT당 ·KARA당 ·꼬들한당 ·덕질한당 ·어학당 ·가죽당 ·레고당 ·LOLien ·Mabinogien ·임시소모임 ·미드당 ·밀리터리당 ·땅판당 ·헌팅한당 ·오른당 ·영화본당 ·MTG한당 ·소리당 ·노키앙 ·적는당 ·방송한당 ·PC튜닝한당 ·그림그린당 ·소풍간당 ·심는당 ·품앱이당 ·리듬탄당 ·달린당 ·Sea마당 ·SimSim하당 ·심야식당 ·윈태블릿당 ·미끄러진당 ·축구당 ·나혼자산당 ·스타한당 ·스팀한당 ·파도탄당 ·테니스친당 ·테스트당 ·빨콩이당 ·공대시계당 ·여행을떠난당 ·터치패드당 ·트윗당 ·창업한당 ·VR당 ·시계찬당 ·WebOs당 ·위스키당 ·와인마신당 ·WOW당 ·윈폰이당
임시소모임
고객지원
  • 게시물 삭제 요청
  • 불법촬영물등 신고
  • 쪽지 신고
  • 닉네임 신고
  • 제보 및 기타 제안
© CLIEN.NET
공지[점검] 잠시후 서비스 점검을 위해 약 30분간 접속이 차단됩니다. (금일 18:15 ~ 18:45)

개발한당

자유 SOHO규모의 MQTT시스템 구축에서 게이트웨이 제작기 3

1
2024-11-06 15:32:48 수정일 : 2024-11-10 09:25:59 121.♡.45.14
모모는철부지

SOHO규모의 mqtt시스템 구축하고 있습니다.

MQTT 브로커는 mosquitto를 쓰고,  디바이스는 라즈베리파이, ESP32, ESP8266을 쓰고 있습니다.


1.

라즈베리파이+ESP32를 시리얼로 결합해서 게이트웨이로 구성했습니다.

라즈베리파이는 MQTT 구독,발행,토픽과 JSON(페이로드)처리를 담당하고 

ESP32(마스터)는 ESP-NOW통신을 담당합니다.

말단 노드(슬레이브)는 거의다가 ESP8266을 씁니다.


2.

그리고 이번에는 좀더 간략화된 토폴로지를 구축하고자
(시리얼 송수신 처리가...파고들수록 은근... 어렵습니다.ㅠ)

ESP32단독+W5500(이더넷 모듈)로 게이트웨이를 구성해서 MQTT접속은 W5500으로 하고

말단 노드들(슬레이브)과의 ESP-NOW통신은 ESP32가 담당하도록 했습니다.(보안 최대 10개, 비보안 최대 20개까지)

이렇게 하면 라즈베리파이의 강력한 성능(파이썬의 전광석화같은 개발속도, 멀티프로세서,멀티쓰레드 등등)을

포기해야 하지만 대신 시리얼 송수신 처리가 없어지므로 한결 맘 편합니다.

결국 1번은 좀 더 유연하고 고성능이 필요한 경우

2번은 간단한 코드로 구성하고자 할 경우로 역할 분담을 하고자 합니다.


1번은 좀더 디테일한 설계가 필요해서 지금 진행중이고(PCB완성되는대로 사진 올려보겠습니다)

2번은 PCB주문해서 슬롯 삽입방식으로 멀티 스택으로 구성했습니다.

슬롯카드별로 하나의 ESP32가 들어가 있고, W5500은 메인보드에 장착했습니다.


슬롯카드에 LoRa(시리얼 방식의 E220-900T22D 모델)를 수직 거치하끔 해서

경우에 따라서는 LoRa게이트웨이로도 사용가능하도록 했습니다.


ESP-NOW 통신,  LoRa통신, W5500을 통한 이더넷 통신 셋다가 동시 동작이 가능하다면

멀티게이트웨이로도 사용가능할 듯 보입니다.(아직 이건 테스트 전)


어차피 이 시스템은 CPU부하위주가 아닌 IO 입출력 부하위주라서 현재 예상으로는 가능도 할 것 같습니다만...

멀티 스택을 쓰는 이유가 역할 분담인데, 굳이 그렇게까지 쓸까 싶네요.



이번에 1번과 2번에 대한 설계에 RESTFUL API 개념을 도입한다고는 했는데,

지금으로서는 영~ 짝퉁스러워 보일 뿐입니다.


코딩이야 chatGPT가 거의 99% 해주고 있어서 큰 어려움은 없습니다만.

JSON설계가 젤로 어렵네요.


이번 작업을 하면서 느낌점은,

앞으로 초인공지능 시대에 인간은 결국 설계디자인쪽으로 가야 하는것 같습니다.


향후 시간이 나면(대기중인 프로젝트가 많이 있다는 건 안비밀...ㅠ) 

지금 처박혀 있는 9세대 i7 컴퓨터에  우분투 설치하고

RabbitMQ라든지 AMQP를 설치해서 한번 쪼물딱거려보고 싶네요.
mosquitto는 AMQP에 비하면 거의 유치원생 수준입니다.

하지만 라즈베리파이3B에 mosquitto를 올려서 써보니 SOHO규모에서는 차고도 넘치네요.


mosquitto도 한꺼번에 들이닥치는 토픽을 대체적으로 잘 처리는 해주나

시스템 자체에서 큐잉 처리기능은 없는 것으로 알고 있습니다.

그래서 게이트웨이에서 토픽 발행할시 큐에 일단 넣어놓고 100ms~300ms의 간격으로

발행해 주는 가욋일까지도 해주고 있습니다.(혹시나 몰라서...ㅋ)


XMPP도 있으나 요건 살짝 개념이 다르고...

기존의 것들은 비동기식, 요건 실시간 개념...

게다가 이건 XML기반이라서

여태껏 JSON으로 모든걸 설계해온 제 입장에서는 일단 이런게 있다...정도로만 해서 말려구요.


아래는 도착한 PCB로 카드 5장 만들어서(슬롯카드는 추가 10장 주문, W5500도 7개 추가 주문)

테스트해 본 결과입니다.


6개짜리 멀티스택을 두개 만들면 게이트웨이가 총 12개 생기는것이라서

당분간 MQTT 클라이언트 숫자가 늘어나도 두다리 쭉  뻗고 자겠네요. ㅎ


(PS)

대다수가 ESP8266에서 바로 WiFi를 통해 mosquitto에 접속하면 될 일을 

왜 저리 일을 복잡하게 만드냐고 하실지 모르겠습니다.


일단 제가 이렇게 구성하는 이유는


첫째, 말단 노드(ESP8266)와 게이트웨이의 ESP32는 SD(Software Define)개념과 RESTFUL API으로 가기 위해서입니다.

TCP/IP(LTE,WiFi,ethernet)기반에서

MQTT client(사용자앱) <-> MQTT broker 혹은

게이트웨이 <-> MQTT broker

간에는 토픽구조 중심으로,


ESP-NOW통신프로토콜 기반에서

게이트웨이(1) <-> 슬레이브(N,최대 20)은

슬레이브의 mac address가 포함된 JSON오브젝트 중심으로


SD과  RESTFUL API개념을 도입하기 위해서입니다.

(개념을 차용할 뿐 짝퉁 수준입니다. ㅎ)


둘째, WiFi 접속 디바이스의 급증으로 인한 공유기 부담문제입니다.(현재 대략 110여개 정도입니다.)

게이트웨이화 하면 최대 20개의 WiFi접속이 ethernet 1개로 대폭 줄어듭니다.


셋째,

기상관측장비, 야적장의 물류관리 등 NON-TCP/IP환경에 있어야 하는 

슬레이브 노드(게다가 흔하게 배터리 동작이라는 제약조건까지)들은 

거리가 된다면 ESP-NOW로, 이걸 벗어나는 영역은 LoRa통신으로 

말단 토폴로지를 구성할수 있어 

상황에 따른 토폴로지 구현이 굉장이 유연합니다.


넷째,

있어보이ㄱ....아...아닙니다. ㅎ


잡설이 길었습니다.

아래는 사진들입니다.



20241028_235946.jpg


20241029_000013.jpg


20241029_000028.jpg


20241029_000059.jpg


20241026_025512.jpg


20241107_192047.jpg

마지막 사진은 ESP-NOW의 송수신 거리를 벗어나는 상황에서는 LoRa(최대 5km)로도 쓸수 있는 장면입니다.

모모는철부지 님의 게시글 댓글
  • 주소복사
  • Facebook
  • X(Twitter)
댓글 • [3]
삭제 되었습니다.
모모는철부지
IP 121.♡.45.14
11-10 2024-11-10 09:18:04
·
@이거다구라야님
우선은 개인적 차원에서 진행하는 프로젝트입니다.
esp8266는 WiFi(저는 주로 WiFi접속 대신 ESP-NOW용으로 많이 씁니다만...)되면서 그럭저럭 괜찮은 성능의 mcu입니다.
가성비로 따지면 이걸 따라올만한 건 없을 듯 합니다.

그리고 아두이노 생태계에서 개발이 가능한 건 제가 볼때 신의 한수인것 같습니다.

또한 ESP32와 ESP8266간에도 ESP-NOW 프로토콜이 완벽하게 호환이 되는것도 큰 장점입니다.
이것 때문에 위의 프로젝트가 가능한겁니다.
두러브
IP 58.♡.176.36
11-08 2024-11-08 01:39:58
·
정말 궁금해서 여쭤봅니다.
메세징 브로커를 이렇게 구현하는 목적이 무었인가요?
모모는철부지
IP 121.♡.45.14
11-10 2024-11-10 09:15:11 / 수정일: 2024-11-10 09:22:27
·
@두러브님
WSN(Wireless Sensor Network)가 목적입니다.
그럼 WSN의 목적은 또 무엇이냐? 라고 하면 인프라(공공인프라, 산업인프라, 스마트팜,환경감시 등등)를
실시간 모니터링하고, 시계열 데이터(influxDB)를 축적하고 축적된 데이터를 시각화해서 보여주며(grafana)
ML(machine learning)을 통해 트리거값에 도달하면 인간에게 이벤트 푸쉬(소리,진동,시각)하는 겁니다.
최종목표는 예지보전(Predictive Maintenance)입니다.

그리고 인터넷에 보면 RESTful API에 대한 개념설명이 많고,
대부분 웹 서버,클라이언트 구조에서 예제를 보여주고 있습니다.

그래서 흔히들 RESTful API서버가 일종의 웹기반 프레임워크라고 잘못 이해를 하시는데,
메시징 브로커와 게이트웨이가 주축이 된 WSN도 RESTful API 구현이 가능합니다.
전, 지금 그것도 같이 적용해서 진행하고 있습니다.
새로운 댓글이 없습니다.
이미지 최대 업로드 용량 15 MB / 업로드 가능 확장자 jpg,gif,png,jpeg,webp
지나치게 큰 이미지의 크기는 조정될 수 있습니다.
목록으로
글쓰기
글쓰기
목록으로 댓글보기 이전글 다음글
아이디  ·  비밀번호 찾기 회원가입
이용규칙 운영알림판 운영소통 재검토요청 도움말 버그신고
개인정보처리방침 이용약관 책임의 한계와 법적고지 청소년 보호정책
©   •  CLIEN.NET
보안 강화를 위한 이메일 인증
안전한 서비스 이용을 위해 이메일 인증을 완료해 주세요. 현재 회원님은 이메일 인증이 완료되지 않은 상태입니다.
최근 급증하는 해킹 및 도용 시도로부터 계정을 보호하기 위해 인증 절차가 강화되었습니다.

  • 이메일 미인증 시 글쓰기, 댓글 작성 등 게시판 활동이 제한됩니다.
  • 이후 새로운 기기에서 로그인할 때마다 반드시 이메일 인증을 거쳐야 합니다.
  • 2단계 인증 사용 회원도 최초 1회는 반드시 인증하여야 합니다.
  • 개인정보에서도 이메일 인증을 할 수 있습니다.
지금 이메일 인증하기
등록된 이메일 주소를 확인하고 인증번호를 입력하여
인증을 완료해 주세요.