APIを使って実装する
公開APIから稼働状況をJSONで取得し、自社サイトのデザインに合わせて自由に表示できます。認証は不要で、ブラウザから直接呼び出せます。
店舗ホームページへの掲載
1
エンドポイント
GET https://toseicloud-admin-api.laundry-dx.jp/api/public/device-statuses/{StoreID}?sort=unit_no
認証は不要です。{StoreID} に店舗IDを指定して呼び出すと、
機器一覧と稼働状況が JSON 形式で返ります。
レスポンスの詳細は APIリファレンス(Swagger UI) で確認・お試しいただけます。
2
使う主なフィールド
result[] 配列の各要素が1台の機器に対応します。
| フィールド | 意味 |
|---|---|
unit_no | 号機番号 |
connection_flg | 通信状態。false なら未接続 |
device_type_master.name | 機器種別(乾燥機 / 洗濯機 など) |
device_model_master.product_number | 型番 |
device_model_master.device_size | サイズ区分(S / M / L) |
device_status.operation_status.code | 稼働コード。"1" が運転中(コード一覧) |
device_status.operation_status.name | 稼働状態の表示名(空き / 運転 など) |
device_status.process.code | 運転工程コード(コード一覧) |
device_status.process.name | 工程の表示名(L2(本洗) / dr(乾燥) など) |
device_status.remaining_time | 残り運転時間(分) |
3
コード一覧
code は数値ではなく文字列で返ります("1" のように比較してください)。
画面にそのまま出す場合は、コードを判定せず name を使うのが簡単です。
稼働状態 operation_status.code
| コード | 状態 |
|---|---|
"0" | 空き |
"1" | 運転 |
"2" | 異常 |
"3" | 非通信機械 |
"4" | 一時停止 |
"5" | 調整中 |
"7" | ソフトリンクル |
"9" | 機器接続中 |
"99" | 確認中 |
運転工程 process.code
| コード | 工程 |
|---|---|
"0" | 最初から |
"1" | L1(予洗) |
"2" | L2(本洗) |
"3" | L3(すすぎ1) |
"4" | L4(すすぎ2) |
"5" | L5(すすぎ3) |
"6" | SP(脱水) |
"7" | dr(乾燥) |
"8" | Co(冷却) |
"A" | 追加乾燥 |
4
稼働状態の判定ルール
- 未接続
connection_flg === false、またはupdated_atが10分以上前 - 運転中未接続ではなく、かつ
operation_status.code === "1" - 空き上記以外
connection_flg が true のまま、稼働状況の更新だけが止まることがあります。
そのため device_status.updated_at(稼働状況の最終更新日時)の鮮度も確認すると、実態に近い表示になります。
しきい値の10分は当社サンプルでの既定値です。通常は数十秒ごとに更新されます。
5
最小コード例
装飾を除いた「データ取得+表示」の最小例です。上記の判定ルールをそのまま実装しています。
STORE_ID を変更し、
表示部分(innerHTML の内側)を自社のデザインに差し替えてください。
<div id="device-status">読み込み中…</div>
<script>
const STORE_ID = 10001; // ← 店舗IDを指定
const API = `https://toseicloud-admin-api.laundry-dx.jp/api/public/device-statuses/${STORE_ID}?sort=unit_no`;
const STALE_MS = 10 * 60 * 1000; // 10分以上古ければ通信途絶とみなす
// updated_at(日本時間・タイムゾーン表記なし)を +09:00 固定で読み取る
function updatedAtMs(s) {
const m = /^(\d{4})-(\d{2})-(\d{2})[ T](\d{2}):(\d{2}):(\d{2})$/.exec(s || "");
if (!m) return null;
const [y, mo, d, h, mi, sec] = m.slice(1).map(Number);
return Date.UTC(y, mo - 1, d, h - 9, mi, sec);
}
// 通信が落ちている、または更新が止まっていれば未接続
function isOffline(d) {
if (!d.connection_flg) return true;
const t = updatedAtMs(d.device_status?.updated_at);
return t !== null && Date.now() - t > STALE_MS;
}
async function loadDeviceStatus() {
const res = await fetch(API);
const { result } = await res.json();
document.getElementById("device-status").innerHTML = result.map(d => {
const offline = isOffline(d);
const running = !offline && d.device_status?.operation_status?.code === "1";
const state = offline ? "未接続" : running ? "運転中" : "空き";
const remain = (running && d.device_status.remaining_time > 0)
? `(残り${d.device_status.remaining_time}分)` : "";
return `<li>${d.unit_no}号機 ${d.device_type_master?.name ?? ""}:${state}${remain}</li>`;
}).join("");
}
loadDeviceStatus();
setInterval(loadDeviceStatus, 30000); // 30秒ごとに更新
</script> 注意
実装時の注意点
- サイトは HTTPS で配信してください(HTTP の場合、混在コンテンツとしてブロックされます)。
- 本APIはブラウザから直接呼び出せます(CORS 許可済み)。サーバーを経由せず JavaScript から取得できます。
- 更新間隔は 30秒程度を推奨します。短い間隔での連続呼び出しはお控えください。
- 店舗名は API では取得できません。見出しなどで自社ページ側に表示してください。