デジタル鉄道模型フォーラムDCC・メルクリン等のデジタル鉄道模型の話題でコミュニケーションできる場です。登録・利用は無料です。
デスクトップステーション(DesktopStation)のページはこちら
・無料の日本型超高品質DCCサウンドデータをWebで配布中!
・鉄道模型をスマホで簡単制御!国産で革新的なコマンドステーション DSair2はこちらから。

2016年01月23日

Desktop Station 0.94f

Desktop Station 0.94fを公開しました。Webアプリ周りが大きな変更点です。

■更新内容
・先にブラウザが立ち上がってDesktop Stationサーバーにアクセスしてしまうと、Desktop Stationが起動できないバグを修正
・Webアプリの画面表示を大幅に高速化。
・Webアプリのファンクションボタンをちょっと大きくした
・スライダーを廃止。メーターに一本化。
・Webアプリの動作する端末に、機関車の運転状況とアクセサリの情報を配信するようにした(他のユーザーが操作した内容が数秒以内に画面に反映されて表示します)
→ファンクションの操作も反映できるように作っているのですが、CheckBoxのCheckedプロパティに反映しても表示が変わらない問題があり、原因を調査中です。jQuery, HTMLの実装の問題と想定してます。
・(1/24こっそり更新)走行中、停止中でイベントスクリプトを発生させる際にトリガ条件に速度しきい値を追加。またスロット指定が反映されていなかったバグを修正。
・(1/24こっそり更新)複数車両制御画面で、進行方向ボタンのスケーリングが間違っていたのを修正

今回のアップデートで運転会でみんなで同じ線路で走らせるために必要最低限の機能は実装したと思っております。

■今後のWebアプリの機能強化予定

CS2やZ21のような端末のiOS/Android専用アプリとしての実装は、費用面(開発環境整備やライセンス費など)や時間的に対応は困難なため、Webアプリで機能を実現して行くこととしてます。完全に無料で頒布する必要もないことや、動作する端末を選ばないのが一番の強みです。パソコンでもスマホでもTVでもニンテンドー3DSでも、ブラウザとwifiルーターへの接続ができて、HTML5/JavaScrtiptが動くものならなんでも良いのです。

・レイアウト表示。Desktop Stationで作ったレイアウト図などをWebアプリで表示して操作できるようにする。編集は不可。
・ファンクションボタンがWebアプリ上で反映されないので、これのバグ取り。
・S88、運転状況モニタ。
・ポイントの画像表示。Desktop Station上で設定した画像をWebアプリ上でも表示する。
・Webアプリの接続インターフェース仕様の公開。Webアプリや、その他のWeb経由で動くソフトを組み合わせて、さらにおもしろいことができるようにインターフェースは公開を考えています。海外ユーザーさんのアイデアですが、家の鉄道模型を外からカメラを見ながら操作する、などです。

開発環境はややこしいように見えますが、このWebアプリの開発では、DSmainR5などの本体がなくても模擬モードで起動し、外部端末は同時に起動させるChromeで代用すればいいので、スタバのような外でも問題なく、ドヤりながら開発ができます。なお、IT系の方はリッチな方が多いようですが、弊社はスタバに行くようなリッチではないので、ネットで買った豆を若手社員に挽いてもらってできたおいしいコーヒーを家のリビングで飲みながらとなります・・・。

■仕組み

Desktop StationのWebアプリの仕組みを解説します。専門用語だらけなので、ご了承ください。

Desktop Station Software(WindowsPCで動くソフト)に、TCP/IPのWebサーバー機能を実装しています。やっていることは大したことはなく、自IPの1192ポートに対して、HTTPで情報取得したいという要求がスマートフォンなどのクライアントから来たら、応答として、webapp以下のindex.htmlやjQueryのライブラリ、スタイルシート、画像を呼び出し元に送信をします。また、特定のアドレス(/GetStatus)に向けて定期的に読み出しをする仕組みを取って、Ajaxと呼ばれる仕組みを使って、サーバーとクライアント間を1秒間隔で機関車情報や電力供給有無、アクセサリ類の状況をテキストデータで渡すようにしています。どんな情報を渡しているか気になる方は、Chromeのデベロッパーモードでネットワークのタブを見てもらえればデータの内容はすぐに解ります。

WebAppCommunication.png

スマートフォン側は、ブラウザからDesktop Station Softwareの管理するWebサーバーにアクセスに行きます。この時、http://192.168.0.123:1192/のようにIPアドレス直打ちもあれば、ホスト名を使って、http://yaasanpc.local:1192/とすることも、ちゃんとDNSサーバーにホスト名が登録されていれば使えます。
サーバーからは、webapp以下のフォルダのhtmlファイルなどがそのまま渡されるので、ブラウザがこれを表示します。画面デザインには、JavaScriptライブラリでの金字塔であるjQueryのUI拡張 jQuery UIを使用しています。

ボタンなどをおすと、TCP/IPのGETメッセージを使ってサーバー側に指令を送ります。GETメッセージは以下のように送ってます。実は、DSmainR5にそのままシリアルで送っている命令とあまり変わらないようにしてます。というのも、もともとは、ESP8266などを介して余計な処理なしにDCCやMM2の機関車などを制御できるようにしたかったからです。DSpiも、Galileoでの実装も、この部分は共通となってます。


速度120dでDCC アドレス3の機関車を運転する指令:
http://yaasanpc.local:1192/?CMD=setLocoSpeed(49155,120)


他社様だと応答性などを考えてTCP/IPのアプリケーション層でなくトランスポート層のUDPで制御しているようですが、組み込みを身にしみてわかっている立場上、下側で速度のためにいろいろな部分を複雑にしたくなかったのと、もともとWebアプリ実装を想定していたので、TCP/IPの典型的な機能であるGETメッセージ(ブラウザでURLを打ち込んで情報がほしいと送る仕組み)で命令を送る体系にしてました。速度を犠牲にした分、シンプルにしたおかげで、JavaScriptなどの超高機能なライブラリを活用できるという副次的な効果が得られてます。
欠点としては、TCP/IPのレベルなので遅いというふうに考えてしまいがちですが、そんなに急がなくても他に遅いところがたくさんあるので、あまり気になりません。
posted by yaasan at 15:13 | Comment(3) | 鉄道模型
この記事へのコメント
精力的な開発に驚きます、期待してます。
一つ要望が有ります。パソコンでDesktop Stationを起動するとき、startまで起動するような、コマンドラインのパラメータはできないでしょうか。stick PC 利用時に便利です。パソコン起動時に全ての処理を完了するbatfileを作りたいのです。
Posted by shinonome at 2016年01月24日 08:37
コメントありがとうございます。
コマンドラインパラメータで自動起動するオプションを追加しておきます。
Posted by Yaasan at 2016年01月24日 13:43
ver.0.94f入れました。iPhoneやiPadの画面にホストの操作が反映されるようになって凄く良いです。運転のスクリプトを自動で作ってくれるティーチング機能も素晴らしいです。
まだまだ使いこなせていませんが、このような素晴らしいシステムを作ってくださいましてありがとうございます。
Posted by クッキーTP at 2016年01月24日 22:41
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。