전산실 온습도 모니터링을 라즈베리파이4로 구축한 사용기 올려봅니다.
1.목적 : 전산실의 온습도를 웹사이트(내부 경영정보시스템)에서 확인이 필요함. 정밀도는 그닥 필요없음.
2.사용제품 : Raspberry PI 4 4GB RAM + 온습도센서(DHT11)
3.사용 SW : OS - raspberrypi 4.19.97-v7l+, 언어 : python3, 라이브러리 : Adtfruit
<구매한 제품 구성품>
1) 라즈베리파이 4 4G RAM
2) 전원부
3) 온습도센서(DHT11)
4) micro SD카드 16G
5) microSD to USB 젠더
6) 케이스 & 쿨러
7) microHDMI케이블
<라즈베리파이에 온습도센서 연결한 모습>
라즈베리파이에 쿨러와 온습도센서를 연결한 모습입니다.
GPIO에 맞게 꼽았네요..
쿨러 : 4,6번
DHT11센서 : 2,7,9번
위에 GPIO에 맞게 꽂아주심 됩니다.
<운영체제 설치>
공식사이트인 https://www.raspberrypi.org/ 사이트에서 Raspbian을 다운로드 받아 BalenaEther로 SD카드에 설치했습니다.
Raspbian은 저는 온습도 모니터링만 하려고 Raspbian Buster Lite로 받아 설치했습니다.
Raspbian 종류가 3가지 정도 있는데 HDMI로 연결하지 않아서 Lite버전으로..
다른 작업이 필요하신 분들은 Desktop을 다운받아 설치하시면 되겠죠.. ^^
운영체제 설치 방법은
https://blog.naver.com/jihko/221755355104
요기를 참고했습니다.
<소프트웨어 설치>
//라즈베리안 소프트웨어 업데이트
# sudo apt-get update
//파이썬3 설치
# sudo apt-get install python3-pip
//python 라이브러리 설치를 위한 setuptools 설치
# sudo python3 -m pip install --upgrade pip setuptools wheel
//온습도 센서 데이터 획득을 위한 Adafruit_DHT 라이브러리 설치
# sudo pip3 install Adafruit_DHT
이렇게 하면 준비는 끝났네요.
온습도 획득이 제대로 되는지 테스트코드를 작성해서 테스트 해보았습니다.
#temp.py import datetime import Adafruit_DHT as dht #온습도센서 모듈에 따라 DHT11, DHT22 변경해야 함 #DHT센서의 핀번호 보통 4를 입력 h,t = dht.read_retry(dht.DHT11,4)
print (h) print (t) |
샘플코드가 잘 돌아가는지 돌려봐야겠죠?
당근 잘 나오네요.. ^^
제가 구상한 시스템 구성은 다음과 같습니다.
<라즈베리파이 crontab 실행 -> 온습도 획득 -> URL을 통해 MIS로 전송 -> MIS에서 화면 표시 및 온도 이상시 SMS 발송>
참고하시라고 샘플코드 올립니다.
<crontab 등록> : 1분에 한번씩 돌아가게 했어요
* * * * * /home/pi/dht11/cron_temp.sh >> /home/pi/dht11/run.log 2>&1
<cron_temp.sh>
python3 /home/pi/dht11/cron_dht.py |
<cron_dht.py>
import datetime import Adafruit_DHT as dht import requests #온습도 획득 hum,temp = dht.read_retry(dht.DHT11,4) #로그파일로 별도로 남기고 싶어서 출력 print("Time : {0:%Y-%m-%d %H:%M:%S} Temperature = {1:0.1f}*C Humidity = {2:0.1f}%".format(datetime.datetime.now(), temp, hum)) if hum is not None and temp is not None : #http://xxx.co.kr/raspberyPI/setDevInfo.php?dev=1&temp=30&hum=60 처럼 URL로 데이터 전송 params = {'dev':1, 't':temp, 'h':hum} r = requests.get(url='http://xxx.co.kr/raspberyPI/setDevInfo.php', params=params) print(r.status_code) #나중에 json으로 데이터 획득을 하기 위해 html파일로 현재 온습도 기록 f = open('/var/www/html/index.html','w') f.write("{"temp":%0.1f, "humi":%0.1f, "date":"%s"}" %(temp, hum, datetime.datetime.now())) f.close() |
최종 화면입니다.
별거 아닌 RaspberryPI 4 + DHT11 센서를 이용한 전산실 온습도 모니터링이었습니다.
아쉬운점은 처음 해보니 DHT11이 정수까지만 나오네요 DHT22는 소수점 첫재짜리까지..
센서에 따라 정밀도가 달라지니..잘 확인해 보시는게 좋겠네요
29개의 댓글이 있습니다.
늦었지만 좋은정보 감사합니다.
Reply이 내용을 바탕으로 회사내 온습도 모니터링을 구축하였습니다.
hush4090님 덕분에 진짜 많이 도움이 되었습니다.
감사합니다.
댓글 남기기
댓글을 남기기 위해서는 로그인이 필요합니다.
로그인 회원가입대단합니다.
Reply여유 되면 저두 만들어봐야겠어요~
정보 정말 감사합니다~!!!(_ _)
댓글 남기기
댓글을 남기기 위해서는 로그인이 필요합니다.
로그인 회원가입소스 전체 공유해 드립니다.
https://drive.google.com/drive/folders/1dPaEETQKux6Y6sj4UGzJA3hfJbkceoH1?usp=sharing
1. dht.zip : 온습도 센서를 가져와서 서버로 보내는 소스
Reply2. raspcontrol.zip : raspcontrol + 온습도 정보를 보여주는 소스 (차트는 구글차트 이용합니다.)
3. temp_mon.sql : mysql 생성 query입니다
댓글 남기기
댓글을 남기기 위해서는 로그인이 필요합니다.
로그인 회원가입와, 따라해보고싶다. 코드 작성 능력이 부럽습니다.
Reply댓글 남기기
댓글을 남기기 위해서는 로그인이 필요합니다.
로그인 회원가입좋은정보 감사드립니다.....^^
Reply댓글 남기기
댓글을 남기기 위해서는 로그인이 필요합니다.
로그인 회원가입잼나는 정보입니다. 라즈베리파이로 이런것도 할수 있군요.
Reply댓글 남기기
댓글을 남기기 위해서는 로그인이 필요합니다.
로그인 회원가입능력자이시네요. 쉬워보여도 직접 실행하기는 쉽지 않은데요. 멋집니다!!
Reply댓글 남기기
댓글을 남기기 위해서는 로그인이 필요합니다.
로그인 회원가입능력자시네요!!
Reply실례가 되지 않는다면 혹시 php소스만 받아볼수있을까요? 정말깔끔하게되어있어서, 저도 활용하고싶네요
디자인은 차트 툴을 사용해서 그린거여서
Reply별다른 소스가 없네요..
사용한 차트 툴은 AUI Grid라는 차트툴이고
www.auisoft.net
요기서 확인해보시면 좋을거 같아요
웹쪽은 제가 잘 몰라서.. ^^;;
댓글 남기기
댓글을 남기기 위해서는 로그인이 필요합니다.
로그인 회원가입와우~~ 대단 하십니다....^^(*
Reply댓글 남기기
댓글을 남기기 위해서는 로그인이 필요합니다.
로그인 회원가입직접 구축하셨다니 대단하네요
Reply예전 전산실에 구축을 해주고 싶네요
댓글 남기기
댓글을 남기기 위해서는 로그인이 필요합니다.
로그인 회원가입언젠가 시도해 볼 날이 오겠죠.. 후기 감사합니다...
Reply댓글 남기기
댓글을 남기기 위해서는 로그인이 필요합니다.
로그인 회원가입라즈베리파이 4 베이직 키트에, 온습도센서(DHT11)만 추가로 구매하셨나요..?
총비용은 20만원 정도 소요되었을 것 같아 보이는데...
MicroSD카드며, MicroSD to USB 젠더는 현재 목적에 불필요해 보이긴한데... 베이직 키트라서 함께 포함해서 구매하셨는것 같아 보이고...
만약 대량 구매해서 활용할거라면, MicroHDMI 케이블도 여러개 구매하지 않아도 될거 같아 보이네요~
딱~ 이런 기능이 필요하긴한데... 아두이노를 이용해서 구현해 볼까 생각하면서 복잡하게 고민했었는데...
Reply라즈베리 파이로 한번 추진해 보아야겠다는 생각이 드네요.
좋은 자료 공유 정말 고맙습니다~ ^^
microSD카드는 운영체제가 설치되는 디스크장치로 반드시 필요하구요..
Reply젠더는 PC에서 microSD로 운영체제 설치시에 필요해서 키트에 포함되어 있더라구요
케이블이야 모니터 연결할게 아니니 필요없긴 합니다.
아~ 라즈베리에... 내장 OS 저장 영역이 따로 없었죠~ ^^;;
Reply그 생각을 미처 하지 못했네요~ ㅎㅎ
아두이노를 생각하면서, 추가 SD 메모리는 필요 없을거라 생각했었네요~
이론상으로는 아두이노 관련 공부도 좀 해 보고, 라즈베리 파이 관련해서도 관심은 가져 왔었는데...
아직, 실제 제품을 만져 보지는 못하고 있다보니...
이번 기회에 라즈베리 파이를 직접 만져 볼수 있는 기회를 한번 만들어 보아야 할것 같습니다.
댓글 남기기
댓글을 남기기 위해서는 로그인이 필요합니다.
로그인 회원가입라즈베리파이는 응용할 곳이 참 많은 듯 합니다.
Reply아무래도 리눅스 기반이다 보니
Reply프로그램으로 처리할 수 있는것들이 많더라구요
특히나 파이썬이 돌아가니
확장성은 무궁무진합니다
여러대 구매해서
또 활용할데를 찾아봐야겠어요
댓글 남기기
댓글을 남기기 위해서는 로그인이 필요합니다.
로그인 회원가입흥미로운 내용 잘보았습니다~
Reply감사합니다
Reply댓글 남기기
댓글을 남기기 위해서는 로그인이 필요합니다.
로그인 회원가입능력자시네요 bbb
Reply감사합니다
Reply댓글 남기기
댓글을 남기기 위해서는 로그인이 필요합니다.
로그인 회원가입좋은 정보 감사합니다. 저희도 좀 저렴한 비용으로 관리하고 싶네요..
Reply저도 처음해본건데 어렵지 않더라구요
Reply한번 도전해 보시는것도 좋을거 같아요
댓글 남기기
댓글을 남기기 위해서는 로그인이 필요합니다.
로그인 회원가입아두이노 보다 라즈베리 파이가 비용은 조금 더 많이 들어도, 간편하게 목적을 달성할 수 있어서...
여러가지로 장점이 많은것 같아 보이네요.
참고에 많은 도움이 될것 같습니다.
소스 코드에서 제가 이해 안되는 부분이...
Replyhome root의 index.html에 JSON 포멧으로 온도, 습도 data를 출력하고 있는데, 결과 화면은 PHP 파일인 temp_device.php를 실행해서 보고서 형태로 보여 주고 있네요~
특별한 이유가 있나요..?
index.html이 아닌 다른 데이터용 File에다 온도, 습도 자료를 생성해 주는게 맞지 않을까 싶기도 하고...
index.html로 write하는 이유는
Reply지금은 URL로 온습도 데이터를 넘겨주는데
나중에라도 외부 서버에서 라즈베리파이로 접속해서 데이터를 가져갈 경우가 있어서
아파치를 돌리고 다른서버에서 직접 데이터를 당겨갈때 하려고 html로 작성했습니다.
데이터 출력하는건 URL로 보낸 데이터를 우리 MIS서버에서 보여주느라 그런거구요..
파일 이름 넣기 귀찮아서 그냥 index.html로 만든겁니다.
temp.json 형태로 저장해도 바로 볼수 있으니 필요에 따라 바꾸셔도 될듯 싶네요
MIS 서버에서 PHP로 작성된 프로그램이, 라즈베리 파이 컴퓨터의 웹서버에 접속해서 기본 웹 페이지를 html 포멧이 아닌, JSON 포멧으로 읽어와서 보고서 형태로 보여 준다는 의미이시죠..?
Reply특별한 목적이 있어서 index.html로 자료를 생성하는건 아니고... ^^
지금은 라즈베리파이에서 PHP URL을 호출해서 전송해 주는 방식이구요
Reply아주 나중을 위해서
다른서버에서 라즈베리파이로 직접 접속해서 데이터를 가져올때 써먹을려고 추가한겁니다
지금은 아파치가 돌아가면 웹에서 바로 확인 가능한 용도 정도로 사용하는거구요
댓글 남기기
댓글을 남기기 위해서는 로그인이 필요합니다.
로그인 회원가입직접 구축하시고 대단하시네요...
Reply비용은 어느정도 들었나요?
라즈베리파이 4 베이직키트 + DHT11센서 포함해서 10만원 보다 조금 더 들어갔네요..
Reply처음 사용해보는거라 베이직키트 구매했거든요
https://www.icbanq.com/P010240507
위에 모델로 구매했습니다.
댓글 남기기
댓글을 남기기 위해서는 로그인이 필요합니다.
로그인 회원가입