Node.js에서 Parrot의 미니 드론 BLE 정보 찾기

RESAS 해커슨 이와테 에서 기사 쓰고 있습니다. #RESAS


드론을 Node.js에서 제어하는 ​​기사를 과거에 작성했지만 코드가 오래되었으므로 다시 작성합니다.

비 프로그래머에서도 코피페로 OK! JavaScript를 사용하여 Drone을 날리자.

현재 Parrot의 미니 드론 Mambo을 찾습니다.



필자의 환경


  • Node.js: v9.0.0
  • Mac: 10.12.6 Sierra

  • 준비


    npm init -y
    npm i --save noble
    

    코드



    scan.js
    'use strict';
    
    const noble = require('noble');
    const MINIDRONES_IDENTIFER = ['Maclan_','Mambo_','RS_']; //対応機種によって増えていく
    let counter = 0;
    
    //ParrotのMinidroneを見つける
    const findParrotDrone = (localName) => {
        if(localName === undefined)return false;
        for(let i = 0, len = MINIDRONES_IDENTIFER.length; i < 10; i++){
            if(localName.indexOf(MINIDRONES_IDENTIFER[i]) === 0){
                return true;
            }
        }
        return false;
    }
    
    //周辺のBLE機器を検索
    const startScan = () => {
        noble.startScanning();
        noble.on('discover', (peripheral) => {
            counter++;
            let mes = '';
            if (!('localName' in peripheral.advertisement)) return; //localNameがあるか判断
            if(findParrotDrone(peripheral.advertisement.localName)) mes += `発見→`; //localNameでParrotのデバイスを検索
            mes += `${counter}台目: ${peripheral.advertisement.localName} | ${peripheral.uuid} | RSSI ${peripheral.rssi}`;
            console.log(mes);
        });
    }
    
    if (noble.state === 'poweredOn') {
        startScan();
    } else {
        noble.on('stateChange', startScan);
    }
    

    실행



    Mambo의 전원을 켜 둡시다.
    $ node scan.js
    
    1台目: undefined | xxxxxxxxxxxxxxxxxxxxxxxxxx | RSSI -62
    2台目: undefined | xxxxxxxxxxxxxxxxxxxxxxxxxx | RSSI -63
    発見→3台目: Mambo_XXXXX | zzzzzzzzzzzzzzzzzzzzzz | RSSI -62
    4台目: undefined | xxxxxxxxxxxxxxxxxxxxxxxxxx | RSSI -62
    
    zzzzzzzzzzzzzzzzzzzzzz 라고 쓰고 있는 곳이 드론의 UUID입니다.

    좋은 웹페이지 즐겨찾기