자 바스 크 립 트 와 MQTT 개발 물 인터넷 응용 예시 분석 사용 하기

자바 와 C\#어느 것 이 가장 좋 은 개발 언어 인지 프로그래머 간 의 상호 분 노 를 불 러 일 으 킬 수 있다 면 자바 스 크 립 트 가 동태 적 으로 가장 좋 은 언어 라면 큰 논란 이 없 을 것 이 라 고 믿는다.점점 더 많은 하드웨어 플랫폼 과 개발 판이 자 바스 크 립 트 를 지원 하기 시작 하면 서 자 바스 크 립 트 는 하드웨어 와 사물 인터넷 분야 에서 새로운 기 회 를 얻 었 다.
IoT 응용 개발 데이터 링크
그림 1 은 스마트 홈 사물 인터넷 플랫폼 의 데이터 링크 이다.
这里写图片描述
그림 1 스마트 홈 연결 플랫폼 의 데이터 링크
일반적으로 IoT 응용 을 그림 과 같은 4 층 으로 나 눌 수 있다.
4.567917.client 층:IoT 설 비 를 말 하 는데 냉장고,에어컨 일 수도 있 고 온도 와 습도 센서 일 수도 있 습 니 다
  • gateway 층:대부분의 장면 에서 gateway 는 집에 있 는 와 이 파이 공유 기 이 고 작은 부분 은 Zigbee 나 블 루 투 스 를 바탕 으로 하 는 게 이 트 웨 이 장치 입 니 다.스마트 생활 장면 에서 gateway 의 수량 은 공업 분야 에 비해 매우 적 고 공업 분야 에 대량의 가장자리 계산 이 gateway 층 에 놓 여 처리 된다(안개 계산)
  • 클 라 우 드 클 라 우 드:여 기 는 업 무 를 집중 적 으로 처리 하 는 곳 입 니 다4.567917.응용 층:이 층 은 사용자 와 직접 접촉 하 는 곳 으로 컴퓨터 의 웹 브 라 우 저,모 바 일 앱 을 통 해 화면 이 있 는 스마트 기기 의 모니터 일 수도 있다.음성 기술 의 발전 에 따라 스크린 이 없 는 장치 도 음성 교 류 를 통 해 사물 인터넷 에 존재 하 는 상호작용 층 으로 응용 할 수 있다사물 연결 장치(이하 client 라 고 통칭)는 하나의 장치 나 여러 개의 장치 로 구 성 된 응용 장면 일 수 있다.예 를 들 어 냉장 고 는 작 동 하 는 전력 소모 데이터,재고 데이터,온도 데 이 터 를 수집 하고 gateway 를 통 해 cloud 층 에 보 내 고 cloud 층 은 데 이 터 를 수집 한 후에 이상 판단 을 하 며 스마트 모델 추천 등 업무 처 리 를 한 후에 application 층 에 가서 표현 하고 상호작용 을 한다.사용 자 는 냉장고 의 설비 데 이 터 를 통 해 모델 선택 을 할 수 있 고 설비 와 무관 한 부가 가치 서 비 스 를 할 수 있다.예 를 들 어 음악 듣 기,장 보기 등 이 바로 스마트 냉장고 의 데이터 링크 이다.또한 일부 client 는 스마트 장면 을 구성 하 는 것 이다.예 를 들 어 온도 와 습도 센서 가 데 이 터 를 cloud 에 업로드 하고 처리 와 가공 을 거 쳐 집에 있 는 에어컨 의 온 도 를 동적 으로 제어 하고 공기 청정 기의 운행 모델 을 조절 하 는 등 이다.이 설명 은 클 라 우 드 계층 의 역할 을 나타 내지 못 한 것 같 습 니 다.실행 모드 가 사용자 가 미리 설정 한 것 이 라면?"온도 가 25 도 를 넘 으 면 에어컨 을 켜 주세요"와 같은 업 무 는 클 라 우 드 층 을 통 해 처리 할 수 있 습 니 다.
    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 개발 사물 인터넷 애플 리 케 이 션 에 관 한 더 많은 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 우 리 를 많이 지 켜 주시 기 바 랍 니 다!

    좋은 웹페이지 즐겨찾기