Security News
Supply Chain Attack Detected in @solana/web3.js Library
A supply chain attack has been detected in versions 1.95.6 and 1.95.7 of the popular @solana/web3.js library.
node-alps-env
Advanced tools
node-alps は、アルプス電気社製「環境センサモジュール 開発キット」のセンサー子機からのデータを USB 受信モジュールを経由して取得するための node モジュールです。
node-alps-env は、node-alps は、アルプス電気社製「環境センサモジュール 開発キット」のセンサー子機からのデータを USB 受信モジュールを経由して取得するための node モジュールです。
環境センサモジュール 開発キットのセンサー子機経由で、以下のデータを受信することができます:
$ cd ~
$ npm install serialport
$ npm install node-alps-env
次のサンプルコードは、USB 受信モジュールに接続し、センサー子機から送信されたデータを表示します。
const AlpsEnv = require('node-alps-env');
// USB 受信モジュールに接続
AlpsEnv.connect().then(() => {
// センサー情報受信のイベントハンドラをセット
AlpsEnv.onmessage = (data) => {
// 受信データを出力
console.log(JSON.stringify(data, null, ' '));
};
}).catch((error) => {
console.error(error);
});
上記コードは次のような結果を出力します。
{
"no": 0,
"txid": 14746066,
"temp": 27.9,
"humi": 60.8,
"pres": 1000.31,
"light": 484,
"door": 1,
"vbat": 2.9,
"rssi": -79
}
{
"no": 1,
"txid": 14746066,
"temp": 28.1,
"humi": 61,
"pres": 1000.29,
"light": 484,
"door": 1,
"vbat": 2.9,
"rssi": -79
}
{
"no": 2,
"txid": 14746066,
"temp": 28.2,
"humi": 60.9,
"pres": 1000.29,
"light": 484,
"door": 1,
"vbat": 2.9,
"rssi": -79
}
...
AlpsEnv
オブジェクトnode-alps-env を利用するためには、次の通り、node-alps-env モジュールをロードします:
const AlpsEnv = require('node-alps-env');
上記コードでは、変数 AlpsEnv
が AlpsEnv
オブジェクトです。AlpsEnv
オブジェクトは、以降のセクションで説明するとおり、いくつかのメソッドを持っています。
connect()
メソッドは、ホスト PC の USB ポートに接続された USB 受信モジュール探し、利用可能な状態にするための準備を行います。このメソッドは Promise
オブジェクトを返します。
AlpsEnv.connect().then(() => {
console.log('Connected.');
}).catch((error) => {
console.error(error);
});
基本的に USB 受信モジュールがどのシリアルポートに接続されているかは知らなくても構いません。このメソッドは、適切な USB シリアルポートを自動的に探索します。さらに、ボーレートも指定する必要はありません。少なくとも最新の Linux ディストリビューション (Raspbian や Ubuntu)、Mac、Windows であれば期待通りに動作するはずです。
しかし、必ずしも USB 受信モジュールが接続された USB シリアルポートを発見できるとは限りません。その場合は、USB シリアルポートを指定することができます。
AlpsEnv.connect({path:'COM13'}).then(() => {
console.log('Connected.');
}).catch((error) => {
console.error(error);
});e.error(error);
});
connect()
メソッドは次のプロパティを含むハッシュオブジェクトを引数に取ります:
プロパティ | 必須 | 型 | 説明 |
---|---|---|---|
path | 任意 | String | USB 受信モジュールが接続されたシリアルポートを表すパスを指定します。(例: "COM3", "/dev/ttyACM0", "/dev/tty-usbserial1") |
接続プロセスをできる限り早く終わらせたいなら、path
を指定したほうが良いでしょう。なぜなら、自動スキャンモード (path
を指定しない) は、ホスト PC の環境によって少し時間がかかるからです。
disconnect()
メソッドは、USB ポートの USB 受信モジュールとのコネクションを開放 (切断) します。このメソッドは Promise
オブジェクトを返します。
AlpsEnv.disconnect().then(() => {
console.log('Disconnected.');
}).catch((error) => {
console.error(error);
});
getSerialPortPath()
メソッドは、USB 受信モジュールに割り当てられた USB シリアルポートを表すパスを返します。このメソッドは、他のメソッドとは異なり、Promise
オブジェクトを返しませんので注意してください。
AlpsEnv.connect().then(() => {
console.log('Serial Port Path: ' + AlpsEnv.getSerialPortPath());
}).catch((error) => {
console.error(error);
});
上記コードが Windows で実行されたなら、次のような結果を返します:
Serial Port Path: COM13
もし上記コードが Raspbian で実行されたなら、次のような結果を返します:
Serial Port Path: /dev/ttyACM0
このメソッドは、USB 受信モジュールが connect()
メソッドを使って接続されていなければ、空文字列を返します。
AlpsEnv
オブジェクトの onmessage
プロパティは、USB 受信モジュールがセンサー子機からデータを受信したときに呼び出されるイベントハンドラです。
AlpsEnv.onmessage = (data) => {
console.log(JSON.stringify(data, null, ' '));
};
イベントハンドラ関数には、受信したデータを表すハッシュオブジェクトが引き渡されます。このハッシュオブジェクトは次のプロパティがセットされています:
プロパティ | 型 | 説明 |
---|---|---|
no | Number | センサー子機ごとの受信データのシーケンシャル番号。 |
txid | Number | センサー子機の ID |
temp | Number | 温度 (°C) |
humi | Number | 湿度 (%) |
pres | Number | 気圧 (hPa) |
light | Number | 照度 (lx) |
door | Number | 開 (open) なら 1 , 閉 (close) なら 0 。 |
vbat | Number | バッテリー電圧 (V) |
rssi | Number | RSSI (dBm) |
センサー子機は、デフォルトでは 20 秒ごとにデータを送信します。しかし、ドアセンサーが反応した場合は、その場でデータを送信します。ただし、ドアセンサー反応のデータでは、temp
, humi
, pres
, light
, vbat
プロパティの値は 0
になりますので、注意してください。
The MIT License (MIT)
Copyright (c) 2017 Futomi Hatano
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
FAQs
node-alps は、アルプス電気社製「環境センサモジュール 開発キット」のセンサー子機からのデータを USB 受信モジュールを経由して取得するための node モジュールです。
The npm package node-alps-env receives a total of 0 weekly downloads. As such, node-alps-env popularity was classified as not popular.
We found that node-alps-env demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
A supply chain attack has been detected in versions 1.95.6 and 1.95.7 of the popular @solana/web3.js library.
Research
Security News
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
Security News
Research
Socket researchers have discovered malicious npm packages targeting crypto developers, stealing credentials and wallet data using spyware delivered through typosquats of popular cryptographic libraries.