UfoCtrlTester Ver2.00 U.F.O. TW等のグッズ接続無しで制御状態を確認出来るアプリ

U.F.O. TW、U.F.O. SA、A10サイクロンSA +PLUS(プラス)バッハスマートROCKET+1Dなどの+1D対応グッズをランダムコントロールしたり任意の固定パターンを登録して制御出来たりする拙作『UfoCtrl』が実際にどういう制御をしているのか可視化させたツールアプリです。

ランダムパターンの自由度を大幅に向上させたUfoCtrl Ver2.00 U.F.O. TW U.F.O. SA A10サイクロンSA (+PLUSプラス) バッハスマート ROCKET+1D 等BLE制御アプリ、便利になった一方で実際どういう風に動いているのだろう? というのが想像しづらくなってきた感が否めません。
一番詳しいはずの作者である筆者がそんな風に思ってしまったので、「もう訳分からん」という方も多いかも?
というかですね、今回のVer2.00を作成していて「これ本当に狙った制御が出来ているのか?」という不安が筆者の中でちょっと生まれてしまったんですね。
もちろん、UfoCtrlアプリのデバッグをしているときにはログとか出して確認していますし、実際にチクニーできっちり使用して体感としておかしくないかという点も一応検証はしているのですが……。
というわけで、制御の状態を可視化して確認できるツールアプリを作成しました。

まあ、まずはこちらをご覧ください。(のっけから拒絶反応が起きてしまうかもしれませんが。)
すみません、年齢制限掛けているのでこのサイト上では再生できないみたいなのでリンクを貼ります。
このアプリの動作の様子を録画したものです。
UfoCtrlTester Ver2.00 動作デモ (Youtube Short動画)

もっとも大抵の方は1台か2台しか接続しないと思われる(勝手に筆者がそう思っている)ので、こんな風にMaxの5台(TWの左右を別扱いにすると計6台)を同時稼働することなんて無いとは思うのですが。
しかし、実際の機器接続が不要なこのテストツールですと、Max稼働がこういとも簡単に実行出来てしまいます。

というわけで、自作したランダムパターンの検証などにも使えるツールですので、詳細をご紹介していきます。

前提

UfoCtrlTester Ver2.00は『UfoCtrl Ver2.00 U.F.O. TW U.F.O. SA A10サイクロンSA (+PLUSプラス) バッハスマート ROCKET+1D 等BLE制御アプリ』のプログラムをベースとして、BLE機器接続通信関連を全削除し、代わりにダミー接続機能とパラメタ表示機能を実装したものです。
今回が初めてのリリースになりますが既にVer2.00としているのはUfoCtrl Ver2.00をベースに改造したからです。

制御状態を画面表示して確認するためのツールですので、画面を消して動作させることには全く意味がありませんが、UfoCtrlをベースにしているので、画面を消す関連の機能も中途半端に残っていたりしますが触らない方が無難かと思います。(動作確認とかしてません)
同様に、画面を消しても動き続けられるようにフォアグラウンドサービスを起動させる形態はそのままですので、このアプリも終了はきちんと終了させてください。ホーム画面を呼び出して裏に回しただけではこのアプリは終了しません。

あと、今後UfoCtrlの改修と合わせてこちらをリリースするかどうかは未定です。確約は致しませんのでご了承ください。

使用方法

画面表示がさらに増えて機種によっては全部ちゃんと見れないケースが増えるかもしれません。(一応うちのへっぽこ720x1280ピクセルの機種ではギリギリ全部見れましたが)
なので、UfoCtrlのときと同様にまずは使わない分は非表示にしてしまった方がこの先の作業がしやすいかと思います。

画面右上のメニューの『︙』をタップしますと、『Switches』というメニューがありますので、そこをタップしてください。

一番上の行『U.F.O. TWを使う』のチェックボックスをU.F.O. TWを使用しない方は外してください。
その下の行『TW以外』の0〜4のラジオボタンはU.F.O. TW以外の機器で使用する数を選んでください。

例として機器1台分だけを抜粋してUfoCtrlと比較してみましょう。
まずはUfoCtrl

続いて今回のUfoCtrlTester

上段は全てパラメタ表示領域となってまして、下段にダミー接続関連を追いやってます。
左から順に。
『1』とあって青色の下線が光っているトグルボタンは番号を表すと同時に擬似接続ボタンとなっていまして、ここをタップするたびに接続状態と非接続状態を切り替えます。実際の機器のように接続待ちとかキャンセルとか無いので即時に切り替わります。
次の『1』とあるスピナーは機器分類のための番号です。UfoCtrlでは実際に接続した機器の名称を表示しますが、Testerではその代わりに番号を指定します。同じ番号を指定すると同種の機器であるとみなします。(これはSync動作Mirror動作などに影響を及ぼします。)
次の『⇄±』は狭くなりましたがUfoCtrlと全く同じ方向限定制御のボタンです。
最後のパターン選択のスピナーもUfoCtrlと全く同じです。


上段の表示項目を説明します。

表示項目の上段は現在選択しているランダムパターンのパラメタです。固定パターンのときには表示されません。
左から順に。
1) 選択対象のVolume。最初はユーザーが指示したVolumeから始まるがランダムパターンの設定によってVolumeが遷移することがあるので現在のVolumeを表示します。
2) 選択対象のPowerIndexRange。
3) 選択対象のTimeIndexRange。
4) 選択対象のGradualIndexRange。
5) 選択対象のPWMIndexRange。
6) NextVolume。
7) NextPowerIndexRange。

表示の下段は選択対象から実際にランダムで選択された値とそこから導き出された出力(機器に送信する値)を表示します。
左から順に。
2] 選択されたPower。
3] 選択されたTime。
4] 選択されたGradual。画面下Volumeボタン右のGradual制御ボタンでGuadual制御を制限している場合は常に「0」(Gradualしない)となります。
5] 選択されたPWM。画面下Volumeボタン右のPWM制御ボタンでPWM制御を制限している場合は常に「0」(PWMしない)となります。
6] 同種の機器が複数接続されているときにRelがSync(同期)となっているときには「S」と、Mirror(反転)となっているときには「M」と表示します。
7] 現在の出力値。

「S」「M」の表示は、

Relの選択で「UnRelated」以外を選択しているときに発生し得ます。
「S」「M」表示中はそれより上で接続している同種の機器と同期または反転動作するためパラメタの選択等は行わないので 7] 現在の出力値 の表示のみ行い、他は表示されません。

また、下段の 3] Time , 4] Gradual , 5] PWM の文字は黄色になることがあります。
黄色くなっているときは現在そこの処理をしている最中であることを示しています。
あるPowerから次のPowerに切り替わるとき、Gradual制御をする場合はその値に則って徐々に次のPowerに近付けていきます。そのときGradualの値を黄色くしています。
次のPowerに到達したとき、PWM制御をする場合はその値に則ってPowerに倍率を掛けて所定の間隔でOn/Offを繰り返します。そのときPWMの値を黄色くしています。
次のPowerに到達したとき、PWM制御をしない場合はTimeの時間分そのPowerを継続します。そのときTimeの値を黄色くしています。
所定のTimeが経過するとNextVolumeとNextPowerIndexRangeに従って次のパターンを選択しにいきます。
なお、Gradual制御中はTimeを消費しません。TimeはあくまでもPowerに到達してからの時間を示しています。

パターン選択の流れをもう一回整理しておきますと。

最初左上のVolume,PowerIndexRangeの範囲内でランダム選択によりPowerを一つ選択します。
すると、その選択されたPowerに紐付いているTimeIndexRange,GradualIndexRange,PWMIndexRangeが自ずと決まります。
各IndexRangeの範囲内でランダム選択により各Time,Gradual,PWMが決定され、その値に従ってPowerを遷移させていきます。
選択したPowerでTime分の時間が経過すると、NextVolume,NextPowerIndexRangeの値を次のPower選択の範囲とします。
これの繰り返しです。

最初のうちは目まぐるしく変化する表示についていけないかもしれないので、動作させる機器を少なくしてしばらく様子を眺めてみるのも良いかと思います。

なお、設定の時間は100msを単位として記述しているものの、既定値では処理は200ms間隔で行われます。(MinimumIntervalを2としているため)
そのため、Gradualの定義やPWMの定義で200ms間隔ではぴったりにならないような定義をすると表示が滑らかに動きませんが、それはそういう定義にしているからですのでご心配なく。
例えばGradualで「1/3」と定義すると300ms毎に1変化ですので、200ms経過時点では変化無く、400ms経過時点で1変化、600ms経過時点で2変化、800ms経過時点でも2変化、というやや変則的な変化になりますが仕様です。

障害情報

今回Testerを作成している中でUfoCtrlとも共通する不具合を発見しております。
Volumeをゼロ以外にしている状態で機器接続をするとアプリが落ちる。というものですが、今回のTesterはそこだけは対処した状態で公開致します。

他にも1つ不具合が発覚しているのですが、その対処も含めた状態で改修したいので、UfoCtrlの方ではVolumeをゼロにした状態で機器接続するようにお願い致します。

その、他の不具合というのが、直接原因はいつも同じ箇所で発生しているのですが、どうしてそんなことになるのか現時点では筆者が解明出来ておらず、根本原因を探るのに時間が掛かりそうな感じです。
また、現実の機器を接続する必要があるUfoCtrlではほぼ再現できないのではないかと思っています。
UfoCtrlTesterでは待ち時間無しでダミー接続と接続解除が出来てしまうため、短時間でたくさんの操作を集中して行うことが出来てしまい、その結果データの一部がよろしくない状態でプログラムが動いてしまって落ちる、みたいな感じになっています。
これは現在のUfoCtrlTesterでは割と起こせる不具合ですので(それでも起きないときは全く起きないので確率はそんなに高くありません。また多分ですが性能が高い機種では起きにくいかもしれません。)、試してみたい方は短時間に操作しまくって様子を見てみてください。すっとアプリが落ちるときがあります。
落ちるタイミングは次のランダムパターンを選択するときです。

申し訳ありませんが、ここの部分の改修にはちょっとお時間が掛かってしまうことが予想されます。(もしくはUfoCtrlでは実質起きないという結論になって放置という可能性も無くはないです)

元となるUfoCtrlの説明

はこちら。
UfoCtrl Ver2.00 U.F.O. TW U.F.O. SA A10サイクロンSA (+PLUSプラス) バッハスマート ROCKET+1D 等BLE制御アプリ
UfoCtrl Ver1.10 U.F.O. TW U.F.O. SA A10サイクロンSA (+PLUSプラス) バッハスマート ROCKET+1D 等BLE制御アプリ
UfoCtrl Ver1.00 U.F.O. TW U.F.O. SA A10サイクロンSA (+PLUSプラス) バッハスマート ROCKET+1D 等BLE制御アプリ
の解説をご参照ください。

ダウンロードファイル

勝手な再配布はしないでください。
また、このファイルのみへの直接リンクを貼ることもご遠慮ください。
特に、うちのサイトは弱小なので、検索で上位に表示されるサイトに勝手にコピーされると、盗まれたのとほぼ同じ状況に陥ります。
何かしらの問題が発覚して、こちらのサイトでファイルを差し替えても、それが皆さんの元には反映されなくなることにも繋がります。

諸事情によりアプリの無料配布を終了致しました。
今後は活動を支援してくださる方とのみ細細と共有していければと思います。

今後のUfoCtrlアプリ配布ページはこちらです。
UfoCtrlTester Ver2.00 (UfoCtrl開発活動支援プラン)

2024-11-12 2024-11-11

この記事のタグ

U.F.O.

TW

SA

アプリ

制御

電動

自作

チクニー

開発