Node.js에서 주변 BLE 설비의 샘플을 찾기(2021년 4월판)

안녕하세요.총결산#iotlt vol74에서 말한 내용.
예전에 Qita에 썼던 기사가 있는데 2021년에 상황이 많이 변했으니 다시 써보겠습니다.

noble


Node.js에서 BLE 장치를 처리할 때 돛대가 자주 사용되는 모듈이라고 할 수 있습니다.
참조: Node.js에서 주변 BLE 장치의 샘플을 찾습니다
2016년까지도 현역에서 사용했는데 그때부터 업데이트를 하지 않고 맥의 OS 업데이트가 있을 때는 일을 하지 않는다.
참조: 가장 가까운 노드.js Bluetooth에서 일 #iot#abonware

아바타 소프트웨어 프로젝트의noble


아바타 소프트웨어는 관리자가 지원하지 않는 소프트웨어를 가리킨다.
아바타 소프트웨어(Abandanware)는 저작권자가 이미 판매를 중단하거나 지원하지 않는 소프트웨어, 또는 각양각색의 이유로 누가 저작권자인지 또는 불분명한 소프트웨어인지에 의해 사용되는 단어를 말한다.
https://ja.wikipedia.org/wiki/아바타 의상
잘 모르겠지만 이처럼 아바타 소프트웨어를 부활시키기 위한 이벤트는 abandonware라는 프로그램이 있는 것 같다.
어쨌든 오랫동안 업데이트되지 않은 noble를 사용할 수 있어서 정말 기쁩니다.

주의: 맥 이외의 사람은 일반적인 noble를 사용해도 괜찮습니다


제대로 조사한 적은 없지만 noble가 실행되지 않는 화제는 맥으로 실행하려는 경우에만 한정됩니다. Windows와lazpi에서 실행하려면 일반적인noble에서도 실행될 수 있습니다.
(주머니 사정이 검증되지 않아 있을 수 있는 표현을 썼다.)

최근 환경에서 noble 사용


컨디션


M1의 맥북이 아니기 때문에 최신은 아니지만 OS와 노드.js가 최신이에요.
  • Mac Book Pro 2019
  • macOS Big Sur
  • Node.js 15.14.0
  • 차리다


    $ npm init -y
    $ npm i @abandonware/noble
    
    이게 다야.

    코드


    
    'use strict';
    
    const noble = require('@abandonware/noble');
    const knownDevices = [];
    
    //discovered BLE device
    const discovered = (peripheral) => {
        const device = {
            name: peripheral.advertisement.localName,
            uuid: peripheral.uuid,
            rssi: peripheral.rssi
        };
        knownDevices.push(device);
        console.log(`${knownDevices.length}:${device.name}(${device.uuid}) RSSI${device.rssi}`);
    }
    
    //BLE scan start
    const scanStart = () => {
        noble.startScanning();
        noble.on('discover', discovered);
    }
    
    if(noble.state === 'poweredOn'){
        scanStart();
    }else{
        noble.on('stateChange', scanStart);
    }
    

    실행


    $ node app.js
    1:<デバイス名称>(<UUID>) RSSI-75
    2:<デバイス名称>(<UUID>) RSSI85
    3:<デバイス名称>(<UUID>) RSSI-49
    ・
    ・
    ・
    
    문제 없이 움직여줬어요.감동적이야.
    맥의 이 전선은 5년 만에 가동되었다.

    감상


    Node.제이스로 BLE를 컨트롤할 수 있을지, 할 수 있을지 가능성이 커진다.
    고무로 구형의noble를 사용하면 움직일 것 같지만, 손에 들고 있는 모함기 (Mac) 를 사용하지 않으면 디버깅이 힘들다.제이스부터 BLE 컨트롤이 좀 포기됐어요.
    몇 년 동안 하지 못했던 좌절을 털어놓을 수 있을지도 모른다.
    이런 자바스크립트는 드론도 제어할 수 있다.
    참조: 비프로그래머도 복제할 수 있습니다!JavaScript를 사용하여 Drene 띄우기

    좋은 웹페이지 즐겨찾기