ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • IoT 발아기(7) - JSN270 연결
    Projects/Arduino 2020. 2. 17. 07:14

    와이파이로 JSN270을 웹서버에 연결한다. 서버와 클라이언트 개념에 대해 짚고가자.

     

    1.  서버와 클라이언트 
     (1) 서버와 클라이언트란? 
     
    서버는 일반적으로 클라이언트에게 네트워크를 통해 서비스를 제공하는 시스템을 말하는데, 여기서 클라이언트는 서비스를 사용하는 사용자 혹은 사용자의 단말기를 가리킨다.  자세히는, 서버는 웹페이지, 사이트, 또는 앱 등을 저장하는 컴퓨터이다. 클라이언트의 장비가 웹페이지에 접근하기를 원할 때, 서버로부터 클라이언트의 장치로 웹페이지의 사본이 다운로드 된다. 클라이언트는 웹 사용자의 인터넷이 연결된 장치들과 이런 장치들에서 웹에 접근할 수 있도록 하는 소프트웨어(크롬, 파이어폭스 등)이다. 
     
    서버와 클라이언트가 통신을 하는데(클라이언트가 서버에 원하는 것을 요청하면 서버가 그에 대한 응답을 하는 데) 필요한 것들이 있다.  
     
    ● 인터넷 연결 : 웹에서 데이터를 보내고 받을 수 있게 해준다.
    ● TCP/IP : Transmission Control Protocol (전송 제어 규약)과 Internet Protocol (인터넷 규약)은 데이터가 어떻게 웹을 건너 여행해야 하는지 정의하는 통신 규약이다. 
    ● DNS : Domain Name System Servers (도메인 이름 시스템 서버)는 웹사이트를 위한 주소록과 같다. 브라우저에 웹 주소를 입력할 때, 브라우저는 그 웹사이트를 검색하기 전에 DNS를 살펴본다.브라우저는 HTTP 메시지를 올바른 장소로 전송하기 위해 그 웹사이트가 있는 서버가 어떤 것인지 찾아야 한다. 
    ● HTTP : Hypertext Transfer Protocol (하이퍼텍스트 전송 규약)은 클라이언트와 서버가 서로 통신할 수 있게 하기 위한 언어를 정의하는 어플리케이션 규약이다. 
     

     
    브라우저에 웹 주소를 입력할 때, 아래와 같은 과정을 거쳐 서버와 클라이언트간의 통신이 일어난다. 

    1. 브라우저는 DNS 서버로 가서 웹사이트가 있는 서버의 진짜 주소를 찾는다.
     
    2. 브라우저는 HTTP 요청 메시지를 서버로 전송한다. 이 메시지, 그리고 클라이언트와 서버 사이에 보내진 다른 데이터들은 TCP/IP를 사용한 인터넷 연결을 건너 보내진다. 

    3. 제공된 서버는 클라이언트의 요청을 승인하고, 서버는 웹사이트를 볼 수 있다는 의미를 가진 ‘200 OK’라는 메시지를 클라이언트에게 보낸다. 그리고 웹사이트의 파일들을 브라우저에게 보낸다.  

    4. 브라우저는 이 파일들을 받아 웹사이트를 만들어 사용자에게 보여준다. 
     
    (2) DNS란? 

    실제 웹 주소는 우리가 사용하는 URL 처럼 이름을 가지고 있지 않고, 숫자들로 이루어져있다. (예: 173.194.121.320)  이것은 IP 주소라고 하고, 웹의 하나뿐인 특정 위치를 나타낸다.
    하지만 이 숫자들을 기억하기 쉽지 않고, 이를 해결하기 위해 DNS라는 것이 생겼다. DNS는 사용자가 브라우저에 입력하는 웹 주소(www.google.com 같은)를 웹사이트의 실제 IP주소에 맞춰주는 특별한 서버이다. 
    아래 그림처럼, 실제로 특정 웹 사이트에 접속할 때, url 이 아닌 웹사이트의 실제 주소를 입력해도 접속이 가능하다. 

     
     
    2.  HTTP 통신 

    (1) HTTP 에 대하여  

    HTTP는 인터넷상에서 데이터를 주고 받기 위한 서버-클라이언트 모델을 따르는 프로토콜이다. 어플리케이션 레벨의 프로토콜로 TCP/IP 위에서 작동한다. HTTP 는 어떤 종류의 데이터든지 전송할 수 있도록 설계되어 있는데, 인터넷 상에서 흔히 볼 수 있는 HTML로 작성된 문서외에도 이미지, 동영상, 오디오 등이 있다. 

    (2) 작동방식 

    HTTP는 서버-클라이언트 모델을 따른다. 클라이언트에서 서버에 요청(request)를 보내면 서버는 그 요청을 처리해서 응답(response)한다. 웹서버는 보통 80 번 포트로 서비스한다. HTTP는 Connectless 방식으로 작동한다. 서버에 연결하고, 요청해서 응답을 받으면 연결을 끊어버린다. 기본적으로는 자원 하나에 대해서 하나의 연결을 만드는데 이런 작동방식은 아래와 같은 장점과 단점을 가진다. 

    ● 장점 : 불특정 다수를 대상으로 하는 서비스에 적합한 방식이다. 수십만명이 웹 서비스를 사용하더라도 접속유지는 최소한으로 할 수 있기 때문에, 더 많은 유저의 요청을 처리할 수 있다. 

    ● 단점 : 연결을 끊어버리기 때문에, 클라이언트의 이전 상태를 알 수가 없다. 이러한 HTTP의 특징을 stateless 라고 하는데, connectless 로 부터 파생되는 특징이라고 할 수 있다. 클라이언트의 이전 상태 정보를 알 수 없게 되면, 웹 서비스를 하는데 당장에 문제가 생긴다. 예를 들어 클라이언트가 과거에 로그인을 성공하더라도 로그 정보를 유지할 수 없다. HTTP는 이를 해결하기 위해 cookie를 이용하고 있다.  

    (3) HTTP request 
     


    클라이언트가 서버에 어떤 것을 요청(request)하면 서버는 그 요청에 응답(response)한다. 이 때, 서버와 클라이언트는 HTTP라는 프로토콜을 사용해 서로에게 요청과 응답을 전달한다. 
    그리고 당연히 클라이언트의 요청에는 다양한 종류가 있으며, 이를 메서드(method)라 부르기도 한다. 다음은 요청에 사용할 수 있는 메서드들이다. 
     
    ● GET : 정보를 요청하기 위해 사용한다. URL(URI)형식으로 웹서버측의 리소스(데이터)를 요청한다. 
    ● HEAD : 메시지의 헤더 정보만 요청한다. GET 과 비슷하나, 실제 문서를 요청하는 것이 아니라, 문서의 정보를 요청한다. 따라서 응답 메시지에 본문(Body)이 없이, 헤더만을 보내게 된다. 해당 자원이 존재하는지 혹은 서버에 문제가 없는지를 확인하기 위해 사용한다. 
    ● POST : 정보를 보내기 위해 사용한다. 클라이언트에서 서버로 어떤 정보를 제출하고자 할 때, 요청 데이터를 HTTP의 바디에 담아서 전송한다. 만약 새롭게 작성된 리소스라면 서버측은 HTTP 헤더 항목 중 ‘Location:’에 URI 주소 정보를 포함시켜 응답한다. 
    ● PUT : 정보를 갱신하기 위해 사용한다. POST 처럼 정보를 서버로 제출하는 것으로 형식은 동일하나, 갱신 위주이므로 응답메시지의 HTTP 헤더 항목 중  ‘Location’을 보내지 않아도 된다. 
     ● DELETE : 정보를 삭제하기 위해 사용한다. 
     ● OPTIONS : 웹서버가 제공하는 메서드의 종류를 요청한다. 응답메시지의 HTTP 헤더에서 ‘Allow : GET, POST, HEAD’ 처럼 보내진다. 
     ● TRACE : 요청 리소스가 수신되는 경로를 보여준다. 
     
    한편, 보안상의 이유로 GET, POST 2 개 혹은 OPTIONS 포함 3개만을 허용하는 웹서버가 대부분이다. 

    출처 www.jmpsys.com 

     

    산업용무선AP 와이파이장비제조 장거리무선브릿지 아웃도어와이파이메쉬 로라 LoRa WiFi

    국내 무선AP 와이파이장비 메쉬장비 제조 로라 LoRa 장비 제조 회사소개 제품소개 매뉴얼 브로셔 자료 다운로드센서 블로그 자료 제공

    www.jmpsys.com

     

     

     

     

     

     

    SSID와 KEY에는 각각 와이파이 공유기 이름과 비밀번호를 적는다.

     

    AUTH에는 공유기 보안유형을 적는데 192.168.0.1을 검색해 들어가면 공유기 설정에서 확인할 수 있다.

     

    WEP64로 설정되어 있다.

     

    IP, 서브넷마스크, 게이트웨이는 명령프롬프트->ipconfig 를 통해 확인하자.

     

     

     

    JSN-270을 포함한 와이파이쉴드 예제에서 at명령어가 많이 쓰인다. 다음을 참고하자

     

     

    항목 명령어 설명 

    무선랜 관련
     
    at+ws 무선 채널을 탐색하여 주변 무선랜 장치를 검색
    at+wauto Simple connection 을 위한 무선 설정 
    at+wsec 무선 암호 모드 설정 
    at+wwpa WPA/WPA2 암호 설정. 자동으로 암호화 모드는 2 가 됨. 
    at+wwep WEP 암호 설정. 자동으로 암호화 모드는 1이 됨. 
    at+wstart 현재 설정으로 무선 연결 
    at+wclose 현재 무선 연결을 해제 at+wrssi 현재 무선 연결된 신호 세기 확인 
    at+wstat 무선 연결 상태 확인 
    at+wpspbc WPS PBC 모드로 무선 연결 
    at+wpsstop WPS 모드 중단 
    at+psmode 무선 Power save 모드 설정 
    at+p2p_find(option) 주변 WiFi direct 장치 검색 
    at+p2p_stop(option) 주변 WiFi direct 장치 검색 중지 
    at+p2p_connect(option) 검색된 WiFi direct 장치에 무선 연결 
    네트워크 관련 
    at+ndhcp IP를 자동으로 설정 
    at+nset IP를 수동으로 설정 
    at+ndhcpsrvr DHCP 서버 사용 설정
    at+ndhcpsrvrcfg DHCP 서버 설정
    at+nstat 네트워크 연결 상태를 확인
    at+ping Remote 시스템에 ping 응답 요청
    at+nmac MAC 주소 확인 
    at+nslookup DNS에서 domain name 의 IP 주소를 검색 
    소켓 관련 

    at+nauto Simple connection 을 위한 소켓 설정 
    at+send 연결된 소켓을 통해 Remote로 STRING 데이터 전송.
    at+sendb 연결된 소켓을 통해 Remote로 BINARY 데이터 전송. 
    at+socket 현재 설정으로 소켓 연결 
    at+nclose 현재 연결된 모든 소켓을 닫기 
    at+cid 현재 연결된 소켓 확인 
    at+mqtt_set MQTT client 설정 
    at+mqtt_get MQTT client 설정 보기 
    at+mqtt_pub MQTT client 메시지 publish 
    at+mqtt_sub MQTT client subscribe 
     
    기타 

    at AT 명령 프롬프트 확인 
    at+echo 로컬 에코 설정 
    atb 시리얼 통신 설정 
    atc Auto connection 사용 
    ata Simple connection 연결 
    at+exit AT 명령 모드에서 데이터 통신 모드로 전환 
    at+ver 펌웨어 버전 확인 
    at+uptime 시스템 가동 시간 확인 
    at+timeout 시스템 내의 timeout 설정 
    at+reset 시스템 재시작 
    at&f 현재 설정에 공장 초기 설정 적용 
    at&v 현재 설정 보기
    at&r 플래시 메모리에 저장된 설정 보기
    at&w 플래시 메모리에 현재 설정 저장 
    at+gpiocfg GPIO 입출력 모드 설정 
    at+gpioset GPIO 출력 값 설정
    at+gpioget GPIO 입력 값 읽기 
    at+rs485 Half-duplex RS485의 UART TX enable을 GPIO14로 출력 
    at+fwup XMODEM 프로토콜을 사용하여 펌웨어 업그레이드 

     

    업로드를 하면

    초록색 불이 하나씩 차례대로 들어온다.

     

    각각 WIFI, IP, SOCK 이라고 적혀있는데, 1.WIFI연결시 2. IP할당 받을 시 3. 소켓 연결시에 불이 들어온다.

     

     

    다음과 같이 시리얼 로그가 뜨면 성공이다. 

     

    IP = 192.168.0.27

     

    위 주소로 내부아이피가 자동할당되었음을 알 수 있다.

     

     

     

    로컬 접속

     

    크롬 접속창에 JSN270의 내부 아이피를 검색

     

    위 사진의 링크를 누르면 D13에 연결된 LED를 켜고 끌 수 있다. 

     

    로컬 접속은 같은 와이파이를 쓰는 기기 아무데서나 브라우저 접속창에 jsn270의 아이피를 검색하면 할 수 있다.

     

    하지만 그러면은 IoT의 의미가 없다. 와이파이로 연결되는 범위 뿐 아니라 어디서든 컨트롤 가능하게 하려면 어떻게 해야할까?

     

    에 관해서 다음 글에서 다뤄볼 예정이다

     

     

Designed by Tistory.