日本語

XiaomiのスピーカーがOpenClawとどのように連携しているか

解決策1:「Xiaoai Open Platform - Custom Skills」を使って音声テキストをOpenClawに転送する

(「アクセススピーカー」のようなものです)

対象効果:
あなたがXiaomiのスピーカーに一言言った→Xiao Aiは認識されたテキストをサーバーに送信→、サーバーはOpenClaw に呼びかけてXiao Aiのスピーカーブロードキャストに返信させます/v1/chat/completions→ →。

建築

Xiaomiスピーカー(ASR)→Xiaoai Skill Cloud Callback(HTTPS)→Webhookサービス→OpenClaw HTTP →Xiaoai(TTS)ブロードキャスト→テキストを返します

準備が必要です

  1. シャオアイオープンプラットフォームアカウント&カスタムスキル作成(コンソール内では「スキル開発→カスタムスキル」)
  2. パブリックネットワーク上でアクセス可能になるHTTPSサービス(ドメイン名+証明書、プラットフォームコールバックは一般的にHTTPSが必要です)
  3. OpenClawはOpenAI互換HTTPエンドポイントを起動します:POST /v1/chat/completions

主要実装ポイント(最小限の統合ステップ)

  1. Xiaoaiプラットフォームで「カスタムスキル」を作成し、以下を設定します:
    • ウェイクワード/スキル名
    • 意図/スロット(最もシンプル:ユーザーを文全体でクエリテキストとして扱う)
    • サーバー側のコールバックURL(あなたの)https://xxx.com/xiaoai/webhook
  2. WebhookサービスがXiaoaiからのリクエストを受け取った場合:
    • 認証署名/トークン(Xiaoaiプラットフォームの書類要件に基づく)
    • ユーザーの言った内容を削除してくださいquery
    • OpenClawのチューニング:
      • POST http://<openclaw-gateway-host>:<port>/v1/chat/completions([OpenClaw][2])
    • 返却されたOpenClawcontentをXiao Aiが求めるJSON応答形式に戻す(TTSで諦めてください)

「ブリッジサービス」(Node/Express)の最小限の例

以下の例は「テキストをOpenClawに転送し、その後テキストを返す」ことを示すものであり、プラットフォームのドキュメントによるとXiao Ai側の署名検証/応答フォーマットのフィールドを入力する必要があります。

import express from "express";

const app = express();
app.use(express.json());

app.post("/xiaoai/webhook", async (req, res) => {
  // 1) TODO: 校验小爱签名/鉴权(按平台文档)
  const userText =
    req.body?.request?.intent?.query ||
    req.body?.query ||
    req.body?.request?.query ||
    "";

  // 2) 调 OpenClaw OpenAI 兼容端点
  const r = await fetch("http://127.0.0.1:18789/v1/chat/completions", {
    method: "POST",
    headers: { "content-type": "application/json" },
    body: JSON.stringify({
      model: "auto",
      messages: [
        { role: "system", content: "你是简洁的中文语音助手,回答尽量短。" },
        { role: "user", content: userText },
      ],
    }),
  });

  const data = await r.json();
  const answer = data?.choices?.[0]?.message?.content?.trim() || "我没听清。";

  // 3) TODO: 按小爱自定义技能要求组织响应 JSON(这里先用占位)
  return res.json({
    // 你需要替换成小爱平台规定的字段
    reply: answer,
  });
});

app.listen(3000, () => console.log("xiaoai bridge on :3000"));

解決策2:Home Assistantを使って「Xiaomiエコシステム」を接続し、AutomaticでOpenClawにテキストをドロップする

(「音声トリガーリンク」により適している)

ターゲット効果:スピーカーに「リビングルームのライトをつける/特定のシーンを実行する」と言い→、Xiaomiの生態デバイス/シーンの状態をHome Assistantに入力→HAの自動化トリガー→OpenClawのチューニング(まとめ/放送/録画/追加操作を行う)を指示します。

準備が必要です

  • ホームアシスタント
  • Xiaomi公式Xiaomi Home連携(OAuth2ログイン対応)
  • オプションで、HAのwebhook/RESTコマンドを使ってイベントをOpenClawに転送することもできます

この道の利点:多くのリンクをプレイするためにシャオアイのスキルレビューをする必要はありません。 欠点:どちらかというと「スマートホームのリンク」のようなもので、「恣意的なQ&Aチャット」というよりは。

選択推奨事項(直接結論)

  • あなたが求めているのは、「スピーカーを音声の入口として使い、OpenClawと自由にチャットできるように」→選択A(Xiao Aiのカスタムスキル)です。
  • あなたが望むのは、「Xiaomiのデバイス/シーンをハブに入力し、OpenClawを自動化に参加させる」→B(Home Assistant)を選択します。

はい、Home Assistantを使うというアイデアは「Xiaomiエコシステム」をHAに接続し、トリガーソースやアクチュエーターとして使うことでしょう。 OpenClawは「脳」として使われます。 スピーカーは「聞く/話す」または「アナウンシング」の責任を負います。 (ただし、多くのXiaomiスピーカーはモデルやプロトコルによって標準media_player として直接 TTSを放送できない場合があります。) )

Home Assistantで遊ぶ典型的な方法は2つあります

ゲームプレイA:Xiao Aiは音声(クラウド)を担当し、HAは自動化、OpenClawは意思決定やテキスト生成を担当します

話者に「リビングの明かりをつけて、今日何をすればいいか教えて」と言います。

  • シャオアイ -> ミジアのシーン/装置をトリガーします
  • HAはデバイスの状態変化やシーントリガーを受信します
  • HAはOpenClawを「ブロードキャストテキスト/要約」文を生成するようチューニングしています
  • その後、HAはテキストを放送可能なデバイス(Chromecast、Googleスピーカー、ESPHomeスピーカーなど)に「キャスト」します。

適している場合:すでにHAハブを持っていて、OpenClawを「インタプリタ/サマライザー/ロガー」にしたい場合。

ゲームプレイB:HAローカルアシストを音声エントリーとして(どちらかというと「ローカル音声アシスタント」のようなもの)

  • STT/TTSとHA Assist(ローカル/セミローカル音声パイプライン)を組み合わせています。
  • OpenClawは会話型バックエンドとして使う(テキストをOpenClawに転送するためにミドルウェアを書く)
  • HAは応答TTSを放送する責任があります(HAの音声衛星やmedia_player

適している場合:リンク全体をできるだけ「ローカライズ」したいが、より多くの作業量を要する。

2) Xiaomiデバイスへのアクセス(HA側)

現在主流はXiaomi Home Integration(公式/公式の協力ルート、OAuth2ログイン、パスワード保存なし)を使う ことです。

説明(非常に短い):

  • HA: 設定 → デバイスおよびサービス → Xiaomi Home→統合を追加(OAuthログインは指示されます)
  • ログイン後、デバイスは(ライト、ソケット、センサー、エアコンなど)として表示されます。

3) HAで「OpenClawを呼び出す」方法

本質的に、HAはOpenClawへのHTTPリクエストを自動化→送信します。 これはrest_commandHAや自動化された呼び出す動作)で一般的な手法 であり、コミュニティでも「ウェブフックやHTTPリクエストを作成する」ためによく使われています。

例えば: configuration.yaml

rest_command:
  openclaw_chat:
    url: "http://127.0.0.1:18789/v1/chat/completions"
    method: POST
    headers:
      content-type: "application/json"
    payload: >
      {
        "model":"auto",
        "messages":[
          {"role":"system","content":"你是简洁的中文家庭助手。"},
          {"role":"user","content":"{{ prompt }}"}
        ]
      }

そして自動化では:

  • トリガー:特定のXiaomiデバイスの状態の変化(例:ドアの磁気開閉)
  • アクション:rest_command.openclaw_chat呼びかけてprompt代わり
  • その後、返送されたコンテンツを放送・通知します(次のセクション参照)

自動化トリガーの基本的な概念については、HAドキュメントを参照してください。状態変更やイベントなどをトリガーできます。

4) OpenClawの返答がどのように「放送されたか」

このステップが最も踏みやすいです。XiaomiスピーカーがHAによる放送TTSとしてmedia_player  使えるかどうかは、しばしば不安定または珍しいです(コミュニティではXiaomiスマートスピーカー/ネットワークスピーカーについて多くの議論がありますが、すべてのモデルに適用できる「統一された公式な方法」はありません)。

つまり、一般的に「実用的」なルートは三つあります:

ルート1:「HAで既に安定している放送機器」へのブロードキャスト

  • Chromecast / Google Nest / Sonos / ESPHome スピーカー / HA Voice Assistant 衛星など
    (このタイプのTTS/再生リンクはHAでより成熟しています)

ルート2:TTSを放送せず、通知に変更

  • HAモバイルアプリのプッシュ
  • Telegram/Feishu(すでにボットシステムがある場合)

ルート3:スピーカーは「リトルラブクラウド放送」を引き続き追っています

  • HAにミジアのシーン/シャオアイスキルを呼んで放送させましょう(「放送アクション」をシーンやサービスにできるかどうかによります)

5) 選択方法

(OpenClawのターゲット現在)

  • あなたが望むのは「スピーカー=無料のチャット入場」です。優先的に「Xiaoai カスタムスキル→OpenClaw」(HA不要)
  • あなたが望むのは「全館自動化+OpenClawの意思決定・まとめへの参加」です:HAを使いましょう(デバイスアクセス、トリガー、リンクはすべてHAにあります)
上部へスクロール