クライアントインスタンス
1128字程度約4分
2024-11-7
ESP-AI プログラムでは、esp_ai.begin() と esp_ai.loop() が 2 つの必須ベースライン メソッドです。 次のセクションには、使用できますすべてのインスタンスメソッドがリストされているため、シナリオに记づいて選択できます。
## 。ハジメ
パラメータ
例
ESP_AI esp_ai;
void setup() {
Serial.begin(115200);
...
bool debug = true;
// Start ESP-AI
esp_ai.begin({ debug });
}.ループ
Arduino loop(){}。 loop() 一つ上に設定します。
例
ESP_AI esp_ai;
void loop() {
esp_ai.loop();
// other code...
}.setWifiConfig
Wi-Fi name / Wi-Fi password / api_key / custom cached fields 手動設定。 設定後、再度Wi-Fi接続を行ってください。。 彼は最高の Wi-Fi 資格情報です。状況を変えて空の文字列。。 成功はそのとき true 復帰はそのとき、失敗はそのとき false 復帰はそのとき。
例
JSONVar data;
data["wifi_name"] = "oldwang";
data["wifi_pwd"] = "oldwang520";
data["api_key"] = "xxx";
data["custom_field"] = "xxx";
esp_ai.setWifiConfig(data); // reconnects Wi-Fi.wifiIsConnected
Wi-Fi接続。
例
ESP_AI esp_ai;
void loop() {
esp_ai.loop();
// Returns true after Wi-Fi is connected. Must be called after esp_ai.loop();
if (!esp_ai.wifiIsConnected()) {
return;
}
}.localIP
Wi-Fi接続が確立されると、LAN IPが復元されます。。
例
Serial.println(esp_ai.localIP().c_str());## 。きろ
このメソッドをHUび出すと、アシスタントがダイレクトスタートされ、会話フローに入ります。 グループみ込みのウエイクアップソリューションがビジネススケジュールに最適です。お一人様でもご利用いただけます。。
例
esp_ai.wakeUp().setボリューム
パラメータ
- タイプ:
float - ファン・ウェイ:
0-1
例
// Set volume: 0-1
esp_ai.setVolume(0.8);.onEvent
コマンドを信した後のコールバック (たとえば、ユーザーが turn on the light / turn off the light と言う)。 このコールバックでデバイスロジックを処理します。
ここで ASR および LLM テキストの結果をリッスンすることもできます (横サーバーで sendToClient() (あります)。 テキストを信したら、それを画面にいろいろしたり、他のアクションをトリガーしたりできます。
例
void on_command(const String& command_id, const String& data) {
Serial.printf("\nCommand received: %s -- %s\n", command_id, data);
// LED control demo
if (command_id == "device_open_001") {
Serial.println("Turn on light");
digitalWrite(led_pin, HIGH);
}
if (command_id == "device_close_001") {
Serial.println("Turn off light");
digitalWrite(led_pin, LOW);
}
// Conversation stream
if (command_id == "on_llm_cb") {
Serial.println(data);
}
if (command_id == "on_iat_cb") {
Serial.println(data);
}
if (command_id == "on_tts_cb") {
Serial.println(data);
}
}
void setup() {
Serial.begin(115200);
esp_ai.begin({ ... });
// Register command callback
esp_ai.onEvent(on_command);
}.onエラー
合わせられたエラーコールバック。
| エラーコード | 説明 |
|---|---|
| 000 | 不明なサービスエラー |
| 001 | 内部サーバーエラー |
| 002 | サーバー認証エラー |
| 100 | 不明な IAT エラー |
| 101 | IATの受け入れに失敗しました。 |
| 102 | IAT は呼び出しに失敗しました |
| 200 | 不明な LLM エラー |
| 201 | LLM は引き継ぎに失敗しました |
| 202 | LLM Hubi出しが失敗しました |
| 200 | 不明な TTS エラー |
| 201 | TTS は続にしました |
| 202 | TTS Hubi出しが失敗しました |
例
void onError(const String& code, const String& at_pos, const String& message) {
// some code...
}
void setup() {
Serial.begin(115200);
// Register error callback before begin() to avoid missing startup errors
esp_ai.onError(onError);
esp_ai.begin({ ... });
}.onAPInfo
デバイスがWi-Fi接続が続かない場合、APモードが開始され、このコールバックがトリガーされます。 このコールバックが开すると、ユーザーにプロビジョニング ページを开くようにクエストめます。
例
// @url provisioning URL. If your device has a screen, render it as a QR code.
void onAPInfo(const String& url, const String& ip, const String& onAPInfoap_name) {
// some code...
}
void setup() {
Serial.begin(115200);
esp_ai.begin({ ... });
// Register AP callback
esp_ai.onAPInfo(onAPInfo);
}.onNetStatus
ネットワークステータスとサーバー涚ステータスの変化に対するコールバック。
| サイズ | 説明 |
|---|---|
| "0" | Wi-Fi が続かない |
| "0_ing" | Wi-Fiに継続する |
| "0_ap" | プロビジョニングのためにAPモードが設定されました |
| "2" | サーバーが开続されていない |
| 「3」 | サーバーが続行されました |
例
void onNetStatus(const String& status) {
// some code...
}
void setup() {
Serial.begin(115200);
// Register before begin() to avoid missing early status events
esp_ai.onNetStatus(onNetStatus);
esp_ai.begin({ ... });
}.onConnectedWifi
Wi-Fi接続成功後。 device_ip は LAN IP アドレスです。
例
void onConnectedWifi(const String& status) {
// some code...
}
void setup() {
Serial.begin(115200);
esp_ai.onConnectedWifi(onConnectedWifi);
esp_ai.begin({ ... });
}.onSessionStatus
デバイスセッションステータスのコールバック。
** ステータス:**
| サイズ | 説明 |
|---|---|
| "xxx" | アイドル |
| "iat_start" | ASR が開始されました |
| "iat_end" | ASRが終了しました |
| "tts_chunk_start" | TTSチャンクが開始されました(セッションごとに複数発生する可能性があります)。 |
| "tts_chunk_end" | TTSチャンクが終了しました (セッションごとに複数発生する可能性があります)。 |
| "tts_real_end" | セッション全の TTS が本得に終了しました |
| "llm_end" | LLM 推論は終了しました (TTS は可能です) |
| 「セッションの終了」 | セッションが終了しました |
例:
void onSessionStatus(const String& status) {
// Handle session status
}
void setup() {
esp_ai.onSessionStatus(onSessionStatus);
esp_ai.begin({ ... });
}.onボリュームCb
音量の響き。
void on_volume(float volume)
{
Serial.printf("[Info] Current volume: %f\n", volume);
}
esp_ai.onVolume(on_volume);.onBindDevice
Wi-Fi プロジェクトが正常に完了すると、成功が達成されます。
このコールバックを使用して、デバイスバインディングリクエストを使ってメッセージを送信します。
ビジネスサービスの対応达に记づいて値を回します。
data API。 data["wifi_name"]。
パラメータ:
device_id: デバイスIDwifi_name: Wi-Fi SSIDwifi_pwd: Wi-Fi パスワードothers:拡张カスタムパラメータ
** 戻り値:**
- JSON テキスト文字列:
messageはプロビジョニングページに直接意味されます trueを無視:バインディングが成功し、Wi-Fiデータが自動保存されますfalseを無視:バインディングに失敗しました
例:
String onBindDevice(JSONVar data) {
Serial.println("[Info] device_id: " + data["device_id"]);
Serial.println("[Info] wifi_name: " + data["wifi_name"]);
Serial.println("[Info] wifi_pwd: " + data["wifi_pwd"]);
Serial.println("[Info] api_key: " + data["ext1"]);
Serial.println("[Info] ext2: " + data["ext2"]);
Serial.println("[Info] ext3: " + data["ext3"]);
// Success example
return "{\"success\":true,\"message\":\"Device activated successfully, restarting soon.\"}";
// Failure example
return "{\"success\":false,\"message\":\"Device binding failed. Please reboot and try again.\"}";
}注記:
にのみアクティブ化されたとみておきます。 Wi-Fi は正常であり、接続は正常です && onBindDevice 接続は成功しており、接続は成功しています。
.getLocalData / .setLocalData
本を保存する。 ほとんどのハードウェアコードでは、getLocalData がより頻繁に使用されます。setLocalData は、通常、プロビジョニングフローでデータが既に保存されているため、あまり普通ではありません。
ビジネスサービスにピックアップ継続する場合、通常、サーバーはdevice_idが必要となります。
データキー:
device_id(読みとり専用)- Wi-Fi_名
- wifi_pwd
- api_key
- 任意のハイエンド
例:
// Read data
String ext1 = getLocalData("ext1");
// Write data
setLocalData("ext1", "custom_data_xxx");.getLocalAllData
されているすべてのデータを取得します。
例:
JSONVar data = getLocalAllData();
Serial.println(data["wifi_name"]);.tts
マニュアル マニュアル マニュアル。
例:
esp_ai.tts("Text to be spoken");.stopSession
TTS および関連タスクの廃止と組み込み、現在はセッションが停止されています。。 ハードウェア側停止する必要な場合、これは必要な方法です。
例:
esp_ai.stopSession();.onPosition
地理的位置情報。 位置情報 Wi-Fi ネットワーク/IPv4 情報によって解決され、Wi-Fi 接続続後に 1 Reply to トリガーされます。
パラメータ:
ip:現在のWi-Fiネットワークの一時的なパブリックIPnation:国province:状態/状態city:市
例:
void onPosition(const String& ip, const String& nation, const String& province, const String& city) {
// Handle location
}
void setup() {
esp_ai.onPosition(onPosition);
esp_ai.begin({ ... });
}.clearData
开発者が生んだフィールドやプロビジョニングデータを合わせるすべてのデバイスデータをクリアします。
例:
void setup() {
esp_ai.begin({ ... });
esp_ai.clearData();
}.on缲り回転クリック
ボタンが5されたときはコールバックされます。 フレームワークはプロビジョニングデータを自動にクリアします。 追加必要な場合と追加必要な場合。
例:
void onRepeatedlyClick(const String& ip, const String& nation, const String& province, const String& city) {
// Handle custom logic for repeated clicks
}
void setup() {
esp_ai.onRepeatedlyClick(onRepeatedlyClick);
esp_ai.begin({ ... });
}.onEmotion
AIエモーションコールバック。恋愛感情。 サポートされている気持ち: none、happy、sad、angry、surprised、focused、worried、annoyed、sleepy、questioning、fearful、awed、 affirmative、negative。
例:
void onEmotion(const String& emotion) {
Serial.print("Emotion: ");
Serial.println(emotion);
}
void setup() {
esp_ai.onEmotion(onEmotion);
esp_ai.begin({ ... });
}.playBuiltinAudio
MP3オーディオストリームの再生:16k サンプルレート、16 ビット深度、モノラル。
例:
// ...
esp_ai.playBuiltinAudio(const unsigned char *data, size_t len);.suspendAllTask
みんなのxTaskCreateタスクを一時停止します。
例:
// ...
esp_ai.suspendAllTask();.resumeAllTask
みんなの xTaskCreate タスクを実行します。
例:
// ...
esp_ai.resumeAllTask();.delAllTask
Made with したタスクをすべてcut with します。
例:
// ...
esp_ai.delAllTask();.isSpeaking
デバイスが現在オーディオを再生しているかどうかを確認します。
例:
// ...
bool isSpeaking = esp_ai.isSpeaking();.awaitPlayerDone
再生は終わった、待って、待って。
例:
// ...
esp_ai.awaitPlayerDone();
