ブロックを積みながら(82) Node-RED、Rpi-Mouseノードでクリックを検出

Joseph Halfmoon

このNode-REDの練習シリーズはラズパイ3機をNode-REDサーバとして使っております。それでラズパイ特有のNode-REDノードが使えると。以前に、ラズパイGPIOを直接操作できるノードをやりました。今回は、ラズパイUSBに接続したマウスの読み取りができるノードです。Rpi-Mouseノード。

※「ブロックを積みながら」投稿順 index はこちら

基本、Node-REDサーバは「サーバ」として後ろの方にいて欲しい、だから、UIみたいな下々の仕事はしないでね、という感じ(単に奥にしまい込んでいるので手が届かないだけ?)なのでマウスのようなデバイスは接続したくなかったのです。しかし致し方ありません。買い置きのマウスの箱を取り出してきました。

amazonBasicsMousePackage

Amazon basics mouseとな。お手頃価格、ごくフツーの有線マウスです。何台か無線マウスを使い続けてきたこともあったのですが、数か月に一度やってくる電池切れ、そしてマウスは消耗品です。最近ではこの手の量販型を常備在庫しとります。まったくこだわりは無いし。

Rpi-Mouseノード

さてこのRaspberry Pi上のNode-RED特有のRpi-Mouseノードは、

マウスボタンの検出

のみができるノードです。マウスの動き、上だとか右だとか、そういうカウント値を検出できるものではありません。3ボタンマウスを想定、左右と真ん中のボタンを押したか、離したか、だけを検出するものです。

実験用のフローが以下に。Rpi-Mouseノードが送出するmsg をDebugノードで表示するだけ。シンプルというか、手抜きというか。RpiMouseFlow

Rpi-Mouseノードの設定は、以下のプルダウンメニューです。監視するマウスボタンを指定するだけ。

RpiMouseSetting0

今回は「全て」を指定してみました。こんな感じ。

RpiMouseSetting1

Mouseボタンをクリック

まずは、左マウスボタンをクリック。1発クリックしただけでも、msgは2つ到来します。押した(make)ときと、離した(break)とき。msgの中に積まれているプロパティは以下です。

    • topic “pi/mouse”
    • button 1
    • payload 押されたときは1、離したときは0

LeftClick

つづいて、左右のボタンを同時押ししてみます。同時に押し込んで離したつもりなのですが、

    • 押し込んだときは、左右同時検出でbuttonは3(bit 0が左、bit 1が右)
    • 同時に離したつもりが、左ボタンのブレークを先に検出したみたい

「ハンドラ」はmake, breakをそれなりに扱わないとなりませぬ。LeftRightClick

念のため、中ボタン(実際にはホイールの縦押し)を押した場合。中ボタンはビット2なので、単独で押すとbuttonは4です。MidClick

動作確認はOK。しかし、このマウスのボタンだけを検出できるノード、どんな用途に使いますかね?知らんけど。

ブロックを積みながら(81) Node-RED、yamlノードでオブジェクトと相互変換 へ戻る

ブロックを積みながら(83) Node-RED、Rpi-keyboardノードでキー入力 へ進む