아두이노프로세싱 프로그래밍

초보자를 위한 라즈베리 파이3 DHT11 온습도 ThingSpeak 그래픽 처리 파이선 코딩(업데이트)

coding art 2017. 5. 29. 15:19
728x90

Raspberry Pi 초보자도 할 수 있도록 ThingSpeak 가입 절차를 비롯한 세부적인 내용을 포함하여 업데이트 하였음. 

라즈베리 파이 3에서 파이선 코딩에 의해 센싱한 온습도 데이터를 클라이언트로서 사물인터넷 ThingSpeak 서버 싸이트에 전송하도록 하자.



Raspberry Pi 3 배선은 이미 제작했던 즉 GPIO 4번 선을 사용하는 배선을 그대로 이용하기로 하며 이미 Adafruit DHT11 온습도 측정 센서를 지원하기 위한 라이브러리 작업이 이루어진 것으로 가정하자. 이 부분에 관해서는 이전의 블로그를 참조하기 바란다.

한편 ThingSpeak 서버와 연결하려면 일단 무료 회원등록이 되어 있어야 하며 아울러 ThingSpeak 으로부터 API 키값을 부여 받아야 한다.
그 절차에 관해서 알아보도록 하자.

ThingSpeak.com 싸이트는 MATLAB 소프트웨어로 유명한 회사에서 제공하는 사물인터넷 용 웹서버로서 무료로 측정 채널을 제공하고 있다.



ThingSpeak을 활용하여 Raspberry Pi python 사물인터넷을 만들려면 반드시 무료회원으로 가입하여 API 키 값을 부여 받아야 한다.
ThingSpeak에 가입하려면 반드시 구글의 Email 주소가 필수적이다. 화면상의 ID는 임의로 입력해보았다.
Password를 입력하고 엔터키를 누르면 다음 화면으로 넘어간다.







상당히 장황한 문장 및 입력 창이 나오지만 사물인터넷 코딩과는 그다지 관계가 없으므로 그냥 넘어가도록 하나 마지막 초록색에서 나의 ThingSpeak 계정 사용 여부를 문의하므로 마우스로 클릭하도록 한다.















로그인이 완료된 상태에서 맨 아래의 OK 버튼을 클릭하도록 한다. 이로서 Raspberry Pi 클라이언트 모듈에서 송신되는 데이타를 수신하여 그래프 작성을 위한 준비가 되었다.
Raspberry Pi는 유선이든 무선이든 인터넷 연결이 가능한 상태면 된다.
     




좌측은 ThingSpeak 싸이트의 Channels 탭에서 Private View 화면이다.
이 화면에서 New Channel 버튼을 클릭한 후 자신의 측정 채널을 세팅하기로 하자














현재의 화면은 New Channel을 생성 세팅하는 과정이다. 채널의 명칭 즉 Name을 기상 온습도 데이터를 수집하는 의미에서 Weather_temp_Humidity 로 정허였다. Description 박스는 적절허게 내용을 기입한다. Field1, Field2 는 각각 측정할 데이터의 단위를 표기해 둔다. 총 8개까지의 측정 데이터 그래프를 그릴 수 있다.
Show Location을 체크하고 위도 경도 좌표 데이터를 기입해 둔다. 이는 자신이 올리는 기상 온습도 데이터를 측정한 지리적 위치를 나타내 주게 될 것이다.









마지막으로 SAVE 버튼을 눌러 저장한 후 Private 버튼을 눌러보면 아래의 빈 그래프가 나타난다. 가로 세로 눈금을 세팅하도록 하자.







빨간색 박스의 연필 모양 아이콘을 클릭하여 아래의 창이 뜨면 가로 세로 좌표 축 정보를 지정하도록 한다.












이어서 Field 2 Chart 의 옵션들도 지정하도록 한다.












다음 중요한 스텝은 API keys 탭에서 본인의 API를 부여 받는 일이다. Channel Settings 옆의 API keys 탭을 클릭하여 들어간다. Write API와 Read API 두 종류의 키가 있으나 Write API 키가 필요하다. 이 키 암호는 Raspberry Pi 클라이언트 코드에서 ThingSpeak.com에 연결 요청을 위해 사용되는 개인 정보이다. 가입 후 신규 채널 생성시에 개인 별로 부여되는 고유의 개인 정보이다. 아래의 Key 는 보여주기 위한 하나의 예이다. 자신의 Key를 발급받아 사용해야 한다.


Read Key 도 있는데 그 용도가 다른 사용자가 모니터링이 가능하도록 하는 Key 이다.


일단 이로써 기본 준비가 끝난 상태라면 Raspberry Pi에서 자신의 파이선 코드를 작성하여 RUN 시키도록 하자. 다음의 예제 코드는 API 키 값을 신규로 생성하기 이전의 API 키 값이 입력되어 있는 사례이다.


어느 부분을 수정해해야 하는지 쉽게 알 수 있을 것이다. 갈색 박스의 코드는 비쥴얼 상 두 줄로 되어 있으나 실제로는 한 줄로 처리되어야 한다. 파이선 코딩의 규칙이 대단히 엄격함에 주의하자.








Raspberry Pi의 파이선 클라이언트 코드가 RUN 함에 따라 데이타를 보낼 때 그래프를 관찰해 보기로 한다. 클라이언트 데이터를 준비해서 보낼 때 한 가지 주의할 점은 ThingSpeak.com의 데이터를 수신하는 시간 간격이 15초 이상을 요한다는 점이다. 이러한 점을 감안하여 time.sleep(15) 명령이 적용되었다.

Raspberry Pi의 파이선 클라이언트 코드의 모니터링 창에 출력된 데이터와 그래프 데이터 값 및 기록 시간을 비교해 보도록 하자.

파이선2에서는 ThingSpeak에 데이터를 전송하기 위해서 라이브러리 urllib2를 설치하고 urllib2.urlopen(“인터넷 주소+알파”) 명령을 통해 데이터를 보낸다. 알파에 해당하는 부분에 API 키 값을 비롯한 온습도 데이터 정보들이 포함된다.

이 라이브러리 명은 파이선 2에 국한되며 파이선 3에서는 변경되었음에 유의하자.



파이선 3 에서는 아래와 같이 라이브러리 명과 그 기능이 변경되었다. urllib.request를 사용하여 파이선 2 코드를 수정하였다.
이에 상응하여 urllib.request.orlopen() 명령이 사용되었다.

이 예제 코드도 API 키 값이 신규로 생성하기 이전의 API 키 값이 입력되어 있는 사례이므로 반드시 새로이 생성한 API 키 값을 입력하도록 유의한다.