このNode-REDの練習シリーズはラズパイ3機をNode-REDサーバとして使っております。それでラズパイ特有のNode-REDノードが使えると。以前に、ラズパイGPIOを直接操作できるノードをやりました。今回は、ラズパイUSBに接続したマウスの読み取りができるノードです。Rpi-Mouseノード。
※「ブロックを積みながら」投稿順 index はこちら
基本、Node-REDサーバは「サーバ」として後ろの方にいて欲しい、だから、UIみたいな下々の仕事はしないでね、という感じ(単に奥にしまい込んでいるので手が届かないだけ?)なのでマウスのようなデバイスは接続したくなかったのです。しかし致し方ありません。買い置きのマウスの箱を取り出してきました。
Amazon basics mouseとな。お手頃価格、ごくフツーの有線マウスです。何台か無線マウスを使い続けてきたこともあったのですが、数か月に一度やってくる電池切れ、そしてマウスは消耗品です。最近ではこの手の量販型を常備在庫しとります。まったくこだわりは無いし。
Rpi-Mouseノード
さてこのRaspberry Pi上のNode-RED特有のRpi-Mouseノードは、
マウスボタンの検出
のみができるノードです。マウスの動き、上だとか右だとか、そういうカウント値を検出できるものではありません。3ボタンマウスを想定、左右と真ん中のボタンを押したか、離したか、だけを検出するものです。
実験用のフローが以下に。Rpi-Mouseノードが送出するmsg をDebugノードで表示するだけ。シンプルというか、手抜きというか。
Rpi-Mouseノードの設定は、以下のプルダウンメニューです。監視するマウスボタンを指定するだけ。
今回は「全て」を指定してみました。こんな感じ。
Mouseボタンをクリック
まずは、左マウスボタンをクリック。1発クリックしただけでも、msgは2つ到来します。押した(make)ときと、離した(break)とき。msgの中に積まれているプロパティは以下です。
-
- topic “pi/mouse”
- button 1
- payload 押されたときは1、離したときは0
つづいて、左右のボタンを同時押ししてみます。同時に押し込んで離したつもりなのですが、
-
- 押し込んだときは、左右同時検出でbuttonは3(bit 0が左、bit 1が右)
- 同時に離したつもりが、左ボタンのブレークを先に検出したみたい
「ハンドラ」はmake, breakをそれなりに扱わないとなりませぬ。
念のため、中ボタン(実際にはホイールの縦押し)を押した場合。中ボタンはビット2なので、単独で押すとbuttonは4です。
動作確認はOK。しかし、このマウスのボタンだけを検出できるノード、どんな用途に使いますかね?知らんけど。