ユーザ用ツール

サイト用ツール


dsair_wifi_specification

DSair Wi-Fi Specification

本ページでは、FlashAirベースで開発されたDSairに、ユーザーの皆様が開発・製作した機器やソフトウェアを接続してコントロールするための仕様を公開します。世界で唯一のオープンな無線・Wi-Fi対応のDCCコマンドステーションとして、活用いただければ幸いです。

接続方法

FlashAirカードにWi-Fiで接続してください。SSIDは、初期はFlashAir_(は任意の英数字)、パスワードは12345678です。 FlashAir W-04においては電源投入後、10-20秒程度で、Wi-Fi接続が可能になります。DSairのアプリのConfig画面で、SSIDとパスワードは簡単に変更可能です。なお変更後は切断されます。SSIDとパスワードを変更した物に再設定してください。

同時接続モード(FlashAirがアクセスポイントにもなり、無線LANルータにも接続されるモード)の場合は、数分の時間が掛かる場合があります。

DSairへのコマンドの渡し方は、FlashAirのCGIコマンド共有メモリアクセスを使用します。

http://flashair/command.cgi?op=131&ADDR=0&LEN=64&DATA=DSair内部コマンド

DSair内部コマンドを変えることで、任意の命令をDSairに送って制御できます。

DSairへの命令・コマンド

関数一覧

機能 関数 使用例 引数解説
線路電源PW(PowerFlag) PW(1)PW(0)で線路電源OFF、PW(1)でONです。
進行方向DI(LocoAddr,Direction) DI(49155,1)
ファンクションFN(LocoAddr,FuncNo,FuncVal) FN(59140,2,1)
車両速度SP(LocoAddr,Speed,Speedstep)SP(59140,0,2)
ポイントTO(AccAddr,AccDirection)TO(14337,0)
アナログDC(AnalogSpeed,AnalogDirection)DC(300,2) 線路電源OFFの時だけ使用可能。
引数 意味 備考
PowerFlagOFF=0, ON=1線路電源の状態を切り替えます。
DirectionFWD=1, REV=2 0はFWDと見なします。
FuncNo0-28F0~F28に相当します
FuncValOFF=0, ON=1 ファンクションの状態です。
Speed0-10231023で最高速度です。512で50%です。
Speedstep0-2DCCのとき128Stepは2です。MM2モードの時は0を指定してください。
AccDirection分岐方向=0, 直進方向=1ポイントの切り替え方向です。
AnalogSpeed 0-1023 アナログ電圧(スピード)。0が停止、1023が最大電圧です。
AnalogDirection 0 or 1:FWD, 2:REVアナログの極性。0または1はFWD, 2はREVとなります。

DSairにコマンドを送る例としては、以下のようになります。

http://flashair/command.cgi?op=131&ADDR=0&LEN=64&DATA=SP(59140,0,2)

HTTP GETコマンドを送るだけです。

コマンドの送信間隔

0.5秒(500ms)間隔程度で、コマンドを送信してください。 他のWi-Fiデバイスからコマンドを同時に打ち込んだ場合、後着優先となります。

アドレスの考え方

LocoAddr, AccAddrのアドレスには、DCCとメルクリンの二つのプロトコルを包含し、さらに車両とアクセサリもカバーした16bitのアドレス空間が定義されています。

アドレスの種類 アドレス範囲 アドレスの意味 備考
Marklin Motorola 2 車両 0x0000-0x07FF 0(0x0000) - 255(0x00FF)
DCC 車両 0xC000-0x1FFF 0(0xC000) - 9999(0xE70F)
Marklin Motorola 2 アクセサリ 0x3000-0x37FF 1(0x3000) - 320(0x3140)
DCC アクセサリ 0x3800-0x3FFF 1(0x3800) - 2044(0x3FFC)

実際にコマンドに使用する場合には、10進数に直して使用してください。たとえば0xC000→49152となります。

DCCアドレス3を動かす場合は、LocoAddrには49152+3=49155を指定すると、DCCアドレス3の車両が動きます。 MM2アドレス3の場合は、LocoAddrには0+3=3を指定すると、MM2アドレス3の車両が動きます。

ポイントの場合は、0x3800(16進数)→14336(10進数)をオフセット値にして、DCCポイントアドレス5の場合は、14336-1+5=14340を指定すると、ポイントが切り替わります。ポイントの場合は1はじまりなので、-1しておくことが大事です。

JavaScriptでの操作

jQueryを使用した場合は、以下のようなコードでコマンドを送信できます。

function onChangeSpeed(inSpeed) {

   var url = "/command.cgi?op=131&ADDR=0&LEN=64&DATA=SP(49155," + inSpeed + ",2)";
   $.get(url, function (data) {});

}

状態・ステータスの読み出し

取得方法

共有メモリの128バイト目以降からサイズ264バイト(ASCII TEXT)に、制御状態や車両・ポイントデータが含まれているので、これを解析することで、制御状態を把握することができる。

/command.cgi?op=130&ADDR=128&LEN=264
N,0,0,0,155,00,2,22,00000000000;000000000000000;0000000000000000000000000000000000000000000000000000000000000000;0000,00,0,00000000/0000,00,0,00000000/0000,00,0,00000000/0000,00,0,00000000/0000,00,0,00000000/0000,00,0,00000000/0000,00,0,00000000/0000,00,0,00000000

パワーオン状態の確認

FlashAirの共有メモリのアドレス128にサイズ1のデータが格納されており、ここがYのときは線路電源ON、Nか0x00のときは線路電源OFFと判断します。

取得:
/command.cgi?op=130&ADDR=128&LEN=1

セット:
(setPowerコマンドで自動的にセットされます)

ステータスデータの一覧

データはすべててテキストである。

IndexByte サイズ パラメータ名 定義 備考
0 1 線路電源 ON=“Y”, OFF=0x00 線路の電源状態を示します
1 1 - カンマ(,) 区切り文字
21 エラー番号
3 1 - カンマ(,) 区切り文字
41 FIRMWARE_VER
5 1 - カンマ(,) 区切り文字
61 制御車両数(0-15, 16進数)
7 1 - カンマ(,) 区切り文字
8-103 線路電圧120=12.0V
11 1 - カンマ(,) 区切り文字
12-132 出力電流10=1.0A
14 1 - カンマ(,) 区切り文字
151 ハードウェアVer
16 1 - カンマ(,) 区切り文字
17-182 送信回数
19 1 - カンマ(,) 区切り文字
20-31 ダミー
32-4616 CV応答データ
471区切り
48-11164 ポイント状態
1121区切り
113-152車両データ8台分LocAddr,Spd,Dir,Func

活用方法

操作コマンドのインターフェースが公開されているので、Wi-Fiスロットルを自分で作ることが出来ます。

  • ESP-WROOM-02や32、M5Stackを使って、独自にスロットルを作る
  • スマホアプリを自分で独自に構築してみる

サポートについて

デジタル鉄道模型フォーラムで対応します。当社へのメールでの直接のサポート依頼は一切承りません。また、当社が開発した製品同士以外との接続に関するトラブルや、不具合については関知しません。ご自分で開発された機器やソフトは、ご自分でメンテナンス・サポートをお願いいたします。

活用事例

dsair_wifi_specification.txt · 最終更新: 2018/12/25 10:59 by yaasan