자 바스 크 립 트 와 MQTT 개발 물 인터넷 응용 예시 분석 사용 하기
10004 단어 JavaScriptMQTT사물 인터넷
IoT 응용 개발 데이터 링크
그림 1 은 스마트 홈 사물 인터넷 플랫폼 의 데이터 링크 이다.
그림 1 스마트 홈 연결 플랫폼 의 데이터 링크
일반적으로 IoT 응용 을 그림 과 같은 4 층 으로 나 눌 수 있다.
4.567917.client 층:IoT 설 비 를 말 하 는데 냉장고,에어컨 일 수도 있 고 온도 와 습도 센서 일 수도 있 습 니 다
client 층 의 연결 방식 은 와 이 파이,블 루 투 스,Zigbee 가 있 고 MQTT 는 사물 인터넷 장 치 를 더욱 연결 시 키 기 위해 나타 난 응용 층 데이터 프로 토 콜 입 니 다.
MQTT+JavaScript
MQTT 는 긴 연결 의 통신 응용 층 프로 토 콜 로 가장 큰 특징 은 데이터 가 간소화 되 고 메시지 가 믿 을 수 있 으 며 Publish-Subscribe 모델 이 유연 하고 사용 하기 쉽다 는 것 이다.MQTT 는 이미 IoT 전송의 표준 프로 토 콜 이 되 어 매우 광범 위 하 게 응용 되 고 있다.
그림 2 에서 Client 는 사물 인터넷 설 비 를 가리킨다.Client 는 Topic 에 대한 구독 과 게시 데이터 관리 애플 리 케 이 션 의 데이터 흐름 을 통 해,Broker 는 MQTT 애플 리 케 이 션 에서 Topic 을 관리 하 는 역할 을 합 니 다.서버 는 사물 인터넷 응용 프로그램의 서버 로 업무 논 리 를 처리 하 는 데 사용 된다.
그림 2 MQTT 의 데이터 링크 그림
MQTT 가 광범 위 하 게 사용 되 는 중요 한 이 유 는 MQTT 의 생태 가 매우 완선 하고 JavaScript 도 지원 하기 때문이다.따라서 그림 2 에서 보 여 준 모든 링크 와 모듈 은 자바 스 크 립 트 를 통 해 이 루어 질 수 있다.
그림 3 자 바스 크 립 트 가 MQTT 구조 에서 자주 사용 하 는 구조
JavaScript 가 MQTT 구조 에서 자주 사용 하 는 프레임 워 크
mosca(https://github.com/mcollina/mosca)
mosca 는 자 바스 크 립 트 로 이 루어 진 MQTT Broker 입 니 다.뿐만 아니 라 mosca 는 Redis,MongoDB 와 같은 데이터베이스 에 대한 지원 을 추가 하여 메시지 데이터 의 저장 을 실현 했다.
MQTT.js(https://github.com/mqttjs/MQTT.js)
MQTT.js 는 홈 페이지 에서 추천 한 자 바스 크 립 트 가 구현 한 Client 엔 드 입 니 다.
KOA 와 Express.
이 두 가 지 는 모두 매우 주류 인 Node 버 전의 Server 로 간단 하고 사용 하기 쉽다.
실전 사물 인터넷 응용
이 부분 에서 우 리 는 이전에 소개 한 구 조 를 활용 하여 간단 한 사물 인터넷 응용 을 완성 했다.응용 장면 은 그림 4 에서 보 듯 이 온도 센서 는 온 도 를 수신 하 는 데 사용 되 고 문 서 를 MQTT 를 통 해 서버 에 보 내 고 서버 에서 업무 처 리 를 하 며 온도 에 따라 옷 입 는 알림 을 계산 하고 MQTT 를 통 해 데 이 터 를 특정한 Topic 에 보 내 고 App 구독 Topic 을 통 해 데 이 터 를 얻 은 후에 보 여 준다.
그림 4'옷 입 는 힌트'업무 장면 구조
Broker 엔 드 의 실현
Broker 엔 드 는 mosca 를 사용 하여 웹 페이지 를 참고 합 니 다.https://github.com/mcollina/mosca。
모스 카 를 설치 하 다.
nmp install mosca --save
모스 카 를 시작 합 니 다.로 컬 에 MongoDB 가 설정 되 어 있 지 않 으 면 ascoltatore 의 내용 을 모두 주석 해 야 합 니 다.
var mosca = require('mosca');
var ascoltatore = {
//using ascoltatore
// type: 'mongo',
// url: 'mongodb://localhost:27017/mqtt',
// pubsubCollection: 'ascoltatori',
// mongo: {}
};
var settings = {
port: 1883,
backend: ascoltatore
};
var server = new mosca.Server(settings);
server.on('clientConnected', function(client) {
console.log('client connected', client.id);
});
// fired when a message is received
server.on('published', function(packet, client) {
console.log('Published', packet.payload); //{"clientId":"mqttjs_02fea7b4","topic":"/tips"}
// console.log('>>>packet', packet); //{"clientId":"mqttjs_02fea7b4","topic":"/tips"}
});
server.on('ready', setup);
// fired when the mqtt server is ready
function setup() {
console.log('Mosca server is up and running');
}
코드 가 완료 되면 파일 을 시작 합 니 다.로 컬 Broker 는 localhost 의 1883 포트 에 달 려 있 습 니 다.클 라 이언 트 엔 드 온도 센서 구현
클 라 이언 트 는 MQTT.js 를 사용 하여 웹 페이지 를 참고 합 니 다.https://github.com/mqttjs/MQTT.js
설치 하 다.
npm install mqtt --save
시동 을 걸다
var mqtt = require('mqtt');
var client = mqtt.connect('mqtt://localhost:1883');
client.on('connect', function () {
console.log('>>> connected')
// client.subscribe('/tips')
setInterval(
()=>{client.publish('/temperature', '30');},
3000
);
})
client.on('message', function (topic, message) {
// message is Buffer
console.log(message.toString())
})
// client.end();
Node index 를 실행 하면 Client 가 시 작 됩 니 다.MQTT.connect 방법 에서 이전 절 에서 시 작 된 Broker 주 소 를 연결 하 는 것 을 볼 수 있 습 니 다.연결 이 성공 하면 Client 는 로 그 를 출력 합 니 다.">connect",Broker 콘 솔 도 Client 의 연결 정 보 를 출력 합 니 다.온도 센서 를 시 뮬 레이 션 하여 3 초 동안/temperature 의 Topic 에 온도 데 이 터 를 보 냅 니 다.
이 섹 션 의 온도 기 는 컴퓨터 에서 노드 방식 으로 작 동 할 수도 있 고,RUFF,Nodemcu,Raspberry Pi 등 자 바스 크 립 트 를 지원 하 는 개발 판 에서 도 작 동 할 수 있 으 며,실제 센서 를 사용 할 수도 있다.
서버 구현
서버 는 MQTT.js 구독 클 라 이언 트 가/temperature Topic 에 보 낸 데 이 터 를 사용 하여 처리 한 데 이 터 를 JSON 으로 번역 하여 다른 업무 테마/tips 에 보 냅 니 다.
구현 코드 는 다음 과 같 습 니 다:
'use strict'
const mqtt = require('mqtt');
var client = mqtt.connect('mqtt://localhost:1883');
client.on('connect', function () {
console.log('>>> connected');
client.subscribe('/temperature');
})
client.on('message', function (topic, message) {
var temperature = parseInt(message.toString());
var data = {temperature};
if (temperature >= 60) {
data.tips = " ... 500 ";
}
else if (temperature >= 50) {
data.tips = " , ";
}
else if (temperature >= 40) {
data.tips = " , T + ";
}
else if (temperature >= 30) {
data.tips = " , T ";
}
else if (temperature >= 0) {
data.tips = " , ";
}
else if (temperature >= -10) {
data.tips = " , ";
}
else {
data.tips = " , ";
}
client.publish('/tips', JSON.stringify(data));
// if (temperature+1) {}
// message is Buffer
console.log(JSON.stringify(data));
})
앱 의 실현데모 의 앱 은 KOA 를 사용 해 웹 을 시작 하고 웹 에서 현재 온도 에 대응 하 는 옷 입 는 팁 을 보 여 주 며 tips 구독 을 통 해 데 이 터 를 가 져 옵 니 다.
설치
$ npm install koa
구현 코드
'use strict'
const Koa = require('koa');
const mqtt = require('mqtt');
const app = new Koa();
var msg = {temperature:"-",tips:""};
// response
app.use(ctx => {
ctx.body = " :" + msg.temperature + " " + "
" + ' :'+msg.tips + "
" ;
});
app.listen(3000);
//mqtt
var client = mqtt.connect('mqtt://localhost:1883');
client.on('connect', function () {
console.log('>>> connected');
client.subscribe('/tips');
})
client.on('message', function (topic, message) {
var data = JSON.parse(message.toString());
console.log(message.toString());
console.log(data.tips);
msg = data;
// if (temperature+1) {}
// message is Buffer
// let str = message.toString();
// let data = JSON.parse(message);
// console.log(data.tips);
// msg = message.toString();
})
데모 소절이 장 은 간단 한 사물 인터넷 업무 의 업무 장면 과 실현 논 리 를 제시 했다.그 중에서 Client 도 컴퓨터 에서 실행 하여 Demo 를 조회 하거나 실제 사물 인터넷 설비 나 개발 판 에서 달 릴 수 있다.그림 5 에서 필 자 는 RUFF 개발 판 을 사용 하여 한 번 실현 했다.
그림 5 데모 하드웨어 데모
전체 데모 코드 는 github 에 공유 되 어 있 으 며 URL 을 입력 하여 다운로드 할 수 있 습 니 다.
https://github.com/coolnameismy/javascript-mqtt-demo-wearingTip
총결산
본 고 는 여러분 과 사물 인터넷 응용의 일반 데이터 링크,MQTT 협의의 구 조 를 교 류 했 고 MQTT 를 바탕 으로 간단 한 사물 인터넷 응용 을 실현 했다.
지금 은 바로 전단 엔지니어 의 좋 은 기회 입 니 다.점점 더 많은 내장 형 장치 가 자 바스 크 립 트 를 지원 하기 시 작 했 습 니 다.그 이 유 는 현재 많은 자 바스 크 립 트 엔진 이 자 바스 크 립 트 를 각종 플랫폼 의 바 텀 코드 로 바 꿀 수 있 기 때 문 입 니 다.비교적 유명한 것 은 Jerry script,Duktape 등 이 있 습 니 다.점점 더 많은 자바 스 크 립 트 엔지니어 들 이 내장 형 개발 분야 에 들 어가 면서 내장 형 응용 개발 도 전후 단 분리 상황(응용 개발 또는 구동 개발)이 발생 하여 웹 개발 의 전후 단 분리 와 유사 하 다.전단 은 응용,창의,데이터 링크,사용자 표현 에 주목 하고 백 엔 드 는 GPIO,I2C 의 바 텀 데이터 인터페이스 와 구동,플랫폼 호환성 등 방향 에 관심 을 가진다.
자 바스 크 립 트 와 MQTT 를 이용 한 사물 인터넷 애플 리 케 이 션 예제 분석 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.자 바스 크 립 트 와 MQTT 개발 사물 인터넷 애플 리 케 이 션 에 관 한 더 많은 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 우 리 를 많이 지 켜 주시 기 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
기초 정리 - 1문자 (String) 숫자 (Number) 불린 (Boolean) null undefined 심볼 (Symbol) 큰정수 (BigInt) 따옴표로 묶어 있어야 함 Not-A-Number - 숫자 데이터 / 숫자로 표...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.