【連載】物理ボタン(物理スイッチ)をスマートホームのトリガーにする(ジョイスティック(ゲームコントローラー) & EventGhost使用)[ー 随時更新 ー]

📅
これまで散々悩んで😅取り組んできた『物理ボタン(物理スイッチ)をスマートホームのトリガーにする』のネタですが、今回は決定版かもしれません😎。

今回は
  • 汎用のハードウェア・ソフトウェア/サービスの組み合わせ
  • ノーコード(ノンプログラミング)
  • ノーはんだ付け😅
  • そして安価!\(^o^)/
でスマートリモコンやスマートプラグと連携できる物理ボタン(物理スイッチ)トリガーの実現です。

今回はジョイスティック(ゲームコントローラー)のボタンがそのトリガーです。
ジョイスティックの10個の汎用ボタンをスマートホームのトリガーにすることができます。

ジョイスティックのボタンはキーボードやマウスとして認識されないところが今回のシステムのポイントです。ジョイスティックのボタンは『汎用性がある普段使わないボタン』なのです(私はゲーマーではないので😅)。
IFTTTまでたどり着いてしまえばコッチのもの😁!

一部不具合もあったりして未だに完璧とは言えないので😅、本記事は連載とします😋(不具合は第2回記事で解決済みです😁)。

さあ、紹介しましょう!


■物理ボタンをスマートホームのトリガーにする(ジョイスティック(ゲームコントローラー))

本連載は目次の一番下『1.』がスタート記事です。

5.【2022.12.04】更なる汎用性を求めて③:PC起動時の不具合の真の原因追求・対策 - その1

既に紹介した記事(1.<前編>)記事(2.<後編>)で実用レベルとして使用できるシステムを構築しました。
ですがPC起動時の不具合の真の原因については実はよく分かっていません😅。

今回はこの不具合の原因追求を試みたいと思います。
今回の目次
・症状(おさらい)
・原因候補
・実験システム
・実験結果


5-1. 症状と原因候補

・症状(おさらい)

以下の2条件が重なると、EventGhost上にJoystickのイベントが表示されなくなり、EventGhostがジョイスティック(VRリモコン)のボタンを認識しなくなります(記事(<2.<後編>)で対処療法的には解決済みです)。
  1. PC起動後に最初にEventGhostを立ち上げる
  2. スタンバイ状態になっているジョイスティック(VRリモコン)の電源ボタンを押してスタンバイ状態を解除
前前々回記事(2.<後編>)で対処療法的には解決済みです


・原因候補

システム上、原因として考えられると思われる項目を列挙します。
かっこ()内は『PC起動後&リモコンはスタンバイ状態で試してみてリモコンのスタンバイ状態を解除』してみた結果。ジョイスティックボタンが認識されたか否かを記載しています。
  • VRリモコン
    • 電源OFF⇒ON(ジョイスティックボタン認識ぜず)
    • スタンバイ状態⇒復帰(ジョイスティックボタン認識せず)
    • PC起動時にリモコンは動作状態 [スタンバイではない](ジョイスティックボタン認識)
    • 動作モードの変更(ジョイスティックボタン認識ぜず)
  • Bluetooth
    • Windowsシステムを使っての再接続(ジョイスティックボタン認識ぜず)
    • USBドングルの抜き差し(ジョイスティックボタン認識ぜず)
  • Windows
    • 完全シャットダウン⇒再起動(ジョイスティックボタン認識ぜず)
    • 電源OFF時に『/sg』を指定(※)⇒ON(ジョイスティックボタン認識)
    • スリープモード⇒ON [復帰](ジョイスティックボタン認識)
  • EventGhost
    • プラグイン再インストール(ジョイスティックボタン認識)
    • リセット[再起動](ジョイスティックボタン認識)
※コマンドラインで『shutdown /sg』を使用してPCをシャットダウン。
オプション『/sg』の意味は『自動開始用にアプリケーションを登録してシャットダウン』。このオプションを指定するとPCシャットダウン時に起動していたアプリが、PC起動時にWindowsにサインインする前から起動しています。なのでEventGhostもWindowsサインイン前から起動しています。(本件の詳細はブログ内記事『Windows PCをリモートで確実に起動&シャットダウンする(EventGhost使用)』をご覧ください。)


5-2. 原因として一番怪しいところ

上記の症状からして、一番怪しいのは(=立てた仮説は)
『EventGhost起動時にジョイスティックがWindowsシステムに認識されていないこと』
です。

この仮説を検証するために、PC起動時に初めからWindowsシステムにジョイスティックが認識されるように、Bluetooth接続の影響を排除して有線のジョイスティック(ゲームコントローラー)での動作を確認することにしました。

使用したのはこの有線ジョイスティック(コントローラー)です。実験に使うものなので格安品(455円 送料別)を購入しました。
USBゲームパッド有線 ゲームコントローラー PCコンピュータ用のUSB有線ゲームパッドシングル ゲームコントローラ Windows/SwitchPC/MACコントローラーと互換性 USBゲームコントローラー (WHITE) - Amazon

到着まで3週間ぐらいかかりましたが、ジョイスティックとしての動作は良好です。


5-3. 有線ジョイスティック(ゲームコントローラー)での実験

・実験システム

この有線ジョイスティック(コントローラー)をPCのUSB端子に挿しっぱなしにして、無線(Bluetooth)のVRリモコンの場合と同様のシステムを組んでみました。

(このシステムの組み方に関しては記事(1.<前編>)をご覧ください。)


・実験結果

良好です♪
PC起動時でもEventGhostが有線ジョイスティックのボタンを認識します。

この有線ジョイスティック(コントローラー)のシステムでも使い途はあると思いますが、コントローラーをPCから離れた場所に置きたい我が家の用途には向きません😥。


5-4. 結論(絞り込んだ原因)

今回の実験の結果から、立てた仮説は正しいようで、
『EventGhost起動時にジョイスティックがWindowsシステムに認識されていないこと』
が原因のようです。 


5-5. 次の一手

解決策はPC起動時にWindowsシステムにジョイスティックを認識させれば良いのですが、その解決策のヒントは実は上記の実験の中にあります😋。

PC電源OFF時(Windowsシャットダウン時)に
コマンドラインオプションで『/sg』を指定(『自動開始用にアプリケーションを登録してシャットダウン』)
すれば良いようです(EventGhostがPCシャットダウン時のジョイスティック認識状態を保持しているようです)。
これなら本システムに汎用性を出ると思います(更にはWindowsにサインイン前からジョイスティックを認識してくれているのでPCがONであればOKです。一石二鳥です\(^o^)/)。

と言いつつ、本件はPCを自動でシャットダウンさせる為の別のスマートホームシステムとの絡みがあって今のところちょいと一筋縄ではいかないので😅(まだ未解決)、別途アップしますね。





4.【2022.09.17】更なる汎用性を求めて:【失敗談】ジョイスティックの機能拡張(JoyToKey使用)


今回はJoyToKey(Joy2Key)というPC用のアプリを使ってジョイスティックのボタン割り当てを変更し、我が家のスマートホームで制御できる内容を増やそうという企画です。

なのですが、今のところ本件は上手くいっていません😥。失敗談ということで、そこらへんを今回は紹介します。

本内容は汎用性が高いと思われるので特出しで単独の記事として既にアップしています。ここではその記事へのリンクを貼っているだけなので、今回は超手抜き記事です😅。
今回の目次


4-1. JoyToKey(Joy2Key)とEventGhostの連携のトライ(および失敗)

上記した通り本内容は既に単独の記事としてアップ済みです。

アプリ『JoyToKey(Joy2Key)』の詳細や設定方法、EventGhostとの連携方法(上手くいっていませんが😅)については、ブログ内記事『【失敗談】JoyToKey(Joy2Key)とEventGhostが連携できない!(今のところ😅)』をご覧ください。
リンク:『【失敗談】JoyToKey(Joy2Key)とEventGhostが連携できない!(今のところ😅)

上記記事内では、有線のゲームコントローラーを使用していますが、Bluetooth のジョイスティックを使用しても状況は同じで、JoyToKeyとEventGhostを連携することは(今のところ)出来ていません。


本件は何か進展があったらまたアップしますね😋。





3.【2022.07.09】更なる汎用性を求めて①:複数コントローラーの同時使用


前回までの記事では単一コントローラーでの用法を紹介してきましたが、我が家では同一機能を持つ物理ボタントリガーを2個以上は使いたいので、今回トライしてみました😋。

今回はこの複数コントローラーの使用に関する紹介です。
今回の目次


3-1. 使用する2つ目のコントローラー

2つ目のコントローラーとしてはコレを使いました。
Cangad ワイヤレスリモコン VRリモコン スマホリモコン ゲームパッド ゲームパッド/VRゴーグル/3Dメガネ/自撮り/マウス機能/音楽操作 など機能付き 多功能 無線 スマートフォンリモコン VR用 & PC & IOS & Android スマホ・タブレットに対応 - Amazon

本連載の前々回記事(1.<前編>)前回記事(2.<後編>)で紹介したコントローラーと(販売元は異なりますが)モノは同じだと思います(外観・取説・梱包箱等、全て同じです)。格安です♪
2つのコントローラー

(1つ目と同じ販売元から買おうとしたら在庫切れでした…😅。)


3-2. 2つ目のコントローラーの設定

今回の2つ目のコントローラーも、Windowsシステムには(1つ目のコントローラーと同じく)ジョイスティック信号を出力するデバイスとして認識されました。
2つ目のリモコンに必要なのはBluetooth のペアリングだけ

なので、Bluetoothのペアリング以外の設定は不要でした。

コントローラーとスマートホームシステムとの連携については前々回記事(1.<前編>)をご覧ください。


3-3. 実験結果(使用感)

結論、2個のコントローラーの同時使用での操作は良好です。
コントローラーの電源を同時にONにした状態で、それぞれのコントローラーのボタンの押下によりスマートホームの同じ操作が可能です。

我が家では1つのコントローラーはトイレに、2つ目は洗面所に置いています。どちらのコントローラーからも同じ操作が出来ています。

まあ、2つのコントローラーが共にBluetoothに接続出来た時点でOKですよね😋。
(中華製格安コントローラーなのでちゃんとMACアドレスが異なっているか、多少心配でした〜😅)





2.【2022.06.21】<後編>PC起動時の不具合を解消する(対処療法)

前回(1.<前編>)記事の最後に、以下の2条件が重なると、EventGhost上にJoystickのイベントが表示されなくなり、EventGhostがジョイスティック(VRリモコン)のボタンを認識しなくなると記載しました。
  1. PC起動後に最初にEventGhostを立ち上げたとき(Joystickプラグインは追加済みで立ち上げます)。
  2. スタンバイ状態になっているジョイスティック(VRリモコン)の電源ボタンを押してスタンバイ状態を解除

今回はこの対策(解決方法。ただし対処療法)を紹介します。
今回の目次


2-1. 対策(解決方法)の方針

この不具合ですが、(真の原因は未だに分からないのですが)PC起動後にEventGhostをリセット(再起動)すると解消します。

なのでEventGhostをリセットすれば良いのですが、手動でEventGhostをリセットしてしまってはスマートホームとは言えないので、如何に自動でEventGhostをリセットするかが今回のポイントです。

そこで見つけたのがEventGhostのこのイベントです。
ジョイスティック(VRリモコン)のスタンバイ状態からの復帰(Bluetooth再接続)時のイベント

VRリモコンをスタンバイ状態から復帰(Bluetooth再接続)させるときに電源ボタンを押すと、EventGhostがジョイスティックボタンを認識しないPC起動時でも上図のイベント『System.DeviceAttached ...』が発生します。

このイベントをトリガーにしてEventGhostをリセット(再起動)することにします。
VRリモコンのスタンバイ状態からのBluetoothの再接続

以下では、この方針の基にEventGhostマクロの設定方法を紹介します。


2-2. アプリの設定(EventGhostマクロ)

ここからはEventGhostのマクロのポイントを紹介していきます。

まず、VRリモコンのスタンバイ状態からの復帰(Bluetooth再接続:電源ボタン押下)時に発生するイベント『System.DeviceAttached ...』をマクロのトリガーにします(『設定』にドラッグ&ドロップします)。

VRリモコンの電源押下時に発生するEventGhostイベントは4個あるのですが、マクロのトリガーとしては全て同じモノとしてEventGhostには認識されるので、どれを選択してもOKです。

次にEventGhostのリセット(再起動)用のアクションを設定します。アクションとしては、『System(JA)』の『Run Command』を選択し、EventGhostアプリを再起動するコマンドを設定します。

選択した『Run Command』では『Command Line』にEventGhostアプリをコマンドラインとして設定し、その後に再起動を行うコマンドラインオプションとして『- restart』を記載します。
『パス\EventGhost.exe -restart』


これでEventGhostマクロの設定は一旦完了です。


PC起動時にVRリモコンをスタンバイ状態から復帰(Bluetooth再接続)させると、EventGhostがリセット(再起動)して、VRリモコンのボタンを認識するようになります。


なのですが、
このままではこのマクロにはちょっとした面倒があります。

上記しましたがトリガーとなるイベント(VRリモコンのスタンバイ状態からの復帰の『System.DeviceAttached ...』)が4つあるので、このマクロを実行するとEventGhostが4つ(4ウィンドウ)起動してしまいます。

これではPC画面がうっとおしいことになるので、実行しているマクロ内で2つ目以降のイベントは無視するように『保留イベントを破棄』というアクションを追加します。

このアクションは『EventGhost(JA)』の中にあります。

これでEventGhostマクロの設定は本当に完了です。


2-3. 使用感 

ジョイスティック(VRリモコン)の物理ボタンがスマートホームのトリガーとして完璧に動作します。良好です!

ジョイスティック(VRリモコン)のスタンバイ状態からの復帰時(Bluetooth再接続時)は、EventGhostが再起動するまでちょいと時間がかかるので、VRリモコンの青色LEDの点滅が終わってBluetoothの再接続が完了しても更に2~3秒待ってからボタン操作をしたほうが良いようです。


2-4. 今後の改善点

PCがサインイン前だと、EventGhostが立ち上がっていないので本システムは動きません。
今後検討していきます。


前回・今回と前後編に分けて実用レベルになるところまで紹介しましたが、本連載はまだまだ続きます😎。
次回は今回のPC起動時の不具合の真の原因追求を行うつもりです😋。
すみません、次回ネタは急遽変更しました😅。





1.【2022.06.15】<前編>ジョイスティック(ゲームコントローラー)をスマートホームのトリガーにする

今回の目次
・ジョイスティック(Ren He VRリモコン)
・Bluetoothドングル(IODATA USB-BT50LE)
・EventGhost
・Bluetoothドングルの設定
・ジョイスティック(VRリモコン)の設定
・EventGhostの設定
 - EventGhostのマクロ
・使用例(ジョイスティックでスマートリモコンを操作する)
- IFTTTの設定(アプレット)
・ジョイスティックの操作(スタンバイモードからの再接続)
・ジョイスティック(VRリモコン)の電池の持ち


1-1. 使用するハード・アプリ

・ジョイスティック(Ren He VRリモコン)

これですよ、コレ。コレが今回の話の取っ掛かりです。格安(699円)です。
リンク:Ren He ワイヤレスリモコン VRリモコン スマホリモコン ワイヤレスリモコン 3Dメガネ/マウス機能/音楽操作 スマートフォンリモコン ゲームパッド IOS & Android - Amazon

VRコントローラーがメインの用途のようですが、Gameモード(ジョイスティック)でも使えます(Music/Videoモード、Mouseモード、iOSモードでも使えるようです。確認はしていませんが😅)。

・製品仕様(本体取扱説明書およびAmazon商品ページより)
  • 通信プロトコル:Bluetooth 3.0
  • サポートシステム:Android / iOS / PC
  • サポートモード:
    • @+A:音楽
    • @+B:ゲームモード
    • @+C:VRモード/自分 撮りモード/ビデオモード
    • @+D:マウス/自分撮りモード
  • 電源:単4乾電池✕2本
    • 消費電流:0.5~8mA(スタンバイ時:0.5~1mA)
    • 連続使用時間(ゲーム時):40~120時間
  • サイズ:115*35*50mm
  • 取扱説明書:英語・中国語
取説は英語・中国語です

中国からの輸送なので到着まで2週間程度かかりましたが、安いが一番です😋(実際に使ってみるまで使えるかどうかが分からなかったので)。

本機でなくともプロトコルがジョイスティック出力のコントローラーであれば何でも使えます。
今回のシステムは(ジョイスティック信号出力の)ゲームコントローラーが使えます


・Bluetoothドングル(IODATA USB-BT50LE)

もう一つの重要なガジェットはこのBluetoothの『Class 1』ドングルです。
リンク:アイ・オー・データ Bluetoothアダプター Bluetooth5.0/Class1対応 USBアダプター 日本メーカー USB-BT50LE - Amazon

・製品仕様(メーカーWebページより抜粋)
  • 対応規格Bluetooth® バージョン5.0 +EDR/LE class 1
  • 通信距離最大100m ※使用環境によって異なります。
  • コネクター形状USB Standard A
  • インターフェイスUSB 2.0
  • 消費電流70mA(Max)
  • 外形寸法約14(W)×19(D)×6.3(H)mm
  • 質量約1.6g
ポイントはClass 1(最大通信距離:100m)であることです。
我が家では物理ボタンをトリガーにして、トイレや洗面所など滞在時間の比較的短い場所でもさっさとスマートホームをコントロールしたいのです。なので(応答ミスのある)スマートスピーカーなどに話しかけている暇はないのです😅!

よって物理ボタンを使って遠隔でスマートホームを操作したい我が家では到達距離の長いClass 1は必須なのですね。
Bluetooth 5.0 Class 1 USBドングル(IODATA)

(実のところ、到達距離は受け側(今回の場合はVRリモコン側)にも依存しますが、片側だけでもClass 1に対応していれば距離は伸びるというのが私の実感です(Bluetoothスピーカー使用時の実感です))。


・EventGhost

そして最後はコレです。PCのイベントをスマートホーム(IFTTT)に繋いでくれるアプリです。PC周りの我が家のスマートホームで重宝しています。
リンク」EventGhost

PCの自動化、スマートホームとのリンクに欠かせないアプリです。


では以下にそれぞれのハード・アプリの設定方法を紹介していきます。


1-2. ハード・アプリの設定

・Bluetoothドングルの設定

デバイスドライバー等のインストールは特に必要ありません😋。PCのUSBコネクタに挿せばOKです。


・ジョイスティック(VRリモコン)の設定

電源ボタンを4秒ぐらい長押しすると電源がONし、ペアリングモードになります。

PCのBluetoothデバイス設定で『VR CASE 2nd』を選択するとコントローラーとPCを接続できます。

ペアリングしただけではこのリモコンはPCにとってはVR器具(キーボード&マウスの一部)として認識されてしまうので、私の用途としてはダメです。本記事で重要なスマートホームトリガーの『Gameモード(ジョイスティック)』にするにはリモコンの「『@』ボタン+『B』ボタン」を同時押しする必要があります。

こうするとPCにはGameモード(ジョイスティック)のデバイスとして認識されるようになります(他のモードではPCには認識されなかったり、キーボードやマウスの一部として認識されてしまい余計な操作がされてしまいます)。 (【注】VRリモコンの電源をOFF⇒ONするとGameモードは解除されてVRモードに戻ってしまうので、本機の電源はONしっぱなしにしておく必要があります。

ハードの必要な準備は以上で完了です!


・EventGhostの設定

EventGhostのプラグインで『Joystick』を選択すると、EventGhostのイベント画面に本機(VRリモコン)のボタン操作がイベントとして表示されるようになります。
EventGhostのプラグイン『Joystick』

プラグイン『Joystick』選択後のEventGhostイベント画面

後はこのイベントをトリガーにしてEventGhostのマクロを作ります。


- EventGhostのマクロ
ここから先はEventGhostを使い慣れていれば簡単です。EventGhost上のVRリモコンのイベントをトリガーにしてIFTTTに送るWebhooksを作成するだけです。

(EventGhostとIFTTTの連携方法の詳細はこちらのブログ内記事『EventGhostをIFTTTのトリガー(IF)に設定する(Webhooks使用)』をご覧ください。)


1-3. 使用感 

我が家のトイレは扉を開けると自動で照明が点灯してリビングと同じ音声が流れます。

そこに今回のシステムを加えて『トイレに居る時にトイレのBluetoothスピーカーで鳴らす音声の切換(音源はリビングにあります)』をできるようにしました。
我が家での使用例


・使用例(ジョイスティックでスマートリモコンを操作する)

以下にEventGhostで受け取ったWebhooksからのIFTTTの設定(アプレット)を紹介しておきます。
(EventGhostとIFTTTの連携方法の詳細はこちらのブログ内記事『EventGhostをIFTTTのトリガー(IF)に設定する(Webhooks使用)』をご覧ください。)


- IFTTTの設定(アプレット)
トリガー(IF)にはEventGhostから受け取るWebhooksを、アクション(THEN)には操作するスマートリモコン(Nature Remo)を設定します。

トリガーとしてWebhooksで受け取る文字列はここでは『joystick_button_5』にしています。

アクションとしてはスマートリモコン(Nature Remo)を設定しています。


・ジョイスティックの操作(スタンバイ状態からの再接続)

我が家ではジョイスティック(VRリモコン)は電源を入れっぱなしにしているので、通常はスタンバイ状態になっています。使い始めに電源ボタンを押してスタンバイ状態を解除します。

電源ボタン押下後、ジョイスティックとBluetoothドングルが再接続する間LEDが青色に点滅します。Bluetoothの再接続が完了するとLEDは消灯し、ジョイスティックのボタンがEventGhostで認識されるようになります。

再接続までは2~3秒のイメージです。


・ジョイスティック(VRリモコン)の電池の持ち

上記しましたが、電源をOFF⇒ONしてしまうとジョイスティック(VRリモコン)のGameモードがリセットされてしまうので我が家ではジョイスティックの電源は入れっぱなしです。
しばらく操作しないと本リモコンはスタンバイ状態(消費電流:0.5~1mA)になるので、それなりに電池は持つと思います。

本件は今後情報をアップデートしていきますね。


1-4. 課題(不具合)

と思ったのですがここで不具合が発生しました。

以下の2条件が重なると、EventGhost上にJoystickのイベントが表示されなくなり、EventGhostがジョイスティック(VRリモコン)のボタンを認識しなくなります。
  1. PC起動後に最初にEventGhostを立ち上げたとき(Joystickプラグインは追加済みで立ち上げます)。
  2. スタンバイ状態になっているジョイスティック(VRリモコン)の電源ボタンを押してスタンバイ状態を解除

一度EventGhostをリセット(再起動)すれば解決するのですが、PC起動時にいちいち手動でリセットなどしていたらスマートホームとは言えません😠。

本件、真の原因は分からないのですが、実は対処療法的には解決済みです。次回<後編>で紹介します(速攻でアップする予定です)。
リンク:『2.【2022.06.21】<後編>PC起動時の不具合を解消する(対処療法)





0 件のコメント: