산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

Gnuplot 이미지 출력 및 이메일 경고 기능으로 Raspberry Pi 제어 실내 온도 모니터링

내가 일하는 곳에는 많은 컴퓨터가 있는 매우 중요한 방이 있습니다. 이 방의 주변 온도는 이러한 시스템의 성능을 최적화하기 위해 매우 시원해야 합니다.
나는 몇몇 사람들에게 경고를 보낼 수 있는 모니터링 시스템을 만들어 달라는 요청을 받았습니다. 그 방의 에어컨에 문제가 있습니다.
이 빌드의 하드웨어에는 Raspberry pi와 USB 온습도 센서를 사용했습니다.

모니터링을 위해 Gnuplot을 사용하여 3개의 온도 그래프를 플롯하고 해당 그래프의 이미지를 생성했습니다. 그런 다음 현재 상태, 즉 gnuplot 출력 이미지를 네트워크 내의 웹 페이지에서 모니터링할 수 있도록 Raspberry pi에서 호스팅할 전용 HTML 페이지를 만들었습니다.

알림을 위해 Gmail을 사용하기로 결정했습니다. Linux 사용자 잡지에서 몇 가지 예제 코드를 찾았습니다. (물론 필요한 포트 할당을 알고 있으면 모든 메일 서버를 사용할 수 있습니다. )
이를 위해 이러한 알림을 위한 전용 Gmail 이메일 계정을 만들었습니다. 또한 추가 기능으로 경고가 발생하면 이메일에 그래프 하나를 첨부하여 이메일을 받는 사람이 얼마나 급격하게 증가하여 경고가 발생했는지 알 수 있도록 했습니다.

1단계:하드웨어 설정

하드웨어를 설정할 일이 많지 않습니다. Raspberry pi는 Raspian을 실행 중이며 USB 온도 센서는 USB 포트 중 하나에 직접 연결하기만 하면 됩니다.

이 센서의 전력 소비는 최소이며 결과적으로 Raspberry pi에서 직접 전원을 공급했습니다. 그러나 전력 소비가 조금 더 많은 USB 전원 장치의 경우 Raspberry pi의 USB 포트에서 직접 전원을 공급하지 않고 전원 USB 허브를 통해 전원을 공급하는 것이 좋습니다.

온도 센서에 전원이 공급되면 현재 조건의 온도 및 습도 판독값이 포함된 직렬 문자열을 제공합니다.

온도=20.9°C 습도=62.7% 이슬점=13.0°C

파이썬 스크립트는 이 문자열을 구문 분석하고 온도 및 습도 값을 5분마다 3개의 텍스트 파일에 저장합니다. 매일, 24시간 및 48시간 텍스트 파일(차이점은 HTML 섹션의 뒷부분에서 논의됨). 이 파일에서 Gnuplot은 그래프를 생성하고 이후에 각 파일에 있는 데이터 세트의 이미지를 생성합니다.

파이썬 스크립트에 대해 논의하기 전에 라즈베리 파이 준비에 대해 이야기하겠습니다.

모니터링은 온라인으로 하기 때문에 웹서버가 설치되어 있어야 합니다. 나는 라즈베리 파이에서 그 중 몇 가지를 시도했지만 조금 크지만 나는 Apache를 선호합니다. Raspberry pi에 Apache를 설치하려면 다음을 입력하기만 하면 됩니다.

sudo apt-get install apache2

설치하기 전에 "y"를 누르고 예를 선택하면
Apache가 Raspberry pi에 따라 몇 분 동안 설치된다는 메시지가 표시됩니다.

완료되면 python-serial 및 python-gnuplot 플러그라는 두 개의 python 플러그인을 설치해야 합니다. (최근 Raspian 빌드에는 python-serial 플러그인 표준이 있지만 안전하다는 것을 깨달았습니다.)

입력한 것을 설치하려면:

sudo apt-get install python-serial python-gnuplot

프롬프트를 확인한 후 다시 한 번 이 플러그인이 설치됩니다.

이것으로 하드웨어 설정이 완료되었습니다.

2단계:소프트웨어 설정 – 이메일 설정 및 수신자

이메일 주소 생성

소프트웨어에 대해 너무 자세히 알아보기 전에 이메일 알림을 보낼 Gmail 계정을 만드는 것이 좋습니다. (이 예에서는 GMail을 사용하지만 smtp 포트 설정을 알고 있으면 모든 메일 서버를 사용할 수 있습니다.)

파이썬 코드는 매우 간단하지만 필요한 가져오기가 중요합니다. 그들 없이는 아무 것도 작동하지 않습니다.

시간 가져오기부터 *
가져오기 시간

시리얼 가져오기

가져오기 smtplib

Gnuplot 가져오기

수입 OS

가져오기 시스템

마지막으로 메일링 리스트입니다. 물론 이메일 수신자를 추가해야 합니다. 각 이메일 주소는 변수에 저장됩니다.

from_address ='[이메일 보호됨]'
to_address1 ='recipient1.mail.com'

to_address2 ='recipient2.mail.com'

사용자 이름 ='[이메일 보호]@gmail.com'

비밀번호 ='custom_email_password'

3단계:소프트웨어 설정 – 직렬 설정 및 구문 분석

다음으로 직렬 설정을 살펴보겠습니다.

센서의 직렬 출력과 일치하는 매개변수를 설정하기만 하면 됩니다. 센서는 표준 형식인 9600 8 N 1에서 직렬 문자열을 출력합니다.

문자열이 수신된 후 파이썬에서 이 문자열을 구문 분석하는 여러 가지 방법이 있으며 훨씬 더 안정적일 수 있습니다. 내가 하는 방법은 직렬 문자열에서 "temp" 문자를 찾는 것입니다. 일단 위치를 찾으면 다음 46개의 직렬 문자를 문자열로 읽어오기만 하면 됩니다.

수집된 문자열은 이제 배열의 요소처럼 주소를 지정할 수 있습니다. 원하는 데이터가 문자열에서 구문 분석되어 해당 타임스탬프와 함께 3개의 파일에 저장됩니다.

타임스탬프 =strftime("%d%b%Y %H:%M:%S ",localtime())

4단계:소프트웨어 설정 – Gnuplot

Gnuplot은 명령줄 그래픽 도구입니다. 기본 사항을 파악하고 나면 데이터 세트를 그래픽으로 표시하는 데 매우 강력한 도구가 될 수 있습니다.

Gnuplot은 형식이 지정된 텍스트 파일에서 직접 플롯할 수 있으며 이전의 구문 분석 단계에서 가져온 파일이 있습니다.

파일에서 데이터가 있는 위치를 gnuplot에 표시하면 원하는 값을 그릴 수 있습니다. X축에 시간을 사용하고 Y축에 온도를 사용하겠습니다.

텍스트 파일의 형식과 일치하도록 gnuplot의 시간 형식을 가져와야 하기 때문에 내 경험에 비추어 볼 때 시간을 표시하는 것이 가장 어렵습니다.

모든 그래프 옵션이 완료되고 원하는 대로 Gnuplot은 이 그래프에서 이미지를 생성할 수 있습니다. 이것은 나중에 웹 페이지에서 사용할 이미지입니다. 저는 .png 이미지를 사용하기로 선택했고 웹 페이지의 이전 이미지를 교체하고 싶기 때문에 각 이미지의 이름이 동일하므로 이 코드 행을 변경할 필요가 없습니다.

이미지 크기 설정은 html 페이지 최적화와 연결됩니다. 먼저 표준 크기로 놀아본 다음 이미지를 내 화면에 맞추는 실험을 했습니다. 이 프로젝트에서는 오래된 이미지를 저장하지 않기 때문에 스토리지에 있는 파일의 물리적 크기는 소중한 라즈베리 파이 스토리지에 중요한 요소가 아닙니다.

다음은 daily.png 그래프 이미지를 생성하고 저장하는 코드입니다.

g =Gnuplot.Gnuplot(디버그=디버그)

g('cd "' + 경로 + '"' )
g('xdata 시간 설정')

g('set timefmt "%d%b%Y %H:%M:%S"')

g('형식 설정 x "%H:%M\\n%d%b"')

g('제목 설정 "일일 현재 온도 표시"')

g('키 끄기')

g('그리드 설정') g('xlabel "시간\\n날짜" 설정')

g('노란색 설정 [15.0:35.0]')

g('ylabel 설정 "온도 "')

g('설정 데이터 파일에 "NaN"이 누락됨')

g('터미널 png 크기를 800,400으로 설정')

g('설정 출력 "daily.png"')

g('행이 있는 1:($3)을 사용하여 "daily.dat" 플롯')

참고:g('set datafile missing "NaN"')를 읽는 줄, 이 줄의 목적은 플롯에 빈 공간을 그리는 것입니다. 파이썬 스크립트가 주어진 읽기 또는 직렬 전송에 대해 이상한 것을 감지하면 "NaN" 변수가 파일에 기록됩니다.

위의 세 가지 그래프에서 볼 수 있듯이 Daily.png는 데이터의 현재 시간 표시를 제공하는 반면 24_hour.png는 24시간 단위로 동일한 정보를 표시합니다. 48_hour.png 그래프는 센서의 지난 48시간 분량의 데이터를 보여줍니다.

자세한 내용:Gnuplot 이미지 출력 및 이메일 경고 기능으로 Raspberry Pi 제어 실내 온도 모니터링


제조공정

  1. QR, RFID 및 온도 확인을 통한 출입 통제
  2. 1선 DS18B20 센서와 Raspberry Pi로 온도 측정
  3. Raspberry Pi 및 Nagios로 실내 온도 모니터링
  4. DS18B20으로 온도 읽기 | 라즈베리 파이 2
  5. 웹 기반 차트가 포함된 가정(방) 온도 및 습도 모니터 – Raspberry Pi
  6. Raspberry Pi의 온도 모니터링
  7. RASPBERRY PI로 온도 측정
  8. Python 및 Raspberry Pi 온도 센서
  9. Moteino와 Raspberry Pi로 실내 온도 모니터링
  10. Raspberry Pi의 간편한 온도 및 습도