IIoT 엣지 디바이스 HTTP 연결 구현: 라즈베리 파이 DHT-12 튜토리얼
편집자 주: 산업용 사물인터넷(IIoT)은 산업 운영에 대한 깊은 통찰을 제공해 연결된 기계와 시스템의 효율성을 높입니다. 대규모 IIoT 솔루션은 계층형 아키텍처에 의존해 다양한 센서에서 데이터를 수집하고, 안전하게 클라우드로 전송하며, 원시 데이터를 실행 가능한 인텔리전스로 전환하는 분석을 실행합니다. 산업용 인터넷 애플리케이션 개발 에서 저자들은 IIoT 아키텍처를 해부하고 이러한 까다로운 요구사항을 충족하기 위한 전략을 개괄합니다.
알레나 트라우키나, 자얀트 토마스, 프라샨트 티아기, 키쇼레 레디팔리 저, '산업용 인터넷 애플리케이션 개발'에서 발췌·각색.
3장. IIoT 엣지 개발 (계속) 알레나 트라우키나, 자얀트 토마스, 프라샨트 티아기, 키쇼레 레디팔리 저
애플리케이션 계층 프로토콜 – HTTP
아래는 DHT-12 온습도 센서에서 라즈베리 파이 허브와 HTTP 프로토콜을 사용해 원격 서버로 데이터를 전송하는 실습 예제입니다.
DHT-12 센서에서 수신기로의 데이터 흐름
HTTP는 웹에서 가장 널리 채택된 프로토콜로, 당신이 사용하는 거의 모든 웹사이트와 모바일 애플리케이션의 기반이 됩니다. 아래 표는 주요 특성을 요약해 귀하의 IIoT 시나리오에 적합한지 판단하는 데 도움을 줍니다.
키(Key) 값(Value)
오픈 소스 예
OSI 계층 애플리케이션
데이터 타입 텍스트, HTML, 스크립트, 스타일, 폰트, JSON, XML, 스트림, 이진
제한사항 대용량 이진 페이로드에 부적합
가능한 연산 데이터 송수신
지연 시간 낮음
용도 온디맨드 요청
보안 예 (TLS/SSL)
압축 예 (예: gzip)
예제 애플리케이션 구축을 위해 다음 소프트웨어와 하드웨어 구성 요소가 필요합니다.
필수 소프트웨어:
필수 하드웨어:
라즈베리 파이 3 모델 B
2A/5V 전원 어댑터
8GB+ 마이크로SD 카드 + SD 어댑터
DHT-12 온습도 센서
브레드보드와 듀퐁 케이블
유선 연결용 이더넷 케이블
장치 조립
아래 배선도를 따라 DHT-12 센서를 브레드보드로 라즈베리 파이에 연결하세요.
SD 카드 준비
라즈베리 파이 OS 에서 최신 라즈비안 라이트 이미지를 다운로드하세요.
SD 카드를 컴퓨터에 삽입하고 에처(Etcher) 로 이미지를 플래싱하세요 (https://www.balena.io/etcher/ ).
/boot 파티션에 빈 파일 ssh를 생성해 SSH를 활성화하세요:cd /Volumes/boot touch ssh
/boot에 wpa_supplicant.conf를 생성해 Wi-Fi를 활성화하세요:network={ ssid="YOUR_SSID" psk="YOUR_WIFI_PASSWORD" }
SD 카드를 라즈베리 파이에 다시 삽입하고 전원을 켜세요.
파이 부팅 후 SSH로 로그인(기본 자격증명: pi/raspberry)해 센서 애플리케이션 구성을 시작할 수 있습니다.
Node.js 프로젝트 설정
프로젝트 디렉토리 생성:mkdir -p ~/sensor
~/sensor/package.json에 다음 구성 추가:{ "name": "sensor", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "start": "node index.js", "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC", "dependencies": { "request": "^2.81.0", "rpi-dht-sensor": "^0.1.1" } }
~/sensor/index.js에 다음 코드 붙여넣기, REMOTE-SERVER-ADDRESS.com을 서버 URL로 교체:var rpiDhtSensor = require('rpi-dht-sensor'); var request = require('request'); var receiver = 'https://REMOTE-SERVER-ADDRESS.com:8080'; var dht = new rpiDhtSensor.DHT11(2); function read() { var readout = dht.read(); var data = { temperature: readout.temperature.toFixed(2), humidity: readout.humidity.toFixed(2) }; console.log(data); data.device = 'raspberry'; request.post({url: receiver, form: data}, function(err) { if(err) console.log('Failed to send to ' + receiver); }); setTimeout(read, 1000); } read();
선택 사항: 컨테이너화 배포용 Dockerfile 생성:FROM hypriot/rpi-node:boron-onbuild
프로젝트 디렉토리에서 npm install 실행 후 npm start로 애플리케이션 시작. 센서가 매초 온도와 습도 측정값을 지정된 HTTP 엔드포인트로 전송합니다.
클라우드 수집, 분석, 대시보드를 포함한 완전한 엔드투엔드 솔루션은 원문의 광범위한 IIoT 아키텍처 가이드라인을 참조하세요.