TOSEIクラウド2 簡易マニュアル 管理画面を開く
連携ガイド 03

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_flgtrue のまま、稼働状況の更新だけが止まることがあります。 そのため 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 では取得できません。見出しなどで自社ページ側に表示してください。