2018年7月31日火曜日

X-Planeで飛行時間を短縮するためのマクロを作成しました

以前にも取り上げていますが、X-Planeでは長距離飛行の巡航時間の短縮がやりにくいです。対地速度だけを2~16倍に上げる機能がありますが、あくまで対地速度を上げるだけであって、シミュレーション速度は変わりません。その結果、物理計算やオートパイロットは対地速度に対して相対的に遅くシミュレートされることになり、軌道修正の反応が遅くて、機体が大暴れを起こします。具体的には、ピッチがハンチングを起こしはじめ、次第に増幅し、数千フィート単位で高度が上下動します。放っておくと地上に激突したり宇宙空間に飛び出しそうな勢いです。シミュレーション速度の方も速くすることはできるのですが、CPUのパワーを使うようで、1.2倍程までしか上げることができません。

対地速度を上げる方法で巡航飛行の時間を短縮するには、対地速度を上げた後、ハンチングが大きくなって手が付けられなくなる前に、通常速度に戻してハンチングが収束するのを待ち、また対地速度を上げるということを繰り返す必要があります。短距離ならなんとか使えなくもないですが、長距離だと面倒で付き合っていられません。

もう一つの方法は地図のウィンドウを表示して、自機のマーカーをドラッグして移動させる方法があります。これであれば長距離を瞬間移動できます。しかし、FMSに入力したルートに沿って飛んでいる場合、そのルート上に目算でドラッグしなければなりませんし、マウスでドラッグするということは、どうしても、ある程度はFMSのルートからずれてしまいます。私の場合Pilot2ATCで飛んでいるため、ルートからはずれるとATCから怒られてしまいます。
最大の問題は、地図の縮小レベルに限界があって狭い範囲しか表示できないことです。長い距離を移動しようと思うと、少しずつ刻んで移動していくことになります。地図の下の方に表示された機体を地図の上の方にドラッグしてワープするのですが、その後ドラッグ先周辺の地図をロードするのに時間がかかり、そのロードが終わるまで地図がスクロールせず、次のドラッグができません。ロード時間は海のみのエリアであれば速いのですが、陸が含まれているとトイレに行って戻ってきても終わっていなさそうなほど時間がかかります。一回一回ワープするたびにそれですから、かなり手持ち無沙汰になります。現状は、そのようにして地図上を少しずつワープ移動することしかできません。

どちらの方法にせよ、X-Planeでの移動時間の短縮はストレスです。


どうにかならないものかといろいろ試行錯誤しているのですが、現状としては、FlyWithLuaのマクロを作って手間を軽減しています。

この自作マクロにより、2~512倍速く移動することができます。この倍速移動を開始するとX-Planeをポーズ状態にし、その瞬間の方位、速度、昇降率で移動し続けます。FMSにルートが入力されていても旋回しませんし、オートパイロットに入力されている高度も考慮しません。ただ開始した時の進行方向に高速移動し続けます。
一定の高度を巡航している場合でも、実際は微妙に上昇降下して高度を維持しており、ある瞬間の昇降率で移動しつづけると、ずっと先では高度が大きく変わってしまいます。そのため、開始時の高度を維持する機能はつけました。移動した分だけ時間も経過していることになりますから、その分の時間を加える機能も追加しました。

このマクロで、一定速度の上昇、下降時や、巡航時におけるウェイポイント間の飛行を短縮することができます。
ただし、速く移動しすぎると風景のロードが間に合わなくなりますので、その部分はどうしようもありません。また、移動した分の燃料は消費しません。高速移動中は、地図上での現在地が更新されないため、停止するタイミングが分かりにくいです。
いろいろ欠点は多く、巡航を短縮するための完全な解決はできませんが、省力化はできます。

このマクロを使用したい方がおられましたら、ここからダウンロードしてください。zip圧縮されています。
使うには、FlyWithLuaが必要です。何かのアドオンを使うためにすでにインストールされているかもしれません。

使い方は、FlyWithLuaのScriptフォルダにFastTravel.luaを放り込みます。そして、FastTravelの各機能をジョイスティックのボタンにアサインします。機能は以下の6種類あります。

1.Increase speed…速度を、2倍、4倍、8倍、16倍、32倍、64倍、128倍、256倍、512倍に上げていきます。
2.Increase speed(Maintain altitude)…速度を上げていきます。高度は開始時を維持します。
3.Inclesase speed(Time advance)…速度を上げていきます。その分、時間もすすめます。
4.FastTravel: Inclesase speed(Maintain altitude, Time advance)…速度を上げていきます。開始時の高度を維持し、時間をすすめます。
5.Declease speed…速度を一段階遅くします。
6.Reset speed…速度を1倍速にし、FastTravelを停止します。



実際に使うのは3.Inclesase speed(Time advance)、4.FastTravel: Inclesase speed(Maintain altitude, Time advance)、6.Reset speedの3つだけで十分だと思います。
高速移動中は画面下に、高度等の情報を表示していますので、参考にしてください。
ボタンにアサインするのでVRコントローラーやジョイスティックに設定して、VRでも使うことができます。


本当はこうした実用上必要な機能は標準で入っていてほしい気がします。そういえば、FSXでも8倍速や16倍速でオートパイロットを使うと、機体が暴れていました。フライトシミュレーターには、まじめにシミュレートしなくてもいいので、あくまで時間短縮の機能を用意しておいて欲しいです。
実際に何時間もかかるルートを、本当に何時間もかけて飛ばすのも悪くはありませんが、生きる時間にも限りがありますので、こうした部分こそシミュレーターである利点を活かしてほしいです。

2018年7月27日金曜日

タイマーや外出先から家電操作、RS-WFIREX3の良いところと不満点

私が住む部屋のエアコンは三菱製なのですが、これのタイマー機能がとても使いにくい仕様になっています。オンとオフのタイマーを今から何時間後に行うかという相対指定で行います。時計を内蔵していないので、具体的な時刻を指定してエアコンをオン/オフすることができません。しかも、オンとオフのタイマーを同時に使うこともできません。例えばエアコンをつけたまま寝て、1時間後にエアコンをオフにし、7時間後にオンにするというような使い方はできません。
使いにくいエアコンのリモコン

オール電化なので、深夜電力が安いプランで契約しています。午後11~午前7時までは電気代が大幅に安くなります。エアコンは、起動してから部屋の温度が下がるまでが一番電力を消費します。そこで、朝、エアコンをつけるタイミングを午前7時よし少し前にすれば電気代が得です。しかし、時計を内蔵していない三菱のエアコンでは、オンにする時刻をピンポイントで指定することはできません。寝る前にタイマー予約するにしても、30分単位なので、正確な時刻を指定するにはセットするタイミングを見計らう必要があります。現実にそんな面倒なことはやっていられません。

そんなことを考えていたとき、汎用リモコンという製品が存在するのを思い出しました。それであれば設定できるのではないかと思って、調べていたところ、もっと便利なスマート家電コントローラというものが存在しているのを見つけました。Amazon EchoやGoogle Homeで家電をコントロールする際に使うもののようですが、スマホから直接使うこともできます。スマホがリモコンになり、しかも外出先から遠隔操作することができます。タイマー機能もちゃんと持っています。エアコンに限らず、テレビ、シーリングライト、扇風機等、赤外線で操作するものはなんでもコントロールできます。
この手の製品はいくつかあるようですが、ラトックシステムのRS-WFIREX3という製品を選びました。Aamzonで6,872円と、少々値が張ります。
製品自体は手のひらサイズに小さくて軽いです。USBケーブルが付属していますが、電源は付いていません。なんらかのUSB電源が必要です。私は、その辺に転がっていたポケットWiFiの充電器を流用しました。それと2.5GHzのWiFiが必要になります。
ラトックシステムのRS-WFIREX3

設定は、説明書に沿ってやっていけば簡単です。一度設定すると、装置の中に設定情報が記録されるので、電源を抜いて他のコンセントへ移動することができます。と、言いたいところですが、なぜかできませんでした。他のコンセントに移動すると、赤色LEDが点滅してWiFiに再接続してくれません。しかたないのでリセットして再設定しなおしました。このあたり、製品としてちょっと不安定かもしれません。
WiFiにつながるようになったら、専用のスマホアプリにコントロールする家電製品を追加していきます。ある程度の家電はプリセットされていますが、存在しない場合は学習させる必要があります。一部、学習できなかった機能(NEC製シーリングライトの光色切替)がありましたが、普段使わない機能なので問題はありません。

RS-WFIREX3は温度、湿度、照度という3つのセンサーを内蔵しています。それらで外出先から部屋の状態を確認することができます。
例えば、部屋にペットを飼っている場合、外出先から部屋の温度を確認して、必要に応じてエアコンを遠隔操作することができます。温度が一定の値に達したら通知を受けるように設定することもできます。
部屋の温度、湿度、照度をどこからでも確認

アプリにはタイマー機能があり、分単位で家電をコントロールできます。一回だけでなく、毎日繰り返し実行するように設定することもできます。平日や土日等の曜日単位に指定することはできますが、祝祭日には対応していません。
タイマーを複数作成可能

マクロという機能があり、複数の操作を連続して一括で行うことができます。例えばエアコンと扇風機の電源を同時にオンにするようなことができます。しかし、マクロといっても単に連続実行するだけで、内蔵のセンサーの状態や日時等を条件にするようなことはできません。

「リモコンデータ受け渡し」を使うことで、設定データをXML形式でエクスポート/インポートすることができます。設定のバックアップをとったり、他のスマホへコピーすることができます。

アプリから家電を操作したときのレスポンスもは、スマホが同じWiFiネットワーク内にある時は安定しており、早いですが、外出先から操作すると、はじめに数秒かかることがあります。問題を感じるほどのタイムラグではありません。
赤外線という性質から、リモコンから家電までの間に光を妨げるものがあってはなりませんので、RS-WFIREX3の設置場所や家電、家具の配置に注意する必要があります。
エアコンのコントロール画面例

話は少し変わりますが、以前、スマートコンセントというのを別の製品を購入して、ルーターの電源コントロール用に使っています。ルーターですからめったに電源を操作することはなく、放置しており、それで問題ないのですが、ついでにそちらの状態を確認したところ、操作不能になっていました。スマートコンセントにあるボタンの操作も、スマホアプリからの操作もできません。いろいろ試行錯誤したのですが、原因が分からず、いったんは放置してみることにしました。
少し詳しい人であれば気が付くと思いますが、スマートコンセントにしても、赤外線の家電コントローラーにしても、どこか外部のサーバーに接続しているだろうことが想像つきます。それは、サーバーが止まるようなことがあれば、それらの装置を屋外から使うことができなくなることを意味します。
実際、スマートコンセントをしばらく放置していると、復活していましたので、やはりサーバーが原因の可能性が高いです。
こうした機器は外部のサーバーに依存しており、サーバーを維持するメーカーの信頼性が問題になります。そのあたりが盲点になりえるかもしれません。