Merge pull request #338 from acon96/release/v0.4.6

Release v0.4.6
This commit is contained in:
Alex O'Connell
2026-01-04 10:03:51 -05:00
committed by GitHub
65 changed files with 10287 additions and 6366 deletions

View File

@@ -37,7 +37,7 @@ The latest models can be found on HuggingFace:
**Gemma3**:
1B: TBD
270M: TBD
270M: https://huggingface.co/acon96/Home-FunctionGemma-270m
<details>
@@ -61,105 +61,21 @@ NOTE: The models below are only compatible with version 0.2.17 and older!
The model is quantized using Llama.cpp in order to enable running the model in super low resource environments that are common with Home Assistant installations such as Raspberry Pis.
The model can be used as an "instruct" type model using the [ChatML](https://github.com/MicrosoftDocs/azure-docs/blob/main/articles/ai-services/openai/includes/chat-markup-language.md) or [Zephyr](https://huggingface.co/HuggingFaceH4/zephyr-7b-alpha/discussions/3) prompt format (depends on the model). The system prompt is used to provide information about the state of the Home Assistant installation including available devices and callable services.
Example "system" prompt:
```
You are 'Al', a helpful AI Assistant that controls the devices in a house. Complete the following task as instructed with the information provided only.
The current time and date is 08:12 AM on Thursday March 14, 2024
Services: light.turn_off(), light.turn_on(brightness,rgb_color), fan.turn_on(), fan.turn_off()
Devices:
light.office 'Office Light' = on;80%
fan.office 'Office fan' = off
light.kitchen 'Kitchen Light' = on;80%;red
light.bedroom 'Bedroom Light' = off
```
For more about how the model is prompted see [Model Prompting](/docs/Model%20Prompting.md)
Output from the model will consist of a response that should be relayed back to the user, along with an optional code block that will invoke different Home Assistant "services". The output format from the model for function calling is as follows:
`````
turning on the kitchen lights for you now
```homeassistant
{ "service": "light.turn_on", "target_device": "light.kitchen" }
```
`````
Due to the mix of data used during fine tuning, the 3B model is also capable of basic instruct and QA tasks. For example, the model is able to perform basic logic tasks such as the following (Zephyr prompt format shown):
```
<|system|>You are 'Al', a helpful AI Assistant that controls the devices in a house. Complete the following task as instructed with the information provided only.
*snip*
<|endoftext|>
<|user|>
if mary is 7 years old, and I am 3 years older than her. how old am I?<|endoftext|>
<|assistant|>
If Mary is 7 years old, then you are 10 years old (7+3=10).<|endoftext|>
```
### Synthetic Dataset
The synthetic dataset is aimed at covering basic day to day operations in home assistant such as turning devices on and off.
The supported entity types are: light, fan, cover, lock, media_player, climate, switch
The dataset is available on HuggingFace: https://huggingface.co/datasets/acon96/Home-Assistant-Requests
The dataset is available on HuggingFace: https://huggingface.co/datasets/acon96/Home-Assistant-Requests-V2
The source for the dataset is in the [data](/data) of this repository.
### Training
If you want to prepare your own training environment, see the details on how to do it in the [Training Guide](./docs/Training.md) document.
<details>
<summary>Training Details</summary>
The 3B model was trained as a full fine-tuning on 2x RTX 4090 (48GB). Training time took approximately 28 hours. It was trained on the `--large` dataset variant.
```console
accelerate launch --config_file fsdp_config.yaml train.py \
--run_name home-3b \
--base_model stabilityai/stablelm-zephyr-3b \
--bf16 \
--train_dataset data/home_assistant_train.jsonl \
--learning_rate 1e-5 \
--batch_size 64 \
--epochs 1 \
--micro_batch_size 2 \
--gradient_checkpointing \
--group_by_length \
--ctx_size 2048 \
--save_steps 50 \
--save_total_limit 10 \
--eval_steps 100 \
--logging_steps 2
```
The 1B model was trained as a full fine-tuning on an RTX 3090 (24GB). Training took approximately 2 hours. It was trained on the `--medium` dataset variant.
```console
python3 train.py \
--run_name home-1b \
--base_model TinyLlama/TinyLlama-1.1B-Chat-v1.0 \
--bf16 \
--train_dataset data/home_assistant_train.jsonl \
--test_dataset data/home_assistant_test.jsonl \
--learning_rate 2e-5 \
--batch_size 32 \
--micro_batch_size 8 \
--gradient_checkpointing \
--group_by_length \
--ctx_size 2048 \
--save_steps 100 \
--save_total_limit 10
--prefix_ids 29966,29989,465,22137,29989,29958,13 \
--suffix_ids 2
```
</details>
If you want to fine-tune a model yourself, see the details on how to do it in the [Training README](./train/README.md).
## Version History
| Version | Description |
|---------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| v0.4.6 | New dataset supporting proper tool calling, Add Anthropic "messages" style API support, Add on-disk caching for Llama.cpp backend |
| v0.4.5 | Add support for AI Task entities, Replace custom Ollama API implementation with the official `ollama-python` package to avoid future compatibility issues, Support multiple LLM APIs at once, Fix issues in tool call handling for various backends |
| v0.4.4 | Fix issue with OpenAI backends appending `/v1` to all URLs, and fix an issue with tools being serialized into the system prompt. |
| v0.4.3 | Fix an issue with the integration not creating model configs properly during setup |

12
TODO.md
View File

@@ -1,12 +1,14 @@
# TODO
- [ ] new model based on qwen3 0.6b, 1.7b and 4b
- [ ] new model based on gemma3 270m
- [ ] support AI task API
- [ ] vision support for remote backends
- [x] add examples of 'fixing' a failed tool call to the dataset
- [x] add proper 'refusals' to the dataset (i.e. tool/device not available or device is already in the desired state)
- [ ] new model based on qwen3 0.6b, 1.7b and 4b
- [x] new model based on gemma3 270m
- [x] support AI task API
- [x] vision support for remote backends
- [ ] vision support for local backend (llama.cpp + llava)
- [ ] move llamacpp to a separate process because of all the crashing
- [ ] optional sampling parameters in options panel (don't pass to backend if not set)
- [ ] update dataset so new models will work with the Assist API
- [x] update dataset so new models will work with the Assist API
- [ ] make ICL examples into conversation turns
- [ ] translate ICL examples + make better ones
- [ ] figure out DPO to improve response quality

View File

@@ -3,6 +3,7 @@ from __future__ import annotations
import logging
import os
import shutil
from typing import Final
from homeassistant.config_entries import ConfigEntry, ConfigSubentry
@@ -24,8 +25,8 @@ from .const import (
CONF_BACKEND_TYPE,
CONF_INSTALLED_LLAMACPP_VERSION,
CONF_SELECTED_LANGUAGE,
CONF_OPENAI_API_KEY,
CONF_GENERIC_OPENAI_PATH,
CONF_API_KEY,
CONF_API_PATH,
CONF_CHAT_MODEL, CONF_DOWNLOADED_MODEL_QUANTIZATION, CONF_DOWNLOADED_MODEL_FILE, CONF_REQUEST_TIMEOUT, CONF_MAX_TOOL_CALL_ITERATIONS,
CONF_REFRESH_SYSTEM_PROMPT, CONF_REMEMBER_CONVERSATION, CONF_REMEMBER_NUM_INTERACTIONS, CONF_REMEMBER_CONVERSATION_TIME_MINUTES,
CONF_PROMPT, CONF_TEMPERATURE, CONF_TOP_K, CONF_TOP_P, CONF_MIN_P, CONF_TYPICAL_P, CONF_MAX_TOKENS,
@@ -43,6 +44,7 @@ from .const import (
BACKEND_TYPE_GENERIC_OPENAI_RESPONSES,
BACKEND_TYPE_LLAMA_CPP_SERVER,
BACKEND_TYPE_OLLAMA,
BACKEND_TYPE_ANTHROPIC,
BACKEND_TYPE_LLAMA_EXISTING_OLD,
BACKEND_TYPE_LLAMA_HF_OLD,
)
@@ -51,6 +53,7 @@ from .backends.llamacpp import LlamaCppClient
from .backends.generic_openai import GenericOpenAIAPIClient, GenericOpenAIResponsesAPIClient
from .backends.tailored_openai import TextGenerationWebuiClient, LlamaCppServerClient
from .backends.ollama import OllamaAPIClient
from .backends.anthropic import AnthropicAPIClient
from .utils import get_llama_cpp_python_version, download_model_from_hf
_LOGGER = logging.getLogger(__name__)
@@ -63,9 +66,10 @@ BACKEND_TO_CLS: dict[str, type[LocalLLMClient]] = {
BACKEND_TYPE_LLAMA_CPP: LlamaCppClient,
BACKEND_TYPE_GENERIC_OPENAI: GenericOpenAIAPIClient,
BACKEND_TYPE_GENERIC_OPENAI_RESPONSES: GenericOpenAIResponsesAPIClient,
BACKEND_TYPE_TEXT_GEN_WEBUI: TextGenerationWebuiClient,
BACKEND_TYPE_TEXT_GEN_WEBUI: TextGenerationWebuiClient,
BACKEND_TYPE_LLAMA_CPP_SERVER: LlamaCppServerClient,
BACKEND_TYPE_OLLAMA: OllamaAPIClient,
BACKEND_TYPE_ANTHROPIC: AnthropicAPIClient,
}
async def async_setup_entry(hass: HomeAssistant, entry: LocalLLMConfigEntry) -> bool:
@@ -78,7 +82,9 @@ async def async_setup_entry(hass: HomeAssistant, entry: LocalLLMConfigEntry) ->
def create_client(backend_type):
_LOGGER.debug("Creating Local LLM client of type %s", backend_type)
return BACKEND_TO_CLS[backend_type](hass, dict(entry.options))
# Merge entry.data and entry.options - data has connection info, options has model settings
client_options = {**dict(entry.data), **dict(entry.options)}
return BACKEND_TO_CLS[backend_type](hass, client_options)
# create the agent in an executor job because the constructor calls `open()`
backend_type = entry.data.get(CONF_BACKEND_TYPE, DEFAULT_BACKEND_TYPE)
@@ -96,9 +102,18 @@ async def _async_update_listener(hass: HomeAssistant, entry: LocalLLMConfigEntry
await hass.config_entries.async_reload(entry.entry_id)
async def async_unload_entry(hass: HomeAssistant, entry: LocalLLMConfigEntry) -> bool:
"""Unload Ollama."""
"""Unload the integration."""
if not await hass.config_entries.async_unload_platforms(entry, PLATFORMS):
return False
if entry.data[CONF_BACKEND_TYPE] == BACKEND_TYPE_LLAMA_CPP:
# clean up any disk cache resources
def cleanup_cache_dir():
cache_dir = entry.data[CONF_CHAT_MODEL].strip().replace(" ", "_").lower()
full_path = os.path.join(hass.config.media_dirs.get("local", hass.config.path("media")), "kv_cache", cache_dir)
shutil.rmtree(full_path, ignore_errors=True)
await hass.async_add_executor_job(cleanup_cache_dir)
hass.data[DOMAIN].pop(entry.entry_id)
return True
@@ -115,7 +130,7 @@ async def async_migrate_entry(hass: HomeAssistant, config_entry: LocalLLMConfigE
# Migrate the config_entry to be an entry + sub-entry
if config_entry.version == 2:
ENTRY_DATA_KEYS = [CONF_BACKEND_TYPE]
ENTRY_OPTIONS_KEYS = [CONF_SELECTED_LANGUAGE, CONF_HOST, CONF_PORT, CONF_SSL, CONF_OPENAI_API_KEY, CONF_GENERIC_OPENAI_PATH]
ENTRY_OPTIONS_KEYS = [CONF_SELECTED_LANGUAGE, CONF_HOST, CONF_PORT, CONF_SSL, CONF_API_KEY, CONF_API_PATH]
SUBENTRY_KEYS = [
CONF_CHAT_MODEL, CONF_DOWNLOADED_MODEL_QUANTIZATION, CONF_DOWNLOADED_MODEL_FILE, CONF_REQUEST_TIMEOUT, CONF_MAX_TOOL_CALL_ITERATIONS,
CONF_REFRESH_SYSTEM_PROMPT, CONF_REMEMBER_CONVERSATION, CONF_REMEMBER_NUM_INTERACTIONS, CONF_REMEMBER_CONVERSATION_TIME_MINUTES,
@@ -144,7 +159,7 @@ async def async_migrate_entry(hass: HomeAssistant, config_entry: LocalLLMConfigE
entry_options[CONF_INSTALLED_LLAMACPP_VERSION] = await hass.async_add_executor_job(get_llama_cpp_python_version)
else:
# ensure all remote backends have a path set
entry_options[CONF_GENERIC_OPENAI_PATH] = entry_options.get(CONF_GENERIC_OPENAI_PATH, "")
entry_options[CONF_API_PATH] = entry_options.get(CONF_API_PATH, "")
entry_title = BACKEND_TO_CLS[backend].get_name(entry_options)

View File

@@ -0,0 +1,413 @@
"""Defines the Anthropic-compatible Messages API backend."""
from __future__ import annotations
import aiohttp
import json
import logging
from typing import Any, AsyncGenerator, Dict, List, Optional, Tuple
from anthropic import AsyncAnthropic, APIError, APIConnectionError, APITimeoutError, AuthenticationError
from homeassistant.components import conversation as conversation
from homeassistant.core import HomeAssistant
from homeassistant.exceptions import HomeAssistantError
from homeassistant.helpers import llm
from voluptuous_openapi import convert as convert_to_openapi
from custom_components.llama_conversation.const import (
CONF_CHAT_MODEL,
CONF_MAX_TOKENS,
CONF_TEMPERATURE,
CONF_TOP_P,
CONF_TOP_K,
CONF_REQUEST_TIMEOUT,
CONF_ENABLE_LEGACY_TOOL_CALLING,
CONF_TOOL_RESPONSE_AS_STRING,
CONF_API_KEY,
CONF_API_PATH,
CONF_BASE_URL,
DEFAULT_MAX_TOKENS,
DEFAULT_TEMPERATURE,
DEFAULT_TOP_P,
DEFAULT_TOP_K,
DEFAULT_REQUEST_TIMEOUT,
DEFAULT_ENABLE_LEGACY_TOOL_CALLING,
DEFAULT_TOOL_RESPONSE_AS_STRING,
DEFAULT_API_PATH,
)
from custom_components.llama_conversation.entity import LocalLLMClient, TextGenerationResult
from custom_components.llama_conversation.utils import get_file_contents_base64
_LOGGER = logging.getLogger(__name__)
def _convert_to_anthropic_messages(
conversation_messages: List[conversation.Content],
tool_result_to_str: bool = True,
) -> Tuple[str, List[Dict[str, Any]]]:
"""
Convert Home Assistant conversation format to Anthropic Messages API format.
Returns:
Tuple of (system_prompt, messages_list)
Note: Anthropic requires system prompt as a separate parameter, not in messages.
"""
system_prompt = ""
messages: List[Dict[str, Any]] = []
for message in conversation_messages:
if message.role == "system":
# Anthropic handles system prompts separately
system_prompt = message.content if hasattr(message, 'content') else str(message)
elif message.role == "user":
content = []
msg_content = message.content if hasattr(message, 'content') else str(message)
if msg_content:
content.append({"type": "text", "text": msg_content})
# Handle image attachments (Anthropic supports vision)
if hasattr(message, 'attachments') and message.attachments:
for attachment in message.attachments:
if hasattr(attachment, 'mime_type') and attachment.mime_type.startswith("image/"):
try:
image_data = get_file_contents_base64(attachment.path)
# get_file_contents_base64 returns data:mime;base64,xxx format
# Extract just the base64 part for Anthropic
if image_data.startswith("data:"):
# Remove the data URI prefix
image_data = image_data.split(",", 1)[1] if "," in image_data else image_data
content.append({
"type": "image",
"source": {
"type": "base64",
"media_type": attachment.mime_type,
"data": image_data,
}
})
except Exception as e:
_LOGGER.warning("Failed to load image attachment: %s", e)
if content:
messages.append({"role": "user", "content": content})
elif message.role == "assistant":
content = []
msg_content = message.content if hasattr(message, 'content') else None
if msg_content:
content.append({"type": "text", "text": str(msg_content)})
# Handle tool calls (Anthropic's tool_use format)
if hasattr(message, 'tool_calls') and message.tool_calls:
for tool_call in message.tool_calls:
tool_id = getattr(tool_call, 'id', None) or f"toolu_{id(tool_call)}"
content.append({
"type": "tool_use",
"id": tool_id,
"name": tool_call.tool_name,
"input": tool_call.tool_args if isinstance(tool_call.tool_args, dict) else {},
})
if content:
messages.append({"role": "assistant", "content": content})
elif message.role == "tool_result":
# Anthropic expects tool results in user messages with tool_result content
tool_result = message.tool_result if hasattr(message, 'tool_result') else {}
if tool_result_to_str:
result_content = json.dumps(tool_result) if isinstance(tool_result, dict) else str(tool_result)
else:
result_content = str(tool_result)
tool_call_id = getattr(message, 'tool_call_id', None) or "unknown"
messages.append({
"role": "user",
"content": [{
"type": "tool_result",
"tool_use_id": tool_call_id,
"content": result_content,
}]
})
return system_prompt, messages
def _convert_tools_to_anthropic_format(
llm_api: llm.APIInstance,
) -> List[Dict[str, Any]]:
"""Convert Home Assistant LLM tools to Anthropic tool format."""
tools: List[Dict[str, Any]] = []
for tool in sorted(llm_api.tools, key=lambda t: t.name):
schema = convert_to_openapi(tool.parameters, custom_serializer=llm_api.custom_serializer)
tools.append({
"name": tool.name,
"description": tool.description or "",
"input_schema": schema,
})
return tools
class AnthropicAPIClient(LocalLLMClient):
"""Implements the Anthropic-compatible Messages API backend."""
api_key: str
base_url: str
api_path: str
def __init__(self, hass: HomeAssistant, client_options: dict[str, Any]) -> None:
super().__init__(hass, client_options)
self.api_key = client_options.get(CONF_API_KEY, "")
self.base_url = client_options.get(CONF_BASE_URL, "")
self.api_path = client_options.get(CONF_API_PATH, DEFAULT_API_PATH)
async def _async_build_client(self, timeout: float | None = None) -> AsyncAnthropic:
"""Build an async Anthropic client (runs in executor to avoid blocking SSL ops)."""
effective_timeout = timeout or DEFAULT_REQUEST_TIMEOUT
kwargs: Dict[str, Any] = {
"timeout": effective_timeout,
"base_url": self.base_url,
# Use dummy key for SDK, set auth via headers for compatible API support
"api_key": "dummy-key-for-sdk",
"default_headers": {
"Authorization": self.api_key,
"x-api-key": self.api_key,
},
}
def create_client():
return AsyncAnthropic(**kwargs)
return await self.hass.async_add_executor_job(create_client)
@staticmethod
def get_name(client_options: dict[str, Any]) -> str:
base_url = client_options.get(CONF_BASE_URL, "")
return f"Anthropic-compatible API at '{base_url}'"
@staticmethod
async def async_validate_connection(
hass: HomeAssistant, user_input: Dict[str, Any]
) -> str | None:
"""Validate connection to the Anthropic-compatible API."""
api_key = user_input.get(CONF_API_KEY, "")
base_url = user_input.get(CONF_BASE_URL, "")
if not api_key:
return "API key is required"
if not base_url:
return "Base URL is required"
try:
kwargs: Dict[str, Any] = {
"timeout": 10.0,
"base_url": base_url,
"api_key": "dummy-key-for-sdk",
"default_headers": {
"Authorization": api_key,
"x-api-key": api_key,
},
}
# Create client in executor to avoid blocking SSL operations
def create_client():
return AsyncAnthropic(**kwargs)
client = await hass.async_add_executor_job(create_client)
# Fetch models to validate connection
await client.models.list()
return None
except AuthenticationError as err:
_LOGGER.error("Anthropic authentication error: %s", err)
return f"Invalid API key: {err}"
except APITimeoutError as err:
_LOGGER.error("Anthropic timeout error: %s", err)
return "Connection timed out"
except APIConnectionError as err:
_LOGGER.error("Anthropic connection error: %s", err)
return f"Connection error: {err}"
except APIError as err:
_LOGGER.error("Anthropic API error: status=%s, message=%s", getattr(err, 'status_code', 'N/A'), err)
return f"API error ({getattr(err, 'status_code', 'unknown')}): {err}"
except Exception as err:
_LOGGER.exception("Unexpected error validating Anthropic connection")
return f"Unexpected error: {err}"
async def async_get_available_models(self) -> List[str]:
"""Return available models from the API."""
try:
client = await self._async_build_client(timeout=10)
response = await client.models.list()
models = []
for model in response.data:
model_id = getattr(model, 'id', None)
if model_id:
models.append(model_id)
if models:
return models
except Exception as err:
_LOGGER.warning("Failed to fetch models from API: %s", err)
# Try fallback with aiohttp direct request
try:
headers = {
"Authorization": self.api_key,
"x-api-key": self.api_key,
"Content-Type": "application/json",
}
base = self.base_url.rstrip("/")
path = self.api_path.strip("/")
models_url = f"{base}/{path}/models"
async with aiohttp.ClientSession() as session:
async with session.get(models_url, headers=headers, timeout=aiohttp.ClientTimeout(total=10)) as response:
if response.status == 200:
data = await response.json()
models = []
for model in data.get("data", []):
model_id = model.get("id")
if model_id:
models.append(model_id)
if models:
return models
except Exception as err:
_LOGGER.debug("Fallback models fetch also failed: %s", err)
return []
def _supports_vision(self, entity_options: dict[str, Any]) -> bool:
"""Anthropic models support vision."""
return True
def _generate_stream(
self,
conversation: List[conversation.Content],
llm_api: llm.APIInstance | None,
agent_id: str,
entity_options: dict[str, Any],
) -> AsyncGenerator[TextGenerationResult, None]:
"""Generate streaming response using Anthropic's Messages API."""
model_name = entity_options.get(CONF_CHAT_MODEL, "")
max_tokens = int(entity_options.get(CONF_MAX_TOKENS, DEFAULT_MAX_TOKENS))
temperature = entity_options.get(CONF_TEMPERATURE, DEFAULT_TEMPERATURE)
top_p = entity_options.get(CONF_TOP_P, DEFAULT_TOP_P)
top_k = entity_options.get(CONF_TOP_K, DEFAULT_TOP_K)
timeout = entity_options.get(CONF_REQUEST_TIMEOUT, DEFAULT_REQUEST_TIMEOUT)
enable_legacy_tool_calling = entity_options.get(
CONF_ENABLE_LEGACY_TOOL_CALLING, DEFAULT_ENABLE_LEGACY_TOOL_CALLING
)
tool_response_as_string = entity_options.get(
CONF_TOOL_RESPONSE_AS_STRING, DEFAULT_TOOL_RESPONSE_AS_STRING
)
# Convert conversation to Anthropic format
system_prompt, messages = _convert_to_anthropic_messages(
conversation, tool_result_to_str=tool_response_as_string
)
# Prepare tools if available and not using legacy tool calling
tools = None
if llm_api and not enable_legacy_tool_calling:
tools = _convert_tools_to_anthropic_format(llm_api)
_LOGGER.debug(
"Generating completion with model=%s, %d messages, and %d tools...",
model_name,
len(messages),
len(tools) if tools else 0,
)
async def anext_token() -> AsyncGenerator[Tuple[Optional[str], Optional[List[dict]]], None]:
client = await self._async_build_client(timeout=timeout)
request_params: Dict[str, Any] = {
"model": model_name,
"max_tokens": max_tokens,
"messages": messages,
}
# Add optional parameters
if system_prompt:
request_params["system"] = system_prompt
if tools:
request_params["tools"] = tools
if temperature is not None:
request_params["temperature"] = temperature
if top_p is not None:
request_params["top_p"] = top_p
if top_k is not None and top_k > 0:
request_params["top_k"] = top_k
try:
current_tool_call: Dict[str, Any] | None = None
async with client.messages.stream(**request_params) as stream:
async for event in stream:
event_type = getattr(event, 'type', None)
if event_type == "content_block_start":
block = getattr(event, 'content_block', None)
if block and getattr(block, 'type', None) == "tool_use":
current_tool_call = {
"id": getattr(block, 'id', ''),
"name": getattr(block, 'name', ''),
"input": "",
}
elif event_type == "content_block_delta":
delta = getattr(event, 'delta', None)
if delta:
delta_type = getattr(delta, 'type', None)
if delta_type == "text_delta":
text = getattr(delta, 'text', '')
if text:
yield text, None
elif delta_type == "input_json_delta":
if current_tool_call:
partial_json = getattr(delta, 'partial_json', '')
current_tool_call["input"] += partial_json
elif event_type == "content_block_stop":
if current_tool_call:
# Parse the accumulated JSON and yield the tool call
try:
tool_args = json.loads(current_tool_call["input"]) if current_tool_call["input"] else {}
except json.JSONDecodeError:
tool_args = {}
tool_call_dict = {
"function": {
"name": current_tool_call["name"],
"arguments": tool_args,
},
"id": current_tool_call["id"],
}
yield None, [tool_call_dict]
current_tool_call = None
elif event_type == "message_stop":
break
except APITimeoutError as err:
raise HomeAssistantError(
"The generation request timed out! Please check your connection "
"settings, increase the timeout in settings, or decrease the "
"number of exposed entities."
) from err
except APIConnectionError as err:
raise HomeAssistantError(
f"Failed to connect to the Anthropic-compatible API: {err}"
) from err
except APIError as err:
raise HomeAssistantError(
f"Anthropic API error: {err}"
) from err
return self._async_stream_parse_completion(
llm_api, agent_id, entity_options, anext_token=anext_token()
)

View File

@@ -23,11 +23,12 @@ from custom_components.llama_conversation.const import (
CONF_TEMPERATURE,
CONF_TOP_P,
CONF_REQUEST_TIMEOUT,
CONF_OPENAI_API_KEY,
CONF_API_KEY,
CONF_REMEMBER_CONVERSATION,
CONF_REMEMBER_CONVERSATION_TIME_MINUTES,
CONF_GENERIC_OPENAI_PATH,
CONF_API_PATH,
CONF_ENABLE_LEGACY_TOOL_CALLING,
CONF_TOOL_RESPONSE_AS_STRING,
CONF_RESPONSE_JSON_SCHEMA,
DEFAULT_MAX_TOKENS,
DEFAULT_TEMPERATURE,
@@ -35,8 +36,9 @@ from custom_components.llama_conversation.const import (
DEFAULT_REQUEST_TIMEOUT,
DEFAULT_REMEMBER_CONVERSATION,
DEFAULT_REMEMBER_CONVERSATION_TIME_MINUTES,
DEFAULT_GENERIC_OPENAI_PATH,
DEFAULT_API_PATH,
DEFAULT_ENABLE_LEGACY_TOOL_CALLING,
DEFAULT_TOOL_RESPONSE_AS_STRING,
RECOMMENDED_CHAT_MODELS,
)
from custom_components.llama_conversation.entity import TextGenerationResult, LocalLLMClient
@@ -57,24 +59,24 @@ class GenericOpenAIAPIClient(LocalLLMClient):
hostname=client_options[CONF_HOST],
port=client_options[CONF_PORT],
ssl=client_options[CONF_SSL],
path="/" + client_options.get(CONF_GENERIC_OPENAI_PATH, DEFAULT_GENERIC_OPENAI_PATH)
path="/" + client_options.get(CONF_API_PATH, DEFAULT_API_PATH)
)
self.api_key = client_options.get(CONF_OPENAI_API_KEY, "")
self.api_key = client_options.get(CONF_API_KEY, "")
@staticmethod
def get_name(client_options: dict[str, Any]):
host = client_options[CONF_HOST]
port = client_options[CONF_PORT]
ssl = client_options[CONF_SSL]
path = "/" + client_options[CONF_GENERIC_OPENAI_PATH]
path = "/" + client_options[CONF_API_PATH]
return f"Generic OpenAI at '{format_url(hostname=host, port=port, ssl=ssl, path=path)}'"
@staticmethod
async def async_validate_connection(hass: HomeAssistant, user_input: Dict[str, Any]) -> str | None:
headers = {}
api_key = user_input.get(CONF_OPENAI_API_KEY)
api_base_path = user_input.get(CONF_GENERIC_OPENAI_PATH, DEFAULT_GENERIC_OPENAI_PATH)
api_key = user_input.get(CONF_API_KEY)
api_base_path = user_input.get(CONF_API_PATH, DEFAULT_API_PATH)
if api_key:
headers["Authorization"] = f"Bearer {api_key}"
@@ -126,15 +128,18 @@ class GenericOpenAIAPIClient(LocalLLMClient):
model_name = entity_options[CONF_CHAT_MODEL]
temperature = entity_options.get(CONF_TEMPERATURE, DEFAULT_TEMPERATURE)
top_p = entity_options.get(CONF_TOP_P, DEFAULT_TOP_P)
max_tokens = entity_options.get(CONF_MAX_TOKENS, DEFAULT_MAX_TOKENS)
timeout = entity_options.get(CONF_REQUEST_TIMEOUT, DEFAULT_REQUEST_TIMEOUT)
enable_legacy_tool_calling = entity_options.get(CONF_ENABLE_LEGACY_TOOL_CALLING, DEFAULT_ENABLE_LEGACY_TOOL_CALLING)
tool_response_as_string = entity_options.get(CONF_TOOL_RESPONSE_AS_STRING, DEFAULT_TOOL_RESPONSE_AS_STRING)
endpoint, additional_params = self._chat_completion_params(entity_options)
messages = get_oai_formatted_messages(conversation, user_content_as_list=True)
messages = get_oai_formatted_messages(conversation, user_content_as_list=True, tool_result_to_str=tool_response_as_string)
request_params = {
"model": model_name,
"stream": True,
"max_tokens": max_tokens,
"temperature": temperature,
"top_p": top_p,
"messages": messages
@@ -152,8 +157,6 @@ class GenericOpenAIAPIClient(LocalLLMClient):
}
tools = None
# "legacy" tool calling passes the tools directly as part of the system prompt instead of as "tools"
# most local backends absolutely butcher any sort of prompt formatting when using tool calling
if llm_api and not enable_legacy_tool_calling:
tools = get_oai_formatted_tools(llm_api, self._async_get_all_exposed_domains())
request_params["tools"] = tools
@@ -248,17 +251,17 @@ class GenericOpenAIResponsesAPIClient(LocalLLMClient):
hostname=client_options[CONF_HOST],
port=client_options[CONF_PORT],
ssl=client_options[CONF_SSL],
path="/" + client_options.get(CONF_GENERIC_OPENAI_PATH, DEFAULT_GENERIC_OPENAI_PATH)
path="/" + client_options.get(CONF_API_PATH, DEFAULT_API_PATH)
)
self.api_key = client_options.get(CONF_OPENAI_API_KEY, "")
self.api_key = client_options.get(CONF_API_KEY, "")
@staticmethod
def get_name(client_options: dict[str, Any]):
host = client_options[CONF_HOST]
port = client_options[CONF_PORT]
ssl = client_options[CONF_SSL]
path = "/" + client_options[CONF_GENERIC_OPENAI_PATH]
path = "/" + client_options[CONF_API_PATH]
return f"Generic OpenAI at '{format_url(hostname=host, port=port, ssl=ssl, path=path)}'"
def _responses_params(self, conversation: List[conversation.Content], entity_options: Dict[str, Any]) -> Tuple[str, Dict[str, Any]]:

View File

@@ -19,6 +19,8 @@ from homeassistant.helpers.event import async_track_state_change, async_call_lat
from custom_components.llama_conversation.utils import install_llama_cpp_python, validate_llama_cpp_python_installation, get_oai_formatted_messages, get_oai_formatted_tools
from custom_components.llama_conversation.const import (
CONF_ENABLE_LEGACY_TOOL_CALLING,
CONF_TOOL_RESPONSE_AS_STRING,
CONF_INSTALLED_LLAMACPP_VERSION,
CONF_CHAT_MODEL,
CONF_MAX_TOKENS,
@@ -38,7 +40,10 @@ from custom_components.llama_conversation.const import (
CONF_LLAMACPP_BATCH_SIZE,
CONF_LLAMACPP_THREAD_COUNT,
CONF_LLAMACPP_BATCH_THREAD_COUNT,
CONF_LLAMACPP_CACHE_SIZE_MB,
CONF_INSTALLED_LLAMACPP_VERSION,
DEFAULT_ENABLE_LEGACY_TOOL_CALLING,
DEFAULT_TOOL_RESPONSE_AS_STRING,
DEFAULT_MAX_TOKENS,
DEFAULT_PROMPT,
DEFAULT_TEMPERATURE,
@@ -55,6 +60,7 @@ from custom_components.llama_conversation.const import (
DEFAULT_LLAMACPP_BATCH_SIZE,
DEFAULT_LLAMACPP_THREAD_COUNT,
DEFAULT_LLAMACPP_BATCH_THREAD_COUNT,
DEFAULT_LLAMACPP_CACHE_SIZE_MB,
DOMAIN,
CONF_RESPONSE_JSON_SCHEMA,
)
@@ -67,6 +73,7 @@ if TYPE_CHECKING:
from llama_cpp import (
Llama as LlamaType,
LlamaGrammar as LlamaGrammarType,
LlamaDiskCache as LlamaDiskCacheType,
ChatCompletionRequestResponseFormat
)
else:
@@ -83,6 +90,7 @@ def snapshot_settings(options: dict[str, Any]) -> dict[str, Any]:
CONF_LLAMACPP_BATCH_SIZE: options.get(CONF_LLAMACPP_BATCH_SIZE, DEFAULT_LLAMACPP_BATCH_SIZE),
CONF_LLAMACPP_THREAD_COUNT: options.get(CONF_LLAMACPP_THREAD_COUNT, DEFAULT_LLAMACPP_THREAD_COUNT),
CONF_LLAMACPP_BATCH_THREAD_COUNT: options.get(CONF_LLAMACPP_BATCH_THREAD_COUNT, DEFAULT_LLAMACPP_BATCH_THREAD_COUNT),
CONF_LLAMACPP_CACHE_SIZE_MB: options.get(CONF_LLAMACPP_CACHE_SIZE_MB, DEFAULT_LLAMACPP_CACHE_SIZE_MB),
CONF_LLAMACPP_ENABLE_FLASH_ATTENTION: options.get(CONF_LLAMACPP_ENABLE_FLASH_ATTENTION, DEFAULT_LLAMACPP_ENABLE_FLASH_ATTENTION),
CONF_INSTALLED_LLAMACPP_VERSION: options.get(CONF_INSTALLED_LLAMACPP_VERSION, ""),
CONF_GBNF_GRAMMAR_FILE: options.get(CONF_GBNF_GRAMMAR_FILE, DEFAULT_GBNF_GRAMMAR_FILE),
@@ -156,6 +164,7 @@ class LlamaCppClient(LocalLLMClient):
self.llama_cpp_module = importlib.import_module("llama_cpp")
Llama: type[LlamaType] = getattr(self.llama_cpp_module, "Llama")
LlamaDiskCache: type[LlamaDiskCacheType] = getattr(self.llama_cpp_module, "LlamaDiskCache")
_LOGGER.debug(f"Loading model '{model_path}'...")
model_settings = snapshot_settings(entity_options)
@@ -170,11 +179,15 @@ class LlamaCppClient(LocalLLMClient):
)
_LOGGER.debug("Model loaded")
# TODO: check about disk caching
# self.llm.set_cache(self.llama_cpp_module.LlamaDiskCache(
# capacity_bytes=(512 * 10e8),
# cache_dir=os.path.join(self.hass.config.media_dirs.get("local", self.hass.config.path("media")), "kv_cache")
# ))
# create disk cache if enabled
# cache must be per-model to avoid conflicts with different hidden state sizes
cache_size = model_settings.get(CONF_LLAMACPP_CACHE_SIZE_MB, DEFAULT_LLAMACPP_CACHE_SIZE_MB)
cache_dir = model_name.strip().replace(" ", "_").lower()
if cache_size > 0:
llm.set_cache(LlamaDiskCache(
capacity_bytes=int(cache_size * (1024 ** 2)), # MB to bytes
cache_dir=os.path.join(self.hass.config.media_dirs.get("local", self.hass.config.path("media")), "kv_cache", cache_dir)
))
if model_settings[CONF_PROMPT_CACHING_ENABLED]:
@callback
@@ -222,6 +235,8 @@ class LlamaCppClient(LocalLLMClient):
should_reload = True
elif loaded_options[CONF_LLAMACPP_ENABLE_FLASH_ATTENTION] != entity_options.get(CONF_LLAMACPP_ENABLE_FLASH_ATTENTION, DEFAULT_LLAMACPP_ENABLE_FLASH_ATTENTION):
should_reload = True
elif loaded_options[CONF_LLAMACPP_CACHE_SIZE_MB] != entity_options.get(CONF_LLAMACPP_CACHE_SIZE_MB, DEFAULT_LLAMACPP_CACHE_SIZE_MB):
should_reload = True
elif loaded_options[CONF_INSTALLED_LLAMACPP_VERSION] != entity_options.get(CONF_INSTALLED_LLAMACPP_VERSION):
should_reload = True
_LOGGER.debug(f"Reloading llama.cpp...")
@@ -393,6 +408,7 @@ class LlamaCppClient(LocalLLMClient):
max_tokens=1,
grammar=grammar,
stream=False,
# stop=["<end_of_turn>", "<end_function_call>"]
)
self.last_cache_prime = time.time()
@@ -434,12 +450,14 @@ class LlamaCppClient(LocalLLMClient):
min_p = entity_options.get(CONF_MIN_P, DEFAULT_MIN_P)
typical_p = entity_options.get(CONF_TYPICAL_P, DEFAULT_TYPICAL_P)
grammar = self.grammars.get(model_name) if entity_options.get(CONF_USE_GBNF_GRAMMAR, DEFAULT_USE_GBNF_GRAMMAR) else None
enable_legacy_tool_calling = entity_options.get(CONF_ENABLE_LEGACY_TOOL_CALLING, DEFAULT_ENABLE_LEGACY_TOOL_CALLING)
tool_response_as_string = entity_options.get(CONF_TOOL_RESPONSE_AS_STRING, DEFAULT_TOOL_RESPONSE_AS_STRING)
_LOGGER.debug(f"Options: {entity_options}")
messages = get_oai_formatted_messages(conversation)
messages = get_oai_formatted_messages(conversation, tool_result_to_str=tool_response_as_string)
tools = None
if llm_api:
if llm_api and not enable_legacy_tool_calling:
tools = get_oai_formatted_tools(llm_api, self._async_get_all_exposed_domains())
_LOGGER.debug(f"Generating completion with {len(messages)} messages and {len(tools) if tools else 0} tools...")
@@ -464,6 +482,7 @@ class LlamaCppClient(LocalLLMClient):
grammar=grammar,
stream=True,
response_format=response_format,
# stop=["<end_of_turn>", "<end_function_call>"] # FIXME: make configurable (pull from tool end token?)
)
def next_token() -> Generator[tuple[Optional[str], Optional[List]]]:

View File

@@ -27,12 +27,13 @@ from custom_components.llama_conversation.const import (
CONF_MIN_P,
CONF_ENABLE_THINK_MODE,
CONF_REQUEST_TIMEOUT,
CONF_OPENAI_API_KEY,
CONF_GENERIC_OPENAI_PATH,
CONF_API_KEY,
CONF_API_PATH,
CONF_OLLAMA_KEEP_ALIVE_MIN,
CONF_OLLAMA_JSON_MODE,
CONF_CONTEXT_LENGTH,
CONF_ENABLE_LEGACY_TOOL_CALLING,
CONF_TOOL_RESPONSE_AS_STRING,
CONF_RESPONSE_JSON_SCHEMA,
DEFAULT_MAX_TOKENS,
DEFAULT_TEMPERATURE,
@@ -42,11 +43,12 @@ from custom_components.llama_conversation.const import (
DEFAULT_MIN_P,
DEFAULT_ENABLE_THINK_MODE,
DEFAULT_REQUEST_TIMEOUT,
DEFAULT_GENERIC_OPENAI_PATH,
DEFAULT_API_PATH,
DEFAULT_OLLAMA_KEEP_ALIVE_MIN,
DEFAULT_OLLAMA_JSON_MODE,
DEFAULT_CONTEXT_LENGTH,
DEFAULT_ENABLE_LEGACY_TOOL_CALLING,
DEFAULT_TOOL_RESPONSE_AS_STRING,
)
from custom_components.llama_conversation.entity import LocalLLMClient, TextGenerationResult
@@ -75,14 +77,14 @@ class OllamaAPIClient(LocalLLMClient):
def __init__(self, hass: HomeAssistant, client_options: dict[str, Any]) -> None:
super().__init__(hass, client_options)
base_path = _normalize_path(client_options.get(CONF_GENERIC_OPENAI_PATH, DEFAULT_GENERIC_OPENAI_PATH))
base_path = _normalize_path(client_options.get(CONF_API_PATH, DEFAULT_API_PATH))
self.api_host = format_url(
hostname=client_options[CONF_HOST],
port=client_options[CONF_PORT],
ssl=client_options[CONF_SSL],
path=base_path,
)
self.api_key = client_options.get(CONF_OPENAI_API_KEY) or None
self.api_key = client_options.get(CONF_API_KEY) or None
self._headers = {"Authorization": f"Bearer {self.api_key}"} if self.api_key else None
self._ssl_context = _build_default_ssl_context() if client_options.get(CONF_SSL) else None
@@ -103,13 +105,13 @@ class OllamaAPIClient(LocalLLMClient):
host = client_options[CONF_HOST]
port = client_options[CONF_PORT]
ssl = client_options[CONF_SSL]
path = _normalize_path(client_options.get(CONF_GENERIC_OPENAI_PATH, DEFAULT_GENERIC_OPENAI_PATH))
path = _normalize_path(client_options.get(CONF_API_PATH, DEFAULT_API_PATH))
return f"Ollama at '{format_url(hostname=host, port=port, ssl=ssl, path=path)}'"
@staticmethod
async def async_validate_connection(hass: HomeAssistant, user_input: Dict[str, Any]) -> str | None:
api_key = user_input.get(CONF_OPENAI_API_KEY)
base_path = _normalize_path(user_input.get(CONF_GENERIC_OPENAI_PATH, DEFAULT_GENERIC_OPENAI_PATH))
api_key = user_input.get(CONF_API_KEY)
base_path = _normalize_path(user_input.get(CONF_API_PATH, DEFAULT_API_PATH))
timeout_config: httpx.Timeout | float | None = httpx.Timeout(5)
verify_context = None
@@ -194,7 +196,8 @@ class OllamaAPIClient(LocalLLMClient):
typical_p = entity_options.get(CONF_TYPICAL_P, DEFAULT_TYPICAL_P)
timeout = entity_options.get(CONF_REQUEST_TIMEOUT, DEFAULT_REQUEST_TIMEOUT)
keep_alive = entity_options.get(CONF_OLLAMA_KEEP_ALIVE_MIN, DEFAULT_OLLAMA_KEEP_ALIVE_MIN)
legacy_tool_calling = entity_options.get(CONF_ENABLE_LEGACY_TOOL_CALLING, DEFAULT_ENABLE_LEGACY_TOOL_CALLING)
enable_legacy_tool_calling = entity_options.get(CONF_ENABLE_LEGACY_TOOL_CALLING, DEFAULT_ENABLE_LEGACY_TOOL_CALLING)
tool_response_as_string = entity_options.get(CONF_TOOL_RESPONSE_AS_STRING, DEFAULT_TOOL_RESPONSE_AS_STRING)
think_mode = entity_options.get(CONF_ENABLE_THINK_MODE, DEFAULT_ENABLE_THINK_MODE)
json_mode = entity_options.get(CONF_OLLAMA_JSON_MODE, DEFAULT_OLLAMA_JSON_MODE)
@@ -208,9 +211,9 @@ class OllamaAPIClient(LocalLLMClient):
"min_p": entity_options.get(CONF_MIN_P, DEFAULT_MIN_P),
}
messages = get_oai_formatted_messages(conversation, tool_args_to_str=False)
messages = get_oai_formatted_messages(conversation, tool_args_to_str=False, tool_result_to_str=tool_response_as_string)
tools = None
if llm_api and not legacy_tool_calling:
if llm_api and not enable_legacy_tool_calling:
tools = get_oai_formatted_tools(llm_api, self._async_get_all_exposed_domains())
keep_alive_payload = self._format_keep_alive(keep_alive)

View File

@@ -22,7 +22,7 @@ from custom_components.llama_conversation.const import (
CONF_TEXT_GEN_WEBUI_ADMIN_KEY,
CONF_TEXT_GEN_WEBUI_CHAT_MODE,
CONF_CONTEXT_LENGTH,
CONF_GENERIC_OPENAI_PATH,
CONF_API_PATH,
DEFAULT_MAX_TOKENS,
DEFAULT_TOP_K,
DEFAULT_MIN_P,
@@ -53,7 +53,7 @@ class TextGenerationWebuiClient(GenericOpenAIAPIClient):
host = client_options[CONF_HOST]
port = client_options[CONF_PORT]
ssl = client_options[CONF_SSL]
path = "/" + client_options[CONF_GENERIC_OPENAI_PATH]
path = "/" + client_options[CONF_API_PATH]
return f"Text-Gen WebUI at '{format_url(hostname=host, port=port, ssl=ssl, path=path)}'"
async def _async_load_model(self, entity_options: dict[str, Any]) -> None:
@@ -126,7 +126,7 @@ class LlamaCppServerClient(GenericOpenAIAPIClient):
host = client_options[CONF_HOST]
port = client_options[CONF_PORT]
ssl = client_options[CONF_SSL]
path = "/" + client_options[CONF_GENERIC_OPENAI_PATH]
path = "/" + client_options[CONF_API_PATH]
return f"Llama.cpp Server at '{format_url(hostname=host, port=port, ssl=ssl, path=path)}'"
def _chat_completion_params(self, entity_options: Dict[str, Any]) -> Tuple[str, Dict[str, Any]]:

View File

@@ -70,6 +70,7 @@ from .const import (
CONF_TOOL_CALL_PREFIX,
CONF_TOOL_CALL_SUFFIX,
CONF_ENABLE_LEGACY_TOOL_CALLING,
CONF_TOOL_RESPONSE_AS_STRING,
CONF_LLAMACPP_ENABLE_FLASH_ATTENTION,
CONF_USE_GBNF_GRAMMAR,
CONF_GBNF_GRAMMAR_FILE,
@@ -85,17 +86,18 @@ from .const import (
CONF_USE_IN_CONTEXT_LEARNING_EXAMPLES,
CONF_IN_CONTEXT_EXAMPLES_FILE,
CONF_NUM_IN_CONTEXT_EXAMPLES,
CONF_OPENAI_API_KEY,
CONF_API_KEY,
CONF_TEXT_GEN_WEBUI_ADMIN_KEY,
CONF_TEXT_GEN_WEBUI_CHAT_MODE,
CONF_OLLAMA_KEEP_ALIVE_MIN,
CONF_OLLAMA_JSON_MODE,
CONF_GENERIC_OPENAI_PATH,
CONF_API_PATH,
CONF_CONTEXT_LENGTH,
CONF_LLAMACPP_BATCH_SIZE,
CONF_LLAMACPP_THREAD_COUNT,
CONF_LLAMACPP_BATCH_THREAD_COUNT,
CONF_LLAMACPP_REINSTALL,
CONF_LLAMACPP_CACHE_SIZE_MB,
DEFAULT_CHAT_MODEL,
DEFAULT_PORT,
DEFAULT_SSL,
@@ -121,6 +123,7 @@ from .const import (
DEFAULT_TOOL_CALL_PREFIX,
DEFAULT_TOOL_CALL_SUFFIX,
DEFAULT_ENABLE_LEGACY_TOOL_CALLING,
DEFAULT_TOOL_RESPONSE_AS_STRING,
DEFAULT_LLAMACPP_ENABLE_FLASH_ATTENTION,
DEFAULT_USE_GBNF_GRAMMAR,
DEFAULT_GBNF_GRAMMAR_FILE,
@@ -137,17 +140,20 @@ from .const import (
DEFAULT_TEXT_GEN_WEBUI_CHAT_MODE,
DEFAULT_OLLAMA_KEEP_ALIVE_MIN,
DEFAULT_OLLAMA_JSON_MODE,
DEFAULT_GENERIC_OPENAI_PATH,
DEFAULT_API_PATH,
DEFAULT_CONTEXT_LENGTH,
DEFAULT_LLAMACPP_BATCH_SIZE,
DEFAULT_LLAMACPP_THREAD_COUNT,
DEFAULT_LLAMACPP_BATCH_THREAD_COUNT,
DEFAULT_LLAMACPP_CACHE_SIZE_MB,
BACKEND_TYPE_LLAMA_CPP,
BACKEND_TYPE_TEXT_GEN_WEBUI,
BACKEND_TYPE_GENERIC_OPENAI,
BACKEND_TYPE_GENERIC_OPENAI_RESPONSES,
BACKEND_TYPE_LLAMA_CPP_SERVER,
BACKEND_TYPE_OLLAMA,
BACKEND_TYPE_ANTHROPIC,
CONF_BASE_URL,
TEXT_GEN_WEBUI_CHAT_MODE_CHAT,
TEXT_GEN_WEBUI_CHAT_MODE_INSTRUCT,
TEXT_GEN_WEBUI_CHAT_MODE_CHAT_INSTRUCT,
@@ -182,7 +188,8 @@ def pick_backend_schema(backend_type=None, selected_language=None):
BACKEND_TYPE_GENERIC_OPENAI,
BACKEND_TYPE_GENERIC_OPENAI_RESPONSES,
BACKEND_TYPE_LLAMA_CPP_SERVER,
BACKEND_TYPE_OLLAMA
BACKEND_TYPE_OLLAMA,
BACKEND_TYPE_ANTHROPIC,
],
translation_key=CONF_BACKEND_TYPE,
multiple=False,
@@ -197,11 +204,22 @@ def pick_backend_schema(backend_type=None, selected_language=None):
}
)
def remote_connection_schema(backend_type: str, *, host=None, port=None, ssl=None, selected_path=None):
def remote_connection_schema(backend_type: str, *, host=None, port=None, ssl=None, selected_path=None, api_key=None, base_url=None):
extra = {}
default_port = DEFAULT_PORT
default_path = DEFAULT_GENERIC_OPENAI_PATH
default_path = DEFAULT_API_PATH
# Anthropic uses a different schema - base URL + API key only (no host/port/ssl)
if backend_type == BACKEND_TYPE_ANTHROPIC:
return vol.Schema({
vol.Required(CONF_BASE_URL, default=base_url if base_url else ""): TextSelector(
TextSelectorConfig()
),
vol.Required(CONF_API_KEY, default=api_key if api_key else ""): TextSelector(
TextSelectorConfig(type=TextSelectorType.PASSWORD)
),
})
if backend_type == BACKEND_TYPE_TEXT_GEN_WEBUI:
extra[vol.Optional(CONF_TEXT_GEN_WEBUI_ADMIN_KEY)] = TextSelector(TextSelectorConfig(type=TextSelectorType.PASSWORD))
@@ -218,9 +236,9 @@ def remote_connection_schema(backend_type: str, *, host=None, port=None, ssl=Non
vol.Required(CONF_HOST, default=host if host else ""): str,
vol.Optional(CONF_PORT, default=port if port else default_port): str,
vol.Required(CONF_SSL, default=ssl if ssl else DEFAULT_SSL): bool,
vol.Optional(CONF_OPENAI_API_KEY): TextSelector(TextSelectorConfig(type=TextSelectorType.PASSWORD)),
vol.Optional(CONF_API_KEY): TextSelector(TextSelectorConfig(type=TextSelectorType.PASSWORD)),
vol.Optional(
CONF_GENERIC_OPENAI_PATH,
CONF_API_PATH,
default=selected_path if selected_path else default_path
): TextSelector(TextSelectorConfig(prefix="/")),
**extra
@@ -293,8 +311,9 @@ class ConfigFlow(BaseConfigFlow, domain=DOMAIN):
)
else:
self.internal_step = "configure_connection"
schema = remote_connection_schema(self.client_config[CONF_BACKEND_TYPE])
return self.async_show_form(
step_id="user", data_schema=remote_connection_schema(self.client_config[CONF_BACKEND_TYPE]), last_step=True
step_id="user", data_schema=schema, last_step=True
)
elif self.install_wheel_error:
errors["base"] = str(self.install_wheel_error)
@@ -335,31 +354,46 @@ class ConfigFlow(BaseConfigFlow, domain=DOMAIN):
self.internal_step = next_step
return self.async_show_progress_done(next_step_id="finish")
elif self.internal_step == "configure_connection":
backend = self.client_config[CONF_BACKEND_TYPE]
if user_input:
self.client_config.update(user_input)
hostname = user_input.get(CONF_HOST, "")
if not is_valid_hostname(hostname):
errors["base"] = "invalid_hostname"
else:
# validate remote connections
connect_err = await BACKEND_TO_CLS[self.client_config[CONF_BACKEND_TYPE]].async_validate_connection(self.hass, self.client_config)
# Anthropic doesn't use hostname - skip hostname validation
if backend == BACKEND_TYPE_ANTHROPIC:
connect_err = await BACKEND_TO_CLS[backend].async_validate_connection(self.hass, self.client_config)
if connect_err:
errors["base"] = "failed_to_connect"
description_placeholders["exception"] = str(connect_err)
else:
return await self.async_step_finish()
else:
hostname = user_input.get(CONF_HOST, "")
if not is_valid_hostname(hostname):
errors["base"] = "invalid_hostname"
else:
# validate remote connections
connect_err = await BACKEND_TO_CLS[backend].async_validate_connection(self.hass, self.client_config)
if connect_err:
errors["base"] = "failed_to_connect"
description_placeholders["exception"] = str(connect_err)
else:
return await self.async_step_finish()
# Use appropriate schema for the backend type
schema = remote_connection_schema(
backend,
host=self.client_config.get(CONF_HOST),
port=self.client_config.get(CONF_PORT),
ssl=self.client_config.get(CONF_SSL),
selected_path=self.client_config.get(CONF_API_PATH),
api_key=self.client_config.get(CONF_API_KEY),
base_url=self.client_config.get(CONF_BASE_URL),
)
return self.async_show_form(
step_id="user",
data_schema=remote_connection_schema(
self.client_config[CONF_BACKEND_TYPE],
host=self.client_config.get(CONF_HOST),
port=self.client_config.get(CONF_PORT),
ssl=self.client_config.get(CONF_SSL),
selected_path=self.client_config.get(CONF_GENERIC_OPENAI_PATH)
),
step_id="user",
data_schema=schema,
errors=errors,
description_placeholders=description_placeholders,
last_step=True
@@ -473,7 +507,9 @@ class OptionsFlow(BaseOptionsFlow):
host=client_config.get(CONF_HOST),
port=client_config.get(CONF_PORT),
ssl=client_config.get(CONF_SSL),
selected_path=client_config.get(CONF_GENERIC_OPENAI_PATH)
selected_path=client_config.get(CONF_API_PATH),
api_key=client_config.get(CONF_API_KEY),
base_url=client_config.get(CONF_BASE_URL),
)
return self.async_show_form(
@@ -621,6 +657,11 @@ def local_llama_config_option_schema(
description={"suggested_value": options.get(CONF_ENABLE_LEGACY_TOOL_CALLING)},
default=DEFAULT_ENABLE_LEGACY_TOOL_CALLING
): bool,
vol.Required(
CONF_TOOL_RESPONSE_AS_STRING,
description={"suggested_value": options.get(CONF_TOOL_RESPONSE_AS_STRING)},
default=DEFAULT_TOOL_RESPONSE_AS_STRING
): bool,
}
if subentry_type == ai_task.DOMAIN:
@@ -727,7 +768,7 @@ def local_llama_config_option_schema(
CONF_PROMPT_CACHING_INTERVAL,
description={"suggested_value": options.get(CONF_PROMPT_CACHING_INTERVAL)},
default=DEFAULT_PROMPT_CACHING_INTERVAL,
): NumberSelector(NumberSelectorConfig(min=1, max=60, step=1)),
): NumberSelector(NumberSelectorConfig(min=1, max=60, step=1))
})
result.update({
vol.Required(
@@ -781,6 +822,11 @@ def local_llama_config_option_schema(
description={"suggested_value": options.get(CONF_LLAMACPP_ENABLE_FLASH_ATTENTION)},
default=DEFAULT_LLAMACPP_ENABLE_FLASH_ATTENTION,
): BooleanSelector(BooleanSelectorConfig()),
vol.Required(
CONF_LLAMACPP_CACHE_SIZE_MB,
description={"suggested_value": options.get(CONF_LLAMACPP_CACHE_SIZE_MB)},
default=DEFAULT_LLAMACPP_CACHE_SIZE_MB,
): NumberSelector(NumberSelectorConfig(min=0, max=1024, step=1)),
vol.Required(
CONF_USE_GBNF_GRAMMAR,
description={"suggested_value": options.get(CONF_USE_GBNF_GRAMMAR)},
@@ -952,6 +998,29 @@ def local_llama_config_option_schema(
default=DEFAULT_OLLAMA_KEEP_ALIVE_MIN,
): NumberSelector(NumberSelectorConfig(min=-1, max=1440, step=1, unit_of_measurement=UnitOfTime.MINUTES, mode=NumberSelectorMode.BOX)),
})
elif backend_type == BACKEND_TYPE_ANTHROPIC:
result.update({
vol.Required(
CONF_MAX_TOKENS,
description={"suggested_value": options.get(CONF_MAX_TOKENS)},
default=DEFAULT_MAX_TOKENS,
): NumberSelector(NumberSelectorConfig(min=1, max=8192, step=1)),
vol.Required(
CONF_TOP_K,
description={"suggested_value": options.get(CONF_TOP_K)},
default=DEFAULT_TOP_K,
): NumberSelector(NumberSelectorConfig(min=1, max=256, step=1)),
vol.Required(
CONF_TOP_P,
description={"suggested_value": options.get(CONF_TOP_P)},
default=DEFAULT_TOP_P,
): NumberSelector(NumberSelectorConfig(min=0, max=1, step=0.05)),
vol.Required(
CONF_REQUEST_TIMEOUT,
description={"suggested_value": options.get(CONF_REQUEST_TIMEOUT)},
default=DEFAULT_REQUEST_TIMEOUT,
): NumberSelector(NumberSelectorConfig(min=5, max=900, step=1, unit_of_measurement=UnitOfTime.SECONDS, mode=NumberSelectorMode.BOX)),
})
# sort the options
global_order = [
@@ -975,6 +1044,7 @@ def local_llama_config_option_schema(
CONF_TOOL_CALL_SUFFIX,
CONF_MAX_TOOL_CALL_ITERATIONS,
CONF_ENABLE_LEGACY_TOOL_CALLING,
CONF_TOOL_RESPONSE_AS_STRING,
CONF_USE_GBNF_GRAMMAR,
CONF_GBNF_GRAMMAR_FILE,
# integration specific options
@@ -989,6 +1059,7 @@ def local_llama_config_option_schema(
CONF_IN_CONTEXT_EXAMPLES_FILE,
CONF_NUM_IN_CONTEXT_EXAMPLES,
# backend specific options
CONF_LLAMACPP_CACHE_SIZE_MB,
CONF_LLAMACPP_BATCH_SIZE,
CONF_LLAMACPP_THREAD_COUNT,
CONF_LLAMACPP_BATCH_THREAD_COUNT,

View File

@@ -63,7 +63,6 @@ USER_INSTRUCTION = {
"pl": "Instrukcja użytkownika"
}
DEFAULT_PROMPT_BASE = """<persona>
<current_date>
<devices>:
{% for device in devices | selectattr('area_id', 'none'): %}
{{ device.entity_id }} '{{ device.name }}' = {{ device.state }}{{ ([""] + device.attributes) | join(";") }}
@@ -73,23 +72,19 @@ DEFAULT_PROMPT_BASE = """<persona>
{% for device in area.list %}
{{ device.entity_id }} '{{ device.name }}' = {{ device.state }};{{ device.attributes | join(";") }}
{% endfor %}
{% endfor %}"""
{% endfor %}
<current_date>"""
DEFAULT_PROMPT_BASE_LEGACY = """<persona>
<current_date>
<devices>:
{{ formatted_devices }}"""
{{ formatted_devices }}
<current_date>"""
ICL_EXTRAS = """
{% for item in response_examples %}
{{ item.request }}
{{ item.response }}
{{ tool_call_prefix }}{{ item.tool | to_json }}{{ tool_call_suffix }}
{% endfor %}"""
ICL_NO_SYSTEM_PROMPT_EXTRAS = """
{% for item in response_examples %}
{{ item.request }}
{{ item.response }}
{{ tool_call_prefix }}{{ item.tool | to_json }}{{ tool_call_suffix }}
{% endfor %}
NO_SYSTEM_PROMPT_EXTRAS = """
<user_instruction>:"""
DEFAULT_PROMPT = DEFAULT_PROMPT_BASE + ICL_EXTRAS
CONF_CHAT_MODEL = "huggingface_model"
@@ -120,7 +115,9 @@ BACKEND_TYPE_GENERIC_OPENAI = "generic_openai"
BACKEND_TYPE_GENERIC_OPENAI_RESPONSES = "generic_openai_responses"
BACKEND_TYPE_LLAMA_CPP_SERVER = "llama_cpp_server"
BACKEND_TYPE_OLLAMA = "ollama"
BACKEND_TYPE_ANTHROPIC = "anthropic"
DEFAULT_BACKEND_TYPE = BACKEND_TYPE_LLAMA_CPP
CONF_BASE_URL = "base_url"
CONF_INSTALLED_LLAMACPP_VERSION = "installed_llama_cpp_version"
CONF_SELECTED_LANGUAGE = "selected_language"
CONF_SELECTED_LANGUAGE_OPTIONS = [ "en", "de", "fr", "es", "pl"]
@@ -149,6 +146,8 @@ CONF_TOOL_CALL_SUFFIX = "tool_call_suffix"
DEFAULT_TOOL_CALL_SUFFIX = "</tool_call>"
CONF_ENABLE_LEGACY_TOOL_CALLING = "enable_legacy_tool_calling"
DEFAULT_ENABLE_LEGACY_TOOL_CALLING = False
CONF_TOOL_RESPONSE_AS_STRING = "tool_response_as_string"
DEFAULT_TOOL_RESPONSE_AS_STRING = True
CONF_LLAMACPP_ENABLE_FLASH_ATTENTION = "enable_flash_attention"
DEFAULT_LLAMACPP_ENABLE_FLASH_ATTENTION = False
CONF_USE_GBNF_GRAMMAR = "gbnf_grammar"
@@ -162,7 +161,7 @@ DEFAULT_IN_CONTEXT_EXAMPLES_FILE = "in_context_examples.csv"
CONF_NUM_IN_CONTEXT_EXAMPLES = "num_in_context_examples"
DEFAULT_NUM_IN_CONTEXT_EXAMPLES = 4
CONF_TEXT_GEN_WEBUI_PRESET = "text_generation_webui_preset"
CONF_OPENAI_API_KEY = "openai_api_key"
CONF_API_KEY = "openai_api_key"
CONF_TEXT_GEN_WEBUI_ADMIN_KEY = "text_generation_webui_admin_key"
CONF_REFRESH_SYSTEM_PROMPT = "refresh_prompt_per_turn"
DEFAULT_REFRESH_SYSTEM_PROMPT = True
@@ -187,8 +186,8 @@ CONF_OLLAMA_KEEP_ALIVE_MIN = "ollama_keep_alive"
DEFAULT_OLLAMA_KEEP_ALIVE_MIN = 30
CONF_OLLAMA_JSON_MODE = "ollama_json_mode"
DEFAULT_OLLAMA_JSON_MODE = False
CONF_GENERIC_OPENAI_PATH = "openai_path"
DEFAULT_GENERIC_OPENAI_PATH = "v1"
CONF_API_PATH = "openai_path"
DEFAULT_API_PATH = "v1"
CONF_GENERIC_OPENAI_VALIDATE_MODEL = "openai_validate_model"
DEFAULT_GENERIC_OPENAI_VALIDATE_MODEL = True
CONF_CONTEXT_LENGTH = "context_length"
@@ -201,6 +200,8 @@ DEFAULT_LLAMACPP_THREAD_COUNT = os.cpu_count()
CONF_LLAMACPP_BATCH_THREAD_COUNT = "n_batch_threads"
DEFAULT_LLAMACPP_BATCH_THREAD_COUNT = os.cpu_count()
CONF_LLAMACPP_REINSTALL = "reinstall_llama_cpp"
CONF_LLAMACPP_CACHE_SIZE_MB = "llama_cpp_cache_size_mb"
DEFAULT_LLAMACPP_CACHE_SIZE_MB = 128
DEFAULT_OPTIONS = types.MappingProxyType(
{
@@ -235,6 +236,16 @@ DEFAULT_OPTIONS = types.MappingProxyType(
def option_overrides(backend_type: str) -> dict[str, Any]:
return {
"home-functiongemma": {
CONF_PROMPT: DEFAULT_PROMPT_BASE + NO_SYSTEM_PROMPT_EXTRAS,
CONF_USE_IN_CONTEXT_LEARNING_EXAMPLES: False,
CONF_TOOL_CALL_PREFIX: "<start_function_call>",
CONF_TOOL_CALL_SUFFIX: "<end_function_call>",
CONF_TOOL_RESPONSE_AS_STRING: False, # gemma function calling requires tool responses as a dictionary
CONF_TEMPERATURE: 1.0,
CONF_TOP_P: 0.95,
CONF_TOP_K: 64,
},
"home-llama-3.2": {
CONF_PROMPT: DEFAULT_PROMPT_BASE_LEGACY,
CONF_USE_IN_CONTEXT_LEARNING_EXAMPLES: False,
@@ -243,7 +254,7 @@ def option_overrides(backend_type: str) -> dict[str, Any]:
CONF_CONTEXT_LENGTH: 131072,
CONF_MAX_TOOL_CALL_ITERATIONS: 0,
# llama cpp server doesn't support custom tool calling formats. so just use legacy tool calling
CONF_ENABLE_LEGACY_TOOL_CALLING: backend_type == BACKEND_TYPE_LLAMA_CPP_SERVER
CONF_ENABLE_LEGACY_TOOL_CALLING: True
},
"home-3b-v3": {
CONF_PROMPT: DEFAULT_PROMPT_BASE_LEGACY,
@@ -252,7 +263,7 @@ def option_overrides(backend_type: str) -> dict[str, Any]:
CONF_TOOL_CALL_SUFFIX: "```",
CONF_MAX_TOOL_CALL_ITERATIONS: 0,
# llama cpp server doesn't support custom tool calling formats. so just use legacy tool calling
CONF_ENABLE_LEGACY_TOOL_CALLING: backend_type == BACKEND_TYPE_LLAMA_CPP_SERVER
CONF_ENABLE_LEGACY_TOOL_CALLING: True
},
"home-3b-v2": {
CONF_PROMPT: DEFAULT_PROMPT_BASE_LEGACY,
@@ -306,14 +317,14 @@ def option_overrides(backend_type: str) -> dict[str, Any]:
CONF_TOP_P: 0.95
},
"mistral": {
CONF_PROMPT: DEFAULT_PROMPT_BASE + ICL_NO_SYSTEM_PROMPT_EXTRAS,
CONF_PROMPT: DEFAULT_PROMPT_BASE + ICL_EXTRAS + NO_SYSTEM_PROMPT_EXTRAS,
CONF_MIN_P: 0.1,
CONF_TYPICAL_P: 0.9,
# no prompt formats with tool calling support, so just use legacy tool calling
CONF_ENABLE_LEGACY_TOOL_CALLING: True,
},
"mixtral": {
CONF_PROMPT: DEFAULT_PROMPT_BASE + ICL_NO_SYSTEM_PROMPT_EXTRAS,
CONF_PROMPT: DEFAULT_PROMPT_BASE + ICL_EXTRAS + NO_SYSTEM_PROMPT_EXTRAS,
CONF_MIN_P: 0.1,
CONF_TYPICAL_P: 0.9,
# no prompt formats with tool calling support, so just use legacy tool calling

View File

@@ -261,12 +261,15 @@ class LocalLLMClient:
tool_content += content
if think_prefix in potential_block and not in_thinking:
_LOGGER.debug("Entering thinking block")
in_thinking = True
last_5_tokens.clear()
elif think_suffix in potential_block and in_thinking:
_LOGGER.debug("Exiting thinking block")
in_thinking = False
content = content.replace(think_suffix, "").strip()
elif tool_prefix in potential_block and not in_tool_call:
_LOGGER.debug("Entering tool call block")
in_tool_call = True
last_5_tokens.clear()
elif tool_suffix in potential_block and in_tool_call:
@@ -288,7 +291,12 @@ class LocalLLMClient:
if isinstance(raw_tool_call, str):
tool_call, to_say = parse_raw_tool_call(raw_tool_call, agent_id)
else:
tool_call, to_say = parse_raw_tool_call(raw_tool_call["function"], agent_id)
# try multiple dict key names
function_content = raw_tool_call.get("function") or raw_tool_call.get("function_call") or raw_tool_call.get("tool")
if not function_content:
_LOGGER.warning("Received tool call dict without 'function', 'function_call' or 'tool' key: %s", raw_tool_call)
continue
tool_call, to_say = parse_raw_tool_call(function_content, agent_id)
if tool_call:
_LOGGER.debug("Tool call parsed: %s", tool_call)
@@ -302,6 +310,20 @@ class LocalLLMClient:
if not in_thinking and not in_tool_call and (cur_match_length == 0 or result.tool_calls):
yield result
if in_tool_call and tool_content:
# flush any unclosed tool calls because using the tool_suffix as a stop token can
# cause the tool_suffix to be omitted when the model streams output
tool_block = tool_content.strip().removeprefix(tool_prefix)
_LOGGER.debug("Raw tool block extracted at end: %s", tool_block)
tool_call, to_say = parse_raw_tool_call(tool_block, agent_id)
if tool_call:
_LOGGER.debug("Tool call parsed at end: %s", tool_call)
yield TextGenerationResult(
response=to_say,
response_streamed=True,
tool_calls=[tool_call]
)
async def _async_parse_completion(
self,
llm_api: llm.APIInstance | None,
@@ -336,8 +358,12 @@ class LocalLLMClient:
if isinstance(raw_tool_call, str):
tool_call, to_say = parse_raw_tool_call(raw_tool_call, agent_id)
else:
tool_call, to_say = parse_raw_tool_call(raw_tool_call["function"], agent_id)
# try multiple dict key names
function_content = raw_tool_call.get("function") or raw_tool_call.get("function_call") or raw_tool_call.get("tool")
if not function_content:
_LOGGER.warning("Received tool call dict without 'function', 'function_call' or 'tool' key: %s", raw_tool_call)
continue
tool_call, to_say = parse_raw_tool_call(function_content, agent_id)
if tool_call:
_LOGGER.debug("Tool call parsed: %s", tool_call)
parsed_tool_calls.append(tool_call)
@@ -471,7 +497,6 @@ class LocalLLMClient:
entities_to_expose = self._async_get_exposed_entities()
extra_attributes_to_expose = entity_options.get(CONF_EXTRA_ATTRIBUTES_TO_EXPOSE, DEFAULT_EXTRA_ATTRIBUTES_TO_EXPOSE)
enable_legacy_tool_calling = entity_options.get(CONF_ENABLE_LEGACY_TOOL_CALLING, DEFAULT_ENABLE_LEGACY_TOOL_CALLING)
tool_call_prefix = entity_options.get(CONF_TOOL_CALL_PREFIX, DEFAULT_TOOL_CALL_PREFIX)
tool_call_suffix = entity_options.get(CONF_TOOL_CALL_SUFFIX, DEFAULT_TOOL_CALL_SUFFIX)
@@ -545,21 +570,16 @@ class LocalLLMClient:
"tool_call_suffix": tool_call_suffix,
}
if enable_legacy_tool_calling:
if llm_api:
tools = []
for tool in llm_api.tools:
tools.append(f"{tool.name}({','.join(flatten_vol_schema(tool.parameters))})")
render_variables["tools"] = tools
render_variables["formatted_tools"] = ", ".join(tools)
else:
message = "No tools were provided. If the user requests you interact with a device, tell them you are unable to do so."
render_variables["tools"] = [message]
render_variables["formatted_tools"] = message
if llm_api:
tools = []
for tool in llm_api.tools:
tools.append(f"{tool.name}({','.join(flatten_vol_schema(tool.parameters))})")
render_variables["tools"] = tools
render_variables["formatted_tools"] = ", ".join(tools)
else:
# Tools are passed via the API not the prompt
render_variables["tools"] = []
render_variables["formatted_tools"] = ""
message = "No tools were provided. If the user requests you interact with a device, tell them you are unable to do so."
render_variables["tools"] = [message]
render_variables["formatted_tools"] = message
# only pass examples if there are loaded examples + an API was exposed
if self.in_context_examples and llm_api:

View File

@@ -1,7 +1,7 @@
{
"domain": "llama_conversation",
"name": "Local LLMs",
"version": "0.4.5",
"version": "0.4.6",
"codeowners": ["@acon96"],
"config_flow": true,
"dependencies": ["conversation", "ai_task"],
@@ -12,6 +12,7 @@
"requirements": [
"huggingface-hub>=0.23.0",
"webcolors>=24.8.0",
"ollama>=0.5.1"
"ollama>=0.5.1",
"anthropic>=0.75.0"
]
}

View File

@@ -22,7 +22,8 @@
"openai_path": "API Path",
"text_generation_webui_admin_key": "Admin Key",
"text_generation_webui_preset": "Generation Preset/Character Name",
"text_generation_webui_chat_mode": "Chat Mode"
"text_generation_webui_chat_mode": "Chat Mode",
"anthropic_base_url": "Anthropic Compatible API Base URL"
},
"description": "Please select the backend and/or provide the connection details to connect to the API that is hosting the model.",
"title": "Configure Backend"
@@ -101,11 +102,13 @@
"batch_size": "(llama.cpp) Batch Size",
"n_threads": "(llama.cpp) Thread Count",
"n_batch_threads": "(llama.cpp) Batch Thread Count",
"llama_cpp_cache_size_mb": "(llama.cpp) Disk KV Cache Size (MB)",
"thinking_prefix": "Reasoning Content Prefix",
"thinking_suffix": "Reasoning Content Suffix",
"tool_call_prefix": "Tool Call Prefix",
"tool_call_suffix": "Tool Call Suffix",
"enable_legacy_tool_calling": "Enable Legacy Tool Calling",
"tool_response_as_string": "Tool Response as String",
"max_tool_call_iterations": "Maximum Tool Call Attempts"
},
"data_description": {
@@ -116,6 +119,7 @@
"gbnf_grammar": "Forces the model to output properly formatted responses. Ensure the file specified below exists in the integration directory.",
"prompt_caching": "Prompt caching attempts to pre-process the prompt (house state) and cache the processing that needs to be done to understand the prompt. Enabling this will cause the model to re-process the prompt any time an entity state changes in the house, restricted by the interval below.",
"enable_legacy_tool_calling": "Prefer to process tool calls locally rather than relying on the backend to handle the tool calling format. Can be more reliable, however it requires properly setting the tool call prefix and suffix.",
"tool_response_as_string": "Some prompt templates expect the tool response to be provided as a JSON serialized string, rather than the raw object.",
"max_tool_call_iterations": "Set to 0 to generate the response and tool call in one attempt, without looping (use this for Home models v1-v3)."
},
"description": "Please configure the model according to how it should be prompted. There are many different options and selecting the correct ones for your model is essential to getting optimal performance. See [here](https://github.com/acon96/home-llm/blob/develop/docs/Backend%20Configuration.md) for more information about the options on this page.\n\n**Some defaults may have been chosen for you based on the name of the selected model name or filename.** If you renamed a file or are using a fine-tuning of a supported model, then the defaults may not have been detected.",
@@ -155,11 +159,13 @@
"batch_size": "(llama.cpp) Batch Size",
"n_threads": "(llama.cpp) Thread Count",
"n_batch_threads": "(llama.cpp) Batch Thread Count",
"llama_cpp_cache_size_mb": "(llama.cpp) Disk KV Cache Size (MB)",
"thinking_prefix": "Reasoning Content Prefix",
"thinking_suffix": "Reasoning Content Suffix",
"tool_call_prefix": "Tool Call Prefix",
"tool_call_suffix": "Tool Call Suffix",
"enable_legacy_tool_calling": "Enable Legacy Tool Calling",
"tool_response_as_string": "Tool Response as String",
"max_tool_call_iterations": "Maximum Tool Call Attempts"
},
"data_description": {
@@ -170,6 +176,7 @@
"gbnf_grammar": "Forces the model to output properly formatted responses. Ensure the file specified below exists in the integration directory.",
"prompt_caching": "Prompt caching attempts to pre-process the prompt (house state) and cache the processing that needs to be done to understand the prompt. Enabling this will cause the model to re-process the prompt any time an entity state changes in the house, restricted by the interval below.",
"enable_legacy_tool_calling": "Prefer to process tool calls locally rather than relying on the backend to handle the tool calling format. Can be more reliable, however it requires properly setting the tool call prefix and suffix.",
"tool_response_as_string": "Some prompt templates expect the tool response to be provided as a JSON serialized string, rather than the raw object.",
"max_tool_call_iterations": "Set to 0 to generate the response and tool call in one attempt, without looping (use this for Home models v1-v3)."
},
"description": "Please configure the model according to how it should be prompted. There are many different options and selecting the correct ones for your model is essential to getting optimal performance. See [here](https://github.com/acon96/home-llm/blob/develop/docs/Backend%20Configuration.md) for more information about the options on this page.\n\n**Some defaults may have been chosen for you based on the name of the selected model name or filename.** If you renamed a file or are using a fine-tuning of a supported model, then the defaults may not have been detected.",
@@ -241,11 +248,13 @@
"batch_size": "(llama.cpp) Batch Size",
"n_threads": "(llama.cpp) Thread Count",
"n_batch_threads": "(llama.cpp) Batch Thread Count",
"llama_cpp_cache_size_mb": "(llama.cpp) Disk KV Cache Size (MB)",
"thinking_prefix": "Reasoning Content Prefix",
"thinking_suffix": "Reasoning Content Suffix",
"tool_call_prefix": "Tool Call Prefix",
"tool_call_suffix": "Tool Call Suffix",
"enable_legacy_tool_calling": "Enable Legacy Tool Calling",
"tool_response_as_string": "Tool Response as String",
"max_tool_call_iterations": "Maximum Tool Call Attempts",
"ai_task_extraction_method": "Structured Data Extraction Method",
"ai_task_retries": "Retry attempts for structured data extraction"
@@ -257,6 +266,7 @@
"gbnf_grammar": "Forces the model to output properly formatted responses. Ensure the file specified below exists in the integration directory.",
"prompt_caching": "Prompt caching attempts to pre-process the prompt (house state) and cache the processing that needs to be done to understand the prompt. Enabling this will cause the model to re-process the prompt any time an entity state changes in the house, restricted by the interval below.",
"enable_legacy_tool_calling": "Prefer to process tool calls locally rather than relying on the backend to handle the tool calling format. Can be more reliable, however it requires properly setting the tool call prefix and suffix.",
"tool_response_as_string": "Some prompt templates expect the tool response to be provided as a JSON serialized string, rather than the raw object.",
"max_tool_call_iterations": "Set to 0 to generate the response and tool call in one attempt, without looping (use this for Home models v1-v3).",
"ai_task_extraction_method": "Select the method used to extract structured data from the model's response. 'Structured Output' tells the backend to force the model to produce output following the provided JSON Schema; 'Tool Calling' provides a tool to the model that should be called with the appropriate arguments that match the desired output structure."
},
@@ -297,11 +307,13 @@
"batch_size": "(llama.cpp) Batch Size",
"n_threads": "(llama.cpp) Thread Count",
"n_batch_threads": "(llama.cpp) Batch Thread Count",
"llama_cpp_cache_size_mb": "(llama.cpp) Disk KV Cache Size (MB)",
"thinking_prefix": "Reasoning Content Prefix",
"thinking_suffix": "Reasoning Content Suffix",
"tool_call_prefix": "Tool Call Prefix",
"tool_call_suffix": "Tool Call Suffix",
"enable_legacy_tool_calling": "Enable Legacy Tool Calling",
"tool_response_as_string": "Tool Response as String",
"max_tool_call_iterations": "Maximum Tool Call Attempts"
},
"data_description": {
@@ -312,6 +324,7 @@
"gbnf_grammar": "Forces the model to output properly formatted responses. Ensure the file specified below exists in the integration directory.",
"prompt_caching": "Prompt caching attempts to pre-process the prompt (house state) and cache the processing that needs to be done to understand the prompt. Enabling this will cause the model to re-process the prompt any time an entity state changes in the house, restricted by the interval below.",
"enable_legacy_tool_calling": "Prefer to process tool calls locally rather than relying on the backend to handle the tool calling format. Can be more reliable, however it requires properly setting the tool call prefix and suffix.",
"tool_response_as_string": "Some prompt templates expect the tool response to be provided as a JSON serialized string, rather than the raw object.",
"max_tool_call_iterations": "Set to 0 to generate the response and tool call in one attempt, without looping (use this for Home models v1-v3)."
},
"description": "Please configure the model according to how it should be prompted. There are many different options and selecting the correct ones for your model is essential to getting optimal performance. See [here](https://github.com/acon96/home-llm/blob/develop/docs/Backend%20Configuration.md) for more information about the options on this page.\n\n**Some defaults may have been chosen for you based on the name of the selected model name or filename.** If you renamed a file or are using a fine-tuning of a supported model, then the defaults may not have been detected.",
@@ -360,12 +373,12 @@
"model_backend": {
"options": {
"llama_cpp_python": "Llama.cpp",
"generic_openai": "Generic OpenAI Compatible API",
"generic_openai_responses": "Generic OpenAPI Compatible Responses API",
"generic_openai": "OpenAI Compatible 'Conversations' API",
"generic_openai_responses": "OpenAPI Compatible 'Responses' API",
"llama_cpp_server": "Llama.cpp Server",
"ollama": "Ollama API",
"text-generation-webui_api": "text-generation-webui API"
"text-generation-webui_api": "text-generation-webui API",
"anthropic": "Anthropic Compatible 'Messages' API"
}
},
"text_generation_webui_chat_mode": {

View File

@@ -278,7 +278,8 @@ def format_url(*, hostname: str, port: str, ssl: bool, path: str):
def get_oai_formatted_tools(llm_api: llm.APIInstance, domains: list[str]) -> List[ChatCompletionTool]:
result: List[ChatCompletionTool] = []
for tool in llm_api.tools:
# sort tools by name to improve cache hits
for tool in sorted(llm_api.tools, key=lambda t: t.name):
# when combining with home assistant llm APIs, it adds a prefix to differentiate tools; compare against the suffix here
if tool.name.endswith(SERVICE_TOOL_NAME):
result.extend([{
@@ -302,7 +303,13 @@ def get_oai_formatted_tools(llm_api: llm.APIInstance, domains: list[str]) -> Lis
return result
def get_oai_formatted_messages(conversation: Sequence[conversation.Content], user_content_as_list: bool = False, tool_args_to_str: bool = True) -> List[ChatCompletionRequestMessage]:
def get_oai_formatted_messages(
conversation: Sequence[conversation.Content],
*,
user_content_as_list: bool = False,
tool_args_to_str: bool = True,
tool_result_to_str: bool = True,
) -> List[ChatCompletionRequestMessage]:
messages: List[ChatCompletionRequestMessage] = []
for message in conversation:
if message.role == "system":
@@ -354,9 +361,16 @@ def get_oai_formatted_messages(conversation: Sequence[conversation.Content], use
]
})
elif message.role == "tool_result":
if tool_result_to_str:
content = json.dumps(message.tool_result)
else:
content = {
"name": message.tool_name,
"response": { "result": message.tool_result },
}
messages.append({
"role": "tool",
"content": json.dumps(message.tool_result),
"content": content,
"tool_call_id": message.tool_call_id
})
@@ -404,7 +418,26 @@ def parse_raw_tool_call(raw_block: str | dict, agent_id: str) -> tuple[llm.ToolI
if isinstance(raw_block, dict):
parsed_tool_call = raw_block
else:
parsed_tool_call: dict = json.loads(raw_block)
try:
parsed_tool_call: dict = json.loads(raw_block)
except json.JSONDecodeError:
# handle the "gemma" tool calling format
# call:HassTurnOn{name:<escape>light.living_room_rgbww<escape>}
gemma_match = re.finditer(r"call:(?P<name>\w+){(?P<args>.+)}", raw_block)
for match in gemma_match:
tool_name = match.group("name")
raw_args = match.group("args")
args_dict = {}
for arg_match in re.finditer(r"(?P<key>\w+):<escape>(?P<value>.+?)<escape>", raw_args):
args_dict[arg_match.group("key")] = arg_match.group("value")
parsed_tool_call = {
"name": tool_name,
"arguments": args_dict
}
break # TODO: how do we properly handle multiple tool calls in one response?
else:
raise MalformedToolCallException(agent_id, "", "unknown", str(raw_block), "Tool call was not properly formatted JSON")
# try to validate either format
is_services_tool_call = False

View File

@@ -1,3 +1,4 @@
huggingface-hub>=0.23.0
webcolors>=24.8.0
ollama>=0.5.1
anthropic>=0.75.0

View File

@@ -9,18 +9,24 @@ tags:
- assistant
language:
- en
pretty_name: Home Assistant Requests
pretty_name: Home Assistant Requests V2
size_categories:
- 10K<n<100k
---
# Home Assistant Requests Dataset
# Home Assistant Requests V2 Dataset
This dataset contains a list of requests and responses for a user interacting with a personal assistant that controls an instance of [Home Assistant](https://www.home-assistant.io/).
The dataset is generated from the different CSV "piles". The "piles" contain different chunks of requests that are assembled into a final context that is presented to the LLM. For example, `piles/<language>/pile_of_device_names.csv` contains only names of various devices to be used as part of context as well as inserted into `piles/<language>/pile_of_templated_actions.csv` and `piles/<language>/pile_of_status_requests.csv`. The logic for assembling the final dataset from the piles is contained in [generate_home_assistant_data.py](./generate_home_assistant_data.py).
The updated V2 of the dataset is now multilingual, containing data in English, German, French, Spanish, and Polish. The dataset also contains multiple "personalities" for the assistant to respond in, such as a formal assistant, a sarcastic assistant, and a friendly assistant. Lastly, the dataset has been updated to fully support modern tool-calling formats.
## Prepare environment
## Assembling the dataset
> NOTE: If you are viewing this dataset on HuggingFace, you can download the "small" dataset variant directly from the "Files and versions" tab.
The dataset is generated from the different CSV "piles". The "piles" contain different chunks of requests that are assembled into a final context that is presented to the LLM. For example, `piles/<language>/pile_of_device_names.csv` contains only names of various devices to be used as part of context as well as inserted into `piles/<language>/pile_of_templated_actions.csv` and `piles/<language>/pile_of_status_requests.csv`. The logic for assembling the final dataset from the piles is contained in [generate_data.py](./generate_data.py).
### Prepare environment
Start by installing system dependencies:
`sudo apt-get install python3-dev`
@@ -32,25 +38,14 @@ source .generate_data/bin/activate
pip3 install -r requirements.txt
```
## Generating the dataset from piles
### Generating the dataset from piles
`python3 generate_home_assistant_data.py --train --test --large --sharegpt`
`python3 generate_data.py --train --test --small --language english german french spanish polish`
Supported dataset splits are `--test`, `--train`, & `--sample`
Arguments to set the train dataset size are `--small`, `--medium`, `--large`, & `--xl`.
Supported formats are `--raw_corpus` (chatml formatted) & `--sharegpt`
Languages can be enabled using `--language english german french spanish polish`
## Merging with other instruct-datasets for training
`python3 generate_home_assistant_data.py --merge <dataset>`
Supported datasets right now are:
- `alpaca`
- `wizardlm70k`
Please note that the supported datasets all have different licenses. Be aware that the license of the resulting data mixture might be different that the license of this dataset alone.
## Adding a new personality
In order to add a new personality, you need to define a new system prompt and new set of responses for the assistant. The system prompt is the description of the assistant's behavior that occurs at the start of the context. The responses are what is said back to the user when performing a task. The model should still respond with the correct service call no matter what the assistant's response is. The list of system prompts are stored in `pile_of_system_prompts.csv`, and the list of responses are stored in `pile_of_responses.csv`
@@ -66,9 +61,29 @@ The response pile is a CSV with the following headers: `service,response,languag
Generating the full dataset using the python script will print out a warning for any responses that are missing for a persona.
## Synthesizing new pile data
You can quickly append fresh examples to the CSV piles without editing them manually by running `synthesize.py`. The script talks to the configured LLM and writes the generated rows directly into the per-language pile files.
Examples:
```bash
# Append 25 failed tool-call recoveries and 25 refusals in Spanish
python3 synthesize.py --language spanish --model gpt-oss-120b --failed-tool-calls 25 --refusals 25 --concurrency 6
# Generate new actions plus matching refusal samples in German
python3 synthesize.py --language german --actions 100 --refusals 40 --model gpt-oss-120b
```
Useful flags:
- `--failed-tool-calls`: number of `pile_of_failed_tool_calls.csv` rows to synthesize.
- `--refusals`: number of `pile_of_refusals.csv` rows to synthesize.
- `--actions`, `--status`, `--devices`: existing knobs for the other piles.
The script automatically routes generations to the correct language-specific pile under `data/piles/<language>/`.
## Adding new Home Assistant functionality
TODO
<!-- In order to add new home assistant device types, you will need to add data to a handful of piles, as well as make small modifications to the `generate_home_assistant_data.py` script.
<!-- In order to add new home assistant device types, you will need to add data to a handful of piles, as well as make small modifications to the `generate_data.py` script.
1. Add 15-30 new device names with the new type to the `pile_of_device_names.csv`. This should be an entity_id and a 'friendly name'
2. Add
-->

308
data/devices.py Normal file
View File

@@ -0,0 +1,308 @@
from collections import defaultdict
import random
from dataclasses import dataclass
from typing import Final, Callable, List
from difflib import SequenceMatcher
from tools import *
from utils import PileOfDeviceType, closest_color, generate_random_parameter, get_dataset_piles
# STATES
STATE_ON: Final = "on"
STATE_OFF: Final = "off"
STATE_ACTIVE: Final = "active"
STATE_UNKNOWN: Final = "unknown"
STATE_OPEN: Final = "open"
STATE_OPENING: Final = "opening"
STATE_CLOSED: Final = "closed"
STATE_CLOSING: Final = "closing"
STATE_BUFFERING: Final = "buffering"
STATE_PLAYING: Final = "playing"
STATE_PAUSED: Final = "paused"
STATE_IDLE: Final = "idle"
STATE_STANDBY: Final = "standby"
STATE_LOCKED: Final = "locked"
STATE_UNLOCKED: Final = "unlocked"
STATE_LOCKING: Final = "locking"
STATE_UNLOCKING: Final = "unlocking"
STATE_JAMMED: Final = "jammed"
STATE_UNAVAILABLE: Final = "unavailable"
STATE_OK: Final = "ok"
STATE_PROBLEM: Final = "problem"
STATE_CLEANING: Final = "cleaning"
STATE_DOCKED: Final = "docked"
STATE_RETURNING: Final = "returning"
def format_device_line(*, device_name: str, friendly_name: str, state: str):
return (f"{device_name} '{friendly_name}' = {state}")
@dataclass
class DeviceType:
name: str
possible_states: list[tuple[str, float]]
def get_random_state(self, language: str, extra_exposed_attributes: list[str] | None = None):
states = [ x[0] for x in self.possible_states ]
weights = [ x[1] for x in self.possible_states ]
return random.choices(states, weights=weights, k=1)[0]
def get_all_tools(self, extra_exposed_attributes: List[str]):
"""Return list of tool names available for this device type."""
tools = [TOOL_TURN_ON, TOOL_TURN_OFF, TOOL_TOGGLE]
return tools
def get_random_parameter(self, param_name: str, language: str):
"""Generate a random parameter value."""
return generate_random_parameter(param_name, get_dataset_piles(language))
class LightDeviceType(DeviceType):
def __init__(self):
super().__init__("light",
possible_states=[
(STATE_ON, 0.5),
(STATE_OFF, 0.5)
]
)
def get_random_state(self, language: str, extra_exposed_attributes: list[str] | None = None):
extra_exposed_attributes = extra_exposed_attributes or []
state = super().get_random_state(language, extra_exposed_attributes=extra_exposed_attributes)
if random.random() < 0.5 and "rgb_color" in extra_exposed_attributes:
random_rgb = generate_random_parameter("rgb_color", get_dataset_piles(language))
state = state + ";" + closest_color(random_rgb) + " " + str(random_rgb)
if random.random() < 0.7 and "brightness" in extra_exposed_attributes:
state = state + ";" + str(generate_random_parameter("brightness", get_dataset_piles(language))) + "%"
return state
def get_all_tools(self, extra_exposed_attributes: List[str]):
"""Return list of tool names available for lights."""
tools = [TOOL_TURN_ON, TOOL_TURN_OFF, TOOL_TOGGLE]
if "brightness" in extra_exposed_attributes or "rgb_color" in extra_exposed_attributes:
tools.append(TOOL_LIGHT_SET)
return tools
class SwitchDeviceType(DeviceType):
def __init__(self):
super().__init__("switch", [
(STATE_ON, 0.5),
(STATE_OFF, 0.5)
])
class FanDeviceType(DeviceType):
def __init__(self):
super().__init__("fan", [
(STATE_ON, 0.5),
(STATE_OFF, 0.5)
])
class GarageDoorDeviceType(DeviceType):
def __init__(self):
super().__init__("garage_door", [
(STATE_OPEN, 0.49),
(STATE_CLOSED, 0.49),
(STATE_OPENING, 0.01),
(STATE_CLOSING, 0.01)
])
def get_all_tools(self, extra_exposed_attributes: List[str]):
tools = [TOOL_TURN_ON, TOOL_TURN_OFF, TOOL_TOGGLE]
if "position" in extra_exposed_attributes:
tools.append(TOOL_SET_POSITION)
return tools
class BlindsDeviceType(DeviceType):
def __init__(self):
super().__init__("blinds", [
(STATE_OPEN, 0.49),
(STATE_CLOSED, 0.49),
(STATE_OPENING, 0.01),
(STATE_CLOSING, 0.01)
])
def get_all_tools(self, extra_exposed_attributes: List[str]):
tools = [TOOL_TURN_ON, TOOL_TURN_OFF, TOOL_TOGGLE]
if "position" in extra_exposed_attributes:
tools.append(TOOL_SET_POSITION)
return tools
class LockDeviceType(DeviceType):
def __init__(self):
super().__init__("lock", [
(STATE_LOCKED, 0.5),
(STATE_UNLOCKED, 0.5),
])
class VacuumDeviceType(DeviceType):
def __init__(self):
super().__init__("vacuum", [
(STATE_CLEANING, 0.2),
(STATE_DOCKED, 0.6),
(STATE_RETURNING, 0.1),
(STATE_IDLE, 0.05),
(STATE_PAUSED, 0.05),
])
def get_all_tools(self, extra_exposed_attributes: List[str]):
return [TOOL_VACUUM_START, TOOL_VACUUM_RETURN_TO_BASE]
class TimerDeviceType(DeviceType):
def __init__(self):
super().__init__("timer", [
(STATE_IDLE, 0.2),
(STATE_ACTIVE, 0.6),
(STATE_PAUSED, 0.1),
])
def get_all_tools(self, extra_exposed_attributes: List[str]):
tools = [TOOL_START_TIMER, TOOL_CANCEL_TIMER, TOOL_PAUSE_TIMER, TOOL_UNPAUSE_TIMER]
if "duration" in extra_exposed_attributes:
tools.extend([TOOL_INCREASE_TIMER, TOOL_DECREASE_TIMER, TOOL_TIMER_STATUS])
return tools
class TodoDeviceType(DeviceType):
def __init__(self):
super().__init__("todo", [ (f"{i}", (1/32)) for i in range(32) ],)
def get_all_tools(self, extra_exposed_attributes: List[str]):
return [TOOL_LIST_ADD_ITEM]
class ClimateDeviceType(DeviceType):
def __init__(self):
super().__init__("climate", [])
def get_random_state(self, language: str, extra_exposed_attributes: list[str] | None = None):
"""state;fan_mode;temperature;humidity"""
extra_exposed_attributes = extra_exposed_attributes or []
state = generate_random_parameter("hvac_mode", get_dataset_piles(language))
if "fan_mode" in extra_exposed_attributes:
state = state + ";" + generate_random_parameter("fan_mode", get_dataset_piles(language))
if "temperature" in extra_exposed_attributes:
if random.random() > 0.5:
state = state + ";" + str(generate_random_parameter("temp_f", get_dataset_piles(language))) + "F"
else:
state = state + ";" + str(generate_random_parameter("temp_c", get_dataset_piles(language))) + "C"
if "humidity" in extra_exposed_attributes:
state = state + ";" + str(generate_random_parameter("humidity", get_dataset_piles(language))) + "%"
if random.random() < 0.8 and "preset_mode" in extra_exposed_attributes:
# if it is not "on a preset" then don't add the mode
state = state + ";" + generate_random_parameter("preset_mode", get_dataset_piles(language))
return state
def get_all_tools(self, extra_exposed_attributes: List[str]):
"""Return list of tool names available for climate devices."""
tools = [TOOL_TURN_ON, TOOL_TURN_OFF]
if "temperature" in extra_exposed_attributes or "fan_mode" in extra_exposed_attributes:
tools.append(TOOL_CLIMATE_SET_TEMPERATURE)
if "humidity" in extra_exposed_attributes:
tools.extend([TOOL_SET_HUMIDITY, TOOL_SET_HUMIDIFIER_MODE])
return tools
class MediaPlayerDeviceType(DeviceType):
def __init__(self):
super().__init__("media_player", [
(STATE_ON, 0.15),
(STATE_OFF, 0.54),
(STATE_IDLE, 0.1),
(STATE_PLAYING, 0.1),
(STATE_PAUSED, 0.05),
(STATE_STANDBY, 0.05),
(STATE_BUFFERING, 0.01),
])
def get_random_state(self, language: str, extra_exposed_attributes: list[str] | None = None):
extra_exposed_attributes = extra_exposed_attributes or []
state = super().get_random_state(language, extra_exposed_attributes=extra_exposed_attributes)
if "media_title" in extra_exposed_attributes and state in [STATE_PLAYING, STATE_PAUSED, STATE_BUFFERING, STATE_ON]:
state = state + ";" + generate_random_parameter("media", get_dataset_piles(language))
if "volume_level" in extra_exposed_attributes and state != STATE_OFF:
state = state + ";vol=" + str(generate_random_parameter("volume", get_dataset_piles(language))) + "%"
return state
def get_all_tools(self, extra_exposed_attributes: List[str]):
"""Return list of tool names available for media players."""
tools = [TOOL_TURN_ON, TOOL_TURN_OFF, TOOL_MEDIA_PAUSE, TOOL_MEDIA_UNPAUSE, TOOL_MEDIA_NEXT]
if "volume_level" in extra_exposed_attributes:
tools.append(TOOL_SET_VOLUME)
return tools
SUPPORTED_DEVICES: dict[str, DeviceType] = {
"light": LightDeviceType(),
"switch": SwitchDeviceType(),
"fan": FanDeviceType(),
"garage_door": GarageDoorDeviceType(),
"blinds": BlindsDeviceType(),
"lock": LockDeviceType(),
"media_player": MediaPlayerDeviceType(),
"climate": ClimateDeviceType(),
"vacuum": VacuumDeviceType(),
"timer": TimerDeviceType(),
"todo": TodoDeviceType(),
}
# generate a random list of devices for the context
def random_device_list(max_devices: int, avoid_device_names: list[str], language: str = "english"):
num_devices = random.randint(2, max_devices)
piles = get_dataset_piles(language)
local_device_names = { k: v[:] for k,v in piles.stacks_of_device_names.items() }
avoid_climate = False
for avoid_device in avoid_device_names:
avoid_type = avoid_device.split(".")[0]
filtered_possible_devices = []
for possible_device in local_device_names[avoid_type]:
similarity_ratio = SequenceMatcher(None, avoid_device, possible_device["device_name"].split(".")[1]).ratio()
if similarity_ratio < 0.4:
filtered_possible_devices.append(possible_device)
local_device_names[avoid_type] = filtered_possible_devices
if avoid_type == "climate":
avoid_climate = True
possible_choices: list[PileOfDeviceType] = []
for device_type in local_device_names.keys():
possible_choices.extend(local_device_names[device_type])
device_types: set[str] = set()
device_list = []
device_lines: list[str] = []
# TODO: randomly pick attributes for this list
extra_exposed_attributes = ["rgb_color", "brightness", "temperature", "humidity", "fan_mode", "media_title", "volume_level", "duration", "remaining", "item"]
while len(device_list) < num_devices:
choice = random.choice(possible_choices)
if choice["device_name"] in device_list:
continue
try:
device_name = choice["device_name"]
device_type = device_name.split(".")[0]
friendly_name = choice["description"]
# don't add random thermostats. we need to be careful about how we handle multiple thermostats
if avoid_climate and device_type == "climate":
continue
state = SUPPORTED_DEVICES[device_type].get_random_state(language, extra_exposed_attributes=extra_exposed_attributes)
device_lines.append(format_device_line(
device_name=device_name,
friendly_name=friendly_name,
state=state
))
device_list.append(device_name)
device_types.add(device_type)
except Exception as ex:
print(f"bad device name: {choice}")
print(repr(ex))
return device_lines, list(device_types), list(extra_exposed_attributes)

873
data/generate_data.py Normal file
View File

@@ -0,0 +1,873 @@
import argparse
import json
import numpy as np
import random
from datasets import load_dataset, concatenate_datasets
from typing import Any, Callable
from tqdm import tqdm
import webcolors
# ensure we can import from the data/ directory
import os
import sys
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
from devices import SUPPORTED_DEVICES, format_device_line, random_device_list, \
TOOL_TURN_ON, TOOL_CLIMATE_SET_TEMPERATURE, TOOL_SET_HUMIDITY, \
TOOL_LIGHT_SET, TOOL_START_TIMER, TOOL_LIST_ADD_ITEM, SERVICE_TO_TOOL_MAP, \
HASS_TOOLS, SERVICE_TOOLS
from prompting import generate_system_prompt, USER_INSTRUCTION_PROMPT
from utils import AssistantTurn, DatasetEntry, Example, PileOfDeviceType, PileOfFailedToolcallType, PileOfRefusalsType, PileOfSpecificActionType, PileOfStatusRequestType, PileOfTemplatedActionType, ToolCall, ToolResult, get_random_response, generate_random_parameter, closest_color, \
get_dataset_piles, NoResponseAvailableException
def create_assistant_turn(answer: str, tool_call_sequence: list[ToolCall] | None = None, *, tool_results: list[ToolResult] | None = None, train_on_turn: bool = True) -> AssistantTurn:
"""Bundle the assistant utterance with any tool interaction for that turn."""
return {
"answer": answer,
"tool_call_sequence": tool_call_sequence or [],
"tool_results": tool_results if tool_results is not None else [],
"train_on_turn": train_on_turn,
}
def generate_static_example(action: PileOfSpecificActionType, persona: str, language: str, max_devices: int = 128, use_service_names: bool = False) -> Example:
question = action["phrase"]
service_name = action["service_name"]
device_type = service_name.split(".")[0]
target_device = f"{device_type}.{action['device_name']}"
friendly_name = target_device.split(".")[1].replace("_", " ").title()
piles = get_dataset_piles(language)
device_list, device_types, extra_exposed_attributes = random_device_list(
max_devices=max_devices, avoid_device_names=[target_device], language=language)
# insert our target device somewhere random in the list
index = random.randint(0, len(device_list))
state = SUPPORTED_DEVICES[device_type].get_random_state(language, extra_exposed_attributes=extra_exposed_attributes)
device_list.insert(index, format_device_line(
device_name=target_device,
friendly_name=friendly_name,
state=state
))
# gather a list of all available tools
available_tools: list[str] = []
for x in set(device_types + [device_type]):
available_tools.extend(SUPPORTED_DEVICES[x].get_all_tools(extra_exposed_attributes))
# Remove duplicates while preserving order
available_tools = list(dict.fromkeys(available_tools))
# Map service name to tool name
service_action = service_name.split(".")[1]
tool_name = SERVICE_TO_TOOL_MAP[service_action]
response_starting, response_confirmed = get_random_response(
piles.pile_of_responses,
service=service_name,
persona=persona,
question_template="",
short=False
)
answer_list = [response_confirmed]
tool_args = {}
question = question.replace("<device_name>", target_device)
response_starting = response_starting.replace("<device_name>", target_device)
answer_list = replace_answer(answer_list, "<device_name>", target_device)
if "climate" in service_action:
if "<hvac_mode>" in question:
hvac_mode = generate_random_parameter("hvac_mode", piles)
question = question.replace("<hvac_mode>", hvac_mode)
answer_list = replace_answer(answer_list, "<hvac_mode>", hvac_mode)
# Add hvac_mode as temperature parameter for climate tool
tool_args["hvac_mode"] = hvac_mode
if "<fan_mode>" in question:
fan_mode = generate_random_parameter("fan_mode", piles)
question = question.replace("<fan_mode>", fan_mode)
answer_list = replace_answer(answer_list, "<fan_mode>", fan_mode)
tool_args["fan_mode"] = fan_mode
if "<temp_f>" in question:
temp_f = generate_random_parameter("temp_f", piles)
question = question.replace("<temp_f>", str(temp_f))
answer_list = replace_answer(answer_list, "<temp_f>", str(temp_f))
tool_args["temperature"] = temp_f
if "<temp_c>" in question:
temp_c = generate_random_parameter("temp_c", piles)
question = question.replace("<temp_c>", str(temp_c))
answer_list = replace_answer(answer_list, "<temp_c>", str(temp_c))
tool_args["temperature"] = temp_c
if "<humidity>" in question:
humidity = generate_random_parameter("humidity", piles)
question = question.replace("<humidity>", str(humidity))
answer_list = replace_answer(answer_list, "<humidity>", str(humidity))
tool_args["humidity"] = humidity
if "light" in service_action:
if "<brightness>" in question:
brightness = generate_random_parameter("brightness", piles)
question = question.replace("<brightness>", str(brightness))
answer_list = replace_answer(answer_list, "<brightness>", str(brightness))
tool_args["brightness"] = brightness
if "<color>" in question:
random_rgb = generate_random_parameter("rgb_color", piles)
random_rgb_name = closest_color(random_rgb)
question = question.replace("<color>", str(random_rgb_name))
answer_list = replace_answer(answer_list, "<color>", str(random_rgb_name))
tool_args["color"] = random_rgb_name
if "timer" in service_action:
if "<duration>" in question:
duration = generate_random_parameter("duration", piles)
duration_name = piles.pile_of_durations[duration]
question = question.replace("<duration>", duration_name)
answer_list = replace_answer(answer_list, "<duration>", duration_name)
tool_args["duration"] = str(duration)
if "todo" in service_action:
if "<todo>" in question:
todo = generate_random_parameter("todo", piles)
question = question.replace("<todo>", todo)
answer_list = replace_answer(answer_list, "<todo>", todo)
tool_args["item"] = todo
if use_service_names:
tool_call: ToolCall = {
"tool_name": tool_name,
"service_name": service_name,
"tool_args": {"entity_id": target_device, **tool_args}
}
else:
tool_call: ToolCall = {
"tool_name": tool_name,
"service_name": service_name,
"tool_args": {"name": target_device, **tool_args}
}
if "arguments" in action and action["arguments"]:
try:
import json
args = json.loads(action["arguments"])
tool_call["tool_args"].update(args)
except Exception as e:
print(f"Failed to parse arguments for {action}: {e}")
final_answer = " ".join(answer_list)
assistant_turns = [
create_assistant_turn(response_starting, [tool_call]),
create_assistant_turn(final_answer, [])
]
return {
"states": device_list,
"available_tools": available_tools,
"question": question.lower(),
"assistant_turns": assistant_turns
}
def replace_answer(list_of_answer: list[str], var: str, value: str):
new_list: list[str] = []
for answer in list_of_answer:
new_list.append(answer.replace(var, value))
return new_list
def generate_templated_example(template: PileOfTemplatedActionType, persona: str, language: str, max_devices: int = 128, use_service_names: bool = False) -> Example:
template_device_types: list[str] = template["device_type"].split("|")
service_names: list[str] = [ f"{x}.{y}" for x, y in zip(template_device_types, template["service"].split("|")) ]
question_template: str = template["phrase"]
piles = get_dataset_piles(language)
# choose a random device for this template
chosen_devices: list[PileOfDeviceType] = []
for device_type in template_device_types:
device_dict = random.choice(piles.stacks_of_device_names[device_type])
chosen_devices.append(device_dict)
device_list, device_types, extra_exposed_attributes = random_device_list(
max_devices=max_devices, avoid_device_names=[d["device_name"] for d in chosen_devices])
# insert our target device somewhere random in the list
for device_dict in chosen_devices:
index = random.randint(0, len(device_list))
if "<brightness>" in question_template and "brightness" not in extra_exposed_attributes:
extra_exposed_attributes.append("brightness")
if "<color>" in question_template and "rgb_color" not in extra_exposed_attributes:
extra_exposed_attributes.append("rgb_color")
if ("<temp_f>" in question_template or "<temp_c>" in question_template) \
and "temperature" not in extra_exposed_attributes:
extra_exposed_attributes.append("temperature")
if "<humidity>" in question_template and "humidity" not in extra_exposed_attributes:
extra_exposed_attributes.append("humidity")
if "<fan_mode>" in question_template and "fan_mode" not in extra_exposed_attributes:
extra_exposed_attributes.append("fan_mode")
if "<duration>" in question_template and "duration" not in extra_exposed_attributes:
extra_exposed_attributes.append("duration")
state = SUPPORTED_DEVICES[device_dict["type"]].get_random_state(language, extra_exposed_attributes=extra_exposed_attributes)
device_name = device_dict["device_name"]
friendly_name = device_dict["description"]
device_list.insert(index, format_device_line(
device_name=device_name,
friendly_name=friendly_name,
state=state
))
# gather a list of all available tools
available_tools: list[str] = []
for x in set(device_types + template_device_types):
available_tools.extend(SUPPORTED_DEVICES[x].get_all_tools(extra_exposed_attributes))
# Remove duplicates while preserving order
available_tools = list(dict.fromkeys(available_tools))
# pick an appropriate response and generate the question
if len(template_device_types) == 1:
answer_starting, answer_confirmed = get_random_response(
piles.pile_of_responses,
service=service_names[0],
persona=persona,
question_template=question_template,
short=False
)
question = question_template.replace("<device_name>", chosen_devices[0]["description"])
answer_starting = answer_starting.replace("<device_name>", chosen_devices[0]["description"])
answer_list = [ answer_confirmed.replace("<device_name>", chosen_devices[0]["description"]) ]
else:
question = question_template
answers = []
answer_starting = ""
for i in range(len(template_device_types)):
question = question.replace(f"<device_name{(i + 1)}>", chosen_devices[i]["description"])
answer_starting_part, answer_confirmed = get_random_response(
piles.pile_of_responses,
service=service_names[i],
persona=persona,
question_template=question_template,
short=True
)
answer_starting += answer_starting_part.replace(f"<device_name>", chosen_devices[i]["description"]) + " "
answers.append(answer_confirmed.replace(f"<device_name>", chosen_devices[i]["description"]))
answer_list = []
for word in piles.and_words:
answer_list.append(f" {word} ".join(answers))
# generate the list of tool calls
tool_calls: list[ToolCall] = []
for device_dict, service in zip(chosen_devices, service_names):
service_action = service.split(".")[1]
tool_name = SERVICE_TO_TOOL_MAP[service_action]
tool_call: ToolCall = {
"tool_name": tool_name,
"service_name": service,
"tool_args": {"entity_id" if use_service_names else "name": device_dict["device_name"] if use_service_names else device_dict["description"]}
}
tool_calls.append(tool_call)
if any(["climate" in service for service in service_names ]):
if "<hvac_mode>" in question:
hvac_mode = generate_random_parameter("hvac_mode", piles)
question = question.replace("<hvac_mode>", hvac_mode)
answer_list = replace_answer(answer_list, "<hvac_mode>", hvac_mode)
# Add hvac_mode as temperature parameter for climate tool
for call in tool_calls:
if call["tool_name"] == TOOL_CLIMATE_SET_TEMPERATURE:
call["tool_args"]["hvac_mode"] = hvac_mode
if "<fan_mode>" in question:
fan_mode = generate_random_parameter("fan_mode", piles)
question = question.replace("<fan_mode>", fan_mode)
answer_list = replace_answer(answer_list, "<fan_mode>", fan_mode)
for call in tool_calls:
if call["tool_name"] == TOOL_CLIMATE_SET_TEMPERATURE:
call["tool_args"]["fan_mode"] = fan_mode
if "<temp_f>" in question:
temp_f = generate_random_parameter("temp_f", piles)
question = question.replace("<temp_f>", str(temp_f))
answer_list = replace_answer(answer_list, "<temp_f>", str(temp_f))
for call in tool_calls:
if call["tool_name"] == TOOL_CLIMATE_SET_TEMPERATURE:
call["tool_args"]["temperature"] = temp_f
if "<temp_c>" in question:
temp_c = generate_random_parameter("temp_c", piles)
question = question.replace("<temp_c>", str(temp_c))
answer_list = replace_answer(answer_list, "<temp_c>", str(temp_c))
for call in tool_calls:
if call["tool_name"] == TOOL_CLIMATE_SET_TEMPERATURE:
call["tool_args"]["temperature"] = temp_c
if "<humidity>" in question:
humidity = generate_random_parameter("humidity", piles)
question = question.replace("<humidity>", str(humidity))
answer_list = replace_answer(answer_list, "<humidity>", str(humidity))
for call in tool_calls:
if call["tool_name"] == TOOL_SET_HUMIDITY:
call["tool_args"]["humidity"] = humidity
if any(["light" in service for service in service_names ]):
if "<brightness>" in question:
brightness = generate_random_parameter("brightness", piles)
question = question.replace("<brightness>", str(brightness))
answer_list = replace_answer(answer_list, "<brightness>", str(brightness))
for call in tool_calls:
if call["tool_name"] == TOOL_LIGHT_SET:
call["tool_args"]["brightness"] = brightness
if "<color>" in question:
random_rgb = generate_random_parameter("rgb_color", piles)
random_rgb_name = closest_color(random_rgb)
question = question.replace("<color>", str(random_rgb_name))
answer_list = replace_answer(answer_list, "<color>", str(random_rgb_name))
for call in tool_calls:
if call["tool_name"] == TOOL_LIGHT_SET:
call["tool_args"]["color"] = random_rgb_name
if any(["timer" in service for service in service_names ]):
if "<duration>" in question:
duration = generate_random_parameter("duration", piles)
duration_name = piles.pile_of_durations[duration]
question = question.replace("<duration>", duration_name)
answer_list = replace_answer(answer_list, "<duration>", duration_name)
for call in tool_calls:
if call["tool_name"] == TOOL_START_TIMER:
call["tool_args"]["duration"] = str(duration)
if any(["todo" in service for service in service_names ]):
if "<todo>" in question:
todo = generate_random_parameter("todo", piles)
question = question.replace("<todo>", todo)
answer_list = replace_answer(answer_list, "<todo>", todo)
for call in tool_calls:
if call["tool_name"] == TOOL_LIST_ADD_ITEM:
call["tool_args"]["item"] = todo
starting_answer = answer_starting.strip().lower()
normalized_answers = [ sentence.lower() for sentence in answer_list ]
final_answer = " ".join(normalized_answers)
assistant_turns = [
create_assistant_turn(starting_answer, tool_calls),
create_assistant_turn(final_answer, [])
]
return {
"states": device_list,
"available_tools": available_tools,
"question": question.lower(),
"assistant_turns": assistant_turns
}
def generate_status_request(template: PileOfStatusRequestType, persona: str, language: str, max_devices: int = 128, return_target_device: bool = False, use_service_names: bool = False) -> Example | tuple[Example, PileOfDeviceType]:
device_type: str = template["device_type"]
state_name: str = template["state"]
question_template: str = template["phrase"]
answer_template: str = template["assistant_response"]
piles = get_dataset_piles(language)
# choose a random device for this template
chosen_device = random.choice(piles.stacks_of_device_names[device_type])
# build a random list of devices
device_list, device_types, extra_exposed_attributes = random_device_list(max_devices=max_devices, avoid_device_names=[ chosen_device["device_name"] ])
# generate the question
question = question_template.replace("<device_name>", chosen_device["description"])
answer = answer_template.replace("<device_name>", chosen_device["description"])
# insert other templated variables
if device_type == "climate":
climate_device_type = SUPPORTED_DEVICES["climate"]
temp_f = climate_device_type.get_random_parameter("temp_f", language)
answer = answer.replace("<temp_f>", str(temp_f))
state_name = state_name.replace("<temp_f>", str(temp_f))
temp_c = climate_device_type.get_random_parameter("temp_c", language)
answer = answer.replace("<temp_c>", str(temp_c))
state_name = state_name.replace("<temp_c>", str(temp_c))
humidity = climate_device_type.get_random_parameter("humidity", language)
answer = answer.replace("<humidity>", str(humidity))
state_name = state_name.replace("<humidity>", str(humidity))
if device_type == "light":
light_device_type = SUPPORTED_DEVICES["light"]
brightness = light_device_type.get_random_parameter("brightness", language)
answer = answer.replace("<brightness>", str(brightness))
state_name = state_name.replace("<brightness>", str(brightness))
random_rgb = light_device_type.get_random_parameter("rgb_color", language)
random_rgb_name = closest_color(random_rgb)
actual_random_rgb = webcolors.name_to_rgb(random_rgb_name)
actual_random_rgb = (actual_random_rgb.red, actual_random_rgb.green, actual_random_rgb.blue)
state_name = state_name.replace("<color>", str(random_rgb_name) + " " + str(actual_random_rgb))
answer = answer.replace("<color>", str(random_rgb_name))
if device_type == "media_player":
media_player_device_type = SUPPORTED_DEVICES["media_player"]
volume = media_player_device_type.get_random_parameter("volume", language)
random_media = media_player_device_type.get_random_parameter("media", language)
answer = answer.replace("<volume>", str(volume) + "%")
state_name = state_name.replace("<volume>", str(volume) + "%")
answer = answer.replace("<media>", random_media)
state_name = state_name.replace("<media>", random_media)
if device_type == "timer":
timer_device_type = SUPPORTED_DEVICES["timer"]
duration = timer_device_type.get_random_parameter("duration", language)
duration_name = piles.pile_of_durations[duration]
remaining = timer_device_type.get_random_parameter("remaining", language)
answer = answer.replace("<duration>", duration_name)
state_name = state_name.replace("<duration>", duration)
answer = answer.replace("<remaining>", remaining)
state_name = state_name.replace("<remaining>", remaining)
# insert our target device somewhere random in the list
index = random.randint(0, len(device_list))
device_list.insert(index, format_device_line(
device_name=chosen_device["device_name"],
friendly_name=chosen_device["description"],
state=state_name
))
# gather a list of all available tools
available_tools: list[str] = []
for x in set(device_types + [device_type]):
available_tools.extend(SUPPORTED_DEVICES[x].get_all_tools(extra_exposed_attributes))
# Remove duplicates while preserving order
available_tools = list(dict.fromkeys(available_tools))
assistant_turns = [create_assistant_turn(answer.lower(), [])]
result: Example = {
"states": device_list,
"available_tools": available_tools,
"question": question.lower(),
"assistant_turns": assistant_turns
}
if return_target_device:
return result, chosen_device
else:
return result
def generate_tool_failure_example(failure_case: PileOfFailedToolcallType, persona: str, language: str, max_devices: int = 128, use_service_names: bool = False) -> Example:
piles = get_dataset_piles(language)
service_name = failure_case["service_name"]
device_type = service_name.split(".")[0]
service_action = service_name.split(".")[1]
target_device = failure_case["correct_device_name"]
friendly_name = failure_case.get("correct_friendly_name", target_device.split(".")[1].replace("_", " ").title())
bad_device = failure_case["bad_device_name"]
question_template = failure_case["phrase"]
question = question_template.replace("<device_name>", friendly_name).lower()
device_list, device_types, extra_exposed_attributes = random_device_list(
max_devices=max_devices, avoid_device_names=[target_device], language=language)
state = SUPPORTED_DEVICES[device_type].get_random_state(language, extra_exposed_attributes=extra_exposed_attributes)
device_list.insert(random.randint(0, len(device_list)), format_device_line(
device_name=target_device,
friendly_name=friendly_name,
state=state
))
if device_type not in device_types:
device_types.append(device_type)
available_tools: list[str] = []
for x in set(device_types):
available_tools.extend(SUPPORTED_DEVICES[x].get_all_tools(extra_exposed_attributes))
available_tools = list(dict.fromkeys(available_tools))
response_starting, response_confirmed = get_random_response(
piles.pile_of_responses,
service=service_name,
persona=persona,
question_template=question_template,
short=False
)
response_starting = response_starting.replace("<device_name>", friendly_name)
response_confirmed = response_confirmed.replace("<device_name>", friendly_name)
tool_args_extra: dict[str, Any] = {}
if device_type == "climate":
if "<temp_f>" in question or "<temp_f>" in response_starting or "<temp_f>" in response_confirmed:
temp_f = generate_random_parameter("temp_f", piles)
question = question.replace("<temp_f>", str(temp_f))
response_starting = response_starting.replace("<temp_f>", str(temp_f))
response_confirmed = response_confirmed.replace("<temp_f>", str(temp_f))
tool_args_extra["temperature"] = temp_f
if "<temp_c>" in question or "<temp_c>" in response_starting or "<temp_c>" in response_confirmed:
temp_c = generate_random_parameter("temp_c", piles)
question = question.replace("<temp_c>", str(temp_c))
response_starting = response_starting.replace("<temp_c>", str(temp_c))
response_confirmed = response_confirmed.replace("<temp_c>", str(temp_c))
tool_args_extra["temperature"] = temp_c
retry_prompt = failure_case.get("retry_prompt", f"Trying again with {friendly_name}.").replace("<device_name>", friendly_name)
error_result = failure_case.get("error_result", "Error").replace("<device_name>", friendly_name)
tool_name = SERVICE_TO_TOOL_MAP[service_action]
first_args = {"entity_id": bad_device} if use_service_names else {"name": bad_device}
retry_args = {"entity_id": target_device} if use_service_names else {"name": target_device}
first_args.update(tool_args_extra)
retry_args.update(tool_args_extra)
first_turn = create_assistant_turn(
response_starting,
[{
"tool_name": tool_name,
"service_name": service_name,
"tool_args": first_args
}],
tool_results=[{
"tool_name": service_name if use_service_names else tool_name,
"tool_result": error_result
}],
train_on_turn=False
)
second_turn = create_assistant_turn(
retry_prompt,
[{
"tool_name": tool_name,
"service_name": service_name,
"tool_args": retry_args
}]
)
final_turn = create_assistant_turn(response_confirmed, [])
return {
"states": device_list,
"available_tools": available_tools,
"question": question,
"assistant_turns": [first_turn, second_turn, final_turn]
}
def generate_refusal_example(refusal_case: PileOfRefusalsType, persona: str, language: str, max_devices: int = 128, use_service_names: bool = False) -> Example:
service_name = refusal_case["service_name"]
device_type = service_name.split(".")[0]
target_device = f"{device_type}.{refusal_case['device_name']}"
friendly_name = refusal_case.get("friendly_name", refusal_case["device_name"].replace("_", " ").title())
desired_state = refusal_case.get("desired_state", "")
reason_type = refusal_case.get("reason_type", "not_available")
device_list, device_types, extra_exposed_attributes = random_device_list(
max_devices=max_devices, avoid_device_names=[target_device], language=language)
if reason_type == "already_state":
state = desired_state if desired_state else SUPPORTED_DEVICES[device_type].possible_states[0][0]
device_list.insert(random.randint(0, len(device_list)), format_device_line(
device_name=target_device,
friendly_name=friendly_name,
state=state
))
if device_type not in device_types:
device_types.append(device_type)
available_tools: list[str] = []
for x in set(device_types):
available_tools.extend(SUPPORTED_DEVICES[x].get_all_tools(extra_exposed_attributes))
available_tools = list(dict.fromkeys(available_tools))
response_text = refusal_case["response"].replace("<device_name>", friendly_name).lower()
question = refusal_case["phrase"].replace("<device_name>", friendly_name).lower()
assistant_turns = [create_assistant_turn(response_text, [])]
return {
"states": device_list,
"available_tools": available_tools,
"question": question,
"assistant_turns": assistant_turns
}
def format_example_sharegpt(example: Example, persona: str, language: str, use_system_role: bool, append_user_instruction_prompt: bool, use_service_names: bool, tool_response_format: str) -> DatasetEntry:
piles = get_dataset_piles(language)
sys_prompt = generate_system_prompt(example, persona, language, piles.pile_of_system_prompts)
question = example["question"]
assistant_turns = example["assistant_turns"]
if append_user_instruction_prompt:
user_instruction_words = USER_INSTRUCTION_PROMPT[language] + ":"
sys_prompt = "\n".join([ sys_prompt, user_instruction_words ])
if use_system_role:
conversation = [
{
"role": "system",
"content": [{"type": "text", "text": sys_prompt}],
"train_on_turn": False,
},
{
"role": "user",
"content": [{ "type": "text", "text": question }],
"train_on_turn": False,
}
]
else:
conversation = [
{
"role": "user",
"content": [{ "type": "text", "text": "\n".join([ sys_prompt, question ]) }],
"train_on_turn": False,
}
]
call_id_counter = 1
for turn in assistant_turns:
answer_text = turn.get("answer", "")
assistant_block = {
"role": "assistant",
"content": [{ "type": "text", "text": answer_text }],
"train_on_turn": turn.get("train_on_turn", True),
}
tool_call_sequence = turn.get("tool_call_sequence", [])
formatted_calls = []
call_names = []
for tool_call in tool_call_sequence:
call_name = tool_call.get("service_name", tool_call["tool_name"]) if use_service_names else tool_call["tool_name"]
call_names.append(call_name)
formatted_calls.append({
"name": call_name,
"arguments": json.dumps(tool_call["tool_args"]),
})
if formatted_calls:
assistant_block["tool_calls"] = [{ "function": call } for call in formatted_calls]
conversation.append(assistant_block)
if formatted_calls:
provided_results = turn.get("tool_results") or []
step_tool_results = []
if provided_results:
for idx, provided in enumerate(provided_results):
result = dict(provided)
if "tool_name" not in result and call_names:
result["tool_name"] = call_names[min(idx, len(call_names) - 1)]
if "tool_call_id" not in result:
result["tool_call_id"] = f"call_{call_id_counter}"
call_id_counter += 1
step_tool_results.append(result)
else:
for call_name in call_names:
step_tool_results.append({
"tool_name": call_name,
"tool_call_id": f"call_{call_id_counter}",
"tool_result": "Success"
})
call_id_counter += 1
if tool_response_format == "text":
conversation.append({
"role": "tool",
"content": [{ "type": "text", "text": json.dumps(result) } for result in step_tool_results],
"train_on_turn": False,
})
elif tool_response_format == "functiongemma":
conversation.append({
"role": "tool",
"content": [{ "name": result["tool_name"], "response": {"result": result["tool_result"]} } for result in step_tool_results],
"train_on_turn": False,
})
return {
"messages": conversation,
"tools": SERVICE_TOOLS if use_service_names else HASS_TOOLS
}
def generate_sft_file(
filename: str,
seed: int,
format_func: Callable[[Example, str, str, bool, bool, bool, str], DatasetEntry],
use_system_role: bool,
append_user_instruction_prompt: bool,
use_service_names: bool,
personas: list[str],
language: str,
tool_response_format: str,
*,
static_factor: float,
template_factor: int,
status_request_factor: int,
failure_factor: int,
refusal_factor: int):
random.seed(seed)
np.random.seed(seed)
piles = get_dataset_piles(language)
print("Generating...")
def run_factor_times(func: Callable[..., Example], examples: list[DatasetEntry], data, persona: str, factor: int | float, language: str):
if factor >= 1:
for i in range(int(factor)):
examples.append(format_func(func(data, persona, language, use_service_names=use_service_names), persona, language, use_system_role, append_user_instruction_prompt, use_service_names, tool_response_format))
else:
if random.random() < factor:
examples.append(format_func(func(data, persona, language, use_service_names=use_service_names), persona, language, use_system_role, append_user_instruction_prompt, use_service_names, tool_response_format))
generated_examples: list[DatasetEntry] = []
missing_responses = set()
for person in personas:
for action in tqdm(piles.pile_of_specific_actions):
try:
run_factor_times(generate_static_example, generated_examples, action, person, static_factor, language)
except NoResponseAvailableException as ex:
missing_responses.add(str(ex))
for templated_action in tqdm(piles.pile_of_templated_actions):
try:
run_factor_times(generate_templated_example, generated_examples, templated_action, person, template_factor, language)
except NoResponseAvailableException as ex:
missing_responses.add(str(ex))
for failure_case in tqdm(piles.pile_of_failed_tool_calls):
try:
run_factor_times(generate_tool_failure_example, generated_examples, failure_case, person, failure_factor, language)
except NoResponseAvailableException as ex:
missing_responses.add(str(ex))
for refusal_case in tqdm(piles.pile_of_refusals):
try:
run_factor_times(generate_refusal_example, generated_examples, refusal_case, person, refusal_factor, language)
except NoResponseAvailableException as ex:
missing_responses.add(str(ex))
for status_request in tqdm(piles.pile_of_status_requests):
run_factor_times(generate_status_request, generated_examples, status_request, "assistant", status_request_factor, language)
print(f"Generated {len(generated_examples)} examples. Saving...")
for missing in sorted(missing_responses):
print(missing)
cwd = os.path.dirname(__file__)
with open(f"{cwd}/output/{filename}.jsonl", "w") as f:
for item in generated_examples:
json_record = json.dumps(item)
f.write(json_record + '\n')
print("Done!")
def merge_with_dataset(dataset_name, seed, output_name, format_function, dataset_column_names, format_func):
alpaca_dataset = load_dataset(dataset_name)["train"].train_test_split(test_size=0.1)
home_assistant_dataset = load_dataset("json", data_files={ "train": "home_assistant_train.jsonl", "test": "home_assistant_test.jsonl" })
random.seed(seed)
np.random.seed(seed)
alpaca_dataset = alpaca_dataset.map(format_function).remove_columns(dataset_column_names)
combined_dataset_train = concatenate_datasets([home_assistant_dataset["train"], alpaca_dataset["train"]]).shuffle(seed=42)
combined_dataset_test = concatenate_datasets([home_assistant_dataset["test"], alpaca_dataset["test"]]).shuffle(seed=42)
combined_dataset_train.to_json(f"home_assistant_{output_name}_merged_train.jsonl")
combined_dataset_test.to_json(f"home_assistant_{output_name}_merged_test.jsonl")
def merge_languages(filename_prefix: str, languages: list):
all_examples = []
cwd = os.path.dirname(__file__)
for language in languages:
with open(f"{cwd}/output/{filename_prefix}_{language}.jsonl") as f:
all_examples.extend(f.readlines())
with open(f"{cwd}/output/{filename_prefix}.jsonl", "w") as f:
f.writelines(all_examples)
# TODO: add examples for ambiguous requests. asking a clarifying question
# TODO: support rejection when asking to do a service that isn't exposed
# TODO: make more randomized names for devices (random words or people's names)
# TODO: answer questions about more than one thing in the state list at once
# TODO: add examples for rooms/groups of devices. i.e. "turn off all the lights in the kitchen"
# TODO: add time, weather, and calendar/reminders (next 3 events?)
def main(args=None):
parser = argparse.ArgumentParser(description="Generate the full dataset from the CSV piles")
parser.add_argument("--sample", action="store_true", help="Set this flag to enable generation of the train dataset.")
parser.add_argument("--test", action="store_true", help="Set this flag to enable generation of the train dataset.")
parser.add_argument("--train", action="store_true", help="Set this flag to enable generation of the train dataset.")
parser.add_argument("--language", nargs="+", default=["english"], help="List of languages to generate: english, german, french, spanish, polish")
parser.add_argument("--tool-response-format", default="text", choices=["text", "functiongemma"], help="Format to use for tool responses.")
role_tweaks = parser.add_mutually_exclusive_group()
role_tweaks.add_argument("--no-system-role", action="store_true", help="Set this flag to disable the system role. The house context will be combined with the user role")
role_tweaks.add_argument("--merged-system-role", action="store_true", help="Set this flag to still emit a system role, but assume it will be merged by the chat template into the user role.")
train_size_group = parser.add_mutually_exclusive_group()
train_size_group.add_argument('--small', action='store_const', const='small', dest='size')
train_size_group.add_argument('--medium', action='store_const', const='medium', dest='size')
train_size_group.add_argument('--large', action='store_const', const='large', dest='size')
train_size_group.add_argument('--xl', action='store_const', const='xl', dest='size')
parser.add_argument('--use-service-names', action='store_true',
help='Use service names (e.g., light.turn_on) instead of intent tool names (e.g., HassTurnOn)')
args = parser.parse_args(args=args)
if not args.sample and not args.train and not args.test:
parser.print_usage()
exit(-1)
if args.size and not args.train:
print("Train size was provided but not generating the training set!")
exit(-1)
format_func = format_example_sharegpt
use_system_role = not args.no_system_role
append_user_instruction_prompt = args.merged_system_role or not args.no_system_role
use_service_names = args.use_service_names
tool_response_format = args.tool_response_format
for language in args.language:
piles = get_dataset_piles(language)
personas = list(piles.pile_of_system_prompts.keys())
suffix = f"_{language}" if len(args.language) > 1 else ""
if args.sample:
generate_sft_file(f"sample{suffix}", 42, format_func, use_system_role, append_user_instruction_prompt, use_service_names, personas, language, tool_response_format, static_factor=1, template_factor=1, status_request_factor=1, refusal_factor=1, failure_factor=1)
if args.train:
if args.size == "small":
generate_sft_file(f"home_assistant_train{suffix}", 42, format_func, use_system_role, append_user_instruction_prompt, use_service_names, personas, language, tool_response_format, static_factor=1, template_factor=10, status_request_factor=8, refusal_factor=3, failure_factor=1)
elif args.size == "medium":
generate_sft_file(f"home_assistant_train{suffix}", 42, format_func, use_system_role, append_user_instruction_prompt, use_service_names, personas, language, tool_response_format, static_factor=5, template_factor=15, status_request_factor=12, refusal_factor=5, failure_factor=1)
elif args.size == "large":
generate_sft_file(f"home_assistant_train{suffix}", 42, format_func, use_system_role, append_user_instruction_prompt, use_service_names, personas, language, tool_response_format, static_factor=5, template_factor=20, status_request_factor=15, refusal_factor=6, failure_factor=1)
elif args.size == "xl":
generate_sft_file(f"home_assistant_train{suffix}", 42, format_func, use_system_role, append_user_instruction_prompt, use_service_names, personas, language, tool_response_format, static_factor=7, template_factor=25, status_request_factor=18, refusal_factor=8, failure_factor=2)
else:
raise Exception(f"Unrecognized dataset size: {args.size}")
if args.test:
generate_sft_file(f"home_assistant_test{suffix}", 12345, format_func, use_system_role, append_user_instruction_prompt, use_service_names, personas, language, tool_response_format, static_factor=0.25, template_factor=1, status_request_factor=2, refusal_factor=1, failure_factor=1)
if len(args.language) > 1:
if args.sample:
merge_languages("sample", args.language)
if args.train:
merge_languages("home_assistant_train", args.language)
if args.test:
merge_languages("home_assistant_test", args.language)
if __name__ == "__main__":
main()

File diff suppressed because it is too large Load Diff

0
data/output/.gitkeep Normal file
View File

View File

@@ -644,4 +644,118 @@ timer.meditation_clock,"Meditation duration tracker"
timer.baby_nap_timer,"Baby nap monitor"
timer.tea_steeping,"Tea steeping countdown"
timer.game_timer,"Board game timer"
timer.morning_coffee,"Morning coffee brew timer"
timer.morning_coffee,"Morning coffee brew timer"
light.basement_bar_cool,Basement Bar Cool Light
light.upstairs_craft_room_zigbee,Upstairs Craft Room Light
light.downstairs_music_room_homekit,Downstairs Music Room Light
light.front_laundry_ge,Front Laundry Light
light.back_exercise_warm,Back Exercise Warm Light
light.kitchen_herb_garden_cool,Kitchen Herb Garden Cool Light
light.upstairs_meditation_zwave,Upstairs Meditation Light
light.downstairs_pet_area_mqtt,Downstairs Pet Area Light
light.front_entry_closet_homekit,Front Entry Closet Light
light.back_tool_room_lifx,Back Tool Room Light
light.garage_paint_booth_warm,Garage Paint Booth Warm Light
light.upstairs_craft_table_zigbee,Upstairs Craft Table Light
light.downstairs_wine_bar_homekit,Downstairs Wine Bar Light
light.front_potting_shed_ge,Front Potting Shed Light
light.back_aquarium_stand_warm,Back Aquarium Stand Warm Light
blinds.conservatory,Conservatory Blinds
blinds.morning_room,Morning room blinds
blinds.reading_nook,Reading nook blinds
blinds.meditation_space,Meditation space blinds
blinds.art_studio,Art studio blinds
blinds.music_room,Music room blinds
blinds.wine_cellar_window,Wine cellar window blinds
blinds.workshop_skylight,Workshop skylight blinds
blinds.greenhouse_south,South greenhouse blinds
blinds.library_bay_window,Library bay window blinds
fan.wine_cellar,Wine cellar fan
fan.art_studio,Art studio fan
fan.mudroom,Mudroom fan
fan.conservatory,Conservatory fan
fan.greenhouse,Greenhouse fan
fan.library,Library fan
fan.music_room,Music room fan
fan.workshop_ceiling,Workshop ceiling fan
fan.exercise_room,Exercise room fan
fan.craft_room,Craft room fan
garage_door.art_studio,Art studio door
garage_door.pool_house,Pool house door
garage_door.equipment_storage,Equipment storage door
garage_door.art_gallery,Art gallery door
garage_door.pottery_studio,Pottery studio door
garage_door.woodshop,Woodshop door
garage_door.auto_bay_left,Left auto bay door
garage_door.auto_bay_right,Right auto bay door
garage_door.detached_garage,Detached garage door
garage_door.alley_access,Alley access door
lock.mudroom_entry,Mudroom entry lock
lock.solarium,Solarium Lock
lock.servants_entrance,Servants entrance lock
lock.breezeway,Breezeway Lock
lock.equipment_room,Equipment room lock
lock.art_gallery,Art Gallery Lock
lock.trophy_room,Trophy room lock
lock.panic_room,Panic Room Lock
lock.server_room,Server room lock
lock.craft_closet,Craft closet lock
lock.hvac_room,HVAC room lock
lock.electrical_panel,Electrical panel lock
lock.water_heater_closet,Water heater closet lock
lock.recycling_area,Recycling area lock
lock.pet_door_smart,Smart pet door lock
media_player.exercise_room,Exercise Room Media
media_player.craft_room_radio,Craft Room Radio
media_player.greenhouse_speaker,Greenhouse Speaker
media_player.wine_cellar_audio,Wine Cellar Audio System
media_player.library_audiobook,Library Audiobook Player
media_player.meditation_room,Meditation Room Media
media_player.art_studio_spotify,Art Studio Spotify Player
media_player.workshop_podcast,Workshop Podcast Player
media_player.pool_house_tv,Pool House Television
media_player.cabana_soundbar,Cabana Soundbar
switch.pool_heater,Pool Heater Switch
switch.fountain_pump,Fountain Pump Switch
switch.pond_aerator,Pond aerator switch
switch.christmas_lights,Christmas lights switch
switch.landscape_uplighting,Landscape uplighting control
switch.driveway_heating,Driveway heating switch
switch.gutter_heating,Gutter heating control
switch.hot_tub_jets,Hot tub jets switch
switch.sauna_heater,Sauna heater control
switch.steam_shower,Steam shower switch
switch.towel_warmer,Towel warmer control
switch.wine_cooler,Wine cooler switch
switch.aquarium_filter,Aquarium filter switch
switch.pet_fountain,Pet fountain control
switch.bird_bath_heater,Bird bath heater switch
climate.wine_cellar_cooling,Wine Cellar Climate Control
climate.greenhouse_climate,Greenhouse Climate System
climate.server_room_cooling,Server Room Cooling
climate.art_studio_climate,Art Studio Climate Control
climate.humidor_control,Humidor Climate Control
vacuum.mudroom_entry,Mudroom entry vacuum
vacuum.workshop_floor,Workshop floor cleaner
vacuum.craft_room_helper,Craft room cleaning bot
vacuum.wine_cellar_vac,Wine cellar vacuum
vacuum.greenhouse_sweeper,Greenhouse floor sweeper
vacuum.library_quiet_mode,Library quiet vacuum
vacuum.art_studio_cleaner,Art studio dust collector
vacuum.exercise_equipment_area,Exercise equipment area cleaner
vacuum.pet_feeding_station,Pet feeding station vacuum
vacuum.laundry_room_corners,Laundry room corner cleaner
todo.pet_care_schedule,Pet care scheduler
todo.plant_watering_tracker,Plant watering tracker
todo.medication_reminders,Medication reminder list
todo.seasonal_maintenance,Seasonal maintenance checklist
todo.gift_ideas_list,Gift ideas organizer
todo.meal_planning,Weekly meal planner
todo.home_inventory,Home inventory tracker
timer.pizza_oven,Pizza oven timer
timer.espresso_machine,Espresso machine timer
timer.sprinkler_system,Sprinkler system timer
timer.pool_filter,Pool filter cycle timer
timer.dehumidifier_basement,Basement dehumidifier timer
timer.pet_feeder,Automatic pet feeder timer
timer.aquarium_lights,Aquarium lighting timer
1 device_name description
644 timer.baby_nap_timer Baby nap monitor
645 timer.tea_steeping Tea steeping countdown
646 timer.game_timer Board game timer
647 timer.morning_coffee Morning coffee brew timer
648 light.basement_bar_cool Basement Bar Cool Light
649 light.upstairs_craft_room_zigbee Upstairs Craft Room Light
650 light.downstairs_music_room_homekit Downstairs Music Room Light
651 light.front_laundry_ge Front Laundry Light
652 light.back_exercise_warm Back Exercise Warm Light
653 light.kitchen_herb_garden_cool Kitchen Herb Garden Cool Light
654 light.upstairs_meditation_zwave Upstairs Meditation Light
655 light.downstairs_pet_area_mqtt Downstairs Pet Area Light
656 light.front_entry_closet_homekit Front Entry Closet Light
657 light.back_tool_room_lifx Back Tool Room Light
658 light.garage_paint_booth_warm Garage Paint Booth Warm Light
659 light.upstairs_craft_table_zigbee Upstairs Craft Table Light
660 light.downstairs_wine_bar_homekit Downstairs Wine Bar Light
661 light.front_potting_shed_ge Front Potting Shed Light
662 light.back_aquarium_stand_warm Back Aquarium Stand Warm Light
663 blinds.conservatory Conservatory Blinds
664 blinds.morning_room Morning room blinds
665 blinds.reading_nook Reading nook blinds
666 blinds.meditation_space Meditation space blinds
667 blinds.art_studio Art studio blinds
668 blinds.music_room Music room blinds
669 blinds.wine_cellar_window Wine cellar window blinds
670 blinds.workshop_skylight Workshop skylight blinds
671 blinds.greenhouse_south South greenhouse blinds
672 blinds.library_bay_window Library bay window blinds
673 fan.wine_cellar Wine cellar fan
674 fan.art_studio Art studio fan
675 fan.mudroom Mudroom fan
676 fan.conservatory Conservatory fan
677 fan.greenhouse Greenhouse fan
678 fan.library Library fan
679 fan.music_room Music room fan
680 fan.workshop_ceiling Workshop ceiling fan
681 fan.exercise_room Exercise room fan
682 fan.craft_room Craft room fan
683 garage_door.art_studio Art studio door
684 garage_door.pool_house Pool house door
685 garage_door.equipment_storage Equipment storage door
686 garage_door.art_gallery Art gallery door
687 garage_door.pottery_studio Pottery studio door
688 garage_door.woodshop Woodshop door
689 garage_door.auto_bay_left Left auto bay door
690 garage_door.auto_bay_right Right auto bay door
691 garage_door.detached_garage Detached garage door
692 garage_door.alley_access Alley access door
693 lock.mudroom_entry Mudroom entry lock
694 lock.solarium Solarium Lock
695 lock.servants_entrance Servants entrance lock
696 lock.breezeway Breezeway Lock
697 lock.equipment_room Equipment room lock
698 lock.art_gallery Art Gallery Lock
699 lock.trophy_room Trophy room lock
700 lock.panic_room Panic Room Lock
701 lock.server_room Server room lock
702 lock.craft_closet Craft closet lock
703 lock.hvac_room HVAC room lock
704 lock.electrical_panel Electrical panel lock
705 lock.water_heater_closet Water heater closet lock
706 lock.recycling_area Recycling area lock
707 lock.pet_door_smart Smart pet door lock
708 media_player.exercise_room Exercise Room Media
709 media_player.craft_room_radio Craft Room Radio
710 media_player.greenhouse_speaker Greenhouse Speaker
711 media_player.wine_cellar_audio Wine Cellar Audio System
712 media_player.library_audiobook Library Audiobook Player
713 media_player.meditation_room Meditation Room Media
714 media_player.art_studio_spotify Art Studio Spotify Player
715 media_player.workshop_podcast Workshop Podcast Player
716 media_player.pool_house_tv Pool House Television
717 media_player.cabana_soundbar Cabana Soundbar
718 switch.pool_heater Pool Heater Switch
719 switch.fountain_pump Fountain Pump Switch
720 switch.pond_aerator Pond aerator switch
721 switch.christmas_lights Christmas lights switch
722 switch.landscape_uplighting Landscape uplighting control
723 switch.driveway_heating Driveway heating switch
724 switch.gutter_heating Gutter heating control
725 switch.hot_tub_jets Hot tub jets switch
726 switch.sauna_heater Sauna heater control
727 switch.steam_shower Steam shower switch
728 switch.towel_warmer Towel warmer control
729 switch.wine_cooler Wine cooler switch
730 switch.aquarium_filter Aquarium filter switch
731 switch.pet_fountain Pet fountain control
732 switch.bird_bath_heater Bird bath heater switch
733 climate.wine_cellar_cooling Wine Cellar Climate Control
734 climate.greenhouse_climate Greenhouse Climate System
735 climate.server_room_cooling Server Room Cooling
736 climate.art_studio_climate Art Studio Climate Control
737 climate.humidor_control Humidor Climate Control
738 vacuum.mudroom_entry Mudroom entry vacuum
739 vacuum.workshop_floor Workshop floor cleaner
740 vacuum.craft_room_helper Craft room cleaning bot
741 vacuum.wine_cellar_vac Wine cellar vacuum
742 vacuum.greenhouse_sweeper Greenhouse floor sweeper
743 vacuum.library_quiet_mode Library quiet vacuum
744 vacuum.art_studio_cleaner Art studio dust collector
745 vacuum.exercise_equipment_area Exercise equipment area cleaner
746 vacuum.pet_feeding_station Pet feeding station vacuum
747 vacuum.laundry_room_corners Laundry room corner cleaner
748 todo.pet_care_schedule Pet care scheduler
749 todo.plant_watering_tracker Plant watering tracker
750 todo.medication_reminders Medication reminder list
751 todo.seasonal_maintenance Seasonal maintenance checklist
752 todo.gift_ideas_list Gift ideas organizer
753 todo.meal_planning Weekly meal planner
754 todo.home_inventory Home inventory tracker
755 timer.pizza_oven Pizza oven timer
756 timer.espresso_machine Espresso machine timer
757 timer.sprinkler_system Sprinkler system timer
758 timer.pool_filter Pool filter cycle timer
759 timer.dehumidifier_basement Basement dehumidifier timer
760 timer.pet_feeder Automatic pet feeder timer
761 timer.aquarium_lights Aquarium lighting timer

View File

@@ -0,0 +1,125 @@
service_name,correct_device_name,correct_friendly_name,bad_device_name,phrase,error_result,retry_prompt
fan.increase_speed,fan.outdoor_kitchen,Outdoor kitchen fan,fan.outdoor_kitchen_pro,Could you increase the speed of the outdoor kitchen fan?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.outdoor_kitchen_pro', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Sure, Ill try the Outdoor kitchen fan instead."
blinds.open_cover,blinds.theater_room,Home theater blinds,blinds.theatre_room,"Open the Home theater blinds, please.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.theatre_room', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Got it, I'll try again with the correct device."
climate.turn_on,climate.carrier_cor,Carrier Cor Wi-Fi Thermostat,climate.carrier_cor_main,"Hey, could you turn on the thermostat?","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.carrier_cor_main', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Sure, I'll try again with the Carrier Cor thermostat."
vacuum.return_to_base,vacuum.greenhouse_sweeper,Greenhouse floor sweeper,vacuum.greenhouse_sweeper_pro,Please send the Greenhouse floor sweeper back to its base.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.greenhouse_sweeper_pro', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Got it, I'll use the correct vacuum now."
climate.turn_on,climate.greenhouse_climate,Greenhouse Climate System,climate.greenhouse_climatet,Please turn on the greenhouse climate system.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.greenhouse_climatet', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Got it, trying again with the correct device."
media_player.volume_down,media_player.pool_house_tv,Pool House Television,media_player.pool_house_tv_main,Could you lower the volume on the Pool House TV?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.pool_house_tv_main', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Got it, I'll try the Pool House Television."
vacuum.return_to_base,vacuum.patio_doorway_vac,Patio doorway cleaner,vacuum.patio_doorway_cleaner,Could you send the patio doorway cleaner back to its charging base?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.patio_doorway_cleaner', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Alright, I'll try with the correct device."
garage_door.open_cover,garage_door.motorcycle,Motorcycle Garage,garage_door.cyclemotor,Open the garage door cover for the motorcycle garage.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.cyclemotor', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Sure, I'll try the Motorcycle Garage instead."
garage_door.toggle,garage_door.woodshop,Woodshop door,garage_door.woodshop_main,Could you toggle the Woodshop door?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.woodshop_main', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Got it, trying the Woodshop door."
lock.unlock,lock.gym,Home Gym Lock,lock.gymnasium,"Unlock the home gym lock, please.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.gymnasium', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, let me try the Home Gym Lock."
light.turn_on,light.kitchen_island_cool,Kitchen Island Cool Light,light.kitchen_island_cooler,Turn on the kitchen island cool light.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.kitchen_island_cooler', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, I'll try the Kitchen Island Cool Light."
light.toggle,light.front_basement_homekit,Front Basement Light,light.front_basement_homekit_backup,Could you toggle the front basement light?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.front_basement_homekit_backup', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Sure, I'll try the Front Basement Light."
climate.turn_off,climate.emerson_sensi_touch,Emerson Sensi Touch Wi-Fi Thermostat,climate.emerson_sensi,Please turn off the thermostat.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.emerson_sensi', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Sure, Ill try again with the Emerson Sensi Touch thermostat."
vacuum.return_to_base,vacuum.basement_deebot,Basement deebot,vacuum.basement_deebot_v2,Please return the vacuum to its base.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.basement_deebot_v2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Sure, I'll try with the Basement Deebot."
light.toggle,light.front_entryway_homekit,Front Entryway Light,light.front_entryway_homekit_v2,Could you toggle the front entryway light?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.front_entryway_homekit_v2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, let me try the Front Entryway Light."
lock.unlock,lock.secure_storage,Secure storage lock,lock.secure_storag,Could you unlock the secure storage for me?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.secure_storag', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Sure, I'll try unlocking the Secure storage lock."
fan.turn_off,fan.living_room_center,Center living room fan,fan.living_center_room,Please turn off the living room fan.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.living_center_room', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, turning off the Center living room fan."
media_player.volume_down,media_player.workshop_podcast,Workshop Podcast Player,media_player.workshop_podcas,Could you turn the volume down on the Workshop Podcast Player?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.workshop_podcas', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, I'll try that on the correct player."
light.turn_off,light.garden_2,Garden Light,light.garden_2s,Please turn off the garden light.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.garden_2s', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Sure, turning off the Garden Light now."
vacuum.return_to_base,vacuum.pet_feeding_station,Pet feeding station vacuum,vacuum.pet_feeder_station,"Hey assistant, could you send the vacuum back to its base?","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.pet_feeder_station', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Sure, I'll try with the Pet feeding station vacuum."
garage_door.open_cover,garage_door.carport,Carport door,garage_door.carpor,"Could you open the carport door, please?","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.carpor', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Sure, I'll try that again with the right device."
garage_door.stop_cover,garage_door.two_car,Two Car Garage,garage_door.twon_car,"Hey, could you stop the garage door?","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.twon_car', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Got it, let me try that again with the correct garage door."
switch.toggle,switch.wine_cooler,Wine cooler switch,switch.wine_cooler_main,Could you turn off the wine cooler switch?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.wine_cooler_main', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Got it, I'll try the Wine cooler switch instead."
blinds.stop_cover,blinds.wine_cellar_window,Wine cellar window blinds,blinds.wine_cellar_window_cover,Please stop the wine cellar window blinds.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.wine_cellar_window_cover', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Sure, Ill try that again with the correct device."
garage_door.toggle,garage_door.auto_bay_left,Left auto bay door,garage_door.auto_bay_lft,Could you please toggle the garage door for me?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.auto_bay_lft', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Got it, I'll try the correct left auto bay door now."
media_player.turn_on,media_player.apple_tv_4k,Apple 4K Streaming Device,media_player.apple_tv_4,Turn on the Apple 4K Streaming Device.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.apple_tv_4', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Sure, I'll turn on the Apple 4K Streaming Device."
light.toggle,light.master_bedroom_2,Master Bedroom Lights,light.master_bedroom_2s,Could you toggle the Master Bedroom Lights?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.master_bedroom_2s', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Got it, trying the correct Master Bedroom Lights now."
switch.turn_off,switch.kitchen_lights,Kitchen Lights Switch,switch.kitchen_light_main,"Could you turn off the kitchen lights, please?","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.kitchen_light_main', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Sure, I'll turn off the Kitchen Lights Switch."
fan.turn_on,fan.front_porch,Front Porch Fan,fan.fron_porch,Can you turn on the front porch fan?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.fron_porch', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Sure, Ill try turning on the Front Porch Fan."
switch.turn_on,switch.front_gate_lighting,Front gate lights switch,switch.front_gate_light,"Could you turn on the front gate lights, please?","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.front_gate_light', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Sure, I'll use the Front gate lights switch instead."
fan.toggle,fan.laundry_room,Laundry room fan,fan.laundry_rm,Turn on the laundry room fan.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.laundry_rm', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Got it, trying the Laundry room fan."
media_player.media_play_pause,media_player.sonos_arc,Sonos Smart Soundbar,media_player.sonos_acr,"Hey Assistant, pause the music on the soundbar.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.sonos_acr', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Sure thing, using the Sonos Smart Soundbar now."
garage_door.open_cover,garage_door.carport,Carport door,garage_door.carport_switch,Open the carport door,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.carport_switch', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Alright, let me try the Carport door instead."
light.turn_on,light.kitchen_cabinet_warm,Kitchen Cabinet Warm Light,light.kitchen_warm_cabinet,Turn on the kitchen cabinet warm light to 53 percent brightness in blue.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.kitchen_warm_cabinet', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Got it, let me try the Kitchen Cabinet Warm Light."
garage_door.stop_cover,garage_door.art_gallery,Art gallery door,garage_door.art_gallery_main,"Stop the garage door, please.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.art_gallery_main', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Sure, Ill try again with the Art gallery door."
light.turn_off,light.above_dining_table,Dining Table Light,light.above_diningtbl,Could you turn off the dining table light?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.above_diningtbl', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, trying the Dining Table Light now."
fan.turn_on,fan.balcony,Balcony Fan,fan.balc,"Turn on the balcony fan, please.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.balc', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, I'll try turning on the Balcony Fan."
vacuum.stop,vacuum.living_room_roomba,Living room vacuum,vacuum.living_room_roomba_v2,Could you stop the living room vacuum?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.living_room_roomba_v2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, Ill try that again with the Living room vacuum."
lock.lock,lock.pool_gate,Swimming pool gate,lock.poolgate,Please lock the swimming pool gate.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.poolgate', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Sure, I'll try the correct device now."
switch.toggle,switch.driveway_heating,Driveway heating switch,switch.heating_driveway,"Turn on the driveway heating, please.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.heating_driveway', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Got it, I'll try the driveway heating switch."
fan.turn_off,fan.attic_3,Attic Fans,fan.attic_3b,Please turn off the attic fans.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.attic_3b', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, Ill try again with the correct device."
vacuum.stop,vacuum.laundry_room_corners,Laundry room corner cleaner,vacuum.laundry_room_cornrs,Please stop the vacuum in the laundry room corners.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.laundry_room_cornrs', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, I'll stop the Laundry room corner cleaner."
fan.decrease_speed,fan.study_2,Study fan,fan.study_2x,Can you decrease the speed of the study fan?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.study_2x', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Got it, Ill adjust the speed of the Study fan."
blinds.open_cover,blinds.library_bay_window,Library bay window blinds,blinds.librarybay_window,Please open the library bay window blinds.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.librarybay_window', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, I'll try that again with the correct device."
switch.toggle,switch.pet_fountain,Pet fountain control,switch.pet_fount,"Hey assistant, turn off the pet fountain.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.pet_fount', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Alright, trying the correct Pet fountain control."
fan.turn_off,fan.basement,Basement Fan,fan.base,Could you turn off the basement fan?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.base', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Sure, turning off the Basement Fan now."
lock.unlock,lock.garden_gate,Garden gate lock,lock.garden_gate_main,Could you unlock the garden gate lock?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.garden_gate_main', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Sure, Ill try unlocking the Garden gate lock."
blinds.toggle,blinds.hallway,Hallway Blinds,blinds.hallway_main,Could you toggle the hallway blinds for me?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.hallway_main', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Sure, I'll try that again with the Hallway Blinds."
garage_door.stop_cover,garage_door.golf_cart,Golf cart door,garage_door.golf_cart_v2,"Hey assistant, stop the garage door for the golf cart.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.golf_cart_v2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Got it, trying again with the Golf cart door."
media_player.volume_down,media_player.wall_mounted_tv_bedroom,Bedroom Wall-Mounted TV,media_player.wall_mounted_tv_bedr,Could you turn the volume down on the bedroom wallmounted TV?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.wall_mounted_tv_bedr', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Got it, let me try that on the correct bedroom TV."
lock.lock,lock.file_cabinet,File cabinet lock,lock.file_cabinet_main,Please lock the file cabinet.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.file_cabinet_main', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Sure, I'll try that again with the correct lock."
switch.turn_on,switch.dining_room_lights,Dining Room Lights Switch,switch.dining_room_lights_main,Could you turn on the dining room lights?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.dining_room_lights_main', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, let me try the correct Dining Room Lights Switch."
lock.unlock,lock.yale_kitchen,Yale Kitchen,lock.yale_kitch,"Hey, could you unlock the kitchen lock?","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.yale_kitch', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Got it, trying again with Yale Kitchen."
climate.turn_off,climate.art_studio_climate,Art Studio Climate Control,climate.artstudio_climat,"Hey, could you turn off the climate in the art studio?","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.artstudio_climat', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Sure, Ill use the correct Art Studio Climate Control."
blinds.open_cover,blinds.morning_room,Morning room blinds,blinds.morning_room_backup,"Hey, could you open the cover of the morning room blinds?","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.morning_room_backup', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Sure, trying again with the Morning room blinds."
fan.decrease_speed,fan.living_room_2,Living Room fan,fan.livingroom_2,Could you lower the speed of the living room fan?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.livingroom_2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Sure, decreasing the speed of the Living Room fan."
garage_door.stop_cover,garage_door.equipment_storage,Equipment storage door,garage_door.storage_equipment,Can you stop the equipment storage garage door?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.storage_equipment', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Sure, trying the Equipment storage door now."
garage_door.stop_cover,garage_door.liftmaster_2,LiftMaster,garage_door.liftmaster_2_backup,"Could you stop the garage door, please?","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.liftmaster_2_backup', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, I'll try that again with LiftMaster."
fan.turn_on,fan.study_1,Study fan,fan.studyy_1,Could you turn on the study fan?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.studyy_1', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Got it, I'll try the Study fan instead."
climate.turn_on,climate.art_studio_climate,Art Studio Climate Control,climate.artstudio_climate,"Hey assistant, turn on the climate in the art studio.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.artstudio_climate', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Sure, turning on the Art Studio Climate Control."
climate.turn_off,climate.trane_comfortlink_ii,Trane ComfortLink II XL1050,climate.trane_comfortlink_ii_backup,"Hey assistant, could you turn off the climate?","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.trane_comfortlink_ii_backup', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Got it, trying again with the correct device."
fan.turn_off,fan.ceiling_2,Ceiling Fans,fan.ceiling_two,"Turn off the ceiling fans, please.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.ceiling_two', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Sure, I'll turn off the ceiling fans now."
blinds.stop_cover,blinds.wine_cellar_window,Wine cellar window blinds,blinds.wine_cellar_wind,Stop the blinds on the wine cellar window.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.wine_cellar_wind', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Got it, trying again with the wine cellar window blinds."
fan.toggle,fan.kitchen,Kitchen Fan,fan.kitchen_main,Turn on the kitchen fan.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.kitchen_main', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Sure, trying the Kitchen Fan now."
fan.increase_speed,fan.dining_room,Dining Room Fan,fan.dine_room,Increase the speed of the fan in the dining room.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.dine_room', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, adjusting the speed of the Dining Room Fan."
blinds.toggle,blinds.wine_cellar_window,Wine cellar window blinds,blinds.wine_cellar_wind,Please lower the wine cellar window blinds.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.wine_cellar_wind', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Got it, trying again with the correct blinds.wine_cellar_window."
fan.increase_speed,fan.garage_workshop,Garage workshop fan,fan.garage_workshop_main,Could you increase the speed of the garage workshop fan?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.garage_workshop_main', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Sure, let me try that on the garage workshop fan."
vacuum.start,vacuum.dining_area_bissel,Dining area dirt remover,vacuum.bissel_dining_area,Could you start the vacuum in the dining area?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.bissel_dining_area', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Sure, I'll start the Dining area dirt remover instead."
media_player.turn_off,media_player.nintendo_switch,Nintendo Switch,media_player.nintendo_switched,Could you please turn off the Nintendo Switch?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.nintendo_switched', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Sure, I'll try turning off the Nintendo Switch."
fan.turn_off,fan.outdoor_kitchen,Outdoor kitchen fan,fan.kitchen_outdoor,Turn off the outdoor kitchen fan.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.kitchen_outdoor', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Sure, I'll try the Outdoor kitchen fan now."
light.turn_off,light.downstairs_bathroom_warm,Downstairs Bathroom Warm Light,light.bathroom_warm_downstairs,Could you turn off the downstairs bathroom warm light?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.bathroom_warm_downstairs', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, Ill switch off the Downstairs Bathroom Warm Light for you."
garage_door.open_cover,garage_door.guest,Guest Garage Door,garage_door.gues,Open the guest garage door.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.gues', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Sure, Ill open the Guest Garage Door for you."
garage_door.open_cover,garage_door.upper_level,Upper Level Garage,garage_door.upper_lvl,"Hey, could you open the garage door cover on the upper level?","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.upper_lvl', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Got it, let me try with the Upper Level Garage."
fan.turn_off,fan.mudroom,Mudroom fan,fan.mudroom_extra,Could you turn off the mudroom fan?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.mudroom_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Sure, turning off the Mudroom fan now."
media_player.volume_up,media_player.xbox_den,Den Xbox console,media_player.den_xbox,"Hey, could you increase the volume on the Xbox in the den?","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.den_xbox', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Sure, adjusting the volume on the Den Xbox console."
blinds.stop_cover,blinds.skylight,Skylight Blinds,blinds.skylite,Stop the skylight blinds.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.skylite', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Sure, I'll try that again with the Skylight Blinds."
fan.decrease_speed,fan.attic_2,Attic Fans,fan.attic2,Could you lower the speed of the attic fans?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.attic2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Sure, adjusting the speed on Attic Fans."
light.toggle,light.back_nursery_warm,Back Nursery Warm Light,light.back_nurserywarm,Could you toggle the back nursery warm light?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.back_nurserywarm', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, I'll try the correct Back Nursery Warm Light."
vacuum.stop,vacuum.master_bedroom_shark,Master bedroom vacuum,vacuum.master_shark_bedroom,"Hey, could you stop the vacuum in the master bedroom?","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.master_shark_bedroom', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Got it, I'll stop the Master bedroom vacuum now."
switch.toggle,switch.pantry_lights,Pantry Lights Switch,switch.pantry_lights_switch,Could you turn off the pantry lights?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.pantry_lights_switch', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, let me try the correct pantry lights switch."
switch.turn_on,switch.dining_room_lights,Dining Room Lights Switch,switch.dining_room_lgihts,"Turn on the dining room lights, please.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.dining_room_lgihts', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","No problem, Ill use the Dining Room Lights Switch instead."
garage_door.stop_cover,garage_door.boat,Boat Garage Door,garage_door.boat_gate,Please stop the garage door.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.boat_gate', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Got it, I'll try again with the Boat Garage Door."
light.turn_on,light.front_laundry_ge,Front Laundry Light,light.front_laundry_gear,Turn on the front laundry light to cool white.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.front_laundry_gear', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Got it, trying the Front Laundry Light now."
switch.turn_on,switch.pool_area_lighting,Pool area lighting control,switch.pool_area_lights_ctrl,Please turn on the pool area lighting.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.pool_area_lights_ctrl', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Sure, Ill try the Pool area lighting control now."
garage_door.stop_cover,garage_door.left_door,Left Garage Door,garage_door.leftdoor,Please stop the left garage door.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.leftdoor', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Got it, trying again with the left garage door."
lock.unlock,lock.den,Den Lock,lock.din,Can you unlock the den lock?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.din', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Sure, I'll try unlocking the Den Lock."
media_player.turn_on,media_player.bose_home_speaker,Bose Wireless Speaker,media_player.bose_home_sound,Could you turn on the Bose Wireless Speaker?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.bose_home_sound', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Sure, I'll try turning on the Bose Wireless Speaker."
switch.toggle,switch.sauna_heater,Sauna heater control,switch.sauna_heater_ctrl,"Could you toggle the sauna heater, please?","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.sauna_heater_ctrl', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Sure, I'll use the correct Sauna heater control."
vacuum.stop,vacuum.mudroom_entry,Mudroom entry vacuum,vacuum.entry_mudroom,Could you please stop the vacuum in the mudroom entry?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.entry_mudroom', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Sure, Ill try again with the Mudroom entry vacuum."
switch.toggle,switch.terrace_lighting,Terrace lighting control,switch.terrace_lighting_backup,Could you turn off the terrace lighting?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.terrace_lighting_backup', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Got it, I'll use the correct Terrace lighting control."
lock.lock,lock.solarium,Solarium Lock,lock.solarium_main,Could you lock the Solarium for me?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.solarium_main', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Sure, I'll try the Solarium Lock now."
media_player.volume_down,media_player.roku_bedroom,Roku Master Bedroom,media_player.roku_master_bedroom,Could you turn the volume down on Roku Master Bedroom?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.roku_master_bedroom', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Sure, adjusting the volume on Roku Master Bedroom."
media_player.turn_on,media_player.apple_tv_4k,Apple 4K Streaming Device,media_player.apple_tv_4k_livingroom,Could you turn on the Apple 4K Streaming Device?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.apple_tv_4k_livingroom', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, trying again with the Apple 4K Streaming Device."
lock.unlock,lock.tool_shed,Tool Shed Lock,lock.shed_tool,Could you unlock the tool shed lock for me?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.shed_tool', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Sure, I'll try the correct device (lock.tool_shed) now."
media_player.media_play_pause,media_player.playstation_5,Sony PS5,media_player.play_station_5,Can you pause the media on my Sony PS5?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.play_station_5', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Sure, I'll try that on Sony PS5."
media_player.turn_off,media_player.roku_living,Roku Living Room,media_player.roku_livingroom,Turn off the Roku in the living room.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.roku_livingroom', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, I'll turn off Roku Living Room instead."
vacuum.start,vacuum.living_room_roomba,Living room vacuum,vacuum.living_room_roombax,"Start the living room vacuum, please.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.living_room_roombax', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Sure, I'll start the Living room vacuum for you."
climate.turn_off,climate.zen_wifi_thermostat,Zen Thermostat WiFi Edition,climate.zen_wifith_thermostat,Could you turn off the Zen Thermostat WiFi Edition?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.zen_wifith_thermostat', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Sure, Ill turn off the thermostat now."
garage_door.toggle,garage_door.main,Main Garage Door,garage_door.main_gate,Could you toggle the garage door?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.main_gate', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Sure, I'll try that with the Main Garage Door."
blinds.stop_cover,blinds.patio,Patio Blinds,blinds.patio_cover,"Hey, stop the patio blinds.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.patio_cover', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Sure, I'll try again with the Patio Blinds."
light.toggle,light.upstairs_basement_zwave,Upstairs Basement Light,light.upstairs_basement_zwave_extra,Turn on the upstairs basement light.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.upstairs_basement_zwave_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, let me try the Upstairs Basement Light."
blinds.close_cover,blinds.bathroom,Bathroom Blinds,blinds.bathroam,"Close the bathroom blinds, please.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.bathroam', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Sure, I'll try that again with the bathroom blinds."
media_player.turn_on,media_player.xbox_one,Xbox One,media_player.xobx_one,Can you turn on the Xbox One?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.xobx_one', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Sure thing, I'll try turning on the Xbox One now."
lock.lock,lock.office,Office Lock,office.lock,Could you lock the office door for me?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='office.lock', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Sure, I'll lock the Office Lock instead."
climate.turn_on,climate.humidor_control,Humidor Climate Control,climate.humidor_ctrl,Turn on the humidor climate control.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.humidor_ctrl', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Sure, Ill use the Humidor Climate Control instead."
garage_door.close_cover,garage_door.liftmaster_2,LiftMaster,garage_door.liftmaster_2_backup,"Close the garage door, please.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.liftmaster_2_backup', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Got it, I'll try again with the LiftMaster garage door."
light.turn_on,light.front_office_mqtt,Front Office Light,light.front_offic_mqtt,Can you turn on the front office light?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.front_offic_mqtt', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Sure thing, I'll try the Front Office Light now."
switch.turn_on,switch.utility_room_lights,Utility Room Lights Switch,switch.utilityroom_lights,"Turn on the utility room lights, please.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.utilityroom_lights', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, Ill try again with the Utility Room Lights Switch."
blinds.open_cover,blinds.conservatory,Conservatory Blinds,blinds_conservatory,"Could you open the conservatory blinds, please?","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds_conservatory', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Got it, I'll try again with the Conservatory Blinds."
switch.turn_off,switch.outdoor_security_lights,Outdoor Security Lights Switch,switch.outdoor_security_lights_main,Please turn off the outdoor security lights.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.outdoor_security_lights_main', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Got it, I'll try turning off the outdoor security lights."
climate.turn_on,climate.tado_smart,Tado Smart Thermostat,climate.tado_smartplus,"Could you turn on the climate, please?","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.tado_smartplus', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Sure, I'll try again with the Tado Smart Thermostat."
lock.unlock,lock.fence_gate,Fence gate lock,lock.fenc_gate,"Could you unlock the fence gate, please?","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.fenc_gate', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Sure, Ill try again with the correct lock."
light.turn_off,light.basement_bar_cool,Basement Bar Cool Light,light.basement_bar_cooler,Could you turn off the basement bar cool light?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.basement_bar_cooler', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, I'll switch off the Basement Bar Cool Light."
lock.lock,lock.office,Office Lock,lock.offic,Please lock the office door.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.offic', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Sure, I'll try again with the Office Lock."
blinds.toggle,blinds.living_room_large,Main living room blinds,blinds.living_rm_large,Could you toggle the main living room blinds?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.living_rm_large', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Sure, Ill try again with the correct device."
vacuum.start,vacuum.front_hall_samsung,Front hall sweeping bot,vacuum.front_hall_samsunx,"Start the vacuum in the front hall, please.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.front_hall_samsunx', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, Ill try the Front hall sweeping bot."
climate.set_temperature,climate.trane_comfortlink_ii,Trane ComfortLink II XL1050,climate.trane_comfortlink_iix,Set the thermostat to <temp_f> degrees.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.trane_comfortlink_iix', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, I'll try the Trane ComfortLink II now."
vacuum.return_to_base,vacuum.greenhouse_sweeper,Greenhouse floor sweeper,vacuum.greenhouse_sweeper_pro,"Could you send the vacuum back to its base, please?","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.greenhouse_sweeper_pro', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Sure, I'll try that again with the correct device."
media_player.turn_on,media_player.harman_kardon_aura,Harman Kardon Glass Speaker,media_player.harmonkardon_aura,"Turn on the Harman Kardon Glass Speaker, please.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.harmonkardon_aura', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Sure, I'll try turning on the Harman Kardon Glass Speaker."
fan.turn_on,fan.shed,Shed fan,fan.shedroom,Can you turn on the shed fan?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.shedroom', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","No problem, Ill try again with the Shed fan."
vacuum.stop,vacuum.art_studio_cleaner,Art studio dust collector,vacuum.artstudio_cleaner,Could you stop the vacuum in the art studio?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.artstudio_cleaner', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Sure, I'll stop the Art studio dust collector."
light.turn_off,light.master_bedroom_lamp,Master Bedroom Lamp,light.master_bedroom_lamp_ctrl,Could you turn off the master bedroom lamp?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.master_bedroom_lamp_ctrl', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Sure, I'll try again with the Master Bedroom Lamp."
climate.turn_off,climate.humidor_control,Humidor Climate Control,climate.humidor_ctrl,Please turn off the humidor climate control.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.humidor_ctrl', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, trying again with the Humidor Climate Control."
vacuum.return_to_base,vacuum.workshop_floor,Workshop floor cleaner,vacuum.workshop_floors,Could you send the workshop floor cleaner back to its base?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.workshop_floors', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Got it, sending the Workshop floor cleaner back to its base."
1 service_name correct_device_name correct_friendly_name bad_device_name phrase error_result retry_prompt
2 fan.increase_speed fan.outdoor_kitchen Outdoor kitchen fan fan.outdoor_kitchen_pro Could you increase the speed of the outdoor kitchen fan? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.outdoor_kitchen_pro', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Sure, I’ll try the Outdoor kitchen fan instead.
3 blinds.open_cover blinds.theater_room Home theater blinds blinds.theatre_room Open the Home theater blinds, please. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.theatre_room', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Got it, I'll try again with the correct device.
4 climate.turn_on climate.carrier_cor Carrier Cor Wi-Fi Thermostat climate.carrier_cor_main Hey, could you turn on the thermostat? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.carrier_cor_main', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Sure, I'll try again with the Carrier Cor thermostat.
5 vacuum.return_to_base vacuum.greenhouse_sweeper Greenhouse floor sweeper vacuum.greenhouse_sweeper_pro Please send the Greenhouse floor sweeper back to its base. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.greenhouse_sweeper_pro', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Got it, I'll use the correct vacuum now.
6 climate.turn_on climate.greenhouse_climate Greenhouse Climate System climate.greenhouse_climatet Please turn on the greenhouse climate system. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.greenhouse_climatet', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Got it, trying again with the correct device.
7 media_player.volume_down media_player.pool_house_tv Pool House Television media_player.pool_house_tv_main Could you lower the volume on the Pool House TV? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.pool_house_tv_main', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Got it, I'll try the Pool House Television.
8 vacuum.return_to_base vacuum.patio_doorway_vac Patio doorway cleaner vacuum.patio_doorway_cleaner Could you send the patio doorway cleaner back to its charging base? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.patio_doorway_cleaner', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Alright, I'll try with the correct device.
9 garage_door.open_cover garage_door.motorcycle Motorcycle Garage garage_door.cyclemotor Open the garage door cover for the motorcycle garage. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.cyclemotor', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Sure, I'll try the Motorcycle Garage instead.
10 garage_door.toggle garage_door.woodshop Woodshop door garage_door.woodshop_main Could you toggle the Woodshop door? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.woodshop_main', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Got it, trying the Woodshop door.
11 lock.unlock lock.gym Home Gym Lock lock.gymnasium Unlock the home gym lock, please. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.gymnasium', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, let me try the Home Gym Lock.
12 light.turn_on light.kitchen_island_cool Kitchen Island Cool Light light.kitchen_island_cooler Turn on the kitchen island cool light. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.kitchen_island_cooler', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, I'll try the Kitchen Island Cool Light.
13 light.toggle light.front_basement_homekit Front Basement Light light.front_basement_homekit_backup Could you toggle the front basement light? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.front_basement_homekit_backup', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Sure, I'll try the Front Basement Light.
14 climate.turn_off climate.emerson_sensi_touch Emerson Sensi Touch Wi-Fi Thermostat climate.emerson_sensi Please turn off the thermostat. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.emerson_sensi', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Sure, I’ll try again with the Emerson Sensi Touch thermostat.
15 vacuum.return_to_base vacuum.basement_deebot Basement deebot vacuum.basement_deebot_v2 Please return the vacuum to its base. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.basement_deebot_v2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Sure, I'll try with the Basement Deebot.
16 light.toggle light.front_entryway_homekit Front Entryway Light light.front_entryway_homekit_v2 Could you toggle the front entryway light? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.front_entryway_homekit_v2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, let me try the Front Entryway Light.
17 lock.unlock lock.secure_storage Secure storage lock lock.secure_storag Could you unlock the secure storage for me? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.secure_storag', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Sure, I'll try unlocking the Secure storage lock.
18 fan.turn_off fan.living_room_center Center living room fan fan.living_center_room Please turn off the living room fan. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.living_center_room', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, turning off the Center living room fan.
19 media_player.volume_down media_player.workshop_podcast Workshop Podcast Player media_player.workshop_podcas Could you turn the volume down on the Workshop Podcast Player? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.workshop_podcas', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, I'll try that on the correct player.
20 light.turn_off light.garden_2 Garden Light light.garden_2s Please turn off the garden light. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.garden_2s', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Sure, turning off the Garden Light now.
21 vacuum.return_to_base vacuum.pet_feeding_station Pet feeding station vacuum vacuum.pet_feeder_station Hey assistant, could you send the vacuum back to its base? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.pet_feeder_station', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Sure, I'll try with the Pet feeding station vacuum.
22 garage_door.open_cover garage_door.carport Carport door garage_door.carpor Could you open the carport door, please? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.carpor', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Sure, I'll try that again with the right device.
23 garage_door.stop_cover garage_door.two_car Two Car Garage garage_door.twon_car Hey, could you stop the garage door? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.twon_car', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Got it, let me try that again with the correct garage door.
24 switch.toggle switch.wine_cooler Wine cooler switch switch.wine_cooler_main Could you turn off the wine cooler switch? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.wine_cooler_main', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Got it, I'll try the Wine cooler switch instead.
25 blinds.stop_cover blinds.wine_cellar_window Wine cellar window blinds blinds.wine_cellar_window_cover Please stop the wine cellar window blinds. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.wine_cellar_window_cover', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Sure, I’ll try that again with the correct device.
26 garage_door.toggle garage_door.auto_bay_left Left auto bay door garage_door.auto_bay_lft Could you please toggle the garage door for me? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.auto_bay_lft', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Got it, I'll try the correct left auto bay door now.
27 media_player.turn_on media_player.apple_tv_4k Apple 4K Streaming Device media_player.apple_tv_4 Turn on the Apple 4K Streaming Device. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.apple_tv_4', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Sure, I'll turn on the Apple 4K Streaming Device.
28 light.toggle light.master_bedroom_2 Master Bedroom Lights light.master_bedroom_2s Could you toggle the Master Bedroom Lights? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.master_bedroom_2s', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Got it, trying the correct Master Bedroom Lights now.
29 switch.turn_off switch.kitchen_lights Kitchen Lights Switch switch.kitchen_light_main Could you turn off the kitchen lights, please? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.kitchen_light_main', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Sure, I'll turn off the Kitchen Lights Switch.
30 fan.turn_on fan.front_porch Front Porch Fan fan.fron_porch Can you turn on the front porch fan? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.fron_porch', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Sure, I’ll try turning on the Front Porch Fan.
31 switch.turn_on switch.front_gate_lighting Front gate lights switch switch.front_gate_light Could you turn on the front gate lights, please? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.front_gate_light', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Sure, I'll use the Front gate lights switch instead.
32 fan.toggle fan.laundry_room Laundry room fan fan.laundry_rm Turn on the laundry room fan. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.laundry_rm', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Got it, trying the Laundry room fan.
33 media_player.media_play_pause media_player.sonos_arc Sonos Smart Soundbar media_player.sonos_acr Hey Assistant, pause the music on the soundbar. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.sonos_acr', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Sure thing, using the Sonos Smart Soundbar now.
34 garage_door.open_cover garage_door.carport Carport door garage_door.carport_switch Open the carport door <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.carport_switch', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Alright, let me try the Carport door instead.
35 light.turn_on light.kitchen_cabinet_warm Kitchen Cabinet Warm Light light.kitchen_warm_cabinet Turn on the kitchen cabinet warm light to 53 percent brightness in blue. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.kitchen_warm_cabinet', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Got it, let me try the Kitchen Cabinet Warm Light.
36 garage_door.stop_cover garage_door.art_gallery Art gallery door garage_door.art_gallery_main Stop the garage door, please. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.art_gallery_main', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Sure, I’ll try again with the Art gallery door.
37 light.turn_off light.above_dining_table Dining Table Light light.above_diningtbl Could you turn off the dining table light? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.above_diningtbl', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, trying the Dining Table Light now.
38 fan.turn_on fan.balcony Balcony Fan fan.balc Turn on the balcony fan, please. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.balc', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, I'll try turning on the Balcony Fan.
39 vacuum.stop vacuum.living_room_roomba Living room vacuum vacuum.living_room_roomba_v2 Could you stop the living room vacuum? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.living_room_roomba_v2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, I’ll try that again with the Living room vacuum.
40 lock.lock lock.pool_gate Swimming pool gate lock.poolgate Please lock the swimming pool gate. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.poolgate', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Sure, I'll try the correct device now.
41 switch.toggle switch.driveway_heating Driveway heating switch switch.heating_driveway Turn on the driveway heating, please. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.heating_driveway', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Got it, I'll try the driveway heating switch.
42 fan.turn_off fan.attic_3 Attic Fans fan.attic_3b Please turn off the attic fans. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.attic_3b', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, I’ll try again with the correct device.
43 vacuum.stop vacuum.laundry_room_corners Laundry room corner cleaner vacuum.laundry_room_cornrs Please stop the vacuum in the laundry room corners. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.laundry_room_cornrs', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, I'll stop the Laundry room corner cleaner.
44 fan.decrease_speed fan.study_2 Study fan fan.study_2x Can you decrease the speed of the study fan? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.study_2x', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Got it, I’ll adjust the speed of the Study fan.
45 blinds.open_cover blinds.library_bay_window Library bay window blinds blinds.librarybay_window Please open the library bay window blinds. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.librarybay_window', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, I'll try that again with the correct device.
46 switch.toggle switch.pet_fountain Pet fountain control switch.pet_fount Hey assistant, turn off the pet fountain. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.pet_fount', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Alright, trying the correct Pet fountain control.
47 fan.turn_off fan.basement Basement Fan fan.base Could you turn off the basement fan? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.base', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Sure, turning off the Basement Fan now.
48 lock.unlock lock.garden_gate Garden gate lock lock.garden_gate_main Could you unlock the garden gate lock? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.garden_gate_main', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Sure, I’ll try unlocking the Garden gate lock.
49 blinds.toggle blinds.hallway Hallway Blinds blinds.hallway_main Could you toggle the hallway blinds for me? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.hallway_main', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Sure, I'll try that again with the Hallway Blinds.
50 garage_door.stop_cover garage_door.golf_cart Golf cart door garage_door.golf_cart_v2 Hey assistant, stop the garage door for the golf cart. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.golf_cart_v2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Got it, trying again with the Golf cart door.
51 media_player.volume_down media_player.wall_mounted_tv_bedroom Bedroom Wall-Mounted TV media_player.wall_mounted_tv_bedr Could you turn the volume down on the bedroom wall‑mounted TV? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.wall_mounted_tv_bedr', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Got it, let me try that on the correct bedroom TV.
52 lock.lock lock.file_cabinet File cabinet lock lock.file_cabinet_main Please lock the file cabinet. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.file_cabinet_main', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Sure, I'll try that again with the correct lock.
53 switch.turn_on switch.dining_room_lights Dining Room Lights Switch switch.dining_room_lights_main Could you turn on the dining room lights? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.dining_room_lights_main', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, let me try the correct Dining Room Lights Switch.
54 lock.unlock lock.yale_kitchen Yale Kitchen lock.yale_kitch Hey, could you unlock the kitchen lock? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.yale_kitch', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Got it, trying again with Yale Kitchen.
55 climate.turn_off climate.art_studio_climate Art Studio Climate Control climate.artstudio_climat Hey, could you turn off the climate in the art studio? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.artstudio_climat', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Sure, I’ll use the correct Art Studio Climate Control.
56 blinds.open_cover blinds.morning_room Morning room blinds blinds.morning_room_backup Hey, could you open the cover of the morning room blinds? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.morning_room_backup', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Sure, trying again with the Morning room blinds.
57 fan.decrease_speed fan.living_room_2 Living Room fan fan.livingroom_2 Could you lower the speed of the living room fan? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.livingroom_2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Sure, decreasing the speed of the Living Room fan.
58 garage_door.stop_cover garage_door.equipment_storage Equipment storage door garage_door.storage_equipment Can you stop the equipment storage garage door? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.storage_equipment', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Sure, trying the Equipment storage door now.
59 garage_door.stop_cover garage_door.liftmaster_2 LiftMaster garage_door.liftmaster_2_backup Could you stop the garage door, please? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.liftmaster_2_backup', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, I'll try that again with LiftMaster.
60 fan.turn_on fan.study_1 Study fan fan.studyy_1 Could you turn on the study fan? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.studyy_1', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Got it, I'll try the Study fan instead.
61 climate.turn_on climate.art_studio_climate Art Studio Climate Control climate.artstudio_climate Hey assistant, turn on the climate in the art studio. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.artstudio_climate', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Sure, turning on the Art Studio Climate Control.
62 climate.turn_off climate.trane_comfortlink_ii Trane ComfortLink II XL1050 climate.trane_comfortlink_ii_backup Hey assistant, could you turn off the climate? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.trane_comfortlink_ii_backup', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Got it, trying again with the correct device.
63 fan.turn_off fan.ceiling_2 Ceiling Fans fan.ceiling_two Turn off the ceiling fans, please. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.ceiling_two', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Sure, I'll turn off the ceiling fans now.
64 blinds.stop_cover blinds.wine_cellar_window Wine cellar window blinds blinds.wine_cellar_wind Stop the blinds on the wine cellar window. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.wine_cellar_wind', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Got it, trying again with the wine cellar window blinds.
65 fan.toggle fan.kitchen Kitchen Fan fan.kitchen_main Turn on the kitchen fan. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.kitchen_main', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Sure, trying the Kitchen Fan now.
66 fan.increase_speed fan.dining_room Dining Room Fan fan.dine_room Increase the speed of the fan in the dining room. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.dine_room', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, adjusting the speed of the Dining Room Fan.
67 blinds.toggle blinds.wine_cellar_window Wine cellar window blinds blinds.wine_cellar_wind Please lower the wine cellar window blinds. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.wine_cellar_wind', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Got it, trying again with the correct blinds.wine_cellar_window.
68 fan.increase_speed fan.garage_workshop Garage workshop fan fan.garage_workshop_main Could you increase the speed of the garage workshop fan? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.garage_workshop_main', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Sure, let me try that on the garage workshop fan.
69 vacuum.start vacuum.dining_area_bissel Dining area dirt remover vacuum.bissel_dining_area Could you start the vacuum in the dining area? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.bissel_dining_area', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Sure, I'll start the Dining area dirt remover instead.
70 media_player.turn_off media_player.nintendo_switch Nintendo Switch media_player.nintendo_switched Could you please turn off the Nintendo Switch? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.nintendo_switched', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Sure, I'll try turning off the Nintendo Switch.
71 fan.turn_off fan.outdoor_kitchen Outdoor kitchen fan fan.kitchen_outdoor Turn off the outdoor kitchen fan. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.kitchen_outdoor', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Sure, I'll try the Outdoor kitchen fan now.
72 light.turn_off light.downstairs_bathroom_warm Downstairs Bathroom Warm Light light.bathroom_warm_downstairs Could you turn off the downstairs bathroom warm light? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.bathroom_warm_downstairs', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, I’ll switch off the Downstairs Bathroom Warm Light for you.
73 garage_door.open_cover garage_door.guest Guest Garage Door garage_door.gues Open the guest garage door. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.gues', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Sure, I’ll open the Guest Garage Door for you.
74 garage_door.open_cover garage_door.upper_level Upper Level Garage garage_door.upper_lvl Hey, could you open the garage door cover on the upper level? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.upper_lvl', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Got it, let me try with the Upper Level Garage.
75 fan.turn_off fan.mudroom Mudroom fan fan.mudroom_extra Could you turn off the mudroom fan? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.mudroom_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Sure, turning off the Mudroom fan now.
76 media_player.volume_up media_player.xbox_den Den Xbox console media_player.den_xbox Hey, could you increase the volume on the Xbox in the den? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.den_xbox', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Sure, adjusting the volume on the Den Xbox console.
77 blinds.stop_cover blinds.skylight Skylight Blinds blinds.skylite Stop the skylight blinds. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.skylite', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Sure, I'll try that again with the Skylight Blinds.
78 fan.decrease_speed fan.attic_2 Attic Fans fan.attic2 Could you lower the speed of the attic fans? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.attic2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Sure, adjusting the speed on Attic Fans.
79 light.toggle light.back_nursery_warm Back Nursery Warm Light light.back_nurserywarm Could you toggle the back nursery warm light? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.back_nurserywarm', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, I'll try the correct Back Nursery Warm Light.
80 vacuum.stop vacuum.master_bedroom_shark Master bedroom vacuum vacuum.master_shark_bedroom Hey, could you stop the vacuum in the master bedroom? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.master_shark_bedroom', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Got it, I'll stop the Master bedroom vacuum now.
81 switch.toggle switch.pantry_lights Pantry Lights Switch switch.pantry_lights_switch Could you turn off the pantry lights? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.pantry_lights_switch', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, let me try the correct pantry lights switch.
82 switch.turn_on switch.dining_room_lights Dining Room Lights Switch switch.dining_room_lgihts Turn on the dining room lights, please. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.dining_room_lgihts', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> No problem, I’ll use the Dining Room Lights Switch instead.
83 garage_door.stop_cover garage_door.boat Boat Garage Door garage_door.boat_gate Please stop the garage door. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.boat_gate', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Got it, I'll try again with the Boat Garage Door.
84 light.turn_on light.front_laundry_ge Front Laundry Light light.front_laundry_gear Turn on the front laundry light to cool white. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.front_laundry_gear', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Got it, trying the Front Laundry Light now.
85 switch.turn_on switch.pool_area_lighting Pool area lighting control switch.pool_area_lights_ctrl Please turn on the pool area lighting. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.pool_area_lights_ctrl', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Sure, I’ll try the Pool area lighting control now.
86 garage_door.stop_cover garage_door.left_door Left Garage Door garage_door.leftdoor Please stop the left garage door. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.leftdoor', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Got it, trying again with the left garage door.
87 lock.unlock lock.den Den Lock lock.din Can you unlock the den lock? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.din', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Sure, I'll try unlocking the Den Lock.
88 media_player.turn_on media_player.bose_home_speaker Bose Wireless Speaker media_player.bose_home_sound Could you turn on the Bose Wireless Speaker? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.bose_home_sound', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Sure, I'll try turning on the Bose Wireless Speaker.
89 switch.toggle switch.sauna_heater Sauna heater control switch.sauna_heater_ctrl Could you toggle the sauna heater, please? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.sauna_heater_ctrl', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Sure, I'll use the correct Sauna heater control.
90 vacuum.stop vacuum.mudroom_entry Mudroom entry vacuum vacuum.entry_mudroom Could you please stop the vacuum in the mudroom entry? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.entry_mudroom', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Sure, I’ll try again with the Mudroom entry vacuum.
91 switch.toggle switch.terrace_lighting Terrace lighting control switch.terrace_lighting_backup Could you turn off the terrace lighting? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.terrace_lighting_backup', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Got it, I'll use the correct Terrace lighting control.
92 lock.lock lock.solarium Solarium Lock lock.solarium_main Could you lock the Solarium for me? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.solarium_main', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Sure, I'll try the Solarium Lock now.
93 media_player.volume_down media_player.roku_bedroom Roku Master Bedroom media_player.roku_master_bedroom Could you turn the volume down on Roku Master Bedroom? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.roku_master_bedroom', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Sure, adjusting the volume on Roku Master Bedroom.
94 media_player.turn_on media_player.apple_tv_4k Apple 4K Streaming Device media_player.apple_tv_4k_livingroom Could you turn on the Apple 4K Streaming Device? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.apple_tv_4k_livingroom', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, trying again with the Apple 4K Streaming Device.
95 lock.unlock lock.tool_shed Tool Shed Lock lock.shed_tool Could you unlock the tool shed lock for me? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.shed_tool', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Sure, I'll try the correct device (lock.tool_shed) now.
96 media_player.media_play_pause media_player.playstation_5 Sony PS5 media_player.play_station_5 Can you pause the media on my Sony PS5? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.play_station_5', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Sure, I'll try that on Sony PS5.
97 media_player.turn_off media_player.roku_living Roku Living Room media_player.roku_livingroom Turn off the Roku in the living room. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.roku_livingroom', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, I'll turn off Roku Living Room instead.
98 vacuum.start vacuum.living_room_roomba Living room vacuum vacuum.living_room_roombax Start the living room vacuum, please. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.living_room_roombax', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Sure, I'll start the Living room vacuum for you.
99 climate.turn_off climate.zen_wifi_thermostat Zen Thermostat WiFi Edition climate.zen_wifith_thermostat Could you turn off the Zen Thermostat WiFi Edition? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.zen_wifith_thermostat', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Sure, I’ll turn off the thermostat now.
100 garage_door.toggle garage_door.main Main Garage Door garage_door.main_gate Could you toggle the garage door? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.main_gate', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Sure, I'll try that with the Main Garage Door.
101 blinds.stop_cover blinds.patio Patio Blinds blinds.patio_cover Hey, stop the patio blinds. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.patio_cover', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Sure, I'll try again with the Patio Blinds.
102 light.toggle light.upstairs_basement_zwave Upstairs Basement Light light.upstairs_basement_zwave_extra Turn on the upstairs basement light. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.upstairs_basement_zwave_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, let me try the Upstairs Basement Light.
103 blinds.close_cover blinds.bathroom Bathroom Blinds blinds.bathroam Close the bathroom blinds, please. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.bathroam', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Sure, I'll try that again with the bathroom blinds.
104 media_player.turn_on media_player.xbox_one Xbox One media_player.xobx_one Can you turn on the Xbox One? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.xobx_one', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Sure thing, I'll try turning on the Xbox One now.
105 lock.lock lock.office Office Lock office.lock Could you lock the office door for me? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='office.lock', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Sure, I'll lock the Office Lock instead.
106 climate.turn_on climate.humidor_control Humidor Climate Control climate.humidor_ctrl Turn on the humidor climate control. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.humidor_ctrl', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Sure, I’ll use the Humidor Climate Control instead.
107 garage_door.close_cover garage_door.liftmaster_2 LiftMaster garage_door.liftmaster_2_backup Close the garage door, please. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.liftmaster_2_backup', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Got it, I'll try again with the LiftMaster garage door.
108 light.turn_on light.front_office_mqtt Front Office Light light.front_offic_mqtt Can you turn on the front office light? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.front_offic_mqtt', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Sure thing, I'll try the Front Office Light now.
109 switch.turn_on switch.utility_room_lights Utility Room Lights Switch switch.utilityroom_lights Turn on the utility room lights, please. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.utilityroom_lights', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, I’ll try again with the Utility Room Lights Switch.
110 blinds.open_cover blinds.conservatory Conservatory Blinds blinds_conservatory Could you open the conservatory blinds, please? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds_conservatory', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Got it, I'll try again with the Conservatory Blinds.
111 switch.turn_off switch.outdoor_security_lights Outdoor Security Lights Switch switch.outdoor_security_lights_main Please turn off the outdoor security lights. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.outdoor_security_lights_main', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Got it, I'll try turning off the outdoor security lights.
112 climate.turn_on climate.tado_smart Tado Smart Thermostat climate.tado_smartplus Could you turn on the climate, please? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.tado_smartplus', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Sure, I'll try again with the Tado Smart Thermostat.
113 lock.unlock lock.fence_gate Fence gate lock lock.fenc_gate Could you unlock the fence gate, please? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.fenc_gate', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Sure, I’ll try again with the correct lock.
114 light.turn_off light.basement_bar_cool Basement Bar Cool Light light.basement_bar_cooler Could you turn off the basement bar cool light? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.basement_bar_cooler', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, I'll switch off the Basement Bar Cool Light.
115 lock.lock lock.office Office Lock lock.offic Please lock the office door. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.offic', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Sure, I'll try again with the Office Lock.
116 blinds.toggle blinds.living_room_large Main living room blinds blinds.living_rm_large Could you toggle the main living room blinds? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.living_rm_large', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Sure, I’ll try again with the correct device.
117 vacuum.start vacuum.front_hall_samsung Front hall sweeping bot vacuum.front_hall_samsunx Start the vacuum in the front hall, please. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.front_hall_samsunx', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, I’ll try the Front hall sweeping bot.
118 climate.set_temperature climate.trane_comfortlink_ii Trane ComfortLink II XL1050 climate.trane_comfortlink_iix Set the thermostat to <temp_f> degrees. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.trane_comfortlink_iix', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, I'll try the Trane ComfortLink II now.
119 vacuum.return_to_base vacuum.greenhouse_sweeper Greenhouse floor sweeper vacuum.greenhouse_sweeper_pro Could you send the vacuum back to its base, please? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.greenhouse_sweeper_pro', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Sure, I'll try that again with the correct device.
120 media_player.turn_on media_player.harman_kardon_aura Harman Kardon Glass Speaker media_player.harmonkardon_aura Turn on the Harman Kardon Glass Speaker, please. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.harmonkardon_aura', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Sure, I'll try turning on the Harman Kardon Glass Speaker.
121 fan.turn_on fan.shed Shed fan fan.shedroom Can you turn on the shed fan? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.shedroom', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> No problem, I’ll try again with the Shed fan.
122 vacuum.stop vacuum.art_studio_cleaner Art studio dust collector vacuum.artstudio_cleaner Could you stop the vacuum in the art studio? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.artstudio_cleaner', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Sure, I'll stop the Art studio dust collector.
123 light.turn_off light.master_bedroom_lamp Master Bedroom Lamp light.master_bedroom_lamp_ctrl Could you turn off the master bedroom lamp? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.master_bedroom_lamp_ctrl', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Sure, I'll try again with the Master Bedroom Lamp.
124 climate.turn_off climate.humidor_control Humidor Climate Control climate.humidor_ctrl Please turn off the humidor climate control. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.humidor_ctrl', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, trying again with the Humidor Climate Control.
125 vacuum.return_to_base vacuum.workshop_floor Workshop floor cleaner vacuum.workshop_floors Could you send the workshop floor cleaner back to its base? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.workshop_floors', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Got it, sending the Workshop floor cleaner back to its base.

View File

@@ -0,0 +1,124 @@
reason_type,service_name,device_name,friendly_name,desired_state,phrase,response
not_available,lock.lock,back_door,Back Door Lock,,"Lock the <device_name>.","I can't find a back door lock to control."
already_state,light.turn_on,hallway,Hallway Lights,on,"Turn on the <device_name>.","The hallway lights are already on."
already_state,switch.turn_off,garage,Garage Outlet,off,"Turn off the <device_name>.","The garage outlet is already off."
not_available,blinds.close_cover,sunroom,Sunroom Blinds,,Close the <device_name> blinds,"Im sorry, but I cant locate that device in your home."
not_available,light.turn_on,downstairs_livingroom_lifx,Downstairs Living Room Light,,turn on the <device_name> with color blue,"Im sorry, I cant locate that device in your home."
already_state,media_player.media_play_pause,sonos_beam,Sonos Compact Soundbar,playing,Pause <device_name>,"It's already playing, so there's nothing to change."
not_available,media_player.volume_up,playstation_5,Sony PS5,,Increase the volume of <device_name>,"Im sorry, I cant locate <device_name> in your home."
not_available,fan.turn_on,bathroom,Bathroom Fan,,Turn on the <device_name>.,"Im sorry, I cant locate that device in your home."
not_available,light.toggle,garden,Garden Light,,Toggle <device_name>,"Sorry, I can't locate that device in your home."
not_available,media_player.volume_up,roku_living,Roku Living Room,,Turn up the volume on <device_name>,"Im sorry, I cant find <device_name> in your home, so I cant adjust its volume."
not_available,garage_door.open_cover,side_2,Side garage door,,Open the <device_name>.,"Im sorry, but I cant locate a <device_name> in your home to open."
already_state,light.turn_off,front_tv_room_ge,Front TV Room Light,off,Turn off the <device_name>,"The <device_name> is already off, so there's nothing to change."
not_available,garage_door.stop_cover,golf_cart,Golf Cart Garage,,Stop the <device_name>,"Im sorry, I cant find that device in your home."
not_available,lock.lock,playroom,Playroom Lock,,Lock the <device_name>,"Im sorry, I cant find that lock in your home."
not_available,fan.decrease_speed,kitchen_island,Cooling kitchen fan,,Decrease the speed of the <device_name>,"Sorry, I couldn't locate that fan in your home."
already_state,switch.turn_off,pantry_lights,Pantry Lights Switch,off,Turn off the <device_name>.,"Sorry, the <device_name> is already off, so there's nothing to change."
not_available,vacuum.stop,dining_area_bissel,Dining area dirt remover,,stop the <device_name>,"Im sorry, I cant locate that device in your home."
not_available,fan.turn_on,dyson_pure,Dyson Pure Fan,,Turn on the <device_name>.,"Im sorry, I cant locate a <device_name> in your home."
already_state,climate.turn_off,trane_comfortlink_ii,Trane ComfortLink II XL1050,off,Turn off the <device_name>,"Sorry, the <device_name> is already off, so there's nothing to change."
not_available,garage_door.open_cover,boat,Boat storage door,,Open the <device_name> cover,"Im sorry, I cant locate that device in your home."
already_state,light.turn_off,office_1,Office Light,off,Turn off the <device_name>,"The <device_name> is already off, so there's nothing to change."
already_state,lock.unlock,secure_storage,Secure storage lock,unlocked,Unlock the <device_name>,"Sorry, the <device_name> is already unlocked, so there's nothing to do."
not_available,fan.turn_on,office,Office Fan,,Turn on the <device_name>,"Im sorry, I cant locate a <device_name> in your home."
not_available,light.turn_on,patio,Patio Light,,turn on the <device_name>,"Im sorry, but I cant locate that device in your home."
not_available,switch.toggle,fountain_pump,Fountain Pump Switch,,Toggle the <device_name>,"Im sorry, but I cant locate that device in your home."
not_available,climate.set_temperature,ecobee_smart,Ecobee SmartThermostat,,Set the temperature of <device_name> to 25 degrees.,"Im sorry, but I cant locate that device in your home."
not_available,garage_door.open_cover,basement,Basement Garage Door,,Open the <device_name> cover,"I'm sorry, but I can't find that device in your home."
not_available,switch.toggle,pond_aerator,Pond aerator switch,,Toggle the <device_name>,"Im sorry, I cant locate the <device_name> in your home."
not_available,climate.turn_off,humidor_control,Humidor Climate Control,,Turn off the <device_name>.,"Im sorry, but I cant locate that device in your home."
already_state,media_player.media_play_pause,home_theater_system_living_room,Living Room Home Theater,playing,Pause <device_name>,"Sorry, <device_name> is already playing, so no change is needed."
not_available,blinds.close_cover,kids_room,Kids' room blinds,,Close the <device_name> blinds,"Im sorry, but I cant locate that device in your home."
not_available,vacuum.start,smart_home_automator,Smart home cleaning bot,,Start the <device_name>.,"Im sorry, but I cant find that device in your home."
not_available,media_player.volume_up,backyard_outdoor_projector,Backyard Projector,,Increase the volume of <device_name>,"Im sorry, I cant locate <device_name> in your home."
not_available,lock.lock,garage,Garage Door Lock,,Lock the <device_name>.,"Im sorry, but I cant find that device in your home."
not_available,climate.turn_on,emerson_sensi_touch,Emerson Sensi Touch Wi-Fi Thermostat,,turn on the <device_name>,"Im sorry, I cant locate that device in your home."
not_available,fan.toggle,patio,Patio Fan,,Toggle the <device_name>,"Im sorry, I cant locate that fan in your home."
not_available,vacuum.return_to_base,downstairs_guest_room,Downstairs guest room vac,,Return <device_name> to its base,"Im sorry, but I cant locate that device in the home right now."
not_available,fan.toggle,kids_room,Kids' room fan,,Toggle the <device_name>,"Im sorry, I cant locate that device in your home."
not_available,climate.set_temperature,ecobee_smart,Ecobee SmartThermostat,,Set the temperature of <device_name> to 20 degrees.,"Im sorry, I cant locate <device_name> in your home, so Im unable to set the temperature."
already_state,blinds.close_cover,conservatory,Conservatory Blinds,closed,Close the <device_name> blinds,"The <device_name> is already closed, so there's nothing to change."
already_state,media_player.turn_off,epson_home_cinema,Epson Video Projector,off,Turn off <device_name>,"Sorry, <device_name> is already off, so there's nothing to do."
not_available,fan.turn_on,office,Office Fan,,Turn on the <device_name>.,"Im sorry, I cant locate that device in your home."
not_available,vacuum.start,wine_cellar_vac,Wine cellar vacuum,,Start the <device_name>,"Im sorry, I cant locate that device in your home."
not_available,switch.toggle,sunroom_lights,Sunroom Lights Switch,,Toggle the <device_name>,"Im sorry, I cant locate that device in your home."
not_available,vacuum.stop,workshop_floor,Workshop floor cleaner,,"Hey assistant, please stop the <device_name>.","Im sorry, but I cant locate that device in your home."
not_available,garage_door.toggle,chamberlain_2,Chamberlain,,Toggle the <device_name>.,"Im sorry, I cant locate a <device_name> in your home to toggle."
not_available,climate.turn_on,kono_thermostat,Kono Smart Thermostat,,Turn on the <device_name> climate,"Im sorry, I cant locate a <device_name> in your home."
not_available,climate.set_temperature,greenhouse_climate,Greenhouse Climate System,,Set the temperature of <device_name> to 26 degrees,"Im sorry, I cant locate that device in your home."
not_available,vacuum.return_to_base,back_deck_sweeper,Back deck area cleaner,,Return <device_name> to its base,"Im sorry, but I cant find that device in the home right now."
not_available,climate.set_temperature,humidor_control,Humidor Climate Control,,Set the temperature of <device_name> to 18 degrees,"I'm sorry, I can't locate <device_name> in your home."
not_available,garage_door.stop_cover,golf_cart,Golf cart door,,stop the <device_name>,"Im sorry, I cant locate that device in your home."
not_available,blinds.toggle,morning_room,Morning room blinds,,Toggle the <device_name> blinds,"Im sorry, but I cant locate that blind in your home."
already_state,fan.turn_off,outdoor_kitchen,Outdoor kitchen fan,off,Turn off the <device_name>,"Sorry, the <device_name> is already off, so there's nothing to change."
not_available,fan.increase_speed,laundry_room,Laundry room fan,,Increase the speed of the <device_name>.,"Im sorry, I cant locate that fan in your home."
not_available,switch.turn_off,warehouse_lights,Warehouse Lights Switch,,Turn off the <device_name>,"I'm sorry, I couldn't locate the <device_name> in your home."
not_available,fan.turn_off,master_bath,Master bathroom fan,,Turn off the <device_name>,"Im sorry, I cant locate that fan in your home."
not_available,garage_door.close_cover,carport,Carport Garage Door,,Close the <device_name> cover,"Im sorry, but I cant locate a <device_name> in your home to close."
not_available,switch.toggle,gutter_heating,Gutter heating control,,Toggle the <device_name> switch,"Im sorry, but I cant locate a device named <device_name> in your home."
not_available,fan.decrease_speed,outdoor_kitchen,Outdoor kitchen fan,,Decrease the speed of <device_name>,"Im sorry, I cant locate that fan in your home."
already_state,lock.lock,office,Office Lock,locked,Lock the <device_name>.,"Sorry, the <device_name> is already locked, so there's nothing to change."
not_available,lock.lock,utility_room,Utility room lock,,Lock the <device_name>,"I'm sorry, I can't locate that device in your home."
already_state,switch.turn_on,deck_lights,Deck Lighting Switch,on,Turn on the <device_name>.,"Sorry, the <device_name> is already on, so there's nothing to change."
already_state,light.turn_on,master_bedroom_1,Master Bedroom Lights,on,turn on <device_name> to 51% brightness,"The light is already on at that level, so there's nothing to change."
not_available,light.turn_on,office_desk,Office Desk Light,,Turn on the <device_name> light to green,"Im sorry, but I cant locate that device in your home."
not_available,switch.toggle,master_bedroom_lights,Master Bedroom Lights Switch,,Toggle the <device_name>,"Im sorry, I cant find that device in your home."
not_available,light.toggle,philips_hue_2,Philips Hue,,Toggle the <device_name>,"Im sorry, but I cant locate that device in your home."
already_state,light.turn_on,patio,Patio Lights,on,Turn on the <device_name>.,"The <device_name> is already on, so there's nothing to change."
already_state,media_player.turn_off,home_theater,Home Theater Media,off,Turn off <device_name>,"Sorry, <device_name> is already off, so there's nothing to change."
already_state,blinds.close_cover,morning_room,Morning room blinds,closed,Close the <device_name> blinds,"The <device_name> is already closed, so no action is needed."
not_available,switch.toggle,fountain_pump,Fountain Pump Switch,,Toggle the <device_name>,"Im sorry, I cant locate the <device_name> in your home."
not_available,lock.unlock,workshop,Workshop Lock,,unlock <device_name>,"Im sorry, I cant locate <device_name> in your home, so I cant unlock it."
not_available,vacuum.stop,left_corner_bot,Left corner dirt sucker,,Stop the <device_name>,"Im sorry, I cant locate that device in your home."
already_state,vacuum.start,dining_area_bissel,Dining area dirt remover,cleaning,Start the <device_name>.,"It's already cleaning, so there's nothing to change."
already_state,vacuum.return_to_base,craft_room_helper,Craft room cleaning bot,docked,<device_name> return to base,"It's already docked, so there's nothing for me to do."
already_state,lock.lock,den,Den Lock,locked,Lock <device_name>,"Sorry, <device_name> is already locked, so there's nothing to do."
not_available,light.toggle,kitchen_mirror_cool,Kitchen Mirror Cool Light,,Toggle <device_name>,"Im sorry, I cant locate <device_name> in your home."
not_available,media_player.volume_up,greenhouse_speaker,Greenhouse Speaker,,Volume up <device_name>,"Im sorry, I cant find <device_name> in your home to adjust the volume."
not_available,vacuum.stop,above_stairs_robot,Above stairs dusting device,,Stop the <device_name>,"Im sorry, I cant locate that device in your home, so I cant stop it."
already_state,fan.turn_on,living_room_center,Center living room fan,on,Turn on the <device_name>,"Sorry, the <device_name> is already on, so there's nothing to change."
not_available,garage_door.close_cover,shed_1,First shed door,,Close the <device_name> cover,"Im sorry, I cant locate a garage door in your home to close."
not_available,blinds.close_cover,theater_room,Home theater blinds,,Close the <device_name> blinds,"Im sorry, I cant locate a <device_name> in your home."
already_state,blinds.close_cover,garage,Garage Blinds,closed,Close the <device_name> blinds,"The blinds are already closed, so there's nothing to do."
not_available,vacuum.return_to_base,basement_deebot,Basement deebot,,Return <device_name> to its base,"Im sorry, but I cant locate that device in your home."
already_state,light.turn_on,downstairs_corridor_mqtt,Downstairs Corridor Light,on,Turn on the <device_name> with color red,"Sorry, the <device_name> is already on, so there's nothing to change."
already_state,lock.lock,back_door,Back Door Lock,locked,Lock the <device_name>.,"Sorry, the <device_name> is already locked, so no action is needed."
not_available,climate.set_temperature,honeywell_lyric_t6,Honeywell Lyric T6 Pro,,Set the temperature to 23°C on <device_name>.,"Im sorry, I cant locate <device_name> in your home."
already_state,fan.turn_off,porch,Porch ceiling fan,off,Turn off the <device_name>,"Sorry, the fan is already off, so there's nothing to change."
not_available,switch.turn_off,den_lights,Den Lights Switch,,Turn off the <device_name>.,"Im sorry, I cant locate that device in your home."
already_state,vacuum.return_to_base,workshop_floor,Workshop floor cleaner,docked,Return <device_name> to base,"It's already docked, so there's nothing to do."
not_available,fan.increase_speed,guest_room,Guest Room Fan,,Increase the speed of the <device_name>.,"Im sorry, I cant locate a <device_name> in your home."
not_available,vacuum.stop,living_room_roomba,Living room vacuum,,stop <device_name>,"Im sorry, I cant locate that device in your home."
already_state,light.turn_on,downstairs_entryway_mqtt,Downstairs Entryway Light,on,Turn on the <device_name> to white,"The <device_name> is already on, so no change is needed."
not_available,switch.toggle,dining_room_lights,Dining Room Lights Switch,,Toggle <device_name>,"Im sorry, but I cant locate that device in your home."
already_state,climate.turn_off,netatmo_smart,Netatmo Smart Thermostat,off,Turn off the <device_name> climate,"Sorry, the climate is already off, so there's nothing to change."
already_state,fan.turn_on,kitchen_island,Cooling kitchen fan,on,turn on the <device_name>,"Sorry, the fan is already on, so there's nothing to change."
not_available,lock.unlock,schlage_smart,Schlage Smart Lock,,Unlock the <device_name>.,"Im sorry, but I cant locate the <device_name> in your home."
already_state,switch.turn_on,study_room_lights,Study Room Lights Switch,on,Turn on the <device_name>.,"Sorry, the <device_name> is already on, so there's nothing to change."
not_available,climate.set_temperature,wine_cellar_cooling,Wine Cellar Climate Control,,Set the temperature of <device_name> to 18 degrees,"I'm sorry, I couldn't locate <device_name> in your home."
not_available,climate.set_temperature,art_studio_climate,Art Studio Climate Control,,Set the temperature of <device_name> to 19 degrees.,"Im sorry, but I cant locate that device in your home."
already_state,lock.unlock,boathouse,Boathouse Lock,unlocked,Unlock the <device_name>.,"The <device_name> is already unlocked, so there's nothing to do."
not_available,switch.toggle,aquarium_filter,Aquarium filter switch,,Toggle the <device_name>,"Im sorry, I cant locate that device in your home."
already_state,garage_door.close_cover,guest,Guest Garage Door,closed,Close the <device_name>.,"Sorry, the <device_name> is already closed, so there's nothing to do."
not_available,garage_door.close_cover,auto_bay_left,Left auto bay door,,close the <device_name> cover,"Im sorry, I cant locate a garage door in your home to close."
not_available,media_player.volume_down,home_theater_system_living_room,Living Room Home Theater,,Turn down the volume on <device_name>,"Im sorry, I cant locate <device_name> in your home."
not_available,light.turn_on,kitchen_drawer_warm,Kitchen Drawer Warm Light,,Turn on the <device_name> to cool white,"Im sorry, I cant locate that device in your home."
not_available,garage_door.toggle,main,Main Garage Door,,toggle the <device_name>,"Im sorry, I cant locate that device in your home."
already_state,media_player.turn_on,ps5_living_room,Living room PS5,on,Turn on <device_name>,"Sorry, <device_name> is already on, so no action is needed."
not_available,media_player.volume_up,sony_bravia_tv,Sony Smart LED TV,,Turn up the volume on <device_name>,"Im sorry, I cant locate <device_name> in your home."
not_available,blinds.stop_cover,guest_room,Guest Room Blinds,,Stop the <device_name> blinds,"Im sorry, I cant find that blind in your home right now."
not_available,media_player.volume_up,kitchen_radio,Kitchen Radio Player,,Turn up the volume on <device_name>,"Im sorry, I cant locate <device_name> in your home."
not_available,vacuum.start,garage_roomba_2,Garage cleaning bot,,Start the <device_name>,"Im sorry, I cant locate that device in your home."
not_available,fan.turn_off,attic,Attic Fan,,Turn off the <device_name>.,"Im sorry, I cant locate that device in your home."
not_available,fan.decrease_speed,mudroom,Mudroom fan,,Decrease the speed of the <device_name> fan,"Im sorry, I cant locate that fan in your home."
already_state,climate.turn_off,carrier_cor,Carrier Cor Wi-Fi Thermostat,off,Turn off the <device_name> climate,"The <device_name> is already off, so there's nothing to change."
not_available,switch.toggle,hallway_lights,Hallway Lights Switch,,Toggle the <device_name>.,"Im sorry, but I cant find that device in your home."
not_available,fan.turn_off,workshop_ceiling,Workshop ceiling fan,,Turn off the <device_name>.,"Im sorry, I cant locate that device in your home."
not_available,blinds.close_cover,greenhouse_south,South greenhouse blinds,,Close the <device_name> blinds,"Im sorry, I cant locate that device in your home."
not_available,climate.turn_off,art_studio_climate,Art Studio Climate Control,,Turn off the <device_name>.,"Im sorry, I cant locate a <device_name> in your home to turn off."
not_available,vacuum.return_to_base,workshop_floor,Workshop floor cleaner,,return <device_name> to base,"Sorry, I can't locate that device in your home."
not_available,climate.set_temperature,server_room_cooling,Server Room Cooling,,Set the temperature of <device_name> to 27 degrees,"Im sorry, I cant locate <device_name> in your home."
already_state,climate.turn_on,humidor_control,Humidor Climate Control,on,Turn on the <device_name>,"The <device_name> is already on, so no action is needed."
not_available,media_player.media_play_pause,lounge_hi_fi_system,Lounge Hi-Fi Audio,,Play or pause <device_name>,"Im sorry, I cant locate <device_name> in your home."
not_available,fan.increase_speed,shed,Shed fan,,Increase the speed of <device_name>,"I'm sorry, I couldn't locate <device_name> in your home."
1 reason_type service_name device_name friendly_name desired_state phrase response
2 not_available lock.lock back_door Back Door Lock Lock the <device_name>. I can't find a back door lock to control.
3 already_state light.turn_on hallway Hallway Lights on Turn on the <device_name>. The hallway lights are already on.
4 already_state switch.turn_off garage Garage Outlet off Turn off the <device_name>. The garage outlet is already off.
5 not_available blinds.close_cover sunroom Sunroom Blinds Close the <device_name> blinds I’m sorry, but I can’t locate that device in your home.
6 not_available light.turn_on downstairs_livingroom_lifx Downstairs Living Room Light turn on the <device_name> with color blue I’m sorry, I can’t locate that device in your home.
7 already_state media_player.media_play_pause sonos_beam Sonos Compact Soundbar playing Pause <device_name> It's already playing, so there's nothing to change.
8 not_available media_player.volume_up playstation_5 Sony PS5 Increase the volume of <device_name> I’m sorry, I can’t locate <device_name> in your home.
9 not_available fan.turn_on bathroom Bathroom Fan Turn on the <device_name>. I’m sorry, I can’t locate that device in your home.
10 not_available light.toggle garden Garden Light Toggle <device_name> Sorry, I can't locate that device in your home.
11 not_available media_player.volume_up roku_living Roku Living Room Turn up the volume on <device_name> I’m sorry, I can’t find <device_name> in your home, so I can’t adjust its volume.
12 not_available garage_door.open_cover side_2 Side garage door Open the <device_name>. I’m sorry, but I can’t locate a <device_name> in your home to open.
13 already_state light.turn_off front_tv_room_ge Front TV Room Light off Turn off the <device_name> The <device_name> is already off, so there's nothing to change.
14 not_available garage_door.stop_cover golf_cart Golf Cart Garage Stop the <device_name> I’m sorry, I can’t find that device in your home.
15 not_available lock.lock playroom Playroom Lock Lock the <device_name> I’m sorry, I can’t find that lock in your home.
16 not_available fan.decrease_speed kitchen_island Cooling kitchen fan Decrease the speed of the <device_name> Sorry, I couldn't locate that fan in your home.
17 already_state switch.turn_off pantry_lights Pantry Lights Switch off Turn off the <device_name>. Sorry, the <device_name> is already off, so there's nothing to change.
18 not_available vacuum.stop dining_area_bissel Dining area dirt remover stop the <device_name> I’m sorry, I can’t locate that device in your home.
19 not_available fan.turn_on dyson_pure Dyson Pure Fan Turn on the <device_name>. I’m sorry, I can’t locate a <device_name> in your home.
20 already_state climate.turn_off trane_comfortlink_ii Trane ComfortLink II XL1050 off Turn off the <device_name> Sorry, the <device_name> is already off, so there's nothing to change.
21 not_available garage_door.open_cover boat Boat storage door Open the <device_name> cover I’m sorry, I can’t locate that device in your home.
22 already_state light.turn_off office_1 Office Light off Turn off the <device_name> The <device_name> is already off, so there's nothing to change.
23 already_state lock.unlock secure_storage Secure storage lock unlocked Unlock the <device_name> Sorry, the <device_name> is already unlocked, so there's nothing to do.
24 not_available fan.turn_on office Office Fan Turn on the <device_name> I’m sorry, I can’t locate a <device_name> in your home.
25 not_available light.turn_on patio Patio Light turn on the <device_name> I’m sorry, but I can’t locate that device in your home.
26 not_available switch.toggle fountain_pump Fountain Pump Switch Toggle the <device_name> I’m sorry, but I can’t locate that device in your home.
27 not_available climate.set_temperature ecobee_smart Ecobee SmartThermostat Set the temperature of <device_name> to 25 degrees. I’m sorry, but I can’t locate that device in your home.
28 not_available garage_door.open_cover basement Basement Garage Door Open the <device_name> cover I'm sorry, but I can't find that device in your home.
29 not_available switch.toggle pond_aerator Pond aerator switch Toggle the <device_name> I’m sorry, I can’t locate the <device_name> in your home.
30 not_available climate.turn_off humidor_control Humidor Climate Control Turn off the <device_name>. I’m sorry, but I can’t locate that device in your home.
31 already_state media_player.media_play_pause home_theater_system_living_room Living Room Home Theater playing Pause <device_name> Sorry, <device_name> is already playing, so no change is needed.
32 not_available blinds.close_cover kids_room Kids' room blinds Close the <device_name> blinds I’m sorry, but I can’t locate that device in your home.
33 not_available vacuum.start smart_home_automator Smart home cleaning bot Start the <device_name>. I’m sorry, but I can’t find that device in your home.
34 not_available media_player.volume_up backyard_outdoor_projector Backyard Projector Increase the volume of <device_name> I’m sorry, I can’t locate <device_name> in your home.
35 not_available lock.lock garage Garage Door Lock Lock the <device_name>. I’m sorry, but I can’t find that device in your home.
36 not_available climate.turn_on emerson_sensi_touch Emerson Sensi Touch Wi-Fi Thermostat turn on the <device_name> I’m sorry, I can’t locate that device in your home.
37 not_available fan.toggle patio Patio Fan Toggle the <device_name> I’m sorry, I can’t locate that fan in your home.
38 not_available vacuum.return_to_base downstairs_guest_room Downstairs guest room vac Return <device_name> to its base I’m sorry, but I can’t locate that device in the home right now.
39 not_available fan.toggle kids_room Kids' room fan Toggle the <device_name> I’m sorry, I can’t locate that device in your home.
40 not_available climate.set_temperature ecobee_smart Ecobee SmartThermostat Set the temperature of <device_name> to 20 degrees. I’m sorry, I can’t locate <device_name> in your home, so I’m unable to set the temperature.
41 already_state blinds.close_cover conservatory Conservatory Blinds closed Close the <device_name> blinds The <device_name> is already closed, so there's nothing to change.
42 already_state media_player.turn_off epson_home_cinema Epson Video Projector off Turn off <device_name> Sorry, <device_name> is already off, so there's nothing to do.
43 not_available fan.turn_on office Office Fan Turn on the <device_name>. I’m sorry, I can’t locate that device in your home.
44 not_available vacuum.start wine_cellar_vac Wine cellar vacuum Start the <device_name> I’m sorry, I can’t locate that device in your home.
45 not_available switch.toggle sunroom_lights Sunroom Lights Switch Toggle the <device_name> I’m sorry, I can’t locate that device in your home.
46 not_available vacuum.stop workshop_floor Workshop floor cleaner Hey assistant, please stop the <device_name>. I’m sorry, but I can’t locate that device in your home.
47 not_available garage_door.toggle chamberlain_2 Chamberlain Toggle the <device_name>. I’m sorry, I can’t locate a <device_name> in your home to toggle.
48 not_available climate.turn_on kono_thermostat Kono Smart Thermostat Turn on the <device_name> climate I’m sorry, I can’t locate a <device_name> in your home.
49 not_available climate.set_temperature greenhouse_climate Greenhouse Climate System Set the temperature of <device_name> to 26 degrees I’m sorry, I can’t locate that device in your home.
50 not_available vacuum.return_to_base back_deck_sweeper Back deck area cleaner Return <device_name> to its base I’m sorry, but I can’t find that device in the home right now.
51 not_available climate.set_temperature humidor_control Humidor Climate Control Set the temperature of <device_name> to 18 degrees I'm sorry, I can't locate <device_name> in your home.
52 not_available garage_door.stop_cover golf_cart Golf cart door stop the <device_name> I’m sorry, I can’t locate that device in your home.
53 not_available blinds.toggle morning_room Morning room blinds Toggle the <device_name> blinds I’m sorry, but I can’t locate that blind in your home.
54 already_state fan.turn_off outdoor_kitchen Outdoor kitchen fan off Turn off the <device_name> Sorry, the <device_name> is already off, so there's nothing to change.
55 not_available fan.increase_speed laundry_room Laundry room fan Increase the speed of the <device_name>. I’m sorry, I can’t locate that fan in your home.
56 not_available switch.turn_off warehouse_lights Warehouse Lights Switch Turn off the <device_name> I'm sorry, I couldn't locate the <device_name> in your home.
57 not_available fan.turn_off master_bath Master bathroom fan Turn off the <device_name> I’m sorry, I can’t locate that fan in your home.
58 not_available garage_door.close_cover carport Carport Garage Door Close the <device_name> cover I’m sorry, but I can’t locate a <device_name> in your home to close.
59 not_available switch.toggle gutter_heating Gutter heating control Toggle the <device_name> switch I’m sorry, but I can’t locate a device named <device_name> in your home.
60 not_available fan.decrease_speed outdoor_kitchen Outdoor kitchen fan Decrease the speed of <device_name> I’m sorry, I can’t locate that fan in your home.
61 already_state lock.lock office Office Lock locked Lock the <device_name>. Sorry, the <device_name> is already locked, so there's nothing to change.
62 not_available lock.lock utility_room Utility room lock Lock the <device_name> I'm sorry, I can't locate that device in your home.
63 already_state switch.turn_on deck_lights Deck Lighting Switch on Turn on the <device_name>. Sorry, the <device_name> is already on, so there's nothing to change.
64 already_state light.turn_on master_bedroom_1 Master Bedroom Lights on turn on <device_name> to 51% brightness The light is already on at that level, so there's nothing to change.
65 not_available light.turn_on office_desk Office Desk Light Turn on the <device_name> light to green I’m sorry, but I can’t locate that device in your home.
66 not_available switch.toggle master_bedroom_lights Master Bedroom Lights Switch Toggle the <device_name> I’m sorry, I can’t find that device in your home.
67 not_available light.toggle philips_hue_2 Philips Hue Toggle the <device_name> I’m sorry, but I can’t locate that device in your home.
68 already_state light.turn_on patio Patio Lights on Turn on the <device_name>. The <device_name> is already on, so there's nothing to change.
69 already_state media_player.turn_off home_theater Home Theater Media off Turn off <device_name> Sorry, <device_name> is already off, so there's nothing to change.
70 already_state blinds.close_cover morning_room Morning room blinds closed Close the <device_name> blinds The <device_name> is already closed, so no action is needed.
71 not_available switch.toggle fountain_pump Fountain Pump Switch Toggle the <device_name> I’m sorry, I can’t locate the <device_name> in your home.
72 not_available lock.unlock workshop Workshop Lock unlock <device_name> I’m sorry, I can’t locate <device_name> in your home, so I can’t unlock it.
73 not_available vacuum.stop left_corner_bot Left corner dirt sucker Stop the <device_name> I’m sorry, I can’t locate that device in your home.
74 already_state vacuum.start dining_area_bissel Dining area dirt remover cleaning Start the <device_name>. It's already cleaning, so there's nothing to change.
75 already_state vacuum.return_to_base craft_room_helper Craft room cleaning bot docked <device_name> return to base It's already docked, so there's nothing for me to do.
76 already_state lock.lock den Den Lock locked Lock <device_name> Sorry, <device_name> is already locked, so there's nothing to do.
77 not_available light.toggle kitchen_mirror_cool Kitchen Mirror Cool Light Toggle <device_name> I’m sorry, I can’t locate <device_name> in your home.
78 not_available media_player.volume_up greenhouse_speaker Greenhouse Speaker Volume up <device_name> I’m sorry, I can’t find <device_name> in your home to adjust the volume.
79 not_available vacuum.stop above_stairs_robot Above stairs dusting device Stop the <device_name> I’m sorry, I can’t locate that device in your home, so I can’t stop it.
80 already_state fan.turn_on living_room_center Center living room fan on Turn on the <device_name> Sorry, the <device_name> is already on, so there's nothing to change.
81 not_available garage_door.close_cover shed_1 First shed door Close the <device_name> cover I’m sorry, I can’t locate a garage door in your home to close.
82 not_available blinds.close_cover theater_room Home theater blinds Close the <device_name> blinds I’m sorry, I can’t locate a <device_name> in your home.
83 already_state blinds.close_cover garage Garage Blinds closed Close the <device_name> blinds The blinds are already closed, so there's nothing to do.
84 not_available vacuum.return_to_base basement_deebot Basement deebot Return <device_name> to its base I’m sorry, but I can’t locate that device in your home.
85 already_state light.turn_on downstairs_corridor_mqtt Downstairs Corridor Light on Turn on the <device_name> with color red Sorry, the <device_name> is already on, so there's nothing to change.
86 already_state lock.lock back_door Back Door Lock locked Lock the <device_name>. Sorry, the <device_name> is already locked, so no action is needed.
87 not_available climate.set_temperature honeywell_lyric_t6 Honeywell Lyric T6 Pro Set the temperature to 23°C on <device_name>. I’m sorry, I can’t locate <device_name> in your home.
88 already_state fan.turn_off porch Porch ceiling fan off Turn off the <device_name> Sorry, the fan is already off, so there's nothing to change.
89 not_available switch.turn_off den_lights Den Lights Switch Turn off the <device_name>. I’m sorry, I can’t locate that device in your home.
90 already_state vacuum.return_to_base workshop_floor Workshop floor cleaner docked Return <device_name> to base It's already docked, so there's nothing to do.
91 not_available fan.increase_speed guest_room Guest Room Fan Increase the speed of the <device_name>. I’m sorry, I can’t locate a <device_name> in your home.
92 not_available vacuum.stop living_room_roomba Living room vacuum stop <device_name> I’m sorry, I can’t locate that device in your home.
93 already_state light.turn_on downstairs_entryway_mqtt Downstairs Entryway Light on Turn on the <device_name> to white The <device_name> is already on, so no change is needed.
94 not_available switch.toggle dining_room_lights Dining Room Lights Switch Toggle <device_name> I’m sorry, but I can’t locate that device in your home.
95 already_state climate.turn_off netatmo_smart Netatmo Smart Thermostat off Turn off the <device_name> climate Sorry, the climate is already off, so there's nothing to change.
96 already_state fan.turn_on kitchen_island Cooling kitchen fan on turn on the <device_name> Sorry, the fan is already on, so there's nothing to change.
97 not_available lock.unlock schlage_smart Schlage Smart Lock Unlock the <device_name>. I’m sorry, but I can’t locate the <device_name> in your home.
98 already_state switch.turn_on study_room_lights Study Room Lights Switch on Turn on the <device_name>. Sorry, the <device_name> is already on, so there's nothing to change.
99 not_available climate.set_temperature wine_cellar_cooling Wine Cellar Climate Control Set the temperature of <device_name> to 18 degrees I'm sorry, I couldn't locate <device_name> in your home.
100 not_available climate.set_temperature art_studio_climate Art Studio Climate Control Set the temperature of <device_name> to 19 degrees. I’m sorry, but I can’t locate that device in your home.
101 already_state lock.unlock boathouse Boathouse Lock unlocked Unlock the <device_name>. The <device_name> is already unlocked, so there's nothing to do.
102 not_available switch.toggle aquarium_filter Aquarium filter switch Toggle the <device_name> I’m sorry, I can’t locate that device in your home.
103 already_state garage_door.close_cover guest Guest Garage Door closed Close the <device_name>. Sorry, the <device_name> is already closed, so there's nothing to do.
104 not_available garage_door.close_cover auto_bay_left Left auto bay door close the <device_name> cover I’m sorry, I can’t locate a garage door in your home to close.
105 not_available media_player.volume_down home_theater_system_living_room Living Room Home Theater Turn down the volume on <device_name> I’m sorry, I can’t locate <device_name> in your home.
106 not_available light.turn_on kitchen_drawer_warm Kitchen Drawer Warm Light Turn on the <device_name> to cool white I’m sorry, I can’t locate that device in your home.
107 not_available garage_door.toggle main Main Garage Door toggle the <device_name> I’m sorry, I can’t locate that device in your home.
108 already_state media_player.turn_on ps5_living_room Living room PS5 on Turn on <device_name> Sorry, <device_name> is already on, so no action is needed.
109 not_available media_player.volume_up sony_bravia_tv Sony Smart LED TV Turn up the volume on <device_name> I’m sorry, I can’t locate <device_name> in your home.
110 not_available blinds.stop_cover guest_room Guest Room Blinds Stop the <device_name> blinds I’m sorry, I can’t find that blind in your home right now.
111 not_available media_player.volume_up kitchen_radio Kitchen Radio Player Turn up the volume on <device_name> I’m sorry, I can’t locate <device_name> in your home.
112 not_available vacuum.start garage_roomba_2 Garage cleaning bot Start the <device_name> I’m sorry, I can’t locate that device in your home.
113 not_available fan.turn_off attic Attic Fan Turn off the <device_name>. I’m sorry, I can’t locate that device in your home.
114 not_available fan.decrease_speed mudroom Mudroom fan Decrease the speed of the <device_name> fan I’m sorry, I can’t locate that fan in your home.
115 already_state climate.turn_off carrier_cor Carrier Cor Wi-Fi Thermostat off Turn off the <device_name> climate The <device_name> is already off, so there's nothing to change.
116 not_available switch.toggle hallway_lights Hallway Lights Switch Toggle the <device_name>. I’m sorry, but I can’t find that device in your home.
117 not_available fan.turn_off workshop_ceiling Workshop ceiling fan Turn off the <device_name>. I’m sorry, I can’t locate that device in your home.
118 not_available blinds.close_cover greenhouse_south South greenhouse blinds Close the <device_name> blinds I’m sorry, I can’t locate that device in your home.
119 not_available climate.turn_off art_studio_climate Art Studio Climate Control Turn off the <device_name>. I’m sorry, I can’t locate a <device_name> in your home to turn off.
120 not_available vacuum.return_to_base workshop_floor Workshop floor cleaner return <device_name> to base Sorry, I can't locate that device in your home.
121 not_available climate.set_temperature server_room_cooling Server Room Cooling Set the temperature of <device_name> to 27 degrees I’m sorry, I can’t locate <device_name> in your home.
122 already_state climate.turn_on humidor_control Humidor Climate Control on Turn on the <device_name> The <device_name> is already on, so no action is needed.
123 not_available media_player.media_play_pause lounge_hi_fi_system Lounge Hi-Fi Audio Play or pause <device_name> I’m sorry, I can’t locate <device_name> in your home.
124 not_available fan.increase_speed shed Shed fan Increase the speed of <device_name> I'm sorry, I couldn't locate <device_name> in your home.

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,124 @@
service_name,correct_device_name,correct_friendly_name,bad_device_name,phrase,error_result,retry_prompt
light.turn_on,light.living_room_lamp,Lampe du salon,light.livng_room_lamp,"Veuillez allumer la <device_name>.","Erreur : entité light.livng_room_lamp introuvable.","Je vais essayer la lampe du salon à la place."
climate.set_temperature,climate.hallway,Thermostat du couloir,climate.halway,"Règle la <device_name> à <temp_f> degrés.","Erreur : entité climate.halway introuvable.","Nouvelle tentative avec le thermostat du couloir."
fan.turn_off,fan.office,Ventilateur du bureau,fan.offce,"Éteins le <device_name>.","Erreur : entité fan.offce introuvable.","Je vais réessayer avec le ventilateur du bureau."
garage_door.open_cover,garage_door.liftmaster_1,LiftMaster,garage_door.lift_master_1,"Ouvre le couvercle du garage, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.lift_master_1', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","D'accord, je réessaie avec le bon dispositif: garage_door.liftmaster_1."
light.turn_on,light.front_sunroom_ge,Lumière de véranda avant,light.front_sunroom_ge_extra,"Allume la lumière de la véranda avant en blanc, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.front_sunroom_ge_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Pas de problème, je réessaie avec la bonne lumière."
light.turn_on,light.philips_hue_1,Philips Hue,light.philips_hue_1_main,"Allume la lumière du salon, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.philips_hue_1_main', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Très bien, je réessaie avec le dispositif correct."
lock.unlock,lock.la_porte_du_patio,Porte patio coulissante,lock.patio_du_porte,Peux-tu déverrouiller la porte patio coulissante ?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.patio_du_porte', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Très bien, je réessaie avec la porte patio coulissante."
fan.increase_speed,fan.grenier_ventilation,Ventilateur de grenier,fan.grenierventilation_plus,"Augmente la vitesse du ventilateur du grenier, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.grenierventilation_plus', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Je réessaie avec le bon appareil: fan.grenier_ventilation.
media_player.turn_off,media_player.sonos_beam,Barre de son compacte Sonos,media_player.sonos_beam_salon,"Éteins la barre de son compacte Sonos, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.sonos_beam_salon', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Très bien, je réessaie avec la bonne barre de son."
switch.toggle,switch.front_gate_lighting,Interrupteur des feux de porte avant,switch.front_gate_lightings,"Allume les feux de la porte avant, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.front_gate_lightings', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","D'accord, je réessaie avec l'interrupteur des feux de porte avant."
vacuum.stop,vacuum.patio_doorway_vac,Nettoyant pour porte-patio,vacuum.patio_doorway_vacx,"Arrête le nettoyant pour porte-patio, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.patio_doorway_vacx', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Je réessaie avec le bon appareil.
climate.turn_off,climate.netatmo_smart,Thermostat Intelligent Netatmo,climate.netatmo_sma,"Éteins le thermostat intelligent Netatmo, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.netatmo_sma', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Très bien, je réessaie avec le bon appareil: climate.netatmo_smart."
switch.turn_off,switch.salle_à_manger_lights,Interrupteur d'éclairage de salle à manger,switch.salle_à_manger_lumens,Éteins les lumières de la salle à manger.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.salle_à_manger_lumens', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","D'accord, j'essaie avec le bon interrupteur."
blinds.stop_cover,blinds.fenêtre_arrière,Stores de fenêtre arrière,blinds.fenêtre_arriè,Arrête les stores de la fenêtre arrière.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.fenêtre_arriè', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","D'accord, je réessaie avec les stores de fenêtre arrière."
fan.decrease_speed,fan.salle_de_bain_bas,Ventilateur dans la salle de bain du rez-de-chaussée,fan.salle_de_bain_basse,Baisse la vitesse du ventilateur de la salle de bain du rez-de-chaussée.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.salle_de_bain_basse', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Je réessaie avec le bon dispositif: fan.salle_de_bain_bas.
lock.lock,lock.porte_latérale,Serrure de portail latérale,lock.porte_latérale_ext,"Verrouille la porte latérale du garage, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.porte_latérale_ext', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","D'accord, je réessaie avec la serrure correcte."
light.toggle,light.cuisine_étagère_cool,Étagère de cuisine lumière froide,light.cuisine_étagère_cooler,Peux-tu allumer ou éteindre la lumière de l'étagère de cuisine froide ?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.cuisine_étagère_cooler', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Je réessaye avec l'étagère de cuisine lumière froide.
climate.turn_off,climate.netatmo_smart,Thermostat Intelligent Netatmo,climate.netatmo_sma,Éteins le thermostat intelligent.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.netatmo_sma', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Très bien, je réessaie avec le thermostat Netatmo."
garage_door.open_cover,garage_door.sous_sol,Porte de garage du sous-sol,garage_door.sous_sol_porte,"Ouvre la couverture du garage du soussol, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.sous_sol_porte', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","D'accord, je réessaie avec le bon appareil."
light.turn_off,light.front_recreation_ge,Lumière de loisirs avant,light.front_recreation_ge_bis,"Éteins la Lumière de loisirs avant, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.front_recreation_ge_bis', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","D'accord, je réessaye avec la bonne lumière."
blinds.close_cover,blinds.salon_room_large,Stores du salon principal,blinds.salon_room_largex,Ferme les stores du salon principal.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.salon_room_largex', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Très bien, je réessaie avec les Stores du salon principal."
vacuum.stop,vacuum.front_hall_samsung,Robot de balayage du hall d'entrée,vacuum.front_hall_samsung_pro,"Arrête le robot de balayage du hall d'entrée, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.front_hall_samsung_pro', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Très bien, je réessaye avec le bon appareil."
vacuum.stop,vacuum.patio_doorway_vac,Nettoyant pour porte-patio,vacuum.patio_doorway,"Arrête le nettoyant pour porte-patio, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.patio_doorway', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Je réessaie avec le bon appareil.
vacuum.stop,vacuum.à_l'étage_salle_de_bain_vac,Aide à la salle de bain à l'étage,vacuum.à_l'étage_salle_de_bain,"Arrête le robot aspirateur de la salle de bain à l'étage, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.à_l'étage_salle_de_bain', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","D'accord, je réessaie avec le bon dispositif."
climate.turn_off,climate.mysa_smart_thermostat,Thermostat intelligent Mysa pour plinthes électriques,climate.mysa_thermostat_smart_pro,Éteins le thermostat intelligent Mysa pour plinthes électriques.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.mysa_thermostat_smart_pro', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Très bien, je réessaie avec le bon thermostat."
climate.turn_on,climate.honeywell_lyric_t6,Honeywell Lyric T6 Pro,climate.honeywell_lyric_t6_pro,"Allume le chauffage dans le salon, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.honeywell_lyric_t6_pro', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Très bien, je réessaie avec le thermostat Honeywell Lyric T6."
fan.turn_on,fan.chambre_d'amis,Ventilateur de chambre d'amis,fan.chambre_amis,"Allume le ventilateur de la chambre d'amis, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.chambre_amis', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Je réessaye avec le ventilateur de la chambre d'amis.
media_player.volume_down,media_player.garage_atelier_stéréo,Stéréo Garage Atelier,media_player.stéréo_garage_atelier,Baisse le volume de la Stéréo du garage atelier.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.stéréo_garage_atelier', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Très bien, je réessaie avec le bon appareil."
media_player.volume_down,media_player.sous_sol,Lecteur multimédia du sous-sol,media_player.soussol,Baisse le volume du lecteur multimédia du sous-sol.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.soussol', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Très bien, j'utilise le bon appareil: Lecteur multimédia du sous-sol."
vacuum.stop,vacuum.entrée_eufy,Dépoussiéreur d'entrée,vacuum.entr_eufy,"Arrête le dépoussiéreur d'entrée, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.entr_eufy', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","D'accord, je réessaye avec le bon appareil."
climate.turn_off,climate.netatmo_smart,Thermostat Intelligent Netatmo,climate.netatmo_smar,Éteins le thermostat intelligent Netatmo.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.netatmo_smar', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Très bien, je réessaie avec le bon appareil."
light.turn_on,light.chambre_2,Lumière de la chambre,light.chambre_2_ext,"Allume la lumière de la chambre en violet, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.chambre_2_ext', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Très bien, je réessaie avec la lumière de la chambre."
switch.turn_off,switch.lumières_sous_sol,Interrupteur des lumières du sous-sol,switch.lumières_sous,"Éteins les lumières du soussol, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.lumières_sous', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Je réessaie avec le bon appareil: switch.lumières_sous_sol.
switch.turn_on,switch.front_gate_lighting,Interrupteur des feux de porte avant,switch.front_gate_light,"Allume les feux de la porte avant, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.front_gate_light', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Très bien, je réessaie avec l'Interrupteur des feux de porte avant."
blinds.close_cover,blinds.ikea_smart,Stores intelligents Ikea,blinds.ikea_smart_v2,"Ferme les stores intelligents Ikea, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.ikea_smart_v2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","D'accord, je réessaie avec le bon dispositif."
blinds.stop_cover,blinds.salle_de_bain_1,Premiers stores de salle de bain,blinds.salle_de_bain_01,"Arrête les stores de la salle de bain, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.salle_de_bain_01', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Très bien, je réessaie avec le bon dispositif."
blinds.stop_cover,blinds.fenêtre_arrière,Stores de fenêtre arrière,blinds.fenêtre_arriè,Arrête les stores de la fenêtre arrière.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.fenêtre_arriè', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Je réessaie avec le bon appareil.
vacuum.stop,vacuum.chambre_invité_en_bas,Chambre d'amis en bas,vacuum.chambre_invité_en,"Arrête l'aspirateur de la chambre d'amis en bas, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.chambre_invité_en', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","D'accord, je réessaye avec le bon appareil: vacuum.chambre_invité_en_bas."
lock.lock,lock.porte_terrasse,Serrure de porte de terrasse,lock.porte_terrasse_ext,"Verrouille la porte de la terrasse, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.porte_terrasse_ext', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","D'accord, je réessaie avec la bonne serrure: lock.porte_terrasse."
climate.turn_off,climate.emerson_sensi_touch,Thermostat Wi-Fi Emerson Sensi Touch,climate.emerson_sensi_touch_v2,Éteins le thermostat WiFi de la salle de séjour.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.emerson_sensi_touch_v2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Très bien, je réessaie avec le thermostat correct."
vacuum.stop,vacuum.couloir_neato,Nettoyant pour allées de couloir,vacuum.couloirneato,"Arrête le robot aspirateur du couloir, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.couloirneato', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","D'accord, j'essaie avec le bon appareil."
vacuum.return_to_base,vacuum.salon_room_roomba,Aspirateur de salon,vacuum.salonroom_roomba_plus,"Aspirateur de salon, retourne à la base s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.salonroom_roomba_plus', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","D'accord, je réessaie avec l'Aspirateur de salon."
media_player.volume_down,media_player.cinéma_maison,Médias de cinéma maison,media_player.cinéma_maison_salon,"Baisse le volume du cinéma maison, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.cinéma_maison_salon', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","D'accord, je réessaie avec le bon appareil."
blinds.toggle,blinds.salle_de_bain,Stores de salle de bain,blinds.salle_de_bains,Ferme les stores de la salle de bain.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.salle_de_bains', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Très bien, je réessaie avec le bon dispositif."
lock.unlock,lock.chambre_2,Serrure de la deuxième chambre,lock.chambre_deux,"Peux-tu déverrouiller la serrure de la deuxième chambre, s'il te plaît ?","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.chambre_deux', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","D'accord, je réessaie avec la bonne serrure de la deuxième chambre."
blinds.close_cover,blinds.chambre_d'amis,Stores de chambre d'amis,blinds.chambre_d'ami,"Ferme les stores de la chambre d'amis, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.chambre_d'ami', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","D'accord, je réessaie avec le bon dispositif."
garage_door.stop_cover,garage_door.voiturette_de_golf,Porte de voiturette de golf,garage_door.voiturette_golf,Arrête la porte du garage de la voiturette de golf.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.voiturette_golf', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Très bien, je réessaie avec la porte de la voiturette de golf."
vacuum.stop,vacuum.patio_doorway_vac,Nettoyant pour porte-patio,vacuum.patio_doorway,Arrête le nettoyant pour porte-patio.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.patio_doorway', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Très bien, je réessaie avec le bon dispositif."
vacuum.return_to_base,vacuum.left_corner_bot,Aspirateur de saleté du coin gauche,vacuum.left_corn_bot,"Aspirateur de saleté du coin gauche, retourne à la base s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.left_corn_bot', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","D'accord, je réessaie avec l'aspirateur du coin gauche."
fan.turn_off,fan.grenier_2,Ventilateurs de grenier,fan.grenier_2a,"Éteins le ventilateur du grenier, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.grenier_2a', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Très bien, je réessaie avec le bon appareil."
blinds.stop_cover,blinds.salle_de_bain_1,Premiers stores de salle de bain,blinds.salle_bain_1,Arrête les stores de la salle de bain.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.salle_bain_1', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","D'accord, je réessaie avec le bon appareil."
climate.turn_off,climate.johnson_glas,Thermostat intelligent GLAS de Johnson Controls,climate.johnson_glass,"Éteins le thermostat intelligent GLAS de Johnson Controls, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.johnson_glass', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Je réessaye avec le bon thermostat.
vacuum.return_to_base,vacuum.entrée_eufy,Dépoussiéreur d'entrée,vacuum.entrée_eufy_v2,Ramène le dépoussiéreur d'entrée à sa base.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.entrée_eufy_v2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Très bien, je réessaie avec le bon appareil."
climate.set_temperature,climate.tado_smart,Thermostat intelligent Tado,climate.tado_smart_pro,Peux-tu régler le thermostat à <temp_f> degrés ?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.tado_smart_pro', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","D'accord, je réessaie avec le thermostat Tado."
vacuum.start,vacuum.salle_à_manger_area_bissel,Détachant la saleté de la salle à manger,vacuum.salle_à_manger_area_biss,"Démarre le robot aspirateur dans la salle à manger, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.salle_à_manger_area_biss', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Très bien, je réessaie avec le bon appareil."
blinds.close_cover,blinds.somfy_cuisine,Stores de cuisine,blinds.cuisine_somfy,Ferme les stores de la cuisine.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.cuisine_somfy', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","D'accord, je réessaie avec les stores de cuisine."
light.turn_on,light.front_utility_ge,Éclairage utilitaire avant,light.front_utility_gear,"Allume l'éclairage utilitaire avant, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.front_utility_gear', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","D'accord, je réessaye avec l'éclairage utilitaire avant."
media_player.turn_off,media_player.bang_olufsen_beovision,Télévision haut de gamme B&O,media_player.bang_olufsen_beovisio,"Éteins la télévision haut de gamme B&O, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.bang_olufsen_beovisio', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","D'accord, je réessaye avec le bon appareil."
vacuum.return_to_base,vacuum.couloir_neato,Nettoyant pour allées de couloir,vacuum.couloir_neatox,"Assistant, renvoie le nettoyant pour allées de couloir à sa base.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.couloir_neatox', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Très bien, je réessaye avec le bon appareil."
garage_door.close_cover,garage_door.principal,Porte de garage principale,garage_door.principal_ext,Ferme la porte du garage principale.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.principal_ext', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Je réessaye avec la porte de garage principale.
blinds.close_cover,blinds.chambre_des_enfants,Stores pour chambres d'enfants,blinds.chambre_des_enfants_v2,"Ferme les stores de la chambre des enfants, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.chambre_des_enfants_v2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","D'accord, je réessaie avec le bon appareil."
vacuum.stop,vacuum.left_corner_bot,Aspirateur de saleté du coin gauche,vacuum.corner_left_bot,"Arrête l'aspirateur du coin gauche, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.corner_left_bot', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Très bien, je réessaie avec l'aspirateur de saleté du coin gauche."
fan.increase_speed,fan.chambre_à_coucher,Ventilateur de chambre,fan.chambre_à_couché,"Augmente la vitesse du ventilateur de la chambre, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.chambre_à_couché', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Très bien, je réessaye avec le ventilateur de chambre."
vacuum.start,vacuum.right_stairwell_sweeper,Nettoyeur d'escalier droit,vacuum.right_stairwell_swipper,"Démarre le nettoyeur d'escalier droit, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.right_stairwell_swipper', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","D'accord, je réessaye avec le bon appareil."
lock.unlock,lock.salle_de_sport,Serrure de salle de sport à domicile,lock.salle_de_spor,Déverrouille la serrure de la salle de sport à domicile.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.salle_de_spor', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Très bien, je réessaie avec la bonne serrure."
lock.lock,lock.chenil,Serrure pour chenil pour animaux,lock.chenil_ext,Verrouille la serrure du chenil pour animaux.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.chenil_ext', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Très bien, j'utilise la bonne serrure du chenil."
switch.turn_off,switch.guest_room_lights,Interrupteur d'éclairage de chambre d'amis,switch.guest_room_lights_extra,Éteins les lumières de la chambre d'amis.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.guest_room_lights_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Je réessaie avec l'interrupteur correct.
vacuum.start,vacuum.kitchen_xiaomi,Aspirateur de cuisine,vacuum.kithen_xiaomi,Peux-tu démarrer l'aspirateur de la cuisine ?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.kithen_xiaomi', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","D'accord, j'essaie avec l'aspirateur de cuisine."
climate.turn_off,climate.sinope_smart,Thermostat intelligent Sinopé,climate.sinope_smart_plus,Éteins le thermostat intelligent Sinopé.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.sinope_smart_plus', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","D'accord, je réessaie avec le thermostat intelligent Sinopé."
media_player.volume_up,media_player.cuisine_radio,Lecteur radio de cuisine,media_player.cuisine_radiox,Augmente le volume du lecteur radio de cuisine.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.cuisine_radiox', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Très bien, je réessaie avec le lecteur radio de cuisine."
light.turn_on,light.back_sunroom_warm,Lumière chaude de la véranda arrière,light.back_sunroom_warm_extra,"Allume la lumière chaude de la véranda arrière, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.back_sunroom_warm_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Très bien, je réessaie avec la bonne lumière."
fan.increase_speed,fan.chambre_des_enfants,Ventilateur pour chambre d'enfant,fan.chambre_des_enfants,Augmente la vitesse du ventilateur pour la chambre d'enfant.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.chambre_des_enfants', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","D'accord, j'essaie avec le bon dispositif."
lock.lock,lock.buanderie,Serrure de buanderie,lock.buanderie_extra,"Verrouille la serrure de la buanderie, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.buanderie_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Je réessaie avec la serrure de buanderie.
climate.turn_off,climate.zen_wifi_thermostat,Thermostat Zen Édition WiFi,climate.zen_wifi_thermostat_pro,Éteins le thermostat Zen Édition WiFi.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.zen_wifi_thermostat_pro', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Je réessaie avec le thermostat Zen Édition WiFi.
climate.turn_off,climate.nest_learning,Thermostat d'apprentissage Nest,climate.nst_learning,Éteins le thermostat d'apprentissage Nest.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.nst_learning', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Très bien, je vais essayer avec le thermostat Nest."
fan.turn_off,fan.chambre_maître,Ventilateur de la chambre principale,fan.chambre_maître_salon,"Éteins le ventilateur de la chambre principale, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.chambre_maître_salon', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","D'accord, je réessaie avec le bon appareil."
fan.decrease_speed,fan.chambre_des_enfants,Ventilateur pour chambre d'enfant,fan.chambre_des_enfant,"Baisse la vitesse du ventilateur de la chambre d'enfant, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.chambre_des_enfant', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","D'accord, je réessaye avec le bon ventilateur."
switch.toggle,switch.atelier_lights,Interrupteur d'éclairage d'atelier,switch.atelier_lights_v2,Bascule l'interrupteur d'éclairage d'atelier.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.atelier_lights_v2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Je réessaye avec l'interrupteur d'éclairage d'atelier.
climate.turn_off,climate.zen_wifi_thermostat,Thermostat Zen Édition WiFi,climate.zen_thermostat_wifi,Éteins le thermostat Zen Édition WiFi,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.zen_thermostat_wifi', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","D'accord, je réessaye avec le thermostat Zen."
switch.turn_on,switch.lumières_sauna,Interrupteur pour lumières de sauna,switch.lumières_suana,"Allume les lumières du sauna, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.lumières_suana', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Très bien, je réessaye avec l'interrupteur correct."
lock.lock,lock.porte_sur_le_toit,Serrure d'accès au toit,lock.porte_sur_le,"Verrouille la serrure d'accès au toit, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.porte_sur_le', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Très bien, je réessaie avec la Serrure d'accès au toit."
switch.turn_on,switch.lumières_cuisine,Interrupteur d'éclairage de cuisine,switch.cuisine_lumières,"Allume les lumières de la cuisine, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.cuisine_lumières', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Très bien, je réessaie avec l'interrupteur d'éclairage de cuisine."
light.turn_off,light.cuisine,Lumière de cuisine,light.cuisinex,"Éteins la lumière de la cuisine, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.cuisinex', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Très bien, je réessaie avec la lumière de cuisine."
lock.lock,lock.porte_vélos,Antivol pour porte-vélos,lock.porte_velosX,Peux-tu verrouiller l'antivol de la portevélos ?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.porte_velosX', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","D'accord, je réessaie avec l'antivol pour portevélos."
switch.turn_on,switch.atelier_lights,Interrupteur d'éclairage d'atelier,switch.lights_atelier,"Allume les lumières de l'atelier, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.lights_atelier', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Très bien, je réessaye avec l'interrupteur d'éclairage d'atelier."
media_player.media_play_pause,media_player.sunroom_cd_player,Lecteur CD dans la véranda,media_player.sunroom_cd,Peux-tu mettre en pause le lecteur CD dans la véranda?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.sunroom_cd', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Très bien, je réessaie avec le bon appareil."
vacuum.return_to_base,vacuum.entrée_eufy,Dépoussiéreur d'entrée,vacuum.eufy_entrée,"Ramène le dépoussiéreur d'entrée à sa base, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.eufy_entrée', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","D'accord, je réessaie avec le dépoussiéreur d'entrée."
climate.turn_off,climate.kono_thermostat,Thermostat intelligent Kono,climate.kono_thermostat_pro,"Éteins le thermostat intelligent Kono, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.kono_thermostat_pro', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Très bien, je réessaye avec le thermostat intelligent Kono."
blinds.toggle,blinds.couloir_2,Stores du deuxième couloir,blinds.couloir_2b,Baisse les stores du deuxième couloir.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.couloir_2b', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","D'accord, je réessaie avec les Stores du deuxième couloir."
blinds.toggle,blinds.patio,Stores de terrasse,blinds.patio_terrasse,Peux-tu ouvrir les stores de la terrasse ?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.patio_terrasse', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","D'accord, je réessaie avec les Stores de terrasse."
climate.turn_on,climate.zen_wifi_thermostat,Thermostat Zen Édition WiFi,climate.zenwifi_thermostat,"Peux-tu allumer le thermostat Zen WiFi, s'il te plaît ?","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.zenwifi_thermostat', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","D'accord, je réessaye avec le thermostat Zen Édition WiFi."
climate.turn_off,climate.mysa_smart_thermostat,Thermostat intelligent Mysa pour plinthes électriques,climate.mysa_smart_thermostat_v2,Éteins le thermostat intelligent Mysa pour les plinthes électriques.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.mysa_smart_thermostat_v2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Je réessaye avec le bon thermostat.
media_player.volume_down,media_player.vizio_smartcast_tv,Téléviseur compatible Vizio Cast,media_player.vizio_smartcaste_tv,Baisse le volume du téléviseur Vizio Cast.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.vizio_smartcaste_tv', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Très bien, je réessaye avec le bon appareil."
light.turn_off,light.downstairs_utility_homekit,Lumière utilitaire en bas,light.utility_downstairs_homekit,"Éteins la lumière utilitaire en bas, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.utility_downstairs_homekit', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Très bien, je réessaie avec le bon appareil."
switch.turn_off,switch.lumières_entrepôt,Interrupteur de lumières d'entrepôt,switch.lumière_entrepôt,"Éteins les lumières de l'entrepôt, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.lumière_entrepôt', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Je réessaie avec l'interrupteur de lumières d'entrepôt.
switch.toggle,switch.lumières_entrepôt,Interrupteur de lumières d'entrepôt,switch.lumier_entrepôt,"Bascule les lumières de l'entrepôt, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.lumier_entrepôt', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","D'accord, je réessaie avec l'interrupteur de lumières d'entrepôt."
blinds.stop_cover,blinds.fenêtre_arrière,Stores de fenêtre arrière,blinds.fenêtre_arrièree,"Arrête les stores de la fenêtre arrière, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.fenêtre_arrièree', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","D'accord, je réessaie avec le bon dispositif: blinds.fenêtre_arrière."
fan.turn_on,fan.le_porche,Ventilateur de porche,fan.le_porché,Peux-tu allumer le ventilateur du porche?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.le_porché', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","D'accord, je réessaye avec le bon appareil (fan.le_porche)."
vacuum.stop,vacuum.garage_roomba_2,Robot de nettoyage de garage,vacuum.garage_roomba_2_extra,"Arrête le robot de nettoyage du garage, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.garage_roomba_2_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Très bien, je tente avec le bon appareil."
blinds.close_cover,blinds.garderie,Stores de chambre d'enfant,blinds.garde,"Ferme les stores de la chambre d'enfant, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.garde', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Très bien, je réessaye avec les stores de la chambre d'enfant."
lock.lock,lock.cave_à_vin,Serrure de cave à vin,lock.cave_vin,"Verrouille la cave à vin, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.cave_vin', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Je réessaie avec la serrure de la cave à vin.
fan.increase_speed,fan.étude,fan d'étude,fan.etudex,"Augmente la vitesse du ventilateur d'étude, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.etudex', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","D'accord, je réessaie avec le ventilateur d'étude."
fan.turn_off,fan.chambre_des_enfants,Ventilateur pour chambre d'enfant,fan.chambre_des_enfan,"Éteins le ventilateur de la chambre d'enfant, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.chambre_des_enfan', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Très bien, je réessaie avec le ventilateur pour la chambre d'enfant."
vacuum.start,vacuum.couloir_neato,Nettoyant pour allées de couloir,vacuum.couloir_neato_pro,"Démarre le nettoyant pour allées de couloir, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.couloir_neato_pro', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Très bien, je réessaie avec le bon appareil."
vacuum.start,vacuum.salle_à_manger_area_bissel,Détachant la saleté de la salle à manger,vacuum.salle_à_manger_zone_bissel,"Démarre le robot aspirateur dans la salle à manger, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.salle_à_manger_zone_bissel', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Très bien, je réessaie avec le bon appareil."
garage_door.toggle,garage_door.abri_d'auto,Porte de garage pour abri d'auto,garage_door.abri_auto,Peux-tu ouvrir la porte du garage pour l'abri d'auto ?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.abri_auto', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","D'accord, je réessaie avec la porte de garage pour abri d'auto."
garage_door.close_cover,garage_door.côté,Porte de garage latérale,garage_door.côté_porte,Ferme la porte de garage latérale.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.côté_porte', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","D'accord, j'essaie avec la bonne entité."
switch.turn_off,switch.water_feature_lights,Interrupteur d'éclairage de jeu d'eau,switch.water_features_lights,"Éteins les lumières du jeu d'eau, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.water_features_lights', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Je réessaye avec l'interrupteur correct.
light.turn_off,light.salon,Lumière du salon,light.sallon,"Éteins la lumière du salon, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.sallon', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Très bien, je réessaie avec la lumière du salon."
light.turn_off,light.back_family_room_warm,"Salle familiale arrière, lumière chaude",light.back_familyroom_warm,"Éteins la lumière de la salle familiale arrière, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.back_familyroom_warm', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Je réessaye avec la bonne lumière (light.back_family_room_warm).
light.toggle,light.upstairs_children_chambre_zigbee,Lampe de chambre d'enfant à l'étage,light.upstairs_chambre_children_zigbee,Allume la lampe de la chambre d'enfant à l'étage.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.upstairs_chambre_children_zigbee', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","D'accord, je réessaie avec la lampe de la chambre d'enfant à l'étage."
light.turn_on,light.lustre_salle_à_manger,Lustre de salle à manger,light.lustre_à_manger_salle,"Allume le lustre de la salle à manger à 90% de luminosité, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.lustre_à_manger_salle', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Très bien, je réessaye avec le lustre de la salle à manger."
fan.increase_speed,fan.extérieur,Ventilateur extérieur,fan.extérieur2,"Augmente la vitesse du ventilateur extérieur, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.extérieur2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","D'accord, je réessaie avec le ventilateur extérieur."
fan.turn_off,fan.salon_chambre_1,Ventilateur du salon,fan.salon_chambre_un,"Éteins le ventilateur du salon, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.salon_chambre_un', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","D'accord, j'essaie maintenant avec le ventilateur du salon."
garage_door.open_cover,garage_door.abri_d'auto,Porte d'abri de voiture,garage_door.abri_auto,"Ouvre le couvercle du garage, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.abri_auto', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","D'accord, j'essaie avec le bon dispositif."
blinds.toggle,blinds.chambre_d'amis,Stores de chambre d'amis,blinds.chambre_d'amis_extra,Ferme les stores de la chambre d'amis.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.chambre_d'amis_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","D'accord, je réessaie avec le bon appareil."
light.turn_on,light.chambre_3,Lumière de la chambre,light.chambre_33,"Allume la lumière de la chambre, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.chambre_33', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Très bien, je réessaye avec la bonne lampe."
fan.turn_off,fan.salle_à_manger,Ventilateur de salle à manger,fan.salle_à_manger_2,"Éteins le ventilateur de la salle à manger, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.salle_à_manger_2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Très bien, je réessaie avec le ventilateur de la salle à manger."
switch.turn_off,switch.grenier_lights,Interrupteur d'éclairage du grenier,switch.grenier_lights_main,"Éteins les lumières du grenier, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.grenier_lights_main', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Très bien, je réessaie avec l'interrupteur d'éclairage du grenier."
garage_door.toggle,garage_door.main_1,Porte de garage principale,garage_door.main_one,Bascule la porte de garage principale.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.main_one', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","D'accord, je réessaye avec la porte de garage principale."
switch.turn_off,switch.front_gate_lighting,Interrupteur des feux de porte avant,switch.front_gate_lightng,"Éteins les feux de la porte avant, s'il te plaît.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.front_gate_lightng', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","D'accord, je réessaie avec l'interrupteur des feux de porte avant."
light.toggle,light.en_bas_courtyard_mqtt,Lumière de la cour en bas,light.en_base_courtyard_mqtt,Bascule la lumière de la cour en bas.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.en_base_courtyard_mqtt', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","D'accord, j'essaie avec le bon appareil."
blinds.stop_cover,blinds.salle_d'artisanat,Stores pour salle d'artisanat,blinds.salle_d'artisanat_extra,Arrête les stores de la salle d'artisanat.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.salle_d'artisanat_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Très bien, je réessaie avec les stores pour la salle d'artisanat."
1 service_name correct_device_name correct_friendly_name bad_device_name phrase error_result retry_prompt
2 light.turn_on light.living_room_lamp Lampe du salon light.livng_room_lamp Veuillez allumer la <device_name>. Erreur : entité light.livng_room_lamp introuvable. Je vais essayer la lampe du salon à la place.
3 climate.set_temperature climate.hallway Thermostat du couloir climate.halway Règle la <device_name> à <temp_f> degrés. Erreur : entité climate.halway introuvable. Nouvelle tentative avec le thermostat du couloir.
4 fan.turn_off fan.office Ventilateur du bureau fan.offce Éteins le <device_name>. Erreur : entité fan.offce introuvable. Je vais réessayer avec le ventilateur du bureau.
5 garage_door.open_cover garage_door.liftmaster_1 LiftMaster garage_door.lift_master_1 Ouvre le couvercle du garage, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.lift_master_1', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> D'accord, je réessaie avec le bon dispositif : garage_door.liftmaster_1.
6 light.turn_on light.front_sunroom_ge Lumière de véranda avant light.front_sunroom_ge_extra Allume la lumière de la véranda avant en blanc, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.front_sunroom_ge_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Pas de problème, je réessaie avec la bonne lumière.
7 light.turn_on light.philips_hue_1 Philips Hue light.philips_hue_1_main Allume la lumière du salon, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.philips_hue_1_main', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Très bien, je réessaie avec le dispositif correct.
8 lock.unlock lock.la_porte_du_patio Porte patio coulissante lock.patio_du_porte Peux-tu déverrouiller la porte patio coulissante ? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.patio_du_porte', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Très bien, je réessaie avec la porte patio coulissante.
9 fan.increase_speed fan.grenier_ventilation Ventilateur de grenier fan.grenierventilation_plus Augmente la vitesse du ventilateur du grenier, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.grenierventilation_plus', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Je réessaie avec le bon appareil : fan.grenier_ventilation.
10 media_player.turn_off media_player.sonos_beam Barre de son compacte Sonos media_player.sonos_beam_salon Éteins la barre de son compacte Sonos, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.sonos_beam_salon', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Très bien, je réessaie avec la bonne barre de son.
11 switch.toggle switch.front_gate_lighting Interrupteur des feux de porte avant switch.front_gate_lightings Allume les feux de la porte avant, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.front_gate_lightings', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> D'accord, je réessaie avec l'interrupteur des feux de porte avant.
12 vacuum.stop vacuum.patio_doorway_vac Nettoyant pour porte-patio vacuum.patio_doorway_vacx Arrête le nettoyant pour porte-patio, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.patio_doorway_vacx', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Je réessaie avec le bon appareil.
13 climate.turn_off climate.netatmo_smart Thermostat Intelligent Netatmo climate.netatmo_sma Éteins le thermostat intelligent Netatmo, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.netatmo_sma', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Très bien, je réessaie avec le bon appareil : climate.netatmo_smart.
14 switch.turn_off switch.salle_à_manger_lights Interrupteur d'éclairage de salle à manger switch.salle_à_manger_lumens Éteins les lumières de la salle à manger. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.salle_à_manger_lumens', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> D'accord, j'essaie avec le bon interrupteur.
15 blinds.stop_cover blinds.fenêtre_arrière Stores de fenêtre arrière blinds.fenêtre_arriè Arrête les stores de la fenêtre arrière. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.fenêtre_arriè', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> D'accord, je réessaie avec les stores de fenêtre arrière.
16 fan.decrease_speed fan.salle_de_bain_bas Ventilateur dans la salle de bain du rez-de-chaussée fan.salle_de_bain_basse Baisse la vitesse du ventilateur de la salle de bain du rez-de-chaussée. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.salle_de_bain_basse', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Je réessaie avec le bon dispositif : fan.salle_de_bain_bas.
17 lock.lock lock.porte_latérale Serrure de portail latérale lock.porte_latérale_ext Verrouille la porte latérale du garage, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.porte_latérale_ext', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> D'accord, je réessaie avec la serrure correcte.
18 light.toggle light.cuisine_étagère_cool Étagère de cuisine lumière froide light.cuisine_étagère_cooler Peux-tu allumer ou éteindre la lumière de l'étagère de cuisine froide ? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.cuisine_étagère_cooler', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Je réessaye avec l'étagère de cuisine lumière froide.
19 climate.turn_off climate.netatmo_smart Thermostat Intelligent Netatmo climate.netatmo_sma Éteins le thermostat intelligent. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.netatmo_sma', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Très bien, je réessaie avec le thermostat Netatmo.
20 garage_door.open_cover garage_door.sous_sol Porte de garage du sous-sol garage_door.sous_sol_porte Ouvre la couverture du garage du sous‑sol, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.sous_sol_porte', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> D'accord, je réessaie avec le bon appareil.
21 light.turn_off light.front_recreation_ge Lumière de loisirs avant light.front_recreation_ge_bis Éteins la Lumière de loisirs avant, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.front_recreation_ge_bis', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> D'accord, je réessaye avec la bonne lumière.
22 blinds.close_cover blinds.salon_room_large Stores du salon principal blinds.salon_room_largex Ferme les stores du salon principal. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.salon_room_largex', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Très bien, je réessaie avec les Stores du salon principal.
23 vacuum.stop vacuum.front_hall_samsung Robot de balayage du hall d'entrée vacuum.front_hall_samsung_pro Arrête le robot de balayage du hall d'entrée, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.front_hall_samsung_pro', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Très bien, je réessaye avec le bon appareil.
24 vacuum.stop vacuum.patio_doorway_vac Nettoyant pour porte-patio vacuum.patio_doorway Arrête le nettoyant pour porte-patio, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.patio_doorway', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Je réessaie avec le bon appareil.
25 vacuum.stop vacuum.à_l'étage_salle_de_bain_vac Aide à la salle de bain à l'étage vacuum.à_l'étage_salle_de_bain Arrête le robot aspirateur de la salle de bain à l'étage, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.à_l'étage_salle_de_bain', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> D'accord, je réessaie avec le bon dispositif.
26 climate.turn_off climate.mysa_smart_thermostat Thermostat intelligent Mysa pour plinthes électriques climate.mysa_thermostat_smart_pro Éteins le thermostat intelligent Mysa pour plinthes électriques. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.mysa_thermostat_smart_pro', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Très bien, je réessaie avec le bon thermostat.
27 climate.turn_on climate.honeywell_lyric_t6 Honeywell Lyric T6 Pro climate.honeywell_lyric_t6_pro Allume le chauffage dans le salon, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.honeywell_lyric_t6_pro', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Très bien, je réessaie avec le thermostat Honeywell Lyric T6.
28 fan.turn_on fan.chambre_d'amis Ventilateur de chambre d'amis fan.chambre_amis Allume le ventilateur de la chambre d'amis, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.chambre_amis', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Je réessaye avec le ventilateur de la chambre d'amis.
29 media_player.volume_down media_player.garage_atelier_stéréo Stéréo Garage Atelier media_player.stéréo_garage_atelier Baisse le volume de la Stéréo du garage atelier. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.stéréo_garage_atelier', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Très bien, je réessaie avec le bon appareil.
30 media_player.volume_down media_player.sous_sol Lecteur multimédia du sous-sol media_player.soussol Baisse le volume du lecteur multimédia du sous-sol. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.soussol', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Très bien, j'utilise le bon appareil : Lecteur multimédia du sous-sol.
31 vacuum.stop vacuum.entrée_eufy Dépoussiéreur d'entrée vacuum.entr_eufy Arrête le dépoussiéreur d'entrée, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.entr_eufy', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> D'accord, je réessaye avec le bon appareil.
32 climate.turn_off climate.netatmo_smart Thermostat Intelligent Netatmo climate.netatmo_smar Éteins le thermostat intelligent Netatmo. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.netatmo_smar', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Très bien, je réessaie avec le bon appareil.
33 light.turn_on light.chambre_2 Lumière de la chambre light.chambre_2_ext Allume la lumière de la chambre en violet, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.chambre_2_ext', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Très bien, je réessaie avec la lumière de la chambre.
34 switch.turn_off switch.lumières_sous_sol Interrupteur des lumières du sous-sol switch.lumières_sous Éteins les lumières du sous‑sol, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.lumières_sous', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Je réessaie avec le bon appareil : switch.lumières_sous_sol.
35 switch.turn_on switch.front_gate_lighting Interrupteur des feux de porte avant switch.front_gate_light Allume les feux de la porte avant, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.front_gate_light', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Très bien, je réessaie avec l'Interrupteur des feux de porte avant.
36 blinds.close_cover blinds.ikea_smart Stores intelligents Ikea blinds.ikea_smart_v2 Ferme les stores intelligents Ikea, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.ikea_smart_v2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> D'accord, je réessaie avec le bon dispositif.
37 blinds.stop_cover blinds.salle_de_bain_1 Premiers stores de salle de bain blinds.salle_de_bain_01 Arrête les stores de la salle de bain, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.salle_de_bain_01', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Très bien, je réessaie avec le bon dispositif.
38 blinds.stop_cover blinds.fenêtre_arrière Stores de fenêtre arrière blinds.fenêtre_arriè Arrête les stores de la fenêtre arrière. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.fenêtre_arriè', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Je réessaie avec le bon appareil.
39 vacuum.stop vacuum.chambre_invité_en_bas Chambre d'amis en bas vacuum.chambre_invité_en Arrête l'aspirateur de la chambre d'amis en bas, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.chambre_invité_en', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> D'accord, je réessaye avec le bon appareil : vacuum.chambre_invité_en_bas.
40 lock.lock lock.porte_terrasse Serrure de porte de terrasse lock.porte_terrasse_ext Verrouille la porte de la terrasse, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.porte_terrasse_ext', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> D'accord, je réessaie avec la bonne serrure : lock.porte_terrasse.
41 climate.turn_off climate.emerson_sensi_touch Thermostat Wi-Fi Emerson Sensi Touch climate.emerson_sensi_touch_v2 Éteins le thermostat Wi‑Fi de la salle de séjour. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.emerson_sensi_touch_v2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Très bien, je réessaie avec le thermostat correct.
42 vacuum.stop vacuum.couloir_neato Nettoyant pour allées de couloir vacuum.couloirneato Arrête le robot aspirateur du couloir, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.couloirneato', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> D'accord, j'essaie avec le bon appareil.
43 vacuum.return_to_base vacuum.salon_room_roomba Aspirateur de salon vacuum.salonroom_roomba_plus Aspirateur de salon, retourne à la base s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.salonroom_roomba_plus', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> D'accord, je réessaie avec l'Aspirateur de salon.
44 media_player.volume_down media_player.cinéma_maison Médias de cinéma maison media_player.cinéma_maison_salon Baisse le volume du cinéma maison, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.cinéma_maison_salon', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> D'accord, je réessaie avec le bon appareil.
45 blinds.toggle blinds.salle_de_bain Stores de salle de bain blinds.salle_de_bains Ferme les stores de la salle de bain. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.salle_de_bains', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Très bien, je réessaie avec le bon dispositif.
46 lock.unlock lock.chambre_2 Serrure de la deuxième chambre lock.chambre_deux Peux-tu déverrouiller la serrure de la deuxième chambre, s'il te plaît ? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.chambre_deux', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> D'accord, je réessaie avec la bonne serrure de la deuxième chambre.
47 blinds.close_cover blinds.chambre_d'amis Stores de chambre d'amis blinds.chambre_d'ami Ferme les stores de la chambre d'amis, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.chambre_d'ami', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> D'accord, je réessaie avec le bon dispositif.
48 garage_door.stop_cover garage_door.voiturette_de_golf Porte de voiturette de golf garage_door.voiturette_golf Arrête la porte du garage de la voiturette de golf. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.voiturette_golf', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Très bien, je réessaie avec la porte de la voiturette de golf.
49 vacuum.stop vacuum.patio_doorway_vac Nettoyant pour porte-patio vacuum.patio_doorway Arrête le nettoyant pour porte-patio. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.patio_doorway', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Très bien, je réessaie avec le bon dispositif.
50 vacuum.return_to_base vacuum.left_corner_bot Aspirateur de saleté du coin gauche vacuum.left_corn_bot Aspirateur de saleté du coin gauche, retourne à la base s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.left_corn_bot', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> D'accord, je réessaie avec l'aspirateur du coin gauche.
51 fan.turn_off fan.grenier_2 Ventilateurs de grenier fan.grenier_2a Éteins le ventilateur du grenier, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.grenier_2a', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Très bien, je réessaie avec le bon appareil.
52 blinds.stop_cover blinds.salle_de_bain_1 Premiers stores de salle de bain blinds.salle_bain_1 Arrête les stores de la salle de bain. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.salle_bain_1', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> D'accord, je réessaie avec le bon appareil.
53 climate.turn_off climate.johnson_glas Thermostat intelligent GLAS de Johnson Controls climate.johnson_glass Éteins le thermostat intelligent GLAS de Johnson Controls, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.johnson_glass', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Je réessaye avec le bon thermostat.
54 vacuum.return_to_base vacuum.entrée_eufy Dépoussiéreur d'entrée vacuum.entrée_eufy_v2 Ramène le dépoussiéreur d'entrée à sa base. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.entrée_eufy_v2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Très bien, je réessaie avec le bon appareil.
55 climate.set_temperature climate.tado_smart Thermostat intelligent Tado climate.tado_smart_pro Peux-tu régler le thermostat à <temp_f> degrés ? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.tado_smart_pro', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> D'accord, je réessaie avec le thermostat Tado.
56 vacuum.start vacuum.salle_à_manger_area_bissel Détachant la saleté de la salle à manger vacuum.salle_à_manger_area_biss Démarre le robot aspirateur dans la salle à manger, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.salle_à_manger_area_biss', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Très bien, je réessaie avec le bon appareil.
57 blinds.close_cover blinds.somfy_cuisine Stores de cuisine blinds.cuisine_somfy Ferme les stores de la cuisine. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.cuisine_somfy', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> D'accord, je réessaie avec les stores de cuisine.
58 light.turn_on light.front_utility_ge Éclairage utilitaire avant light.front_utility_gear Allume l'éclairage utilitaire avant, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.front_utility_gear', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> D'accord, je réessaye avec l'éclairage utilitaire avant.
59 media_player.turn_off media_player.bang_olufsen_beovision Télévision haut de gamme B&O media_player.bang_olufsen_beovisio Éteins la télévision haut de gamme B&O, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.bang_olufsen_beovisio', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> D'accord, je réessaye avec le bon appareil.
60 vacuum.return_to_base vacuum.couloir_neato Nettoyant pour allées de couloir vacuum.couloir_neatox Assistant, renvoie le nettoyant pour allées de couloir à sa base. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.couloir_neatox', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Très bien, je réessaye avec le bon appareil.
61 garage_door.close_cover garage_door.principal Porte de garage principale garage_door.principal_ext Ferme la porte du garage principale. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.principal_ext', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Je réessaye avec la porte de garage principale.
62 blinds.close_cover blinds.chambre_des_enfants Stores pour chambres d'enfants blinds.chambre_des_enfants_v2 Ferme les stores de la chambre des enfants, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.chambre_des_enfants_v2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> D'accord, je réessaie avec le bon appareil.
63 vacuum.stop vacuum.left_corner_bot Aspirateur de saleté du coin gauche vacuum.corner_left_bot Arrête l'aspirateur du coin gauche, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.corner_left_bot', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Très bien, je réessaie avec l'aspirateur de saleté du coin gauche.
64 fan.increase_speed fan.chambre_à_coucher Ventilateur de chambre fan.chambre_à_couché Augmente la vitesse du ventilateur de la chambre, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.chambre_à_couché', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Très bien, je réessaye avec le ventilateur de chambre.
65 vacuum.start vacuum.right_stairwell_sweeper Nettoyeur d'escalier droit vacuum.right_stairwell_swipper Démarre le nettoyeur d'escalier droit, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.right_stairwell_swipper', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> D'accord, je réessaye avec le bon appareil.
66 lock.unlock lock.salle_de_sport Serrure de salle de sport à domicile lock.salle_de_spor Déverrouille la serrure de la salle de sport à domicile. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.salle_de_spor', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Très bien, je réessaie avec la bonne serrure.
67 lock.lock lock.chenil Serrure pour chenil pour animaux lock.chenil_ext Verrouille la serrure du chenil pour animaux. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.chenil_ext', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Très bien, j'utilise la bonne serrure du chenil.
68 switch.turn_off switch.guest_room_lights Interrupteur d'éclairage de chambre d'amis switch.guest_room_lights_extra Éteins les lumières de la chambre d'amis. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.guest_room_lights_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Je réessaie avec l'interrupteur correct.
69 vacuum.start vacuum.kitchen_xiaomi Aspirateur de cuisine vacuum.kithen_xiaomi Peux-tu démarrer l'aspirateur de la cuisine ? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.kithen_xiaomi', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> D'accord, j'essaie avec l'aspirateur de cuisine.
70 climate.turn_off climate.sinope_smart Thermostat intelligent Sinopé climate.sinope_smart_plus Éteins le thermostat intelligent Sinopé. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.sinope_smart_plus', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> D'accord, je réessaie avec le thermostat intelligent Sinopé.
71 media_player.volume_up media_player.cuisine_radio Lecteur radio de cuisine media_player.cuisine_radiox Augmente le volume du lecteur radio de cuisine. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.cuisine_radiox', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Très bien, je réessaie avec le lecteur radio de cuisine.
72 light.turn_on light.back_sunroom_warm Lumière chaude de la véranda arrière light.back_sunroom_warm_extra Allume la lumière chaude de la véranda arrière, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.back_sunroom_warm_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Très bien, je réessaie avec la bonne lumière.
73 fan.increase_speed fan.chambre_des_enfants Ventilateur pour chambre d'enfant fan.chambre_des_enfants Augmente la vitesse du ventilateur pour la chambre d'enfant. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.chambre_des_enfants', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> D'accord, j'essaie avec le bon dispositif.
74 lock.lock lock.buanderie Serrure de buanderie lock.buanderie_extra Verrouille la serrure de la buanderie, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.buanderie_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Je réessaie avec la serrure de buanderie.
75 climate.turn_off climate.zen_wifi_thermostat Thermostat Zen Édition WiFi climate.zen_wifi_thermostat_pro Éteins le thermostat Zen Édition WiFi. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.zen_wifi_thermostat_pro', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Je réessaie avec le thermostat Zen Édition WiFi.
76 climate.turn_off climate.nest_learning Thermostat d'apprentissage Nest climate.nst_learning Éteins le thermostat d'apprentissage Nest. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.nst_learning', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Très bien, je vais essayer avec le thermostat Nest.
77 fan.turn_off fan.chambre_maître Ventilateur de la chambre principale fan.chambre_maître_salon Éteins le ventilateur de la chambre principale, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.chambre_maître_salon', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> D'accord, je réessaie avec le bon appareil.
78 fan.decrease_speed fan.chambre_des_enfants Ventilateur pour chambre d'enfant fan.chambre_des_enfant Baisse la vitesse du ventilateur de la chambre d'enfant, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.chambre_des_enfant', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> D'accord, je réessaye avec le bon ventilateur.
79 switch.toggle switch.atelier_lights Interrupteur d'éclairage d'atelier switch.atelier_lights_v2 Bascule l'interrupteur d'éclairage d'atelier. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.atelier_lights_v2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Je réessaye avec l'interrupteur d'éclairage d'atelier.
80 climate.turn_off climate.zen_wifi_thermostat Thermostat Zen Édition WiFi climate.zen_thermostat_wifi Éteins le thermostat Zen Édition WiFi <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.zen_thermostat_wifi', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> D'accord, je réessaye avec le thermostat Zen.
81 switch.turn_on switch.lumières_sauna Interrupteur pour lumières de sauna switch.lumières_suana Allume les lumières du sauna, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.lumières_suana', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Très bien, je réessaye avec l'interrupteur correct.
82 lock.lock lock.porte_sur_le_toit Serrure d'accès au toit lock.porte_sur_le Verrouille la serrure d'accès au toit, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.porte_sur_le', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Très bien, je réessaie avec la Serrure d'accès au toit.
83 switch.turn_on switch.lumières_cuisine Interrupteur d'éclairage de cuisine switch.cuisine_lumières Allume les lumières de la cuisine, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.cuisine_lumières', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Très bien, je réessaie avec l'interrupteur d'éclairage de cuisine.
84 light.turn_off light.cuisine Lumière de cuisine light.cuisinex Éteins la lumière de la cuisine, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.cuisinex', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Très bien, je réessaie avec la lumière de cuisine.
85 lock.lock lock.porte_vélos Antivol pour porte-vélos lock.porte_velosX Peux-tu verrouiller l'antivol de la porte‑vélos ? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.porte_velosX', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> D'accord, je réessaie avec l'antivol pour porte‑vélos.
86 switch.turn_on switch.atelier_lights Interrupteur d'éclairage d'atelier switch.lights_atelier Allume les lumières de l'atelier, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.lights_atelier', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Très bien, je réessaye avec l'interrupteur d'éclairage d'atelier.
87 media_player.media_play_pause media_player.sunroom_cd_player Lecteur CD dans la véranda media_player.sunroom_cd Peux-tu mettre en pause le lecteur CD dans la véranda ? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.sunroom_cd', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Très bien, je réessaie avec le bon appareil.
88 vacuum.return_to_base vacuum.entrée_eufy Dépoussiéreur d'entrée vacuum.eufy_entrée Ramène le dépoussiéreur d'entrée à sa base, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.eufy_entrée', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> D'accord, je réessaie avec le dépoussiéreur d'entrée.
89 climate.turn_off climate.kono_thermostat Thermostat intelligent Kono climate.kono_thermostat_pro Éteins le thermostat intelligent Kono, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.kono_thermostat_pro', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Très bien, je réessaye avec le thermostat intelligent Kono.
90 blinds.toggle blinds.couloir_2 Stores du deuxième couloir blinds.couloir_2b Baisse les stores du deuxième couloir. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.couloir_2b', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> D'accord, je réessaie avec les Stores du deuxième couloir.
91 blinds.toggle blinds.patio Stores de terrasse blinds.patio_terrasse Peux-tu ouvrir les stores de la terrasse ? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.patio_terrasse', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> D'accord, je réessaie avec les Stores de terrasse.
92 climate.turn_on climate.zen_wifi_thermostat Thermostat Zen Édition WiFi climate.zenwifi_thermostat Peux-tu allumer le thermostat Zen WiFi, s'il te plaît ? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.zenwifi_thermostat', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> D'accord, je réessaye avec le thermostat Zen Édition WiFi.
93 climate.turn_off climate.mysa_smart_thermostat Thermostat intelligent Mysa pour plinthes électriques climate.mysa_smart_thermostat_v2 Éteins le thermostat intelligent Mysa pour les plinthes électriques. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.mysa_smart_thermostat_v2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Je réessaye avec le bon thermostat.
94 media_player.volume_down media_player.vizio_smartcast_tv Téléviseur compatible Vizio Cast media_player.vizio_smartcaste_tv Baisse le volume du téléviseur Vizio Cast. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.vizio_smartcaste_tv', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Très bien, je réessaye avec le bon appareil.
95 light.turn_off light.downstairs_utility_homekit Lumière utilitaire en bas light.utility_downstairs_homekit Éteins la lumière utilitaire en bas, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.utility_downstairs_homekit', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Très bien, je réessaie avec le bon appareil.
96 switch.turn_off switch.lumières_entrepôt Interrupteur de lumières d'entrepôt switch.lumière_entrepôt Éteins les lumières de l'entrepôt, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.lumière_entrepôt', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Je réessaie avec l'interrupteur de lumières d'entrepôt.
97 switch.toggle switch.lumières_entrepôt Interrupteur de lumières d'entrepôt switch.lumier_entrepôt Bascule les lumières de l'entrepôt, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.lumier_entrepôt', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> D'accord, je réessaie avec l'interrupteur de lumières d'entrepôt.
98 blinds.stop_cover blinds.fenêtre_arrière Stores de fenêtre arrière blinds.fenêtre_arrièree Arrête les stores de la fenêtre arrière, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.fenêtre_arrièree', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> D'accord, je réessaie avec le bon dispositif : blinds.fenêtre_arrière.
99 fan.turn_on fan.le_porche Ventilateur de porche fan.le_porché Peux-tu allumer le ventilateur du porche ? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.le_porché', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> D'accord, je réessaye avec le bon appareil (fan.le_porche).
100 vacuum.stop vacuum.garage_roomba_2 Robot de nettoyage de garage vacuum.garage_roomba_2_extra Arrête le robot de nettoyage du garage, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.garage_roomba_2_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Très bien, je tente avec le bon appareil.
101 blinds.close_cover blinds.garderie Stores de chambre d'enfant blinds.garde Ferme les stores de la chambre d'enfant, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.garde', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Très bien, je réessaye avec les stores de la chambre d'enfant.
102 lock.lock lock.cave_à_vin Serrure de cave à vin lock.cave_vin Verrouille la cave à vin, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.cave_vin', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Je réessaie avec la serrure de la cave à vin.
103 fan.increase_speed fan.étude fan d'étude fan.etudex Augmente la vitesse du ventilateur d'étude, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.etudex', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> D'accord, je réessaie avec le ventilateur d'étude.
104 fan.turn_off fan.chambre_des_enfants Ventilateur pour chambre d'enfant fan.chambre_des_enfan Éteins le ventilateur de la chambre d'enfant, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.chambre_des_enfan', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Très bien, je réessaie avec le ventilateur pour la chambre d'enfant.
105 vacuum.start vacuum.couloir_neato Nettoyant pour allées de couloir vacuum.couloir_neato_pro Démarre le nettoyant pour allées de couloir, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.couloir_neato_pro', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Très bien, je réessaie avec le bon appareil.
106 vacuum.start vacuum.salle_à_manger_area_bissel Détachant la saleté de la salle à manger vacuum.salle_à_manger_zone_bissel Démarre le robot aspirateur dans la salle à manger, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.salle_à_manger_zone_bissel', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Très bien, je réessaie avec le bon appareil.
107 garage_door.toggle garage_door.abri_d'auto Porte de garage pour abri d'auto garage_door.abri_auto Peux-tu ouvrir la porte du garage pour l'abri d'auto ? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.abri_auto', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> D'accord, je réessaie avec la porte de garage pour abri d'auto.
108 garage_door.close_cover garage_door.côté Porte de garage latérale garage_door.côté_porte Ferme la porte de garage latérale. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.côté_porte', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> D'accord, j'essaie avec la bonne entité.
109 switch.turn_off switch.water_feature_lights Interrupteur d'éclairage de jeu d'eau switch.water_features_lights Éteins les lumières du jeu d'eau, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.water_features_lights', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Je réessaye avec l'interrupteur correct.
110 light.turn_off light.salon Lumière du salon light.sallon Éteins la lumière du salon, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.sallon', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Très bien, je réessaie avec la lumière du salon.
111 light.turn_off light.back_family_room_warm Salle familiale arrière, lumière chaude light.back_familyroom_warm Éteins la lumière de la salle familiale arrière, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.back_familyroom_warm', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Je réessaye avec la bonne lumière (light.back_family_room_warm).
112 light.toggle light.upstairs_children_chambre_zigbee Lampe de chambre d'enfant à l'étage light.upstairs_chambre_children_zigbee Allume la lampe de la chambre d'enfant à l'étage. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.upstairs_chambre_children_zigbee', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> D'accord, je réessaie avec la lampe de la chambre d'enfant à l'étage.
113 light.turn_on light.lustre_salle_à_manger Lustre de salle à manger light.lustre_à_manger_salle Allume le lustre de la salle à manger à 90 % de luminosité, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.lustre_à_manger_salle', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Très bien, je réessaye avec le lustre de la salle à manger.
114 fan.increase_speed fan.extérieur Ventilateur extérieur fan.extérieur2 Augmente la vitesse du ventilateur extérieur, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.extérieur2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> D'accord, je réessaie avec le ventilateur extérieur.
115 fan.turn_off fan.salon_chambre_1 Ventilateur du salon fan.salon_chambre_un Éteins le ventilateur du salon, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.salon_chambre_un', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> D'accord, j'essaie maintenant avec le ventilateur du salon.
116 garage_door.open_cover garage_door.abri_d'auto Porte d'abri de voiture garage_door.abri_auto Ouvre le couvercle du garage, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.abri_auto', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> D'accord, j'essaie avec le bon dispositif.
117 blinds.toggle blinds.chambre_d'amis Stores de chambre d'amis blinds.chambre_d'amis_extra Ferme les stores de la chambre d'amis. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.chambre_d'amis_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> D'accord, je réessaie avec le bon appareil.
118 light.turn_on light.chambre_3 Lumière de la chambre light.chambre_33 Allume la lumière de la chambre, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.chambre_33', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Très bien, je réessaye avec la bonne lampe.
119 fan.turn_off fan.salle_à_manger Ventilateur de salle à manger fan.salle_à_manger_2 Éteins le ventilateur de la salle à manger, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.salle_à_manger_2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Très bien, je réessaie avec le ventilateur de la salle à manger.
120 switch.turn_off switch.grenier_lights Interrupteur d'éclairage du grenier switch.grenier_lights_main Éteins les lumières du grenier, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.grenier_lights_main', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Très bien, je réessaie avec l'interrupteur d'éclairage du grenier.
121 garage_door.toggle garage_door.main_1 Porte de garage principale garage_door.main_one Bascule la porte de garage principale. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.main_one', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> D'accord, je réessaye avec la porte de garage principale.
122 switch.turn_off switch.front_gate_lighting Interrupteur des feux de porte avant switch.front_gate_lightng Éteins les feux de la porte avant, s'il te plaît. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.front_gate_lightng', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> D'accord, je réessaie avec l'interrupteur des feux de porte avant.
123 light.toggle light.en_bas_courtyard_mqtt Lumière de la cour en bas light.en_base_courtyard_mqtt Bascule la lumière de la cour en bas. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.en_base_courtyard_mqtt', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> D'accord, j'essaie avec le bon appareil.
124 blinds.stop_cover blinds.salle_d'artisanat Stores pour salle d'artisanat blinds.salle_d'artisanat_extra Arrête les stores de la salle d'artisanat. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.salle_d'artisanat_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Très bien, je réessaie avec les stores pour la salle d'artisanat.

View File

@@ -0,0 +1,124 @@
reason_type,service_name,device_name,friendly_name,desired_state,phrase,response
not_available,lock.lock,back_door,Serrure de la porte arrière,,"Verrouille la <device_name>.","Je ne trouve pas de serrure de porte arrière à contrôler."
already_state,light.turn_on,hallway,Lumières du couloir,on,"Allume les <device_name>.","Les lumières du couloir sont déjà allumées."
already_state,switch.turn_off,garage,Prise du garage,off,"Éteins la <device_name>.","La prise du garage est déjà éteinte."
not_available,light.turn_off,allée,Éclairage d'allée,,Éteins le <device_name>,"Désolé, je ne trouve pas le <device_name> dans la maison."
already_state,blinds.close_cover,cuisine,Stores de cuisine,closed,Ferme le store <device_name>,"Le store <device_name> est déjà fermé, aucune action nest nécessaire."
not_available,garage_door.close_cover,une_voiture,Garage pour une voiture,,Ferme le <device_name>,"Désolé, je ne trouve pas le <device_name> dans votre maison."
not_available,climate.turn_on,mysa_smart_thermostat,Thermostat intelligent Mysa pour plinthes électriques,,Allume le climat <device_name>,"Désolé, je ne trouve pas le dispositif <device_name> dans votre maison."
already_state,blinds.open_cover,fenêtre_arrière,Stores de fenêtre arrière,open,Ouvre <device_name>,"Le volet est déjà ouvert, aucune action n'est nécessaire."
not_available,climate.turn_on,bosch_bcc100,Commande connectée Bosch BCC100,,Allume le climat <device_name>.,"Désolé, je ne trouve pas le dispositif <device_name> dans la maison."
already_state,climate.turn_off,sinope_smart,Thermostat intelligent Sinopé,off,Éteins le climat de <device_name>,"Le climat de <device_name> est déjà éteint, aucune action n'est nécessaire."
not_available,fan.turn_off,étude_1,Fan d'étude,,Éteins le <device_name>,"Désolé, je ne trouve pas ce dispositif dans la maison."
already_state,lock.unlock,fichier_cabinet,Serrure de classeur,unlocked,Déverrouille <device_name>,"Désolé, <device_name> est déjà déverrouillé, aucune action nest nécessaire."
not_available,climate.set_temperature,emerson_sensi_touch,Thermostat Wi-Fi Emerson Sensi Touch,,Régler la température du <device_name> à 18 degrés,"Désolé, je ne trouve pas le dispositif <device_name> dans la maison."
already_state,climate.turn_off,mysa_smart_thermostat,Thermostat intelligent Mysa pour plinthes électriques,off,Éteins le climat de <device_name>,"Le climat de <device_name> est déjà éteint, aucune action n'est nécessaire."
not_available,climate.set_temperature,transporteur_cor,Thermostat Wi-Fi Carrier Cor,,Régler la température du <device_name> à 23°C,"Désolé, je ne trouve pas le dispositif <device_name> dans la maison."
not_available,light.turn_off,front_playroom_homekit,Éclairage avant de la salle de jeux,,Éteins <device_name>,"Désolé, je ne trouve pas <device_name> dans la maison."
already_state,fan.turn_on,étude_2,Fan d'étude,on,Allume le ventilateur <device_name>,"Désolé, le ventilateur <device_name> est déjà allumé, aucune modification nest nécessaire."
not_available,media_player.volume_up,salle_de_jeu_console,Console de salle de jeux,,Augmente le volume de <device_name>,"Désolé, je ne trouve pas <device_name> dans votre domicile."
not_available,vacuum.start,kitchen_xiaomi,Aspirateur de cuisine,,Démarre le <device_name>,"Désolé, je ne trouve pas le <device_name> dans la maison."
not_available,media_player.media_play_pause,bose_living,Salon Bose,,Lecture/pause du média sur <device_name>,"Désolé, je ne trouve pas le dispositif <device_name> dans la maison."
not_available,lock.lock,portail_électrique,Serrure de portail électrique,,Verrouille <device_name>,"Je suis désolé, je ne trouve pas cet appareil dans la maison."
not_available,media_player.volume_down,ipad_cuisine,iPad de cuisine,,Baisser le volume du <device_name>,"Désolé, je ne trouve pas le <device_name> dans la maison."
not_available,light.toggle,en_bas_fireplace_mqtt,Lumière de cheminée en bas,,Bascule <device_name>,"Désolé, je ne trouve pas cet appareil dans la maison."
already_state,climate.turn_off,sinope_smart,Thermostat intelligent Sinopé,off,Éteins le climat de <device_name>,"Le climat de <device_name> est déjà éteint, aucune action n'est nécessaire."
not_available,blinds.stop_cover,chambre_des_enfants,Stores pour chambres d'enfants,,Arrête le store <device_name>,"Désolé, je ne trouve pas le dispositif <device_name> dans votre maison."
already_state,lock.unlock,porte_vélos,Antivol pour porte-vélos,unlocked,Déverrouille <device_name>,"Désolé, <device_name> est déjà déverrouillé, aucune action n'est nécessaire."
already_state,lock.lock,porte_sur_le_toit,Serrure d'accès au toit,locked,Verrouiller <device_name>,"Le <device_name> est déjà verrouillé, aucune action nest nécessaire."
not_available,garage_door.open_cover,côté_2,Porte de garage latérale,,Ouvre le couvercle du <device_name>,"Désolé, je ne trouve pas ce dispositif dans votre maison."
not_available,blinds.toggle,cuisine_fenêtre,Stores de fenêtre de cuisine,,Bascule <device_name>,"Désolé, je ne trouve pas <device_name> dans votre maison."
not_available,fan.turn_on,salon_room_center,Ventilateur central du salon,,Allume le <device_name>,"Désolé, je ne trouve pas le <device_name> dans votre maison."
already_state,switch.turn_on,water_feature_lights,Interrupteur d'éclairage de jeu d'eau,on,Allume <device_name>,"Le <device_name> est déjà allumé, aucune modification n'est nécessaire."
not_available,climate.turn_off,mysa_smart_thermostat,Thermostat intelligent Mysa pour plinthes électriques,,Éteins le climat de <device_name>,"Désolé, je ne trouve pas cet appareil dans votre maison."
already_state,vacuum.return_to_base,patio_doorway_vac,Nettoyant pour porte-patio,docked,Faire revenir <device_name> à la base,"Je suis désolé, <device_name> est déjà sur son socle, il ny a rien à faire."
already_state,blinds.close_cover,fenêtre_avant,Stores de fenêtre avant,closed,Fermer le volet <device_name>,"Le volet <device_name> est déjà fermé, aucune action n'est nécessaire."
already_state,vacuum.return_to_base,ci_dessus_escaliers_robot,Appareil à épousseter au-dessus des escaliers,docked,Faire retourner <device_name> à sa base,"Le <device_name> est déjà sur son socle, aucun déplacement nest nécessaire."
not_available,switch.turn_off,salon_room_lights,Interrupteur d'éclairage du salon,,Éteins <device_name>,"Désolé, je ne trouve pas cet appareil dans la maison."
already_state,media_player.media_play_pause,cuisine,Lecteur multimédia de cuisine,playing,Mettre en pause <device_name>,"Le lecteur <device_name> est déjà en lecture, aucune action nest nécessaire."
not_available,light.turn_on,à_l'étage_mancave_zigbee,Lumière de la grotte de l'homme à l'étage,,Allume la lumière <device_name> à 95% de luminosité,"Je suis désolé, je ne trouve pas cet appareil dans la maison."
not_available,fan.decrease_speed,salle_de_bain_bas,Ventilateur dans la salle de bain du rez-de-chaussée,,Baisser la vitesse du <device_name>,"Désolé, je ne trouve pas le <device_name> dans votre maison."
not_available,climate.turn_on,mysa_smart_thermostat,Thermostat intelligent Mysa pour plinthes électriques,,Allume le climat <device_name>,"Désolé, je ne trouve pas le dispositif <device_name> dans votre maison."
not_available,media_player.media_play_pause,ps5_living_room,Salon PS5,,Mets en pause <device_name>,"Désolé, je ne trouve pas le dispositif <device_name> dans votre maison."
not_available,blinds.open_cover,chambre_des_enfants,Stores pour chambres d'enfants,,Ouvre le volet <device_name>,"Désolé, je ne trouve pas ce dispositif dans la maison."
not_available,media_player.volume_down,epson_home_cinema,Vidéoprojecteur Epson,,Baisse le volume de <device_name>,"Désolé, je ne trouve pas le dispositif <device_name> dans la maison."
not_available,garage_door.open_cover,voiturette_de_golf,Garage pour voiturettes de golf,,Ouvre le couvercle du <device_name>,"Désolé, je ne trouve pas le <device_name> dans votre maison."
not_available,media_player.turn_off,chromecast,Médias Chromecast,,Éteins le lecteur multimédia <device_name>,"Désolé, je ne trouve pas cet appareil dans la maison."
not_available,blinds.open_cover,couloir,Stores de couloir,,Ouvre le volet <device_name>,"Je suis désolé, je ne trouve pas le dispositif <device_name> dans votre maison."
already_state,media_player.turn_on,garderie,Lecteur multimédia pour crèche,on,Allume le lecteur multimédia <device_name>,"Le <device_name> est déjà allumé, aucune action n'est nécessaire."
not_available,blinds.stop_cover,bureau,Stores de bureau,,Arrête le volet <device_name>,"Désolé, je ne trouve pas ce dispositif dans votre maison."
already_state,fan.turn_on,cuisine_2,Ventilateurs de cuisine,on,Allume le ventilateur <device_name>,"Le ventilateur <device_name> est déjà allumé, aucune modification n'est requise."
not_available,fan.toggle,salon_chambre_2,Ventilateur du salon,,Bascule <device_name>,"Désolé, je ne trouve pas ce dispositif dans la maison."
not_available,blinds.stop_cover,couloir,Stores de couloir,,Arrête <device_name>,"Désolé, je ne trouve pas cet appareil dans votre maison."
not_available,blinds.toggle,fenêtre_avant,Stores de fenêtre avant,,Bascule les <device_name>,"Désolé, je ne trouve pas <device_name> dans votre maison."
already_state,light.turn_on,garderie,Lumière de pépinière,on,Allume la lumière <device_name>,"Désolé, <device_name> est déjà allumée, aucune action n'est nécessaire."
not_available,media_player.turn_off,samsung_hw_q90r,Barre de son Surround Samsung,,Éteins le lecteur multimédia <device_name>,"Désolé, je ne trouve pas le dispositif <device_name> dans la maison."
not_available,switch.turn_off,den_lights,Interrupteur de lumières de salon,,Éteins le <device_name>,"Désolé, je ne trouve pas ce dispositif dans la maison."
not_available,garage_door.close_cover,camping_car,Porte de garage pour camping-car,,Ferme le couvercle du <device_name>,"Désolé, je ne trouve pas cet appareil dans votre maison."
not_available,garage_door.stop_cover,deux_voitures,Garage pour deux voitures,,Arrête le <device_name>,"Désolé, je ne trouve pas le dispositif <device_name> dans votre maison."
not_available,lock.lock,salle_de_sport,Serrure de salle de sport à domicile,,Verrouille le <device_name>,"Je suis désolé, mais je ne trouve pas le <device_name> dans la maison."
not_available,light.turn_on,cuisine_winecellar_warm,Lumière chaude de cave à vin de cuisine,,"Allume la lumière <device_name> à 54% de luminosité, couleur blanc froid.","Désolé, je ne trouve pas le dispositif <device_name> dans la maison."
already_state,media_player.media_play_pause,roku_chambre,Joueur Roku dans la chambre,playing,Mettre en pause <device_name>,"Le lecteur <device_name> joue déjà, aucune modification nest nécessaire."
already_state,climate.turn_on,tado_smart,Thermostat intelligent Tado,on,Allume le climatiseur <device_name>,"Le <device_name> est déjà allumé, aucune action n'est nécessaire."
not_available,light.turn_on,salle_à_manger_1,Lumière de la salle à manger,,Allume la lumière <device_name>,"Désolé, je ne trouve pas cet appareil dans la maison."
not_available,light.toggle,étude,Étudier la lumière,,Bascule <device_name>,"Désolé, je ne trouve pas le dispositif <device_name> dans la maison."
not_available,switch.toggle,utility_room_lights,Interrupteur d'éclairage de buanderie,,Bascule le <device_name>,"Désolé, je ne trouve pas ce dispositif dans votre maison."
not_available,lock.unlock,porte_d'entrée,Serrure de porte avant,,Déverrouille <device_name>,"Désolé, je ne trouve pas cet appareil dans la maison."
not_available,climate.turn_on,johnson_glas,Thermostat intelligent GLAS de Johnson Controls,,Allume le climat <device_name>,"Désolé, je ne trouve pas le dispositif <device_name> dans votre maison."
already_state,lock.unlock,conservatoire,Verrouillage du conservatoire,unlocked,Déverrouille <device_name>,"Le verrou est déjà déverrouillé, aucune action n'est nécessaire."
already_state,vacuum.return_to_base,front_hall_samsung,Robot de balayage du hall d'entrée,docked,Faire revenir <device_name> à la base,"Désolé, <device_name> est déjà docké, aucun besoin de le renvoyer."
not_available,garage_door.open_cover,hangar_2,Deuxième porte du cabanon,,Ouvre le couvercle du <device_name>,"Désolé, je ne trouve pas le <device_name> dans votre maison."
already_state,light.turn_off,front_lounge_ge,Éclairage du salon avant,off,Éteins <device_name>,"Le <device_name> est déjà éteint, aucune action n'est nécessaire."
already_state,fan.turn_off,chambre_maître,Ventilateur de la chambre principale,off,Éteins le ventilateur <device_name>,"Le <device_name> est déjà éteint, aucune action n'est nécessaire."
already_state,blinds.open_cover,salon_room_large,Stores du salon principal,open,Ouvre le volet <device_name>,"Le volet <device_name> est déjà ouvert, aucune action n'est nécessaire."
not_available,vacuum.stop,salon_room_roomba,Aspirateur de salon,,Arrête le <device_name>,"Désolé, je ne trouve pas cet appareil dans la maison."
not_available,media_player.turn_on,denon_av_receiver,Récepteur audio-vidéo Denon,,Allume le lecteur multimédia <device_name>,"Désolé, je ne trouve pas le dispositif <device_name> dans votre maison."
already_state,blinds.open_cover,bureau_fenêtre,Stores de fenêtre de bureau,open,ouvre <device_name>,"Le <device_name> est déjà ouvert, aucune action nécessaire."
not_available,switch.turn_off,sous_cabinet_lights,Interrupteur d'éclairage sous l'armoire,,Éteins <device_name>,"Désolé, je ne trouve pas cet appareil dans votre maison."
not_available,garage_door.toggle,bateau,Porte de rangement pour bateau,,Bascule le <device_name>.,"Désolé, je ne trouve pas ce dispositif dans la maison."
already_state,fan.turn_off,chambre_droite,Ventilateur de chambre côté droit,off,Éteins le ventilateur <device_name>,"Le ventilateur <device_name> est déjà éteint, aucune action n'est nécessaire."
not_available,media_player.turn_on,google_nest_hub,Écran intelligent de l'Assistant Google,,Allume le lecteur multimédia <device_name>.,"Je suis désolé, je ne trouve pas le dispositif <device_name> dans votre maison."
not_available,media_player.volume_down,nintendo_switch,Nintendo Switch,,baisser le volume de <device_name>,"Je suis désolé, je ne trouve pas le dispositif <device_name> dans la maison."
not_available,switch.toggle,feux_de_cour_arriere,Interrupteur des feux de cour arrière,,Bascule le commutateur <device_name>,"Désolé, je ne trouve pas <device_name> dans votre maison."
not_available,fan.decrease_speed,balcon,Ventilateur de balcon,,Baisse la vitesse du <device_name>,"Désolé, je ne trouve pas le <device_name> dans la maison."
not_available,blinds.toggle,garage,Stores de garage,,Bascule les <device_name>,"Désolé, je ne trouve pas les <device_name> dans votre maison."
already_state,switch.turn_off,garage_atelier_lights,Interrupteur d'éclairage d'atelier de garage,off,Éteins le <device_name>,"Le <device_name> est déjà éteint, aucune action n'est nécessaire."
not_available,climate.set_temperature,kono_thermostat,Thermostat intelligent Kono,,Régler la température du <device_name> à 22°C,"Désolé, je ne trouve pas le dispositif <device_name> dans votre maison."
already_state,vacuum.return_to_base,left_corner_bot,Aspirateur de saleté du coin gauche,docked,Faire revenir <device_name> à la base,"Le <device_name> est déjà docké, aucune action n'est nécessaire."
not_available,climate.turn_on,netatmo_smart,Thermostat Intelligent Netatmo,,Allume le climat <device_name>,"Désolé, je ne trouve pas cet appareil dans la maison."
not_available,blinds.open_cover,bureau_fenêtre,Stores de fenêtre de bureau,,Ouvre le volet <device_name>,"Désolé, je ne trouve pas le dispositif <device_name> dans votre maison."
not_available,fan.toggle,chambre_maître,Ventilateur de la chambre principale,,Bascule le ventilateur <device_name>,"Désolé, je ne trouve pas ce dispositif dans la maison."
not_available,fan.turn_off,salle_à_manger,Ventilateur de salle à manger,,Éteins le <device_name>,"Désolé, je ne trouve pas ce ventilateur dans la maison."
not_available,blinds.open_cover,salle_d'artisanat,Stores pour salle d'artisanat,,Ouvre le volet <device_name>,"Désolé, je ne trouve pas le dispositif <device_name> dans la maison."
not_available,fan.decrease_speed,grenier_ventilation,Ventilateur de grenier,,Baisse la vitesse du <device_name>,"Je suis désolé, je ne trouve pas le <device_name> dans votre maison."
not_available,switch.toggle,couloir_lights,Interrupteur d'éclairage de couloir,,Bascule <device_name>,"Je suis désolé, mais je ne trouve pas cet appareil dans votre maison."
already_state,fan.turn_off,îlot_cuisine,Ventilateur de cuisine,off,Éteins le ventilateur <device_name>,"Désolé, le ventilateur <device_name> est déjà éteint, aucune action n'est nécessaire."
not_available,switch.toggle,feux_de_cour_arriere,Interrupteur des feux de cour arrière,,Bascule <device_name>,"Désolé, je ne trouve pas <device_name> dans la maison."
not_available,media_player.turn_on,salle_de_bains_speaker_system,Haut-parleur de salle de bain étanche,,Allume le <device_name>,"Désolé, je ne trouve pas ce dispositif dans la maison."
not_available,fan.decrease_speed,grenier_3,Ventilateurs de grenier,,Baisser la vitesse du <device_name>,"Désolé, je ne trouve pas le <device_name> dans la maison."
not_available,climate.turn_on,sinope_smart,Thermostat intelligent Sinopé,,Allume le climat <device_name>,"Désolé, je ne trouve pas le dispositif <device_name> dans votre maison."
not_available,vacuum.start,salle_à_manger_area_bissel,Détachant la saleté de la salle à manger,,Démarre le <device_name>,"Je suis désolé, je ne trouve pas le <device_name> dans la maison."
not_available,vacuum.return_to_base,kitchen_xiaomi,Aspirateur de cuisine,,Faire revenir <device_name> à sa base,"Désolé, je ne trouve pas <device_name> dans la maison."
already_state,lock.unlock,grenier,Serrure de porte de grenier,unlocked,déverrouille <device_name>,"Le <device_name> est déjà déverrouillé, aucune action n'est nécessaire."
not_available,vacuum.start,maître_chambre_requin,Aspirateur de la chambre principale,,Démarre le <device_name>,"Désolé, je ne trouve pas cet appareil chez vous."
already_state,climate.turn_on,bosch_bcc100,Commande connectée Bosch BCC100,on,Allume le climat <device_name>,"Le <device_name> est déjà allumé, aucune action n'est nécessaire."
not_available,media_player.turn_off,salle_de_bains_speaker_system,Haut-parleur de salle de bain étanche,,Éteins le lecteur multimédia <device_name>,"Désolé, je ne trouve pas le dispositif <device_name> dans la maison."
not_available,light.turn_off,arrière_cour,Lumière de jardin,,Éteins <device_name>,"Désolé, je ne trouve pas <device_name> dans la maison."
already_state,blinds.open_cover,garage,Stores de garage,open,Ouvre le volet <device_name>,"Le volet <device_name> est déjà ouvert, aucune action n'est nécessaire."
not_available,switch.turn_off,den_lights,Interrupteur de lumières de salon,,Éteins le <device_name>,"Désolé, je ne trouve pas le <device_name> dans la maison."
not_available,light.turn_on,retour_attic_lifx,Lumière de grenier arrière,,Allume <device_name>,"Désolé, je ne trouve pas le dispositif <device_name> dans la maison."
already_state,fan.turn_off,le_porche,Ventilateur de porche,off,Éteins le <device_name>,"Le <device_name> est déjà éteint, aucune action n'est nécessaire."
not_available,media_player.turn_on,sonos_cuisine,Cuisine Sonos,,Allume le lecteur multimédia <device_name>,"Désolé, je ne trouve pas le dispositif <device_name> dans votre maison."
not_available,climate.turn_on,nest_learning,Thermostat d'apprentissage Nest,,Allume le climat <device_name>,"Désolé, je ne trouve pas le dispositif <device_name> dans la maison."
already_state,lock.unlock,yale_cuisine,Cuisine Yale,unlocked,déverrouille <device_name>,"Désolé, <device_name> est déjà déverrouillé, aucune action n'est nécessaire."
not_available,fan.turn_on,salon,Ventilateur de salon,,Allume le <device_name>,"Désolé, je ne trouve pas le <device_name> dans la maison."
not_available,switch.turn_off,lumières_porche,Interrupteur de lumières de porche,,Éteins le <device_name>.,"Désolé, je ne trouve pas le <device_name> dans votre maison."
not_available,light.turn_on,downstairs_master_chambre_homekit,Lumière de la chambre principale en bas,,Allume la lumière <device_name> en jaune,"Désolé, je ne trouve pas ce dispositif dans la maison."
already_state,blinds.close_cover,ikea_smart,Stores intelligents Ikea,closed,Fermez <device_name>,"Désolé, <device_name> est déjà fermé, aucune action n'est nécessaire."
already_state,lock.unlock,allée_gate,Serrure de portail d'allée,unlocked,Déverrouille <device_name>,"Désolé, <device_name> est déjà déverrouillé, aucune action n'est nécessaire."
not_available,garage_door.toggle,côté,Porte de garage latérale,,Bascule le <device_name>,"Désolé, je ne trouve pas ce dispositif dans la maison."
already_state,light.turn_off,back_office_lifx,Éclairage du back-office,off,Éteins la lumière <device_name>,"La lumière <device_name> est déjà éteinte, aucune action n'est nécessaire."
already_state,fan.turn_off,garderie,Ventilateur de chambre d'enfant,off,Éteins le ventilateur <device_name>,"Désolé, le ventilateur <device_name> est déjà éteint, aucune action nest nécessaire."
not_available,blinds.stop_cover,salle_de_bain,Stores de salle de bain,,Arrête <device_name>,"Désolé, je ne trouve pas le dispositif <device_name> dans votre maison."
not_available,fan.increase_speed,chambre_invité,Ventilateur de chambre d'amis,,Augmente la vitesse du <device_name>,"Désolé, je ne trouve pas le <device_name> dans la maison."
already_state,fan.turn_on,balcon,Ventilateur de balcon,on,Allume le ventilateur <device_name>,"Le ventilateur est déjà allumé, aucune action n'est nécessaire."
1 reason_type service_name device_name friendly_name desired_state phrase response
2 not_available lock.lock back_door Serrure de la porte arrière Verrouille la <device_name>. Je ne trouve pas de serrure de porte arrière à contrôler.
3 already_state light.turn_on hallway Lumières du couloir on Allume les <device_name>. Les lumières du couloir sont déjà allumées.
4 already_state switch.turn_off garage Prise du garage off Éteins la <device_name>. La prise du garage est déjà éteinte.
5 not_available light.turn_off allée Éclairage d'allée Éteins le <device_name> Désolé, je ne trouve pas le <device_name> dans la maison.
6 already_state blinds.close_cover cuisine Stores de cuisine closed Ferme le store <device_name> Le store <device_name> est déjà fermé, aucune action n’est nécessaire.
7 not_available garage_door.close_cover une_voiture Garage pour une voiture Ferme le <device_name> Désolé, je ne trouve pas le <device_name> dans votre maison.
8 not_available climate.turn_on mysa_smart_thermostat Thermostat intelligent Mysa pour plinthes électriques Allume le climat <device_name> Désolé, je ne trouve pas le dispositif <device_name> dans votre maison.
9 already_state blinds.open_cover fenêtre_arrière Stores de fenêtre arrière open Ouvre <device_name> Le volet est déjà ouvert, aucune action n'est nécessaire.
10 not_available climate.turn_on bosch_bcc100 Commande connectée Bosch BCC100 Allume le climat <device_name>. Désolé, je ne trouve pas le dispositif <device_name> dans la maison.
11 already_state climate.turn_off sinope_smart Thermostat intelligent Sinopé off Éteins le climat de <device_name> Le climat de <device_name> est déjà éteint, aucune action n'est nécessaire.
12 not_available fan.turn_off étude_1 Fan d'étude Éteins le <device_name> Désolé, je ne trouve pas ce dispositif dans la maison.
13 already_state lock.unlock fichier_cabinet Serrure de classeur unlocked Déverrouille <device_name> Désolé, <device_name> est déjà déverrouillé, aucune action n’est nécessaire.
14 not_available climate.set_temperature emerson_sensi_touch Thermostat Wi-Fi Emerson Sensi Touch Régler la température du <device_name> à 18 degrés Désolé, je ne trouve pas le dispositif <device_name> dans la maison.
15 already_state climate.turn_off mysa_smart_thermostat Thermostat intelligent Mysa pour plinthes électriques off Éteins le climat de <device_name> Le climat de <device_name> est déjà éteint, aucune action n'est nécessaire.
16 not_available climate.set_temperature transporteur_cor Thermostat Wi-Fi Carrier Cor Régler la température du <device_name> à 23°C Désolé, je ne trouve pas le dispositif <device_name> dans la maison.
17 not_available light.turn_off front_playroom_homekit Éclairage avant de la salle de jeux Éteins <device_name> Désolé, je ne trouve pas <device_name> dans la maison.
18 already_state fan.turn_on étude_2 Fan d'étude on Allume le ventilateur <device_name> Désolé, le ventilateur <device_name> est déjà allumé, aucune modification n’est nécessaire.
19 not_available media_player.volume_up salle_de_jeu_console Console de salle de jeux Augmente le volume de <device_name> Désolé, je ne trouve pas <device_name> dans votre domicile.
20 not_available vacuum.start kitchen_xiaomi Aspirateur de cuisine Démarre le <device_name> Désolé, je ne trouve pas le <device_name> dans la maison.
21 not_available media_player.media_play_pause bose_living Salon Bose Lecture/pause du média sur <device_name> Désolé, je ne trouve pas le dispositif <device_name> dans la maison.
22 not_available lock.lock portail_électrique Serrure de portail électrique Verrouille <device_name> Je suis désolé, je ne trouve pas cet appareil dans la maison.
23 not_available media_player.volume_down ipad_cuisine iPad de cuisine Baisser le volume du <device_name> Désolé, je ne trouve pas le <device_name> dans la maison.
24 not_available light.toggle en_bas_fireplace_mqtt Lumière de cheminée en bas Bascule <device_name> Désolé, je ne trouve pas cet appareil dans la maison.
25 already_state climate.turn_off sinope_smart Thermostat intelligent Sinopé off Éteins le climat de <device_name> Le climat de <device_name> est déjà éteint, aucune action n'est nécessaire.
26 not_available blinds.stop_cover chambre_des_enfants Stores pour chambres d'enfants Arrête le store <device_name> Désolé, je ne trouve pas le dispositif <device_name> dans votre maison.
27 already_state lock.unlock porte_vélos Antivol pour porte-vélos unlocked Déverrouille <device_name> Désolé, <device_name> est déjà déverrouillé, aucune action n'est nécessaire.
28 already_state lock.lock porte_sur_le_toit Serrure d'accès au toit locked Verrouiller <device_name> Le <device_name> est déjà verrouillé, aucune action n’est nécessaire.
29 not_available garage_door.open_cover côté_2 Porte de garage latérale Ouvre le couvercle du <device_name> Désolé, je ne trouve pas ce dispositif dans votre maison.
30 not_available blinds.toggle cuisine_fenêtre Stores de fenêtre de cuisine Bascule <device_name> Désolé, je ne trouve pas <device_name> dans votre maison.
31 not_available fan.turn_on salon_room_center Ventilateur central du salon Allume le <device_name> Désolé, je ne trouve pas le <device_name> dans votre maison.
32 already_state switch.turn_on water_feature_lights Interrupteur d'éclairage de jeu d'eau on Allume <device_name> Le <device_name> est déjà allumé, aucune modification n'est nécessaire.
33 not_available climate.turn_off mysa_smart_thermostat Thermostat intelligent Mysa pour plinthes électriques Éteins le climat de <device_name> Désolé, je ne trouve pas cet appareil dans votre maison.
34 already_state vacuum.return_to_base patio_doorway_vac Nettoyant pour porte-patio docked Faire revenir <device_name> à la base Je suis désolé, <device_name> est déjà sur son socle, il n’y a rien à faire.
35 already_state blinds.close_cover fenêtre_avant Stores de fenêtre avant closed Fermer le volet <device_name> Le volet <device_name> est déjà fermé, aucune action n'est nécessaire.
36 already_state vacuum.return_to_base ci_dessus_escaliers_robot Appareil à épousseter au-dessus des escaliers docked Faire retourner <device_name> à sa base Le <device_name> est déjà sur son socle, aucun déplacement n’est nécessaire.
37 not_available switch.turn_off salon_room_lights Interrupteur d'éclairage du salon Éteins <device_name> Désolé, je ne trouve pas cet appareil dans la maison.
38 already_state media_player.media_play_pause cuisine Lecteur multimédia de cuisine playing Mettre en pause <device_name> Le lecteur <device_name> est déjà en lecture, aucune action n’est nécessaire.
39 not_available light.turn_on à_l'étage_mancave_zigbee Lumière de la grotte de l'homme à l'étage Allume la lumière <device_name> à 95% de luminosité Je suis désolé, je ne trouve pas cet appareil dans la maison.
40 not_available fan.decrease_speed salle_de_bain_bas Ventilateur dans la salle de bain du rez-de-chaussée Baisser la vitesse du <device_name> Désolé, je ne trouve pas le <device_name> dans votre maison.
41 not_available climate.turn_on mysa_smart_thermostat Thermostat intelligent Mysa pour plinthes électriques Allume le climat <device_name> Désolé, je ne trouve pas le dispositif <device_name> dans votre maison.
42 not_available media_player.media_play_pause ps5_living_room Salon PS5 Mets en pause <device_name> Désolé, je ne trouve pas le dispositif <device_name> dans votre maison.
43 not_available blinds.open_cover chambre_des_enfants Stores pour chambres d'enfants Ouvre le volet <device_name> Désolé, je ne trouve pas ce dispositif dans la maison.
44 not_available media_player.volume_down epson_home_cinema Vidéoprojecteur Epson Baisse le volume de <device_name> Désolé, je ne trouve pas le dispositif <device_name> dans la maison.
45 not_available garage_door.open_cover voiturette_de_golf Garage pour voiturettes de golf Ouvre le couvercle du <device_name> Désolé, je ne trouve pas le <device_name> dans votre maison.
46 not_available media_player.turn_off chromecast Médias Chromecast Éteins le lecteur multimédia <device_name> Désolé, je ne trouve pas cet appareil dans la maison.
47 not_available blinds.open_cover couloir Stores de couloir Ouvre le volet <device_name> Je suis désolé, je ne trouve pas le dispositif <device_name> dans votre maison.
48 already_state media_player.turn_on garderie Lecteur multimédia pour crèche on Allume le lecteur multimédia <device_name> Le <device_name> est déjà allumé, aucune action n'est nécessaire.
49 not_available blinds.stop_cover bureau Stores de bureau Arrête le volet <device_name> Désolé, je ne trouve pas ce dispositif dans votre maison.
50 already_state fan.turn_on cuisine_2 Ventilateurs de cuisine on Allume le ventilateur <device_name> Le ventilateur <device_name> est déjà allumé, aucune modification n'est requise.
51 not_available fan.toggle salon_chambre_2 Ventilateur du salon Bascule <device_name> Désolé, je ne trouve pas ce dispositif dans la maison.
52 not_available blinds.stop_cover couloir Stores de couloir Arrête <device_name> Désolé, je ne trouve pas cet appareil dans votre maison.
53 not_available blinds.toggle fenêtre_avant Stores de fenêtre avant Bascule les <device_name> Désolé, je ne trouve pas <device_name> dans votre maison.
54 already_state light.turn_on garderie Lumière de pépinière on Allume la lumière <device_name> Désolé, <device_name> est déjà allumée, aucune action n'est nécessaire.
55 not_available media_player.turn_off samsung_hw_q90r Barre de son Surround Samsung Éteins le lecteur multimédia <device_name> Désolé, je ne trouve pas le dispositif <device_name> dans la maison.
56 not_available switch.turn_off den_lights Interrupteur de lumières de salon Éteins le <device_name> Désolé, je ne trouve pas ce dispositif dans la maison.
57 not_available garage_door.close_cover camping_car Porte de garage pour camping-car Ferme le couvercle du <device_name> Désolé, je ne trouve pas cet appareil dans votre maison.
58 not_available garage_door.stop_cover deux_voitures Garage pour deux voitures Arrête le <device_name> Désolé, je ne trouve pas le dispositif <device_name> dans votre maison.
59 not_available lock.lock salle_de_sport Serrure de salle de sport à domicile Verrouille le <device_name> Je suis désolé, mais je ne trouve pas le <device_name> dans la maison.
60 not_available light.turn_on cuisine_winecellar_warm Lumière chaude de cave à vin de cuisine Allume la lumière <device_name> à 54 % de luminosité, couleur blanc froid. Désolé, je ne trouve pas le dispositif <device_name> dans la maison.
61 already_state media_player.media_play_pause roku_chambre Joueur Roku dans la chambre playing Mettre en pause <device_name> Le lecteur <device_name> joue déjà, aucune modification n’est nécessaire.
62 already_state climate.turn_on tado_smart Thermostat intelligent Tado on Allume le climatiseur <device_name> Le <device_name> est déjà allumé, aucune action n'est nécessaire.
63 not_available light.turn_on salle_à_manger_1 Lumière de la salle à manger Allume la lumière <device_name> Désolé, je ne trouve pas cet appareil dans la maison.
64 not_available light.toggle étude Étudier la lumière Bascule <device_name> Désolé, je ne trouve pas le dispositif <device_name> dans la maison.
65 not_available switch.toggle utility_room_lights Interrupteur d'éclairage de buanderie Bascule le <device_name> Désolé, je ne trouve pas ce dispositif dans votre maison.
66 not_available lock.unlock porte_d'entrée Serrure de porte avant Déverrouille <device_name> Désolé, je ne trouve pas cet appareil dans la maison.
67 not_available climate.turn_on johnson_glas Thermostat intelligent GLAS de Johnson Controls Allume le climat <device_name> Désolé, je ne trouve pas le dispositif <device_name> dans votre maison.
68 already_state lock.unlock conservatoire Verrouillage du conservatoire unlocked Déverrouille <device_name> Le verrou est déjà déverrouillé, aucune action n'est nécessaire.
69 already_state vacuum.return_to_base front_hall_samsung Robot de balayage du hall d'entrée docked Faire revenir <device_name> à la base Désolé, <device_name> est déjà docké, aucun besoin de le renvoyer.
70 not_available garage_door.open_cover hangar_2 Deuxième porte du cabanon Ouvre le couvercle du <device_name> Désolé, je ne trouve pas le <device_name> dans votre maison.
71 already_state light.turn_off front_lounge_ge Éclairage du salon avant off Éteins <device_name> Le <device_name> est déjà éteint, aucune action n'est nécessaire.
72 already_state fan.turn_off chambre_maître Ventilateur de la chambre principale off Éteins le ventilateur <device_name> Le <device_name> est déjà éteint, aucune action n'est nécessaire.
73 already_state blinds.open_cover salon_room_large Stores du salon principal open Ouvre le volet <device_name> Le volet <device_name> est déjà ouvert, aucune action n'est nécessaire.
74 not_available vacuum.stop salon_room_roomba Aspirateur de salon Arrête le <device_name> Désolé, je ne trouve pas cet appareil dans la maison.
75 not_available media_player.turn_on denon_av_receiver Récepteur audio-vidéo Denon Allume le lecteur multimédia <device_name> Désolé, je ne trouve pas le dispositif <device_name> dans votre maison.
76 already_state blinds.open_cover bureau_fenêtre Stores de fenêtre de bureau open ouvre <device_name> Le <device_name> est déjà ouvert, aucune action nécessaire.
77 not_available switch.turn_off sous_cabinet_lights Interrupteur d'éclairage sous l'armoire Éteins <device_name> Désolé, je ne trouve pas cet appareil dans votre maison.
78 not_available garage_door.toggle bateau Porte de rangement pour bateau Bascule le <device_name>. Désolé, je ne trouve pas ce dispositif dans la maison.
79 already_state fan.turn_off chambre_droite Ventilateur de chambre côté droit off Éteins le ventilateur <device_name> Le ventilateur <device_name> est déjà éteint, aucune action n'est nécessaire.
80 not_available media_player.turn_on google_nest_hub Écran intelligent de l'Assistant Google Allume le lecteur multimédia <device_name>. Je suis désolé, je ne trouve pas le dispositif <device_name> dans votre maison.
81 not_available media_player.volume_down nintendo_switch Nintendo Switch baisser le volume de <device_name> Je suis désolé, je ne trouve pas le dispositif <device_name> dans la maison.
82 not_available switch.toggle feux_de_cour_arriere Interrupteur des feux de cour arrière Bascule le commutateur <device_name> Désolé, je ne trouve pas <device_name> dans votre maison.
83 not_available fan.decrease_speed balcon Ventilateur de balcon Baisse la vitesse du <device_name> Désolé, je ne trouve pas le <device_name> dans la maison.
84 not_available blinds.toggle garage Stores de garage Bascule les <device_name> Désolé, je ne trouve pas les <device_name> dans votre maison.
85 already_state switch.turn_off garage_atelier_lights Interrupteur d'éclairage d'atelier de garage off Éteins le <device_name> Le <device_name> est déjà éteint, aucune action n'est nécessaire.
86 not_available climate.set_temperature kono_thermostat Thermostat intelligent Kono Régler la température du <device_name> à 22°C Désolé, je ne trouve pas le dispositif <device_name> dans votre maison.
87 already_state vacuum.return_to_base left_corner_bot Aspirateur de saleté du coin gauche docked Faire revenir <device_name> à la base Le <device_name> est déjà docké, aucune action n'est nécessaire.
88 not_available climate.turn_on netatmo_smart Thermostat Intelligent Netatmo Allume le climat <device_name> Désolé, je ne trouve pas cet appareil dans la maison.
89 not_available blinds.open_cover bureau_fenêtre Stores de fenêtre de bureau Ouvre le volet <device_name> Désolé, je ne trouve pas le dispositif <device_name> dans votre maison.
90 not_available fan.toggle chambre_maître Ventilateur de la chambre principale Bascule le ventilateur <device_name> Désolé, je ne trouve pas ce dispositif dans la maison.
91 not_available fan.turn_off salle_à_manger Ventilateur de salle à manger Éteins le <device_name> Désolé, je ne trouve pas ce ventilateur dans la maison.
92 not_available blinds.open_cover salle_d'artisanat Stores pour salle d'artisanat Ouvre le volet <device_name> Désolé, je ne trouve pas le dispositif <device_name> dans la maison.
93 not_available fan.decrease_speed grenier_ventilation Ventilateur de grenier Baisse la vitesse du <device_name> Je suis désolé, je ne trouve pas le <device_name> dans votre maison.
94 not_available switch.toggle couloir_lights Interrupteur d'éclairage de couloir Bascule <device_name> Je suis désolé, mais je ne trouve pas cet appareil dans votre maison.
95 already_state fan.turn_off îlot_cuisine Ventilateur de cuisine off Éteins le ventilateur <device_name> Désolé, le ventilateur <device_name> est déjà éteint, aucune action n'est nécessaire.
96 not_available switch.toggle feux_de_cour_arriere Interrupteur des feux de cour arrière Bascule <device_name> Désolé, je ne trouve pas <device_name> dans la maison.
97 not_available media_player.turn_on salle_de_bains_speaker_system Haut-parleur de salle de bain étanche Allume le <device_name> Désolé, je ne trouve pas ce dispositif dans la maison.
98 not_available fan.decrease_speed grenier_3 Ventilateurs de grenier Baisser la vitesse du <device_name> Désolé, je ne trouve pas le <device_name> dans la maison.
99 not_available climate.turn_on sinope_smart Thermostat intelligent Sinopé Allume le climat <device_name> Désolé, je ne trouve pas le dispositif <device_name> dans votre maison.
100 not_available vacuum.start salle_à_manger_area_bissel Détachant la saleté de la salle à manger Démarre le <device_name> Je suis désolé, je ne trouve pas le <device_name> dans la maison.
101 not_available vacuum.return_to_base kitchen_xiaomi Aspirateur de cuisine Faire revenir <device_name> à sa base Désolé, je ne trouve pas <device_name> dans la maison.
102 already_state lock.unlock grenier Serrure de porte de grenier unlocked déverrouille <device_name> Le <device_name> est déjà déverrouillé, aucune action n'est nécessaire.
103 not_available vacuum.start maître_chambre_requin Aspirateur de la chambre principale Démarre le <device_name> Désolé, je ne trouve pas cet appareil chez vous.
104 already_state climate.turn_on bosch_bcc100 Commande connectée Bosch BCC100 on Allume le climat <device_name> Le <device_name> est déjà allumé, aucune action n'est nécessaire.
105 not_available media_player.turn_off salle_de_bains_speaker_system Haut-parleur de salle de bain étanche Éteins le lecteur multimédia <device_name> Désolé, je ne trouve pas le dispositif <device_name> dans la maison.
106 not_available light.turn_off arrière_cour Lumière de jardin Éteins <device_name> Désolé, je ne trouve pas <device_name> dans la maison.
107 already_state blinds.open_cover garage Stores de garage open Ouvre le volet <device_name> Le volet <device_name> est déjà ouvert, aucune action n'est nécessaire.
108 not_available switch.turn_off den_lights Interrupteur de lumières de salon Éteins le <device_name> Désolé, je ne trouve pas le <device_name> dans la maison.
109 not_available light.turn_on retour_attic_lifx Lumière de grenier arrière Allume <device_name> Désolé, je ne trouve pas le dispositif <device_name> dans la maison.
110 already_state fan.turn_off le_porche Ventilateur de porche off Éteins le <device_name> Le <device_name> est déjà éteint, aucune action n'est nécessaire.
111 not_available media_player.turn_on sonos_cuisine Cuisine Sonos Allume le lecteur multimédia <device_name> Désolé, je ne trouve pas le dispositif <device_name> dans votre maison.
112 not_available climate.turn_on nest_learning Thermostat d'apprentissage Nest Allume le climat <device_name> Désolé, je ne trouve pas le dispositif <device_name> dans la maison.
113 already_state lock.unlock yale_cuisine Cuisine Yale unlocked déverrouille <device_name> Désolé, <device_name> est déjà déverrouillé, aucune action n'est nécessaire.
114 not_available fan.turn_on salon Ventilateur de salon Allume le <device_name> Désolé, je ne trouve pas le <device_name> dans la maison.
115 not_available switch.turn_off lumières_porche Interrupteur de lumières de porche Éteins le <device_name>. Désolé, je ne trouve pas le <device_name> dans votre maison.
116 not_available light.turn_on downstairs_master_chambre_homekit Lumière de la chambre principale en bas Allume la lumière <device_name> en jaune Désolé, je ne trouve pas ce dispositif dans la maison.
117 already_state blinds.close_cover ikea_smart Stores intelligents Ikea closed Fermez <device_name> Désolé, <device_name> est déjà fermé, aucune action n'est nécessaire.
118 already_state lock.unlock allée_gate Serrure de portail d'allée unlocked Déverrouille <device_name> Désolé, <device_name> est déjà déverrouillé, aucune action n'est nécessaire.
119 not_available garage_door.toggle côté Porte de garage latérale Bascule le <device_name> Désolé, je ne trouve pas ce dispositif dans la maison.
120 already_state light.turn_off back_office_lifx Éclairage du back-office off Éteins la lumière <device_name> La lumière <device_name> est déjà éteinte, aucune action n'est nécessaire.
121 already_state fan.turn_off garderie Ventilateur de chambre d'enfant off Éteins le ventilateur <device_name> Désolé, le ventilateur <device_name> est déjà éteint, aucune action n’est nécessaire.
122 not_available blinds.stop_cover salle_de_bain Stores de salle de bain Arrête <device_name> Désolé, je ne trouve pas le dispositif <device_name> dans votre maison.
123 not_available fan.increase_speed chambre_invité Ventilateur de chambre d'amis Augmente la vitesse du <device_name> Désolé, je ne trouve pas le <device_name> dans la maison.
124 already_state fan.turn_on balcon Ventilateur de balcon on Allume le ventilateur <device_name> Le ventilateur est déjà allumé, aucune action n'est nécessaire.

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,124 @@
service_name,correct_device_name,correct_friendly_name,bad_device_name,phrase,error_result,retry_prompt
light.turn_on,light.living_room_lamp,Wohnzimmerlampe,light.livng_room_lamp,"Bitte schalte die <device_name> ein.","Fehler: Entität light.livng_room_lamp nicht gefunden.","Ich versuche stattdessen die Wohnzimmerlampe."
climate.set_temperature,climate.hallway,Flurthermostat,climate.halway,"Stelle den <device_name> auf <temp_f> Grad ein.","Fehler: Entität climate.halway nicht gefunden.","Versuche es erneut mit dem Flurthermostat."
fan.turn_off,fan.office,Büroventilator,fan.offce,"Schalte den <device_name> aus.","Fehler: Entität fan.offce nicht gefunden.","Ich versuche den Büroventilator erneut."
media_player.turn_on,media_player.bose_living,Bose-Wohnzimmer,media_player.bose_livingroom,Schalte bitte die BoseWohnzimmerAnlage ein.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.bose_livingroom', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Alles klar, ich versuche es jetzt mit dem richtigen Gerät."
garage_door.stop_cover,garage_door.carport,Carport-Garagentor,garage_door.carportt,Stoppe das Carport-Garagentor.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.carportt', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, ich versuche es mit dem richtigen Gerät."
vacuum.return_to_base,vacuum.entryway_eufy,Staubsammler im Eingangsbereich,vacuum.entryway_euffy,Kannst du bitte den Staubsammler im Eingangsbereich zurück zur Basis fahren?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.entryway_euffy', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, ich probiere es jetzt mit dem richtigen Gerät."
garage_door.toggle,garage_door.golfwagen,Golfwagentür,garage_door.golfwage,Bitte öffne die Garage.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.golfwage', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Alles klar, ich versuche es jetzt mit der Golfwagentür."
switch.turn_on,switch.study_room_lights,Lichtschalter im Arbeitszimmer,switch.studyroom_lights,Schalte bitte das Licht im Arbeitszimmer ein.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.studyroom_lights', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, ich versuche es jetzt mit dem richtigen Gerät: Lichtschalter im Arbeitszimmer."
light.toggle,light.badezimmerspiegel,Spiegellichter,light.badezimmerspiegel_alt,Schalte die Spiegellichter bitte um.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.badezimmerspiegel_alt', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entschuldigung, ich versuche es jetzt mit dem richtigen Gerät."
light.turn_off,light.downstairs_fireplace_mqtt,Kaminlicht im Erdgeschoss,light.downstairs_fireplace_mqtt_backup,Schalte das Kaminlicht im Erdgeschoss aus.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.downstairs_fireplace_mqtt_backup', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entschuldigung, ich probiere es jetzt mit dem korrekten Gerät."
lock.unlock,lock.wintergarten,Wintergartenschloss,lock.wintergaten,Entsperre bitte das Wintergartenschloss.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.wintergaten', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Versuche es jetzt mit dem richtigen Gerät lock.wintergarten.
light.turn_off,light.upstairs_fireplace_zwave,Kaminlicht im Obergeschoss,light.upstairs_fireplace_z,Schalte das Kaminlicht im Obergeschoss aus.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.upstairs_fireplace_z', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Alles klar, ich versuche es jetzt mit dem korrekten Gerät."
climate.turn_on,climate.emerson_sensi_touch,Emerson Sensi Touch WLAN-Thermostat,climate.emerson_sensi_touch_plus,Bitte das Thermostat einschalten.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.emerson_sensi_touch_plus', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, ich versuche es erneut mit dem richtigen Gerät."
vacuum.return_to_base,vacuum.downstairs_guest_room,Staubsauger im Gästezimmer im Erdgeschoss,vacuum.guestroom_downstairs,Kannst du den Staubsauger im Gästezimmer im Erdgeschoss zur Ladestation zurückfahren?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.guestroom_downstairs', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Verstanden, ich versuche es jetzt mit dem Gerät 'vacuum.downstairs_guest_room'."
switch.turn_off,switch.spielzimmer_lichter,Lichtschalter für Spielzimmer,switch.spielzimmer_lichtern,Schalte bitte das Licht im Spielzimmer aus.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.spielzimmer_lichtern', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entschuldigung, ich versuche es jetzt mit dem richtigen Schalter."
climate.set_temperature,climate.trane_comfortlink_ii,Trane ComfortLink II XL1050,climate.trane_comfortlink_ii_extra,Bitte stelle die Temperatur auf <temp_f> Grad ein.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.trane_comfortlink_ii_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Alles klar, ich probiere es mit dem richtigen Gerät."
light.toggle,light.downstairs_mancave_homekit,Menschenhöhlenlicht im Erdgeschoss,light.downstairs_mancave_homekit_v2,Schalte das Menschenhöhlenlicht im Erdgeschoss ein.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.downstairs_mancave_homekit_v2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Verstanden, ich probiere jetzt das Menschenhöhlenlicht im Erdgeschoss."
media_player.volume_down,media_player.playstation_5,Sony PS5,media_player.playstation_5x,"Hey, kannst du die Lautstärke meiner Sony PS5 leiser machen?","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.playstation_5x', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, ich versuche es mit dem richtigen Gerät."
light.turn_on,light.front_library_ge,Vordere Bibliotheksleuchte,light.front_librar_ge,Schalte bitte das Licht in der vorderen Bibliothek ein.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.front_librar_ge', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Versuche es jetzt mit der Vordere Bibliotheksleuchte.
media_player.turn_on,media_player.roku_schlafzimmer,Roku-Hauptschlafzimmer,media_player.roku_schlafzimmer_alt,Bitte schalte das Roku im Hauptschlafzimmer ein.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.roku_schlafzimmer_alt', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Verstanden, ich versuche es jetzt mit dem richtigen Gerät."
fan.turn_off,fan.küche,Küchenventilator,fan.küchevent,Schalte den Küchenventilator aus.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.küchevent', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, ich versuche es jetzt mit dem Küchenventilator."
vacuum.start,vacuum.front_hall_samsung,Kehrender Bot in der Eingangshalle,vacuum.front_hall_samsungs,Bitte starte den Kehrenden Bot in der Eingangshalle.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.front_hall_samsungs', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Verstanden, ich versuche es jetzt mit dem richtigen Gerät."
blinds.open_cover,blinds.flur,Flurjalousien,blinds.flur_jalousien,Öffne die Jalousien im Flur.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.flur_jalousien', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, ich versuche es mit den Flurjalousien."
light.toggle,light.downstairs_arcade_homekit,Arcade-Licht im Erdgeschoss,light.downstairs_arcade_homekit_v2,Schalte das Arcade-Licht im Erdgeschoss bitte um.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.downstairs_arcade_homekit_v2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Alles klar, ich versuche es jetzt mit dem korrekten Gerät."
blinds.open_cover,blinds.gäste_wc,Jalousien für das Gästebad,blinds.wc_gäste,Öffne die Jalousien im GästeWC.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.wc_gäste', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, ich versuche es jetzt mit den Jalousien für das Gästebad."
switch.toggle,switch.sicherheitssystem,Schalter des Sicherheitssystems,switch.sicherheitssysteme,Schalte bitte den Schalter des Sicherheitssystems um.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.sicherheitssysteme', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Alles klar, ich probiere es mit dem korrekten Gerät."
climate.turn_on,climate.trane_comfortlink_ii,Trane ComfortLink II XL1050,climate.trane_comfortlink_iii,Schalte bitte die Klimaanlage ein.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.trane_comfortlink_iii', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Alles klar, ich probiere es jetzt mit dem richtigen Gerät."
fan.toggle,fan.terrasse,Terrassenventilator,fan.terrassenz,Schalte den Terrassenventilator bitte ein.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.terrassenz', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Alles klar, ich probiere es jetzt mit dem Terrassenventilator."
lock.lock,lock.werkzeugschuppen,Schloss für Geräteschuppen,lock.werkzeugschupen,Bitte schließe das Schloss für den Geräteschuppen.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.werkzeugschupen', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Verstanden, ich probiere es jetzt mit lock.werkzeugschuppen."
lock.unlock,lock.pool_gate,Pooltorschloss,lock.pool_gate_main,Bitte entsperre das Pooltorschloss.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.pool_gate_main', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, ich versuche es jetzt mit dem richtigen Gerät lock.pool_gate."
media_player.media_play_pause,media_player.denon_av_receiver,Denon Audio-Video-Receiver,media_player.denon_av_rec,Bitte spiele oder pausiere die Musik auf dem Receiver,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.denon_av_rec', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, ich versuche es jetzt mit dem richtigen Gerät."
fan.turn_on,fan.schlafzimmer,Schlafzimmerventilator,fan.schlummerzimmer,Bitte schalte den Ventilator im Schlafzimmer ein.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.schlummerzimmer', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entschuldigung, ich versuche es mit dem Schlafzimmerventilator."
switch.turn_off,switch.outdoor_security_lights,Schalter für Sicherheitsbeleuchtung im Außenbereich,switch.outdoor_security_light,Bitte schalte die Sicherheitsbeleuchtung im Außenbereich aus.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.outdoor_security_light', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entschuldigung, ich versuche es jetzt mit dem korrekten Schalter."
vacuum.return_to_base,vacuum.smart_home_automator,Smart-Home-Reinigungsbot,vacuum.smart_home_automat,Bitte bringe den Staubsauger zurück zur Ladestation.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.smart_home_automat', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entschuldigung, ich versuche es jetzt mit dem richtigen Gerät."
fan.turn_on,fan.schlafzimmer,Schlafzimmerventilator,fan.schlafzimmer_extra,Schalte den Schlafzimmerventilator bitte ein.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.schlafzimmer_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, ich versuche es jetzt mit dem Schlafzimmerventilator."
light.turn_on,light.upstairs_study_zwave,Arbeitszimmerlampe im Obergeschoss,light.upstairs_stud_zwave,Schalte bitte das Licht im Arbeitszimmer ein.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.upstairs_stud_zwave', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Alles klar, ich versuche es jetzt mit der Arbeitszimmerlampe im Obergeschoss."
climate.set_temperature,climate.bosch_bcc100,Bosch BCC100 Connected Control,climate.bosch_ccb100,Stelle die Temperatur auf <temp_f> Grad ein.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.bosch_ccb100', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, ich versuche es jetzt mit dem richtigen Gerät."
light.toggle,light.front_study_homekit,Vorderes Studienlicht,light.front_study_homekit_v2,Schalte das Vorderes Studienlicht um.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.front_study_homekit_v2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, ich versuche es mit dem Vorderen Studienlicht."
fan.turn_on,fan.wohnzimmer_mitte,Zentraler Wohnzimmerventilator,fan.wohnzimmer_mitte_alt,Kannst du bitte den zentralen Wohnzimmerventilator einschalten?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.wohnzimmer_mitte_alt', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, ich versuche es jetzt mit dem richtigen Gerät."
climate.set_temperature,climate.emerson_sensi_touch,Emerson Sensi Touch WLAN-Thermostat,climate.emer_sensi_touch,Stelle die Temperatur auf <temp_f> Grad ein.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.emer_sensi_touch', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Alles klar, ich versuche es jetzt mit dem Emerson Sensi Touch WLANThermostat."
blinds.close_cover,blinds.somfy_living,Wohnzimmerjalousien,blinds.somfy_livng,Schließe bitte die Wohnzimmerjalousien.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.somfy_livng', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, ich versuche es mit dem richtigen Gerät."
fan.decrease_speed,fan.esszimmer,Esszimmerventilator,fan.esszimmervent,Kannst du bitte die Geschwindigkeit des Esszimmerventilators reduzieren?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.esszimmervent', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, ich probiere es jetzt mit dem richtigen Gerät."
fan.turn_on,fan.badezimmer,Badezimmerventilator,fan.badezimm,Bitte schalte den Badezimmerventilator ein.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.badezimm', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Alles klar, ich versuche es jetzt mit dem Badezimmerventilator."
light.turn_on,light.downstairs_office_mqtt,Bürolicht im Erdgeschoss,light.downstairs_offic_mqtt,Schalte das Bürolicht im Erdgeschoss ein.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.downstairs_offic_mqtt', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, ich probiere es mit dem richtigen Gerät erneut."
climate.turn_on,climate.carrier_cor,Carrier Cor WLAN-Thermostat,climate.carrier_core,Bitte das Klima im Wohnzimmer einschalten.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.carrier_core', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Versuche es jetzt mit dem korrekten Gerät climate.carrier_cor.
media_player.media_play_pause,media_player.roku_schlafzimmer,Schlafzimmer-Roku-Spieler,media_player.roku_zimmer_schlaf,Spiele das Video auf dem Schlafzimmer-Roku-Spieler ab.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.roku_zimmer_schlaf', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Alles klar, ich versuche es jetzt mit dem richtigen Gerät."
media_player.turn_off,media_player.chrome_cast_schlafzimmer,Schlafzimmer-Chromecast,media_player.chromecast_schlafzimmer,Schalte das Schlafzimmer-Chromecast aus.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.chromecast_schlafzimmer', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, ich versuche es jetzt mit dem richtigen Gerät."
garage_door.toggle,garage_door.weinkeller,Weinkellertür,garage_door.weinkeller_tür,Öffne die Weinkellertür.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.weinkeller_tür', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, ich versuche es jetzt mit der richtigen Weinkellertür."
light.turn_on,light.garage,Garagenlicht,light.garagel,Schalte das Garagenlicht ein.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.garagel', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, ich versuche es mit dem Garagenlicht."
media_player.volume_up,media_player.kindergarten,Kindergarten-Mediaplayer,media_player.kindergartn,Bitte die Lautstärke beim Kindergarten-Mediaplayer erhöhen.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.kindergartn', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, ich versuche es jetzt mit dem Kindergarten-Mediaplayer."
switch.toggle,switch.outdoor_security_lights,Schalter für Sicherheitsbeleuchtung im Außenbereich,switch.outdoor_security_light,Schalte bitte die Sicherheitsbeleuchtung im Außenbereich ein.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.outdoor_security_light', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Verstanden, ich probiere es jetzt mit dem korrekten Schalter."
switch.turn_off,switch.study_room_lights,Lichtschalter im Arbeitszimmer,switch.studyroom_lights,Schalte bitte das Licht im Arbeitszimmer aus.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.studyroom_lights', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entschuldigung, ich versuche es erneut mit dem richtigen Gerät."
light.turn_on,light.kitchen_island_cool,Kühles Licht der Kücheninsel,light.kitchen_island_cooler,Schalte das kühle Licht der Kücheninsel ein.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.kitchen_island_cooler', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entschuldigung, ich versuche es jetzt mit dem richtigen Gerät."
blinds.close_cover,blinds.küche,Küchenjalousien,blinds.küche_alt,Schließe bitte die Jalousien in der Küche.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.küche_alt', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Ich versuche es noch einmal mit den Küchenjalousien.
media_player.turn_on,media_player.echo_dot,Küche Echo Dot,media_player.echodot_kueche,Bitte schalte die Küche Echo Dot ein.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.echodot_kueche', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Kein Problem, ich probiere es jetzt mit dem richtigen Gerät."
switch.turn_off,switch.gartenlichter,Steuerung der Gartenbeleuchtung,switch.gartenlicht,Schalte bitte die Gartenbeleuchtung aus.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.gartenlicht', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, ich versuche es jetzt mit switch.gartenlichter."
vacuum.return_to_base,vacuum.downstairs_guest_room,Staubsauger im Gästezimmer im Erdgeschoss,vacuum.downstairs_gestru_rm,Bitte bring den Staubsauger im Gästezimmer im Erdgeschoss zurück zur Basis.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.downstairs_gestru_rm', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Verstanden, ich versuche es jetzt mit dem korrekten Gerät."
blinds.open_cover,blinds.dachfenster,Oberlichtjalousien,blinds.dachfenster_alt,Öffne die Oberlichtjalousien.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.dachfenster_alt', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entschuldigung, ich versuche es jetzt mit den Oberlichtjalousien."
switch.turn_on,switch.warehouse_lights,Lagerlichtschalter,switch.warehous_lights,Bitte das Lagerlicht einschalten.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.warehous_lights', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Ich versuche es jetzt mit dem richtigen Gerät.
climate.turn_off,climate.johnson_glas,Johnson Controls GLAS Smart Thermostat,climate.johns_glass,Schalte die Klimaanlage aus.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.johns_glass', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, ich versuche es mit dem richtigen Gerät."
climate.turn_off,climate.honeywell_lyric_t6,Honeywell Lyric T6 Pro,climate.honeywell_lyric_t6x,Kannst du bitte das Klima im Wohnzimmer ausschalten?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.honeywell_lyric_t6x', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Alles klar, ich versuche es jetzt mit dem richtigen Gerät."
lock.lock,lock.garage,Garagentorschloss,lock.garage_main,Bitte schließe das Garagentorschloss.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.garage_main', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Verstanden, ich verwende jetzt das korrekte Gerät lock.garage."
garage_door.stop_cover,garage_door.two_car,Garage für zwei Autos,garage_door.two_car_plus,Stopp die Garage für zwei Autos.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.two_car_plus', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Verstanden, ich benutze jetzt das richtige Gerät."
garage_door.close_cover,garage_door.ein_auto,Garage für ein Auto,garage_door.ein_auto_alt,Bitte das Garagentor für ein Auto schließen.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.ein_auto_alt', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, ich versuche es nochmal mit dem richtigen Gerät."
fan.turn_on,fan.wäschekammer,Ventilator für die Waschküche,fan.wäschekammer_2,Schalte bitte den Ventilator für die Waschküche ein.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.wäschekammer_2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entschuldigung, ich versuche es mit dem richtigen Gerät."
climate.turn_off,climate.sinope_smart,Intelligentes Thermostat von Sinopé,climate.smart_sinope,Bitte das Thermostat ausschalten.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.smart_sinope', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Alles klar, ich versuche es jetzt mit dem Intelligenten Thermostat von Sinopé."
garage_door.close_cover,garage_door.rv_storage,Stauraumtür für Wohnmobile,garage_door.rv_storag,Schließe bitte die Stauraumtür für Wohnmobile.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.rv_storag', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Alles klar, ich probiere es jetzt mit der Stauraumtür für Wohnmobile."
light.turn_on,light.downstairs_tv_room_homekit,TV-Raumbeleuchtung im Erdgeschoss,light.downstairs_tv_room_homekit_v2,Bitte das Licht im TVRaum im Erdgeschoss einschalten.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.downstairs_tv_room_homekit_v2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, ich versuche es mit dem richtigen Gerät 'light.downstairs_tv_room_homekit'."
media_player.turn_on,media_player.onkyo_tx_sr,Onkyo Heimkino-Receiver,media_player.onkyo_tx_srx,Schalte den Onkyo Heimkino-Receiver ein.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.onkyo_tx_srx', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Versuche es jetzt mit dem korrekten Gerät.
lock.unlock,lock.sauna,Sauna-Türschloss,lock.saunax,Bitte das Saunatürschloss öffnen.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.saunax', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, ich versuche es jetzt mit dem richtigen Gerät."
lock.lock,lock.elektrisches_tor,Elektrisches Torschloss,lock.elektrisches_torx,Bitte schließe das elektrische Torschloss.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.elektrisches_torx', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Alles klar, ich versuche es jetzt mit dem richtigen Gerät."
blinds.stop_cover,blinds.kitchen_window,Jalousien für Küchenfenster,blinds.kitchen_win,Stoppe bitte die Jalousien im Küchenfenster.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.kitchen_win', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Alles klar, ich versuche es jetzt mit den Jalousien für das Küchenfenster."
garage_door.open_cover,garage_door.geschäft,Werkstatt Garagentor,garage_door.gesch,Öffne das Garagentor der Werkstatt.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.gesch', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Verstanden, ich versuche es jetzt mit dem richtigen Gerät."
fan.turn_off,fan.dachbodenlüftung,Ventilator für Dachbodenlüftung,fan.dachboden_lüftung,Schalte den Ventilator für die Dachbodenlüftung aus.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.dachboden_lüftung', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Kein Problem, ich versuche es jetzt mit dem Ventilator für Dachbodenlüftung."
switch.turn_on,switch.sicherheitssystem,Schalter des Sicherheitssystems,switch.sicherheits_modul,Bitte schalte das Sicherheitssystem ein.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.sicherheits_modul', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entschuldigung, ich versuche es jetzt mit dem Schalter des Sicherheitssystems."
lock.lock,lock.ski_storage,Skiaufbewahrungsschloss,lock.ski_store,Bitte verriegle das Skiaufbewahrungsschloss.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.ski_store', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Verstanden, ich versuche es jetzt mit dem richtigen Gerät."
fan.decrease_speed,fan.wohnzimmer_1,Wohnzimmerventilator,fan.wohnzimmer_1x,Bitte reduziere die Geschwindigkeit des Wohnzimmerventilators.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.wohnzimmer_1x', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entschuldigung, ich probiere es jetzt mit dem korrekten Gerät fan.wohnzimmer_1."
switch.turn_on,switch.attic_lights,Lichtschalter für den Dachboden,switch.attic_lights_main,Schalte das Licht im Dachboden ein.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.attic_lights_main', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, ich versuche es jetzt mit dem richtigen Gerät 'switch.attic_lights'."
blinds.close_cover,blinds.esszimmer,Esszimmerjalousien,blinds.esszimm,Schließe bitte die Jalousien im Esszimmer.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.esszimm', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, ich versuche es mit den Esszimmerjalousien."
lock.unlock,lock.gun_safe,Waffentresorschloss,lock.gun_saf,Entsperre bitte das Waffentresorschloss.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.gun_saf', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, ich versuche es jetzt mit dem korrekten Gerät (lock.gun_safe)."
light.turn_off,light.kitchen_microwave_warm,"Küche, Mikrowelle, warmes Licht",light.kitchen_microwav_warm,"Schalte das warme Licht in der Küche aus, das über der Mikrowelle ist.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.kitchen_microwav_warm', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Alles klar, ich versuche es jetzt mit dem richtigen Gerät."
climate.set_temperature,climate.emerson_sensi_touch,Emerson Sensi Touch WLAN-Thermostat,climate.emer_sensi_touch,Stelle die Temperatur auf <temp_f> Grad ein.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.emer_sensi_touch', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, ich versuche es mit dem Emerson Sensi Touch Thermostat."
blinds.toggle,blinds.somfy_kitchen,Küchenjalousien,blinds.kitchen_somfy,Schalte die Küchenjalousien um.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.kitchen_somfy', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, ich versuche es jetzt mit den Küchenjalousien."
light.turn_off,light.upstairs_recreation_zigbee,Erholungslicht im Obergeschoss,light.upstairs_recreat_zigbee,Schalte das Erholungslicht im Obergeschoss aus.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.upstairs_recreat_zigbee', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Verstanden, ich versuche es jetzt mit dem richtigen Gerät."
switch.toggle,switch.zoo_enclosure_lighting,Steuerung der Zoogehegebeleuchtung,switch.zoo_enclosure_lights,Schalte die Zoogehegebeleuchtung ein.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.zoo_enclosure_lights', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, ich versuche es mit der Steuerung der Zoogehegebeleuchtung."
media_player.media_play_pause,media_player.ipad_kitchen,Küchen-iPad,media_player.ipad_kitchen,Spiele oder pausiere die Musik auf dem iPad in der Küche.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.ipad_kitchen', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Verstanden, ich probiere es jetzt mit dem KücheniPad."
climate.set_temperature,climate.honeywell_lyric_t6,Honeywell Lyric T6 Pro,climate.honeywell_lyric_t6_backup,Stelle die Temperatur auf <temp_f> Grad ein.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.honeywell_lyric_t6_backup', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Alles klar, ich nutze jetzt das korrekte Gerät."
blinds.toggle,blinds.ikea_smart,Intelligente Jalousien von Ikea,blinds.ikea_smart_pro,Bitte öffne die intelligenten Jalousien von Ikea im Wohnzimmer.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.ikea_smart_pro', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Versuche es jetzt mit dem korrekten Gerät blinds.ikea_smart.
media_player.turn_on,media_player.playstation_5,Sony PS5,media_player.playstation_5_pro,Schalte bitte die Sony PS5 ein.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.playstation_5_pro', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Alles klar, ich versuche es jetzt mit der Sony PS5."
fan.increase_speed,fan.dachboden_2,Dachbodenventilatoren,fan.dachbodn_2,Bitte erhöhe die Geschwindigkeit des Dachbodenventilators.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.dachbodn_2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entschuldigung, ich versuche es jetzt mit dem korrekten Gerät."
garage_door.toggle,garage_door.chamberlain_1,Kammerherr,garage_door.chamberlain_1_backup,Kannst du bitte das Garagentor öffnen?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.chamberlain_1_backup', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, ich versuche es jetzt mit dem richtigen Gerät."
blinds.open_cover,blinds.kindergarten,Kinderzimmerjalousien,blinds.kindergan,"Hey, bitte öffne die Jalousien im Kinderzimmer.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.kindergan', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entschuldigung, ich versuche es jetzt mit den Jalousien im Kinderzimmer."
fan.increase_speed,fan.schlafzimmer_rechts,Schlafzimmerventilator auf der rechten Seite,fan.schlafzimmer_rechts_plus,Bitte erhöhe die Geschwindigkeit des Schlafzimmerventilators auf der rechten Seite.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.schlafzimmer_rechts_plus', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Verstanden, ich versuche es jetzt mit dem richtigen Gerät."
blinds.open_cover,blinds.badezimmer_1,Erste Badezimmerjalousien,blinds.badezimmer_01,Bitte öffne die Jalousien im Badezimmer.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.badezimmer_01', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entschuldigung, ich versuche es mit den richtigen Badezimmerjalousien."
lock.unlock,lock.höhle,Höhlenschloss,lock.höhl,Bitte entriegle das Höhlenschloss.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.höhl', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, ich versuche es jetzt mit dem Gerät lock.höhle."
blinds.close_cover,blinds.frontscheibe,Jalousien für die Vorderfenster,blinds.frontscheibe_extra,Schließe die Jalousien für die Vorderfenster.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.frontscheibe_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entschuldigung, ich versuche es mit den Jalousien für die Vorderfenster."
blinds.toggle,blinds.badezimmer,Badezimmerjalousien,blinds.badezimmer,Schalte die Badezimmerjalousien bitte um.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.badezimmer', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Verstanden, ich versuche es mit den Badezimmerjalousien."
climate.set_temperature,climate.nest_learning,Nest-Lernthermostat,climate.nst_learning,Stelle die Temperatur auf <temp_f> Grad ein.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.nst_learning', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Ich probiere es jetzt mit dem Nest-Lernthermostat.
vacuum.return_to_base,vacuum.under_sofa_cleaner,Untersofareiniger,vacuum.unter_sofa_cleaner,Bitte bring den Untersofareiniger zurück zur Ladestation.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.unter_sofa_cleaner', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, ich versuche es jetzt mit dem richtigen Gerät."
switch.toggle,switch.pool_pump,Schalter für Poolpumpe,switch.poolpump,Schalte die Poolpumpe ein.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.poolpump', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, ich versuche es jetzt mit dem Schalter für die Poolpumpe."
blinds.open_cover,blinds.keller,Kellerjalousien,blinds.kell,Öffne die Kellerjalousien.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.kell', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, ich versuche es jetzt mit den Kellerjalousien."
switch.turn_off,switch.kitchen_lights,Küchenlichtschalter,switch.kitchen_lights_v2,Schalte bitte das Küchenlicht aus.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.kitchen_lights_v2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, ich versuche es jetzt mit dem richtigen Schalter."
vacuum.stop,vacuum.patio_doorway_vac,Reiniger für Terrassentüren,vacuum.patio_doorway_vacuum,Bitte stoppe den Reiniger für Terrassentüren.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.patio_doorway_vacuum', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, ich probiere es jetzt mit dem richtigen Gerät."
blinds.toggle,blinds.wohnzimmer,Wohnzimmerjalousien,blinds.wohnzimmer_alt,Schalte die Jalousien im Wohnzimmer bitte um.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.wohnzimmer_alt', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, ich versuche es jetzt mit den Wohnzimmerjalousien."
blinds.open_cover,blinds.flur_1,Erste Flurjalousien,blinds.flur_1x,"Öffne die Jalousien im Flur, bitte.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.flur_1x', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Verstanden, ich probiere es jetzt mit den richtigen Jalousien (blinds.flur_1)."
switch.turn_on,switch.outdoor_security_lights,Schalter für Sicherheitsbeleuchtung im Außenbereich,switch.outdoor_security_lgt,Schalte die Sicherheitsbeleuchtung im Außenbereich ein.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.outdoor_security_lgt', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Verstanden, ich verwende jetzt den korrekten Schalter."
switch.toggle,switch.wintergarten_lichter,Wintergarten-Lichtschalter,switch.wintergarten_licht,Schalte das Wintergarten-Licht bitte um.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.wintergarten_licht', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Verstanden, ich versuche es nun mit dem korrekten Gerät."
fan.turn_on,fan.kindergarten,Kinderzimmer-Fan,fan.kindergartn,Schalte den Kinderzimmer-Fan ein.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.kindergartn', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, ich versuche es mit dem korrekten Gerät."
light.turn_on,light.downstairs_bathroom_warm,Warmes Licht im Badezimmer im Erdgeschoss,light.downstairs_bathroom_warm_extra,Schalte das warme Licht im Badezimmer im Erdgeschoss ein.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.downstairs_bathroom_warm_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Verstanden, ich versuche es mit dem Gerät 'light.downstairs_bathroom_warm'."
lock.unlock,lock.gun_safe,Waffentresorschloss,lock.gun_saf,Bitte entsperre das Waffentresorschloss.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.gun_saf', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Alles klar, ich versuche es jetzt mit dem richtigen Gerät."
blinds.toggle,blinds.wohnzimmer,Wohnzimmerjalousien,blinds.wohnzimmer_2,Schalte die Wohnzimmerjalousien um.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.wohnzimmer_2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, ich versuche es mit den richtigen Wohnzimmerjalousien."
blinds.open_cover,blinds.dachfenster,Oberlichtjalousien,blinds.dachfenster_extra,Öffne bitte die Oberlichtjalousien.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.dachfenster_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entschuldigung, ich versuche es mit dem korrekten Gerät."
fan.increase_speed,fan.studie_1,Studienfan,fan.studi_1,Erhöhe bitte die Geschwindigkeit des Studienfans.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.studi_1', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Alles klar, ich versuche es jetzt mit dem Studienfan."
lock.unlock,lock.kitchen_door,Kücheneingangsschloss,lock.kitchen,Bitte das Kücheneingangsschloss entsperren.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.kitchen', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Verstanden, ich versuche es jetzt mit lock.kitchen_door."
switch.toggle,switch.laundry_room_lights,Lichtschalter für Waschküche,switch.laundry_room_light,Bitte schalte das Licht in der Waschküche um.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.laundry_room_light', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, ich versuche es jetzt mit dem Gerät 'switch.laundry_room_lights'."
garage_door.stop_cover,garage_door.boot,Lagertür für Boote,garage_door.boots,Stoppe die Lagertür für Boote.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.boots', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Verstanden, ich versuche es jetzt mit der richtigen Lagertür für Boote."
garage_door.stop_cover,garage_door.left_door,Linkes Garagentor,garage_door.leftdoor,Stoppe das linke Garagentor.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.leftdoor', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Alles klar, ich versuche es mit dem richtigen Gerät (garage_door.left_door)."
vacuum.return_to_base,vacuum.right_stairwell_sweeper,Rechter Treppenhausreiniger,vacuum.right_stairwell_sweeper_extra,Bitte bring den Rechten Treppenhausreiniger zurück zur Ladestation.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.right_stairwell_sweeper_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Verstanden, ich versuche es jetzt mit dem korrekten Gerät."
media_player.turn_off,media_player.roku_schlafzimmer,Roku-Hauptschlafzimmer,media_player.roku_hauptschlafzimmer,Schalte bitte das Roku im Hauptschlafzimmer aus.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.roku_hauptschlafzimmer', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Verstanden, ich versuche es jetzt mit dem richtigen Gerät."
lock.lock,lock.schlafzimmer_2,Zweites Schlafzimmerschloss,lock.schlafzimmer2_extra,Bitte schließe das zweite Schlafzimmerschloss.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.schlafzimmer2_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entschuldigung, ich versuche es jetzt mit dem richtigen Gerät lock.schlafzimmer_2."
fan.turn_on,fan.balkon,Balkonventilator,fan.balkon_terrasse,Bitte schalte den Balkonventilator ein.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.balkon_terrasse', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Okay, ich versuche es jetzt mit dem Balkonventilator."
blinds.close_cover,blinds.hauptschlafzimmer,Jalousien für das Hauptschlafzimmer,blinds.hauptschlafzimm,Schließe bitte die Jalousien im Hauptschlafzimmer.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.hauptschlafzimm', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Alles klar, ich versuche es jetzt mit den Jalousien für das Hauptschlafzimmer."
blinds.open_cover,blinds.flur,Flurjalousien,blinds.flur_2,Öffne bitte die Jalousien im Flur.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.flur_2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Verstanden, ich versuche es mit den Flurjalousien."
1 service_name correct_device_name correct_friendly_name bad_device_name phrase error_result retry_prompt
2 light.turn_on light.living_room_lamp Wohnzimmerlampe light.livng_room_lamp Bitte schalte die <device_name> ein. Fehler: Entität light.livng_room_lamp nicht gefunden. Ich versuche stattdessen die Wohnzimmerlampe.
3 climate.set_temperature climate.hallway Flurthermostat climate.halway Stelle den <device_name> auf <temp_f> Grad ein. Fehler: Entität climate.halway nicht gefunden. Versuche es erneut mit dem Flurthermostat.
4 fan.turn_off fan.office Büroventilator fan.offce Schalte den <device_name> aus. Fehler: Entität fan.offce nicht gefunden. Ich versuche den Büroventilator erneut.
5 media_player.turn_on media_player.bose_living Bose-Wohnzimmer media_player.bose_livingroom Schalte bitte die Bose‑Wohnzimmer‑Anlage ein. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.bose_livingroom', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Alles klar, ich versuche es jetzt mit dem richtigen Gerät.
6 garage_door.stop_cover garage_door.carport Carport-Garagentor garage_door.carportt Stoppe das Carport-Garagentor. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.carportt', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, ich versuche es mit dem richtigen Gerät.
7 vacuum.return_to_base vacuum.entryway_eufy Staubsammler im Eingangsbereich vacuum.entryway_euffy Kannst du bitte den Staubsammler im Eingangsbereich zurück zur Basis fahren? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.entryway_euffy', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, ich probiere es jetzt mit dem richtigen Gerät.
8 garage_door.toggle garage_door.golfwagen Golfwagentür garage_door.golfwage Bitte öffne die Garage. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.golfwage', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Alles klar, ich versuche es jetzt mit der Golfwagentür.
9 switch.turn_on switch.study_room_lights Lichtschalter im Arbeitszimmer switch.studyroom_lights Schalte bitte das Licht im Arbeitszimmer ein. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.studyroom_lights', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, ich versuche es jetzt mit dem richtigen Gerät: Lichtschalter im Arbeitszimmer.
10 light.toggle light.badezimmerspiegel Spiegellichter light.badezimmerspiegel_alt Schalte die Spiegellichter bitte um. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.badezimmerspiegel_alt', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entschuldigung, ich versuche es jetzt mit dem richtigen Gerät.
11 light.turn_off light.downstairs_fireplace_mqtt Kaminlicht im Erdgeschoss light.downstairs_fireplace_mqtt_backup Schalte das Kaminlicht im Erdgeschoss aus. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.downstairs_fireplace_mqtt_backup', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entschuldigung, ich probiere es jetzt mit dem korrekten Gerät.
12 lock.unlock lock.wintergarten Wintergartenschloss lock.wintergaten Entsperre bitte das Wintergartenschloss. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.wintergaten', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Versuche es jetzt mit dem richtigen Gerät lock.wintergarten.
13 light.turn_off light.upstairs_fireplace_zwave Kaminlicht im Obergeschoss light.upstairs_fireplace_z Schalte das Kaminlicht im Obergeschoss aus. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.upstairs_fireplace_z', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Alles klar, ich versuche es jetzt mit dem korrekten Gerät.
14 climate.turn_on climate.emerson_sensi_touch Emerson Sensi Touch WLAN-Thermostat climate.emerson_sensi_touch_plus Bitte das Thermostat einschalten. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.emerson_sensi_touch_plus', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, ich versuche es erneut mit dem richtigen Gerät.
15 vacuum.return_to_base vacuum.downstairs_guest_room Staubsauger im Gästezimmer im Erdgeschoss vacuum.guestroom_downstairs Kannst du den Staubsauger im Gästezimmer im Erdgeschoss zur Ladestation zurückfahren? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.guestroom_downstairs', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Verstanden, ich versuche es jetzt mit dem Gerät 'vacuum.downstairs_guest_room'.
16 switch.turn_off switch.spielzimmer_lichter Lichtschalter für Spielzimmer switch.spielzimmer_lichtern Schalte bitte das Licht im Spielzimmer aus. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.spielzimmer_lichtern', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entschuldigung, ich versuche es jetzt mit dem richtigen Schalter.
17 climate.set_temperature climate.trane_comfortlink_ii Trane ComfortLink II XL1050 climate.trane_comfortlink_ii_extra Bitte stelle die Temperatur auf <temp_f> Grad ein. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.trane_comfortlink_ii_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Alles klar, ich probiere es mit dem richtigen Gerät.
18 light.toggle light.downstairs_mancave_homekit Menschenhöhlenlicht im Erdgeschoss light.downstairs_mancave_homekit_v2 Schalte das Menschenhöhlenlicht im Erdgeschoss ein. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.downstairs_mancave_homekit_v2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Verstanden, ich probiere jetzt das Menschenhöhlenlicht im Erdgeschoss.
19 media_player.volume_down media_player.playstation_5 Sony PS5 media_player.playstation_5x Hey, kannst du die Lautstärke meiner Sony PS5 leiser machen? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.playstation_5x', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, ich versuche es mit dem richtigen Gerät.
20 light.turn_on light.front_library_ge Vordere Bibliotheksleuchte light.front_librar_ge Schalte bitte das Licht in der vorderen Bibliothek ein. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.front_librar_ge', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Versuche es jetzt mit der Vordere Bibliotheksleuchte.
21 media_player.turn_on media_player.roku_schlafzimmer Roku-Hauptschlafzimmer media_player.roku_schlafzimmer_alt Bitte schalte das Roku im Hauptschlafzimmer ein. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.roku_schlafzimmer_alt', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Verstanden, ich versuche es jetzt mit dem richtigen Gerät.
22 fan.turn_off fan.küche Küchenventilator fan.küchevent Schalte den Küchenventilator aus. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.küchevent', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, ich versuche es jetzt mit dem Küchenventilator.
23 vacuum.start vacuum.front_hall_samsung Kehrender Bot in der Eingangshalle vacuum.front_hall_samsungs Bitte starte den Kehrenden Bot in der Eingangshalle. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.front_hall_samsungs', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Verstanden, ich versuche es jetzt mit dem richtigen Gerät.
24 blinds.open_cover blinds.flur Flurjalousien blinds.flur_jalousien Öffne die Jalousien im Flur. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.flur_jalousien', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, ich versuche es mit den Flurjalousien.
25 light.toggle light.downstairs_arcade_homekit Arcade-Licht im Erdgeschoss light.downstairs_arcade_homekit_v2 Schalte das Arcade-Licht im Erdgeschoss bitte um. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.downstairs_arcade_homekit_v2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Alles klar, ich versuche es jetzt mit dem korrekten Gerät.
26 blinds.open_cover blinds.gäste_wc Jalousien für das Gästebad blinds.wc_gäste Öffne die Jalousien im Gäste‑WC. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.wc_gäste', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, ich versuche es jetzt mit den Jalousien für das Gästebad.
27 switch.toggle switch.sicherheitssystem Schalter des Sicherheitssystems switch.sicherheitssysteme Schalte bitte den Schalter des Sicherheitssystems um. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.sicherheitssysteme', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Alles klar, ich probiere es mit dem korrekten Gerät.
28 climate.turn_on climate.trane_comfortlink_ii Trane ComfortLink II XL1050 climate.trane_comfortlink_iii Schalte bitte die Klimaanlage ein. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.trane_comfortlink_iii', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Alles klar, ich probiere es jetzt mit dem richtigen Gerät.
29 fan.toggle fan.terrasse Terrassenventilator fan.terrassenz Schalte den Terrassenventilator bitte ein. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.terrassenz', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Alles klar, ich probiere es jetzt mit dem Terrassenventilator.
30 lock.lock lock.werkzeugschuppen Schloss für Geräteschuppen lock.werkzeugschupen Bitte schließe das Schloss für den Geräteschuppen. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.werkzeugschupen', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Verstanden, ich probiere es jetzt mit lock.werkzeugschuppen.
31 lock.unlock lock.pool_gate Pooltorschloss lock.pool_gate_main Bitte entsperre das Pooltorschloss. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.pool_gate_main', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, ich versuche es jetzt mit dem richtigen Gerät lock.pool_gate.
32 media_player.media_play_pause media_player.denon_av_receiver Denon Audio-Video-Receiver media_player.denon_av_rec Bitte spiele oder pausiere die Musik auf dem Receiver <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.denon_av_rec', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, ich versuche es jetzt mit dem richtigen Gerät.
33 fan.turn_on fan.schlafzimmer Schlafzimmerventilator fan.schlummerzimmer Bitte schalte den Ventilator im Schlafzimmer ein. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.schlummerzimmer', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entschuldigung, ich versuche es mit dem Schlafzimmerventilator.
34 switch.turn_off switch.outdoor_security_lights Schalter für Sicherheitsbeleuchtung im Außenbereich switch.outdoor_security_light Bitte schalte die Sicherheitsbeleuchtung im Außenbereich aus. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.outdoor_security_light', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entschuldigung, ich versuche es jetzt mit dem korrekten Schalter.
35 vacuum.return_to_base vacuum.smart_home_automator Smart-Home-Reinigungsbot vacuum.smart_home_automat Bitte bringe den Staubsauger zurück zur Ladestation. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.smart_home_automat', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entschuldigung, ich versuche es jetzt mit dem richtigen Gerät.
36 fan.turn_on fan.schlafzimmer Schlafzimmerventilator fan.schlafzimmer_extra Schalte den Schlafzimmerventilator bitte ein. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.schlafzimmer_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, ich versuche es jetzt mit dem Schlafzimmerventilator.
37 light.turn_on light.upstairs_study_zwave Arbeitszimmerlampe im Obergeschoss light.upstairs_stud_zwave Schalte bitte das Licht im Arbeitszimmer ein. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.upstairs_stud_zwave', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Alles klar, ich versuche es jetzt mit der Arbeitszimmerlampe im Obergeschoss.
38 climate.set_temperature climate.bosch_bcc100 Bosch BCC100 Connected Control climate.bosch_ccb100 Stelle die Temperatur auf <temp_f> Grad ein. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.bosch_ccb100', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, ich versuche es jetzt mit dem richtigen Gerät.
39 light.toggle light.front_study_homekit Vorderes Studienlicht light.front_study_homekit_v2 Schalte das Vorderes Studienlicht um. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.front_study_homekit_v2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, ich versuche es mit dem Vorderen Studienlicht.
40 fan.turn_on fan.wohnzimmer_mitte Zentraler Wohnzimmerventilator fan.wohnzimmer_mitte_alt Kannst du bitte den zentralen Wohnzimmerventilator einschalten? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.wohnzimmer_mitte_alt', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, ich versuche es jetzt mit dem richtigen Gerät.
41 climate.set_temperature climate.emerson_sensi_touch Emerson Sensi Touch WLAN-Thermostat climate.emer_sensi_touch Stelle die Temperatur auf <temp_f> Grad ein. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.emer_sensi_touch', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Alles klar, ich versuche es jetzt mit dem Emerson Sensi Touch WLAN‑Thermostat.
42 blinds.close_cover blinds.somfy_living Wohnzimmerjalousien blinds.somfy_livng Schließe bitte die Wohnzimmerjalousien. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.somfy_livng', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, ich versuche es mit dem richtigen Gerät.
43 fan.decrease_speed fan.esszimmer Esszimmerventilator fan.esszimmervent Kannst du bitte die Geschwindigkeit des Esszimmerventilators reduzieren? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.esszimmervent', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, ich probiere es jetzt mit dem richtigen Gerät.
44 fan.turn_on fan.badezimmer Badezimmerventilator fan.badezimm Bitte schalte den Badezimmerventilator ein. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.badezimm', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Alles klar, ich versuche es jetzt mit dem Badezimmerventilator.
45 light.turn_on light.downstairs_office_mqtt Bürolicht im Erdgeschoss light.downstairs_offic_mqtt Schalte das Bürolicht im Erdgeschoss ein. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.downstairs_offic_mqtt', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, ich probiere es mit dem richtigen Gerät erneut.
46 climate.turn_on climate.carrier_cor Carrier Cor WLAN-Thermostat climate.carrier_core Bitte das Klima im Wohnzimmer einschalten. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.carrier_core', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Versuche es jetzt mit dem korrekten Gerät climate.carrier_cor.
47 media_player.media_play_pause media_player.roku_schlafzimmer Schlafzimmer-Roku-Spieler media_player.roku_zimmer_schlaf Spiele das Video auf dem Schlafzimmer-Roku-Spieler ab. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.roku_zimmer_schlaf', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Alles klar, ich versuche es jetzt mit dem richtigen Gerät.
48 media_player.turn_off media_player.chrome_cast_schlafzimmer Schlafzimmer-Chromecast media_player.chromecast_schlafzimmer Schalte das Schlafzimmer-Chromecast aus. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.chromecast_schlafzimmer', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, ich versuche es jetzt mit dem richtigen Gerät.
49 garage_door.toggle garage_door.weinkeller Weinkellertür garage_door.weinkeller_tür Öffne die Weinkellertür. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.weinkeller_tür', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, ich versuche es jetzt mit der richtigen Weinkellertür.
50 light.turn_on light.garage Garagenlicht light.garagel Schalte das Garagenlicht ein. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.garagel', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, ich versuche es mit dem Garagenlicht.
51 media_player.volume_up media_player.kindergarten Kindergarten-Mediaplayer media_player.kindergartn Bitte die Lautstärke beim Kindergarten-Mediaplayer erhöhen. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.kindergartn', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, ich versuche es jetzt mit dem Kindergarten-Mediaplayer.
52 switch.toggle switch.outdoor_security_lights Schalter für Sicherheitsbeleuchtung im Außenbereich switch.outdoor_security_light Schalte bitte die Sicherheitsbeleuchtung im Außenbereich ein. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.outdoor_security_light', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Verstanden, ich probiere es jetzt mit dem korrekten Schalter.
53 switch.turn_off switch.study_room_lights Lichtschalter im Arbeitszimmer switch.studyroom_lights Schalte bitte das Licht im Arbeitszimmer aus. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.studyroom_lights', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entschuldigung, ich versuche es erneut mit dem richtigen Gerät.
54 light.turn_on light.kitchen_island_cool Kühles Licht der Kücheninsel light.kitchen_island_cooler Schalte das kühle Licht der Kücheninsel ein. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.kitchen_island_cooler', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entschuldigung, ich versuche es jetzt mit dem richtigen Gerät.
55 blinds.close_cover blinds.küche Küchenjalousien blinds.küche_alt Schließe bitte die Jalousien in der Küche. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.küche_alt', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Ich versuche es noch einmal mit den Küchenjalousien.
56 media_player.turn_on media_player.echo_dot Küche Echo Dot media_player.echodot_kueche Bitte schalte die Küche Echo Dot ein. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.echodot_kueche', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Kein Problem, ich probiere es jetzt mit dem richtigen Gerät.
57 switch.turn_off switch.gartenlichter Steuerung der Gartenbeleuchtung switch.gartenlicht Schalte bitte die Gartenbeleuchtung aus. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.gartenlicht', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, ich versuche es jetzt mit switch.gartenlichter.
58 vacuum.return_to_base vacuum.downstairs_guest_room Staubsauger im Gästezimmer im Erdgeschoss vacuum.downstairs_gestru_rm Bitte bring den Staubsauger im Gästezimmer im Erdgeschoss zurück zur Basis. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.downstairs_gestru_rm', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Verstanden, ich versuche es jetzt mit dem korrekten Gerät.
59 blinds.open_cover blinds.dachfenster Oberlichtjalousien blinds.dachfenster_alt Öffne die Oberlichtjalousien. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.dachfenster_alt', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entschuldigung, ich versuche es jetzt mit den Oberlichtjalousien.
60 switch.turn_on switch.warehouse_lights Lagerlichtschalter switch.warehous_lights Bitte das Lagerlicht einschalten. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.warehous_lights', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Ich versuche es jetzt mit dem richtigen Gerät.
61 climate.turn_off climate.johnson_glas Johnson Controls GLAS Smart Thermostat climate.johns_glass Schalte die Klimaanlage aus. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.johns_glass', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, ich versuche es mit dem richtigen Gerät.
62 climate.turn_off climate.honeywell_lyric_t6 Honeywell Lyric T6 Pro climate.honeywell_lyric_t6x Kannst du bitte das Klima im Wohnzimmer ausschalten? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.honeywell_lyric_t6x', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Alles klar, ich versuche es jetzt mit dem richtigen Gerät.
63 lock.lock lock.garage Garagentorschloss lock.garage_main Bitte schließe das Garagentorschloss. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.garage_main', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Verstanden, ich verwende jetzt das korrekte Gerät lock.garage.
64 garage_door.stop_cover garage_door.two_car Garage für zwei Autos garage_door.two_car_plus Stopp die Garage für zwei Autos. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.two_car_plus', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Verstanden, ich benutze jetzt das richtige Gerät.
65 garage_door.close_cover garage_door.ein_auto Garage für ein Auto garage_door.ein_auto_alt Bitte das Garagentor für ein Auto schließen. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.ein_auto_alt', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, ich versuche es nochmal mit dem richtigen Gerät.
66 fan.turn_on fan.wäschekammer Ventilator für die Waschküche fan.wäschekammer_2 Schalte bitte den Ventilator für die Waschküche ein. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.wäschekammer_2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entschuldigung, ich versuche es mit dem richtigen Gerät.
67 climate.turn_off climate.sinope_smart Intelligentes Thermostat von Sinopé climate.smart_sinope Bitte das Thermostat ausschalten. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.smart_sinope', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Alles klar, ich versuche es jetzt mit dem Intelligenten Thermostat von Sinopé.
68 garage_door.close_cover garage_door.rv_storage Stauraumtür für Wohnmobile garage_door.rv_storag Schließe bitte die Stauraumtür für Wohnmobile. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.rv_storag', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Alles klar, ich probiere es jetzt mit der Stauraumtür für Wohnmobile.
69 light.turn_on light.downstairs_tv_room_homekit TV-Raumbeleuchtung im Erdgeschoss light.downstairs_tv_room_homekit_v2 Bitte das Licht im TV‑Raum im Erdgeschoss einschalten. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.downstairs_tv_room_homekit_v2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, ich versuche es mit dem richtigen Gerät 'light.downstairs_tv_room_homekit'.
70 media_player.turn_on media_player.onkyo_tx_sr Onkyo Heimkino-Receiver media_player.onkyo_tx_srx Schalte den Onkyo Heimkino-Receiver ein. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.onkyo_tx_srx', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Versuche es jetzt mit dem korrekten Gerät.
71 lock.unlock lock.sauna Sauna-Türschloss lock.saunax Bitte das Saunatürschloss öffnen. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.saunax', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, ich versuche es jetzt mit dem richtigen Gerät.
72 lock.lock lock.elektrisches_tor Elektrisches Torschloss lock.elektrisches_torx Bitte schließe das elektrische Torschloss. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.elektrisches_torx', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Alles klar, ich versuche es jetzt mit dem richtigen Gerät.
73 blinds.stop_cover blinds.kitchen_window Jalousien für Küchenfenster blinds.kitchen_win Stoppe bitte die Jalousien im Küchenfenster. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.kitchen_win', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Alles klar, ich versuche es jetzt mit den Jalousien für das Küchenfenster.
74 garage_door.open_cover garage_door.geschäft Werkstatt Garagentor garage_door.gesch Öffne das Garagentor der Werkstatt. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.gesch', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Verstanden, ich versuche es jetzt mit dem richtigen Gerät.
75 fan.turn_off fan.dachbodenlüftung Ventilator für Dachbodenlüftung fan.dachboden_lüftung Schalte den Ventilator für die Dachbodenlüftung aus. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.dachboden_lüftung', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Kein Problem, ich versuche es jetzt mit dem Ventilator für Dachbodenlüftung.
76 switch.turn_on switch.sicherheitssystem Schalter des Sicherheitssystems switch.sicherheits_modul Bitte schalte das Sicherheitssystem ein. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.sicherheits_modul', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entschuldigung, ich versuche es jetzt mit dem Schalter des Sicherheitssystems.
77 lock.lock lock.ski_storage Skiaufbewahrungsschloss lock.ski_store Bitte verriegle das Skiaufbewahrungsschloss. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.ski_store', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Verstanden, ich versuche es jetzt mit dem richtigen Gerät.
78 fan.decrease_speed fan.wohnzimmer_1 Wohnzimmerventilator fan.wohnzimmer_1x Bitte reduziere die Geschwindigkeit des Wohnzimmerventilators. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.wohnzimmer_1x', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entschuldigung, ich probiere es jetzt mit dem korrekten Gerät fan.wohnzimmer_1.
79 switch.turn_on switch.attic_lights Lichtschalter für den Dachboden switch.attic_lights_main Schalte das Licht im Dachboden ein. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.attic_lights_main', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, ich versuche es jetzt mit dem richtigen Gerät 'switch.attic_lights'.
80 blinds.close_cover blinds.esszimmer Esszimmerjalousien blinds.esszimm Schließe bitte die Jalousien im Esszimmer. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.esszimm', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, ich versuche es mit den Esszimmerjalousien.
81 lock.unlock lock.gun_safe Waffentresorschloss lock.gun_saf Entsperre bitte das Waffentresorschloss. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.gun_saf', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, ich versuche es jetzt mit dem korrekten Gerät (lock.gun_safe).
82 light.turn_off light.kitchen_microwave_warm Küche, Mikrowelle, warmes Licht light.kitchen_microwav_warm Schalte das warme Licht in der Küche aus, das über der Mikrowelle ist. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.kitchen_microwav_warm', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Alles klar, ich versuche es jetzt mit dem richtigen Gerät.
83 climate.set_temperature climate.emerson_sensi_touch Emerson Sensi Touch WLAN-Thermostat climate.emer_sensi_touch Stelle die Temperatur auf <temp_f> Grad ein. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.emer_sensi_touch', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, ich versuche es mit dem Emerson Sensi Touch Thermostat.
84 blinds.toggle blinds.somfy_kitchen Küchenjalousien blinds.kitchen_somfy Schalte die Küchenjalousien um. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.kitchen_somfy', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, ich versuche es jetzt mit den Küchenjalousien.
85 light.turn_off light.upstairs_recreation_zigbee Erholungslicht im Obergeschoss light.upstairs_recreat_zigbee Schalte das Erholungslicht im Obergeschoss aus. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.upstairs_recreat_zigbee', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Verstanden, ich versuche es jetzt mit dem richtigen Gerät.
86 switch.toggle switch.zoo_enclosure_lighting Steuerung der Zoogehegebeleuchtung switch.zoo_enclosure_lights Schalte die Zoogehegebeleuchtung ein. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.zoo_enclosure_lights', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, ich versuche es mit der Steuerung der Zoogehegebeleuchtung.
87 media_player.media_play_pause media_player.ipad_kitchen Küchen-iPad media_player.ipad_kitchen Spiele oder pausiere die Musik auf dem iPad in der Küche. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.ipad_kitchen', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Verstanden, ich probiere es jetzt mit dem Küchen‑iPad.
88 climate.set_temperature climate.honeywell_lyric_t6 Honeywell Lyric T6 Pro climate.honeywell_lyric_t6_backup Stelle die Temperatur auf <temp_f> Grad ein. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.honeywell_lyric_t6_backup', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Alles klar, ich nutze jetzt das korrekte Gerät.
89 blinds.toggle blinds.ikea_smart Intelligente Jalousien von Ikea blinds.ikea_smart_pro Bitte öffne die intelligenten Jalousien von Ikea im Wohnzimmer. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.ikea_smart_pro', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Versuche es jetzt mit dem korrekten Gerät blinds.ikea_smart.
90 media_player.turn_on media_player.playstation_5 Sony PS5 media_player.playstation_5_pro Schalte bitte die Sony PS5 ein. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.playstation_5_pro', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Alles klar, ich versuche es jetzt mit der Sony PS5.
91 fan.increase_speed fan.dachboden_2 Dachbodenventilatoren fan.dachbodn_2 Bitte erhöhe die Geschwindigkeit des Dachbodenventilators. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.dachbodn_2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entschuldigung, ich versuche es jetzt mit dem korrekten Gerät.
92 garage_door.toggle garage_door.chamberlain_1 Kammerherr garage_door.chamberlain_1_backup Kannst du bitte das Garagentor öffnen? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.chamberlain_1_backup', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, ich versuche es jetzt mit dem richtigen Gerät.
93 blinds.open_cover blinds.kindergarten Kinderzimmerjalousien blinds.kindergan Hey, bitte öffne die Jalousien im Kinderzimmer. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.kindergan', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entschuldigung, ich versuche es jetzt mit den Jalousien im Kinderzimmer.
94 fan.increase_speed fan.schlafzimmer_rechts Schlafzimmerventilator auf der rechten Seite fan.schlafzimmer_rechts_plus Bitte erhöhe die Geschwindigkeit des Schlafzimmerventilators auf der rechten Seite. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.schlafzimmer_rechts_plus', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Verstanden, ich versuche es jetzt mit dem richtigen Gerät.
95 blinds.open_cover blinds.badezimmer_1 Erste Badezimmerjalousien blinds.badezimmer_01 Bitte öffne die Jalousien im Badezimmer. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.badezimmer_01', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entschuldigung, ich versuche es mit den richtigen Badezimmerjalousien.
96 lock.unlock lock.höhle Höhlenschloss lock.höhl Bitte entriegle das Höhlenschloss. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.höhl', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, ich versuche es jetzt mit dem Gerät lock.höhle.
97 blinds.close_cover blinds.frontscheibe Jalousien für die Vorderfenster blinds.frontscheibe_extra Schließe die Jalousien für die Vorderfenster. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.frontscheibe_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entschuldigung, ich versuche es mit den Jalousien für die Vorderfenster.
98 blinds.toggle blinds.badezimmer Badezimmerjalousien blinds.badezimmer Schalte die Badezimmerjalousien bitte um. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.badezimmer', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Verstanden, ich versuche es mit den Badezimmerjalousien.
99 climate.set_temperature climate.nest_learning Nest-Lernthermostat climate.nst_learning Stelle die Temperatur auf <temp_f> Grad ein. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.nst_learning', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Ich probiere es jetzt mit dem Nest-Lernthermostat.
100 vacuum.return_to_base vacuum.under_sofa_cleaner Untersofareiniger vacuum.unter_sofa_cleaner Bitte bring den Untersofareiniger zurück zur Ladestation. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.unter_sofa_cleaner', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, ich versuche es jetzt mit dem richtigen Gerät.
101 switch.toggle switch.pool_pump Schalter für Poolpumpe switch.poolpump Schalte die Poolpumpe ein. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.poolpump', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, ich versuche es jetzt mit dem Schalter für die Poolpumpe.
102 blinds.open_cover blinds.keller Kellerjalousien blinds.kell Öffne die Kellerjalousien. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.kell', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, ich versuche es jetzt mit den Kellerjalousien.
103 switch.turn_off switch.kitchen_lights Küchenlichtschalter switch.kitchen_lights_v2 Schalte bitte das Küchenlicht aus. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.kitchen_lights_v2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, ich versuche es jetzt mit dem richtigen Schalter.
104 vacuum.stop vacuum.patio_doorway_vac Reiniger für Terrassentüren vacuum.patio_doorway_vacuum Bitte stoppe den Reiniger für Terrassentüren. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.patio_doorway_vacuum', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, ich probiere es jetzt mit dem richtigen Gerät.
105 blinds.toggle blinds.wohnzimmer Wohnzimmerjalousien blinds.wohnzimmer_alt Schalte die Jalousien im Wohnzimmer bitte um. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.wohnzimmer_alt', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, ich versuche es jetzt mit den Wohnzimmerjalousien.
106 blinds.open_cover blinds.flur_1 Erste Flurjalousien blinds.flur_1x Öffne die Jalousien im Flur, bitte. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.flur_1x', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Verstanden, ich probiere es jetzt mit den richtigen Jalousien (blinds.flur_1).
107 switch.turn_on switch.outdoor_security_lights Schalter für Sicherheitsbeleuchtung im Außenbereich switch.outdoor_security_lgt Schalte die Sicherheitsbeleuchtung im Außenbereich ein. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.outdoor_security_lgt', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Verstanden, ich verwende jetzt den korrekten Schalter.
108 switch.toggle switch.wintergarten_lichter Wintergarten-Lichtschalter switch.wintergarten_licht Schalte das Wintergarten-Licht bitte um. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.wintergarten_licht', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Verstanden, ich versuche es nun mit dem korrekten Gerät.
109 fan.turn_on fan.kindergarten Kinderzimmer-Fan fan.kindergartn Schalte den Kinderzimmer-Fan ein. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.kindergartn', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, ich versuche es mit dem korrekten Gerät.
110 light.turn_on light.downstairs_bathroom_warm Warmes Licht im Badezimmer im Erdgeschoss light.downstairs_bathroom_warm_extra Schalte das warme Licht im Badezimmer im Erdgeschoss ein. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.downstairs_bathroom_warm_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Verstanden, ich versuche es mit dem Gerät 'light.downstairs_bathroom_warm'.
111 lock.unlock lock.gun_safe Waffentresorschloss lock.gun_saf Bitte entsperre das Waffentresorschloss. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.gun_saf', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Alles klar, ich versuche es jetzt mit dem richtigen Gerät.
112 blinds.toggle blinds.wohnzimmer Wohnzimmerjalousien blinds.wohnzimmer_2 Schalte die Wohnzimmerjalousien um. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.wohnzimmer_2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, ich versuche es mit den richtigen Wohnzimmerjalousien.
113 blinds.open_cover blinds.dachfenster Oberlichtjalousien blinds.dachfenster_extra Öffne bitte die Oberlichtjalousien. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.dachfenster_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entschuldigung, ich versuche es mit dem korrekten Gerät.
114 fan.increase_speed fan.studie_1 Studienfan fan.studi_1 Erhöhe bitte die Geschwindigkeit des Studienfans. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.studi_1', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Alles klar, ich versuche es jetzt mit dem Studienfan.
115 lock.unlock lock.kitchen_door Kücheneingangsschloss lock.kitchen Bitte das Kücheneingangsschloss entsperren. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.kitchen', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Verstanden, ich versuche es jetzt mit lock.kitchen_door.
116 switch.toggle switch.laundry_room_lights Lichtschalter für Waschküche switch.laundry_room_light Bitte schalte das Licht in der Waschküche um. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.laundry_room_light', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, ich versuche es jetzt mit dem Gerät 'switch.laundry_room_lights'.
117 garage_door.stop_cover garage_door.boot Lagertür für Boote garage_door.boots Stoppe die Lagertür für Boote. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.boots', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Verstanden, ich versuche es jetzt mit der richtigen Lagertür für Boote.
118 garage_door.stop_cover garage_door.left_door Linkes Garagentor garage_door.leftdoor Stoppe das linke Garagentor. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.leftdoor', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Alles klar, ich versuche es mit dem richtigen Gerät (garage_door.left_door).
119 vacuum.return_to_base vacuum.right_stairwell_sweeper Rechter Treppenhausreiniger vacuum.right_stairwell_sweeper_extra Bitte bring den Rechten Treppenhausreiniger zurück zur Ladestation. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.right_stairwell_sweeper_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Verstanden, ich versuche es jetzt mit dem korrekten Gerät.
120 media_player.turn_off media_player.roku_schlafzimmer Roku-Hauptschlafzimmer media_player.roku_hauptschlafzimmer Schalte bitte das Roku im Hauptschlafzimmer aus. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.roku_hauptschlafzimmer', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Verstanden, ich versuche es jetzt mit dem richtigen Gerät.
121 lock.lock lock.schlafzimmer_2 Zweites Schlafzimmerschloss lock.schlafzimmer2_extra Bitte schließe das zweite Schlafzimmerschloss. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.schlafzimmer2_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entschuldigung, ich versuche es jetzt mit dem richtigen Gerät lock.schlafzimmer_2.
122 fan.turn_on fan.balkon Balkonventilator fan.balkon_terrasse Bitte schalte den Balkonventilator ein. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.balkon_terrasse', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Okay, ich versuche es jetzt mit dem Balkonventilator.
123 blinds.close_cover blinds.hauptschlafzimmer Jalousien für das Hauptschlafzimmer blinds.hauptschlafzimm Schließe bitte die Jalousien im Hauptschlafzimmer. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.hauptschlafzimm', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Alles klar, ich versuche es jetzt mit den Jalousien für das Hauptschlafzimmer.
124 blinds.open_cover blinds.flur Flurjalousien blinds.flur_2 Öffne bitte die Jalousien im Flur. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.flur_2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Verstanden, ich versuche es mit den Flurjalousien.

View File

@@ -0,0 +1,124 @@
reason_type,service_name,device_name,friendly_name,desired_state,phrase,response
not_available,lock.lock,back_door,Schloss an der Hintertür,,"Schließe <device_name> ab.","Ich kann kein Schloss an der Hintertür finden."
already_state,light.turn_on,hallway,Flurlichter,on,"Schalte die <device_name> ein.","Die Flurlichter sind bereits an."
already_state,switch.turn_off,garage,Steckdose in der Garage,off,"Schalte die <device_name> aus.","Die Steckdose in der Garage ist bereits aus."
not_available,fan.decrease_speed,garage,Garagenfan,,Verringere die Geschwindigkeit von <device_name>,"Entschuldigung, ich kann <device_name> nicht in deinem Zuhause finden."
not_available,blinds.toggle,garage,Garagenjalousien,,Schalte <device_name> um,"Entschuldigung, ich kann das Gerät nicht in deinem Zuhause finden."
not_available,garage_door.open_cover,geschäft,Werkstatt Garagentor,,Öffne die Abdeckung des <device_name>,"Entschuldigung, ich kann das Gerät in deinem Zuhause nicht finden."
not_available,switch.turn_on,sauna_lights,Saunalichtschalter,,Schalte <device_name> ein,"Entschuldigung, ich kann das Gerät nicht in deinem Zuhause finden."
not_available,media_player.turn_on,philips_ambilight_tv,Philips LED-Fernseher mit Hintergrundbeleuchtung,,Schalte <device_name> ein.,"Entschuldigung, ich kann das Gerät nicht in deinem Zuhause finden."
already_state,vacuum.return_to_base,entryway_eufy,Staubsammler im Eingangsbereich,docked,Bitte <device_name> zurück zur Basis fahren,"Der Staubsauger ist bereits am Dock, es ist nichts zu ändern."
not_available,fan.increase_speed,keller,Kellerventilator,,Erhöhe die Geschwindigkeit des <device_name>.,"Entschuldigung, ich kann das Gerät <device_name> nicht in deinem Zuhause finden."
not_available,climate.turn_on,trane_comfortlink_ii,Trane ComfortLink II XL1050,,Schalte das Klima <device_name> ein,"Entschuldigung, ich kann das Gerät <device_name> nicht in deinem Zuhause finden."
not_available,lock.unlock,studio,Studioschloss,,Entsperre <device_name>,"Entschuldigung, ich kann das Gerät in deinem Zuhause nicht finden."
not_available,climate.set_temperature,thermostat_lux_geo,Lux Geo WLAN-Thermostat,,Stelle die Temperatur im <device_name> auf 21 Grad ein.,"Entschuldigung, ich kann das Gerät <device_name> im Haus nicht finden."
already_state,switch.turn_off,badezimmer_fan,Schalter für Badezimmerventilator,off,Schalte <device_name> aus,"Das Gerät ist bereits aus, es muss nichts geändert werden."
already_state,lock.lock,werkzeugschuppen,Schloss für Geräteschuppen,locked,Sperre <device_name>,"Das Gerät ist bereits gesperrt, es muss nichts geändert werden."
already_state,switch.turn_on,werkstattbeleuchtung,Werkstattlichtschalter,on,Schalte <device_name> ein,"Das Gerät ist bereits eingeschaltet, daher muss ich nichts ändern."
not_available,media_player.volume_up,sony_4k_projector,Heimkinoprojektor von Sony,,Erhöhe die Lautstärke von <device_name>,"Entschuldigung, ich kann das Gerät <device_name> nicht in deinem Zuhause finden."
not_available,vacuum.stop,entryway_eufy,Staubsammler im Eingangsbereich,,Stoppe den <device_name>.,"Entschuldigung, ich kann das Gerät nicht in deinem Zuhause finden."
already_state,lock.unlock,porch_door,Veranda-Türschloss,unlocked,Entsperre <device_name>,"Das Gerät ist bereits entriegelt, ein weiteres Entsperren ist nicht nötig."
not_available,fan.decrease_speed,büro,Büro-Fan,,Verringere die Geschwindigkeit des <device_name>,"Entschuldigung, ich kann das Gerät <device_name> nicht in deinem Zuhause finden."
not_available,garage_door.stop_cover,chamberlain_1,Kammerherr,,Stoppe <device_name>.,"Entschuldigung, ich kann das Gerät nicht in deinem Zuhause finden."
not_available,fan.turn_off,outdoor_küche,Küchenventilator für den Außenbereich,,Schalte <device_name> aus,"Entschuldigung, ich kann das Gerät nicht in deinem Zuhause finden."
not_available,lock.lock,schlafzimmer_3,Drittes Schlafzimmerschloss,,Schließe <device_name> ab,"Entschuldigung, ich kann das Gerät <device_name> nicht in deinem Zuhause finden."
not_available,media_player.volume_up,roku_ultra,Roku Hochleistungs-Streamer,,Lautstärke von <device_name> erhöhen,"Entschuldigung, ich kann <device_name> im Haus nicht finden."
already_state,lock.unlock,rear_gate,Heckklappenschloss,unlocked,Entsperre <device_name>.,"Das Gerät ist bereits entsperrt, ich muss nichts ändern."
not_available,fan.decrease_speed,studie_2,Studienfan,,Verringere die Geschwindigkeit von <device_name>,"Entschuldigung, ich kann das Gerät nicht in deinem Zuhause finden."
already_state,climate.turn_off,nest_learning,Nest-Lernthermostat,off,Schalte <device_name> aus,"Das Gerät ist bereits ausgeschaltet, es muss nichts geändert werden."
already_state,light.turn_on,büro,Bürolicht,on,Schalte das Licht <device_name> ein,"Das Licht <device_name> ist bereits an, ich muss nichts ändern."
not_available,fan.increase_speed,balkon,Balkonventilator,,Erhöhe die Geschwindigkeit von <device_name>,"Entschuldigung, ich kann <device_name> nicht im Haus finden."
already_state,lock.lock,gewächshaus,Gewächshausschloss,locked,Schließe <device_name> ab,"Der <device_name> ist bereits gesperrt, es muss nichts geändert werden."
already_state,switch.turn_on,stairway_lights,Treppenlichtschalter,on,Schalte <device_name> ein,"Entschuldigung, <device_name> ist bereits eingeschaltet, es ist keine Änderung nötig."
not_available,garage_door.stop_cover,golfwagen,Golfwagentür,,Stoppe das <device_name>,"Entschuldigung, ich kann das Gerät nicht in deinem Zuhause finden."
not_available,lock.unlock,sauna,Sauna-Türschloss,,Entsperre das Schloss <device_name>,"Entschuldigung, ich kann das Gerät <device_name> nicht in deinem Zuhause finden."
not_available,switch.turn_off,home_theater_lighting,Steuerung der Heimkinobeleuchtung,,Schalte <device_name> aus,"Entschuldigung, ich kann das Gerät nicht finden."
already_state,climate.turn_on,mysa_smart_thermostat,Mysa Smart Thermostat für elektrische Fußleistenheizungen,on,Schalte die Klimaanlage <device_name> ein,"Die Klimaanlage <device_name> ist bereits eingeschaltet, es ist nichts zu ändern."
not_available,media_player.volume_up,sonos_beam,Sonos Kompakt-Soundbar,,Lautstärke von <device_name> erhöhen,"Entschuldigung, ich kann das Gerät <device_name> nicht in Ihrem Zuhause finden."
not_available,light.turn_off,back_fireplace_lifx,Hinteres Kaminlicht,,Schalte das <device_name> aus.,"Entschuldigung, ich kann das Gerät <device_name> nicht in deinem Zuhause finden."
not_available,switch.toggle,badezimmer_fan,Schalter für Badezimmerventilator,,Schalte <device_name> um,"Entschuldigung, ich kann das Gerät <device_name> nicht in deinem Zuhause finden."
not_available,climate.turn_on,johnson_glas,Johnson Controls GLAS Smart Thermostat,,Schalte <device_name> ein,"Entschuldigung, ich kann das Gerät <device_name> nicht in deinem Zuhause finden."
not_available,media_player.turn_off,panasonic_4k_bluray_player,Panasonic Blueray-Player,,Schalte <device_name> aus,"Entschuldigung, ich kann das Gerät <device_name> nicht in deinem Zuhause finden."
not_available,light.turn_on,back_arcade_warm,Zurück Arcade Warmes Licht,,Schalte <device_name> ein,"Entschuldigung, ich kann das Gerät nicht in deinem Zuhause finden."
not_available,climate.set_temperature,trane_comfortlink_ii,Trane ComfortLink II XL1050,,Stelle die Temperatur von <device_name> auf 21°C ein.,"Entschuldigung, ich kann das Gerät <device_name> nicht in deinem Zuhause finden."
not_available,lock.lock,seiteneingang,Seitliches Torschloss,,Schließe <device_name> ab,"Entschuldigung, ich kann das Gerät nicht in deinem Zuhause finden."
not_available,light.turn_off,upstairs_sideyard_zigbee,Seitenlicht im Obergeschoss,,Schalte das Licht <device_name> aus.,"Entschuldigung, ich kann das Gerät <device_name> nicht finden."
already_state,fan.turn_off,badezimmer_unten,Ventilator im Badezimmer im Erdgeschoss,off,Bitte <device_name> ausschalten,"Der <device_name> ist bereits aus, es muss nichts geändert werden."
not_available,climate.set_temperature,zen_wifi_thermostat,Zen Thermostat WiFi Edition,,Stelle die Temperatur im <device_name> auf 20 Grad ein.,"Entschuldigung, ich kann das Gerät <device_name> nicht finden."
not_available,garage_door.toggle,gewächshaus,Gewächshaustür,,Schalte das <device_name> um,"Entschuldigung, ich kann das Gerät nicht in deinem Zuhause finden."
not_available,fan.toggle,dachboden_1,Dachbodenventilatoren,,Schalte <device_name> ein/aus,"Entschuldigung, ich finde das Gerät <device_name> nicht im Haus."
not_available,vacuum.return_to_base,back_deck_sweeper,Reiniger für den Hinterdeckbereich,,Bitte bring <device_name> zurück zur Basis,"Entschuldigung, ich kann das Gerät nicht in deinem Zuhause finden."
already_state,fan.turn_on,veranda,Deckenventilator für die Veranda,on,Schalte <device_name> ein,"Entschuldigung, das Gerät ist bereits eingeschaltet, es gibt nichts zu ändern."
already_state,vacuum.start,kitchen_xiaomi,Küchenstaubsauger,cleaning,Starte <device_name>,"Der Staubsauger reinigt bereits, es ist nichts zu ändern."
already_state,switch.turn_off,under_cabinet_lights,Schalter für die Beleuchtung unter dem Schrank,off,Schalte <device_name> aus,Der <device_name> ist bereits aus. Es gibt nichts zu ändern.
not_available,light.toggle,flur,Flurbeleuchtung,,Licht im <device_name> umschalten,"Entschuldigung, ich kann das Gerät nicht in deinem Zuhause finden."
not_available,blinds.open_cover,küche,Küchenjalousien,,Öffne die Jalousie <device_name>,"Entschuldigung, ich kann das Gerät <device_name> nicht in deinem Zuhause finden."
not_available,switch.toggle,wintergarten_lichter,Wintergarten-Lichtschalter,,Schalte <device_name> um,"Entschuldigung, ich kann das Gerät nicht in deinem Zuhause finden."
already_state,media_player.turn_off,sonos_living,Sonos-Wohnzimmer,off,Schalte <device_name> aus.,"Das Gerät ist bereits ausgeschaltet, es muss nichts geändert werden."
not_available,vacuum.start,left_corner_bot,Schmutzsauger in der linken Ecke,,Starte den <device_name>,"Entschuldigung, ich kann das Gerät nicht in deinem Zuhause finden."
not_available,vacuum.stop,downstairs_guest_room,Staubsauger im Gästezimmer im Erdgeschoss,,Stoppe den <device_name>,"Entschuldigung, ich kann das Gerät nicht in deinem Zuhause finden."
already_state,lock.lock,gewächshaus,Gewächshausschloss,locked,Schließe <device_name>.,"Das Gerät ist bereits gesperrt, es muss nichts geändert werden."
already_state,garage_door.close_cover,carport,Carporttür,closed,Schließe die <device_name>.,"Das <device_name> ist bereits geschlossen, es muss nichts geändert werden."
already_state,switch.turn_on,bewässerungssystem,Bewässerungssystemschalter,on,Schalte <device_name> ein.,"Der Schalter ist bereits eingeschaltet, es ist nichts zu ändern."
not_available,climate.turn_on,honeywell_lyric_t6,Honeywell Lyric T6 Pro,,Schalte das Klima <device_name> ein,"Entschuldigung, ich kann das Gerät <device_name> im Haus nicht finden."
not_available,blinds.toggle,theater_raum,Jalousien für Heimkino,,Schalte <device_name> um,"Entschuldigung, ich finde das Gerät nicht in deinem Zuhause."
already_state,fan.turn_on,master_bath,Master-Badezimmerventilator,on,Schalte <device_name> ein,"Der <device_name> läuft bereits, ich muss nichts ändern."
not_available,garage_door.toggle,ein_auto,Garage für ein Auto,,Schalte <device_name> um,"Entschuldigung, ich kann das Gerät nicht in deinem Zuhause finden."
not_available,blinds.open_cover,esszimmer,Esszimmerjalousien,,Öffne <device_name>,"Entschuldigung, ich kann das Gerät <device_name> nicht in deinem Zuhause finden."
not_available,blinds.toggle,wohnzimmer,Wohnzimmerjalousien,,Schalte <device_name> um,"Entschuldigung, ich kann <device_name> nicht in deinem Zuhause finden."
not_available,media_player.volume_up,apple_tv_4k,Apple 4K-Streaming-Gerät,,Lautstärke erhöhen bei <device_name>,"Entschuldigung, ich kann das Gerät <device_name> nicht in deinem Zuhause finden."
not_available,garage_door.toggle,golfwagen,Golfwagentür,,Schalte <device_name> um,"Entschuldigung, ich kann das Gerät nicht in deinem Zuhause finden."
not_available,lock.lock,ski_storage,Skiaufbewahrungsschloss,,Schließe <device_name> ab,"Entschuldigung, ich kann <device_name> nicht in deinem Zuhause finden."
not_available,climate.set_temperature,honeywell_lyric_t6,Honeywell Lyric T6 Pro,,Stelle die Temperatur im <device_name> auf 23 Grad ein.,"Entschuldigung, ich kann das Gerät <device_name> nicht in deinem Zuhause finden."
not_available,vacuum.start,keller_deebot,Keller-Deebot,,Starte den <device_name>,"Entschuldigung, ich kann das Gerät nicht in deinem Zuhause finden."
not_available,light.turn_off,master_schlafzimmer_lampe,Hauptschlafzimmerlampe,,Schalte das Licht <device_name> aus,"Entschuldigung, ich kann das Gerät <device_name> nicht in deinem Zuhause finden."
not_available,blinds.toggle,bastelraum,Bastelraumjalousien,,Schalte die Jalousie <device_name> um,"Entschuldigung, ich kann das Gerät <device_name> leider nicht in deinem Zuhause finden."
not_available,media_player.volume_up,fire_tv,Fire TV-Medien,,Lautstärke von <device_name> erhöhen,"Entschuldigung, ich kann <device_name> nicht in deinem Zuhause finden."
not_available,blinds.toggle,somfy_living,Wohnzimmerjalousien,,Schalte <device_name> um,"Entschuldigung, ich kann das Gerät <device_name> nicht in deinem Zuhause finden."
not_available,vacuum.stop,under_bed_cleaner,Staubsammler unter dem Bett,,Stoppe <device_name>,"Entschuldigung, ich kann das Gerät nicht in deinem Zuhause finden."
not_available,fan.toggle,dachboden,Dachbodenventilator,,Schalte <device_name> ein/aus,"Entschuldigung, ich kann das Gerät nicht im Haus finden."
not_available,garage_door.toggle,rv_storage,Stauraumtür für Wohnmobile,,Bitte <device_name> umschalten,"Entschuldigung, ich kann das Gerät <device_name> nicht in deinem Zuhause finden."
not_available,vacuum.stop,under_bed_cleaner,Staubsammler unter dem Bett,,Stoppe <device_name>,"Entschuldigung, ich kann das Gerät nicht finden."
already_state,climate.turn_on,johnson_glas,Johnson Controls GLAS Smart Thermostat,on,Schalte <device_name> ein,"Das Gerät ist bereits eingeschaltet, es muss nichts geändert werden."
not_available,switch.turn_on,office_lights,Schalter für Bürobeleuchtung,,Schalte <device_name> ein,"Entschuldigung, ich kann das Gerät <device_name> nicht im Haus finden."
not_available,switch.toggle,einfahrtslichter,Steuerung der Einfahrtsbeleuchtung,,Schalte <device_name> um,"Entschuldigung, ich kann das Gerät <device_name> nicht im Haus finden."
not_available,switch.turn_off,pool_pump,Schalter für Poolpumpe,,Schalte <device_name> aus,"Entschuldigung, ich kann das Gerät <device_name> nicht in deinem Zuhause finden."
not_available,light.turn_off,front_closet_homekit,Vorderes Schranklicht,,Schalte das Licht im <device_name> aus.,"Entschuldigung, ich kann das Gerät <device_name> nicht in deinem Zuhause finden."
already_state,blinds.close_cover,theater_raum,Jalousien für Heimkino,closed,Schließe die Jalousie <device_name>,"Entschuldigung, <device_name> ist bereits geschlossen, es gibt nichts zu ändern."
already_state,climate.turn_off,emerson_sensi_touch,Emerson Sensi Touch WLAN-Thermostat,off,Schalte <device_name> aus,"Das Gerät ist bereits aus, es muss nichts geändert werden."
not_available,garage_door.close_cover,chamberlain_1,Kammerherr,,Schließe <device_name>,"Entschuldigung, ich kann das Gerät nicht in deinem Zuhause finden."
already_state,garage_door.close_cover,chamberlain_1,Kammerherr,closed,Schließe die Abdeckung von <device_name>,"Die Garage ist bereits geschlossen, es muss nichts geändert werden."
not_available,climate.set_temperature,mysa_smart_thermostat,Mysa Smart Thermostat für elektrische Fußleistenheizungen,,Stelle die Temperatur von <device_name> auf 26 Grad ein.,"Entschuldigung, ich kann <device_name> nicht in deinem Zuhause finden."
not_available,climate.turn_off,netatmo_smart,Smartes Thermostat von Netatmo,,Schalte <device_name> aus,"Entschuldigung, ich kann das Gerät nicht finden."
not_available,media_player.volume_up,ps5_living_room,Wohnzimmer PS5,,Lautstärke von <device_name> erhöhen,"Entschuldigung, ich kann das Gerät <device_name> nicht in deinem Zuhause finden."
already_state,lock.lock,zauntür,Zauntorschloss,locked,Schließe <device_name> ab,"Das Gerät ist bereits gesperrt, ich muss nichts ändern."
not_available,switch.toggle,sauna_lights,Saunalichtschalter,,Schalte <device_name> um,"Entschuldigung, ich kann das Gerät <device_name> nicht in deinem Zuhause finden."
not_available,lock.unlock,schlafzimmer_2,Zweites Schlafzimmerschloss,,Entsperre <device_name>,"Entschuldigung, ich kann <device_name> nicht in deinem Zuhause finden."
already_state,garage_door.open_cover,liftmaster_2,LiftMaster,open,Öffne die Abdeckung von <device_name>.,"Entschuldigung, die Abdeckung von <device_name> ist bereits offen, es ist nichts zu ändern."
not_available,vacuum.stop,back_deck_sweeper,Reiniger für den Hinterdeckbereich,,Bitte stoppe den Staubsauger <device_name>.,"Entschuldigung, ich kann das Gerät nicht finden und kann es deshalb nicht stoppen."
not_available,media_player.volume_up,sonos_living,Sonos-Wohnzimmer,,Lautstärke von <device_name> erhöhen,"Entschuldigung, ich kann das Gerät <device_name> nicht in deinem Zuhause finden."
already_state,lock.lock,dienstboteneingang,Service-Eingangsschleuse,locked,Schließe <device_name> ab,"Das Gerät ist bereits gesperrt, es muss nichts geändert werden."
not_available,garage_door.toggle,liftmaster_1,LiftMaster,,Schalte <device_name> um,"Entschuldigung, ich kann das Gerät nicht in deinem Zuhause finden."
not_available,blinds.stop_cover,back_window,Jalousien für die Hinterfenster,,Stoppe die <device_name>,"Entschuldigung, ich kann das Gerät nicht in deinem Zuhause finden."
not_available,blinds.stop_cover,gästezimmer,Jalousien für Gästezimmer,,Stoppe <device_name>,"Entschuldigung, ich kann das Gerät nicht in Ihrem Zuhause finden."
already_state,switch.turn_on,yard_floodlights,Schalter für Hofscheinwerfer,on,Schalte <device_name> ein,"Das Gerät ist bereits eingeschaltet, es muss nichts geändert werden."
already_state,light.turn_on,upstairs_corridor_zigbee,Flurbeleuchtung im Obergeschoss,on,<device_name> einschalten,"Das Gerät ist bereits eingeschaltet, es muss nichts geändert werden."
already_state,switch.turn_off,front_gate_lighting,Schalter für die Vordertorbeleuchtung,off,Schalte <device_name> aus.,"Das Gerät ist bereits aus, es muss nichts geändert werden."
already_state,vacuum.return_to_base,upstairs_bathroom_vac,Badezimmerhelfer im Obergeschoss,docked,Bitte sende <device_name> zurück zur Basis,"Das Gerät ist bereits in der Dockingstation, ein Zurückkehren ist nicht nötig."
already_state,switch.turn_off,werkstattbeleuchtung,Werkstattlichtschalter,off,Schalte <device_name> aus.,"Das Gerät ist bereits aus, es muss nichts geändert werden."
not_available,blinds.stop_cover,gästezimmer,Jalousien für Gästezimmer,,Stoppe <device_name>,"Entschuldigung, ich kann das Gerät nicht in deinem Zuhause finden."
not_available,garage_door.toggle,liftmaster_1,LiftMaster,,Schalte <device_name> um,"Entschuldigung, ich kann das Gerät nicht in deinem Zuhause finden."
not_available,vacuum.stop,under_sofa_cleaner,Untersofareiniger,,Stoppe den <device_name>,"Entschuldigung, ich kann das Gerät nicht in deinem Zuhause finden."
not_available,blinds.open_cover,dachfenster,Oberlichtjalousien,,Öffne <device_name>,"Entschuldigung, ich kann das Gerät nicht in Ihrem Zuhause finden."
not_available,fan.toggle,küche,Küchenventilator,,Schalte den <device_name> ein,"Entschuldigung, ich kann den <device_name> nicht im Haus finden."
not_available,light.turn_off,downstairs_lounge_homekit,Lounge-Licht im Erdgeschoss,,Schalte das <device_name> aus,"Entschuldigung, ich kann das Gerät nicht in deinem Zuhause finden."
not_available,garage_door.toggle,chamberlain_2,Kammerherr,,Schalte <device_name> um,"Entschuldigung, ich kann das Gerät nicht in deinem Zuhause finden."
not_available,blinds.open_cover,somfy_living,Wohnzimmerjalousien,,Öffne die Jalousie <device_name>,"Entschuldigung, ich kann das Gerät <device_name> nicht in Ihrem Zuhause finden."
not_available,blinds.toggle,gästezimmer,Jalousien für Gästezimmer,,Schalte <device_name> um,"Entschuldigung, ich kann das Gerät <device_name> nicht in Ihrem Zuhause finden."
not_available,lock.lock,office_cabinet,Büroschrankschloss,,Verriegle <device_name>,"Entschuldigung, ich kann das Gerät nicht finden."
not_available,media_player.turn_off,gästezimmer,Gästezimmermedien,,Schalte <device_name> aus,"Entschuldigung, ich kann das Gerät <device_name> nicht in deinem Zuhause finden."
already_state,garage_door.open_cover,höheres_niveau,Garage auf der oberen Ebene,open,Öffne <device_name>,"Entschuldigung, <device_name> ist bereits geöffnet, es muss nichts geändert werden."
already_state,light.turn_off,front_living_room_ge,Vorderes Wohnzimmerlicht,off,Schalte <device_name> aus,"Das Gerät ist bereits aus, es muss nichts geändert werden."
already_state,switch.turn_off,sicherheitssystem,Schalter des Sicherheitssystems,off,Schalte <device_name> aus,"Der <device_name> ist bereits aus, es muss nichts geändert werden."
not_available,vacuum.start,master_schlafzimmer_shark,Staubsauger im Hauptschlafzimmer,,Starte den <device_name>,"Entschuldigung, ich kann das Gerät nicht im Haus finden."
not_available,switch.turn_off,walkway_lights,Gehwegbeleuchtungsschalter,,Schalte <device_name> aus,"Entschuldigung, ich kann das Gerät <device_name> nicht in deinem Zuhause finden."
1 reason_type service_name device_name friendly_name desired_state phrase response
2 not_available lock.lock back_door Schloss an der Hintertür Schließe <device_name> ab. Ich kann kein Schloss an der Hintertür finden.
3 already_state light.turn_on hallway Flurlichter on Schalte die <device_name> ein. Die Flurlichter sind bereits an.
4 already_state switch.turn_off garage Steckdose in der Garage off Schalte die <device_name> aus. Die Steckdose in der Garage ist bereits aus.
5 not_available fan.decrease_speed garage Garagenfan Verringere die Geschwindigkeit von <device_name> Entschuldigung, ich kann <device_name> nicht in deinem Zuhause finden.
6 not_available blinds.toggle garage Garagenjalousien Schalte <device_name> um Entschuldigung, ich kann das Gerät nicht in deinem Zuhause finden.
7 not_available garage_door.open_cover geschäft Werkstatt Garagentor Öffne die Abdeckung des <device_name> Entschuldigung, ich kann das Gerät in deinem Zuhause nicht finden.
8 not_available switch.turn_on sauna_lights Saunalichtschalter Schalte <device_name> ein Entschuldigung, ich kann das Gerät nicht in deinem Zuhause finden.
9 not_available media_player.turn_on philips_ambilight_tv Philips LED-Fernseher mit Hintergrundbeleuchtung Schalte <device_name> ein. Entschuldigung, ich kann das Gerät nicht in deinem Zuhause finden.
10 already_state vacuum.return_to_base entryway_eufy Staubsammler im Eingangsbereich docked Bitte <device_name> zurück zur Basis fahren Der Staubsauger ist bereits am Dock, es ist nichts zu ändern.
11 not_available fan.increase_speed keller Kellerventilator Erhöhe die Geschwindigkeit des <device_name>. Entschuldigung, ich kann das Gerät <device_name> nicht in deinem Zuhause finden.
12 not_available climate.turn_on trane_comfortlink_ii Trane ComfortLink II XL1050 Schalte das Klima <device_name> ein Entschuldigung, ich kann das Gerät <device_name> nicht in deinem Zuhause finden.
13 not_available lock.unlock studio Studioschloss Entsperre <device_name> Entschuldigung, ich kann das Gerät in deinem Zuhause nicht finden.
14 not_available climate.set_temperature thermostat_lux_geo Lux Geo WLAN-Thermostat Stelle die Temperatur im <device_name> auf 21 Grad ein. Entschuldigung, ich kann das Gerät <device_name> im Haus nicht finden.
15 already_state switch.turn_off badezimmer_fan Schalter für Badezimmerventilator off Schalte <device_name> aus Das Gerät ist bereits aus, es muss nichts geändert werden.
16 already_state lock.lock werkzeugschuppen Schloss für Geräteschuppen locked Sperre <device_name> Das Gerät ist bereits gesperrt, es muss nichts geändert werden.
17 already_state switch.turn_on werkstattbeleuchtung Werkstattlichtschalter on Schalte <device_name> ein Das Gerät ist bereits eingeschaltet, daher muss ich nichts ändern.
18 not_available media_player.volume_up sony_4k_projector Heimkinoprojektor von Sony Erhöhe die Lautstärke von <device_name> Entschuldigung, ich kann das Gerät <device_name> nicht in deinem Zuhause finden.
19 not_available vacuum.stop entryway_eufy Staubsammler im Eingangsbereich Stoppe den <device_name>. Entschuldigung, ich kann das Gerät nicht in deinem Zuhause finden.
20 already_state lock.unlock porch_door Veranda-Türschloss unlocked Entsperre <device_name> Das Gerät ist bereits entriegelt, ein weiteres Entsperren ist nicht nötig.
21 not_available fan.decrease_speed büro Büro-Fan Verringere die Geschwindigkeit des <device_name> Entschuldigung, ich kann das Gerät <device_name> nicht in deinem Zuhause finden.
22 not_available garage_door.stop_cover chamberlain_1 Kammerherr Stoppe <device_name>. Entschuldigung, ich kann das Gerät nicht in deinem Zuhause finden.
23 not_available fan.turn_off outdoor_küche Küchenventilator für den Außenbereich Schalte <device_name> aus Entschuldigung, ich kann das Gerät nicht in deinem Zuhause finden.
24 not_available lock.lock schlafzimmer_3 Drittes Schlafzimmerschloss Schließe <device_name> ab Entschuldigung, ich kann das Gerät <device_name> nicht in deinem Zuhause finden.
25 not_available media_player.volume_up roku_ultra Roku Hochleistungs-Streamer Lautstärke von <device_name> erhöhen Entschuldigung, ich kann <device_name> im Haus nicht finden.
26 already_state lock.unlock rear_gate Heckklappenschloss unlocked Entsperre <device_name>. Das Gerät ist bereits entsperrt, ich muss nichts ändern.
27 not_available fan.decrease_speed studie_2 Studienfan Verringere die Geschwindigkeit von <device_name> Entschuldigung, ich kann das Gerät nicht in deinem Zuhause finden.
28 already_state climate.turn_off nest_learning Nest-Lernthermostat off Schalte <device_name> aus Das Gerät ist bereits ausgeschaltet, es muss nichts geändert werden.
29 already_state light.turn_on büro Bürolicht on Schalte das Licht <device_name> ein Das Licht <device_name> ist bereits an, ich muss nichts ändern.
30 not_available fan.increase_speed balkon Balkonventilator Erhöhe die Geschwindigkeit von <device_name> Entschuldigung, ich kann <device_name> nicht im Haus finden.
31 already_state lock.lock gewächshaus Gewächshausschloss locked Schließe <device_name> ab Der <device_name> ist bereits gesperrt, es muss nichts geändert werden.
32 already_state switch.turn_on stairway_lights Treppenlichtschalter on Schalte <device_name> ein Entschuldigung, <device_name> ist bereits eingeschaltet, es ist keine Änderung nötig.
33 not_available garage_door.stop_cover golfwagen Golfwagentür Stoppe das <device_name> Entschuldigung, ich kann das Gerät nicht in deinem Zuhause finden.
34 not_available lock.unlock sauna Sauna-Türschloss Entsperre das Schloss <device_name> Entschuldigung, ich kann das Gerät <device_name> nicht in deinem Zuhause finden.
35 not_available switch.turn_off home_theater_lighting Steuerung der Heimkinobeleuchtung Schalte <device_name> aus Entschuldigung, ich kann das Gerät nicht finden.
36 already_state climate.turn_on mysa_smart_thermostat Mysa Smart Thermostat für elektrische Fußleistenheizungen on Schalte die Klimaanlage <device_name> ein Die Klimaanlage <device_name> ist bereits eingeschaltet, es ist nichts zu ändern.
37 not_available media_player.volume_up sonos_beam Sonos Kompakt-Soundbar Lautstärke von <device_name> erhöhen Entschuldigung, ich kann das Gerät <device_name> nicht in Ihrem Zuhause finden.
38 not_available light.turn_off back_fireplace_lifx Hinteres Kaminlicht Schalte das <device_name> aus. Entschuldigung, ich kann das Gerät <device_name> nicht in deinem Zuhause finden.
39 not_available switch.toggle badezimmer_fan Schalter für Badezimmerventilator Schalte <device_name> um Entschuldigung, ich kann das Gerät <device_name> nicht in deinem Zuhause finden.
40 not_available climate.turn_on johnson_glas Johnson Controls GLAS Smart Thermostat Schalte <device_name> ein Entschuldigung, ich kann das Gerät <device_name> nicht in deinem Zuhause finden.
41 not_available media_player.turn_off panasonic_4k_bluray_player Panasonic Blueray-Player Schalte <device_name> aus Entschuldigung, ich kann das Gerät <device_name> nicht in deinem Zuhause finden.
42 not_available light.turn_on back_arcade_warm Zurück Arcade Warmes Licht Schalte <device_name> ein Entschuldigung, ich kann das Gerät nicht in deinem Zuhause finden.
43 not_available climate.set_temperature trane_comfortlink_ii Trane ComfortLink II XL1050 Stelle die Temperatur von <device_name> auf 21 °C ein. Entschuldigung, ich kann das Gerät <device_name> nicht in deinem Zuhause finden.
44 not_available lock.lock seiteneingang Seitliches Torschloss Schließe <device_name> ab Entschuldigung, ich kann das Gerät nicht in deinem Zuhause finden.
45 not_available light.turn_off upstairs_sideyard_zigbee Seitenlicht im Obergeschoss Schalte das Licht <device_name> aus. Entschuldigung, ich kann das Gerät <device_name> nicht finden.
46 already_state fan.turn_off badezimmer_unten Ventilator im Badezimmer im Erdgeschoss off Bitte <device_name> ausschalten Der <device_name> ist bereits aus, es muss nichts geändert werden.
47 not_available climate.set_temperature zen_wifi_thermostat Zen Thermostat WiFi Edition Stelle die Temperatur im <device_name> auf 20 Grad ein. Entschuldigung, ich kann das Gerät <device_name> nicht finden.
48 not_available garage_door.toggle gewächshaus Gewächshaustür Schalte das <device_name> um Entschuldigung, ich kann das Gerät nicht in deinem Zuhause finden.
49 not_available fan.toggle dachboden_1 Dachbodenventilatoren Schalte <device_name> ein/aus Entschuldigung, ich finde das Gerät <device_name> nicht im Haus.
50 not_available vacuum.return_to_base back_deck_sweeper Reiniger für den Hinterdeckbereich Bitte bring <device_name> zurück zur Basis Entschuldigung, ich kann das Gerät nicht in deinem Zuhause finden.
51 already_state fan.turn_on veranda Deckenventilator für die Veranda on Schalte <device_name> ein Entschuldigung, das Gerät ist bereits eingeschaltet, es gibt nichts zu ändern.
52 already_state vacuum.start kitchen_xiaomi Küchenstaubsauger cleaning Starte <device_name> Der Staubsauger reinigt bereits, es ist nichts zu ändern.
53 already_state switch.turn_off under_cabinet_lights Schalter für die Beleuchtung unter dem Schrank off Schalte <device_name> aus Der <device_name> ist bereits aus. Es gibt nichts zu ändern.
54 not_available light.toggle flur Flurbeleuchtung Licht im <device_name> umschalten Entschuldigung, ich kann das Gerät nicht in deinem Zuhause finden.
55 not_available blinds.open_cover küche Küchenjalousien Öffne die Jalousie <device_name> Entschuldigung, ich kann das Gerät <device_name> nicht in deinem Zuhause finden.
56 not_available switch.toggle wintergarten_lichter Wintergarten-Lichtschalter Schalte <device_name> um Entschuldigung, ich kann das Gerät nicht in deinem Zuhause finden.
57 already_state media_player.turn_off sonos_living Sonos-Wohnzimmer off Schalte <device_name> aus. Das Gerät ist bereits ausgeschaltet, es muss nichts geändert werden.
58 not_available vacuum.start left_corner_bot Schmutzsauger in der linken Ecke Starte den <device_name> Entschuldigung, ich kann das Gerät nicht in deinem Zuhause finden.
59 not_available vacuum.stop downstairs_guest_room Staubsauger im Gästezimmer im Erdgeschoss Stoppe den <device_name> Entschuldigung, ich kann das Gerät nicht in deinem Zuhause finden.
60 already_state lock.lock gewächshaus Gewächshausschloss locked Schließe <device_name>. Das Gerät ist bereits gesperrt, es muss nichts geändert werden.
61 already_state garage_door.close_cover carport Carporttür closed Schließe die <device_name>. Das <device_name> ist bereits geschlossen, es muss nichts geändert werden.
62 already_state switch.turn_on bewässerungssystem Bewässerungssystemschalter on Schalte <device_name> ein. Der Schalter ist bereits eingeschaltet, es ist nichts zu ändern.
63 not_available climate.turn_on honeywell_lyric_t6 Honeywell Lyric T6 Pro Schalte das Klima <device_name> ein Entschuldigung, ich kann das Gerät <device_name> im Haus nicht finden.
64 not_available blinds.toggle theater_raum Jalousien für Heimkino Schalte <device_name> um Entschuldigung, ich finde das Gerät nicht in deinem Zuhause.
65 already_state fan.turn_on master_bath Master-Badezimmerventilator on Schalte <device_name> ein Der <device_name> läuft bereits, ich muss nichts ändern.
66 not_available garage_door.toggle ein_auto Garage für ein Auto Schalte <device_name> um Entschuldigung, ich kann das Gerät nicht in deinem Zuhause finden.
67 not_available blinds.open_cover esszimmer Esszimmerjalousien Öffne <device_name> Entschuldigung, ich kann das Gerät <device_name> nicht in deinem Zuhause finden.
68 not_available blinds.toggle wohnzimmer Wohnzimmerjalousien Schalte <device_name> um Entschuldigung, ich kann <device_name> nicht in deinem Zuhause finden.
69 not_available media_player.volume_up apple_tv_4k Apple 4K-Streaming-Gerät Lautstärke erhöhen bei <device_name> Entschuldigung, ich kann das Gerät <device_name> nicht in deinem Zuhause finden.
70 not_available garage_door.toggle golfwagen Golfwagentür Schalte <device_name> um Entschuldigung, ich kann das Gerät nicht in deinem Zuhause finden.
71 not_available lock.lock ski_storage Skiaufbewahrungsschloss Schließe <device_name> ab Entschuldigung, ich kann <device_name> nicht in deinem Zuhause finden.
72 not_available climate.set_temperature honeywell_lyric_t6 Honeywell Lyric T6 Pro Stelle die Temperatur im <device_name> auf 23 Grad ein. Entschuldigung, ich kann das Gerät <device_name> nicht in deinem Zuhause finden.
73 not_available vacuum.start keller_deebot Keller-Deebot Starte den <device_name> Entschuldigung, ich kann das Gerät nicht in deinem Zuhause finden.
74 not_available light.turn_off master_schlafzimmer_lampe Hauptschlafzimmerlampe Schalte das Licht <device_name> aus Entschuldigung, ich kann das Gerät <device_name> nicht in deinem Zuhause finden.
75 not_available blinds.toggle bastelraum Bastelraumjalousien Schalte die Jalousie <device_name> um Entschuldigung, ich kann das Gerät <device_name> leider nicht in deinem Zuhause finden.
76 not_available media_player.volume_up fire_tv Fire TV-Medien Lautstärke von <device_name> erhöhen Entschuldigung, ich kann <device_name> nicht in deinem Zuhause finden.
77 not_available blinds.toggle somfy_living Wohnzimmerjalousien Schalte <device_name> um Entschuldigung, ich kann das Gerät <device_name> nicht in deinem Zuhause finden.
78 not_available vacuum.stop under_bed_cleaner Staubsammler unter dem Bett Stoppe <device_name> Entschuldigung, ich kann das Gerät nicht in deinem Zuhause finden.
79 not_available fan.toggle dachboden Dachbodenventilator Schalte <device_name> ein/aus Entschuldigung, ich kann das Gerät nicht im Haus finden.
80 not_available garage_door.toggle rv_storage Stauraumtür für Wohnmobile Bitte <device_name> umschalten Entschuldigung, ich kann das Gerät <device_name> nicht in deinem Zuhause finden.
81 not_available vacuum.stop under_bed_cleaner Staubsammler unter dem Bett Stoppe <device_name> Entschuldigung, ich kann das Gerät nicht finden.
82 already_state climate.turn_on johnson_glas Johnson Controls GLAS Smart Thermostat on Schalte <device_name> ein Das Gerät ist bereits eingeschaltet, es muss nichts geändert werden.
83 not_available switch.turn_on office_lights Schalter für Bürobeleuchtung Schalte <device_name> ein Entschuldigung, ich kann das Gerät <device_name> nicht im Haus finden.
84 not_available switch.toggle einfahrtslichter Steuerung der Einfahrtsbeleuchtung Schalte <device_name> um Entschuldigung, ich kann das Gerät <device_name> nicht im Haus finden.
85 not_available switch.turn_off pool_pump Schalter für Poolpumpe Schalte <device_name> aus Entschuldigung, ich kann das Gerät <device_name> nicht in deinem Zuhause finden.
86 not_available light.turn_off front_closet_homekit Vorderes Schranklicht Schalte das Licht im <device_name> aus. Entschuldigung, ich kann das Gerät <device_name> nicht in deinem Zuhause finden.
87 already_state blinds.close_cover theater_raum Jalousien für Heimkino closed Schließe die Jalousie <device_name> Entschuldigung, <device_name> ist bereits geschlossen, es gibt nichts zu ändern.
88 already_state climate.turn_off emerson_sensi_touch Emerson Sensi Touch WLAN-Thermostat off Schalte <device_name> aus Das Gerät ist bereits aus, es muss nichts geändert werden.
89 not_available garage_door.close_cover chamberlain_1 Kammerherr Schließe <device_name> Entschuldigung, ich kann das Gerät nicht in deinem Zuhause finden.
90 already_state garage_door.close_cover chamberlain_1 Kammerherr closed Schließe die Abdeckung von <device_name> Die Garage ist bereits geschlossen, es muss nichts geändert werden.
91 not_available climate.set_temperature mysa_smart_thermostat Mysa Smart Thermostat für elektrische Fußleistenheizungen Stelle die Temperatur von <device_name> auf 26 Grad ein. Entschuldigung, ich kann <device_name> nicht in deinem Zuhause finden.
92 not_available climate.turn_off netatmo_smart Smartes Thermostat von Netatmo Schalte <device_name> aus Entschuldigung, ich kann das Gerät nicht finden.
93 not_available media_player.volume_up ps5_living_room Wohnzimmer PS5 Lautstärke von <device_name> erhöhen Entschuldigung, ich kann das Gerät <device_name> nicht in deinem Zuhause finden.
94 already_state lock.lock zauntür Zauntorschloss locked Schließe <device_name> ab Das Gerät ist bereits gesperrt, ich muss nichts ändern.
95 not_available switch.toggle sauna_lights Saunalichtschalter Schalte <device_name> um Entschuldigung, ich kann das Gerät <device_name> nicht in deinem Zuhause finden.
96 not_available lock.unlock schlafzimmer_2 Zweites Schlafzimmerschloss Entsperre <device_name> Entschuldigung, ich kann <device_name> nicht in deinem Zuhause finden.
97 already_state garage_door.open_cover liftmaster_2 LiftMaster open Öffne die Abdeckung von <device_name>. Entschuldigung, die Abdeckung von <device_name> ist bereits offen, es ist nichts zu ändern.
98 not_available vacuum.stop back_deck_sweeper Reiniger für den Hinterdeckbereich Bitte stoppe den Staubsauger <device_name>. Entschuldigung, ich kann das Gerät nicht finden und kann es deshalb nicht stoppen.
99 not_available media_player.volume_up sonos_living Sonos-Wohnzimmer Lautstärke von <device_name> erhöhen Entschuldigung, ich kann das Gerät <device_name> nicht in deinem Zuhause finden.
100 already_state lock.lock dienstboteneingang Service-Eingangsschleuse locked Schließe <device_name> ab Das Gerät ist bereits gesperrt, es muss nichts geändert werden.
101 not_available garage_door.toggle liftmaster_1 LiftMaster Schalte <device_name> um Entschuldigung, ich kann das Gerät nicht in deinem Zuhause finden.
102 not_available blinds.stop_cover back_window Jalousien für die Hinterfenster Stoppe die <device_name> Entschuldigung, ich kann das Gerät nicht in deinem Zuhause finden.
103 not_available blinds.stop_cover gästezimmer Jalousien für Gästezimmer Stoppe <device_name> Entschuldigung, ich kann das Gerät nicht in Ihrem Zuhause finden.
104 already_state switch.turn_on yard_floodlights Schalter für Hofscheinwerfer on Schalte <device_name> ein Das Gerät ist bereits eingeschaltet, es muss nichts geändert werden.
105 already_state light.turn_on upstairs_corridor_zigbee Flurbeleuchtung im Obergeschoss on <device_name> einschalten Das Gerät ist bereits eingeschaltet, es muss nichts geändert werden.
106 already_state switch.turn_off front_gate_lighting Schalter für die Vordertorbeleuchtung off Schalte <device_name> aus. Das Gerät ist bereits aus, es muss nichts geändert werden.
107 already_state vacuum.return_to_base upstairs_bathroom_vac Badezimmerhelfer im Obergeschoss docked Bitte sende <device_name> zurück zur Basis Das Gerät ist bereits in der Dockingstation, ein Zurückkehren ist nicht nötig.
108 already_state switch.turn_off werkstattbeleuchtung Werkstattlichtschalter off Schalte <device_name> aus. Das Gerät ist bereits aus, es muss nichts geändert werden.
109 not_available blinds.stop_cover gästezimmer Jalousien für Gästezimmer Stoppe <device_name> Entschuldigung, ich kann das Gerät nicht in deinem Zuhause finden.
110 not_available garage_door.toggle liftmaster_1 LiftMaster Schalte <device_name> um Entschuldigung, ich kann das Gerät nicht in deinem Zuhause finden.
111 not_available vacuum.stop under_sofa_cleaner Untersofareiniger Stoppe den <device_name> Entschuldigung, ich kann das Gerät nicht in deinem Zuhause finden.
112 not_available blinds.open_cover dachfenster Oberlichtjalousien Öffne <device_name> Entschuldigung, ich kann das Gerät nicht in Ihrem Zuhause finden.
113 not_available fan.toggle küche Küchenventilator Schalte den <device_name> ein Entschuldigung, ich kann den <device_name> nicht im Haus finden.
114 not_available light.turn_off downstairs_lounge_homekit Lounge-Licht im Erdgeschoss Schalte das <device_name> aus Entschuldigung, ich kann das Gerät nicht in deinem Zuhause finden.
115 not_available garage_door.toggle chamberlain_2 Kammerherr Schalte <device_name> um Entschuldigung, ich kann das Gerät nicht in deinem Zuhause finden.
116 not_available blinds.open_cover somfy_living Wohnzimmerjalousien Öffne die Jalousie <device_name> Entschuldigung, ich kann das Gerät <device_name> nicht in Ihrem Zuhause finden.
117 not_available blinds.toggle gästezimmer Jalousien für Gästezimmer Schalte <device_name> um Entschuldigung, ich kann das Gerät <device_name> nicht in Ihrem Zuhause finden.
118 not_available lock.lock office_cabinet Büroschrankschloss Verriegle <device_name> Entschuldigung, ich kann das Gerät nicht finden.
119 not_available media_player.turn_off gästezimmer Gästezimmermedien Schalte <device_name> aus Entschuldigung, ich kann das Gerät <device_name> nicht in deinem Zuhause finden.
120 already_state garage_door.open_cover höheres_niveau Garage auf der oberen Ebene open Öffne <device_name> Entschuldigung, <device_name> ist bereits geöffnet, es muss nichts geändert werden.
121 already_state light.turn_off front_living_room_ge Vorderes Wohnzimmerlicht off Schalte <device_name> aus Das Gerät ist bereits aus, es muss nichts geändert werden.
122 already_state switch.turn_off sicherheitssystem Schalter des Sicherheitssystems off Schalte <device_name> aus Der <device_name> ist bereits aus, es muss nichts geändert werden.
123 not_available vacuum.start master_schlafzimmer_shark Staubsauger im Hauptschlafzimmer Starte den <device_name> Entschuldigung, ich kann das Gerät nicht im Haus finden.
124 not_available switch.turn_off walkway_lights Gehwegbeleuchtungsschalter Schalte <device_name> aus Entschuldigung, ich kann das Gerät <device_name> nicht in deinem Zuhause finden.

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,124 @@
service_name,correct_device_name,correct_friendly_name,bad_device_name,phrase,error_result,retry_prompt
light.turn_on,light.living_room_lamp,Lampa w salonie,light.livng_room_lamp,"Proszę włącz <device_name>.","Błąd: encja light.livng_room_lamp nie została znaleziona.","Spróbuję zamiast tego lampy w salonie."
climate.set_temperature,climate.hallway,Termostat w korytarzu,climate.halway,"Ustaw <device_name> na <temp_f> stopni.","Błąd: encja climate.halway nie została znaleziona.","Ponawiam z termostatem w korytarzu."
fan.turn_off,fan.office,Wentylator w biurze,fan.offce,"Wyłącz <device_name>.","Błąd: encja fan.offce nie została znaleziona.","Spróbuję ponownie z wentylatorem w biurze."
light.toggle,light.kuchnia_półka_fajna,Półka kuchenna Fajne światło,light.kuchnia_fajna_półka,Włącz światło na półce w kuchni.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.kuchnia_fajna_półka', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Już próbuję ponownie z urządzeniem light.kuchnia_półka_fajna.
climate.turn_on,climate.emerson_sensi_touch,Termostat Wi-Fi Emerson Sensi Touch,climate.emersonsens_touch,Włącz termostat w salonie.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.emersonsens_touch', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Już próbuję włączyć Termostat WiFi Emerson Sensi Touch.
climate.turn_off,climate.termostat_lux_geo,Termostat Lux Geo Wi-Fi,climate.lux_geo_termostat,Wyłącz termostat w salonie.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.lux_geo_termostat', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Już próbuję wyłączyć Termostat Lux Geo WiFi.
switch.turn_off,switch.oświetlenie_pokoju_gościnnego,Przełącznik świateł w pokoju gościnnym,switch.pokoju_oświetlenie_gościnnego,Wyłącz światło w pokoju gościnnym,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.pokoju_oświetlenie_gościnnego', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Spróbuję ponownie z przełącznikiem świateł w pokoju gościnnym.
climate.set_temperature,climate.ecobee_smart,Inteligentny termostat Ecobee,climate.ecobbe_smart,Ustaw temperaturę na <temp_f> stopni.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.ecobbe_smart', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Spróbuję ponownie z właściwym termostatem (climate.ecobee_smart).
fan.increase_speed,fan.salon,Wentylator do salonu,fan.salon_plus,Zwiększ prędkość wentylatora w salonie.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.salon_plus', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Już próbuję z właściwym wentylatorem.
blinds.open_cover,blinds.główna_sypialnia,Rolety w głównej sypialni,blinds.sypialnia_główna,Otwórz rolety w głównej sypialni.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.sypialnia_główna', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Już próbuję z właściwym urządzeniem.
climate.set_temperature,climate.honeywell_lyric_t6,Honeywell Lyric T6 Pro,climate.honeywell_lyric_t6_backup,Ustaw temperaturę na <temp_f> stopni,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.honeywell_lyric_t6_backup', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Spróbuję ponownie z urządzeniem climate.honeywell_lyric_t6.
blinds.stop_cover,blinds.salon_pokój_duży,Rolety w dużym pokoju,blinds.salon_pokój_duż,Zatrzymaj rolety w dużym pokoju.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.salon_pokój_duż', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Już próbuję ponownie z urządzeniem blinds.salon_pokój_duży.
media_player.turn_on,media_player.wejście_asystent_głosu,Asystent głosowy przy wejściu,media_player.wejść_asystent_głosu,Włącz asystenta głosowego przy wejściu.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.wejść_asystent_głosu', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Już próbuję włączyć Asystenta głosowego przy wejściu.
climate.turn_on,climate.johnson_glas,Johnson steruje inteligentnym termostatem GLAS,climate.johnson_glas_pro,Włącz termostat Johnson GLAS w salonie,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.johnson_glas_pro', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Już próbuję włączyć właściwy termostat Johnson GLAS.
climate.turn_on,climate.zen_wifi_termostat,Termostat Zen w wersji WiFi,climate.zen_wifii_termostat,Włącz termostat Zen w wersji WiFi.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.zen_wifii_termostat', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Spróbuję ponownie z właściwym urządzeniem.
garage_door.close_cover,garage_door.wpis_zwierzaka,Drzwi wejściowe dla zwierząt,garage_door.wpis_zwierzaka_extra,Proszę zamknąć pokrywę drzwi wejściowych dla zwierząt.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.wpis_zwierzaka_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Spróbuję ponownie z właściwym urządzeniem.
lock.unlock,lock.przódowa_brama,Zamek bramy przedniej,lock.brama_przodowa,Odblokuj przednią bramę.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.brama_przodowa', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Już próbuję z Zamek bramy przedniej.
fan.increase_speed,fan.sala_siłownia,Wentylator siłowni,fan.sala_silownia,Zwiększ prędkość wentylatora w siłowni.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.sala_silownia', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Już próbuję z Wentylatorem siłowni.
light.turn_off,light.przód_tv_room_ge,Przednie oświetlenie pokoju telewizyjnego,light.przód_tv_room_ge_extra,Wyłącz proszę przednie oświetlenie pokoju telewizyjnego.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.przód_tv_room_ge_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Już próbuję z prawidłowym urządzeniem.
media_player.volume_up,media_player.sonos_beam,Kompaktowy soundbar Sonos,media_player.sonos_beam_pro,Zwiększ głośność na moim soundbarze Sonos.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.sonos_beam_pro', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Już poprawiam i zwiększam głośność na Sonos Beam.
blinds.open_cover,blinds.piwnica,Żaluzje piwniczne,blinds.piwnic,Otwórz żaluzje w piwnicy.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.piwnic', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Spróbuję ponownie z urządzeniem blinds.piwnica.
lock.unlock,lock.brama_schodowa,Zamek do bramy schodowej,lock.brama_schodow,"Odblokuj bramę schodową, proszę.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.brama_schodow', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Spróbuję ponownie z właściwym zamkiem do bramy schodowej.
light.turn_off,light.na_dole_guest_bedroom_zigbee,Światło w sypialni dla gości na parterze,light.na_dole_guest_bedroom_zigbee_extra,Wyłącz światło w sypialni dla gości na parterze.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.na_dole_guest_bedroom_zigbee_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Już próbuję wyłączyć je przy użyciu właściwego urządzenia.
garage_door.close_cover,garage_door.motocykl,Drzwi Garażowe motocyklowe,garage_door.motocyklowy,"Proszę, zamknij pokrywę drzwi garażowych motocyklowych.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.motocyklowy', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Już próbuję z właściwym urządzeniem.
light.turn_on,light.na_górze_jadalnia_zigbee,Światło do jadalni na piętrze,light.na_górze_jadlania_zigbee,Włącz światło w jadalni na piętrze z jasnością 73 procent.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.na_górze_jadlania_zigbee', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Spróbuję ponownie z prawidłowym urządzeniem.
switch.toggle,switch.master_bedroom_lights,Główny włącznik świateł w sypialni,switch.master_bedroom_ligts,Przełącz główny włącznik świateł w sypialni.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.master_bedroom_ligts', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Spróbuję ponownie z urządzeniem switch.master_bedroom_lights.
climate.set_temperature,climate.termostat_lux_geo,Termostat Lux Geo Wi-Fi,climate.lux_termostat_geo,Ustaw temperaturę na <temp_f> stopni,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.lux_termostat_geo', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Spróbuję ponownie z Termostatem Lux Geo.
light.turn_on,light.tył_washroom_lifx,Tylne światło toalety,light.tyl_washroom_lifx,Włącz tylne światło toalety.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.tyl_washroom_lifx', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Spróbuję ponownie z prawidłowym urządzeniem light.tył_washroom_lifx.
switch.turn_on,switch.den_lights,Przełącznik świateł Den,switch.den_lightz,Włącz przełącznik świateł Den,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.den_lightz', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Spróbuję ponownie z prawidłowym przełącznikiem.
blinds.stop_cover,blinds.piwnica,Żaluzje piwniczne,blinds.piwnicza,Zatrzymaj żaluzje w piwnicy.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.piwnicza', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Spróbuję ponownie z urządzeniem blinds.piwnica.
switch.turn_on,switch.oświetlenie_pokoju_dziennego,Przełącznik oświetlenia w salonie,switch.oświetlenie_pokoju_dziennego_extra,"Włącz oświetlenie w salonie, proszę.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.oświetlenie_pokoju_dziennego_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Spróbuję włączyć właściwy przełącznik oświetlenia w salonie.
lock.unlock,lock.yale_living,Pokój dzienny Yale,lock.yale_livng,Odblokuj drzwi w pokoju dziennym.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.yale_livng', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Już próbuję z prawidłowym urządzeniem lock.yale_living.
switch.turn_on,switch.oświetlenie_biurowe,Włącznik świateł biurowych,switch.oświetlenie_biuro,Proszę włącz światła w biurze,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.oświetlenie_biuro', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Spróbuję ponownie z właściwym przełącznikiem.
lock.lock,lock.jadalnia,Zamek do jadalni,lock.jadalniak,Zamknij zamek w jadalni.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.jadalniak', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Już próbuję ponownie z właściwym urządzeniem lock.jadalnia.
media_player.volume_up,media_player.ps5_living_room,Salon PS5,media_player.ps5_salon_room,Zwiększ głośność w salonie PS5.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.ps5_salon_room', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Już próbuję z właściwym urządzeniem.
media_player.media_play_pause,media_player.strumień_laptopa,Laptop do transmisji strumieniowej,media_player.laptop_strumień,Wstrzymaj odtwarzanie na Laptopie do transmisji strumieniowej.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.laptop_strumień', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Już próbuję z właściwym urządzeniem: media_player.strumień_laptopa.
climate.set_temperature,climate.termostat_lux_geo,Termostat Lux Geo Wi-Fi,climate.lux_termostat_geo,Ustaw temperaturę na <temp_f> stopni.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.lux_termostat_geo', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Już próbuję z Termostatem Lux Geo.
fan.turn_on,fan.żłobek,Wentylatpor w żlobku,fan.żłobek_sala,"Włącz wentylator w żłobku, proszę.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.żłobek_sala', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Już próbuję włączyć wentylator w żłobku.
garage_door.open_cover,garage_door.sprzęt_trawnikowy,Drzwi do sprzętu trawnikowego,garage_door.trawnikowy_sprzęt,Otwórz pokrywę drzwi do sprzętu trawnikowego,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.trawnikowy_sprzęt', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Spróbuję ponownie z właściwym urządzeniem.
vacuum.stop,vacuum.salon_pokój_pokojowy,Odkurzacz w salonie,vacuum.salon_pokój,Zatrzymaj odkurzacz w salonie.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.salon_pokój', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Spróbuję ponownie z odkurzaczem w salonie (vacuum.salon_pokój_pokojowy).
lock.lock,lock.boczna_brama,Zamek bramy bocznej,lock.boczna_brama_s,Zamknij bramę boczną.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.boczna_brama_s', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Spróbuję ponownie z zamkiem bramy bocznej.
garage_door.toggle,garage_door.wózek_golfowy,Drzwi do wózka golfowego,garage_door.wózek_golf,Przełącz drzwi do wózka golfowego.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.wózek_golf', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Już próbuję z urządzeniem garage_door.wózek_golfowy.
fan.toggle,fan.mistrz_kąpiel,Główny wentylator łazienkowy,fan.mistrz_kąpielowy,Włącz główny wentylator łazienkowy,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.mistrz_kąpielowy', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Spróbuję ponownie z właściwym wentylatorem.
switch.toggle,switch.światła_pokoju_zabaw,Przełącznik oświetlenia pokoju zabaw,switch.światła_pokoju_zaba,Przełącz światła w pokoju zabaw.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.światła_pokoju_zaba', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Spróbuję ponownie z właściwym przełącznikiem.
blinds.stop_cover,blinds.korytarz_1,Pierwsze rolety w przedpokoju,blinds.korytarz_1a,Zatrzymaj rolety w przedpokoju,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.korytarz_1a', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Spróbuję ponownie z właściwym urządzeniem.
light.toggle,light.parter_balkon_mqtt,Światło na balkonie na dole,light.parterbalkon_mqtt,Włącz światło na balkonie na dole,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.parterbalkon_mqtt', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Już próbuję ponownie z prawidłowym urządzeniem.
switch.turn_off,switch.oświetlenie_poddasza,Przełącznik oświetlenia na poddaszu,switch.oświetlenie_poddasza_ekstra,Wyłącz oświetlenie na poddaszu,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.oświetlenie_poddasza_ekstra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Już próbuję wyłączyć przełącznik oświetlenia na poddaszu.
switch.turn_off,switch.otwieracz_drzwi_garażowych,Włącznik otwierania drzwi garażowych,switch.drzwi_otwieracz_garażowych,Wyłącz włącznik otwierania drzwi garażowych,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.drzwi_otwieracz_garażowych', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Spróbuję wyłączyć właściwy przełącznik.
media_player.volume_down,media_player.bang_olufsen_beovision,Wysokiej klasy telewizor B&O,media_player.bang_olufsen_beovision_tv,Ścisz głośność w telewizorze Bang & Olufsen.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.bang_olufsen_beovision_tv', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Już próbuję z właściwym urządzeniem media_player.bang_olufsen_beovision.
switch.toggle,switch.światła_pokładowe,Przełącznik oświetlenia pokładu,switch.światła_pokładowe_extra,Przełącz oświetlenie pokładowe.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.światła_pokładowe_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Już próbuję ponownie z przełącznikiem oświetlenia pokładowego.
fan.toggle,fan.łazienka_w_dół,Wentylator w łazience na parterze,fan.łazienka_w_górę,Włącz wentylator w łazience na parterze,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.łazienka_w_górę', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Spróbuję ponownie z właściwym urządzeniem.
garage_door.toggle,garage_door.strona_2,Boczna brama garażowa,garage_door.strona_2_extra,Przełącz boczną bramę garażową,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.strona_2_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Już próbuję z prawidłowym urządzeniem garage_door.strona_2.
climate.turn_off,climate.kono_termostat,Inteligentny termostat Kono,climate.kono_termostat_v2,Wyłącz inteligentny termostat Kono,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.kono_termostat_v2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Spróbuję ponownie z właściwym termostatem (climate.kono_termostat).
fan.decrease_speed,fan.poddasze_1,Wentylator na poddaszu,fan.poddasze_1,"Proszę, zmniejsz prędkość wentylatora na poddaszu.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.poddasze_1', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Już próbuję z właściwym urządzeniem Wentylator na poddaszu.
fan.turn_on,fan.korytarz,Wentylator w przedpokoju,fan.korytar,Proszę włącz wentylator w przedpokoju.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.korytar', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Spróbuję włączyć właściwy wentylator w przedpokoju.
fan.decrease_speed,fan.mistrz_kąpiel,Główny wentylator łazienkowy,fan.mistrz_kąpiel_łazienka,"Proszę, zmniejsz prędkość wentylatora.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.mistrz_kąpiel_łazienka', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Już próbuję z właściwym wentylatorem.
switch.toggle,switch.oświetlenie_tarasu,Sterowanie oświetleniem tarasu,switch.oświetlenie_tarasu_2,"Włącz oświetlenie tarasu, proszę.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.oświetlenie_tarasu_2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Już próbuję z właściwym urządzeniem (switch.oświetlenie_tarasu).
switch.turn_off,switch.światła_pokładowe,Przełącznik oświetlenia pokładu,switch.światła_pokładowe_backup,"Wyłącz światła pokładowe, proszę.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.światła_pokładowe_backup', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Już próbuję wyłączyć prawidłowy przełącznik.
fan.toggle,fan.strych,Wentylator na strychu,fan.strychx,Przełącz wentylator na strychu.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.strychx', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Już próbuję z właściwym wentylatorem (fan.strych).
light.turn_on,light.góra_szafa_zwave,Światło w szafie na górze,light.góra_szafa_zwave_extra,Włącz światło w szafie na górze na 99% jasności i ustaw kolor na czerwony.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.góra_szafa_zwave_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Spróbuję jeszcze raz z prawidłowym urządzeniem light.góra_szafa_zwave.
lock.unlock,lock.warsztat,Zamek warsztatowy,lock.warsztatowy,Odblokuj zamek warsztatowy,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.warsztatowy', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Spróbuję ponownie z urządzeniem lock.warsztat.
vacuum.return_to_base,vacuum.piwnica_deebot,Deebot z piwnicy,vacuum.piwnica_deebot_extra,"Deebot, wróć do bazy.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.piwnica_deebot_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Spróbuję ponownie z prawidłowym odkurzaczem Deebot z piwnicy.
climate.turn_off,climate.honeywell_lyric_t6,Honeywell Lyric T6 Pro,climate.honeywell_lyric_t6_pro,Wyłącz klimatyzację w salonie.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.honeywell_lyric_t6_pro', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Już próbuję z właściwym urządzeniem.
light.turn_on,light.garaż_workbench_cool,Stół warsztatowy w garażu zimne światło,light.garaż_workbench_cool_plus,Włącz zimne światło przy stole warsztatowym w garażu.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.garaż_workbench_cool_plus', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Już próbuję włączyć właściwe światło przy stole warsztatowym.
climate.turn_off,climate.tado_smart,Inteligentny termostat Tado,climate.tado_smar,Wyłącz ogrzewanie w całym domu.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.tado_smar', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Już próbuję wyłączyć termostat Tado.
blinds.close_cover,blinds.pokój_dziecięcy,Rolety w pokoju dziecięcym,blinds.pokój_dziec,Zamknij rolety w pokoju dziecięcym.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.pokój_dziec', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Spróbuję ponownie z Rolety w pokoju dziecięcym.
lock.unlock,lock.szopa_na_narzędzia,Zamek szopy na narzędzia,lock.szopa_na_narzędziów,Odblokuj zamek szopy na narzędzia,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.szopa_na_narzędziów', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Spróbuję ponownie z właściwym zamkiem.
fan.turn_on,fan.honeywell_turbo,Turbowentylator Honeywell,fan.turbo_honeywell,Włącz proszę turbowentylator Honeywell,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.turbo_honeywell', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Już próbuję włączyć Turbowentylator Honeywell.
light.turn_on,light.kuchnia_2,Drugie światło kuchenne,light.kuchnia_2_extra,Proszę włączyć drugie światło kuchenne na 20% jasności.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.kuchnia_2_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Już próbuję włączyć właściwe światło kuchenne.
fan.decrease_speed,fan.kuchnia,Wenty w kuchni,fan.kuchniak,"Proszę, zmniejsz prędkość wentylatora w kuchni.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.kuchniak', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Już poprawiam i użyję fan.kuchnia.
switch.turn_off,switch.water_feature_lights,Przełącznik świateł funkcji wodnej,switch.water_feat_lights,Wyłącz proszę światła w funkcji wodnej.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.water_feat_lights', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Już próbuję wyłączyć właściwe urządzenie: switch.water_feature_lights.
light.turn_off,light.badanie_3,Światła do nauki,light.badanie_33,Wyłącz światła do nauki,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.badanie_33', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Spróbuję wyłączyć właściwe światło: Światła do nauki.
switch.toggle,switch.oświetlenie_patia,Przełącznik oświetlenia patio,switch.oświetlenie_pat,Przełącz światło na patio,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.oświetlenie_pat', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Już próbuję z prawidłowym urządzeniem switch.oświetlenie_patia.
fan.decrease_speed,fan.salon_pokoju_centrum,Centralny wentylator do salonu,fan.salon_pokój_centrum,"Proszę, zmniejsz prędkość wentylatora w salonie.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.salon_pokój_centrum', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Już próbuję z właściwym urządzeniem fan.salon_pokoju_centrum.
light.turn_off,light.przód_kominek_homekit,Przednia lampa kominkowa,light.przód_kominek_homekit_backup,Wyłącz proszę przednią lampę kominkową.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.przód_kominek_homekit_backup', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Już próbuję wyłączyć lampę przy użyciu właściwego urządzenia.
vacuum.start,vacuum.master_bedroom_shark,Odkurzacz w głównej sypialni,vacuum.master_bedroom_shark_pro,Proszę uruchomić odkurzacz w głównej sypialni.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.master_bedroom_shark_pro', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Już próbuję ponownie z właściwym odkurzaczem.
garage_door.close_cover,garage_door.zapasowy,Zapasowe drzwi garażowe,garage_door.zapasow,Zamknij pokrywę drzwi garażowych.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.zapasow', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Spróbuję ponownie z urządzeniem garage_door.zapasowy.
media_player.turn_on,media_player.ps5_living_room,Salon PS5,media_player.ps5_salon_room,Włącz Salon PS5.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.ps5_salon_room', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Spróbuję ponownie z właściwym urządzeniem.
fan.decrease_speed,fan.salon_2,Wentylator do salonu,fan.salon2,Proszę zmniejszyć prędkość wentylatora w salonie.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.salon2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Spróbuję ponownie z właściwym wentylatorem (fan.salon_2).
lock.unlock,lock.jadalnia,Zamek do jadalni,lock.jadlania,"Odblokuj zamek w jadalni, proszę.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.jadlania', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Spróbuję ponownie z prawidłowym urządzeniem (lock.jadalnia).
media_player.turn_on,media_player.panasonic_4k_bluray_player,Odtwarzacz Blueray Panasonic,media_player.panasonic_4k_bluray_player_v2,Włącz odtwarzacz Blu-ray Panasonic.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.panasonic_4k_bluray_player_v2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Spróbuję ponownie z właściwym odtwarzaczem.
garage_door.stop_cover,garage_door.wyższy_poziom,Garaż na górnym poziomie,garage_door.wyższypoziom,Zatrzymaj drzwi garażowe na górnym poziomie.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.wyższypoziom', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Już próbuję z prawidłowym urządzeniem.
climate.turn_on,climate.emerson_sensi_touch,Termostat Wi-Fi Emerson Sensi Touch,climate.emerson_sensi_tuch,Włącz termostat Emerson Sensi Touch.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.emerson_sensi_tuch', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Spróbuję ponownie z właściwym urządzeniem.
media_player.volume_up,media_player.telewizor_apple,Odtwarzacz multimedialny Apple TV,media_player.telewizor_apple_tv,Zwiększ głośność odtwarzacza multimedialnego Apple TV.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.telewizor_apple_tv', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Spróbuję ponownie z odtwarzaczem multimedialnym Apple TV.
climate.turn_off,climate.termostat_lux_geo,Termostat Lux Geo Wi-Fi,climate.lux_geo_termostat,Wyłącz termostat Lux Geo WiFi.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.lux_geo_termostat', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Już próbuję wyłączyć właściwy termostat (climate.termostat_lux_geo).
media_player.volume_down,media_player.strumień_laptopa,Laptop do transmisji strumieniowej,media_player.strumień_lapto,Ścisz odtwarzacz na laptopie do transmisji strumieniowej.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.strumień_lapto', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Już próbuję ponownie z media_player.strumień_laptopa.
garage_door.toggle,garage_door.wózek_golfowy,Drzwi do wózka golfowego,garage_door.golfowy_wózek,"Otwórz drzwi do wózka golfowego, proszę.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.golfowy_wózek', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Już próbuję z prawidłowym urządzeniem.
lock.lock,lock.szafka_na_akta,Zamek szafki na dokumenty,lock.szacka_na_akta,Zamknij szafkę na dokumenty,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.szacka_na_akta', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Spróbuję ponownie z właściwym zamkiem: lock.szafka_na_akta.
switch.turn_on,switch.światła_pokładowe,Przełącznik oświetlenia pokładu,switch.światła_pokładowe_kontrola,"Włącz oświetlenie pokładu, proszę.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.światła_pokładowe_kontrola', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Spróbuję ponownie z właściwym przełącznikiem oświetlenia pokładu.
garage_door.toggle,garage_door.wasztat,Warsztatowa brama garażowa,garage_door.waztast,Zamknij warsztatową bramę garażową.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.waztast', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Spróbuję jeszcze raz z prawidłowym urządzeniem.
fan.turn_off,fan.pokój_gościnny,Wentylator w pokoju gościnnym,fan.pokój_gościnny_v2,Wyłącz wentylator w pokoju gościnnym.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.pokój_gościnny_v2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Już próbuję wyłączyć wentylator w pokoju gościnnym.
lock.lock,lock.garderoba,Zamek do garderoby,lock.garderoba_door,Zamknij zamek w garderobie.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.garderoba_door', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Spróbuję ponownie z urządzeniem lock.garderoba.
blinds.open_cover,blinds.korytarz_1,Pierwsze rolety w przedpokoju,blinds.korytarz_1a,Otwórz proszę pierwsze rolety w przedpokoju,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.korytarz_1a', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Spróbuję ponownie z prawidłowym urządzeniem.
switch.turn_off,switch.światła_podjazdu,Przełącznik oświetleniem podjazdu,switch.światła_podjazd,"Wyłącz oświetlenie podjazdu, proszę.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.światła_podjazd', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Już próbuję wyłączyć prawidłowy przełącznik: switch.światła_podjazdu.
media_player.volume_down,media_player.garaż,Garażowy odtwarzacz multimedialny,media_player.garaż_ekstra,Obniż głośność w garażowym odtwarzaczu multimedialnym.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.garaż_ekstra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Już próbuję z właściwym urządzeniem media_player.garaż.
light.toggle,light.badanie_1,Światła do nauki,light.badanie,Przełącz światła do nauki,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.badanie', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Spróbuję ponownie z właściwym urządzeniem: light.badanie_1.
climate.turn_on,climate.trane_comfortlink_ii,Trane ComfortLink II XL1050,climate.trane_comfortlink,Włącz system klimatyzacji Trane w domu,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.trane_comfortlink', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Już próbuję z właściwym urządzeniem: climate.trane_comfortlink_ii.
switch.toggle,switch.łazienka_wentylator,Przełącznik wentylatora łazienkowego,switch.wentylator_łazienka,Włącz wentylator w łazience,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.wentylator_łazienka', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Już próbuję z właściwym przełącznikiem.
lock.unlock,lock.pomieszczenie_gospodarcze,Zamek pomieszczenia gospodarczego,lock.pomieszczenie_gosp,Odblokuj zamek pomieszczenia gospodarczego.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.pomieszczenie_gosp', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Już próbuję odblokować Zamek pomieszczenia gospodarczego.
climate.turn_off,climate.przewoźnik_kor,Termostat Carrier Cor Wi-Fi,climate.przewoźnik_korX,Wyłącz termostat Carrier Cor WiFi,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.przewoźnik_korX', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Spróbuję jeszcze raz z właściwym urządzeniem.
lock.unlock,lock.joga_pokój,Zamek do pokoju jogi,lock.joga-pokój,Odblokuj zamek w pokoju jogi.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.joga-pokój', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Spróbuję ponownie z właściwym urządzeniem lock.joga_pokój.
switch.turn_off,switch.pompa_basenu,Przełącznik pompy basenowej,switch.pompa_basen,Wyłącz przełącznik pompy basenowej,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.pompa_basen', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Spróbuję ponownie z właściwym przełącznikiem pompy basenowej.
lock.unlock,lock.przód_drzwi_1,Główny zamek wejściowy,lock.przód_drzwi_one,Odblokuj główny zamek wejściowy.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.przód_drzwi_one', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Już próbuję z prawidłowym urządzeniem lock.przód_drzwi_1.
vacuum.stop,vacuum.under_bed_cleaner,Odkurzacz pod łóżkiem,vacuum.under_bed_cleaner_extra,"Zatrzymaj odkurzacz pod łóżkiem, proszę.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.under_bed_cleaner_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Już próbuję z odkurzaczem pod łóżkiem.
light.toggle,light.piętro_poddasze_zwave,Światło na poddaszu na piętrze,light.poddasze_piętro_zwave,Włącz światło na poddaszu na piętrze,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.poddasze_piętro_zwave', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Już próbuję z prawidłowym urządzeniem.
media_player.volume_down,media_player.soundbar_living_room,Soundbar do salonu,media_player.soundbars_living_room,Ścisz dźwięk na soundbarze w salonie.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.soundbars_living_room', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Spróbuję ponownie z właściwym urządzeniem Soundbar do salonu.
light.turn_on,light.garaż,Światło w garażu,light.garażek,Włącz proszę światło w garażu.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.garażek', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Już poprawiam i włączam światło w garażu.
fan.increase_speed,fan.sypialnia_mistrz,Wentylator w głównej sypialni,fan.sypialnia_mistrz_2,Zwiększ prędkość wentylatora w głównej sypialni.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.sypialnia_mistrz_2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Już próbuję z właściwym wentylatorem.
fan.turn_on,fan.sufit_1,Wentylatory sufitowe,fan.sufit_one,Włącz proszę wentylatory sufitowe,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.sufit_one', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Już próbuję włączyć właściwy wentylator sufitowy.
media_player.volume_up,media_player.roku_living,Pokój dzienny Roku,media_player.roku_livingz,Zwiększ głośność w pokoju dziennym Roku,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.roku_livingz', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Spróbuję ponownie z prawidłowym urządzeniem.
climate.turn_on,climate.trane_comfortlink_ii,Trane ComfortLink II XL1050,climate.trane_comfortlink_ii_extra,Włącz klimatyzację w salonie.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.trane_comfortlink_ii_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Już próbuję włączyć Trane ComfortLink II.
garage_door.open_cover,garage_door.szopa_1,Pierwsze drzwi do szopy,garage_door.szopa_12,Otwórz pokrywę pierwszych drzwi do szopy.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.szopa_12', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Już próbuję z prawidłowym urządzeniem garage_door.szopa_1.
media_player.turn_off,media_player.roku_sypialnia,Odtwarzacz Roku w sypialni,media_player.roku_sypialnia_tv,Wyłącz odtwarzacz Roku w sypialni.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.roku_sypialnia_tv', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Już próbuję wyłączyć Odtwarzacz Roku w sypialni.
fan.decrease_speed,fan.strych,Wentylator na strychu,fan.rysch,Zmniejsz prędkość wentylatora na strychu.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.rysch', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","OK, spróbuję ponownie z właściwym urządzeniem (fan.strych)."
switch.turn_on,switch.spiżarnia_światła,Przełącznik świateł w spiżarni,switch.spiżarnia_światła_v2,Włącz proszę światła w spiżarni.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.spiżarnia_światła_v2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Spróbuję ponownie z prawidłowym przełącznikiem switch.spiżarnia_światła.
lock.lock,lock.studio,Zamek studyjna,lock.studi,Zamknij zamek studyjną.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.studi', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Już próbuję z właściwym zamkiem (lock.studio).
lock.unlock,lock.warsztat_szafka,Zamek do szafki warsztatowej,lock.warsztat_szafk,Odblokuj zamek do szafki warsztatowej.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.warsztat_szafk', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Już próbuję z właściwym zamkiem (lock.warsztat_szafka).
blinds.close_cover,blinds.pokój_dziecięcy,Rolety w pokoju dziecięcym,blinds.pokój_dzieci,Zamknij rolety w pokoju dziecięcym.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.pokój_dzieci', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Już próbuję z roletami w pokoju dziecięcym.
lock.unlock,lock.kino_domowe,Zamek kina domowego,lock.kino_domow,Odblokuj zamek kina domowego.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.kino_domow', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Już próbuję z właściwym urządzeniem lock.kino_domowe.
climate.turn_on,climate.sinope_smart,Inteligentny termostat Sinopé,climate.sinop_smart,Włącz ogrzewanie w domu,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.sinop_smart', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Już próbuję włączyć Inteligentny termostat Sinopé.
light.toggle,light.ganek,Światło na ganku,light.gank,Przełącz światło na ganku,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.gank', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Spróbuję ponownie z prawidłowym urządzeniem.
fan.turn_off,fan.ganek,Wentylator na werandzie,fan.gane,Proszę wyłącz wentylator na werandzie.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.gane', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Spróbuję ponownie z właściwym urządzeniem (fan.ganek).
garage_door.open_cover,garage_door.magazyn_rowerów,Garaż do przechowywania rowerów,garage_door.magazyn_rower,Proszę otworzyć pokrywę garażu do przechowywania rowerów.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.magazyn_rower', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Przepraszam, spróbuję ponownie z właściwym urządzeniem."
1 service_name correct_device_name correct_friendly_name bad_device_name phrase error_result retry_prompt
2 light.turn_on light.living_room_lamp Lampa w salonie light.livng_room_lamp Proszę włącz <device_name>. Błąd: encja light.livng_room_lamp nie została znaleziona. Spróbuję zamiast tego lampy w salonie.
3 climate.set_temperature climate.hallway Termostat w korytarzu climate.halway Ustaw <device_name> na <temp_f> stopni. Błąd: encja climate.halway nie została znaleziona. Ponawiam z termostatem w korytarzu.
4 fan.turn_off fan.office Wentylator w biurze fan.offce Wyłącz <device_name>. Błąd: encja fan.offce nie została znaleziona. Spróbuję ponownie z wentylatorem w biurze.
5 light.toggle light.kuchnia_półka_fajna Półka kuchenna Fajne światło light.kuchnia_fajna_półka Włącz światło na półce w kuchni. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.kuchnia_fajna_półka', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Już próbuję ponownie z urządzeniem light.kuchnia_półka_fajna.
6 climate.turn_on climate.emerson_sensi_touch Termostat Wi-Fi Emerson Sensi Touch climate.emersonsens_touch Włącz termostat w salonie. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.emersonsens_touch', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Już próbuję włączyć Termostat Wi‑Fi Emerson Sensi Touch.
7 climate.turn_off climate.termostat_lux_geo Termostat Lux Geo Wi-Fi climate.lux_geo_termostat Wyłącz termostat w salonie. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.lux_geo_termostat', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Już próbuję wyłączyć Termostat Lux Geo Wi‑Fi.
8 switch.turn_off switch.oświetlenie_pokoju_gościnnego Przełącznik świateł w pokoju gościnnym switch.pokoju_oświetlenie_gościnnego Wyłącz światło w pokoju gościnnym <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.pokoju_oświetlenie_gościnnego', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Spróbuję ponownie z przełącznikiem świateł w pokoju gościnnym.
9 climate.set_temperature climate.ecobee_smart Inteligentny termostat Ecobee climate.ecobbe_smart Ustaw temperaturę na <temp_f> stopni. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.ecobbe_smart', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Spróbuję ponownie z właściwym termostatem (climate.ecobee_smart).
10 fan.increase_speed fan.salon Wentylator do salonu fan.salon_plus Zwiększ prędkość wentylatora w salonie. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.salon_plus', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Już próbuję z właściwym wentylatorem.
11 blinds.open_cover blinds.główna_sypialnia Rolety w głównej sypialni blinds.sypialnia_główna Otwórz rolety w głównej sypialni. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.sypialnia_główna', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Już próbuję z właściwym urządzeniem.
12 climate.set_temperature climate.honeywell_lyric_t6 Honeywell Lyric T6 Pro climate.honeywell_lyric_t6_backup Ustaw temperaturę na <temp_f> stopni <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.honeywell_lyric_t6_backup', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Spróbuję ponownie z urządzeniem climate.honeywell_lyric_t6.
13 blinds.stop_cover blinds.salon_pokój_duży Rolety w dużym pokoju blinds.salon_pokój_duż Zatrzymaj rolety w dużym pokoju. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.salon_pokój_duż', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Już próbuję ponownie z urządzeniem blinds.salon_pokój_duży.
14 media_player.turn_on media_player.wejście_asystent_głosu Asystent głosowy przy wejściu media_player.wejść_asystent_głosu Włącz asystenta głosowego przy wejściu. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.wejść_asystent_głosu', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Już próbuję włączyć Asystenta głosowego przy wejściu.
15 climate.turn_on climate.johnson_glas Johnson steruje inteligentnym termostatem GLAS climate.johnson_glas_pro Włącz termostat Johnson GLAS w salonie <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.johnson_glas_pro', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Już próbuję włączyć właściwy termostat Johnson GLAS.
16 climate.turn_on climate.zen_wifi_termostat Termostat Zen w wersji WiFi climate.zen_wifii_termostat Włącz termostat Zen w wersji WiFi. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.zen_wifii_termostat', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Spróbuję ponownie z właściwym urządzeniem.
17 garage_door.close_cover garage_door.wpis_zwierzaka Drzwi wejściowe dla zwierząt garage_door.wpis_zwierzaka_extra Proszę zamknąć pokrywę drzwi wejściowych dla zwierząt. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.wpis_zwierzaka_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Spróbuję ponownie z właściwym urządzeniem.
18 lock.unlock lock.przódowa_brama Zamek bramy przedniej lock.brama_przodowa Odblokuj przednią bramę. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.brama_przodowa', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Już próbuję z Zamek bramy przedniej.
19 fan.increase_speed fan.sala_siłownia Wentylator siłowni fan.sala_silownia Zwiększ prędkość wentylatora w siłowni. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.sala_silownia', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Już próbuję z Wentylatorem siłowni.
20 light.turn_off light.przód_tv_room_ge Przednie oświetlenie pokoju telewizyjnego light.przód_tv_room_ge_extra Wyłącz proszę przednie oświetlenie pokoju telewizyjnego. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.przód_tv_room_ge_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Już próbuję z prawidłowym urządzeniem.
21 media_player.volume_up media_player.sonos_beam Kompaktowy soundbar Sonos media_player.sonos_beam_pro Zwiększ głośność na moim soundbarze Sonos. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.sonos_beam_pro', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Już poprawiam i zwiększam głośność na Sonos Beam.
22 blinds.open_cover blinds.piwnica Żaluzje piwniczne blinds.piwnic Otwórz żaluzje w piwnicy. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.piwnic', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Spróbuję ponownie z urządzeniem blinds.piwnica.
23 lock.unlock lock.brama_schodowa Zamek do bramy schodowej lock.brama_schodow Odblokuj bramę schodową, proszę. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.brama_schodow', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Spróbuję ponownie z właściwym zamkiem do bramy schodowej.
24 light.turn_off light.na_dole_guest_bedroom_zigbee Światło w sypialni dla gości na parterze light.na_dole_guest_bedroom_zigbee_extra Wyłącz światło w sypialni dla gości na parterze. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.na_dole_guest_bedroom_zigbee_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Już próbuję wyłączyć je przy użyciu właściwego urządzenia.
25 garage_door.close_cover garage_door.motocykl Drzwi Garażowe motocyklowe garage_door.motocyklowy Proszę, zamknij pokrywę drzwi garażowych motocyklowych. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.motocyklowy', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Już próbuję z właściwym urządzeniem.
26 light.turn_on light.na_górze_jadalnia_zigbee Światło do jadalni na piętrze light.na_górze_jadlania_zigbee Włącz światło w jadalni na piętrze z jasnością 73 procent. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.na_górze_jadlania_zigbee', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Spróbuję ponownie z prawidłowym urządzeniem.
27 switch.toggle switch.master_bedroom_lights Główny włącznik świateł w sypialni switch.master_bedroom_ligts Przełącz główny włącznik świateł w sypialni. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.master_bedroom_ligts', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Spróbuję ponownie z urządzeniem switch.master_bedroom_lights.
28 climate.set_temperature climate.termostat_lux_geo Termostat Lux Geo Wi-Fi climate.lux_termostat_geo Ustaw temperaturę na <temp_f> stopni <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.lux_termostat_geo', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Spróbuję ponownie z Termostatem Lux Geo.
29 light.turn_on light.tył_washroom_lifx Tylne światło toalety light.tyl_washroom_lifx Włącz tylne światło toalety. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.tyl_washroom_lifx', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Spróbuję ponownie z prawidłowym urządzeniem light.tył_washroom_lifx.
30 switch.turn_on switch.den_lights Przełącznik świateł Den switch.den_lightz Włącz przełącznik świateł Den <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.den_lightz', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Spróbuję ponownie z prawidłowym przełącznikiem.
31 blinds.stop_cover blinds.piwnica Żaluzje piwniczne blinds.piwnicza Zatrzymaj żaluzje w piwnicy. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.piwnicza', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Spróbuję ponownie z urządzeniem blinds.piwnica.
32 switch.turn_on switch.oświetlenie_pokoju_dziennego Przełącznik oświetlenia w salonie switch.oświetlenie_pokoju_dziennego_extra Włącz oświetlenie w salonie, proszę. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.oświetlenie_pokoju_dziennego_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Spróbuję włączyć właściwy przełącznik oświetlenia w salonie.
33 lock.unlock lock.yale_living Pokój dzienny Yale lock.yale_livng Odblokuj drzwi w pokoju dziennym. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.yale_livng', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Już próbuję z prawidłowym urządzeniem lock.yale_living.
34 switch.turn_on switch.oświetlenie_biurowe Włącznik świateł biurowych switch.oświetlenie_biuro Proszę włącz światła w biurze <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.oświetlenie_biuro', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Spróbuję ponownie z właściwym przełącznikiem.
35 lock.lock lock.jadalnia Zamek do jadalni lock.jadalniak Zamknij zamek w jadalni. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.jadalniak', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Już próbuję ponownie z właściwym urządzeniem lock.jadalnia.
36 media_player.volume_up media_player.ps5_living_room Salon PS5 media_player.ps5_salon_room Zwiększ głośność w salonie PS5. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.ps5_salon_room', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Już próbuję z właściwym urządzeniem.
37 media_player.media_play_pause media_player.strumień_laptopa Laptop do transmisji strumieniowej media_player.laptop_strumień Wstrzymaj odtwarzanie na Laptopie do transmisji strumieniowej. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.laptop_strumień', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Już próbuję z właściwym urządzeniem: media_player.strumień_laptopa.
38 climate.set_temperature climate.termostat_lux_geo Termostat Lux Geo Wi-Fi climate.lux_termostat_geo Ustaw temperaturę na <temp_f> stopni. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.lux_termostat_geo', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Już próbuję z Termostatem Lux Geo.
39 fan.turn_on fan.żłobek Wentylatpor w żlobku fan.żłobek_sala Włącz wentylator w żłobku, proszę. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.żłobek_sala', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Już próbuję włączyć wentylator w żłobku.
40 garage_door.open_cover garage_door.sprzęt_trawnikowy Drzwi do sprzętu trawnikowego garage_door.trawnikowy_sprzęt Otwórz pokrywę drzwi do sprzętu trawnikowego <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.trawnikowy_sprzęt', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Spróbuję ponownie z właściwym urządzeniem.
41 vacuum.stop vacuum.salon_pokój_pokojowy Odkurzacz w salonie vacuum.salon_pokój Zatrzymaj odkurzacz w salonie. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.salon_pokój', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Spróbuję ponownie z odkurzaczem w salonie (vacuum.salon_pokój_pokojowy).
42 lock.lock lock.boczna_brama Zamek bramy bocznej lock.boczna_brama_s Zamknij bramę boczną. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.boczna_brama_s', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Spróbuję ponownie z zamkiem bramy bocznej.
43 garage_door.toggle garage_door.wózek_golfowy Drzwi do wózka golfowego garage_door.wózek_golf Przełącz drzwi do wózka golfowego. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.wózek_golf', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Już próbuję z urządzeniem garage_door.wózek_golfowy.
44 fan.toggle fan.mistrz_kąpiel Główny wentylator łazienkowy fan.mistrz_kąpielowy Włącz główny wentylator łazienkowy <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.mistrz_kąpielowy', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Spróbuję ponownie z właściwym wentylatorem.
45 switch.toggle switch.światła_pokoju_zabaw Przełącznik oświetlenia pokoju zabaw switch.światła_pokoju_zaba Przełącz światła w pokoju zabaw. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.światła_pokoju_zaba', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Spróbuję ponownie z właściwym przełącznikiem.
46 blinds.stop_cover blinds.korytarz_1 Pierwsze rolety w przedpokoju blinds.korytarz_1a Zatrzymaj rolety w przedpokoju <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.korytarz_1a', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Spróbuję ponownie z właściwym urządzeniem.
47 light.toggle light.parter_balkon_mqtt Światło na balkonie na dole light.parterbalkon_mqtt Włącz światło na balkonie na dole <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.parterbalkon_mqtt', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Już próbuję ponownie z prawidłowym urządzeniem.
48 switch.turn_off switch.oświetlenie_poddasza Przełącznik oświetlenia na poddaszu switch.oświetlenie_poddasza_ekstra Wyłącz oświetlenie na poddaszu <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.oświetlenie_poddasza_ekstra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Już próbuję wyłączyć przełącznik oświetlenia na poddaszu.
49 switch.turn_off switch.otwieracz_drzwi_garażowych Włącznik otwierania drzwi garażowych switch.drzwi_otwieracz_garażowych Wyłącz włącznik otwierania drzwi garażowych <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.drzwi_otwieracz_garażowych', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Spróbuję wyłączyć właściwy przełącznik.
50 media_player.volume_down media_player.bang_olufsen_beovision Wysokiej klasy telewizor B&O media_player.bang_olufsen_beovision_tv Ścisz głośność w telewizorze Bang & Olufsen. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.bang_olufsen_beovision_tv', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Już próbuję z właściwym urządzeniem media_player.bang_olufsen_beovision.
51 switch.toggle switch.światła_pokładowe Przełącznik oświetlenia pokładu switch.światła_pokładowe_extra Przełącz oświetlenie pokładowe. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.światła_pokładowe_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Już próbuję ponownie z przełącznikiem oświetlenia pokładowego.
52 fan.toggle fan.łazienka_w_dół Wentylator w łazience na parterze fan.łazienka_w_górę Włącz wentylator w łazience na parterze <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.łazienka_w_górę', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Spróbuję ponownie z właściwym urządzeniem.
53 garage_door.toggle garage_door.strona_2 Boczna brama garażowa garage_door.strona_2_extra Przełącz boczną bramę garażową <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.strona_2_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Już próbuję z prawidłowym urządzeniem garage_door.strona_2.
54 climate.turn_off climate.kono_termostat Inteligentny termostat Kono climate.kono_termostat_v2 Wyłącz inteligentny termostat Kono <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.kono_termostat_v2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Spróbuję ponownie z właściwym termostatem (climate.kono_termostat).
55 fan.decrease_speed fan.poddasze_1 Wentylator na poddaszu fan.poddasze_1 Proszę, zmniejsz prędkość wentylatora na poddaszu. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.poddasze_1', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Już próbuję z właściwym urządzeniem Wentylator na poddaszu.
56 fan.turn_on fan.korytarz Wentylator w przedpokoju fan.korytar Proszę włącz wentylator w przedpokoju. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.korytar', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Spróbuję włączyć właściwy wentylator w przedpokoju.
57 fan.decrease_speed fan.mistrz_kąpiel Główny wentylator łazienkowy fan.mistrz_kąpiel_łazienka Proszę, zmniejsz prędkość wentylatora. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.mistrz_kąpiel_łazienka', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Już próbuję z właściwym wentylatorem.
58 switch.toggle switch.oświetlenie_tarasu Sterowanie oświetleniem tarasu switch.oświetlenie_tarasu_2 Włącz oświetlenie tarasu, proszę. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.oświetlenie_tarasu_2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Już próbuję z właściwym urządzeniem (switch.oświetlenie_tarasu).
59 switch.turn_off switch.światła_pokładowe Przełącznik oświetlenia pokładu switch.światła_pokładowe_backup Wyłącz światła pokładowe, proszę. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.światła_pokładowe_backup', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Już próbuję wyłączyć prawidłowy przełącznik.
60 fan.toggle fan.strych Wentylator na strychu fan.strychx Przełącz wentylator na strychu. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.strychx', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Już próbuję z właściwym wentylatorem (fan.strych).
61 light.turn_on light.góra_szafa_zwave Światło w szafie na górze light.góra_szafa_zwave_extra Włącz światło w szafie na górze na 99% jasności i ustaw kolor na czerwony. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.góra_szafa_zwave_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Spróbuję jeszcze raz z prawidłowym urządzeniem light.góra_szafa_zwave.
62 lock.unlock lock.warsztat Zamek warsztatowy lock.warsztatowy Odblokuj zamek warsztatowy <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.warsztatowy', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Spróbuję ponownie z urządzeniem lock.warsztat.
63 vacuum.return_to_base vacuum.piwnica_deebot Deebot z piwnicy vacuum.piwnica_deebot_extra Deebot, wróć do bazy. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.piwnica_deebot_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Spróbuję ponownie z prawidłowym odkurzaczem Deebot z piwnicy.
64 climate.turn_off climate.honeywell_lyric_t6 Honeywell Lyric T6 Pro climate.honeywell_lyric_t6_pro Wyłącz klimatyzację w salonie. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.honeywell_lyric_t6_pro', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Już próbuję z właściwym urządzeniem.
65 light.turn_on light.garaż_workbench_cool Stół warsztatowy w garażu zimne światło light.garaż_workbench_cool_plus Włącz zimne światło przy stole warsztatowym w garażu. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.garaż_workbench_cool_plus', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Już próbuję włączyć właściwe światło przy stole warsztatowym.
66 climate.turn_off climate.tado_smart Inteligentny termostat Tado climate.tado_smar Wyłącz ogrzewanie w całym domu. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.tado_smar', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Już próbuję wyłączyć termostat Tado.
67 blinds.close_cover blinds.pokój_dziecięcy Rolety w pokoju dziecięcym blinds.pokój_dziec Zamknij rolety w pokoju dziecięcym. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.pokój_dziec', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Spróbuję ponownie z Rolety w pokoju dziecięcym.
68 lock.unlock lock.szopa_na_narzędzia Zamek szopy na narzędzia lock.szopa_na_narzędziów Odblokuj zamek szopy na narzędzia <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.szopa_na_narzędziów', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Spróbuję ponownie z właściwym zamkiem.
69 fan.turn_on fan.honeywell_turbo Turbowentylator Honeywell fan.turbo_honeywell Włącz proszę turbowentylator Honeywell <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.turbo_honeywell', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Już próbuję włączyć Turbowentylator Honeywell.
70 light.turn_on light.kuchnia_2 Drugie światło kuchenne light.kuchnia_2_extra Proszę włączyć drugie światło kuchenne na 20% jasności. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.kuchnia_2_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Już próbuję włączyć właściwe światło kuchenne.
71 fan.decrease_speed fan.kuchnia Wenty w kuchni fan.kuchniak Proszę, zmniejsz prędkość wentylatora w kuchni. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.kuchniak', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Już poprawiam i użyję fan.kuchnia.
72 switch.turn_off switch.water_feature_lights Przełącznik świateł funkcji wodnej switch.water_feat_lights Wyłącz proszę światła w funkcji wodnej. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.water_feat_lights', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Już próbuję wyłączyć właściwe urządzenie: switch.water_feature_lights.
73 light.turn_off light.badanie_3 Światła do nauki light.badanie_33 Wyłącz światła do nauki <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.badanie_33', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Spróbuję wyłączyć właściwe światło: Światła do nauki.
74 switch.toggle switch.oświetlenie_patia Przełącznik oświetlenia patio switch.oświetlenie_pat Przełącz światło na patio <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.oświetlenie_pat', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Już próbuję z prawidłowym urządzeniem switch.oświetlenie_patia.
75 fan.decrease_speed fan.salon_pokoju_centrum Centralny wentylator do salonu fan.salon_pokój_centrum Proszę, zmniejsz prędkość wentylatora w salonie. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.salon_pokój_centrum', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Już próbuję z właściwym urządzeniem fan.salon_pokoju_centrum.
76 light.turn_off light.przód_kominek_homekit Przednia lampa kominkowa light.przód_kominek_homekit_backup Wyłącz proszę przednią lampę kominkową. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.przód_kominek_homekit_backup', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Już próbuję wyłączyć lampę przy użyciu właściwego urządzenia.
77 vacuum.start vacuum.master_bedroom_shark Odkurzacz w głównej sypialni vacuum.master_bedroom_shark_pro Proszę uruchomić odkurzacz w głównej sypialni. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.master_bedroom_shark_pro', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Już próbuję ponownie z właściwym odkurzaczem.
78 garage_door.close_cover garage_door.zapasowy Zapasowe drzwi garażowe garage_door.zapasow Zamknij pokrywę drzwi garażowych. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.zapasow', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Spróbuję ponownie z urządzeniem garage_door.zapasowy.
79 media_player.turn_on media_player.ps5_living_room Salon PS5 media_player.ps5_salon_room Włącz Salon PS5. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.ps5_salon_room', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Spróbuję ponownie z właściwym urządzeniem.
80 fan.decrease_speed fan.salon_2 Wentylator do salonu fan.salon2 Proszę zmniejszyć prędkość wentylatora w salonie. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.salon2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Spróbuję ponownie z właściwym wentylatorem (fan.salon_2).
81 lock.unlock lock.jadalnia Zamek do jadalni lock.jadlania Odblokuj zamek w jadalni, proszę. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.jadlania', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Spróbuję ponownie z prawidłowym urządzeniem (lock.jadalnia).
82 media_player.turn_on media_player.panasonic_4k_bluray_player Odtwarzacz Blueray Panasonic media_player.panasonic_4k_bluray_player_v2 Włącz odtwarzacz Blu-ray Panasonic. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.panasonic_4k_bluray_player_v2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Spróbuję ponownie z właściwym odtwarzaczem.
83 garage_door.stop_cover garage_door.wyższy_poziom Garaż na górnym poziomie garage_door.wyższypoziom Zatrzymaj drzwi garażowe na górnym poziomie. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.wyższypoziom', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Już próbuję z prawidłowym urządzeniem.
84 climate.turn_on climate.emerson_sensi_touch Termostat Wi-Fi Emerson Sensi Touch climate.emerson_sensi_tuch Włącz termostat Emerson Sensi Touch. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.emerson_sensi_tuch', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Spróbuję ponownie z właściwym urządzeniem.
85 media_player.volume_up media_player.telewizor_apple Odtwarzacz multimedialny Apple TV media_player.telewizor_apple_tv Zwiększ głośność odtwarzacza multimedialnego Apple TV. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.telewizor_apple_tv', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Spróbuję ponownie z odtwarzaczem multimedialnym Apple TV.
86 climate.turn_off climate.termostat_lux_geo Termostat Lux Geo Wi-Fi climate.lux_geo_termostat Wyłącz termostat Lux Geo Wi‑Fi. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.lux_geo_termostat', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Już próbuję wyłączyć właściwy termostat (climate.termostat_lux_geo).
87 media_player.volume_down media_player.strumień_laptopa Laptop do transmisji strumieniowej media_player.strumień_lapto Ścisz odtwarzacz na laptopie do transmisji strumieniowej. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.strumień_lapto', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Już próbuję ponownie z media_player.strumień_laptopa.
88 garage_door.toggle garage_door.wózek_golfowy Drzwi do wózka golfowego garage_door.golfowy_wózek Otwórz drzwi do wózka golfowego, proszę. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.golfowy_wózek', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Już próbuję z prawidłowym urządzeniem.
89 lock.lock lock.szafka_na_akta Zamek szafki na dokumenty lock.szacka_na_akta Zamknij szafkę na dokumenty <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.szacka_na_akta', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Spróbuję ponownie z właściwym zamkiem: lock.szafka_na_akta.
90 switch.turn_on switch.światła_pokładowe Przełącznik oświetlenia pokładu switch.światła_pokładowe_kontrola Włącz oświetlenie pokładu, proszę. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.światła_pokładowe_kontrola', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Spróbuję ponownie z właściwym przełącznikiem oświetlenia pokładu.
91 garage_door.toggle garage_door.wasztat Warsztatowa brama garażowa garage_door.waztast Zamknij warsztatową bramę garażową. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.waztast', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Spróbuję jeszcze raz z prawidłowym urządzeniem.
92 fan.turn_off fan.pokój_gościnny Wentylator w pokoju gościnnym fan.pokój_gościnny_v2 Wyłącz wentylator w pokoju gościnnym. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.pokój_gościnny_v2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Już próbuję wyłączyć wentylator w pokoju gościnnym.
93 lock.lock lock.garderoba Zamek do garderoby lock.garderoba_door Zamknij zamek w garderobie. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.garderoba_door', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Spróbuję ponownie z urządzeniem lock.garderoba.
94 blinds.open_cover blinds.korytarz_1 Pierwsze rolety w przedpokoju blinds.korytarz_1a Otwórz proszę pierwsze rolety w przedpokoju <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.korytarz_1a', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Spróbuję ponownie z prawidłowym urządzeniem.
95 switch.turn_off switch.światła_podjazdu Przełącznik oświetleniem podjazdu switch.światła_podjazd Wyłącz oświetlenie podjazdu, proszę. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.światła_podjazd', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Już próbuję wyłączyć prawidłowy przełącznik: switch.światła_podjazdu.
96 media_player.volume_down media_player.garaż Garażowy odtwarzacz multimedialny media_player.garaż_ekstra Obniż głośność w garażowym odtwarzaczu multimedialnym. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.garaż_ekstra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Już próbuję z właściwym urządzeniem media_player.garaż.
97 light.toggle light.badanie_1 Światła do nauki light.badanie Przełącz światła do nauki <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.badanie', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Spróbuję ponownie z właściwym urządzeniem: light.badanie_1.
98 climate.turn_on climate.trane_comfortlink_ii Trane ComfortLink II XL1050 climate.trane_comfortlink Włącz system klimatyzacji Trane w domu <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.trane_comfortlink', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Już próbuję z właściwym urządzeniem: climate.trane_comfortlink_ii.
99 switch.toggle switch.łazienka_wentylator Przełącznik wentylatora łazienkowego switch.wentylator_łazienka Włącz wentylator w łazience <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.wentylator_łazienka', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Już próbuję z właściwym przełącznikiem.
100 lock.unlock lock.pomieszczenie_gospodarcze Zamek pomieszczenia gospodarczego lock.pomieszczenie_gosp Odblokuj zamek pomieszczenia gospodarczego. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.pomieszczenie_gosp', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Już próbuję odblokować Zamek pomieszczenia gospodarczego.
101 climate.turn_off climate.przewoźnik_kor Termostat Carrier Cor Wi-Fi climate.przewoźnik_korX Wyłącz termostat Carrier Cor Wi‑Fi <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.przewoźnik_korX', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Spróbuję jeszcze raz z właściwym urządzeniem.
102 lock.unlock lock.joga_pokój Zamek do pokoju jogi lock.joga-pokój Odblokuj zamek w pokoju jogi. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.joga-pokój', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Spróbuję ponownie z właściwym urządzeniem lock.joga_pokój.
103 switch.turn_off switch.pompa_basenu Przełącznik pompy basenowej switch.pompa_basen Wyłącz przełącznik pompy basenowej <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.pompa_basen', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Spróbuję ponownie z właściwym przełącznikiem pompy basenowej.
104 lock.unlock lock.przód_drzwi_1 Główny zamek wejściowy lock.przód_drzwi_one Odblokuj główny zamek wejściowy. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.przód_drzwi_one', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Już próbuję z prawidłowym urządzeniem lock.przód_drzwi_1.
105 vacuum.stop vacuum.under_bed_cleaner Odkurzacz pod łóżkiem vacuum.under_bed_cleaner_extra Zatrzymaj odkurzacz pod łóżkiem, proszę. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.under_bed_cleaner_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Już próbuję z odkurzaczem pod łóżkiem.
106 light.toggle light.piętro_poddasze_zwave Światło na poddaszu na piętrze light.poddasze_piętro_zwave Włącz światło na poddaszu na piętrze <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.poddasze_piętro_zwave', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Już próbuję z prawidłowym urządzeniem.
107 media_player.volume_down media_player.soundbar_living_room Soundbar do salonu media_player.soundbars_living_room Ścisz dźwięk na soundbarze w salonie. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.soundbars_living_room', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Spróbuję ponownie z właściwym urządzeniem Soundbar do salonu.
108 light.turn_on light.garaż Światło w garażu light.garażek Włącz proszę światło w garażu. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.garażek', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Już poprawiam i włączam światło w garażu.
109 fan.increase_speed fan.sypialnia_mistrz Wentylator w głównej sypialni fan.sypialnia_mistrz_2 Zwiększ prędkość wentylatora w głównej sypialni. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.sypialnia_mistrz_2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Już próbuję z właściwym wentylatorem.
110 fan.turn_on fan.sufit_1 Wentylatory sufitowe fan.sufit_one Włącz proszę wentylatory sufitowe <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.sufit_one', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Już próbuję włączyć właściwy wentylator sufitowy.
111 media_player.volume_up media_player.roku_living Pokój dzienny Roku media_player.roku_livingz Zwiększ głośność w pokoju dziennym Roku <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.roku_livingz', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Spróbuję ponownie z prawidłowym urządzeniem.
112 climate.turn_on climate.trane_comfortlink_ii Trane ComfortLink II XL1050 climate.trane_comfortlink_ii_extra Włącz klimatyzację w salonie. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.trane_comfortlink_ii_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Już próbuję włączyć Trane ComfortLink II.
113 garage_door.open_cover garage_door.szopa_1 Pierwsze drzwi do szopy garage_door.szopa_12 Otwórz pokrywę pierwszych drzwi do szopy. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.szopa_12', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Już próbuję z prawidłowym urządzeniem garage_door.szopa_1.
114 media_player.turn_off media_player.roku_sypialnia Odtwarzacz Roku w sypialni media_player.roku_sypialnia_tv Wyłącz odtwarzacz Roku w sypialni. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.roku_sypialnia_tv', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Już próbuję wyłączyć Odtwarzacz Roku w sypialni.
115 fan.decrease_speed fan.strych Wentylator na strychu fan.rysch Zmniejsz prędkość wentylatora na strychu. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.rysch', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> OK, spróbuję ponownie z właściwym urządzeniem (fan.strych).
116 switch.turn_on switch.spiżarnia_światła Przełącznik świateł w spiżarni switch.spiżarnia_światła_v2 Włącz proszę światła w spiżarni. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.spiżarnia_światła_v2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Spróbuję ponownie z prawidłowym przełącznikiem – switch.spiżarnia_światła.
117 lock.lock lock.studio Zamek studyjna lock.studi Zamknij zamek studyjną. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.studi', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Już próbuję z właściwym zamkiem (lock.studio).
118 lock.unlock lock.warsztat_szafka Zamek do szafki warsztatowej lock.warsztat_szafk Odblokuj zamek do szafki warsztatowej. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.warsztat_szafk', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Już próbuję z właściwym zamkiem (lock.warsztat_szafka).
119 blinds.close_cover blinds.pokój_dziecięcy Rolety w pokoju dziecięcym blinds.pokój_dzieci Zamknij rolety w pokoju dziecięcym. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.pokój_dzieci', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Już próbuję z roletami w pokoju dziecięcym.
120 lock.unlock lock.kino_domowe Zamek kina domowego lock.kino_domow Odblokuj zamek kina domowego. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.kino_domow', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Już próbuję z właściwym urządzeniem lock.kino_domowe.
121 climate.turn_on climate.sinope_smart Inteligentny termostat Sinopé climate.sinop_smart Włącz ogrzewanie w domu <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.sinop_smart', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Już próbuję włączyć Inteligentny termostat Sinopé.
122 light.toggle light.ganek Światło na ganku light.gank Przełącz światło na ganku <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.gank', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Spróbuję ponownie z prawidłowym urządzeniem.
123 fan.turn_off fan.ganek Wentylator na werandzie fan.gane Proszę wyłącz wentylator na werandzie. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.gane', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Spróbuję ponownie z właściwym urządzeniem (fan.ganek).
124 garage_door.open_cover garage_door.magazyn_rowerów Garaż do przechowywania rowerów garage_door.magazyn_rower Proszę otworzyć pokrywę garażu do przechowywania rowerów. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.magazyn_rower', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Przepraszam, spróbuję ponownie z właściwym urządzeniem.

View File

@@ -0,0 +1,124 @@
reason_type,service_name,device_name,friendly_name,desired_state,phrase,response
not_available,lock.lock,back_door,Zamek tylnych drzwi,,"Zablokuj <device_name>.","Nie mogę znaleźć zamka tylnych drzwi do sterowania."
already_state,light.turn_on,hallway,Światła w korytarzu,on,"Włącz <device_name>.","Światła w korytarzu są już włączone."
already_state,switch.turn_off,garage,Gniazdko w garażu,off,"Wyłącz <device_name>.","Gniazdko w garażu jest już wyłączone."
already_state,vacuum.start,kitchen_xiaomi,Odkurzacz Kuchenny,cleaning,Uruchom <device_name>,"Odkurzacz już sprząta, nie muszę nic zmieniać."
not_available,climate.turn_off,tado_smart,Inteligentny termostat Tado,,Wyłącz <device_name>,"Przepraszam, nie mogę znaleźć tego urządzenia w domu."
not_available,fan.decrease_speed,sypialnia_prawa,Wentylator w sypialni po prawej stronie,,Zmniejsz prędkość <device_name>,"Przepraszam, nie mogę znaleźć tego urządzenia w domu."
not_available,lock.lock,strych,Zamek na poddaszu,,Zamknij <device_name>,"Przepraszam, nie mogę tego zrobić, ponieważ nie mogę znaleźć tego urządzenia w domu."
already_state,light.turn_off,kuchnia_sufit_cool,Chłodne światło sufitowe w kuchni,off,Wyłącz <device_name>,"Światło już jest wyłączone, więc nie ma potrzeby zmiany."
already_state,light.turn_on,jadalnia_żyrandol,Żyrandol do jadalni,on,Włącz <device_name>,"Światło już jest włączone, nie trzeba nic zmieniać."
already_state,switch.turn_on,spiżarnia_światła,Przełącznik świateł w spiżarni,on,Włącz <device_name>,"Nie mogę, <device_name> jest już włączone."
not_available,climate.turn_on,emerson_sensi_touch,Termostat Wi-Fi Emerson Sensi Touch,,Włącz <device_name>,"Przepraszam, nie mogę znaleźć tego urządzenia w domu."
not_available,lock.unlock,szopa_na_narzędzia,Blokada szopy na narzędzia,,Odblokuj <device_name>,"Przepraszam, nie mogę znaleźć tego urządzenia w domu."
not_available,fan.turn_on,patio_na_świeżym_powietrzu,Wentylator ogrodowy,,Włącz <device_name>,"Przepraszam, nie mogę znaleźć tego urządzenia w domu."
already_state,light.turn_on,patio,Światło tarasowe,on,Włącz <device_name> na 30% jasności,"Światło już jest włączone, nie ma potrzeby zmiany jasności."
not_available,blinds.toggle,żłobek,Rolety w żlobku,,Zamknij <device_name>,"Przepraszam, nie mogę znaleźć tego urządzenia w domu."
not_available,media_player.turn_on,google_nest_hub,Google nest hub,,Włącz <device_name>,"Przepraszam, nie mogę znaleźć tego urządzenia w domu."
not_available,climate.set_temperature,tado_smart,Inteligentny termostat Tado,,Ustaw temperaturę <device_name> na 28 stopni,"Nie mogę znaleźć <device_name> w domu, więc nie mogę zmienić temperatury."
not_available,media_player.turn_off,apple_tv_4k,Urządzenie Apple do przesyłania strumieniowego,,Wyłącz <device_name>,"Przepraszam, nie mogę znaleźć tego urządzenia w domu."
not_available,media_player.volume_up,roku_living,Pokój dzienny Roku,,Zwiększ głośność <device_name>,"Nie mogę tego zrobić, ponieważ nie znalazłem urządzenia <device_name> w domu."
already_state,switch.turn_off,oświetlenie_szafy,Przełącznik oświetleniem szafy,off,Wyłącz <device_name>,"Urządzenie jest już wyłączone, więc nie muszę nic zmieniać."
not_available,media_player.volume_up,chrome_cast_sypialnia,Chromecast w sypialni,,Zwiększ głośność <device_name>,"Przepraszam, nie mogę znaleźć urządzenia <device_name> w domu."
not_available,media_player.turn_on,telewizor_samsung,Telewizor w salonie,,Włącz <device_name>,"Przepraszam, nie mogę znaleźć tego urządzenia w domu."
not_available,vacuum.return_to_base,under_bed_cleaner,Odkurzacz pod łóżkiem,,Proszę <device_name> wrócić do bazy.,"Przepraszam, nie mogę znaleźć <device_name> w domu."
not_available,climate.turn_off,johnson_glas,Johnson steruje inteligentnym termostatem GLAS,,Wyłącz <device_name>,"Przepraszam, nie mogę znaleźć tego urządzenia w domu."
already_state,garage_door.open_cover,wózek_golfowy,Garaż wózków golfowych,open,otwórz pokrywę <device_name>,"Nie mogę tego zrobić pokrywa już jest otwarta, więc nie ma potrzeby żadnej zmiany."
not_available,switch.toggle,master_bedroom_lights,Główny włącznik świateł w sypialni,,Przełącz <device_name>,"Przepraszam, nie mogę znaleźć tego urządzenia w domu."
not_available,garage_door.open_cover,jeden_samochód,Pojedyncze drzwi garażowe,,Otwórz pokrywę <device_name>,"Przepraszam, nie mogę znaleźć tego urządzenia w domu."
not_available,fan.turn_on,patio,Wentylator tarasowy,,Włącz <device_name>,"Przepraszam, nie mogę znaleźć tego urządzenia w domu."
not_available,fan.decrease_speed,jadalnia,Wentylator w jadalni,,Zmniejsz prędkość <device_name>,"Przepraszam, nie mogę znaleźć tego urządzenia w domu."
not_available,switch.toggle,oświetlenie_teatra_domowego,Sterowanie oświetleniem kina domowego,,Przełącz <device_name>,"Przepraszam, nie mogę znaleźć <device_name> w domu."
already_state,climate.turn_on,sinope_smart,Inteligentny termostat Sinopé,on,Włącz <device_name>,"Urządzenie już jest włączone, nie ma potrzeby zmiany."
not_available,light.toggle,kuchnia_1,Główne światło kuchenne,,Przełącz <device_name>,"Przepraszam, nie mogę znaleźć urządzenia <device_name> w Twoim domu."
not_available,fan.decrease_speed,badanie_1,Miłośnik nauki,,Zmniejsz prędkość <device_name>,"Przepraszam, nie mogę znaleźć tego urządzenia w domu."
already_state,climate.turn_off,ecobee_smart,Inteligentny termostat Ecobee,off,Wyłącz <device_name>,"Nie mogę, ponieważ <device_name> jest już wyłączony i nie wymaga zmiany."
not_available,vacuum.return_to_base,kitchen_xiaomi,Odkurzacz Kuchenny,,Zwróć <device_name> do bazy,"Przepraszam, nie mogę znaleźć tego urządzenia w domu."
not_available,fan.increase_speed,szopa,Wentylator szopy,,Zwiększ prędkość <device_name>,"Przepraszam, nie mogę znaleźć tego urządzenia w domu."
not_available,lock.lock,przódowa_brama,Zamek bramy przedniej,,Zamknij <device_name>,"Przepraszam, nie mogę znaleźć tego urządzenia w domu."
not_available,blinds.toggle,somfy_salon,Rolety w salonie,,Przełącz <device_name>,"Przepraszam, nie mogę znaleźć tego urządzenia w domu."
not_available,vacuum.start,under_bed_cleaner,Odkurzacz pod łóżkiem,,Uruchom <device_name>,"Przepraszam, nie mogę znaleźć tego urządzenia w domu."
already_state,climate.turn_on,mysa_smart_termostat,Inteligentny termostat Mysa do elektrycznych grzejników listwowych,on,Włącz <device_name>,"Już jest włączone, nie muszę nic zmieniać."
not_available,media_player.volume_down,projektor_sony_4k,Projektor do kina domowego Sony,,Obniż głośność <device_name>,"Przepraszam, nie mogę znaleźć urządzenia <device_name> w domu."
not_available,blinds.open_cover,okno_biura,Żaluzje w biurze,,Otwórz <device_name>,"Przepraszam, nie mogę znaleźć tego urządzenia w domu."
not_available,switch.turn_off,łazienka_wentylator,Przełącznik wentylatora łazienkowego,,Wyłącz <device_name>,"Przepraszam, nie mogę znaleźć tego urządzenia w domu."
not_available,fan.toggle,poddasze_3,Wentylator na poddaszu,,Przełącz <device_name>,Niestety nie mogę zlokalizować tego urządzenia w domu.
not_available,media_player.volume_down,biuro,Biurowy odtwarzacz multimedialny,,Obniż głośność <device_name>,"Przepraszam, nie mogę znaleźć urządzenia <device_name> w domu."
not_available,switch.toggle,światła_chodnika,Przełącznik świateł chodnikowych,,Przełącz <device_name>,"Przepraszam, nie mogę znaleźć tego urządzenia w domu."
not_available,lock.unlock,jadalnia,Zamek do jadalni,,Odblokuj <device_name>,Nie mogę znaleźć <device_name> w domu.
not_available,fan.toggle,sypialnia_prawa,Wentylator w sypialni po prawej stronie,,Przełącz <device_name>,"Przepraszam, nie mogę znaleźć tego urządzenia w domu."
not_available,climate.set_temperature,termostat_lux_geo,Termostat Lux Geo Wi-Fi,,Ustaw temperaturę <device_name> na 28°C,"Przepraszam, nie mogę znaleźć <device_name> w Twoim domu."
not_available,fan.turn_off,patio_na_świeżym_powietrzu,Wentylator ogrodowy,,Wyłącz <device_name>,"Przepraszam, nie mogę znaleźć tego urządzenia w domu."
not_available,garage_door.toggle,wasztat,Warsztatowa brama garażowa,,Przełącz <device_name>,"Przepraszam, nie mogę znaleźć tego urządzenia w domu."
not_available,fan.increase_speed,łazienka,Wentylator w łazience,,Zwiększ prędkość <device_name>,"Przepraszam, nie mogę znaleźć tego urządzenia w domu."
already_state,switch.turn_off,jard_floodlights,Przełącznik reflektorów ogrodowych,off,Wyłącz <device_name>,"Urządzenie już jest wyłączone, nie muszę nic zmieniać."
not_available,fan.decrease_speed,sufit_1,Wentylatory sufitowe,,Obniż prędkość <device_name>,"Przepraszam, nie mogę znaleźć <device_name> w domu."
not_available,garage_door.toggle,główny,Główna brama garażowa,,Przełącz <device_name>,"Przepraszam, nie mogę znaleźć <device_name> w twoim domu."
already_state,garage_door.open_cover,rv_storage,Drzwi do przechowywania samochodu kempingowego,open,Otwórz pokrywę <device_name>,"Brama jest już otwarta, więc nie trzeba nic zmieniać."
not_available,lock.unlock,magazyn,Zamek do magazynu,,odblokuj <device_name>,"Przepraszam, nie mogę znaleźć tego urządzenia w domu."
not_available,fan.increase_speed,biuro,Wentylator w biurze,,Zwiększ prędkość <device_name>,"Przepraszam, nie mogę znaleźć <device_name> w domu."
not_available,blinds.stop_cover,łazienka_1,Pierwsze rolety łazienkowe,,Zatrzymaj <device_name>,"Przepraszam, nie mogę znaleźć tego urządzenia w domu."
not_available,switch.turn_off,światła_słoneczne,Przełącznik świateł w pomieszczeniu słonecznym,,Wyłącz <device_name>,"Przepraszam, nie mogę znaleźć tego urządzenia w domu."
already_state,switch.turn_on,oświetlenie_patia,Przełącznik oświetlenia patio,on,Włącz <device_name>,"Urządzenie jest już włączone, nie trzeba nic zmieniać."
not_available,media_player.volume_up,echo_dot,Kuchenna Echo dot,,Zwiększ głośność <device_name>,"Przepraszam, nie mogę znaleźć <device_name> w domu."
already_state,climate.turn_on,tado_smart,Inteligentny termostat Tado,on,Włącz <device_name>,"Urządzenie jest już włączone, nie muszę nic zmieniać."
already_state,climate.turn_off,johnson_glas,Johnson steruje inteligentnym termostatem GLAS,off,Wyłącz <device_name>,"Urządzenie już jest wyłączone, więc nie muszę nic zmieniać."
not_available,switch.toggle,oświetlenie_przódowe_bramy,Włącznik świateł w bramie przedniej,,Przełącz <device_name>,"Przepraszam, nie mogę znaleźć tego urządzenia w domu."
not_available,light.toggle,przód_podwórko_ge,Przednie boczne światło ogrodowe,,Przełącz <device_name>,"Przepraszam, nie mogę znaleźć tego urządzenia w domu."
not_available,lock.lock,sypialnia_3,Zamek w trzeciej sypialni,,Zamknij <device_name>,"Przepraszam, nie mogę znaleźć tego urządzenia w domu."
already_state,lock.unlock,drzwi_na_patio,Zamek Drzwi przesuwne na taras,unlocked,odblokuj <device_name>,"Ten <device_name> jest już odblokowany, więc nie ma potrzeby zmiany."
already_state,light.turn_off,jadalnia,Światło w jadalni,off,Wyłącz <device_name>,"Światło już jest wyłączone, nie muszę nic zmieniać."
not_available,garage_door.open_cover,wiata_samochodowa,Drzwi do wiaty,,Otwórz pokrywę <device_name>,"Przepraszam, nie mogę znaleźć tego urządzenia w domu."
already_state,garage_door.close_cover,dwa_samochody,Drzwo garażowe podwójne,closed,Zamknij pokrywę <device_name>,"Przykro mi, ale <device_name> jest już zamknięta, więc nie ma potrzeby podejmować żadnej akcji."
not_available,garage_door.stop_cover,szopa_2,Drugie drzwi do szopy,,Zatrzymaj <device_name>,"Przepraszam, nie mogę znaleźć tego urządzenia w domu."
not_available,blinds.stop_cover,korytarz_1,Pierwsze rolety w przedpokoju,,Zatrzymaj <device_name>,"Przepraszam, nie mogę znaleźć tego urządzenia w domu."
not_available,fan.turn_on,kuchnia,Wenty w kuchni,,Włącz <device_name>,"Przepraszam, nie mogę znaleźć tego urządzenia w domu."
already_state,climate.turn_on,termostat_lux_geo,Termostat Lux Geo Wi-Fi,on,Włącz <device_name>,"Urządzenie już jest włączone, nie ma potrzeby zmiany."
not_available,blinds.stop_cover,solarium,Rolety przeciwsłoneczne,,Zatrzymaj <device_name>,"Przepraszam, nie mogę znaleźć tego urządzenia w domu."
not_available,media_player.volume_up,biuro,Biurowy odtwarzacz multimedialny,,Zwiększ głośność <device_name>,"Przepraszam, nie mogę znaleźć urządzenia <device_name> w domu."
not_available,lock.lock,pokój_muzyczny,Zamek do pokoju muzycznego,,Zamknij <device_name>,"Przepraszam, nie mogę znaleźć tego urządzenia w domu."
not_available,lock.unlock,tylne_drzwi,Zamek wjazdowy na podwórko,,odblokuj <device_name>,"Przepraszam, nie mogę znaleźć tego urządzenia w domu."
already_state,switch.turn_off,oświetlenie_ogrodowe,Sterowanie oświetleniem ogrodu,off,Wyłącz <device_name>,"Nie mogę, bo <device_name> jest już wyłączony."
already_state,switch.turn_on,oświetlenie_teatra_domowego,Sterowanie oświetleniem kina domowego,on,Włącz <device_name>,"Przepraszam, <device_name> już jest włączony, więc nie muszę nic zmieniać."
not_available,garage_door.stop_cover,główny,Główna brama garażowa,,Zatrzymaj <device_name>,"Przepraszam, nie mogę znaleźć tego urządzenia w domu."
already_state,vacuum.start,under_bed_cleaner,Odkurzacz pod łóżkiem,cleaning,Uruchom <device_name>,"Odkurzacz już sprząta, nie ma potrzeby go uruchamiać ponownie."
already_state,light.turn_off,kuchnia_spiżarnia_fajna,Kuchenna spiżarnia Fajne światło,off,Wyłącz <device_name>,"Nie mogę wyłączyć, <device_name> jest już wyłączone."
not_available,vacuum.return_to_base,under_bed_cleaner,Odkurzacz pod łóżkiem,,Zwróć <device_name> do bazy,"Przepraszam, nie mogę znaleźć tego urządzenia w domu."
not_available,media_player.volume_down,sonos_living,Salon Sonosa,,Zmniejsz głośność <device_name>,"Przepraszam, nie mogę znaleźć tego urządzenia w domu."
not_available,light.turn_off,parter_gabinet_mqtt,Światło w gabinecie na dole,,Wyłącz <device_name>,"Przepraszam, nie mogę znaleźć tego urządzenia w domu."
already_state,climate.turn_on,johnson_glas,Johnson steruje inteligentnym termostatem GLAS,on,Włącz <device_name>,"Urządzenie jest już włączone, więc nie trzeba nic zmieniać."
already_state,climate.turn_off,gniazdo_learning,Uczący się termostat Nest,off,Wyłącz <device_name>,"Niestety, <device_name> jest już wyłączony, więc nie ma potrzeby nic zmieniać."
not_available,media_player.turn_on,sonos_sypialnia,Główna sypialnia Sonos,,Włącz <device_name>,"Przepraszam, nie mogę znaleźć tego urządzenia w domu."
not_available,media_player.media_play_pause,kuchnia,Kuchenny odtwarzacz multimedialny,,Zatrzymaj lub odtwórz <device_name>,"Przepraszam, nie mogę znaleźć urządzenia <device_name> w domu."
not_available,climate.turn_off,mysa_smart_termostat,Inteligentny termostat Mysa do elektrycznych grzejników listwowych,,Wyłącz <device_name>,"Przepraszam, nie mogę znaleźć tego urządzenia w domu."
not_available,garage_door.close_cover,schowek_na_rower,Drzwi do szopy na rowery,,Zamknij <device_name>,"Przepraszam, nie mogę znaleźć tego urządzenia w domu."
not_available,fan.increase_speed,salon,Wentylator do salonu,,Zwiększ prędkość <device_name>,"Przepraszam, nie mogę znaleźć <device_name> w domu."
not_available,vacuum.stop,under_bed_cleaner,Odkurzacz pod łóżkiem,,Zatrzymaj <device_name>,"Przepraszam, nie mogę znaleźć tego urządzenia w domu."
not_available,fan.decrease_speed,sufit_1,Wentylatory sufitowe,,Zmniejsz prędkość <device_name>,"Przepraszam, nie mogę znaleźć tego urządzenia w domu."
already_state,climate.turn_off,gniazdo_learning,Uczący się termostat Nest,off,wyłącz <device_name>,"Urządzenie już jest wyłączone, więc nie ma potrzeby żadnej zmiany."
not_available,light.turn_on,sypialnia_2,Światło w sypialni,,Włącz <device_name> i ustaw kolor na żółty,"Przepraszam, nie mogę znaleźć tego urządzenia w domu."
not_available,switch.toggle,study_room_lights,Przełącznik oświetlenia w pokoju do nauki,,Przełącz <device_name>,Nie mogę znaleźć tego urządzenia w domu.
not_available,media_player.volume_down,sonos_beam,Kompaktowy soundbar Sonos,,obniż głośność <device_name>,"Przepraszam, nie mogę znaleźć tego urządzenia w domu."
already_state,fan.turn_off,poddasze_1,Wentylator na poddaszu,off,wyłącz <device_name>,"Urządzenie <device_name> jest już wyłączone, więc nie muszę nic zmieniać."
already_state,lock.unlock,magazyn,Zamek do magazynu,unlocked,odblokuj <device_name>,"Urządzenie jest już odblokowane, więc nie muszę nic zmieniać."
not_available,light.toggle,salon_1,Lampy w salonie,,Przełącz <device_name>,Nie mogę znaleźć tego urządzenia w domu.
not_available,lock.lock,drzwi_kuchni,Zamek wejściowy do kuchni,,Zamknij <device_name>,"Przepraszam, nie mogę znaleźć tego urządzenia w domu."
not_available,blinds.open_cover,sala_teatralna,Rolety do kina domowego,,Otwórz <device_name>,"Przepraszam, nie mogę znaleźć tego urządzenia w domu."
already_state,garage_door.open_cover,rv,Brama garażowa do samochodu kempingowego,open,Otwórz pokrywę <device_name>,"Nie mogę, bo <device_name> jest już otwarty i nie wymaga żadnej zmiany."
not_available,garage_door.toggle,dwa_samochody,Drzwo garażowe podwójne,,Przełącz <device_name>,"Przepraszam, nie mogę znaleźć tego urządzenia w domu."
already_state,light.turn_off,kuchnia_podłoga_cool,Chłodne światło na podłodze w kuchni,off,wyłącz <device_name>,"Światło już jest wyłączone, więc nie ma potrzeby zmiany."
not_available,media_player.volume_up,study_room_audio_book_player,Studiuj odtwarzacz książek audio,,Zwiększ głośność <device_name>,"Przepraszam, nie mogę znaleźć tego urządzenia w domu."
already_state,lock.unlock,pokój_zabaw,Zamek do pokoju zabaw,unlocked,odblokuj <device_name>,"Urządzenie jest już odblokowane, więc nie muszę nic zmieniać."
not_available,switch.turn_off,oświetlenie_pokoju_pralni,Włącznik oświetlenia w pralni,,Wyłącz <device_name>,"Przepraszam, nie mogę znaleźć tego urządzenia w domu."
already_state,vacuum.return_to_base,salon_pokój_pokojowy,Odkurzacz w salonie,docked,"Proszę, <device_name> wróć do bazy","Odkurzacz już jest w stacji dokującej, więc nie muszę nic zmieniać."
already_state,vacuum.return_to_base,przód_hall_samsung,Robot zamiatający przedpokój,docked,"Proszę, aby <device_name> wrócił do bazy","Odkurzacz już jest w stacji dokującej, więc nie ma potrzeby żadnej akcji."
not_available,switch.toggle,oświetlenie_przódowe_bramy,Włącznik świateł w bramie przedniej,,Przełącz <device_name>,"Przepraszam, nie mogę znaleźć <device_name> w domu."
not_available,fan.toggle,poddasze_1,Wentylator na poddaszu,,Przełącz <device_name>,"Przepraszam, nie mogę znaleźć tego urządzenia w domu."
not_available,fan.increase_speed,kuchnia_2,Wentylator Kuchni,,Zwiększ prędkość <device_name>,"Przepraszam, nie mogę znaleźć tego urządzenia w domu."
not_available,garage_door.toggle,schowek_na_rower,Drzwi do szopy na rowery,,Przełącz <device_name>,"Przepraszam, nie mogę znaleźć tego urządzenia w domu."
already_state,lock.unlock,brama_pojazdu,Zamek bramy pojazdu,unlocked,odblokuj <device_name>,"Nie mogę tego zrobić, bo <device_name> jest już odblokowany."
not_available,vacuum.return_to_base,piwnica_deebot,Deebot z piwnicy,,"Proszę, aby <device_name> wrócił do bazy.","Przepraszam, nie mogę zlokalizować tego urządzenia w domu."
not_available,media_player.volume_down,salon_hi_fi_system,Salonowy dźwięk Hi-Fi,,Ścisz <device_name>,"Przepraszam, nie mogę znaleźć urządzenia <device_name> w domu."
not_available,garage_door.toggle,wpis_zwierzaka,Drzwi wejściowe dla zwierząt,,Przełącz <device_name>,"Przepraszam, nie mogę znaleźć tego urządzenia w domu."
not_available,blinds.close_cover,salon_pokój_duży,Rolety w dużym pokoju,,Zamknij <device_name>,"Przepraszam, nie mogę znaleźć tego urządzenia w domu."
already_state,media_player.turn_off,samsung_hw_q90r,Soundbar Samsunga,off,Wyłącz <device_name>,"To urządzenie jest już wyłączone, więc nie muszę nic zmieniać."
1 reason_type service_name device_name friendly_name desired_state phrase response
2 not_available lock.lock back_door Zamek tylnych drzwi Zablokuj <device_name>. Nie mogę znaleźć zamka tylnych drzwi do sterowania.
3 already_state light.turn_on hallway Światła w korytarzu on Włącz <device_name>. Światła w korytarzu są już włączone.
4 already_state switch.turn_off garage Gniazdko w garażu off Wyłącz <device_name>. Gniazdko w garażu jest już wyłączone.
5 already_state vacuum.start kitchen_xiaomi Odkurzacz Kuchenny cleaning Uruchom <device_name> Odkurzacz już sprząta, nie muszę nic zmieniać.
6 not_available climate.turn_off tado_smart Inteligentny termostat Tado Wyłącz <device_name> Przepraszam, nie mogę znaleźć tego urządzenia w domu.
7 not_available fan.decrease_speed sypialnia_prawa Wentylator w sypialni po prawej stronie Zmniejsz prędkość <device_name> Przepraszam, nie mogę znaleźć tego urządzenia w domu.
8 not_available lock.lock strych Zamek na poddaszu Zamknij <device_name> Przepraszam, nie mogę tego zrobić, ponieważ nie mogę znaleźć tego urządzenia w domu.
9 already_state light.turn_off kuchnia_sufit_cool Chłodne światło sufitowe w kuchni off Wyłącz <device_name> Światło już jest wyłączone, więc nie ma potrzeby zmiany.
10 already_state light.turn_on jadalnia_żyrandol Żyrandol do jadalni on Włącz <device_name> Światło już jest włączone, nie trzeba nic zmieniać.
11 already_state switch.turn_on spiżarnia_światła Przełącznik świateł w spiżarni on Włącz <device_name> Nie mogę, <device_name> jest już włączone.
12 not_available climate.turn_on emerson_sensi_touch Termostat Wi-Fi Emerson Sensi Touch Włącz <device_name> Przepraszam, nie mogę znaleźć tego urządzenia w domu.
13 not_available lock.unlock szopa_na_narzędzia Blokada szopy na narzędzia Odblokuj <device_name> Przepraszam, nie mogę znaleźć tego urządzenia w domu.
14 not_available fan.turn_on patio_na_świeżym_powietrzu Wentylator ogrodowy Włącz <device_name> Przepraszam, nie mogę znaleźć tego urządzenia w domu.
15 already_state light.turn_on patio Światło tarasowe on Włącz <device_name> na 30% jasności Światło już jest włączone, nie ma potrzeby zmiany jasności.
16 not_available blinds.toggle żłobek Rolety w żlobku Zamknij <device_name> Przepraszam, nie mogę znaleźć tego urządzenia w domu.
17 not_available media_player.turn_on google_nest_hub Google nest hub Włącz <device_name> Przepraszam, nie mogę znaleźć tego urządzenia w domu.
18 not_available climate.set_temperature tado_smart Inteligentny termostat Tado Ustaw temperaturę <device_name> na 28 stopni Nie mogę znaleźć <device_name> w domu, więc nie mogę zmienić temperatury.
19 not_available media_player.turn_off apple_tv_4k Urządzenie Apple do przesyłania strumieniowego Wyłącz <device_name> Przepraszam, nie mogę znaleźć tego urządzenia w domu.
20 not_available media_player.volume_up roku_living Pokój dzienny Roku Zwiększ głośność <device_name> Nie mogę tego zrobić, ponieważ nie znalazłem urządzenia <device_name> w domu.
21 already_state switch.turn_off oświetlenie_szafy Przełącznik oświetleniem szafy off Wyłącz <device_name> Urządzenie jest już wyłączone, więc nie muszę nic zmieniać.
22 not_available media_player.volume_up chrome_cast_sypialnia Chromecast w sypialni Zwiększ głośność <device_name> Przepraszam, nie mogę znaleźć urządzenia <device_name> w domu.
23 not_available media_player.turn_on telewizor_samsung Telewizor w salonie Włącz <device_name> Przepraszam, nie mogę znaleźć tego urządzenia w domu.
24 not_available vacuum.return_to_base under_bed_cleaner Odkurzacz pod łóżkiem Proszę <device_name> wrócić do bazy. Przepraszam, nie mogę znaleźć <device_name> w domu.
25 not_available climate.turn_off johnson_glas Johnson steruje inteligentnym termostatem GLAS Wyłącz <device_name> Przepraszam, nie mogę znaleźć tego urządzenia w domu.
26 already_state garage_door.open_cover wózek_golfowy Garaż wózków golfowych open otwórz pokrywę <device_name> Nie mogę tego zrobić – pokrywa już jest otwarta, więc nie ma potrzeby żadnej zmiany.
27 not_available switch.toggle master_bedroom_lights Główny włącznik świateł w sypialni Przełącz <device_name> Przepraszam, nie mogę znaleźć tego urządzenia w domu.
28 not_available garage_door.open_cover jeden_samochód Pojedyncze drzwi garażowe Otwórz pokrywę <device_name> Przepraszam, nie mogę znaleźć tego urządzenia w domu.
29 not_available fan.turn_on patio Wentylator tarasowy Włącz <device_name> Przepraszam, nie mogę znaleźć tego urządzenia w domu.
30 not_available fan.decrease_speed jadalnia Wentylator w jadalni Zmniejsz prędkość <device_name> Przepraszam, nie mogę znaleźć tego urządzenia w domu.
31 not_available switch.toggle oświetlenie_teatra_domowego Sterowanie oświetleniem kina domowego Przełącz <device_name> Przepraszam, nie mogę znaleźć <device_name> w domu.
32 already_state climate.turn_on sinope_smart Inteligentny termostat Sinopé on Włącz <device_name> Urządzenie już jest włączone, nie ma potrzeby zmiany.
33 not_available light.toggle kuchnia_1 Główne światło kuchenne Przełącz <device_name> Przepraszam, nie mogę znaleźć urządzenia <device_name> w Twoim domu.
34 not_available fan.decrease_speed badanie_1 Miłośnik nauki Zmniejsz prędkość <device_name> Przepraszam, nie mogę znaleźć tego urządzenia w domu.
35 already_state climate.turn_off ecobee_smart Inteligentny termostat Ecobee off Wyłącz <device_name> Nie mogę, ponieważ <device_name> jest już wyłączony i nie wymaga zmiany.
36 not_available vacuum.return_to_base kitchen_xiaomi Odkurzacz Kuchenny Zwróć <device_name> do bazy Przepraszam, nie mogę znaleźć tego urządzenia w domu.
37 not_available fan.increase_speed szopa Wentylator szopy Zwiększ prędkość <device_name> Przepraszam, nie mogę znaleźć tego urządzenia w domu.
38 not_available lock.lock przódowa_brama Zamek bramy przedniej Zamknij <device_name> Przepraszam, nie mogę znaleźć tego urządzenia w domu.
39 not_available blinds.toggle somfy_salon Rolety w salonie Przełącz <device_name> Przepraszam, nie mogę znaleźć tego urządzenia w domu.
40 not_available vacuum.start under_bed_cleaner Odkurzacz pod łóżkiem Uruchom <device_name> Przepraszam, nie mogę znaleźć tego urządzenia w domu.
41 already_state climate.turn_on mysa_smart_termostat Inteligentny termostat Mysa do elektrycznych grzejników listwowych on Włącz <device_name> Już jest włączone, nie muszę nic zmieniać.
42 not_available media_player.volume_down projektor_sony_4k Projektor do kina domowego Sony Obniż głośność <device_name> Przepraszam, nie mogę znaleźć urządzenia <device_name> w domu.
43 not_available blinds.open_cover okno_biura Żaluzje w biurze Otwórz <device_name> Przepraszam, nie mogę znaleźć tego urządzenia w domu.
44 not_available switch.turn_off łazienka_wentylator Przełącznik wentylatora łazienkowego Wyłącz <device_name> Przepraszam, nie mogę znaleźć tego urządzenia w domu.
45 not_available fan.toggle poddasze_3 Wentylator na poddaszu Przełącz <device_name> Niestety nie mogę zlokalizować tego urządzenia w domu.
46 not_available media_player.volume_down biuro Biurowy odtwarzacz multimedialny Obniż głośność <device_name> Przepraszam, nie mogę znaleźć urządzenia <device_name> w domu.
47 not_available switch.toggle światła_chodnika Przełącznik świateł chodnikowych Przełącz <device_name> Przepraszam, nie mogę znaleźć tego urządzenia w domu.
48 not_available lock.unlock jadalnia Zamek do jadalni Odblokuj <device_name> Nie mogę znaleźć <device_name> w domu.
49 not_available fan.toggle sypialnia_prawa Wentylator w sypialni po prawej stronie Przełącz <device_name> Przepraszam, nie mogę znaleźć tego urządzenia w domu.
50 not_available climate.set_temperature termostat_lux_geo Termostat Lux Geo Wi-Fi Ustaw temperaturę <device_name> na 28°C Przepraszam, nie mogę znaleźć <device_name> w Twoim domu.
51 not_available fan.turn_off patio_na_świeżym_powietrzu Wentylator ogrodowy Wyłącz <device_name> Przepraszam, nie mogę znaleźć tego urządzenia w domu.
52 not_available garage_door.toggle wasztat Warsztatowa brama garażowa Przełącz <device_name> Przepraszam, nie mogę znaleźć tego urządzenia w domu.
53 not_available fan.increase_speed łazienka Wentylator w łazience Zwiększ prędkość <device_name> Przepraszam, nie mogę znaleźć tego urządzenia w domu.
54 already_state switch.turn_off jard_floodlights Przełącznik reflektorów ogrodowych off Wyłącz <device_name> Urządzenie już jest wyłączone, nie muszę nic zmieniać.
55 not_available fan.decrease_speed sufit_1 Wentylatory sufitowe Obniż prędkość <device_name> Przepraszam, nie mogę znaleźć <device_name> w domu.
56 not_available garage_door.toggle główny Główna brama garażowa Przełącz <device_name> Przepraszam, nie mogę znaleźć <device_name> w twoim domu.
57 already_state garage_door.open_cover rv_storage Drzwi do przechowywania samochodu kempingowego open Otwórz pokrywę <device_name> Brama jest już otwarta, więc nie trzeba nic zmieniać.
58 not_available lock.unlock magazyn Zamek do magazynu odblokuj <device_name> Przepraszam, nie mogę znaleźć tego urządzenia w domu.
59 not_available fan.increase_speed biuro Wentylator w biurze Zwiększ prędkość <device_name> Przepraszam, nie mogę znaleźć <device_name> w domu.
60 not_available blinds.stop_cover łazienka_1 Pierwsze rolety łazienkowe Zatrzymaj <device_name> Przepraszam, nie mogę znaleźć tego urządzenia w domu.
61 not_available switch.turn_off światła_słoneczne Przełącznik świateł w pomieszczeniu słonecznym Wyłącz <device_name> Przepraszam, nie mogę znaleźć tego urządzenia w domu.
62 already_state switch.turn_on oświetlenie_patia Przełącznik oświetlenia patio on Włącz <device_name> Urządzenie jest już włączone, nie trzeba nic zmieniać.
63 not_available media_player.volume_up echo_dot Kuchenna Echo dot Zwiększ głośność <device_name> Przepraszam, nie mogę znaleźć <device_name> w domu.
64 already_state climate.turn_on tado_smart Inteligentny termostat Tado on Włącz <device_name> Urządzenie jest już włączone, nie muszę nic zmieniać.
65 already_state climate.turn_off johnson_glas Johnson steruje inteligentnym termostatem GLAS off Wyłącz <device_name> Urządzenie już jest wyłączone, więc nie muszę nic zmieniać.
66 not_available switch.toggle oświetlenie_przódowe_bramy Włącznik świateł w bramie przedniej Przełącz <device_name> Przepraszam, nie mogę znaleźć tego urządzenia w domu.
67 not_available light.toggle przód_podwórko_ge Przednie boczne światło ogrodowe Przełącz <device_name> Przepraszam, nie mogę znaleźć tego urządzenia w domu.
68 not_available lock.lock sypialnia_3 Zamek w trzeciej sypialni Zamknij <device_name> Przepraszam, nie mogę znaleźć tego urządzenia w domu.
69 already_state lock.unlock drzwi_na_patio Zamek Drzwi przesuwne na taras unlocked odblokuj <device_name> Ten <device_name> jest już odblokowany, więc nie ma potrzeby zmiany.
70 already_state light.turn_off jadalnia Światło w jadalni off Wyłącz <device_name> Światło już jest wyłączone, nie muszę nic zmieniać.
71 not_available garage_door.open_cover wiata_samochodowa Drzwi do wiaty Otwórz pokrywę <device_name> Przepraszam, nie mogę znaleźć tego urządzenia w domu.
72 already_state garage_door.close_cover dwa_samochody Drzwo garażowe podwójne closed Zamknij pokrywę <device_name> Przykro mi, ale <device_name> jest już zamknięta, więc nie ma potrzeby podejmować żadnej akcji.
73 not_available garage_door.stop_cover szopa_2 Drugie drzwi do szopy Zatrzymaj <device_name> Przepraszam, nie mogę znaleźć tego urządzenia w domu.
74 not_available blinds.stop_cover korytarz_1 Pierwsze rolety w przedpokoju Zatrzymaj <device_name> Przepraszam, nie mogę znaleźć tego urządzenia w domu.
75 not_available fan.turn_on kuchnia Wenty w kuchni Włącz <device_name> Przepraszam, nie mogę znaleźć tego urządzenia w domu.
76 already_state climate.turn_on termostat_lux_geo Termostat Lux Geo Wi-Fi on Włącz <device_name> Urządzenie już jest włączone, nie ma potrzeby zmiany.
77 not_available blinds.stop_cover solarium Rolety przeciwsłoneczne Zatrzymaj <device_name> Przepraszam, nie mogę znaleźć tego urządzenia w domu.
78 not_available media_player.volume_up biuro Biurowy odtwarzacz multimedialny Zwiększ głośność <device_name> Przepraszam, nie mogę znaleźć urządzenia <device_name> w domu.
79 not_available lock.lock pokój_muzyczny Zamek do pokoju muzycznego Zamknij <device_name> Przepraszam, nie mogę znaleźć tego urządzenia w domu.
80 not_available lock.unlock tylne_drzwi Zamek wjazdowy na podwórko odblokuj <device_name> Przepraszam, nie mogę znaleźć tego urządzenia w domu.
81 already_state switch.turn_off oświetlenie_ogrodowe Sterowanie oświetleniem ogrodu off Wyłącz <device_name> Nie mogę, bo <device_name> jest już wyłączony.
82 already_state switch.turn_on oświetlenie_teatra_domowego Sterowanie oświetleniem kina domowego on Włącz <device_name> Przepraszam, <device_name> już jest włączony, więc nie muszę nic zmieniać.
83 not_available garage_door.stop_cover główny Główna brama garażowa Zatrzymaj <device_name> Przepraszam, nie mogę znaleźć tego urządzenia w domu.
84 already_state vacuum.start under_bed_cleaner Odkurzacz pod łóżkiem cleaning Uruchom <device_name> Odkurzacz już sprząta, nie ma potrzeby go uruchamiać ponownie.
85 already_state light.turn_off kuchnia_spiżarnia_fajna Kuchenna spiżarnia Fajne światło off Wyłącz <device_name> Nie mogę wyłączyć, <device_name> jest już wyłączone.
86 not_available vacuum.return_to_base under_bed_cleaner Odkurzacz pod łóżkiem Zwróć <device_name> do bazy Przepraszam, nie mogę znaleźć tego urządzenia w domu.
87 not_available media_player.volume_down sonos_living Salon Sonosa Zmniejsz głośność <device_name> Przepraszam, nie mogę znaleźć tego urządzenia w domu.
88 not_available light.turn_off parter_gabinet_mqtt Światło w gabinecie na dole Wyłącz <device_name> Przepraszam, nie mogę znaleźć tego urządzenia w domu.
89 already_state climate.turn_on johnson_glas Johnson steruje inteligentnym termostatem GLAS on Włącz <device_name> Urządzenie jest już włączone, więc nie trzeba nic zmieniać.
90 already_state climate.turn_off gniazdo_learning Uczący się termostat Nest off Wyłącz <device_name> Niestety, <device_name> jest już wyłączony, więc nie ma potrzeby nic zmieniać.
91 not_available media_player.turn_on sonos_sypialnia Główna sypialnia Sonos Włącz <device_name> Przepraszam, nie mogę znaleźć tego urządzenia w domu.
92 not_available media_player.media_play_pause kuchnia Kuchenny odtwarzacz multimedialny Zatrzymaj lub odtwórz <device_name> Przepraszam, nie mogę znaleźć urządzenia <device_name> w domu.
93 not_available climate.turn_off mysa_smart_termostat Inteligentny termostat Mysa do elektrycznych grzejników listwowych Wyłącz <device_name> Przepraszam, nie mogę znaleźć tego urządzenia w domu.
94 not_available garage_door.close_cover schowek_na_rower Drzwi do szopy na rowery Zamknij <device_name> Przepraszam, nie mogę znaleźć tego urządzenia w domu.
95 not_available fan.increase_speed salon Wentylator do salonu Zwiększ prędkość <device_name> Przepraszam, nie mogę znaleźć <device_name> w domu.
96 not_available vacuum.stop under_bed_cleaner Odkurzacz pod łóżkiem Zatrzymaj <device_name> Przepraszam, nie mogę znaleźć tego urządzenia w domu.
97 not_available fan.decrease_speed sufit_1 Wentylatory sufitowe Zmniejsz prędkość <device_name> Przepraszam, nie mogę znaleźć tego urządzenia w domu.
98 already_state climate.turn_off gniazdo_learning Uczący się termostat Nest off wyłącz <device_name> Urządzenie już jest wyłączone, więc nie ma potrzeby żadnej zmiany.
99 not_available light.turn_on sypialnia_2 Światło w sypialni Włącz <device_name> i ustaw kolor na żółty Przepraszam, nie mogę znaleźć tego urządzenia w domu.
100 not_available switch.toggle study_room_lights Przełącznik oświetlenia w pokoju do nauki Przełącz <device_name> Nie mogę znaleźć tego urządzenia w domu.
101 not_available media_player.volume_down sonos_beam Kompaktowy soundbar Sonos obniż głośność <device_name> Przepraszam, nie mogę znaleźć tego urządzenia w domu.
102 already_state fan.turn_off poddasze_1 Wentylator na poddaszu off wyłącz <device_name> Urządzenie <device_name> jest już wyłączone, więc nie muszę nic zmieniać.
103 already_state lock.unlock magazyn Zamek do magazynu unlocked odblokuj <device_name> Urządzenie jest już odblokowane, więc nie muszę nic zmieniać.
104 not_available light.toggle salon_1 Lampy w salonie Przełącz <device_name> Nie mogę znaleźć tego urządzenia w domu.
105 not_available lock.lock drzwi_kuchni Zamek wejściowy do kuchni Zamknij <device_name> Przepraszam, nie mogę znaleźć tego urządzenia w domu.
106 not_available blinds.open_cover sala_teatralna Rolety do kina domowego Otwórz <device_name> Przepraszam, nie mogę znaleźć tego urządzenia w domu.
107 already_state garage_door.open_cover rv Brama garażowa do samochodu kempingowego open Otwórz pokrywę <device_name> Nie mogę, bo <device_name> jest już otwarty i nie wymaga żadnej zmiany.
108 not_available garage_door.toggle dwa_samochody Drzwo garażowe podwójne Przełącz <device_name> Przepraszam, nie mogę znaleźć tego urządzenia w domu.
109 already_state light.turn_off kuchnia_podłoga_cool Chłodne światło na podłodze w kuchni off wyłącz <device_name> Światło już jest wyłączone, więc nie ma potrzeby zmiany.
110 not_available media_player.volume_up study_room_audio_book_player Studiuj odtwarzacz książek audio Zwiększ głośność <device_name> Przepraszam, nie mogę znaleźć tego urządzenia w domu.
111 already_state lock.unlock pokój_zabaw Zamek do pokoju zabaw unlocked odblokuj <device_name> Urządzenie jest już odblokowane, więc nie muszę nic zmieniać.
112 not_available switch.turn_off oświetlenie_pokoju_pralni Włącznik oświetlenia w pralni Wyłącz <device_name> Przepraszam, nie mogę znaleźć tego urządzenia w domu.
113 already_state vacuum.return_to_base salon_pokój_pokojowy Odkurzacz w salonie docked Proszę, <device_name> wróć do bazy Odkurzacz już jest w stacji dokującej, więc nie muszę nic zmieniać.
114 already_state vacuum.return_to_base przód_hall_samsung Robot zamiatający przedpokój docked Proszę, aby <device_name> wrócił do bazy Odkurzacz już jest w stacji dokującej, więc nie ma potrzeby żadnej akcji.
115 not_available switch.toggle oświetlenie_przódowe_bramy Włącznik świateł w bramie przedniej Przełącz <device_name> Przepraszam, nie mogę znaleźć <device_name> w domu.
116 not_available fan.toggle poddasze_1 Wentylator na poddaszu Przełącz <device_name> Przepraszam, nie mogę znaleźć tego urządzenia w domu.
117 not_available fan.increase_speed kuchnia_2 Wentylator Kuchni Zwiększ prędkość <device_name> Przepraszam, nie mogę znaleźć tego urządzenia w domu.
118 not_available garage_door.toggle schowek_na_rower Drzwi do szopy na rowery Przełącz <device_name> Przepraszam, nie mogę znaleźć tego urządzenia w domu.
119 already_state lock.unlock brama_pojazdu Zamek bramy pojazdu unlocked odblokuj <device_name> Nie mogę tego zrobić, bo <device_name> jest już odblokowany.
120 not_available vacuum.return_to_base piwnica_deebot Deebot z piwnicy Proszę, aby <device_name> wrócił do bazy. Przepraszam, nie mogę zlokalizować tego urządzenia w domu.
121 not_available media_player.volume_down salon_hi_fi_system Salonowy dźwięk Hi-Fi Ścisz <device_name> Przepraszam, nie mogę znaleźć urządzenia <device_name> w domu.
122 not_available garage_door.toggle wpis_zwierzaka Drzwi wejściowe dla zwierząt Przełącz <device_name> Przepraszam, nie mogę znaleźć tego urządzenia w domu.
123 not_available blinds.close_cover salon_pokój_duży Rolety w dużym pokoju Zamknij <device_name> Przepraszam, nie mogę znaleźć tego urządzenia w domu.
124 already_state media_player.turn_off samsung_hw_q90r Soundbar Samsunga off Wyłącz <device_name> To urządzenie jest już wyłączone, więc nie muszę nic zmieniać.

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,124 @@
service_name,correct_device_name,correct_friendly_name,bad_device_name,phrase,error_result,retry_prompt
light.turn_on,light.living_room_lamp,Lámpara de la sala,light.livng_room_lamp,"Por favor enciende la <device_name>.","Error: Entidad light.livng_room_lamp no encontrada.","Intentaré con la lámpara de la sala."
climate.set_temperature,climate.hallway,Termostato del pasillo,climate.halway,"Configura el <device_name> a <temp_f> grados.","Error: Entidad climate.halway no encontrada.","Probando de nuevo con el termostato del pasillo."
fan.turn_off,fan.office,Ventilador de la oficina,fan.offce,"Apaga el <device_name>.","Error: Entidad fan.offce no encontrada.","Volveré a intentar con el ventilador de la oficina."
switch.turn_off,switch.luces_sala_de_estudio,Interruptor de luces de sala de estudio,switch.luces_estudio_sala,"Apaga las luces de la sala de estudio, por favor.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.luces_estudio_sala', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entendido, intentaré apagar el interruptor de luces de la sala de estudio."
switch.turn_on,switch.luces_taller,Interruptor de luces de taller,switch.luces_taller_extra,"Enciende el interruptor de luces del taller, por favor.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.luces_taller_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","De acuerdo, lo intentaré con el interruptor de luces de taller."
fan.toggle,fan.dormitorio_derecho,Ventilador del dormitorio del lado derecho,fan.dormitorio_izquierdo,¿Puedes alternar el ventilador del dormitorio del lado derecho?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.dormitorio_izquierdo', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Vale, ahora lo intento con el ventilador del dormitorio del lado derecho."
fan.decrease_speed,fan.pasillo,ventilador de pasillo,fan.pasilloo,"Disminuye la velocidad del ventilador de pasillo, por favor.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.pasilloo', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entendido, lo intentaré con el ventilador de pasillo."
switch.toggle,switch.luces_escalera,Interruptor de luces de escalera,switch.luces_escaler,¿Puedes encender la luz de la escalera?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.luces_escaler', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entendido, lo intentaré con el dispositivo correcto."
media_player.volume_down,media_player.altavoces_exteriores_de_patio,Altavoces exteriores para patio,media_player.altavoces_exteriores_del_patio,"Baja el volumen de los altavoces exteriores para el patio, por favor.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.altavoces_exteriores_del_patio', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entendido, ahora lo intentaré con Altavoces exteriores para patio."
fan.increase_speed,fan.habitación_niños,ventilador de la habitación de los niños,fan.habitaciónniños,"Sube la velocidad del ventilador de la habitación de los niños, por favor.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.habitaciónniños', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entendido, lo intentaré con el ventilador de la habitación de los niños."
fan.increase_speed,fan.oficina,ventilador de oficina,fan.oficinas,Aumenta la velocidad del ventilador de oficina,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.oficinas', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entendido, intentaré con el ventilador de oficina."
garage_door.toggle,garage_door.principal_1,Puerta de garaje principal,garage_door.principal_1_main,¿Puedes abrir la puerta de garaje principal?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.principal_1_main', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Vale, lo intento con la puerta de garaje principal."
media_player.turn_on,media_player.chrome_cast_dormitorio,Dormitorio Chromecast,media_player.chromecast_dormit,"Por favor, enciende el Chromecast del dormitorio.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.chromecast_dormit', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entendido, intentaré con el dispositivo correcto."
media_player.volume_down,media_player.onkyo_tx_sr,Receptor de cine en casa Onkyo,media_player.onkyo_tx_sr_receptor,Baja el volumen del receptor de cine en casa Onkyo.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.onkyo_tx_sr_receptor', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entendido, intentaré con el receptor Onkyo correcto."
media_player.media_play_pause,media_player.xbox_den,Consola Xbox,media_player.xbox_den_consola,¿Puedes pausar la reproducción en la consola Xbox?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.xbox_den_consola', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entendido, intentaré con el dispositivo correcto."
light.turn_off,light.kit_hogar_vivero_frontal,Luz delantera del cuarto de niños,light.kit_hogar_vivero_frontral,"Apaga la luz delantera del cuarto de niños, por favor.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.kit_hogar_vivero_frontral', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entendido, lo intentaré con la luz correcta."
vacuum.stop,vacuum.pasillo_neato,Limpiador de caminos de pasillo,vacuum.pasill_neato,"Por favor, detén el limpiador de caminos de pasillo.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.pasill_neato', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","De acuerdo, lo intento con el dispositivo correcto."
fan.turn_off,fan.baño,ventilador de baño,fan.baño_ext,"Apaga el ventilador del baño, por favor.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.baño_ext', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","De acuerdo, lo intentaré con el ventilador de baño."
switch.turn_on,switch.luces_cuarto_de_juegos,Interruptor de luces de sala de juegos,switch.luces_cuarto_juego,"Enciende las luces del cuarto de juegos, por favor.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.luces_cuarto_juego', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","De acuerdo, lo intentaré con el Interruptor de luces de sala de juegos."
switch.turn_on,switch.luces_sauna,Interruptor de luces de sauna,switch.luces_saun,"Por favor, enciende el interruptor de luces del sauna.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.luces_saun', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Voy a intentar con el dispositivo correcto, switch.luces_sauna."
vacuum.return_to_base,vacuum.salón_roomba,aspiradora de salón,vacuum.salón_roboma,"Por favor, lleva la aspiradora de salón a su base.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.salón_roboma', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entendido, intentaré con vacuum.salón_roomba."
lock.unlock,lock.puerta_piscina,Puerta de piscina,lock.puerta_piscinax,"Por favor, desbloquea la puerta de la piscina","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.puerta_piscinax', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entendido, intentaré con la cerradura correcta (lock.puerta_piscina)."
light.turn_on,light.abajo_patio_mqtt,Luz del patio de abajo,light.patio_abajo_mqtt,"Por favor, enciende la luz del patio de abajo.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.patio_abajo_mqtt', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","De acuerdo, intentaré con la luz del patio de abajo."
fan.decrease_speed,fan.dison_pure,Ventilador puro Dyson,fan.dyson_pure,Disminuye la velocidad del ventilador puro Dyson,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.dyson_pure', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entendido, intentaré con el dispositivo correcto (fan.dison_pure)."
media_player.media_play_pause,media_player.nintendo_switch,interruptor de nintendo,media_player.nintedo_sw,¿Puedes pausar la reproducción en el interruptor de Nintendo?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.nintedo_sw', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entendido, intentaré con el dispositivo correcto."
garage_door.toggle,garage_door.equipo_cesped,Puerta para equipo de césped,garage_door.cesped_equipo,¿Puedes abrir la puerta para el equipo de césped?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.cesped_equipo', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entendido, intentaré con la puerta para equipo de césped."
switch.turn_on,switch.luces_del_comedor,Interruptor de luces del comedor,switch.luces_del_comedor_ext,Enciende las luces del comedor,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.luces_del_comedor_ext', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entendido, intentaré con el interruptor de luces del comedor."
fan.decrease_speed,fan.dison_pure,Ventilador puro Dyson,fan.dison_pur,Baja la velocidad del ventilador puro Dyson.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.dison_pur', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","De acuerdo, lo intentaré con el Ventilador puro Dyson."
fan.decrease_speed,fan.patio,ventilador de patio,fan.patio_ext,¿Puedes reducir la velocidad del ventilador de patio?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.patio_ext', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entendido, ahora lo intentaré con el ventilador de patio."
vacuum.start,vacuum.robot_esquina_izquierda,Succionador de suciedad de la esquina izquierda,vacuum.robot_esquina_izqierda,"Por favor, inicia la limpieza de la esquina izquierda.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.robot_esquina_izqierda', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","De acuerdo, lo intentaré con el Succionador de suciedad de la esquina izquierda."
light.toggle,light.cubierta_izquierda,Luz de cubierta izquierda,light.cubierta_izq_extra,"Enciende la luz de cubierta izquierda, por favor.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.cubierta_izq_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","De acuerdo, lo intento con la Luz de cubierta izquierda."
fan.increase_speed,fan.comedor,Ventilador del comedor,fan.comedorn,Aumenta la velocidad del ventilador del comedor.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.comedorn', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","De acuerdo, lo intentaré con el ventilador del comedor."
media_player.volume_up,media_player.consola_sala_de_juegos,Consola de sala de juegos,media_player.consola_sala_de_jueg,Sube el volumen de la consola de sala de juegos,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.consola_sala_de_jueg', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entendido, intentaré con la consola de sala de juegos."
media_player.turn_off,media_player.ipad_cocina,iPad de cocina,media_player.ipad_cocinax,"Apaga el iPad de la cocina, por favor.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.ipad_cocinax', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","De acuerdo, lo intentaré con el iPad de cocina."
lock.unlock,lock.puerta_frontal_1,Cerradura de entrada principal,lock.puerta_frontal_1a,¿Puedes desbloquear la puerta de entrada principal?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.puerta_frontal_1a', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entendido, intentaré con la cerradura de entrada principal."
fan.decrease_speed,fan.cuarto_de_huéspedes,ventilador de la habitación de invitados,fan.cuarto_de_huéspedes_extra,Baja la velocidad del ventilador de la habitación de invitados.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.cuarto_de_huéspedes_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entendido, lo intentaré con el ventilador de la habitación de invitados."
blinds.open_cover,blinds.cochera,Persianas de garaje,blinds.cocherra,"Por favor, abre las persianas del garaje.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.cocherra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","De acuerdo, ahora intentaré con las persianas de garaje."
media_player.volume_down,media_player.nintendo_switch,interruptor de nintendo,media_player.nintendo_sw,Baja el volumen del interruptor de Nintendo,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.nintendo_sw', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entendido, intentaré con el interruptor de Nintendo"
light.turn_off,light.espalda_comedor_calentito,Luz cálida del comedor trasero,light.comedor_espalda_calentito,¿Puedes apagar la luz del comedor trasero?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.comedor_espalda_calentito', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Lo intentaré de nuevo con la Luz cálida del comedor trasero.
fan.turn_off,fan.isla_de_cocina,ventilador de cocina de refrigeración,fan.isla_cocina,"Apaga el ventilador de la cocina, por favor.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.isla_cocina', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","De acuerdo, intentaré apagar el ventilador de cocina de refrigeración."
light.turn_off,light.patio_1,Luz de patio exterior,light.patio_one,"Apaga la luz del patio exterior, por favor.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.patio_one', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","De acuerdo, intentaré con la Luz de patio exterior."
vacuum.stop,vacuum.patio_puerta_vac,Limpiador de puertas de patio,vacuum.patio_puerta_vac_extra,¿Puedes detener el limpiador de puertas de patio?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.patio_puerta_vac_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entendido, intentaré con el dispositivo correcto."
light.turn_off,light.front_library_ge,Luz frontal de la biblioteca,light.front_librar_ge,"Apaga la luz frontal de la biblioteca, por favor.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.front_librar_ge', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entendido, ahora intentaré con la Luz frontal de la biblioteca."
switch.turn_on,switch.luces_cobertizo_para_botes,Interruptor de luces del cobertizo para botes,switch.luces_cobertizo_botes_para,"Enciende las luces del cobertizo para botes, por favor.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.luces_cobertizo_botes_para', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entendido, intentaré con el dispositivo correcto."
vacuum.return_to_base,vacuum.arriba_dyson,Eliminador de polvo de arriba,vacuum.arriba_dy,"¿Puedes hacer que el Eliminador de polvo de arriba vuelva a su base, por favor?","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.arriba_dy', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entendido, intentaré con el dispositivo correcto."
light.turn_off,light.abajo_zen_homekit,Luz Zen de abajo,light.zen_abajo_homekit,"Por favor, apaga la luz Zen de abajo.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.zen_abajo_homekit', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","De acuerdo, lo intentaré con la Luz Zen de abajo."
fan.decrease_speed,fan.porche,ventilador de techo para porche,fan.porche_izquierda,"Baja la velocidad del ventilador del porche, por favor.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.porche_izquierda', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entendido, intentaré con el ventilador de techo para porche."
light.turn_off,light.back_entryway_lifx,Luz de entrada trasera,light.back_entryway_lifx_extra,"Apaga la luz de la entrada trasera, por favor.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.back_entryway_lifx_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","De acuerdo, lo intento con la Luz de entrada trasera."
lock.lock,lock.perrera,Cerradura de perrera para animales,lock.perrera_ext,"Por favor, bloquea la cerradura de la perrera.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.perrera_ext', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","De acuerdo, intentaré bloquear la cerradura de perrera."
switch.turn_off,switch.luces_pasillo,Interruptor de luces del pasillo,switch.luces_pasill,"Apaga las luces del pasillo, por favor.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.luces_pasill', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","De acuerdo, lo intentaré con el interruptor de luces del pasillo."
light.toggle,light.abajo_zen_homekit,Luz Zen de abajo,light.zen_abajo_homekit,¿Puedes alternar la Luz Zen de abajo?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.zen_abajo_homekit', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","De acuerdo, lo intentaré con la Luz Zen de abajo."
switch.turn_on,switch.abridor_de_puerta_de_garage,Interruptor de apertura de puerta de garaje,switch.abridor_de_puerta_garaje_plus,"Por favor, enciende el interruptor de apertura de la puerta del garaje.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.abridor_de_puerta_garaje_plus', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","De acuerdo, lo intentaré con el interruptor de apertura de puerta de garaje."
light.turn_on,light.back_balcony_lifx,Luz trasera del balcón,light.back_balcony_lifx_aux,"Enciende la luz trasera del balcón, por favor.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.back_balcony_lifx_aux', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entendido, intentaré con la luz trasera del balcón."
lock.unlock,lock.ascensor,Cerradura de ascensor privado,lock.ascenor,"Por favor, desbloquea la cerradura del ascensor privado.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.ascenor', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","De acuerdo, intentaré con la cerradura correcta."
switch.turn_off,switch.luces_cobertizo_para_botes,Interruptor de luces del cobertizo para botes,switch.luces_cobertizo_botes,Apaga las luces del cobertizo para los botes,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.luces_cobertizo_botes', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entendido, intentaré apagar el interruptor de luces del cobertizo para botes."
light.turn_on,light.estante_cocina_fresco,Estante De Cocina Luz Fría,light.estante_cocina_fresco_1,¿Puedes encender la luz del estante de la cocina fresca?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.estante_cocina_fresco_1', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entendido, intentaré con el dispositivo correcto."
vacuum.stop,vacuum.automatizador_doméstico_inteligente,Robot de limpieza del hogar inteligente,vacuum.automatizador_doméstico_inteli,"Por favor, detén el robot de limpieza del hogar inteligente.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.automatizador_doméstico_inteli', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","De acuerdo, lo intentaré con el dispositivo correcto."
media_player.media_play_pause,media_player.altavoz_pared_pasillo,Altavoz de pared para pasillo,media_player.altavoz_pasillo_pared,Reproduce o pausa la música en el altavoz de pared para el pasillo.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.altavoz_pasillo_pared', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","De acuerdo, ahora usaré el altavoz de pared para pasillo."
light.turn_on,light.front_observatorio_ge,Luz frontal del observatorio,light.front_observatorio_ger,Enciende la luz frontal del observatorio al 91% de brillo en blanco.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.front_observatorio_ger', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entendido, intentaré con el dispositivo correcto."
lock.unlock,lock.arma_segura,Cerradura de seguridad para armas,lock.segura_arma,¿Puedes desbloquear la cerradura de seguridad para armas?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.segura_arma', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entendido, lo intentaré con lock.arma_segura."
fan.increase_speed,fan.balcón,ventilador de balcón,fan.balcónx,"Sube la velocidad del ventilador de balcón, por favor.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.balcónx', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entendido, intentaré con el ventilador de balcón."
vacuum.return_to_base,vacuum.pasillo_neato,Limpiador de caminos de pasillo,vacuum.pasillo_neat,"Por favor, haz que el Limpiador de caminos de pasillo regrese a su base.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.pasillo_neat', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entendido, intentaré con vacuum.pasillo_neato."
media_player.media_play_pause,media_player.proyector_exterior_patio_trasero,Proyector de patio trasero,media_player.proyector_exterior_patio,Pausa o reproduce el proyector del patio trasero,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.proyector_exterior_patio', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entendido, intentaré con el dispositivo correcto: media_player.proyector_exterior_patio_trasero."
lock.lock,lock.bodega,Cerradura para bodega,lock.bodega_primaria,"Por favor, bloquea la cerradura de la bodega.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.bodega_primaria', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","De acuerdo, lo intentaré con la cerradura para bodega."
garage_door.stop_cover,garage_door.cochera,Puerta de garaje,garage_door.cochera,"Por favor, detén la puerta de la cochera.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.cochera', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Lo intentaré de nuevo con la puerta de garaje correcta.
lock.lock,lock.puerta_trasera,Cerradura de entrada al patio trasero,lock.puerta_traserra,Cierra la cerradura de la entrada al patio trasero.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.puerta_traserra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","De acuerdo, intentaré con la cerradura de la puerta trasera."
switch.toggle,switch.luces_entrada,Control de iluminación de entrada,switch.luces_entradax,"Alterna la luz de la entrada, por favor.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.luces_entradax', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entendido, ahora lo intentaré con el dispositivo correcto: switch.luces_entrada."
blinds.open_cover,blinds.ventana_trasera,Persianas de ventana trasera,blinds.ventana_trasera_extra,¿Puedes abrir la persiana de la ventana trasera?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.ventana_trasera_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","De acuerdo, lo intentaré con Persianas de ventana trasera."
media_player.turn_off,media_player.recamara_principal,Medios del dormitorio principal,media_player.recamara_principal_extra,"Apaga los medios del dormitorio principal, por favor.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.recamara_principal_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entendido, intentaré apagar los Medios del dormitorio principal."
switch.turn_on,switch.luces_traseras_de_patio,Interruptor de luces del patio trasero,switch.luces_traseras_del_patio,¿Podrías encender las luces del patio trasero?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.luces_traseras_del_patio', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","De acuerdo, lo intentaré con el interruptor de luces del patio trasero."
blinds.close_cover,blinds.pasillo,Persianas de pasillo,blinds.pasill,"Cierra las persianas del pasillo, por favor.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.pasill', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","De acuerdo, lo intento con blinds.pasillo."
garage_door.toggle,garage_door.comercio,Puerta de garaje de taller,garage_door.comerci,¿Puedes abrir la puerta de garaje del taller?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.comerci', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","De acuerdo, lo intentaré con la puerta de garaje de taller."
lock.unlock,lock.sala_de_estar,Cerradura de salón,lock.sala_del_estar,¿Puedes desbloquear la cerradura del salón?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.sala_del_estar', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entendido, intentaré con la cerradura correcta."
climate.set_temperature,climate.bosch_bcc100,Control conectado Bosch BCC100,climate.bosch_bcc10x,"Ajusta la temperatura a <temp_f> grados, por favor.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.bosch_bcc10x', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","De acuerdo, lo intento con el dispositivo correcto."
vacuum.stop,vacuum.kitchen_xiaomi,aspiradora de cocina,vacuum.kitchen_xia_mi,"Por favor, detén la aspiradora de cocina.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.kitchen_xia_mi', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","De acuerdo, intentaré con la aspiradora de cocina."
switch.turn_on,switch.reflectores_de_patio,Interruptor de reflectores de jardín,switch.reflactores_de_patio,"Por favor, enciende los reflectores del jardín","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.reflactores_de_patio', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entendido, intentaré con el interruptor correcto."
fan.turn_on,fan.estudio_2,fanático del estudio,fan.estudio2,Enciende el ventilador del estudio.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.estudio2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Voy a intentar con el dispositivo correcto, fan.estudio_2."
garage_door.open_cover,garage_door.dos_car,Garaje para dos automóviles,garage_door.dos_car_extra,Abre la cubierta del garaje para dos automóviles,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.dos_car_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entendido, intentaré con el dispositivo correcto (garage_door.dos_car)."
light.turn_on,light.front_office_mqtt,Luz de recepción,light.front_office_mqtt_main,¿Puedes encender la luz de la recepción?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.front_office_mqtt_main', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Vale, ahora lo intento con la luz de la recepción."
climate.set_temperature,climate.johnson_glas,Termostato inteligente GLAS de Johnson Controls,climate.johnson_gl,"Por favor, pon la temperatura a <temp_f> grados.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.johnson_gl', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","De acuerdo, ahora lo intentaré con el termostato inteligente GLAS."
media_player.volume_down,media_player.proyector_sony_4k,Proyector de cine en casa Sony,media_player.proyector_sony_4k_hd,Baja el volumen del Proyector de cine en casa Sony.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.proyector_sony_4k_hd', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","De acuerdo, lo intento con el Proyector de cine en casa Sony."
light.toggle,light.encimera_de_la_cocina,Luces para encimera de cocina,light.encimera_cocina_de_la,Enciende la luz de la encimera de la cocina,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.encimera_cocina_de_la', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","De acuerdo, ahora lo intentaré con la luz de la encimera de la cocina."
media_player.volume_down,media_player.sonos_living,Sala de estar de Sonos,media_player.sonos_living_extra,Baja el volumen del reproductor en la sala de estar.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.sonos_living_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entendido, intentaré con el dispositivo correcto (media_player.sonos_living)."
vacuum.stop,vacuum.habitación_de_invitados_abajo,Aspiradora de la habitación de invitados de la planta baja,vacuum.habitación_invitados_abajo,Detén la aspiradora de la habitación de invitados de la planta baja.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.habitación_invitados_abajo', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","De acuerdo, lo intentaré con la aspiradora de la habitación de invitados de la planta baja."
light.turn_off,light.arriba_zen_zigbee,Luz Zen de arriba,light.zen_arriba_zigbee,"¿Podrías apagar la Luz Zen de arriba, por favor?","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.zen_arriba_zigbee', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entendido, intentaré con la Luz Zen de arriba."
light.turn_on,light.arriba_observatorio_zigbee,Luz del observatorio de arriba,light.arriba_observatorio_zigbee_extra,Enciende la luz del observatorio de arriba al 73% de brillo.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.arriba_observatorio_zigbee_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entendido, intentaré con la luz del observatorio de arriba."
climate.set_temperature,climate.honeywell_lyric_t6,Honeywell Letra T6 Pro,climate.honeywell_lyric_t6_pro,Ajusta la temperatura a <temp_f> grados en la casa.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.honeywell_lyric_t6_pro', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entendido, lo intentaré con climate.honeywell_lyric_t6."
fan.turn_on,fan.guardería,Fanático de la guardería,fan.guarderia_extra,¿Puedes encender el ventilador de la guardería?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.guarderia_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>",Lo intentaré con Fanático de la guardería.
fan.toggle,fan.estudio_1,fanático del estudio,fan.estudio_1a,¿Puedes alternar el ventilador del estudio?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.estudio_1a', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","De acuerdo, lo intento con fan.estudio_1."
media_player.media_play_pause,media_player.audio_technica_at_lp120,Tocadiscos Audio-Technica,media_player.audio_technica_lp120_at,"Por favor, pausa la reproducción en el Tocadiscos AudioTechnica.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.audio_technica_lp120_at', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entendido, lo intentaré con el Tocadiscos AudioTechnica."
vacuum.return_to_base,vacuum.arriba_baño_vac,Ayudante de baño de arriba,vacuum.arriba_baño,¿Puedes hacer que el Ayudante de baño de arriba vuelva a su base?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.arriba_baño', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entendido, intentaré con el dispositivo correcto."
switch.turn_on,switch.luces_entrada,Control de iluminación de entrada,switch.luces_entradaplus,"Enciende la luz de la entrada, por favor.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.luces_entradaplus', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entendido, ahora intentaré con 'switch.luces_entrada'."
lock.lock,lock.puerta_porche,Cerradura de puerta de porche,lock.puerta_prtche,"Por favor, cierra la cerradura del porche.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.puerta_prtche', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","De acuerdo, lo intentaré con la cerradura de la puerta del porche."
blinds.stop_cover,blinds.comedor,Persianas del comedor,blinds.comedro,"Detén la persiana del comedor, por favor.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.comedro', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","De acuerdo, ahora lo intentaré con Persianas del comedor."
light.toggle,light.abajo_den_homekit,Luz del estudio de abajo,light.abajo_den_homekit_extra,Cambia el estado de la luz del estudio de abajo.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.abajo_den_homekit_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entendido, lo intento de nuevo con la Luz del estudio de abajo."
fan.turn_on,fan.cocina_exterior,ventilador de cocina al aire libre,fan.cocina_exter,"Por favor, enciende el ventilador de la cocina al aire libre.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.cocina_exter', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entendido, ahora intentaré con el ventilador de cocina al aire libre."
fan.turn_on,fan.techo_1,Ventiladores de techo,fan.techo_1_extra,"Enciende los ventiladores de techo, por favor.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.techo_1_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entendido, intentaré con Ventiladores de techo."
vacuum.start,vacuum.robot_arriba_escaleras,Dispositivo para quitar el polvo encima de las escaleras,vacuum.robot_arriba_escalera,"Por favor, inicia la limpieza del dispositivo para quitar el polvo encima de las escaleras.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.robot_arriba_escalera', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entendido, intentaré con el dispositivo correcto (vacuum.robot_arriba_escaleras)."
media_player.turn_off,media_player.sistema_salon_hi_fi,Audio de alta fidelidad para salón,media_player.sistema_fi_hi_salon,Apaga el audio de alta fidelidad del salón.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.sistema_fi_hi_salon', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entendido, lo intentaré con el dispositivo correcto."
switch.turn_on,switch.iluminación_de_teatro_en_casa,Control de luces de cine en casa,switch.iluminación_de_teatro_en_cas,¿Puedes encender la iluminación del teatro en casa?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.iluminación_de_teatro_en_cas', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entendido, ahora lo intento con el dispositivo correcto."
vacuum.stop,vacuum.arriba_dyson,Eliminador de polvo de arriba,vacuum.arriba_dyson_extra,"Detén la aspiradora, por favor.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.arriba_dyson_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entendido, intentaré con el dispositivo correcto (vacuum.arriba_dyson)."
blinds.stop_cover,blinds.pasillo_2,Persianas del segundo pasillo,blinds.pasill_2,Detén la persiana del segundo pasillo.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.pasill_2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entendido, ahora lo intentaré con Persianas del segundo pasillo."
fan.turn_off,fan.gimnasio_interior,Ventilador de gimnasio interior,fan.gimnasio_inten,"Apaga el ventilador del gimnasio interior, por favor.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.gimnasio_inten', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","De acuerdo, intentaré con el ventilador de gimnasio interior."
climate.turn_on,climate.johnson_glas,Termostato inteligente GLAS de Johnson Controls,climate.johnson_glass,¿Puedes encender el termostato inteligente GLAS?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.johnson_glass', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","De acuerdo, lo intentaré con el dispositivo correcto."
switch.turn_on,switch.luces_pasarela,Interruptor de luces de pasarela,switch.luces_pasarela,"Por favor, enciende el interruptor de luces de pasarela.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.luces_pasarela', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","De acuerdo, lo intentaré con el dispositivo correcto."
blinds.stop_cover,blinds.sala_de_arte,Persianas para salas de manualidades.,blinds.sala_de_artes,¿Puedes detener las persianas de la sala de arte?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.sala_de_artes', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entendido, ahora intentaré con blinds.sala_de_arte."
blinds.stop_cover,blinds.ventana_trasera,Persianas de ventana trasera,blinds.ventana_trase,"Por favor, detén la persiana de la ventana trasera.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.ventana_trase', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","De acuerdo, intentaré con la persiana de la ventana trasera."
blinds.toggle,blinds.baño_1,primeras persianas de baño,blinds.baño_1a,¿Puedes bajar las primeras persianas del baño?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.baño_1a', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","De acuerdo, lo intentaré con la persiana del baño."
fan.decrease_speed,fan.porche_trasero,Ventilador del porche trasero,fan.porche_trase,Baja la velocidad del ventilador del porche trasero.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.porche_trase', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entendido, lo intentaré con el ventilador del porche trasero."
media_player.volume_up,media_player.sótano,Reproductor multimedia del sótano,media_player.sótano_2,Sube el volumen del reproductor multimedia del sótano.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.sótano_2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","De acuerdo, lo intento con el reproductor del sótano."
lock.unlock,lock.sala_de_archivo,Bloqueo de la sala de archivos,lock.sala_dearchivos,"Desbloquea la sala de archivos, por favor.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.sala_dearchivos', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entendido, intentaré con el bloqueo de la sala de archivos."
light.turn_off,light.estante_cocina_fresco,Rejilla De Cocina Luz Fría,light.estante_cocina_fresco_v2,"Apaga la luz de la rejilla de cocina, por favor.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.estante_cocina_fresco_v2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","De acuerdo, lo intentaré con la luz correcta."
fan.decrease_speed,fan.guardería,Fanático de la guardería,fan.guarderia_pro,"Baja la velocidad del ventilador de la guardería, por favor.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.guarderia_pro', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entendido, lo intentaré de nuevo con fan.guardería."
media_player.volume_up,media_player.sony_bravia_tv,Televisor LED inteligente Sony,media_player.sony_bravia_tv_v2,Sube el volumen del televisor.,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.sony_bravia_tv_v2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entendido, intentaré con el televisor Sony correcto."
lock.lock,lock.cocina_yale,Cocina Yale,lock.cocina_yeal,"Bloquea la cerradura de la cocina, por favor.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.cocina_yeal', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entendido, intentaré con lock.cocina_yale."
fan.turn_off,fan.dormitorio_master,Ventilador del dormitorio principal,fan.master_dormitorio,¿Puedes apagar el ventilador del dormitorio principal?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.master_dormitorio', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","De acuerdo, lo intento con el ventilador del dormitorio principal."
vacuum.return_to_base,vacuum.frente_hall_samsung,Robot de barrido del vestíbulo,vacuum.frente_hall_samsunge,"Por favor, haz que el robot de barrido del vestíbulo vuelva a su base.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.frente_hall_samsunge', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entendido, intentaré con el dispositivo correcto."
climate.turn_off,climate.tado_inteligente,Termostato inteligente Tado,climate.tado_inteligente_v2,¿Puedes apagar el termostato inteligente?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.tado_inteligente_v2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","De acuerdo, intento apagar el Termostato inteligente Tado."
garage_door.open_cover,garage_door.cobertizo_2,Segunda puerta del cobertizo,garage_door.cobertizo,"¿Puedes abrir la cubierta del cobertizo, por favor?","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.cobertizo', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entendido, intentaré con la segunda puerta del cobertizo."
vacuum.stop,vacuum.comedor_area_bissel,Eliminador de suciedad del comedor,vacuum.comedor_area_bissel_extra,"Por favor, detén el limpiador del comedor.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.comedor_area_bissel_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","De acuerdo, lo intentaré con el dispositivo correcto."
media_player.volume_up,media_player.punto_echo,Punto eco de cocina,media_player.punto_ec,¿Podrías subir el volumen del Punto eco de cocina?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.punto_ec', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","Entendido, intentaré con el dispositivo correcto (media_player.punto_echo)."
media_player.volume_down,media_player.bose_home_altavoz,Altavoz inalámbrico Bose,media_player.bose_home_altazov,"Baja el volumen del Altavoz inalámbrico Bose, por favor.","<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.bose_home_altazov', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","De acuerdo, lo intento con el Altavoz inalámbrico Bose."
blinds.toggle,blinds.pasillo_1,Persianas del primer pasillo.,blinds.pasillo_1a,¿Puedes bajar las persianas del primer pasillo?,"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.pasillo_1a', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>","De acuerdo, lo intento con las persianas del primer pasillo."
1 service_name correct_device_name correct_friendly_name bad_device_name phrase error_result retry_prompt
2 light.turn_on light.living_room_lamp Lámpara de la sala light.livng_room_lamp Por favor enciende la <device_name>. Error: Entidad light.livng_room_lamp no encontrada. Intentaré con la lámpara de la sala.
3 climate.set_temperature climate.hallway Termostato del pasillo climate.halway Configura el <device_name> a <temp_f> grados. Error: Entidad climate.halway no encontrada. Probando de nuevo con el termostato del pasillo.
4 fan.turn_off fan.office Ventilador de la oficina fan.offce Apaga el <device_name>. Error: Entidad fan.offce no encontrada. Volveré a intentar con el ventilador de la oficina.
5 switch.turn_off switch.luces_sala_de_estudio Interruptor de luces de sala de estudio switch.luces_estudio_sala Apaga las luces de la sala de estudio, por favor. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.luces_estudio_sala', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entendido, intentaré apagar el interruptor de luces de la sala de estudio.
6 switch.turn_on switch.luces_taller Interruptor de luces de taller switch.luces_taller_extra Enciende el interruptor de luces del taller, por favor. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.luces_taller_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> De acuerdo, lo intentaré con el interruptor de luces de taller.
7 fan.toggle fan.dormitorio_derecho Ventilador del dormitorio del lado derecho fan.dormitorio_izquierdo ¿Puedes alternar el ventilador del dormitorio del lado derecho? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.dormitorio_izquierdo', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Vale, ahora lo intento con el ventilador del dormitorio del lado derecho.
8 fan.decrease_speed fan.pasillo ventilador de pasillo fan.pasilloo Disminuye la velocidad del ventilador de pasillo, por favor. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.pasilloo', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entendido, lo intentaré con el ventilador de pasillo.
9 switch.toggle switch.luces_escalera Interruptor de luces de escalera switch.luces_escaler ¿Puedes encender la luz de la escalera? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.luces_escaler', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entendido, lo intentaré con el dispositivo correcto.
10 media_player.volume_down media_player.altavoces_exteriores_de_patio Altavoces exteriores para patio media_player.altavoces_exteriores_del_patio Baja el volumen de los altavoces exteriores para el patio, por favor. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.altavoces_exteriores_del_patio', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entendido, ahora lo intentaré con Altavoces exteriores para patio.
11 fan.increase_speed fan.habitación_niños ventilador de la habitación de los niños fan.habitaciónniños Sube la velocidad del ventilador de la habitación de los niños, por favor. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.habitaciónniños', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entendido, lo intentaré con el ventilador de la habitación de los niños.
12 fan.increase_speed fan.oficina ventilador de oficina fan.oficinas Aumenta la velocidad del ventilador de oficina <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.oficinas', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entendido, intentaré con el ventilador de oficina.
13 garage_door.toggle garage_door.principal_1 Puerta de garaje principal garage_door.principal_1_main ¿Puedes abrir la puerta de garaje principal? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.principal_1_main', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Vale, lo intento con la puerta de garaje principal.
14 media_player.turn_on media_player.chrome_cast_dormitorio Dormitorio Chromecast media_player.chromecast_dormit Por favor, enciende el Chromecast del dormitorio. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.chromecast_dormit', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entendido, intentaré con el dispositivo correcto.
15 media_player.volume_down media_player.onkyo_tx_sr Receptor de cine en casa Onkyo media_player.onkyo_tx_sr_receptor Baja el volumen del receptor de cine en casa Onkyo. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.onkyo_tx_sr_receptor', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entendido, intentaré con el receptor Onkyo correcto.
16 media_player.media_play_pause media_player.xbox_den Consola Xbox media_player.xbox_den_consola ¿Puedes pausar la reproducción en la consola Xbox? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.xbox_den_consola', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entendido, intentaré con el dispositivo correcto.
17 light.turn_off light.kit_hogar_vivero_frontal Luz delantera del cuarto de niños light.kit_hogar_vivero_frontral Apaga la luz delantera del cuarto de niños, por favor. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.kit_hogar_vivero_frontral', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entendido, lo intentaré con la luz correcta.
18 vacuum.stop vacuum.pasillo_neato Limpiador de caminos de pasillo vacuum.pasill_neato Por favor, detén el limpiador de caminos de pasillo. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.pasill_neato', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> De acuerdo, lo intento con el dispositivo correcto.
19 fan.turn_off fan.baño ventilador de baño fan.baño_ext Apaga el ventilador del baño, por favor. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.baño_ext', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> De acuerdo, lo intentaré con el ventilador de baño.
20 switch.turn_on switch.luces_cuarto_de_juegos Interruptor de luces de sala de juegos switch.luces_cuarto_juego Enciende las luces del cuarto de juegos, por favor. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.luces_cuarto_juego', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> De acuerdo, lo intentaré con el Interruptor de luces de sala de juegos.
21 switch.turn_on switch.luces_sauna Interruptor de luces de sauna switch.luces_saun Por favor, enciende el interruptor de luces del sauna. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.luces_saun', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Voy a intentar con el dispositivo correcto, switch.luces_sauna.
22 vacuum.return_to_base vacuum.salón_roomba aspiradora de salón vacuum.salón_roboma Por favor, lleva la aspiradora de salón a su base. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.salón_roboma', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entendido, intentaré con vacuum.salón_roomba.
23 lock.unlock lock.puerta_piscina Puerta de piscina lock.puerta_piscinax Por favor, desbloquea la puerta de la piscina <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.puerta_piscinax', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entendido, intentaré con la cerradura correcta (lock.puerta_piscina).
24 light.turn_on light.abajo_patio_mqtt Luz del patio de abajo light.patio_abajo_mqtt Por favor, enciende la luz del patio de abajo. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.patio_abajo_mqtt', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> De acuerdo, intentaré con la luz del patio de abajo.
25 fan.decrease_speed fan.dison_pure Ventilador puro Dyson fan.dyson_pure Disminuye la velocidad del ventilador puro Dyson <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.dyson_pure', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entendido, intentaré con el dispositivo correcto (fan.dison_pure).
26 media_player.media_play_pause media_player.nintendo_switch interruptor de nintendo media_player.nintedo_sw ¿Puedes pausar la reproducción en el interruptor de Nintendo? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.nintedo_sw', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entendido, intentaré con el dispositivo correcto.
27 garage_door.toggle garage_door.equipo_cesped Puerta para equipo de césped garage_door.cesped_equipo ¿Puedes abrir la puerta para el equipo de césped? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.cesped_equipo', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entendido, intentaré con la puerta para equipo de césped.
28 switch.turn_on switch.luces_del_comedor Interruptor de luces del comedor switch.luces_del_comedor_ext Enciende las luces del comedor <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.luces_del_comedor_ext', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entendido, intentaré con el interruptor de luces del comedor.
29 fan.decrease_speed fan.dison_pure Ventilador puro Dyson fan.dison_pur Baja la velocidad del ventilador puro Dyson. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.dison_pur', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> De acuerdo, lo intentaré con el Ventilador puro Dyson.
30 fan.decrease_speed fan.patio ventilador de patio fan.patio_ext ¿Puedes reducir la velocidad del ventilador de patio? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.patio_ext', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entendido, ahora lo intentaré con el ventilador de patio.
31 vacuum.start vacuum.robot_esquina_izquierda Succionador de suciedad de la esquina izquierda vacuum.robot_esquina_izqierda Por favor, inicia la limpieza de la esquina izquierda. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.robot_esquina_izqierda', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> De acuerdo, lo intentaré con el Succionador de suciedad de la esquina izquierda.
32 light.toggle light.cubierta_izquierda Luz de cubierta izquierda light.cubierta_izq_extra Enciende la luz de cubierta izquierda, por favor. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.cubierta_izq_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> De acuerdo, lo intento con la Luz de cubierta izquierda.
33 fan.increase_speed fan.comedor Ventilador del comedor fan.comedorn Aumenta la velocidad del ventilador del comedor. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.comedorn', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> De acuerdo, lo intentaré con el ventilador del comedor.
34 media_player.volume_up media_player.consola_sala_de_juegos Consola de sala de juegos media_player.consola_sala_de_jueg Sube el volumen de la consola de sala de juegos <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.consola_sala_de_jueg', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entendido, intentaré con la consola de sala de juegos.
35 media_player.turn_off media_player.ipad_cocina iPad de cocina media_player.ipad_cocinax Apaga el iPad de la cocina, por favor. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.ipad_cocinax', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> De acuerdo, lo intentaré con el iPad de cocina.
36 lock.unlock lock.puerta_frontal_1 Cerradura de entrada principal lock.puerta_frontal_1a ¿Puedes desbloquear la puerta de entrada principal? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.puerta_frontal_1a', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entendido, intentaré con la cerradura de entrada principal.
37 fan.decrease_speed fan.cuarto_de_huéspedes ventilador de la habitación de invitados fan.cuarto_de_huéspedes_extra Baja la velocidad del ventilador de la habitación de invitados. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.cuarto_de_huéspedes_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entendido, lo intentaré con el ventilador de la habitación de invitados.
38 blinds.open_cover blinds.cochera Persianas de garaje blinds.cocherra Por favor, abre las persianas del garaje. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.cocherra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> De acuerdo, ahora intentaré con las persianas de garaje.
39 media_player.volume_down media_player.nintendo_switch interruptor de nintendo media_player.nintendo_sw Baja el volumen del interruptor de Nintendo <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.nintendo_sw', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entendido, intentaré con el interruptor de Nintendo
40 light.turn_off light.espalda_comedor_calentito Luz cálida del comedor trasero light.comedor_espalda_calentito ¿Puedes apagar la luz del comedor trasero? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.comedor_espalda_calentito', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Lo intentaré de nuevo con la Luz cálida del comedor trasero.
41 fan.turn_off fan.isla_de_cocina ventilador de cocina de refrigeración fan.isla_cocina Apaga el ventilador de la cocina, por favor. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.isla_cocina', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> De acuerdo, intentaré apagar el ventilador de cocina de refrigeración.
42 light.turn_off light.patio_1 Luz de patio exterior light.patio_one Apaga la luz del patio exterior, por favor. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.patio_one', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> De acuerdo, intentaré con la Luz de patio exterior.
43 vacuum.stop vacuum.patio_puerta_vac Limpiador de puertas de patio vacuum.patio_puerta_vac_extra ¿Puedes detener el limpiador de puertas de patio? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.patio_puerta_vac_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entendido, intentaré con el dispositivo correcto.
44 light.turn_off light.front_library_ge Luz frontal de la biblioteca light.front_librar_ge Apaga la luz frontal de la biblioteca, por favor. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.front_librar_ge', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entendido, ahora intentaré con la Luz frontal de la biblioteca.
45 switch.turn_on switch.luces_cobertizo_para_botes Interruptor de luces del cobertizo para botes switch.luces_cobertizo_botes_para Enciende las luces del cobertizo para botes, por favor. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.luces_cobertizo_botes_para', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entendido, intentaré con el dispositivo correcto.
46 vacuum.return_to_base vacuum.arriba_dyson Eliminador de polvo de arriba vacuum.arriba_dy ¿Puedes hacer que el Eliminador de polvo de arriba vuelva a su base, por favor? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.arriba_dy', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entendido, intentaré con el dispositivo correcto.
47 light.turn_off light.abajo_zen_homekit Luz Zen de abajo light.zen_abajo_homekit Por favor, apaga la luz Zen de abajo. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.zen_abajo_homekit', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> De acuerdo, lo intentaré con la Luz Zen de abajo.
48 fan.decrease_speed fan.porche ventilador de techo para porche fan.porche_izquierda Baja la velocidad del ventilador del porche, por favor. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.porche_izquierda', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entendido, intentaré con el ventilador de techo para porche.
49 light.turn_off light.back_entryway_lifx Luz de entrada trasera light.back_entryway_lifx_extra Apaga la luz de la entrada trasera, por favor. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.back_entryway_lifx_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> De acuerdo, lo intento con la Luz de entrada trasera.
50 lock.lock lock.perrera Cerradura de perrera para animales lock.perrera_ext Por favor, bloquea la cerradura de la perrera. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.perrera_ext', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> De acuerdo, intentaré bloquear la cerradura de perrera.
51 switch.turn_off switch.luces_pasillo Interruptor de luces del pasillo switch.luces_pasill Apaga las luces del pasillo, por favor. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.luces_pasill', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> De acuerdo, lo intentaré con el interruptor de luces del pasillo.
52 light.toggle light.abajo_zen_homekit Luz Zen de abajo light.zen_abajo_homekit ¿Puedes alternar la Luz Zen de abajo? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.zen_abajo_homekit', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> De acuerdo, lo intentaré con la Luz Zen de abajo.
53 switch.turn_on switch.abridor_de_puerta_de_garage Interruptor de apertura de puerta de garaje switch.abridor_de_puerta_garaje_plus Por favor, enciende el interruptor de apertura de la puerta del garaje. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.abridor_de_puerta_garaje_plus', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> De acuerdo, lo intentaré con el interruptor de apertura de puerta de garaje.
54 light.turn_on light.back_balcony_lifx Luz trasera del balcón light.back_balcony_lifx_aux Enciende la luz trasera del balcón, por favor. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.back_balcony_lifx_aux', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entendido, intentaré con la luz trasera del balcón.
55 lock.unlock lock.ascensor Cerradura de ascensor privado lock.ascenor Por favor, desbloquea la cerradura del ascensor privado. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.ascenor', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> De acuerdo, intentaré con la cerradura correcta.
56 switch.turn_off switch.luces_cobertizo_para_botes Interruptor de luces del cobertizo para botes switch.luces_cobertizo_botes Apaga las luces del cobertizo para los botes <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.luces_cobertizo_botes', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entendido, intentaré apagar el interruptor de luces del cobertizo para botes.
57 light.turn_on light.estante_cocina_fresco Estante De Cocina Luz Fría light.estante_cocina_fresco_1 ¿Puedes encender la luz del estante de la cocina fresca? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.estante_cocina_fresco_1', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entendido, intentaré con el dispositivo correcto.
58 vacuum.stop vacuum.automatizador_doméstico_inteligente Robot de limpieza del hogar inteligente vacuum.automatizador_doméstico_inteli Por favor, detén el robot de limpieza del hogar inteligente. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.automatizador_doméstico_inteli', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> De acuerdo, lo intentaré con el dispositivo correcto.
59 media_player.media_play_pause media_player.altavoz_pared_pasillo Altavoz de pared para pasillo media_player.altavoz_pasillo_pared Reproduce o pausa la música en el altavoz de pared para el pasillo. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.altavoz_pasillo_pared', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> De acuerdo, ahora usaré el altavoz de pared para pasillo.
60 light.turn_on light.front_observatorio_ge Luz frontal del observatorio light.front_observatorio_ger Enciende la luz frontal del observatorio al 91% de brillo en blanco. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.front_observatorio_ger', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entendido, intentaré con el dispositivo correcto.
61 lock.unlock lock.arma_segura Cerradura de seguridad para armas lock.segura_arma ¿Puedes desbloquear la cerradura de seguridad para armas? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.segura_arma', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entendido, lo intentaré con lock.arma_segura.
62 fan.increase_speed fan.balcón ventilador de balcón fan.balcónx Sube la velocidad del ventilador de balcón, por favor. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.balcónx', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entendido, intentaré con el ventilador de balcón.
63 vacuum.return_to_base vacuum.pasillo_neato Limpiador de caminos de pasillo vacuum.pasillo_neat Por favor, haz que el Limpiador de caminos de pasillo regrese a su base. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.pasillo_neat', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entendido, intentaré con vacuum.pasillo_neato.
64 media_player.media_play_pause media_player.proyector_exterior_patio_trasero Proyector de patio trasero media_player.proyector_exterior_patio Pausa o reproduce el proyector del patio trasero <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.proyector_exterior_patio', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entendido, intentaré con el dispositivo correcto: media_player.proyector_exterior_patio_trasero.
65 lock.lock lock.bodega Cerradura para bodega lock.bodega_primaria Por favor, bloquea la cerradura de la bodega. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.bodega_primaria', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> De acuerdo, lo intentaré con la cerradura para bodega.
66 garage_door.stop_cover garage_door.cochera Puerta de garaje garage_door.cochera Por favor, detén la puerta de la cochera. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.cochera', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Lo intentaré de nuevo con la puerta de garaje correcta.
67 lock.lock lock.puerta_trasera Cerradura de entrada al patio trasero lock.puerta_traserra Cierra la cerradura de la entrada al patio trasero. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.puerta_traserra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> De acuerdo, intentaré con la cerradura de la puerta trasera.
68 switch.toggle switch.luces_entrada Control de iluminación de entrada switch.luces_entradax Alterna la luz de la entrada, por favor. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.luces_entradax', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entendido, ahora lo intentaré con el dispositivo correcto: switch.luces_entrada.
69 blinds.open_cover blinds.ventana_trasera Persianas de ventana trasera blinds.ventana_trasera_extra ¿Puedes abrir la persiana de la ventana trasera? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.ventana_trasera_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> De acuerdo, lo intentaré con Persianas de ventana trasera.
70 media_player.turn_off media_player.recamara_principal Medios del dormitorio principal media_player.recamara_principal_extra Apaga los medios del dormitorio principal, por favor. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.recamara_principal_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entendido, intentaré apagar los Medios del dormitorio principal.
71 switch.turn_on switch.luces_traseras_de_patio Interruptor de luces del patio trasero switch.luces_traseras_del_patio ¿Podrías encender las luces del patio trasero? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.luces_traseras_del_patio', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> De acuerdo, lo intentaré con el interruptor de luces del patio trasero.
72 blinds.close_cover blinds.pasillo Persianas de pasillo blinds.pasill Cierra las persianas del pasillo, por favor. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.pasill', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> De acuerdo, lo intento con blinds.pasillo.
73 garage_door.toggle garage_door.comercio Puerta de garaje de taller garage_door.comerci ¿Puedes abrir la puerta de garaje del taller? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.comerci', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> De acuerdo, lo intentaré con la puerta de garaje de taller.
74 lock.unlock lock.sala_de_estar Cerradura de salón lock.sala_del_estar ¿Puedes desbloquear la cerradura del salón? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.sala_del_estar', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entendido, intentaré con la cerradura correcta.
75 climate.set_temperature climate.bosch_bcc100 Control conectado Bosch BCC100 climate.bosch_bcc10x Ajusta la temperatura a <temp_f> grados, por favor. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.bosch_bcc10x', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> De acuerdo, lo intento con el dispositivo correcto.
76 vacuum.stop vacuum.kitchen_xiaomi aspiradora de cocina vacuum.kitchen_xia_mi Por favor, detén la aspiradora de cocina. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.kitchen_xia_mi', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> De acuerdo, intentaré con la aspiradora de cocina.
77 switch.turn_on switch.reflectores_de_patio Interruptor de reflectores de jardín switch.reflactores_de_patio Por favor, enciende los reflectores del jardín <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.reflactores_de_patio', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entendido, intentaré con el interruptor correcto.
78 fan.turn_on fan.estudio_2 fanático del estudio fan.estudio2 Enciende el ventilador del estudio. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.estudio2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Voy a intentar con el dispositivo correcto, fan.estudio_2.
79 garage_door.open_cover garage_door.dos_car Garaje para dos automóviles garage_door.dos_car_extra Abre la cubierta del garaje para dos automóviles <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.dos_car_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entendido, intentaré con el dispositivo correcto (garage_door.dos_car).
80 light.turn_on light.front_office_mqtt Luz de recepción light.front_office_mqtt_main ¿Puedes encender la luz de la recepción? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.front_office_mqtt_main', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Vale, ahora lo intento con la luz de la recepción.
81 climate.set_temperature climate.johnson_glas Termostato inteligente GLAS de Johnson Controls climate.johnson_gl Por favor, pon la temperatura a <temp_f> grados. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.johnson_gl', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> De acuerdo, ahora lo intentaré con el termostato inteligente GLAS.
82 media_player.volume_down media_player.proyector_sony_4k Proyector de cine en casa Sony media_player.proyector_sony_4k_hd Baja el volumen del Proyector de cine en casa Sony. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.proyector_sony_4k_hd', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> De acuerdo, lo intento con el Proyector de cine en casa Sony.
83 light.toggle light.encimera_de_la_cocina Luces para encimera de cocina light.encimera_cocina_de_la Enciende la luz de la encimera de la cocina <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.encimera_cocina_de_la', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> De acuerdo, ahora lo intentaré con la luz de la encimera de la cocina.
84 media_player.volume_down media_player.sonos_living Sala de estar de Sonos media_player.sonos_living_extra Baja el volumen del reproductor en la sala de estar. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.sonos_living_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entendido, intentaré con el dispositivo correcto (media_player.sonos_living).
85 vacuum.stop vacuum.habitación_de_invitados_abajo Aspiradora de la habitación de invitados de la planta baja vacuum.habitación_invitados_abajo Detén la aspiradora de la habitación de invitados de la planta baja. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.habitación_invitados_abajo', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> De acuerdo, lo intentaré con la aspiradora de la habitación de invitados de la planta baja.
86 light.turn_off light.arriba_zen_zigbee Luz Zen de arriba light.zen_arriba_zigbee ¿Podrías apagar la Luz Zen de arriba, por favor? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.zen_arriba_zigbee', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entendido, intentaré con la Luz Zen de arriba.
87 light.turn_on light.arriba_observatorio_zigbee Luz del observatorio de arriba light.arriba_observatorio_zigbee_extra Enciende la luz del observatorio de arriba al 73 % de brillo. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.arriba_observatorio_zigbee_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entendido, intentaré con la luz del observatorio de arriba.
88 climate.set_temperature climate.honeywell_lyric_t6 Honeywell Letra T6 Pro climate.honeywell_lyric_t6_pro Ajusta la temperatura a <temp_f> grados en la casa. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.honeywell_lyric_t6_pro', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entendido, lo intentaré con climate.honeywell_lyric_t6.
89 fan.turn_on fan.guardería Fanático de la guardería fan.guarderia_extra ¿Puedes encender el ventilador de la guardería? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.guarderia_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Lo intentaré con Fanático de la guardería.
90 fan.toggle fan.estudio_1 fanático del estudio fan.estudio_1a ¿Puedes alternar el ventilador del estudio? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.estudio_1a', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> De acuerdo, lo intento con fan.estudio_1.
91 media_player.media_play_pause media_player.audio_technica_at_lp120 Tocadiscos Audio-Technica media_player.audio_technica_lp120_at Por favor, pausa la reproducción en el Tocadiscos Audio‑Technica. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.audio_technica_lp120_at', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entendido, lo intentaré con el Tocadiscos Audio‑Technica.
92 vacuum.return_to_base vacuum.arriba_baño_vac Ayudante de baño de arriba vacuum.arriba_baño ¿Puedes hacer que el Ayudante de baño de arriba vuelva a su base? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.arriba_baño', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entendido, intentaré con el dispositivo correcto.
93 switch.turn_on switch.luces_entrada Control de iluminación de entrada switch.luces_entradaplus Enciende la luz de la entrada, por favor. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.luces_entradaplus', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entendido, ahora intentaré con 'switch.luces_entrada'.
94 lock.lock lock.puerta_porche Cerradura de puerta de porche lock.puerta_prtche Por favor, cierra la cerradura del porche. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.puerta_prtche', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> De acuerdo, lo intentaré con la cerradura de la puerta del porche.
95 blinds.stop_cover blinds.comedor Persianas del comedor blinds.comedro Detén la persiana del comedor, por favor. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.comedro', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> De acuerdo, ahora lo intentaré con Persianas del comedor.
96 light.toggle light.abajo_den_homekit Luz del estudio de abajo light.abajo_den_homekit_extra Cambia el estado de la luz del estudio de abajo. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.abajo_den_homekit_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entendido, lo intento de nuevo con la Luz del estudio de abajo.
97 fan.turn_on fan.cocina_exterior ventilador de cocina al aire libre fan.cocina_exter Por favor, enciende el ventilador de la cocina al aire libre. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.cocina_exter', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entendido, ahora intentaré con el ventilador de cocina al aire libre.
98 fan.turn_on fan.techo_1 Ventiladores de techo fan.techo_1_extra Enciende los ventiladores de techo, por favor. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.techo_1_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entendido, intentaré con Ventiladores de techo.
99 vacuum.start vacuum.robot_arriba_escaleras Dispositivo para quitar el polvo encima de las escaleras vacuum.robot_arriba_escalera Por favor, inicia la limpieza del dispositivo para quitar el polvo encima de las escaleras. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.robot_arriba_escalera', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entendido, intentaré con el dispositivo correcto (vacuum.robot_arriba_escaleras).
100 media_player.turn_off media_player.sistema_salon_hi_fi Audio de alta fidelidad para salón media_player.sistema_fi_hi_salon Apaga el audio de alta fidelidad del salón. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.sistema_fi_hi_salon', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entendido, lo intentaré con el dispositivo correcto.
101 switch.turn_on switch.iluminación_de_teatro_en_casa Control de luces de cine en casa switch.iluminación_de_teatro_en_cas ¿Puedes encender la iluminación del teatro en casa? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.iluminación_de_teatro_en_cas', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entendido, ahora lo intento con el dispositivo correcto.
102 vacuum.stop vacuum.arriba_dyson Eliminador de polvo de arriba vacuum.arriba_dyson_extra Detén la aspiradora, por favor. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.arriba_dyson_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entendido, intentaré con el dispositivo correcto (vacuum.arriba_dyson).
103 blinds.stop_cover blinds.pasillo_2 Persianas del segundo pasillo blinds.pasill_2 Detén la persiana del segundo pasillo. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.pasill_2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entendido, ahora lo intentaré con Persianas del segundo pasillo.
104 fan.turn_off fan.gimnasio_interior Ventilador de gimnasio interior fan.gimnasio_inten Apaga el ventilador del gimnasio interior, por favor. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.gimnasio_inten', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> De acuerdo, intentaré con el ventilador de gimnasio interior.
105 climate.turn_on climate.johnson_glas Termostato inteligente GLAS de Johnson Controls climate.johnson_glass ¿Puedes encender el termostato inteligente GLAS? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.johnson_glass', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> De acuerdo, lo intentaré con el dispositivo correcto.
106 switch.turn_on switch.luces_pasarela Interruptor de luces de pasarela switch.luces_pasarela Por favor, enciende el interruptor de luces de pasarela. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='switch.luces_pasarela', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> De acuerdo, lo intentaré con el dispositivo correcto.
107 blinds.stop_cover blinds.sala_de_arte Persianas para salas de manualidades. blinds.sala_de_artes ¿Puedes detener las persianas de la sala de arte? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.sala_de_artes', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entendido, ahora intentaré con blinds.sala_de_arte.
108 blinds.stop_cover blinds.ventana_trasera Persianas de ventana trasera blinds.ventana_trase Por favor, detén la persiana de la ventana trasera. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.ventana_trase', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> De acuerdo, intentaré con la persiana de la ventana trasera.
109 blinds.toggle blinds.baño_1 primeras persianas de baño blinds.baño_1a ¿Puedes bajar las primeras persianas del baño? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.baño_1a', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> De acuerdo, lo intentaré con la persiana del baño.
110 fan.decrease_speed fan.porche_trasero Ventilador del porche trasero fan.porche_trase Baja la velocidad del ventilador del porche trasero. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.porche_trase', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entendido, lo intentaré con el ventilador del porche trasero.
111 media_player.volume_up media_player.sótano Reproductor multimedia del sótano media_player.sótano_2 Sube el volumen del reproductor multimedia del sótano. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.sótano_2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> De acuerdo, lo intento con el reproductor del sótano.
112 lock.unlock lock.sala_de_archivo Bloqueo de la sala de archivos lock.sala_dearchivos Desbloquea la sala de archivos, por favor. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.sala_dearchivos', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entendido, intentaré con el bloqueo de la sala de archivos.
113 light.turn_off light.estante_cocina_fresco Rejilla De Cocina Luz Fría light.estante_cocina_fresco_v2 Apaga la luz de la rejilla de cocina, por favor. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='light.estante_cocina_fresco_v2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> De acuerdo, lo intentaré con la luz correcta.
114 fan.decrease_speed fan.guardería Fanático de la guardería fan.guarderia_pro Baja la velocidad del ventilador de la guardería, por favor. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.guarderia_pro', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entendido, lo intentaré de nuevo con fan.guardería.
115 media_player.volume_up media_player.sony_bravia_tv Televisor LED inteligente Sony media_player.sony_bravia_tv_v2 Sube el volumen del televisor. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.sony_bravia_tv_v2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entendido, intentaré con el televisor Sony correcto.
116 lock.lock lock.cocina_yale Cocina Yale lock.cocina_yeal Bloquea la cerradura de la cocina, por favor. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='lock.cocina_yeal', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entendido, intentaré con lock.cocina_yale.
117 fan.turn_off fan.dormitorio_master Ventilador del dormitorio principal fan.master_dormitorio ¿Puedes apagar el ventilador del dormitorio principal? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='fan.master_dormitorio', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> De acuerdo, lo intento con el ventilador del dormitorio principal.
118 vacuum.return_to_base vacuum.frente_hall_samsung Robot de barrido del vestíbulo vacuum.frente_hall_samsunge Por favor, haz que el robot de barrido del vestíbulo vuelva a su base. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.frente_hall_samsunge', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entendido, intentaré con el dispositivo correcto.
119 climate.turn_off climate.tado_inteligente Termostato inteligente Tado climate.tado_inteligente_v2 ¿Puedes apagar el termostato inteligente? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='climate.tado_inteligente_v2', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> De acuerdo, intento apagar el Termostato inteligente Tado.
120 garage_door.open_cover garage_door.cobertizo_2 Segunda puerta del cobertizo garage_door.cobertizo ¿Puedes abrir la cubierta del cobertizo, por favor? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='garage_door.cobertizo', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entendido, intentaré con la segunda puerta del cobertizo.
121 vacuum.stop vacuum.comedor_area_bissel Eliminador de suciedad del comedor vacuum.comedor_area_bissel_extra Por favor, detén el limpiador del comedor. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='vacuum.comedor_area_bissel_extra', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> De acuerdo, lo intentaré con el dispositivo correcto.
122 media_player.volume_up media_player.punto_echo Punto eco de cocina media_player.punto_ec ¿Podrías subir el volumen del Punto eco de cocina? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.punto_ec', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> Entendido, intentaré con el dispositivo correcto (media_player.punto_echo).
123 media_player.volume_down media_player.bose_home_altavoz Altavoz inalámbrico Bose media_player.bose_home_altazov Baja el volumen del Altavoz inalámbrico Bose, por favor. <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='media_player.bose_home_altazov', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> De acuerdo, lo intento con el Altavoz inalámbrico Bose.
124 blinds.toggle blinds.pasillo_1 Persianas del primer pasillo. blinds.pasillo_1a ¿Puedes bajar las persianas del primer pasillo? <MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='blinds.pasillo_1a', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)> De acuerdo, lo intento con las persianas del primer pasillo.

View File

@@ -0,0 +1,124 @@
reason_type,service_name,device_name,friendly_name,desired_state,phrase,response
not_available,lock.lock,back_door,Cerrojo de la puerta trasera,,"Cierra con llave el <device_name>.","No encuentro un cerrojo de la puerta trasera para controlar."
already_state,light.turn_on,hallway,Luces del pasillo,on,"Enciende las <device_name>.","Las luces del pasillo ya están encendidas."
already_state,switch.turn_off,garage,Enchufe del garaje,off,"Apaga el <device_name>.","El enchufe del garaje ya está apagado."
not_available,climate.set_temperature,mysa_smart_thermostat,Termostato inteligente Mysa para calentadores eléctricos de zócalo,,Ajusta la temperatura a 19 grados en <device_name>.,"Lo siento, no puedo encontrar <device_name> en tu casa."
not_available,media_player.volume_down,sonos_arc,Barra de sonido inteligente Sonos,,Baja el volumen del <device_name>,"Lo siento, no puedo encontrar el dispositivo <device_name> en la casa."
not_available,lock.lock,sótano,Cerradura del sótano,,Bloquear <device_name>,"Lo siento, no puedo encontrar ese dispositivo en la casa."
not_available,media_player.volume_down,tocadiscos_vinilo_attico,Tocadiscos de vinilo para ático,,Baja el volumen del <device_name>,"Lo siento, no puedo encontrar el dispositivo <device_name> en la casa."
not_available,switch.turn_off,luces_características_agua,Interruptor de luces de fuente de agua,,Apaga el <device_name>,"Lo siento, no puedo encontrar el <device_name> en la casa."
not_available,light.toggle,arriba_dormitorio_niños_zigbee,Luz del dormitorio infantil de arriba,,Encender o apagar <device_name>,"Lo siento, no puedo localizar ese dispositivo en tu casa."
not_available,fan.turn_on,centro_sala_estar,Ventilador central para salón,,Enciende el <device_name>,"Lo siento, no puedo localizar ese dispositivo en la casa."
not_available,light.toggle,front_mancave_ge,Luz de la cueva del hombre frontal,,cambiar el estado de la luz <device_name>,"Lo siento, no puedo encontrar el dispositivo <device_name> en tu hogar."
already_state,switch.turn_off,iluminación_de_teatro_en_casa,Control de luces de cine en casa,off,Apaga <device_name>,"Lo siento, <device_name> ya está apagado, no hay nada que cambiar."
not_available,light.turn_off,kit_de_entrenamiento_frontal,Luz de entrenamiento frontal,,apaga la luz del <device_name>,"Lo siento, no puedo encontrar el dispositivo <device_name> en la casa."
not_available,fan.turn_off,honeywell_turbo,Ventilador turbo Honeywell,,Apaga el <device_name>,"Lo siento, no puedo encontrar ese dispositivo en la casa."
not_available,garage_door.stop_cover,ascensormaster_2,ascensormaster,,Detén la cubierta del <device_name>,"Lo siento, no puedo encontrar ese dispositivo en tu hogar."
already_state,light.turn_on,yeelight_smart,Luz inteligente Yeelight,on,Enciende <device_name>,"Lo siento, <device_name> ya está encendida, no es necesario encenderla."
not_available,light.turn_on,back_closet_warm,Armario Trasero Luz Cálida,,Enciende la luz <device_name>,"Lo siento, no encuentro el dispositivo <device_name> en la casa."
not_available,climate.set_temperature,termostato_zen_wifi,Termostato Zen Edición WiFi,,Set the temperature of <device_name> to 27,"Lo siento, no puedo localizar ese dispositivo en la casa."
not_available,switch.turn_on,iluminación_puerta_frontal,Interruptor de luces de puerta delantera,,Enciende <device_name>,"Lo siento, no puedo localizar <device_name> en la casa."
not_available,blinds.toggle,baño,Persianas de baño,,alternar las persianas del <device_name>,"Lo siento, no puedo encontrar el dispositivo <device_name> en la casa."
not_available,garage_door.toggle,sótano,Puerta de garaje del sótano,,cambia el estado de <device_name>,"Lo siento, no puedo localizar <device_name> en la casa."
not_available,light.toggle,piso_de_arriba_mudroom_zigbee,Luz del vestíbulo de arriba,,Alternar <device_name>,"Lo siento, no puedo localizar ese dispositivo en la casa."
not_available,fan.increase_speed,gimnasio_interior,Ventilador de gimnasio interior,,Aumenta la velocidad del <device_name>,"Lo siento, no puedo encontrar el <device_name> en tu casa."
not_available,light.toggle,comedor_1,Luz del comedor,,Cambia el estado de la luz <device_name>,"Lo siento, no puedo encontrar el dispositivo <device_name> en tu casa."
not_available,fan.increase_speed,baño_abajo,Ventilador en el baño de abajo,,Aumenta la velocidad del <device_name>,"Lo siento, no puedo encontrar ese dispositivo en la casa."
already_state,media_player.turn_on,roku_dormitorio,Reproductor Roku de dormitorio,on,Enciende <device_name>,"Lo siento, <device_name> ya está encendido, no es necesario cambiar nada."
not_available,switch.toggle,luces_características_agua,Interruptor de luces de fuente de agua,,Alternar <device_name>,"Lo siento, no encuentro <device_name> en la casa."
not_available,climate.set_temperature,johnson_glas,Termostato inteligente GLAS de Johnson Controls,,Configura la temperatura de <device_name> a 27 grados,"Lo siento, no puedo encontrar <device_name> en tu hogar."
already_state,lock.lock,puerta_entrada,Cerradura de puerta de entrada,locked,Bloquea el <device_name>,"Ya está bloqueado, no es necesario hacer nada."
already_state,light.turn_on,baño_2,Luz del baño,on,Enciende la luz <device_name> en blanco,"La luz ya está encendida, no es necesario cambiar nada."
not_available,garage_door.stop_cover,chambelán_2,Chambelán,,Detén <device_name>,"Lo siento, no puedo localizar ese dispositivo en la casa."
not_available,media_player.volume_down,ipad_cocina,iPad de cocina,,Baja el volumen de <device_name>,"Lo siento, no encuentro un dispositivo llamado <device_name> en tu casa."
already_state,light.turn_off,front_sideyard_ge,Luz de patio lateral delantera,off,Apaga la luz <device_name>,"Lo siento, <device_name> ya está apagada, no es necesario cambiar nada."
not_available,vacuum.stop,habitación_de_invitados_abajo,Aspiradora de la habitación de invitados de la planta baja,,detener <device_name>,"Lo siento, no puedo localizar ese dispositivo en la casa."
not_available,garage_door.open_cover,cobertizo_para_bicicletas,Puerta del cobertizo para bicicletas,,abrir la cubierta del <device_name>,"Lo siento, no puedo localizar ese dispositivo en tu hogar."
not_available,switch.toggle,luces_bajo_gabinete,Interruptor de luces debajo del gabinete,,cambia <device_name>,"Lo siento, no puedo encontrar el dispositivo <device_name> en la casa."
not_available,media_player.volume_down,huésped_habitación_tv_set,Televisión en la habitación de huéspedes,,Bajar el volumen de <device_name>,"Lo siento, no puedo encontrar <device_name> en la casa."
not_available,climate.turn_on,trane_comfortlink_ii,Trane ComfortLink II XL1050,,encender <device_name>,"Lo siento, no puedo encontrar ese dispositivo en la casa."
already_state,light.turn_on,abajo_mancave_homekit,Luz de la cueva del hombre de abajo,on,Encender la luz <device_name> en color amarillo,"La luz ya está encendida, no es necesario cambiar nada."
already_state,climate.turn_on,trane_comfortlink_ii,Trane ComfortLink II XL1050,on,Enciende <device_name>,"Lo siento, <device_name> ya está encendido, no es necesario cambiar nada."
not_available,media_player.volume_up,samsung_qled_tv,Televisor Samsung Quantum Dot,,Sube el volumen de <device_name>,"Lo siento, no puedo encontrar el dispositivo <device_name> en la casa."
not_available,media_player.volume_down,asistente_de_voz_de_entrada,Asistente de voz de entrada,,Bajar el volumen del <device_name>,"Lo siento, no puedo encontrar el dispositivo <device_name> en la casa."
not_available,fan.toggle,estudio_1,fanático del estudio,,cambia el estado de <device_name>,"Lo siento, no encuentro <device_name> en la casa."
already_state,climate.turn_on,termostato_kono,Termostato inteligente Kono,on,Enciende la climatización de <device_name>,"Lo siento, <device_name> ya está encendido, no es necesario cambiar nada."
not_available,vacuum.start,robot_esquina_izquierda,Succionador de suciedad de la esquina izquierda,,Inicia el <device_name>,"Lo siento, no puedo encontrar ese dispositivo en la casa."
not_available,lock.unlock,cobertizo_2,Cerradura del segundo cobertizo,,Desbloquear <device_name>,"Lo siento, no puedo localizar ese dispositivo en la casa."
already_state,garage_door.open_cover,almacenamiento_bicicletas,Garaje para guardar bicicletas,open,abrir la cubierta del <device_name>,"La cubierta ya está abierta, no es necesario hacer nada."
not_available,fan.decrease_speed,estudio_1,fanático del estudio,,Disminuye la velocidad del <device_name>,"Lo siento, no puedo encontrar ese dispositivo en tu hogar."
not_available,blinds.stop_cover,ikea_inteligente,Persianas Inteligentes Ikea,,Detén la persiana <device_name>,"Lo siento, no puedo encontrar la persiana <device_name> en tu hogar."
not_available,garage_door.toggle,lado_2,Puerta de garaje lateral,,abrir o cerrar <device_name>,"Lo siento, no encuentro ese dispositivo en tu casa."
not_available,garage_door.toggle,cochera,Puerta de garaje,,abrir <device_name>,"Lo siento, no puedo localizar <device_name> en tu casa."
not_available,climate.turn_off,nido_aprendizaje,Termostato de aprendizaje Nest,,Apaga el clima del <device_name>,"Lo siento, no puedo encontrar ese dispositivo en la casa."
not_available,media_player.volume_down,cocina,Reproductor multimedia de cocina,,bajar el volumen del <device_name>,"Lo siento, no puedo encontrar el dispositivo <device_name> en tu casa."
not_available,blinds.toggle,guardería,Persianas infantiles,,cambia el estado de <device_name>,"Lo siento, no puedo localizar <device_name> en la casa."
not_available,climate.turn_on,ecobee_smart,Termostato inteligente Ecobee,,Enciende el clima <device_name>,"Lo siento, no puedo localizar el dispositivo <device_name> en la casa."
not_available,light.turn_on,arriba_chimenea_zwave,Luz de la chimenea de arriba,,Enciende la luz del <device_name>,"Lo siento, no puedo localizar el dispositivo <device_name> en tu hogar."
not_available,fan.decrease_speed,porche,ventilador de techo para porche,,Disminuye la velocidad del <device_name>,"Lo siento, no puedo encontrar el <device_name> en tu casa."
not_available,fan.turn_off,patio,ventilador de patio,,Apaga el <device_name>,"Lo siento, no puedo encontrar ese dispositivo en tu hogar."
not_available,climate.set_temperature,bosch_bcc100,Control conectado Bosch BCC100,,Ajusta la temperatura del <device_name> a 23 grados,"Lo siento, no puedo encontrar el dispositivo <device_name> en la casa."
already_state,switch.turn_off,luces_solárium,Interruptor de luces acristaladas,off,Apaga el <device_name>,"Lo siento, el <device_name> ya está apagado, no hay nada que cambiar."
not_available,lock.unlock,deposito_de_seguridad,Caja de Depósitos Seguros,,Desbloquear <device_name>,"Lo siento, no puedo localizar ese dispositivo en la casa."
not_available,media_player.turn_on,corriente_portátil,Transmisión de computadora portátil,,Enciende <device_name>,"Lo siento, no puedo localizar el dispositivo <device_name> en la casa."
not_available,media_player.media_play_pause,tocadiscos_vinilo_attico,Tocadiscos de vinilo para ático,,Reproducir o pausar el medio en <device_name>,"Lo siento, no puedo encontrar el dispositivo <device_name> en tu hogar."
not_available,light.turn_on,front_yard_osram,Patio delantero Osram,,encender <device_name> al 20% de brillo y color verde,"Lo siento, no puedo encontrar <device_name> en la casa."
already_state,fan.turn_on,cocina_1,Ventiladores de cocina,on,Enciende el ventilador <device_name>,"El ventilador ya está encendido, no es necesario volver a activarlo."
already_state,media_player.turn_on,sony_ps_lx310bt,Tocadiscos Bluetooth Sony,on,Enciende <device_name>,"Lo siento, <device_name> ya está encendido, no hay nada que cambiar."
not_available,blinds.toggle,ventana_trasera,Persianas de ventana trasera,,alternar <device_name>,"Lo siento, no puedo encontrar <device_name> en la casa."
already_state,media_player.turn_off,amazon_echo_show,Pantalla inteligente Amazon Echo,off,Apaga el <device_name>,"Lo siento, <device_name> ya está apagado, no hay nada que hacer."
not_available,garage_door.stop_cover,ascensormaster_2,ascensormaster,,detener la cubierta del <device_name>,"Lo siento, no encuentro el <device_name> en tu hogar."
already_state,media_player.media_play_pause,samsung_qled_tv,Televisor Samsung Quantum Dot,playing,Pausa <device_name>,"Ya está reproduciéndose, no es necesario pausar."
not_available,climate.turn_on,bosch_bcc100,Control conectado Bosch BCC100,,Enciende el <device_name>,"Lo siento, no puedo localizar ese dispositivo en la casa."
not_available,fan.turn_on,estudio_1,fanático del estudio,,Enciende el <device_name>,"Lo siento, no puedo localizar ese dispositivo en la casa."
not_available,fan.toggle,cobertizo,ventilador de cobertizo,,Alternar el <device_name>,"Lo siento, no encuentro el <device_name> en tu hogar."
already_state,climate.turn_off,honeywell_lyric_t6,Honeywell Letra T6 Pro,off,apaga el clima de <device_name>,"El clima ya está apagado, no es necesario hacer nada."
already_state,vacuum.return_to_base,robot_arriba_escaleras,Dispositivo para quitar el polvo encima de las escaleras,docked,Que <device_name> vuelva a la base,"El <device_name> ya está en la base, no es necesario moverlo."
not_available,vacuum.stop,frente_hall_samsung,Robot de barrido del vestíbulo,,Detener <device_name>,"Lo siento, no puedo localizar ese dispositivo en la casa."
not_available,vacuum.start,master_dormitorio_tiburón,aspiradora de dormitorio principal,,Inicia <device_name>,"Lo siento, no encuentro ese dispositivo en tu casa."
not_available,fan.turn_off,cobertizo,ventilador de cobertizo,,Apaga el <device_name>,"Lo siento, no puedo localizar ese dispositivo en la casa."
already_state,lock.lock,estudio,Bloqueo de estudio,locked,Lock <device_name>,"Lo siento, <device_name> ya está bloqueado, no es necesario hacer nada."
not_available,switch.toggle,luces_almacén,Interruptor de luces de almacén,,alternar <device_name>,"Lo siento, no puedo encontrar el dispositivo <device_name> en tu casa."
already_state,lock.unlock,trastero,Cerradura del trastero,unlocked,Desbloquear <device_name>,"Lo siento, <device_name> ya está desbloqueado, no es necesario cambiar nada."
already_state,lock.lock,oficina,Cerradura de oficina,locked,Bloquear <device_name>,"Ya está bloqueado, no es necesario cambiar nada."
not_available,garage_door.close_cover,equipo_cesped,Puerta para equipo de césped,,cierra la cubierta del <device_name>,"Lo siento, no puedo encontrar ese dispositivo en tu casa."
not_available,vacuum.return_to_base,arriba_baño_vac,Ayudante de baño de arriba,,Haz que <device_name> vuelva a la base,"Lo siento, no puedo encontrar ese dispositivo en la casa."
not_available,switch.turn_on,luces_solárium,Interruptor de luces acristaladas,,Enciende <device_name>,"Lo siento, no puedo localizar <device_name> en la casa."
not_available,fan.decrease_speed,ático_3,Ventiladores del ático,,Disminuye la velocidad del <device_name>,"Lo siento, no puedo encontrar ese dispositivo en tu casa."
not_available,climate.set_temperature,termostato_lux_geo,Termostato Wifi Lux Geo,,Configura la temperatura del <device_name> a 25 grados,"Lo siento, no puedo localizar el <device_name> en la casa."
already_state,garage_door.open_cover,invitado,Puerta de garaje para invitados,open,abre la cubierta del <device_name>,"Lo siento, la cubierta del <device_name> ya está abierta; no hay necesidad de hacer nada."
already_state,media_player.turn_off,patio,Reproductor multimedia para patio,off,apaga <device_name>,"El <device_name> ya está apagado, no es necesario hacer nada."
already_state,fan.turn_off,porche_trasero,Ventilador del porche trasero,off,Apaga el <device_name>,"Lo siento, el <device_name> ya está apagado, no hay nada que cambiar."
not_available,media_player.volume_up,chromecast,Medios Chromecast,,Sube el volumen del <device_name>,"Lo siento, no puedo localizar el dispositivo <device_name> en la casa."
not_available,climate.turn_on,termostato_zen_wifi,Termostato Zen Edición WiFi,,Enciende el <device_name>,"Lo siento, no puedo encontrar ese dispositivo en la casa."
already_state,garage_door.close_cover,chambelán_2,Chambelán,closed,cierra la cubierta del <device_name>,"Lo siento, la cubierta ya está cerrada, no hay nada que cambiar."
not_available,fan.turn_on,porche_delantero,Ventilador del porche delantero,,Enciende el <device_name>,"Lo siento, no puedo localizar el <device_name> en la casa."
not_available,blinds.close_cover,ventana_oficina,Persianas para ventanas de oficina,,Cierra <device_name>,"Lo siento, no puedo localizar ese dispositivo en la casa."
not_available,lock.lock,puerta_trasera,Cerradura de puerta trasera,,cierra <device_name>,"Lo siento, no puedo encontrar ese dispositivo en la casa."
not_available,switch.turn_off,luces_taller,Interruptor de luces de taller,,apaga <device_name>,"Lo siento, no puedo localizar ese dispositivo en la casa."
not_available,lock.unlock,puerta_trasera,Cerradura de puerta trasera,,Desbloquea <device_name>,"Lo siento, no puedo localizar <device_name> en la casa."
not_available,lock.lock,almacenamiento_esquí,Candado para guardar esquís,,cierra la cerradura <device_name>,"Lo siento, no puedo encontrar el dispositivo <device_name> en la casa."
not_available,vacuum.start,arriba_dyson,Eliminador de polvo de arriba,,Inicia el <device_name>,"Lo siento, no puedo localizar ese dispositivo en la casa."
already_state,switch.turn_off,luces_cuarto_utilidad,Interruptor de luces del lavadero,off,apaga <device_name>,"El <device_name> ya está apagado, no es necesario hacer nada."
already_state,light.turn_off,front_yard_osram,Patio delantero Osram,off,Apaga la luz de <device_name>,"Lo siento, la <device_name> ya está apagada, no hay nada que cambiar."
not_available,switch.toggle,iluminación_de_teatro_en_casa,Control de luces de cine en casa,,cambia el estado de <device_name>,"Lo siento, no puedo localizar <device_name> en tu hogar."
not_available,lock.unlock,puerta_piscina,Cerradura de puerta de piscina,,Desbloquear <device_name>,"Lo siento, no puedo encontrar el dispositivo <device_name> en tu casa."
not_available,vacuum.stop,patio_puerta_vac,Limpiador de puertas de patio,,Detén el <device_name>,"Lo siento, no puedo localizar ese dispositivo en la casa."
not_available,climate.set_temperature,sinope_inteligente,Termostato inteligente Sinopé,,Ajusta la temperatura del <device_name> a 27 grados,"Lo siento, no puedo localizar el <device_name> en tu hogar."
not_available,fan.decrease_speed,porche,ventilador de techo para porche,,Baja la velocidad del <device_name>,"Lo siento, no puedo encontrar el <device_name> en la casa."
not_available,climate.set_temperature,nido_aprendizaje,Termostato de aprendizaje Nest,,Ajusta la temperatura del <device_name> a 24 grados,"Lo siento, no puedo localizar el <device_name> en la casa."
already_state,climate.turn_on,johnson_glas,Termostato inteligente GLAS de Johnson Controls,on,encender el clima en <device_name>,"Lo siento, <device_name> ya está encendido, no hay nada que cambiar."
not_available,media_player.media_play_pause,bose_living,Sala de estar Bosé,,reproducir o pausar <device_name>,"Lo siento, no puedo localizar el dispositivo <device_name> en la casa."
not_available,media_player.turn_on,punto_echo,Punto eco de cocina,,Enciende <device_name>,"Lo siento, no puedo localizar el dispositivo <device_name> en tu hogar."
already_state,climate.turn_off,emerson_sensi_touch,Termostato WiFi Emerson Sensi Touch,off,Apaga el clima de <device_name>,"El dispositivo ya está apagado, no es necesario realizar ningún cambio."
not_available,lock.lock,puerta_lateral,Cerradura de puerta lateral,,Lock the <device_name>,"Lo siento, no puedo encontrar el dispositivo <device_name> en tu hogar."
not_available,lock.lock,despensa,Cerradura de despensa,,Bloquear <device_name>,"Lo siento, no puedo encontrar el dispositivo <device_name> en tu hogar."
not_available,media_player.volume_down,huésped_habitación_tv_set,Televisión en la habitación de huéspedes,,Baja el volumen de <device_name>,"Lo siento, no puedo encontrar el dispositivo <device_name> en la casa."
not_available,fan.increase_speed,dormitorio,Ventilador de dormitorio,,Aumenta la velocidad del <device_name>,"Lo siento, no puedo localizar el <device_name> en la casa."
not_available,fan.toggle,cocina_1,Ventiladores de cocina,,Alternar <device_name>,"Lo siento, no puedo localizar <device_name> en tu hogar."
not_available,vacuum.return_to_base,entrada_eufy,Colector de polvo de entrada,,Haz que <device_name> vuelva a la base,"Lo siento, no puedo localizar ese dispositivo en la casa."
already_state,light.turn_off,espejo_de_baño,Luces de espejo,off,apaga la luz <device_name>,"La luz ya está apagada, no hay nada que cambiar."
already_state,blinds.close_cover,claraboya,Persianas de tragaluz,closed,Cierra la persiana <device_name>,"Lo siento, <device_name> ya está cerrada, no hay nada que cambiar."
not_available,light.turn_on,front_playroom_homekit,Luz frontal de la sala de juegos,,encender <device_name>,"Lo siento, no puedo localizar ese dispositivo en la casa."
not_available,fan.turn_off,estudio_2,fanático del estudio,,Apaga el <device_name>,"Lo siento, no puedo encontrar el <device_name> en la casa."
already_state,media_player.turn_on,consola_sala_de_juegos,Consola de sala de juegos,on,Enciende <device_name>,"Ya está encendido, no es necesario cambiar nada."
1 reason_type service_name device_name friendly_name desired_state phrase response
2 not_available lock.lock back_door Cerrojo de la puerta trasera Cierra con llave el <device_name>. No encuentro un cerrojo de la puerta trasera para controlar.
3 already_state light.turn_on hallway Luces del pasillo on Enciende las <device_name>. Las luces del pasillo ya están encendidas.
4 already_state switch.turn_off garage Enchufe del garaje off Apaga el <device_name>. El enchufe del garaje ya está apagado.
5 not_available climate.set_temperature mysa_smart_thermostat Termostato inteligente Mysa para calentadores eléctricos de zócalo Ajusta la temperatura a 19 grados en <device_name>. Lo siento, no puedo encontrar <device_name> en tu casa.
6 not_available media_player.volume_down sonos_arc Barra de sonido inteligente Sonos Baja el volumen del <device_name> Lo siento, no puedo encontrar el dispositivo <device_name> en la casa.
7 not_available lock.lock sótano Cerradura del sótano Bloquear <device_name> Lo siento, no puedo encontrar ese dispositivo en la casa.
8 not_available media_player.volume_down tocadiscos_vinilo_attico Tocadiscos de vinilo para ático Baja el volumen del <device_name> Lo siento, no puedo encontrar el dispositivo <device_name> en la casa.
9 not_available switch.turn_off luces_características_agua Interruptor de luces de fuente de agua Apaga el <device_name> Lo siento, no puedo encontrar el <device_name> en la casa.
10 not_available light.toggle arriba_dormitorio_niños_zigbee Luz del dormitorio infantil de arriba Encender o apagar <device_name> Lo siento, no puedo localizar ese dispositivo en tu casa.
11 not_available fan.turn_on centro_sala_estar Ventilador central para salón Enciende el <device_name> Lo siento, no puedo localizar ese dispositivo en la casa.
12 not_available light.toggle front_mancave_ge Luz de la cueva del hombre frontal cambiar el estado de la luz <device_name> Lo siento, no puedo encontrar el dispositivo <device_name> en tu hogar.
13 already_state switch.turn_off iluminación_de_teatro_en_casa Control de luces de cine en casa off Apaga <device_name> Lo siento, <device_name> ya está apagado, no hay nada que cambiar.
14 not_available light.turn_off kit_de_entrenamiento_frontal Luz de entrenamiento frontal apaga la luz del <device_name> Lo siento, no puedo encontrar el dispositivo <device_name> en la casa.
15 not_available fan.turn_off honeywell_turbo Ventilador turbo Honeywell Apaga el <device_name> Lo siento, no puedo encontrar ese dispositivo en la casa.
16 not_available garage_door.stop_cover ascensormaster_2 ascensormaster Detén la cubierta del <device_name> Lo siento, no puedo encontrar ese dispositivo en tu hogar.
17 already_state light.turn_on yeelight_smart Luz inteligente Yeelight on Enciende <device_name> Lo siento, <device_name> ya está encendida, no es necesario encenderla.
18 not_available light.turn_on back_closet_warm Armario Trasero Luz Cálida Enciende la luz <device_name> Lo siento, no encuentro el dispositivo <device_name> en la casa.
19 not_available climate.set_temperature termostato_zen_wifi Termostato Zen Edición WiFi Set the temperature of <device_name> to 27 Lo siento, no puedo localizar ese dispositivo en la casa.
20 not_available switch.turn_on iluminación_puerta_frontal Interruptor de luces de puerta delantera Enciende <device_name> Lo siento, no puedo localizar <device_name> en la casa.
21 not_available blinds.toggle baño Persianas de baño alternar las persianas del <device_name> Lo siento, no puedo encontrar el dispositivo <device_name> en la casa.
22 not_available garage_door.toggle sótano Puerta de garaje del sótano cambia el estado de <device_name> Lo siento, no puedo localizar <device_name> en la casa.
23 not_available light.toggle piso_de_arriba_mudroom_zigbee Luz del vestíbulo de arriba Alternar <device_name> Lo siento, no puedo localizar ese dispositivo en la casa.
24 not_available fan.increase_speed gimnasio_interior Ventilador de gimnasio interior Aumenta la velocidad del <device_name> Lo siento, no puedo encontrar el <device_name> en tu casa.
25 not_available light.toggle comedor_1 Luz del comedor Cambia el estado de la luz <device_name> Lo siento, no puedo encontrar el dispositivo <device_name> en tu casa.
26 not_available fan.increase_speed baño_abajo Ventilador en el baño de abajo Aumenta la velocidad del <device_name> Lo siento, no puedo encontrar ese dispositivo en la casa.
27 already_state media_player.turn_on roku_dormitorio Reproductor Roku de dormitorio on Enciende <device_name> Lo siento, <device_name> ya está encendido, no es necesario cambiar nada.
28 not_available switch.toggle luces_características_agua Interruptor de luces de fuente de agua Alternar <device_name> Lo siento, no encuentro <device_name> en la casa.
29 not_available climate.set_temperature johnson_glas Termostato inteligente GLAS de Johnson Controls Configura la temperatura de <device_name> a 27 grados Lo siento, no puedo encontrar <device_name> en tu hogar.
30 already_state lock.lock puerta_entrada Cerradura de puerta de entrada locked Bloquea el <device_name> Ya está bloqueado, no es necesario hacer nada.
31 already_state light.turn_on baño_2 Luz del baño on Enciende la luz <device_name> en blanco La luz ya está encendida, no es necesario cambiar nada.
32 not_available garage_door.stop_cover chambelán_2 Chambelán Detén <device_name> Lo siento, no puedo localizar ese dispositivo en la casa.
33 not_available media_player.volume_down ipad_cocina iPad de cocina Baja el volumen de <device_name> Lo siento, no encuentro un dispositivo llamado <device_name> en tu casa.
34 already_state light.turn_off front_sideyard_ge Luz de patio lateral delantera off Apaga la luz <device_name> Lo siento, <device_name> ya está apagada, no es necesario cambiar nada.
35 not_available vacuum.stop habitación_de_invitados_abajo Aspiradora de la habitación de invitados de la planta baja detener <device_name> Lo siento, no puedo localizar ese dispositivo en la casa.
36 not_available garage_door.open_cover cobertizo_para_bicicletas Puerta del cobertizo para bicicletas abrir la cubierta del <device_name> Lo siento, no puedo localizar ese dispositivo en tu hogar.
37 not_available switch.toggle luces_bajo_gabinete Interruptor de luces debajo del gabinete cambia <device_name> Lo siento, no puedo encontrar el dispositivo <device_name> en la casa.
38 not_available media_player.volume_down huésped_habitación_tv_set Televisión en la habitación de huéspedes Bajar el volumen de <device_name> Lo siento, no puedo encontrar <device_name> en la casa.
39 not_available climate.turn_on trane_comfortlink_ii Trane ComfortLink II XL1050 encender <device_name> Lo siento, no puedo encontrar ese dispositivo en la casa.
40 already_state light.turn_on abajo_mancave_homekit Luz de la cueva del hombre de abajo on Encender la luz <device_name> en color amarillo La luz ya está encendida, no es necesario cambiar nada.
41 already_state climate.turn_on trane_comfortlink_ii Trane ComfortLink II XL1050 on Enciende <device_name> Lo siento, <device_name> ya está encendido, no es necesario cambiar nada.
42 not_available media_player.volume_up samsung_qled_tv Televisor Samsung Quantum Dot Sube el volumen de <device_name> Lo siento, no puedo encontrar el dispositivo <device_name> en la casa.
43 not_available media_player.volume_down asistente_de_voz_de_entrada Asistente de voz de entrada Bajar el volumen del <device_name> Lo siento, no puedo encontrar el dispositivo <device_name> en la casa.
44 not_available fan.toggle estudio_1 fanático del estudio cambia el estado de <device_name> Lo siento, no encuentro <device_name> en la casa.
45 already_state climate.turn_on termostato_kono Termostato inteligente Kono on Enciende la climatización de <device_name> Lo siento, <device_name> ya está encendido, no es necesario cambiar nada.
46 not_available vacuum.start robot_esquina_izquierda Succionador de suciedad de la esquina izquierda Inicia el <device_name> Lo siento, no puedo encontrar ese dispositivo en la casa.
47 not_available lock.unlock cobertizo_2 Cerradura del segundo cobertizo Desbloquear <device_name> Lo siento, no puedo localizar ese dispositivo en la casa.
48 already_state garage_door.open_cover almacenamiento_bicicletas Garaje para guardar bicicletas open abrir la cubierta del <device_name> La cubierta ya está abierta, no es necesario hacer nada.
49 not_available fan.decrease_speed estudio_1 fanático del estudio Disminuye la velocidad del <device_name> Lo siento, no puedo encontrar ese dispositivo en tu hogar.
50 not_available blinds.stop_cover ikea_inteligente Persianas Inteligentes Ikea Detén la persiana <device_name> Lo siento, no puedo encontrar la persiana <device_name> en tu hogar.
51 not_available garage_door.toggle lado_2 Puerta de garaje lateral abrir o cerrar <device_name> Lo siento, no encuentro ese dispositivo en tu casa.
52 not_available garage_door.toggle cochera Puerta de garaje abrir <device_name> Lo siento, no puedo localizar <device_name> en tu casa.
53 not_available climate.turn_off nido_aprendizaje Termostato de aprendizaje Nest Apaga el clima del <device_name> Lo siento, no puedo encontrar ese dispositivo en la casa.
54 not_available media_player.volume_down cocina Reproductor multimedia de cocina bajar el volumen del <device_name> Lo siento, no puedo encontrar el dispositivo <device_name> en tu casa.
55 not_available blinds.toggle guardería Persianas infantiles cambia el estado de <device_name> Lo siento, no puedo localizar <device_name> en la casa.
56 not_available climate.turn_on ecobee_smart Termostato inteligente Ecobee Enciende el clima <device_name> Lo siento, no puedo localizar el dispositivo <device_name> en la casa.
57 not_available light.turn_on arriba_chimenea_zwave Luz de la chimenea de arriba Enciende la luz del <device_name> Lo siento, no puedo localizar el dispositivo <device_name> en tu hogar.
58 not_available fan.decrease_speed porche ventilador de techo para porche Disminuye la velocidad del <device_name> Lo siento, no puedo encontrar el <device_name> en tu casa.
59 not_available fan.turn_off patio ventilador de patio Apaga el <device_name> Lo siento, no puedo encontrar ese dispositivo en tu hogar.
60 not_available climate.set_temperature bosch_bcc100 Control conectado Bosch BCC100 Ajusta la temperatura del <device_name> a 23 grados Lo siento, no puedo encontrar el dispositivo <device_name> en la casa.
61 already_state switch.turn_off luces_solárium Interruptor de luces acristaladas off Apaga el <device_name> Lo siento, el <device_name> ya está apagado, no hay nada que cambiar.
62 not_available lock.unlock deposito_de_seguridad Caja de Depósitos Seguros Desbloquear <device_name> Lo siento, no puedo localizar ese dispositivo en la casa.
63 not_available media_player.turn_on corriente_portátil Transmisión de computadora portátil Enciende <device_name> Lo siento, no puedo localizar el dispositivo <device_name> en la casa.
64 not_available media_player.media_play_pause tocadiscos_vinilo_attico Tocadiscos de vinilo para ático Reproducir o pausar el medio en <device_name> Lo siento, no puedo encontrar el dispositivo <device_name> en tu hogar.
65 not_available light.turn_on front_yard_osram Patio delantero Osram encender <device_name> al 20% de brillo y color verde Lo siento, no puedo encontrar <device_name> en la casa.
66 already_state fan.turn_on cocina_1 Ventiladores de cocina on Enciende el ventilador <device_name> El ventilador ya está encendido, no es necesario volver a activarlo.
67 already_state media_player.turn_on sony_ps_lx310bt Tocadiscos Bluetooth Sony on Enciende <device_name> Lo siento, <device_name> ya está encendido, no hay nada que cambiar.
68 not_available blinds.toggle ventana_trasera Persianas de ventana trasera alternar <device_name> Lo siento, no puedo encontrar <device_name> en la casa.
69 already_state media_player.turn_off amazon_echo_show Pantalla inteligente Amazon Echo off Apaga el <device_name> Lo siento, <device_name> ya está apagado, no hay nada que hacer.
70 not_available garage_door.stop_cover ascensormaster_2 ascensormaster detener la cubierta del <device_name> Lo siento, no encuentro el <device_name> en tu hogar.
71 already_state media_player.media_play_pause samsung_qled_tv Televisor Samsung Quantum Dot playing Pausa <device_name> Ya está reproduciéndose, no es necesario pausar.
72 not_available climate.turn_on bosch_bcc100 Control conectado Bosch BCC100 Enciende el <device_name> Lo siento, no puedo localizar ese dispositivo en la casa.
73 not_available fan.turn_on estudio_1 fanático del estudio Enciende el <device_name> Lo siento, no puedo localizar ese dispositivo en la casa.
74 not_available fan.toggle cobertizo ventilador de cobertizo Alternar el <device_name> Lo siento, no encuentro el <device_name> en tu hogar.
75 already_state climate.turn_off honeywell_lyric_t6 Honeywell Letra T6 Pro off apaga el clima de <device_name> El clima ya está apagado, no es necesario hacer nada.
76 already_state vacuum.return_to_base robot_arriba_escaleras Dispositivo para quitar el polvo encima de las escaleras docked Que <device_name> vuelva a la base El <device_name> ya está en la base, no es necesario moverlo.
77 not_available vacuum.stop frente_hall_samsung Robot de barrido del vestíbulo Detener <device_name> Lo siento, no puedo localizar ese dispositivo en la casa.
78 not_available vacuum.start master_dormitorio_tiburón aspiradora de dormitorio principal Inicia <device_name> Lo siento, no encuentro ese dispositivo en tu casa.
79 not_available fan.turn_off cobertizo ventilador de cobertizo Apaga el <device_name> Lo siento, no puedo localizar ese dispositivo en la casa.
80 already_state lock.lock estudio Bloqueo de estudio locked Lock <device_name> Lo siento, <device_name> ya está bloqueado, no es necesario hacer nada.
81 not_available switch.toggle luces_almacén Interruptor de luces de almacén alternar <device_name> Lo siento, no puedo encontrar el dispositivo <device_name> en tu casa.
82 already_state lock.unlock trastero Cerradura del trastero unlocked Desbloquear <device_name> Lo siento, <device_name> ya está desbloqueado, no es necesario cambiar nada.
83 already_state lock.lock oficina Cerradura de oficina locked Bloquear <device_name> Ya está bloqueado, no es necesario cambiar nada.
84 not_available garage_door.close_cover equipo_cesped Puerta para equipo de césped cierra la cubierta del <device_name> Lo siento, no puedo encontrar ese dispositivo en tu casa.
85 not_available vacuum.return_to_base arriba_baño_vac Ayudante de baño de arriba Haz que <device_name> vuelva a la base Lo siento, no puedo encontrar ese dispositivo en la casa.
86 not_available switch.turn_on luces_solárium Interruptor de luces acristaladas Enciende <device_name> Lo siento, no puedo localizar <device_name> en la casa.
87 not_available fan.decrease_speed ático_3 Ventiladores del ático Disminuye la velocidad del <device_name> Lo siento, no puedo encontrar ese dispositivo en tu casa.
88 not_available climate.set_temperature termostato_lux_geo Termostato Wifi Lux Geo Configura la temperatura del <device_name> a 25 grados Lo siento, no puedo localizar el <device_name> en la casa.
89 already_state garage_door.open_cover invitado Puerta de garaje para invitados open abre la cubierta del <device_name> Lo siento, la cubierta del <device_name> ya está abierta; no hay necesidad de hacer nada.
90 already_state media_player.turn_off patio Reproductor multimedia para patio off apaga <device_name> El <device_name> ya está apagado, no es necesario hacer nada.
91 already_state fan.turn_off porche_trasero Ventilador del porche trasero off Apaga el <device_name> Lo siento, el <device_name> ya está apagado, no hay nada que cambiar.
92 not_available media_player.volume_up chromecast Medios Chromecast Sube el volumen del <device_name> Lo siento, no puedo localizar el dispositivo <device_name> en la casa.
93 not_available climate.turn_on termostato_zen_wifi Termostato Zen Edición WiFi Enciende el <device_name> Lo siento, no puedo encontrar ese dispositivo en la casa.
94 already_state garage_door.close_cover chambelán_2 Chambelán closed cierra la cubierta del <device_name> Lo siento, la cubierta ya está cerrada, no hay nada que cambiar.
95 not_available fan.turn_on porche_delantero Ventilador del porche delantero Enciende el <device_name> Lo siento, no puedo localizar el <device_name> en la casa.
96 not_available blinds.close_cover ventana_oficina Persianas para ventanas de oficina Cierra <device_name> Lo siento, no puedo localizar ese dispositivo en la casa.
97 not_available lock.lock puerta_trasera Cerradura de puerta trasera cierra <device_name> Lo siento, no puedo encontrar ese dispositivo en la casa.
98 not_available switch.turn_off luces_taller Interruptor de luces de taller apaga <device_name> Lo siento, no puedo localizar ese dispositivo en la casa.
99 not_available lock.unlock puerta_trasera Cerradura de puerta trasera Desbloquea <device_name> Lo siento, no puedo localizar <device_name> en la casa.
100 not_available lock.lock almacenamiento_esquí Candado para guardar esquís cierra la cerradura <device_name> Lo siento, no puedo encontrar el dispositivo <device_name> en la casa.
101 not_available vacuum.start arriba_dyson Eliminador de polvo de arriba Inicia el <device_name> Lo siento, no puedo localizar ese dispositivo en la casa.
102 already_state switch.turn_off luces_cuarto_utilidad Interruptor de luces del lavadero off apaga <device_name> El <device_name> ya está apagado, no es necesario hacer nada.
103 already_state light.turn_off front_yard_osram Patio delantero Osram off Apaga la luz de <device_name> Lo siento, la <device_name> ya está apagada, no hay nada que cambiar.
104 not_available switch.toggle iluminación_de_teatro_en_casa Control de luces de cine en casa cambia el estado de <device_name> Lo siento, no puedo localizar <device_name> en tu hogar.
105 not_available lock.unlock puerta_piscina Cerradura de puerta de piscina Desbloquear <device_name> Lo siento, no puedo encontrar el dispositivo <device_name> en tu casa.
106 not_available vacuum.stop patio_puerta_vac Limpiador de puertas de patio Detén el <device_name> Lo siento, no puedo localizar ese dispositivo en la casa.
107 not_available climate.set_temperature sinope_inteligente Termostato inteligente Sinopé Ajusta la temperatura del <device_name> a 27 grados Lo siento, no puedo localizar el <device_name> en tu hogar.
108 not_available fan.decrease_speed porche ventilador de techo para porche Baja la velocidad del <device_name> Lo siento, no puedo encontrar el <device_name> en la casa.
109 not_available climate.set_temperature nido_aprendizaje Termostato de aprendizaje Nest Ajusta la temperatura del <device_name> a 24 grados Lo siento, no puedo localizar el <device_name> en la casa.
110 already_state climate.turn_on johnson_glas Termostato inteligente GLAS de Johnson Controls on encender el clima en <device_name> Lo siento, <device_name> ya está encendido, no hay nada que cambiar.
111 not_available media_player.media_play_pause bose_living Sala de estar Bosé reproducir o pausar <device_name> Lo siento, no puedo localizar el dispositivo <device_name> en la casa.
112 not_available media_player.turn_on punto_echo Punto eco de cocina Enciende <device_name> Lo siento, no puedo localizar el dispositivo <device_name> en tu hogar.
113 already_state climate.turn_off emerson_sensi_touch Termostato WiFi Emerson Sensi Touch off Apaga el clima de <device_name> El dispositivo ya está apagado, no es necesario realizar ningún cambio.
114 not_available lock.lock puerta_lateral Cerradura de puerta lateral Lock the <device_name> Lo siento, no puedo encontrar el dispositivo <device_name> en tu hogar.
115 not_available lock.lock despensa Cerradura de despensa Bloquear <device_name> Lo siento, no puedo encontrar el dispositivo <device_name> en tu hogar.
116 not_available media_player.volume_down huésped_habitación_tv_set Televisión en la habitación de huéspedes Baja el volumen de <device_name> Lo siento, no puedo encontrar el dispositivo <device_name> en la casa.
117 not_available fan.increase_speed dormitorio Ventilador de dormitorio Aumenta la velocidad del <device_name> Lo siento, no puedo localizar el <device_name> en la casa.
118 not_available fan.toggle cocina_1 Ventiladores de cocina Alternar <device_name> Lo siento, no puedo localizar <device_name> en tu hogar.
119 not_available vacuum.return_to_base entrada_eufy Colector de polvo de entrada Haz que <device_name> vuelva a la base Lo siento, no puedo localizar ese dispositivo en la casa.
120 already_state light.turn_off espejo_de_baño Luces de espejo off apaga la luz <device_name> La luz ya está apagada, no hay nada que cambiar.
121 already_state blinds.close_cover claraboya Persianas de tragaluz closed Cierra la persiana <device_name> Lo siento, <device_name> ya está cerrada, no hay nada que cambiar.
122 not_available light.turn_on front_playroom_homekit Luz frontal de la sala de juegos encender <device_name> Lo siento, no puedo localizar ese dispositivo en la casa.
123 not_available fan.turn_off estudio_2 fanático del estudio Apaga el <device_name> Lo siento, no puedo encontrar el <device_name> en la casa.
124 already_state media_player.turn_on consola_sala_de_juegos Consola de sala de juegos on Enciende <device_name> Ya está encendido, no es necesario cambiar nada.

File diff suppressed because it is too large Load Diff

65
data/prompting.py Normal file
View File

@@ -0,0 +1,65 @@
import babel.dates
from utils import Example, generate_random_datetime
CURRENT_DATE_PROMPT = {
"english": "The current time and date is",
"polish": "Aktualna godzina i data to",
"german": "Die aktuelle Uhrzeit und das aktuelle Datum sind",
"french": "L'heure et la date actuelles sont",
"spanish": "La hora y fecha actuales son"
}
DEVICES_PROMPT = {
"english": "Devices",
"polish": "Urządzenia",
"german": "Ger\u00e4te",
"french": "Appareils",
"spanish": "Dispositivos"
}
SERVICES_PROMPT = {
"english": "Services",
"polish": "Usługi",
"german": "Dienste",
"french": "Services",
"spanish": "Servicios"
}
BABEL_LOCALE = {
"english": "en_US",
"polish": "pl_PL",
"german": "de_DE",
"french": "fr_FR",
"spanish": "es_ES"
}
BABEL_FORMAT = {
"english": "h:m a 'on' EEEE, MMMM d yyyy",
"polish": "H:m 'w' EEEE, d MMMM yyyy",
"german": "H:m EEEE, d MMMM yyyy",
"french": "H:m EEEE, d MMMM yyyy",
"spanish": "H:m EEEE, d 'de' MMMM 'de' yyyy"
}
USER_INSTRUCTION_PROMPT = {
"english": "User instruction",
"german": "Benutzeranweisung",
"french": "Instruction de l'utilisateur ",
"spanish": "Instrucción del usuario",
"polish": "Instrukcja użytkownika"
}
def generate_system_prompt(example: Example, persona: str, language: str, pile_of_system_prompts: dict[str, str]) -> str:
sys_prompt = pile_of_system_prompts[persona]
random_datetime = generate_random_datetime()
translate_datetime = babel.dates.format_datetime(random_datetime, BABEL_FORMAT[language], locale=BABEL_LOCALE[language])
time_block = f"{CURRENT_DATE_PROMPT[language]} {translate_datetime}"
states_block = f"{DEVICES_PROMPT[language]}:\n" + "\n".join(example["states"])
# replace aliases with their actual values
states_block = states_block.replace("blinds.", "cover.").replace("garage_door.", "cover.")
return "\n".join([sys_prompt, time_block, states_block])

398
data/reformat_responses.py Normal file
View File

@@ -0,0 +1,398 @@
#!/usr/bin/env python3
"""
Script to reformat CSV responses by splitting the 'response' column into
'response_starting' (action in progress) and 'response_confirmed' (action completed)
using llama.cpp's native chat completion endpoint with concurrent aiohttp calls.
pip3 install aiohttp pydantic tqdm
"""
import argparse
import asyncio
import csv
import json
import os
import random
from pathlib import Path
from typing import Dict, List, Optional, Tuple
import aiohttp
from pydantic import BaseModel, Field
from tqdm import tqdm
class ResponseFormat(BaseModel):
response_starting: str = Field(description="Response indicating the action is in progress")
response_confirmed: str = Field(description="Response indicating the action has been completed")
TASK_DESCRIPTION = """
You are reformatting assistant responses for a smart home system.
Given an original response that describes an action, generate TWO variations:
1. response_starting: A response indicating the action is IN PROGRESS (starting, initiating, working on it)
2. response_confirmed: A response indicating the action has been SUCCESSFULLY COMPLETED (done, completed, finished)
Both responses should:
- Maintain the same tone and persona as the original
- Keep any device names or parameters (like <device_name>, <temp_f>, etc.) exactly as they appear
- Be natural and conversational
- Be concise (similar length to the original)
- Avoid overly formal language
- Preserve the language of the original data even if it is not English
Example:
Original: "Opening the blinds for you."
{
"response_starting": "Opening the blinds now."
"response_confirmed": "The blinds are now open."
}
Original: "Setting temperature to <temp_f> degrees."
{
"response_starting": "Setting temperature to <temp_f> degrees."
"response_confirmed": "Temperature has been set to <temp_f> degrees."
}
Respond ONLY with a JSON object in this exact format:
{
"response_starting": "your starting response here",
"response_confirmed": "your confirmed response here"
}
"""
JSON_SCHEMA = ResponseFormat.model_json_schema()
def load_system_prompts(system_prompts_path: Path) -> Dict[str, str]:
"""Load system prompts from CSV file."""
prompts: Dict[str, str] = {}
with open(system_prompts_path, 'r', encoding='utf-8') as f:
reader = csv.DictReader(f)
for row in reader:
prompts[row['persona']] = row['prompt']
return prompts
def _extract_message_content(payload: Dict) -> str:
"""Extract assistant message content from diverse llama.cpp response shapes."""
if not isinstance(payload, dict):
return ''
if 'choices' in payload and payload['choices']:
message = payload['choices'][0].get('message', {})
content = message.get('content')
else:
content = payload.get('content')
if isinstance(content, list):
parts: List[str] = []
for item in content:
if isinstance(item, dict):
parts.append(item.get('text', ''))
elif isinstance(item, str):
parts.append(item)
return ''.join(parts)
if isinstance(content, str):
return content
return ''
async def generate_reformatted_responses(
session: aiohttp.ClientSession,
url: str,
model: str,
system_prompt: str,
original_response: str,
service: str,
semaphore: asyncio.Semaphore,
max_attempts: int,
) -> Dict[str, str]:
"""Use llama.cpp chat endpoint to generate structured responses with retries."""
user_message = f"""Service: {service}
Original response: {original_response}
Generate the two response variations as specified."""
conversation = [
{
"role": "system",
"content": "You are a helpful synthetic data generation assistant. Your task is to respond only using JSON format as specified."
},
{
"role": "user",
"content": f"{TASK_DESCRIPTION}\n\nCurrent Persona System Prompt: {system_prompt}\n{user_message}"
},
]
schema_payload = {
"type": "json_schema",
"json_schema": {
"name": "response_format",
"schema": JSON_SCHEMA,
},
}
attempts_remaining = max_attempts
last_error: Optional[Exception] = None
content = None
while attempts_remaining > 0:
attempts_remaining -= 1
payload = {
"model": model,
"messages": conversation,
"seed": random.randint(1, 1_000_000),
"response_format": schema_payload,
"stream": False,
}
try:
async with semaphore:
async with session.post(url, json=payload) as response:
response.raise_for_status()
data = await response.json()
content = _extract_message_content(data)
result = json.loads(content)
if 'response_starting' not in result or 'response_confirmed' not in result:
raise ValueError(f"Invalid response format: {result}")
return {
'response_starting': result['response_starting'],
'response_confirmed': result['response_confirmed'],
}
except Exception as exc: # noqa: BLE001
last_error = exc
print(f"\nError processing response '{original_response}': {exc} - new response '{content}'")
conversation.append({
"role": "user",
"content": "The previous response was invalid. Respond ONLY with JSON matching the schema: " + str(JSON_SCHEMA),
})
print(
f"Failed to reformat response after multiple attempts. Using original response of '{original_response}'."
)
if last_error:
print(f"Last error: {last_error}")
return {
'response_starting': original_response,
'response_confirmed': original_response,
}
async def process_csv(
input_path: Path,
output_path: Path,
system_prompts_path: Path,
base_endpoint: str,
route: str,
api_key: str | None,
model: str,
max_concurrency: int,
max_attempts: int,
request_timeout: float,
):
"""Process the CSV file and generate reformatted responses concurrently."""
print("Loading system prompts...")
system_prompts = load_system_prompts(system_prompts_path)
print(f"Loaded {len(system_prompts)} personas: {', '.join(system_prompts.keys())}")
print(f"\nReading input file: {input_path}")
with open(input_path, 'r', encoding='utf-8') as input_file:
reader = csv.DictReader(input_file)
rows = list(reader)
total_rows = len(rows)
print(f"Processing {total_rows} rows with concurrency={max_concurrency}...")
headers = {}
if api_key:
headers["Authorization"] = f"Bearer {api_key}"
timeout = aiohttp.ClientTimeout(total=request_timeout)
endpoint = base_endpoint.rstrip('/') + '/' + route.lstrip('/')
semaphore = asyncio.Semaphore(max_concurrency)
output_file = open(output_path, 'w', encoding='utf-8', newline='')
fieldnames = ['service', 'response_starting', 'response_confirmed', 'persona', 'short']
writer = csv.DictWriter(output_file, fieldnames=fieldnames)
writer.writeheader()
async with aiohttp.ClientSession(headers=headers, timeout=timeout) as session:
tasks = []
for idx, row in enumerate(rows):
tasks.append(
asyncio.create_task(
process_row(
idx,
row,
session,
endpoint,
model,
system_prompts,
semaphore,
max_attempts,
)
)
)
progress = tqdm(total=total_rows, desc="Generating responses")
try:
for coro in asyncio.as_completed(tasks):
idx, output_row = await coro
writer.writerow(output_row)
output_file.flush()
progress.update(1)
finally:
progress.close()
output_file.close()
print(f"✓ Successfully processed {total_rows} rows")
print(f"✓ Output saved to: {output_path}")
async def process_row(
idx: int,
row: Dict[str, str],
session: aiohttp.ClientSession,
endpoint: str,
model: str,
system_prompts: Dict[str, str],
semaphore: asyncio.Semaphore,
max_attempts: int,
) -> Tuple[int, Dict[str, str]]:
"""Process a single CSV row asynchronously."""
service = row['service']
original_response = row['response']
persona = row['persona']
short = row['short']
system_prompt = system_prompts.get(persona, system_prompts.get('assistant', ''))
reformatted = await generate_reformatted_responses(
session=session,
url=endpoint,
model=model,
system_prompt=system_prompt,
original_response=original_response,
service=service,
semaphore=semaphore,
max_attempts=max_attempts,
)
output_row = {
'service': service,
'response_starting': reformatted['response_starting'],
'response_confirmed': reformatted['response_confirmed'],
'persona': persona,
'short': short,
}
return idx, output_row
def main() -> int:
parser = argparse.ArgumentParser(
description="Reformat CSV responses using llama.cpp chat completions with concurrent aiohttp calls",
)
parser.add_argument('input_csv', type=Path, help='Input CSV file path (e.g., pile_of_responses.csv)')
parser.add_argument('output_csv', type=Path, help='Output CSV file path')
parser.add_argument(
'--system-prompts',
type=Path,
help='Path to system prompts CSV file (default: same directory as input, pile_of_system_prompts.csv)',
)
parser.add_argument(
'--endpoint',
type=str,
default='https://ai.cloud.alexoconnell.net/v1',
help='Base URL for the llama.cpp server (default: https://ai.cloud.alexoconnell.net)',
)
parser.add_argument(
'--route',
type=str,
default='/chat/completions',
help='Route for the llama.cpp chat completion endpoint (default: /chat/completions)',
)
parser.add_argument(
'--api-key',
type=str,
default=None,
help='Optional API key for the llama.cpp server (default: use OPENAI_API_KEY env var if set)',
)
parser.add_argument(
'--model',
type=str,
default='gpt-oss-120b',
help='Model to use (default: gpt-oss-120b)',
)
parser.add_argument(
'--max-concurrency',
type=int,
default=4,
help='Maximum number of concurrent generations (default: 4)',
)
parser.add_argument(
'--max-attempts',
type=int,
default=3,
help='Maximum number of retries per row (default: 3)',
)
parser.add_argument(
'--timeout',
type=float,
default=60.0,
help='Total request timeout in seconds (default: 60.0)',
)
args = parser.parse_args()
if not args.input_csv.exists():
print(f"Error: Input file not found: {args.input_csv}")
return 1
if args.system_prompts:
system_prompts_path = args.system_prompts
else:
system_prompts_path = args.input_csv.parent / 'pile_of_system_prompts.csv'
if not system_prompts_path.exists():
print(f"Error: System prompts file not found: {system_prompts_path}")
return 1
api_key = args.api_key or os.environ.get('OPENAI_API_KEY')
args.output_csv.parent.mkdir(parents=True, exist_ok=True)
try:
asyncio.run(
process_csv(
input_path=args.input_csv,
output_path=args.output_csv,
system_prompts_path=system_prompts_path,
base_endpoint=args.endpoint,
route=args.route,
api_key=api_key,
model=args.model,
max_concurrency=args.max_concurrency,
max_attempts=args.max_attempts,
request_timeout=args.timeout,
)
)
return 0
except Exception as exc: # noqa: BLE001
print(f"Error: {exc}")
import traceback
traceback.print_exc()
return 1
if __name__ == '__main__':
raise SystemExit(main())

View File

@@ -3,4 +3,7 @@ webcolors>=24.8.0
pandas>=2.2.3
deep-translator>=1.11.4
langcodes>=3.5.0
babel==2.15.0
babel>=2.15.0
aiohttp>=3.9.0
pydantic>=2.5.0
tqdm>=4.66.0

896
data/synthesize.py Normal file
View File

@@ -0,0 +1,896 @@
import argparse
import asyncio
import csv
import json
import random
import string
import aiohttp
from tqdm import tqdm
import os
from utils import get_dataset_piles
from devices import random_device_list
LLM_ENDPOINT = "https://ai.cloud.alexoconnell.net/v1/chat/completions"
cwd = os.path.dirname(os.path.abspath(__file__))
def get_hass_match_error_message(bad_device_name: str) -> str:
return f"<MatchFailedError result=MatchTargetsResult(is_match=False, no_match_reason=<MatchFailedReason.NAME: 1>, states=[], no_match_name=None, areas=[], floors=[]), constraints=MatchTargetsConstraints(name='{bad_device_name}', area_name=None, floor_name=None, domains=None, device_classes=None, features=None, states=None, assistant='conversation', allow_duplicate_names=False, single_target=False), preferences=MatchTargetsPreferences(area_id=None, floor_id=None)>"
class SyntheticDataGenerator:
def __init__(self, model_name: str, language: str, concurrency: int):
self.language = language
self.concurrency = concurrency
self.model_name = model_name
self.piles = get_dataset_piles(language)
self.synthetic_devices = {} # device_type -> list of {device_name, description}
self.failed_tool_fieldnames = [
"service_name",
"correct_device_name",
"correct_friendly_name",
"bad_device_name",
"phrase",
"error_result",
"retry_prompt"
]
self.refusal_fieldnames = [
"reason_type",
"service_name",
"device_name",
"friendly_name",
"desired_state",
"phrase",
"response"
]
async def _chat_completion(self, session, system_prompt: str, user_prompt: str, *, temperature: float = 0.8, max_tokens: int = 300, structured_response: dict = {}):
payload = {
"model": self.model_name,
"messages": [
{"role": "system", "content": system_prompt},
{"role": "user", "content": user_prompt}
],
"temperature": temperature,
"max_tokens": max_tokens if not structured_response else None, # don't limit if structured (causes failed generations)
"response_format": structured_response if structured_response else None,
}
try:
async with session.post(LLM_ENDPOINT, json=payload) as response:
if response.status < 400:
data = await response.json()
return data['choices'][0]['message']['content'].strip()
print(f"LLM request failed with status {response.status}")
except Exception as exc:
print(f"Completion request failed: {exc}")
return None
@staticmethod
def _strip_code_fence(content: str) -> str:
if not content:
return ""
text = content.strip()
if text.startswith("```") and text.endswith("```"):
lines = [line for line in text.splitlines() if not line.strip().startswith("```")]
return "\n".join(lines).strip()
return text
def _parse_json_object(self, content: str):
if not content:
return None
cleaned = self._strip_code_fence(content)
start = cleaned.find("{")
end = cleaned.rfind("}")
if start == -1 or end == -1:
return None
snippet = cleaned[start:end+1]
try:
return json.loads(snippet)
except json.JSONDecodeError:
return None
@staticmethod
def _ensure_placeholder(text: str, friendly_name: str, placeholder: str) -> str:
if placeholder in text:
return text
lower_text = text.lower()
lower_name = friendly_name.lower()
idx = lower_text.find(lower_name)
if idx == -1:
return text
return text[:idx] + placeholder + text[idx + len(friendly_name):]
@staticmethod
def _describe_service(service_name: str, service_data: dict) -> str:
domain, action = service_name.split(".", 1)
description = f"{action.replace('_', ' ')} the {domain}"
if service_data:
description += f" with arguments {json.dumps(service_data, ensure_ascii=False)}"
return description
@staticmethod
def _desired_state_for_service(service_name: str) -> str:
action = service_name.split(".", 1)[1]
action_mapping = {
"turn_on": "on",
"turn_off": "off",
"open_cover": "open",
"close_cover": "closed",
"lock": "locked",
"unlock": "unlocked",
"media_play_pause": "playing",
}
if action in action_mapping:
return action_mapping[action]
service_mapping = {
"media_player.turn_on": "on",
"media_player.turn_off": "off",
"vacuum.start": "cleaning",
"vacuum.return_to_base": "docked",
"garage_door.open_cover": "open",
"garage_door.close_cover": "closed",
"blinds.open_cover": "open",
"blinds.close_cover": "closed",
}
return service_mapping.get(service_name, "")
@staticmethod
def _append_rows_to_csv(path: str, fieldnames, rows):
if not rows:
return
os.makedirs(os.path.dirname(path), exist_ok=True)
file_exists = os.path.exists(path)
if not file_exists:
with open(path, "w", newline='', encoding='utf-8') as f:
writer = csv.DictWriter(f, fieldnames=fieldnames)
writer.writeheader()
with open(path, "a", newline='', encoding='utf-8') as f:
writer = csv.DictWriter(f, fieldnames=fieldnames)
for row in rows:
writer.writerow(row)
async def generate_device_names(self, session, device_type, count=10):
"""
Generates a list of new device names for a given type.
"""
system_prompt = "You are a creative assistant that generates realistic smart home device names."
user_prompt = f"Generate {count} realistic and diverse friendly names for a smart home device of type '{device_type}' (e.g. 'Kitchen Light', 'Porch Fan', 'Master Bedroom Blinds').\n" \
f"Output ONLY the names, one per line. Do not number them. Do not include the device type if it's not part of the natural name."
payload = {
"model": self.model_name,
"messages": [
{"role": "system", "content": system_prompt},
{"role": "user", "content": user_prompt}
],
"temperature": 1.2,
"max_tokens": 200,
}
try:
async with session.post(LLM_ENDPOINT, json=payload) as response:
if response.status == 200:
data = await response.json()
content = data['choices'][0]['message']['content'].strip()
names = [line.strip() for line in content.split('\n') if line.strip()]
# Add to synthetic devices
if device_type not in self.synthetic_devices:
self.synthetic_devices[device_type] = []
new_devices = []
for name in names:
# Create a fake entity ID
slug = name.lower().replace(" ", "_").replace("'", "")
entity_id = f"{device_type}.{slug}"
device_entry = {
"device_name": entity_id,
"description": name
}
self.synthetic_devices[device_type].append(device_entry)
new_devices.append(device_entry)
print(f"Generated {len(names)} new names for {device_type}")
return new_devices
else:
print(f"Failed to generate device names: {response.status}")
return []
except Exception as e:
print(f"Device generation failed: {e}")
return []
async def generate_phrase(self, session, context):
"""
Generates a user phrase for a given context (device, service, args).
"""
task_type = context.get("type", "action")
device_name = context["device_name"]
friendly_name = context["friendly_name"]
system_prompt = "You are a helpful assistant that generates synthetic training data for a smart home voice assistant. " \
"Your goal is to generate diverse, natural, and realistic user commands based on a specific action. " \
"The commands should vary in complexity and phrasing."
if task_type == "action":
service_name = context["service_name"]
service_args = context["service_data"]
user_prompt = f"""
Task: Generate a natural language voice command in {self.language} that a user would say to perform the following action.
Target Device: {friendly_name} (ID: {device_name})
Action: {service_name}
Arguments: {json.dumps(service_args)}
Instructions:
1. The command must be in {self.language}.
2. The command should be natural and conversational.
3. Do not include the device ID (e.g., {device_name}) in the command, only refer to it by name or context.
4. Include the necessary information to imply the arguments (e.g., if brightness is 50%, mention "50%" or "half brightness").
5. Provide ONLY the command text. Do not add quotes or explanations.
"""
elif task_type == "status":
attribute = context["attribute"]
user_prompt = f"""
Task: Generate a natural language question in {self.language} that a user would ask to check the status of a device.
Target Device: {friendly_name} (ID: {device_name})
Attribute to check: {attribute}
Instructions:
1. The question must be in {self.language}.
2. The question should be natural and conversational.
3. Do not include the device ID.
4. Provide ONLY the question text. Do not add quotes or explanations.
"""
else:
# Fallback for unknown task types
user_prompt = "Generate a random smart home command."
payload = {
"model": self.model_name,
"messages": [
{"role": "system", "content": system_prompt},
{"role": "user", "content": user_prompt}
],
"temperature": 1.0, # High temperature for diversity
"max_tokens": 60,
"stream": False
}
try:
async with session.post(LLM_ENDPOINT, json=payload) as response:
if response.status == 200:
data = await response.json()
content = data['choices'][0]['message']['content'].strip()
# Cleanup: remove leading/trailing quotes if present
if content.startswith('"') and content.endswith('"'):
content = content[1:-1]
return content
else:
# print(f"Error from LLM: {response.status}")
return None
except Exception as e:
print(f"Request failed: {e}")
return None
async def generate_failed_tool_call_entry(self, session, context):
service_name = context["service_name"]
friendly_name = context["friendly_name"]
correct_device = context["device_name"]
action_description = self._describe_service(service_name, context.get("service_data", {}))
device_list, device_types, extra_exposed_attributes = random_device_list(max_devices=10, avoid_device_names=[], language=self.language)
extra_phrase_instructions = ""
if service_name == "climate.set_temperature":
extra_phrase_instructions = "Always reference the target temperature using the literal placeholder <temp_f>."
system_prompt = "You create high-quality multilingual training data for a smart home assistant."
user_prompt = f"""
Generate content for a failed tool call in {self.language}.
Service: {service_name}
Action description: {action_description}
Device name: {correct_device} (friendly name: {friendly_name})
The assistant first misidentifies the entity using the "bad_device" name, receives an error, then retries with {correct_device}.
Output a single JSON object with the keys "phrase", "bad_device", "error_result", and "retry_prompt".
- phrase: A natural voice command template the user would say. {extra_phrase_instructions}
- bad_device: The incorrect version of '{correct_device}'. Ensure it is a truncation, mutation, transposition, or inclusion of an extra suffix/prefix. Avoid simple typos in words.
- retry_prompt: A short acknowledgement from the assistant that it will try the correct device ({correct_device}).
Here are potential device names to help generate a bad device name: {', '.join(device_list)}
Keep the tone conversational and stay entirely in {self.language}. Do not add explanations or code fences.
"""
raw = await self._chat_completion(
session,
system_prompt,
user_prompt,
temperature=0.7,
max_tokens=512,
structured_response={ "type": "json_object" }
)
parsed = self._parse_json_object(raw)
if not parsed:
print(f"Failed to parse JSON for failed tool call generation: {raw}")
return None
phrase = parsed.get("phrase", "").strip()
bad_device = parsed.get("bad_device", "").strip()
retry_prompt = parsed.get("retry_prompt", "").strip()
if not phrase or not bad_device or not retry_prompt:
return None
return {
"service_name": service_name,
"correct_device_name": correct_device,
"correct_friendly_name": friendly_name,
"bad_device_name": bad_device,
"phrase": phrase,
"error_result": get_hass_match_error_message(bad_device),
"retry_prompt": retry_prompt
}
async def generate_refusal_entry(self, session, context, reason_type: str, desired_state: str):
service_name = context["service_name"]
friendly_name = context["friendly_name"]
action_description = self._describe_service(service_name, context.get("service_data", {}))
device_suffix = context["device_name"].split(".", 1)[1]
if reason_type == "not_available":
reason_detail = "Explain that the assistant cannot locate that device in the home."
else:
reason_detail = f"Explain that the device is already {desired_state} and no change is needed."
system_prompt = "You write concise refusal-style responses for a multilingual smart home assistant."
user_prompt = f"""
Create a refusal example in {self.language} for the following request.
Service: {service_name}
Action description: {action_description}
Reason: {reason_detail}
Output a JSON object with:
- "phrase": the user's natural command template. Use the literal placeholder <device_name> anywhere the user mentions the device.
- "response": the assistant's refusal message in {self.language} describing the reason.
Keep both fields brief, conversational, and free of extra narration or code fences.
"""
raw = await self._chat_completion(
session,
system_prompt,
user_prompt,
temperature=0.7,
max_tokens=512,
structured_response={ "type": "json_object" }
)
parsed = self._parse_json_object(raw)
if not parsed:
print("Failed to parse JSON for refusal generation")
return None
phrase = parsed.get("phrase", "").strip()
response = parsed.get("response", "").strip()
if not phrase or not response:
return None
phrase = self._ensure_placeholder(phrase, friendly_name, "<device_name>")
if "<device_name>" not in phrase:
return None
return {
"reason_type": reason_type,
"service_name": service_name,
"device_name": device_suffix,
"friendly_name": friendly_name,
"desired_state": desired_state if reason_type == "already_state" else "",
"phrase": phrase,
"response": response
}
def sample_context(self, request_type: str):
"""
Creates a random scenario: device, service, and arguments.
"""
# 1. Pick a device from the loaded piles OR synthetic devices
device_types = list(self.piles.stacks_of_device_names.keys())
if not device_types:
return None
dt = random.choice(device_types)
# Mix real and synthetic devices
devices = self.piles.stacks_of_device_names[dt]
if dt in self.synthetic_devices:
devices = devices + self.synthetic_devices[dt]
if not devices:
return None
device = random.choice(devices)
device_name = device["device_name"]
friendly_name = device["description"]
# Decide between Action and Status
if request_type == "status":
# Status Request
# Determine available attributes based on domain
domain = device_name.split(".")[0]
attributes = ["state"] # Default
if domain == "light":
attributes.extend(["brightness", "color"])
elif domain == "climate":
attributes.extend(["temperature", "humidity", "hvac_mode"])
elif domain == "media_player":
attributes.extend(["volume", "media_title", "state"])
elif domain == "cover":
attributes.extend(["position", "state"])
elif domain == "fan":
attributes.extend(["speed", "state"])
attribute = random.choice(attributes)
return {
"type": "status",
"device_name": device_name,
"friendly_name": friendly_name,
"attribute": attribute
}
elif request_type == "action":
# Action
# 2. Pick a service compatible with this device type
domain = device_name.split(".")[0]
services = []
if domain == "light":
services = ["light.turn_on", "light.turn_off", "light.toggle"]
elif domain == "switch":
services = ["switch.turn_on", "switch.turn_off", "switch.toggle"]
elif domain == "cover":
services = ["cover.open_cover", "cover.close_cover", "cover.stop_cover", "cover.toggle"]
elif domain == "blinds":
services = ["blinds.open_cover", "blinds.close_cover", "blinds.stop_cover", "blinds.toggle"]
elif domain == "garage_door":
services = ["garage_door.open_cover", "garage_door.close_cover", "garage_door.stop_cover", "garage_door.toggle"]
elif domain == "fan":
services = ["fan.turn_on", "fan.turn_off", "fan.toggle", "fan.increase_speed", "fan.decrease_speed"]
elif domain == "climate":
services = ["climate.turn_on", "climate.turn_off", "climate.set_temperature"]
elif domain == "media_player":
services = ["media_player.turn_on", "media_player.turn_off", "media_player.media_play_pause", "media_player.volume_up", "media_player.volume_down"]
elif domain == "lock":
services = ["lock.lock", "lock.unlock"]
elif domain == "vacuum":
services = ["vacuum.start", "vacuum.return_to_base", "vacuum.stop"]
if not services:
return None
service_name = random.choice(services)
# 3. Generate Arguments
service_data = {}
if service_name == "light.turn_on":
if random.random() < 0.3:
service_data["brightness_pct"] = random.randint(10, 100)
if random.random() < 0.3:
# Simple colors
colors = ["red", "blue", "green", "yellow", "purple", "white", "warm white", "cool white"]
service_data["color_name"] = random.choice(colors)
elif service_name == "climate.set_temperature":
service_data["temperature"] = random.randint(18, 28)
return {
"type": "action",
"device_name": device_name,
"friendly_name": friendly_name,
"service_name": service_name,
"service_data": service_data
}
raise ValueError(f"Unknown request type {request_type}")
async def run(self, num_actions: int, num_status_requests: int, num_devices: int,
persona_name=None, persona_description=None, num_failed_tool_calls: int = 0,
num_refusals: int = 0):
print(f"Starting generation...")
print(f"Language: {self.language}")
async with aiohttp.ClientSession() as session:
if num_devices > 0:
print("Generating synthetic device names...")
device_types = list(self.piles.stacks_of_device_names.keys())
gen_tasks = []
for dt in device_types:
gen_tasks.append(self.generate_device_names(session, dt, count=num_devices))
generated_lists = await asyncio.gather(*gen_tasks)
# Flatten list and write to CSV
all_new_devices = [item for sublist in generated_lists if sublist for item in sublist]
if all_new_devices:
csv_path = f"{cwd}/piles/{self.language}/pile_of_device_names.csv"
try:
with open(csv_path, "a", newline='', encoding='utf-8') as f:
writer = csv.DictWriter(f, fieldnames=["device_name", "description"])
for device in all_new_devices:
writer.writerow(device)
print(f"Appended {len(all_new_devices)} new devices to {csv_path}")
except Exception as e:
print(f"Failed to write new devices to CSV: {e}")
if num_actions > 0 or num_status_requests > 0:
print(f"Generating {num_actions} actions and {num_status_requests} status requests...")
tasks = {}
results = []
pbar = tqdm(total=num_actions + num_status_requests, desc="Generating phrases")
while len(results) < num_actions + num_status_requests:
# Fill up the task queue
while len(tasks) < self.concurrency and (len(results) + len(tasks)) < num_actions + num_status_requests:
context = self.sample_context("action" if len(results) < num_actions else "status")
if not context:
continue
task = asyncio.create_task(self.generate_phrase(session, context))
tasks[task] = context
if not tasks:
break
# Wait for completed tasks
done, pending = await asyncio.wait(tasks.keys(), return_when=asyncio.FIRST_COMPLETED)
for task in done:
context = tasks.pop(task)
try:
phrase = await task
if phrase:
entry = context.copy()
entry["phrase"] = phrase
if entry["type"] == "action":
# Write to pile_of_specific_actions.csv
csv_path = f"{cwd}/piles/{self.language}/pile_of_specific_actions.csv"
# Prepare row
# device_name in CSV is the suffix (e.g. 'kitchen' from 'light.kitchen')
# But wait, generate_data.py expects device_name to be the suffix ONLY if the domain matches the service domain?
# Actually generate_data.py does: target_device = f"{device_type}.{action['device_name']}"
# where device_type = service_name.split(".")[0]
# So if service is light.turn_on, device_type is light.
# If device is light.kitchen, action['device_name'] should be 'kitchen'.
full_device_name = entry["device_name"]
service_name = entry["service_name"]
service_domain = service_name.split(".")[0]
device_domain = full_device_name.split(".")[0]
if service_domain != device_domain:
# This might happen if we use a service from a different domain (e.g. homeassistant.turn_on)
# But our sample_context ensures domain match (mostly).
# For blinds/garage_door, we use blinds.open_cover etc.
# So service_domain is blinds. device_domain is blinds.
pass
device_suffix = full_device_name.split(".", 1)[1]
row = {
"service_name": service_name,
"device_name": device_suffix,
"phrase": phrase,
"arguments": json.dumps(entry["service_data"]) if entry["service_data"] else ""
}
# Check if header needs update (only once)
if not hasattr(self, "_action_header_updated"):
self._action_header_updated = True
# Read header
with open(csv_path, "r", encoding='utf-8') as f:
reader = csv.DictReader(f)
all_rows = list(reader)
current_fieldnames = reader.fieldnames if reader.fieldnames else []
fieldnames = list(current_fieldnames) + ["arguments"]
with open(csv_path, "w", newline='', encoding='utf-8') as f:
writer = csv.DictWriter(f, fieldnames=fieldnames)
writer.writeheader()
writer.writerows(all_rows)
with open(csv_path, "a", newline='', encoding='utf-8') as f:
# We need to know fieldnames.
# We can read them from file or assume standard + arguments.
# Let's read them.
with open(csv_path, "r", encoding='utf-8') as fr:
reader = csv.reader(fr)
header = next(reader)
writer = csv.DictWriter(f, fieldnames=header)
writer.writerow(row)
elif entry["type"] == "status":
# Write to pile_of_status_requests.csv
# We need to templatize the phrase.
# Replace friendly_name with <device_name>
phrase_tmpl = phrase.replace(entry["friendly_name"], "<device_name>")
# Also try case insensitive?
phrase_tmpl = phrase_tmpl.replace(entry["friendly_name"].lower(), "<device_name>")
# If friendly name not found, maybe skip?
if "<device_name>" not in phrase_tmpl:
# Try to find partial match?
# For now, just skip if we can't templatize.
pass
else:
csv_path = f"{cwd}/piles/{self.language}/pile_of_status_requests.csv"
# Columns: device_type,state,phrase,assistant_response
# We don't have assistant_response.
# We can generate a generic one?
# Or ask LLM to generate it?
# For now, let's skip status requests writing as we lack assistant_response.
pass
results.append(entry)
pbar.update(1)
except Exception as e:
print(f"Task error: {e}")
pbar.close()
if num_failed_tool_calls > 0:
print(f"Generating {num_failed_tool_calls} failed tool call scenarios...")
failed_entries = []
tasks = {}
pbar_failed = tqdm(total=num_failed_tool_calls, desc="Failed tool calls")
while len(failed_entries) < num_failed_tool_calls:
while len(tasks) < self.concurrency and (len(failed_entries) + len(tasks)) < num_failed_tool_calls:
context = self.sample_context("action")
if not context:
continue
task = asyncio.create_task(self.generate_failed_tool_call_entry(session, context))
tasks[task] = None
if not tasks:
break
done, _ = await asyncio.wait(list(tasks.keys()), return_when=asyncio.FIRST_COMPLETED)
for task in done:
tasks.pop(task, None)
try:
entry = await task
except Exception as exc:
print(f"Failed tool call task error: {exc}")
entry = None
if entry:
failed_entries.append(entry)
pbar_failed.update(1)
pbar_failed.close()
failed_path = f"{cwd}/piles/{self.language}/pile_of_failed_tool_calls.csv"
self._append_rows_to_csv(failed_path, self.failed_tool_fieldnames, failed_entries)
if num_refusals > 0:
print(f"Generating {num_refusals} refusal scenarios...")
refusal_entries = []
tasks = {}
pbar_refusals = tqdm(total=num_refusals, desc="Refusals")
while len(refusal_entries) < num_refusals:
while len(tasks) < self.concurrency and (len(refusal_entries) + len(tasks)) < num_refusals:
context = self.sample_context("action")
if not context:
continue
reason_type = random.choice(["not_available", "already_state"])
desired_state = ""
if reason_type == "already_state":
desired_state = self._desired_state_for_service(context["service_name"])
if not desired_state:
reason_type = "not_available"
task = asyncio.create_task(self.generate_refusal_entry(
session,
context,
reason_type,
desired_state
))
tasks[task] = None
if not tasks:
break
done, _ = await asyncio.wait(list(tasks.keys()), return_when=asyncio.FIRST_COMPLETED)
for task in done:
tasks.pop(task, None)
try:
entry = await task
except Exception as exc:
print(f"Refusal generation error: {exc}")
entry = None
if entry:
refusal_entries.append(entry)
pbar_refusals.update(1)
pbar_refusals.close()
refusal_path = f"{cwd}/piles/{self.language}/pile_of_refusals.csv"
self._append_rows_to_csv(refusal_path, self.refusal_fieldnames, refusal_entries)
if persona_name and persona_description:
await self.generate_persona(session, persona_name, persona_description)
print("Generation complete.")
async def generate_persona(self, session, persona_name, persona_description):
print(f"Generating new persona: {persona_name}...")
# 1. Generate System Prompt
sys_prompt_instruction = (
f"Generate a system prompt for an AI assistant named '{persona_name}' "
f"who has the following personality: {persona_description}. "
"The prompt should define the persona's character and instructions. "
"It should start with 'You are ...'. "
"Keep it under 50 words."
)
payload = {
"model": self.model_name,
"messages": [
{"role": "system", "content": "You are an expert at creating AI system prompts."},
{"role": "user", "content": sys_prompt_instruction}
],
"temperature": 0.7,
"max_tokens": 100,
}
system_prompt_text = ""
try:
async with session.post(LLM_ENDPOINT, json=payload) as response:
if response.status == 200:
data = await response.json()
system_prompt_text = data['choices'][0]['message']['content'].strip()
if system_prompt_text.startswith('"') and system_prompt_text.endswith('"'):
system_prompt_text = system_prompt_text[1:-1]
print(f"Generated system prompt: {system_prompt_text}")
else:
print(f"Failed to generate system prompt: {response.status}")
return
except Exception as e:
print(f"System prompt generation failed: {e}")
return
# 2. Get list of services to generate responses for
responses_csv_path = f"{cwd}/piles/{self.language}/pile_of_responses.csv"
services = set()
try:
with open(responses_csv_path, "r", encoding='utf-8') as f:
reader = csv.DictReader(f)
for row in reader:
services.add(row["service"])
except Exception as e:
print(f"Failed to read responses CSV: {e}")
return
print(f"Found {len(services)} unique services to generate responses for.")
# 3. Generate responses for each service
new_responses = []
async def generate_service_responses(svc):
# We want normal and short responses
prompt = (
f"You are acting as '{persona_name}', described as: {persona_description}.\n"
f"Generate 3 diverse responses confirming that you are performing the action: '{svc}'.\n"
"Then generate 3 SHORT/CONCISE responses for the same action.\n"
"Format the output as follows:\n"
"NORMAL: <response 1>\n"
"NORMAL: <response 2>\n"
"NORMAL: <response 3>\n"
"SHORT: <short response 1>\n"
"SHORT: <short response 2>\n"
"SHORT: <short response 3>\n"
"Do not include any other text."
)
payload = {
"model": self.model_name,
"messages": [
{"role": "system", "content": f"You are {persona_name}. {persona_description}"},
{"role": "user", "content": prompt}
],
"temperature": 0.8,
"max_tokens": 300,
}
try:
async with session.post(LLM_ENDPOINT, json=payload) as response:
if response.status == 200:
data = await response.json()
content = data['choices'][0]['message']['content'].strip()
lines = content.split('\n')
for line in lines:
line = line.strip()
if line.startswith("NORMAL:"):
text = line.replace("NORMAL:", "").strip()
if text:
new_responses.append({
"service": svc,
"response": text,
"persona": persona_name,
"short": 0
})
elif line.startswith("SHORT:"):
text = line.replace("SHORT:", "").strip()
if text:
new_responses.append({
"service": svc,
"response": text,
"persona": persona_name,
"short": 1
})
except Exception as e:
print(f"Failed to generate responses for {svc}: {e}")
# Run in batches
tasks = []
for svc in services:
tasks.append(generate_service_responses(svc))
if len(tasks) >= self.concurrency:
await asyncio.gather(*tasks)
tasks = []
if tasks:
await asyncio.gather(*tasks)
print(f"Generated {len(new_responses)} responses.")
# 4. Write to files
# Append system prompt
sys_prompts_path = f"{cwd}/piles/{self.language}/pile_of_system_prompts.csv"
try:
with open(sys_prompts_path, "a", newline='', encoding='utf-8') as f:
writer = csv.writer(f)
# Check if we need to add a newline if file doesn't end with one?
# csv module handles newlines usually.
writer.writerow([persona_name, system_prompt_text])
print(f"Appended system prompt to {sys_prompts_path}")
except Exception as e:
print(f"Failed to write system prompt: {e}")
# Append responses
try:
with open(responses_csv_path, "a", newline='', encoding='utf-8') as f:
fieldnames = ["service", "response", "persona", "short"]
writer = csv.DictWriter(f, fieldnames=fieldnames)
for resp in new_responses:
writer.writerow(resp)
print(f"Appended responses to {responses_csv_path}")
except Exception as e:
print(f"Failed to write responses: {e}")
if __name__ == "__main__":
parser = argparse.ArgumentParser(description="Generate synthetic data using LLM")
parser.add_argument("--actions", type=int, default=0, help="Number of actions to generate")
parser.add_argument("--status", type=int, default=0, help="Number of status requests to generate")
parser.add_argument("--devices", type=int, default=0, help="Number of new devices to generate")
parser.add_argument("--failed-tool-calls", type=int, default=0, help="Number of failed tool call scenarios to generate")
parser.add_argument("--refusals", type=int, default=0, help="Number of refusal scenarios to generate")
parser.add_argument("--concurrency", type=int, default=4, help="Number of concurrent requests")
parser.add_argument("--languages", type=str, nargs='+', default=["english"], help="Languages to generate data for")
parser.add_argument("--model", type=str, default="gpt-oss-120b", help="LLM model to use")
parser.add_argument("--persona-name", type=str, help="Name of the new persona to generate")
parser.add_argument("--persona-description", type=str, help="Description of the new persona")
args = parser.parse_args()
for language in args.languages:
print(f"=== Generating data for language: {language} ===")
generator = SyntheticDataGenerator(model_name=args.model, language=language, concurrency=args.concurrency)
asyncio.run(generator.run(
num_actions=args.actions,
num_status_requests=args.status,
num_devices=args.devices,
persona_name=args.persona_name,
persona_description=args.persona_description,
num_failed_tool_calls=args.failed_tool_calls,
num_refusals=args.refusals
))

831
data/tools.py Normal file
View File

@@ -0,0 +1,831 @@
# TOOLS
TOOL_TURN_ON = "HassTurnOn"
TOOL_TURN_OFF = "HassTurnOff"
TOOL_TOGGLE = "HassToggle"
TOOL_SET_POSITION = "HassSetPosition"
TOOL_LIGHT_SET = "HassLightSet"
TOOL_SET_VOLUME = "HassSetVolume"
TOOL_MEDIA_UNPAUSE = "HassMediaUnpause"
TOOL_MEDIA_PAUSE = "HassMediaPause"
TOOL_MEDIA_NEXT = "HassMediaNext"
TOOL_MEDIA_PREVIOUS = "HassMediaPrevious"
TOOL_VACUUM_START = "HassVacuumStart"
TOOL_VACUUM_RETURN_TO_BASE = "HassVacuumReturnToBase"
TOOL_LIST_ADD_ITEM = "HassListAddItem"
TOOL_START_TIMER = "HassStartTimer"
TOOL_CANCEL_TIMER = "HassCancelTimer"
TOOL_PAUSE_TIMER = "HassPauseTimer"
TOOL_UNPAUSE_TIMER = "HassUnpauseTimer"
TOOL_INCREASE_TIMER = "HassIncreaseTimer"
TOOL_DECREASE_TIMER = "HassDecreaseTimer"
TOOL_TIMER_STATUS = "HassTimerStatus"
TOOL_CLIMATE_SET_TEMPERATURE = "HassClimateSetTemperature"
TOOL_CLIMATE_GET_TEMPERATURE = "HassClimateGetTemperature"
TOOL_SET_HUMIDITY = "HassHumidifierSetpoint"
TOOL_SET_HUMIDIFIER_MODE = "HassHumidifierMode"
# Service name to tool name mapping for backwards compatibility with CSV files
SERVICE_TO_TOOL_MAP = {
"turn_on": TOOL_TURN_ON,
"turn_off": TOOL_TURN_OFF,
"toggle": TOOL_TOGGLE,
"open_cover": TOOL_TURN_ON,
"close_cover": TOOL_TURN_OFF,
"stop_cover": TOOL_TOGGLE,
"set_cover_position": TOOL_SET_POSITION,
"lock": TOOL_TURN_ON,
"unlock": TOOL_TURN_OFF,
"increase_speed": TOOL_TURN_ON,
"decrease_speed": TOOL_TURN_OFF,
"media_stop": TOOL_TURN_OFF,
"media_play_pause": TOOL_TOGGLE,
"media_pause": TOOL_MEDIA_PAUSE,
"media_play": TOOL_MEDIA_UNPAUSE,
"media_next_track": TOOL_MEDIA_NEXT,
"media_previous_track": TOOL_MEDIA_PREVIOUS,
"start": TOOL_VACUUM_START,
"return_to_base": TOOL_VACUUM_RETURN_TO_BASE,
"set_temperature": TOOL_CLIMATE_SET_TEMPERATURE,
"set_humidity": TOOL_SET_HUMIDITY,
"set_hvac_mode": TOOL_CLIMATE_SET_TEMPERATURE,
"set_fan_mode": TOOL_CLIMATE_SET_TEMPERATURE,
"set_preset_mode": TOOL_CLIMATE_SET_TEMPERATURE,
"cancel": TOOL_CANCEL_TIMER,
"volume_down": TOOL_SET_VOLUME,
"volume_up": TOOL_SET_VOLUME,
"volume_mute": TOOL_SET_VOLUME,
"stop": TOOL_TURN_OFF,
"pause": TOOL_TURN_OFF,
"add_item": TOOL_LIST_ADD_ITEM
}
# Home Assistant Intent Tools Definition
HASS_TOOLS = [
{"function": {
"name": TOOL_TURN_ON,
"description": "Turns on/opens/unlocks a device or entity",
"parameters": {
"type": "object",
"properties": {
"name": {"type": "string", "description": "Name of the device or entity"},
"area": {"type": "string", "description": "Name of the area"},
"floor": {"type": "string", "description": "Name of the floor"},
"domain": {"type": "array", "items": {"type": "string"}, "description": "Device domain(s)"},
"device_class": {"type": "array", "items": {"type": "string"}, "description": "Device class(es)"}
},
"required": []
}
}},
{"function": {
"name": TOOL_TURN_OFF,
"description": "Turns off/closes/locks a device or entity",
"parameters": {
"type": "object",
"properties": {
"name": {"type": "string", "description": "Name of the device or entity"},
"area": {"type": "string", "description": "Name of the area"},
"floor": {"type": "string", "description": "Name of the floor"},
"domain": {"type": "array", "items": {"type": "string"}, "description": "Device domain(s)"},
"device_class": {"type": "array", "items": {"type": "string"}, "description": "Device class(es)"}
},
"required": []
}
}},
{"function": {
"name": TOOL_TOGGLE,
"description": "Toggles a device or entity",
"parameters": {
"type": "object",
"properties": {
"name": {"type": "string", "description": "Name of the device or entity"},
"area": {"type": "string", "description": "Name of the area"},
"floor": {"type": "string", "description": "Name of the floor"},
"domain": {"type": "array", "items": {"type": "string"}, "description": "Device domain(s)"},
"device_class": {"type": "array", "items": {"type": "string"}, "description": "Device class(es)"}
},
"required": []
}
}},
{"function": {
"name": TOOL_SET_POSITION,
"description": "Sets the position of a device or entity (e.g., blinds, covers)",
"parameters": {
"type": "object",
"properties": {
"name": {"type": "string", "description": "Name of the device or entity"},
"area": {"type": "string", "description": "Name of the area"},
"floor": {"type": "string", "description": "Name of the floor"},
"position": {"type": "integer", "description": "Position from 0-100", "minimum": 0, "maximum": 100}
},
"required": ["position"]
}
}},
{"function": {
"name": TOOL_LIGHT_SET,
"description": "Sets the brightness or color of a light",
"parameters": {
"type": "object",
"properties": {
"name": {"type": "string", "description": "Name of the light"},
"area": {"type": "string", "description": "Name of the area"},
"floor": {"type": "string", "description": "Name of the floor"},
"color": {"type": "string", "description": "Color name"},
"temperature": {"type": "integer", "description": "Color temperature in Kelvin"},
"brightness": {"type": "integer", "description": "Brightness percentage (0-100)", "minimum": 0, "maximum": 100}
},
"required": []
}
}},
{"function": {
"name": TOOL_CLIMATE_SET_TEMPERATURE,
"description": "Sets the target temperature of a climate device",
"parameters": {
"type": "object",
"properties": {
"name": {"type": "string", "description": "Name of the climate device"},
"area": {"type": "string", "description": "Name of the area"},
"floor": {"type": "string", "description": "Name of the floor"},
"temperature": {"type": "number", "description": "Target temperature"}
},
"required": ["temperature"]
}
}},
{"function": {
"name": TOOL_SET_HUMIDITY,
"description": "Sets the target humidity level of a humidifier device",
"parameters": {
"type": "object",
"properties": {
"name": {"type": "string", "description": "Name of the humidifier"},
"humidity": {"type": "integer", "description": "Target humidity percentage (0-100)", "minimum": 0, "maximum": 100}
},
"required": ["name", "humidity"]
}
}},
{"function": {
"name": TOOL_SET_HUMIDIFIER_MODE,
"description": "Sets the mode of a humidifier device",
"parameters": {
"type": "object",
"properties": {
"name": {"type": "string", "description": "Name of the humidifier"},
"mode": {"type": "string", "description": "Humidifier mode"}
},
"required": ["name", "mode"]
}
}},
{"function": {
"name": TOOL_MEDIA_UNPAUSE,
"description": "Resumes playback on a media player",
"parameters": {
"type": "object",
"properties": {
"name": {"type": "string", "description": "Name of the media player"},
"area": {"type": "string", "description": "Name of the area"},
"floor": {"type": "string", "description": "Name of the floor"}
},
"required": []
}
}},
{"function": {
"name": TOOL_MEDIA_PAUSE,
"description": "Pauses playback on a media player",
"parameters": {
"type": "object",
"properties": {
"name": {"type": "string", "description": "Name of the media player"},
"area": {"type": "string", "description": "Name of the area"},
"floor": {"type": "string", "description": "Name of the floor"}
},
"required": []
}
}},
{"function": {
"name": TOOL_MEDIA_NEXT,
"description": "Skips to the next media item on a media player",
"parameters": {
"type": "object",
"properties": {
"name": {"type": "string", "description": "Name of the media player"},
"area": {"type": "string", "description": "Name of the area"},
"floor": {"type": "string", "description": "Name of the floor"}
},
"required": []
}
}},
{"function": {
"name": TOOL_SET_VOLUME,
"description": "Sets the volume of a media player",
"parameters": {
"type": "object",
"properties": {
"name": {"type": "string", "description": "Name of the media player"},
"area": {"type": "string", "description": "Name of the area"},
"floor": {"type": "string", "description": "Name of the floor"},
"volume_level": {"type": "number", "description": "Volume level (0.0-1.0)", "minimum": 0.0, "maximum": 1.0}
},
"required": ["volume_level"]
}
}},
{"function": {
"name": TOOL_VACUUM_START,
"description": "Starts a vacuum",
"parameters": {
"type": "object",
"properties": {
"name": {"type": "string", "description": "Name of the vacuum"},
"area": {"type": "string", "description": "Name of the area"},
"floor": {"type": "string", "description": "Name of the floor"}
},
"required": []
}
}},
{"function": {
"name": TOOL_VACUUM_RETURN_TO_BASE,
"description": "Returns a vacuum to its base",
"parameters": {
"type": "object",
"properties": {
"name": {"type": "string", "description": "Name of the vacuum"},
"area": {"type": "string", "description": "Name of the area"},
"floor": {"type": "string", "description": "Name of the floor"}
},
"required": []
}
}},
{"function": {
"name": TOOL_LIST_ADD_ITEM,
"description": "Adds an item to a todo list",
"parameters": {
"type": "object",
"properties": {
"item": {"type": "string", "description": "The item to add to the list"},
"name": {"type": "string", "description": "Name of the todo list"}
},
"required": ["item"]
}
}},
{"function": {
"name": TOOL_START_TIMER,
"description": "Starts a timer",
"parameters": {
"type": "object",
"properties": {
"name": {"type": "string", "description": "Name of the timer"},
"duration": {"type": "string", "description": "Timer duration (HH:MM:SS format)"}
},
"required": []
}
}},
{"function": {
"name": TOOL_CANCEL_TIMER,
"description": "Cancels a timer",
"parameters": {
"type": "object",
"properties": {
"name": {"type": "string", "description": "Name of the timer"}
},
"required": []
}
}},
{"function": {
"name": TOOL_PAUSE_TIMER,
"description": "Pauses a timer",
"parameters": {
"type": "object",
"properties": {
"name": {"type": "string", "description": "Name of the timer"}
},
"required": []
}
}},
{"function": {
"name": TOOL_UNPAUSE_TIMER,
"description": "Resumes a paused timer",
"parameters": {
"type": "object",
"properties": {
"name": {"type": "string", "description": "Name of the timer"}
},
"required": []
}
}}
]
SERVICE_TOOL_ALLOWED_SERVICES = ["turn_on", "turn_off", "toggle", "press", "increase_speed", "decrease_speed", "open_cover", "close_cover", "stop_cover", "lock", "unlock",
"start", "stop", "return_to_base", "pause", "cancel", "add_item", "set_temperature", "set_humidity", "set_fan_mode", "set_hvac_mode", "set_preset_mode"]
SERVICE_TOOL_ALLOWED_DOMAINS = ["light", "switch", "button", "fan", "cover", "lock", "media_player", "climate", "vacuum", "todo", "timer", "script"]
SERVICE_TOOLS = [
{"function": {
"name": "<sample>",
"description": "",
"parameters": {
"type": "object",
"properties": {
"target_device": {"type": "string", "description": "The target device to turn on"},
"rgb_color": {"type": "string", "description": "The RGB color to set"},
"brightness": {"type": "number", "description": "The brightness level"},
"temperature": {"type": "number", "description": "The temperature level"},
"humidity": {"type": "number", "description": "The humidity level"},
"fan_mode": {"type": "string", "description": "The fan mode"},
"hvac_mode": {"type": "string", "description": "The HVAC mode"},
"preset_mode": {"type": "string", "description": "The preset mode"},
"duration": {"type": "string", "description": "The amount of time to apply to the chosen timer"},
"item": {"type": "string", "description": "The item to add to the list"}
},
"required": [
"target_device"
]
}
}},
{"function": {
"name": "light.turn_on",
"description": "",
"parameters": {
"type": "object",
"properties": {
"target_device": {"type": "string", "description": "The target device to turn on"},
"rgb_color": {"type": "string", "description": "The RGB color to set"},
"brightness": {"type": "number", "description": "The brightness level"},
},
"required": [
"target_device"
]
}
}},
{"function": {
"name": "light.turn_off",
"description": "",
"parameters": {
"type": "object",
"properties": {
"target_device": {"type": "string", "description": "The target device to turn off"},
},
"required": [
"target_device"
]
}
}},
{"function": {
"name": "light.toggle",
"description": "",
"parameters": {
"type": "object",
"properties": {
"target_device": {"type": "string", "description": "The target device to toggle"},
},
"required": [
"target_device"
]
}
}},
{"function": {
"name": "switch.turn_on",
"description": "",
"parameters": {
"type": "object",
"properties": {
"target_device": {"type": "string", "description": "The target device to turn on"},
},
"required": [
"target_device"
]
}
}},
{"function": {
"name": "switch.turn_off",
"description": "",
"parameters": {
"type": "object",
"properties": {
"target_device": {"type": "string", "description": "The target device to turn off"},
},
"required": [
"target_device"
]
}
}},
{"function": {
"name": "switch.toggle",
"description": "",
"parameters": {
"type": "object",
"properties": {
"target_device": {"type": "string", "description": "The target device to toggle"},
},
"required": [
"target_device"
]
}
}},
{"function": {
"name": "fan.turn_on",
"description": "",
"parameters": {
"type": "object",
"properties": {
"target_device": {"type": "string", "description": "The target device to turn on"},
},
"required": [
"target_device"
]
}
}},
{"function": {
"name": "fan.turn_off",
"description": "",
"parameters": {
"type": "object",
"properties": {
"target_device": {"type": "string", "description": "The target device to turn off"},
},
"required": [
"target_device"
]
}
}},
{"function": {
"name": "fan.toggle",
"description": "",
"parameters": {
"type": "object",
"properties": {
"target_device": {"type": "string", "description": "The target device to toggle"},
},
"required": [
"target_device"
]
}
}},
{"function": {
"name": "fan.set_speed",
"description": "",
"parameters": {
"type": "object",
"properties": {
"target_device": {"type": "string", "description": "The target device to set speed"},
"fan_mode": {"type": "string", "description": "The fan mode"},
},
"required": [
"target_device",
"fan_mode"
]
}
}},
{"function": {
"name": "fan.increase_speed",
"description": "",
"parameters": {
"type": "object",
"properties": {
"target_device": {"type": "string", "description": "The target device to increase speed"},
},
"required": [
"target_device"
]
}
}},
{"function": {
"name": "fan.decrease_speed",
"description": "",
"parameters": {
"type": "object",
"properties": {
"target_device": {"type": "string", "description": "The target device to decrease speed"},
},
"required": [
"target_device"
]
}
}},
{"function": {
"name": "button.press",
"description": "",
"parameters": {
"type": "object",
"properties": {
"target_device": {"type": "string", "description": "The target device to press"},
},
"required": [
"target_device"
]
}
}},
{"function": {
"name": "cover.open_cover",
"description": "",
"parameters": {
"type": "object",
"properties": {
"target_device": {"type": "string", "description": "The target device to open"},
},
"required": [
"target_device"
]
}
}},
{"function": {
"name": "cover.close_cover",
"description": "",
"parameters": {
"type": "object",
"properties": {
"target_device": {"type": "string", "description": "The target device to close"},
},
"required": [
"target_device"
]
}
}},
{"function": {
"name": "cover.stop_cover",
"description": "",
"parameters": {
"type": "object",
"properties": {
"target_device": {"type": "string", "description": "The target device to stop"},
},
"required": [
"target_device"
]
}
}},
{"function": {
"name": "cover.set_cover_position",
"description": "",
"parameters": {
"type": "object",
"properties": {
"target_device": {"type": "string", "description": "The target device to set position"},
"position": {"type": "integer", "description": "Position from 0-100", "minimum": 0, "maximum": 100}
},
"required": [
"target_device",
"position"
]
}
}},
{"function": {
"name": "lock.unlock",
"description": "",
"parameters": {
"type": "object",
"properties": {
"target_device": {"type": "string", "description": "The target device to unlock"},
},
"required": [
"target_device"
]
}
}},
{"function": {
"name": "lock.lock",
"description": "",
"parameters": {
"type": "object",
"properties": {
"target_device": {"type": "string", "description": "The target device to lock"},
},
"required": [
"target_device"
]
}
}},
{"function": {
"name": "vacuum.start",
"description": "",
"parameters": {
"type": "object",
"properties": {
"target_device": {"type": "string", "description": "The target device to start"},
},
"required": [
"target_device"
]
}
}},
{"function": {
"name": "vacuum.stop",
"description": "",
"parameters": {
"type": "object",
"properties": {
"target_device": {"type": "string", "description": "The target device to stop"},
},
"required": [
"target_device"
]
}
}},
{"function": {
"name": "vacuum.return_to_base",
"description": "",
"parameters": {
"type": "object",
"properties": {
"target_device": {"type": "string", "description": "The target device to return to base"},
},
"required": [
"target_device"
]
}
}},
{"function": {
"name": "media_player.media_play_pause",
"description": "",
"parameters": {
"type": "object",
"properties": {
"target_device": {"type": "string", "description": "The target media player to play/pause"},
},
"required": [
"target_device"
]
}
}},
{"function": {
"name": "media_player.media_pause",
"description": "",
"parameters": {
"type": "object",
"properties": {
"target_device": {"type": "string", "description": "The target media player to pause"},
},
"required": [
"target_device"
]
}
}},
{"function": {
"name": "media_player.media_play",
"description": "",
"parameters": {
"type": "object",
"properties": {
"target_device": {"type": "string", "description": "The target media player to play"},
},
"required": [
"target_device"
]
}
}},
{"function": {
"name": "media_player.media_next_track",
"description": "",
"parameters": {
"type": "object",
"properties": {
"target_device": {"type": "string", "description": "The target media player to skip to next track"},
},
"required": [
"target_device"
]
}
}},
{"function": {
"name": "media_player.media_previous_track",
"description": "",
"parameters": {
"type": "object",
"properties": {
"target_device": {"type": "string", "description": "The target media player to skip to previous track"},
},
"required": [
"target_device"
]
}
}},
{"function": {
"name": "media_player.volume_set",
"description": "",
"parameters": {
"type": "object",
"properties": {
"target_device": {"type": "string", "description": "The target media player to set volume"},
"volume_level": {"type": "number", "description": "Volume level (0.0-1.0)", "minimum": 0.0, "maximum": 1.0}
},
"required": [
"target_device",
"volume_level"
]
}
}},
{"function": {
"name": "todo.add_item",
"description": "",
"parameters": {
"type": "object",
"properties": {
"target_device": {"type": "string", "description": "The target todo list to add item to"},
"item": {"type": "string", "description": "The item to add to the list"}
},
"required": [
"target_device",
"item"
]
}
}},
{"function": {
"name": "timer.start",
"description": "",
"parameters": {
"type": "object",
"properties": {
"target_device": {"type": "string", "description": "The target timer to start"},
"duration": {"type": "string", "description": "Timer duration (HH:MM:SS format)"}
},
"required": [
"target_device"
]
}
}},
{"function": {
"name": "timer.cancel",
"description": "",
"parameters": {
"type": "object",
"properties": {
"target_device": {"type": "string", "description": "The target timer to cancel"},
},
"required": [
"target_device"
]
}
}},
{"function": {
"name": "climate.set_temperature",
"description": "",
"parameters": {
"type": "object",
"properties": {
"target_device": {"type": "string", "description": "The target climate device to set temperature"},
"temperature": {"type": "number", "description": "Target temperature"}
},
"required": [
"target_device",
"temperature"
]
}
}},
{"function": {
"name": "climate.set_humidity",
"description": "",
"parameters": {
"type": "object",
"properties": {
"target_device": {"type": "string", "description": "The target humidifier device to set humidity"},
"humidity": {"type": "integer", "description": "Target humidity percentage (0-100)", "minimum": 0, "maximum": 100}
},
"required": [
"target_device",
"humidity"
]
}
}},
{"function": {
"name": "climate.set_hvac_mode",
"description": "",
"parameters": {
"type": "object",
"properties": {
"target_device": {"type": "string", "description": "The target climate device to set HVAC mode"},
"hvac_mode": {"type": "string", "description": "The HVAC mode"}
},
"required": [
"target_device",
"hvac_mode"
]
}
}},
{"function": {
"name": "climate.set_preset_mode",
"description": "",
"parameters": {
"type": "object",
"properties": {
"target_device": {"type": "string", "description": "The target climate device to set preset mode"},
"preset_mode": {"type": "string", "description": "The preset mode"}
},
"required": [
"target_device",
"preset_mode"
]
}
}},
{"function": {
"name": "climate.set_fan_mode",
"description": "",
"parameters": {
"type": "object",
"properties": {
"target_device": {"type": "string", "description": "The target climate device to set fan mode"},
"fan_mode": {"type": "string", "description": "The fan mode"}
},
"required": [
"target_device",
"fan_mode"
]
}
}}
]

259
data/utils.py Normal file
View File

@@ -0,0 +1,259 @@
import random
import re
import os
import csv
from typing import Any, TypedDict
import pandas
from datetime import datetime, timedelta
import webcolors
class NoResponseAvailableException(Exception):
pass
class NoServicesAvailableException(Exception):
pass
def closest_color(requested_color: tuple[int, int, int]):
min_colors: dict[int, str] = {}
color_names = webcolors.names("css3")
for name in color_names:
r_c, g_c, b_c = webcolors.name_to_rgb(name)
rd = (r_c - requested_color[0]) ** 2
gd = (g_c - requested_color[1]) ** 2
bd = (b_c - requested_color[2]) ** 2
min_colors[(rd + gd + bd)] = name
return min_colors[min(min_colors.keys())]
def generate_random_datetime():
start_date = datetime(2022, 1, 1)
end_date = datetime(2030, 12, 31)
delta = end_date - start_date
random_days = random.randint(0, delta.days)
random_seconds = random.randint(0, 24 * 60 * 60)
random_date_time = start_date + timedelta(days=random_days, seconds=random_seconds)
return random_date_time
var_pattern = re.compile("<(.*?)>")
def get_included_vars(response: str):
result = []
for var in var_pattern.findall(response):
if var == "device_name":
continue
result.append(var)
return ",".join(sorted(result))
def generate_random_parameter(param_name: str, piles_of_data: "DatasetPiles"):
RANDOM_PARAMETER_GENERATORS = {
"rgb_color": lambda: (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)),
"brightness": lambda: random.randint(0, 100),
"fan_mode": lambda: random.choice(["On Low", "On High", "Auto Low", "Auto High", "Off"]),
"temp_f": lambda: random.randint(60, 80),
"temp_c": lambda: random.randint(15, 25),
"humidity": lambda: random.randint(10, 90),
"preset_mode": lambda: random.choice(["home", "eco", "away", "auto"]),
"hvac_mode": lambda: random.choice(["heat", "cool", "heat_cool", "off", "auto", "fan_only"]),
"media": lambda: random.choice(piles_of_data["pile_of_media_names"]),
"volume": lambda: round(random.random(), 2),
"duration": lambda: random.choice(list(piles_of_data["pile_of_durations"].keys())),
"remaining": lambda: f"{random.randint(0, 3):02}:{random.randint(0, 60)}:{random.randint(0, 60)}",
"todo": lambda: random.choice(piles_of_data["pile_of_todo_items"]),
}
param_generator = RANDOM_PARAMETER_GENERATORS.get(param_name)
if not param_generator:
raise Exception(f"Unknown param to generate random value for {param_name}")
return param_generator()
def get_random_response(pile_of_responses: pandas.DataFrame, *, service: str, persona: str, question_template: str, short: bool) -> tuple[str, str]:
required_vars = list(set([var for var in var_pattern.findall(question_template) if "device_name" not in var]))
possible_results = pile_of_responses.loc[(pile_of_responses['service']==service) &
(pile_of_responses['persona']==persona) &
(pile_of_responses['short']==(1 if short else 0)) &
(pile_of_responses['contains_vars']==",".join(sorted(required_vars)))
]
if len(possible_results) == 0:
raise NoResponseAvailableException(f"No responses matched the provided filters: {persona}, {service}, {required_vars}, {short}")
return possible_results.sample()["response_starting"].values[0], possible_results.sample()["response_confirmed"].values[0]
class PileOfDeviceType(TypedDict):
device_name: str
description: str
type: str
class PileOfSpecificActionType(TypedDict):
service_name: str
device_name: str
phrase: str
class PileOfTemplatedActionType(TypedDict):
device_type: str
service: str
phrase: str
multiplier: int
class PileOfStatusRequestType(TypedDict):
device_type: str
state: str
phrase: str
assistant_response: str
class PileOfHallucinatedServiceType(TypedDict):
real_service: str
hallucinated_service: str
class PileOfFailedToolcallType(TypedDict):
service_name: str
correct_device_name: str
correct_friendly_name: str
bad_device_name: str
phrase: str
error_result: str
retry_prompt: str
class PileOfRefusalsType(TypedDict):
reason_type: str
service_name: str
device_name: str
friendly_name: str
desired_state: str
phrase: str
response: str
class DatasetPiles:
def __init__(self, supported_devices, language="english"):
self.language = language
cwd = os.path.dirname(__file__)
with open(f"{cwd}/piles/{language}/pile_of_and_words.csv", encoding="utf8") as f:
self.and_words = [ x.strip() for x in f.readlines() ]
with open(f"{cwd}/piles/{language}/pile_of_durations.csv", encoding="utf8") as f:
reader = csv.DictReader(f)
self.pile_of_durations: dict[str, str] = { x["duration"]: x["name"] for x in reader }
# media names are not translated
with open(f"{cwd}/piles/english/pile_of_media_names.txt", encoding="utf8") as f:
self.pile_of_media_names = [ x.strip() for x in f.readlines() ]
with open(f"{cwd}/piles/{language}/pile_of_todo_items.txt", encoding="utf8") as f:
self.pile_of_todo_items = [ x.strip() for x in f.readlines() ]
self.stacks_of_device_names: dict[str, list[PileOfDeviceType]] = { x: [] for x in supported_devices }
with open(f"{cwd}/piles/{language}/pile_of_device_names.csv", encoding="utf8") as f:
reader = csv.DictReader(f)
pile_of_device_names = list(reader)
for device_dict in pile_of_device_names:
try:
device_type = device_dict["device_name"].split(".")[0]
device_dict["type"] = device_type
self.stacks_of_device_names[device_type].append(device_dict) # type: ignore
except KeyError as ex:
print(ex)
with open(f"{cwd}/piles/{language}/pile_of_templated_actions.csv", encoding="utf8") as f:
reader = csv.DictReader(f)
pile_of_templated_actions = list(reader)
processed_pile_of_templated_actions = []
for action in pile_of_templated_actions:
try:
multiplier = int(action["multiplier"])
except Exception:
raise Exception(f"line has a bad multiplier: {action}")
for x in range(multiplier):
processed_pile_of_templated_actions.append(action)
self.pile_of_templated_actions: list[PileOfTemplatedActionType] = processed_pile_of_templated_actions
with open(f"{cwd}/piles/{language}/pile_of_specific_actions.csv", encoding="utf8") as f:
reader = csv.DictReader(f)
self.pile_of_specific_actions: list[PileOfSpecificActionType] = list(reader) # type: ignore
self.pile_of_responses = pandas.read_csv(f"{cwd}/piles/{language}/pile_of_responses.csv")
self.pile_of_responses["contains_vars"] = self.pile_of_responses["response_starting"].apply(get_included_vars)
with open(f"{cwd}/piles/{language}/pile_of_status_requests.csv", encoding="utf8") as f:
reader = csv.DictReader(f)
self.pile_of_status_requests: list[PileOfStatusRequestType] = list(reader) # type: ignore
with open(f"{cwd}/piles/{language}/pile_of_system_prompts.csv", encoding="utf8") as f:
reader = csv.DictReader(f)
self.pile_of_system_prompts: dict[str, str] = { line["persona"]: line["prompt"] for line in reader }
# service names are not translated
with open(f"{cwd}/piles/english/pile_of_hallucinated_service_names.csv", encoding="utf8") as f:
reader = csv.DictReader(f)
self.pile_of_hallucinated_service_names: list[PileOfHallucinatedServiceType] = list(reader) # type: ignore
failed_tool_calls_path = f"{cwd}/piles/{language}/pile_of_failed_tool_calls.csv"
self.pile_of_failed_tool_calls = []
if os.path.exists(failed_tool_calls_path):
with open(failed_tool_calls_path, encoding="utf8") as f:
reader = csv.DictReader(f)
self.pile_of_failed_tool_calls: list[PileOfFailedToolcallType] = list(reader) # type: ignore
refusals_path = f"{cwd}/piles/{language}/pile_of_refusals.csv"
self.pile_of_refusals = []
if os.path.exists(refusals_path):
with open(refusals_path, encoding="utf8") as f:
reader = csv.DictReader(f)
self.pile_of_refusals: list[PileOfRefusalsType] = list(reader) # type: ignore
def __getitem__(self, key):
return getattr(self, key)
_piles_cache = {}
def get_dataset_piles(language: str) -> DatasetPiles:
if language not in _piles_cache:
_piles_cache[language] = DatasetPiles( [
"light", "switch", "fan", "garage_door", "blinds",
"lock","media_player", "climate", "vacuum", "timer", "todo",
], language)
return _piles_cache[language]
class ToolCall(TypedDict):
tool_name: str
service_name: str
tool_args: dict[str, Any]
class ToolResult(TypedDict):
tool_name: str
tool_result: str
class AssistantTurn(TypedDict):
answer: str
tool_call_sequence: list[ToolCall]
tool_results: list[ToolResult]
train_on_turn: bool
class Example(TypedDict):
states: list[str]
available_tools: list[str]
question: str
assistant_turns: list[AssistantTurn]
class DatasetEntry(TypedDict):
messages: list[dict[str, Any]]
tools: list[dict[str, Any]]

View File

@@ -1,367 +0,0 @@
# Training new model
## Initial requirements
Before you start training you model you should prepare data. One off the way to prepare data is run script `data/generate_home_assistant_data.py`. Currently this script support english, french, german, polish and spanish language. This is not the only way and you can prepare your own data. More details can be found in the file [HOW TO PREPARE DATA](../data/README.md).
## Training
Before you will prepare your local environment and install all necessary libraries. You will need a graphics card with significant VRAM (16GB+) to effectively train the new model. If you have less VRAM you may be able to perform a LoRA fine tuning, but this will be less effective.
Start by installing system dependencies (assumes Ubuntu):
`sudo apt-get install python3-dev`
Then create a Python virtual environment and install all necessary libraries:
```
python3 -m venv .train_data
source ./.train_data/bin/activate
pip3 install datasets==2.20.0 dataclasses==0.6 transformers==4.43.3 torch==2.4.0 accelerate==0.33.0 tensorboard==2.17.0 peft==0.12.0 bitsandbytes==0.43.3 trl==0.9.6
```
### Prepare your model
Select which model you need to train: e.g. `TinyLlama/TinyLlama-1.1B-Chat-v1.0`. Remember that the choice of model depends on the VRAM your graphics card. If the model is larger, it is worth using the LoRA configuration which will allow you to train your model.
Run train.py script to start Fine Tuning with selected model and prepared data. It is worth experimenting with several parameters to choose the best model. Few example with some params you can find below.
### Example training runs
#### Phi Series
**Phi Modules (for lora fine-tuning)**
- MLP: fc1,fc2
- MHA: q_proj,v_proj,k_proj,dense
- Embeddings: embed_tokens (input) lm_head (output)
```console
python3 train.py \
--run_name home-phi3-mini-rev1 \
--base_model microsoft/Phi-3-mini-4k-instruct \
--bf16 \
--train_dataset data/home_assistant_train.jsonl \
--test_dataset data/home_assistant_test.jsonl \
--learning_rate 5e-6 --batch_size 32 \
--micro_batch_size 8 --gradient_checkpointing --group_by_length \
--ctx_size 2048 --save_steps 100 --save_total_limit 10
```
```console
python3 train.py \
--run_name Home-3B-v2_ha-GGUF \
--base_model microsoft/phi-2 \
--add_pad_token \
--add_chatml_tokens \
--bf16 \
--train_dataset data/home_assistant_train.jsonl \
--learning_rate 1e-5 \
--save_steps 1000 \
--micro_batch_size 2 --gradient_checkpointing \
--ctx_size 2048 \
--use_lora --lora_rank 32 --lora_alpha 64 --lora_modules fc1,fc2,q_proj,v_proj,dense --lora_modules_to_save embed_tokens,lm_head --lora_merge
```
```console
python3 train.py \
--run_name home-1b-rev6 \
--base_model microsoft/phi-1_5 \
--add_pad_token \
--add_chatml_tokens \
--bf16 \
--train_dataset data/home_assistant_train.jsonl \
--test_dataset data/home_assistant_test.jsonl \
--learning_rate 1e-5 \
--micro_batch_size 4 --gradient_checkpointing \
--ctx_size 2048 --save_steps 200
```
#### StableLM series
**StableLM modules (for lora fine-tuning)**
- MLP: up_proj,down_proj,gate_proj
- MHA: q_proj,v_proj,k_proj,o_proj
- Embeddings: embed_tokens (input) lm_head (output)
```console
python3 train.py \
--run_name stablehome-1_6b-rev3 \
--base_model stabilityai/stablelm-2-zephyr-1_6b \
--bf16 \
--train_dataset data/home_assistant_train.jsonl \
--test_dataset data/home_assistant_test.jsonl \
--learning_rate 1e-5 --batch_size 32 \
--micro_batch_size 2 --gradient_checkpointing --group_by_length \
--ctx_size 2048 --save_steps 100 --save_total_limit 20
```
```console
accelerate launch --config_file fsdp_config.yaml train.py \
--run_name stablehome-3b-rev10 \
--base_model stabilityai/stablelm-zephyr-3b \
--bf16 \
--train_dataset data/home_assistant_train.jsonl \
--learning_rate 1e-5 --batch_size 64 --epochs 1 \
--micro_batch_size 2 --gradient_checkpointing --group_by_length \
--ctx_size 2048 \
--save_steps 50 --save_total_limit 10 --eval_steps 100 --logging_steps 2
```
```console
python3 train.py \
--run_name stablehome-3b-rev9-dpo \
--base_model ./models/stablehome-3b-rev9/ \
--bf16 \
--train_dataset data/home_assistant_dpo.jsonl \
--learning_rate 2e-7 --batch_size 16 --epochs 1 \
--dpo --beta 0.1 --dpo_loss sigmoid \
--micro_batch_size 1 --gradient_checkpointing \
--ctx_size 2048 \
--save_steps 50 --save_total_limit 10 --eval_steps 100 --logging_steps 2
```
```console
python3 train.py \
--run_name stablehome-3b-rev8 \
--base_model stabilityai/stablelm-zephyr-3b \
--bf16 \
--train_dataset data/home_assistant_train.jsonl \
--test_dataset data/home_assistant_test.jsonl \
--learning_rate 1e-5 --batch_size 128 --epochs 2 \
--micro_batch_size 8 --gradient_checkpointing \
--ctx_size 2048 \
--save_steps 50 --save_total_limit 20 --eval_steps 100 --logging_steps 2 \
--use_lora --lora_rank 64 --lora_alpha 128 --lora_modules up_proj,down_proj,q_proj,v_proj,o_proj --lora_merge
```
#### Llama 3 8B Instruct:
```console
python3 train.py \
--run_name llamahome-8b-rev1 \
--base_model NousResearch/Meta-Llama-3-8B-Instruct \
--bf16 \
--train_dataset data/home_assistant_train.jsonl \
--test_dataset data/home_assistant_test.jsonl \
--learning_rate 1e-5 --learning_rate_warmup 0.03 --batch_size 64 --epochs 1 \
--micro_batch_size 2 --gradient_checkpointing --group_by_length \
--ctx_size 2048 \
--save_steps 25 --save_total_limit 20 --eval_steps 100 --logging_steps 2 \
--use_lora --lora_rank 32 --lora_alpha 64 --lora_modules up_proj,down_proj,q_proj,v_proj,o_proj
```
#### Llama 2 7B:
```console
python3 train.py \
--run_name home-7b-rev2 \
--base_model TheBloke/Llama-2-7B-GPTQ \
--train_dataset data/home_assistant_train.jsonl \
--test_dataset data/home_assistant_test.jsonl \
--load_as_gptq --use_lora --gradient_checkpointing \
--add_pad_token --bf16 --micro_batch_size 4 --learning_rate 2e-5
```
#### Bielik 7B Instruct:
```console
python3 train.py \
--run_name mistralhome-bielik-rev1 \
--base_model speakleash/Bielik-7B-Instruct-v0.1 \
--bf16 \
--train_dataset data/home_assistant_train.jsonl \
--test_dataset data/home_assistant_test.jsonl \
--learning_rate 1e-5 --learning_rate_warmup 0.03 --batch_size 64 --epochs 1 \
--micro_batch_size 4 --gradient_checkpointing --group_by_length \
--ctx_size 2048 \
--save_steps 50 --save_total_limit 20 --eval_steps 200 --logging_steps 1 \
--use_lora --lora_rank 32 --lora_alpha 64 --lora_modules up_proj,down_proj,q_proj,v_proj,o_proj --load_in_4bit
```
#### TinyLlama:
```console
python3 train.py \
--run_name tinyhome-rev4 \
--base_model TinyLlama/TinyLlama-1.1B-Chat-v1.0 \
--bf16 \
--train_dataset data/home_assistant_train.jsonl \
--test_dataset data/home_assistant_test.jsonl \
--learning_rate 2e-5 --batch_size 32 \
--micro_batch_size 8 --gradient_checkpointing --group_by_length \
--ctx_size 2048 --save_steps 100 --save_total_limit 10
```
#### Qwen2 0.5B Instruct:
```console
python3 train.py \
--run_name tinyhome-qwen-rev3 \
--base_model Qwen/Qwen2-0.5B-Instruct \
--bf16 \
--train_dataset data/home_assistant_train.jsonl \
--test_dataset data/home_assistant_test.jsonl \
--learning_rate 2e-5 --batch_size 64 \
--micro_batch_size 8 --gradient_checkpointing --group_by_length \
--ctx_size 2048 --save_steps 1000
```
#### polka 1.1b chat:
```console
python3 train.py \
--run_name tinyhome-polish-rev1 \
--base_model eryk-mazus/polka-1.1b-chat \
--bf16 \
--train_dataset data/home_assistant_train.jsonl \
--test_dataset data/home_assistant_test.jsonl \
--learning_rate 2e-5 --batch_size 32 \
--micro_batch_size 8 --gradient_checkpointing --group_by_length \
--ctx_size 2048 --save_steps 100 --save_total_limit 10
```
```console
python3 train.py \
--run_name tinyhome-rev2-dpo \
--base_model ./models/tinyhome-rev2/ \
--bf16 \
--train_dataset data/home_assistant_dpo.jsonl \
--learning_rate 5e-7 --batch_size 16 --epochs 1 \
--dpo --beta 0.1 --dpo_loss sigmoid --learning_rate_warmup 0.03 \
--micro_batch_size 2 --gradient_checkpointing \
--ctx_size 2048 \
--save_steps 50 --save_total_limit 10 --eval_steps 100 --logging_steps 2
```
#### Llama 3.2 3B Instruct
```
python3 generate_home_assistant_data.py --train --test --large --sharegpt --language english german french spanish polish
python3 train.py \
--run_name Home-Llama-3.2-3B-rev2 \
--base_model meta-llama/Llama-3.2-3B-Instruct \
--bf16 \
--train_dataset data/home_assistant_train_large.jsonl \
--test_dataset data/home_assistant_test.jsonl \
--learning_rate 1e-5 --learning_rate_warmup 0.03 --batch_size 64 --epochs 1 \
--micro_batch_size 1 \
--ctx_size 2048 \
--save_steps 200 --save_total_limit 1 --eval_steps 100 --logging_steps 2
```
### Problems
Training a model is not an easy thing. Therefore, we are not able to cover all the problems encountered during training. Here we will try to add known problems and solutions on how to deal with them.
1. Problem with incorrect recognizing prefix_ids and suffix_ids
When you ran the script and in the logs you will see this kind of logs:
```console
...
[[128000, 128006, 9125, 128007, 271, 41, 18223, 7545, ... Lots more numbers ..., 128009, 128006, 78191, 128007, 271]]
warning! example had no assistant response in it!
...
```
The script is printing the warning along with the tokenized version of the example that is being trained on. This is to help determine what the correct prefix_ids and suffix_ids.
The idea is that the training script need to build a mask (array) that is True for all of the tokens that the assistant would respond with, and False for all of the tokens that the user inputted or was included in the system prompt. We don't want to train the model to reproduce those tokens because it is a waste of computation power and can also confuse the model. This is the biggest difference between pre-training an LLM and performing Supervised Fine Tuning. In pre-training you train the model on the entire example (mask is True for all tokens).
The training script here attempts to auto-detect which tokens are for the assistant, but that is not trivial, and sometimes you need to manually provide the tokens that start an assistant response, and the tokens that end an assistant response.
For a model like TinyLlama that uses Zephyr format, the prefix is `<|assistant|>\n` and the suffix is `</s>`. That ends up equating to `[29966, 29989, 465, 22137, 29989, 29958, 13]` and `[2]` as the prefix and suffix tokens respectively (the suffix token is actually just the end of sentence/eos token in this case but is not always true for all chat models)
The other issue is that tokenizers perform differently based on if a token is preceded by white-space or if it is adjacent to the token that came before it. For example, check out https://gpt-tokenizer.dev/ to mess around with the GPT tokenizers. Try tokenizing the word `Computerwiz`. You will see that it returns 2 tokens: `[50411, 146049]` split up with `Computer` and `wiz`. Now if you split the word up with a space as Computer wiz, you would expect there to be 3 tokens now, the same 2 tokens from before separated by the "space" token. Instead you get back 2 tokens `[50411, 121731]`. The first token is the same, but the second token has "consumed" the space we inserted and is now a totally different token. This means that figuring out the exact prefix and suffix IDs can be a bit hard to do without the full prompt assembled and all of the spaces, newlines, and tabs that are part of the full chat template.
There is a script included in this repo that shows this and can assist in determining the correct prefix and suffix tokens for your model: [find_split.py](/find_split.py)
Example to use the script:
```console
python3 find_split.py NousResearch/Meta-Llama-3.1-8B-Instruct
```
On the console you will see this output:
```console
None of PyTorch, TensorFlow >= 2.0, or Flax have been found. Models won't be available and only tokenizers, configuration and file/data utilities can be used.
tokenizer_config.json: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 50.9k/50.9k [00:00<00:00, 516kB/s]
tokenizer.json: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 9.09M/9.09M [00:17<00:00, 510kB/s]
special_tokens_map.json: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 296/296 [00:00<00:00, 1.06MB/s]
Estimated tokens for NousResearch/Meta-Llama-3.1-8B-Instruct
response prefix:
<|start_header_id|>assistant<|end_header_id|>
tokens with no leading whitespace: [128006, 78191, 128007, 271]
tokens with leading whitespace: [220, 128006, 78191, 128007, 271]
tokens with leading newline: [198, 128006, 78191, 128007, 271]
---------------
response suffix:
<|eot_id|><|start_header_id|>assistant<|end_header_id|>
tokens with no leading whitespace: [128009, 128006, 78191, 128007, 271]
tokens with leading whitespace: [220, 128009, 128006, 78191, 128007, 271]
tokens with leading newline: [198, 128009, 128006, 78191, 128007, 271]
---------------
'no whitespace' found the assistant response!
--prefix-ids 128006,78191,128007,271
--suffix-ids 128009,128006,78191,128007,271
'leading space' did not find the assistant response
'leading newline' did not find the assistant response
```
After that you should add extra parameters to you script for properly set those params. This is Supervised Fine Tuning params for correctly hide requests for the model. You probably see several examples of tokens which script give you, it is worth looking for the indicated tokens in your log and checking which value will be correct (You should be able to find them). In case above the correct values is:
```
prefix_ids = [128006, 78191, 128007, 271]
suffix_ids = [128009, 128006, 78191, 128007, 271]
```
You can add the provided arguments to your training run:
```
python3 train.py \
...
--prefix_ids 128006,78191,128007,271 \
--suffix_ids 128009,128006,78191,128007,271
```
#### Known prefix and suffix IDs
tinyllama:
```console
python3 train.py \
...
--prefix_ids 29966,29989,465,22137,29989,29958,13 \
--suffix_ids 2
```
qwen2:
```console
python3 train.py \
...
--prefix_ids 151644,77091,198 \
--suffix_ids 151645,198
```
polka-1.1:
```console
python3 train.py \
...
--prefix_ids 43883,20255,13 \
--suffix_ids 43882,29871,13
```
Llama-3-8B-Instruct:
```console
python3 train.py \
...
--prefix-ids 128006,78191,128007,271 \
--suffix-ids 128009,128006,78191,128007,271
```
## Worth reading:
* [Fine-tune Llama 3.1 Ultra-Efficiently with Unsloth](https://mlabonne.github.io/blog/posts/2024-07-29_Finetune_Llama31.html)
* [Fine-tune Mistral-7b with Direct Preference Optimization](https://mlabonne.github.io/blog/posts/Fine_tune_Mistral_7b_with_DPO.html)
* [Quantize Llama models with GGUF and llama.cpp](https://mlabonne.github.io/blog/posts/Quantize_Llama_2_models_using_ggml.html)

View File

@@ -1,211 +0,0 @@
# this script attempts to figure out the correct prefix_ids and suffix_ids for the given model
# usage: python3 find_split.py <model name>
from transformers import AutoTokenizer
from jinja2.exceptions import TemplateError
import sys
if len(sys.argv) > 1:
model = sys.argv[1]
else:
print(f"Usage: {sys.argv[0]} <model name>")
exit(-1)
prefix_ids = None
suffix_ids = None
tokenizer = AutoTokenizer.from_pretrained(model, trust_remote_code=True)
test_prompt = tokenizer.apply_chat_template(
conversation=[
{"role": "user", "content": r"HA_REQUEST"},
{"role": "assistant", "content": r"HA_RESPONSE"}
],
tokenize=False,
add_generation_prompt=False,
)
print("Chat template:")
print("-" * 100)
print(test_prompt)
print("-" * 100)
# Added real example to test the tokenizer
test_prompt_tokens = tokenizer.apply_chat_template(
conversation=[
{"role": "system", "content": "this is a system prompt"},
{"role": "user", "content": "a user request goes here"},
{"role": "assistant", "content": "the response is in here"}
],
tokenize=True,
add_generation_prompt=False
)
print("Chat template tokens:")
print("-" * 100)
print(test_prompt_tokens)
print("-" * 100)
try:
assistant_prompt = tokenizer.apply_chat_template(
conversation=[{"role": "assistant", "content": r"%%%%%%%%%%%%%%%%"}],
tokenize=False,
add_generation_prompt=False,
).split( r"%%%%%%%%%%%%%%%%")
except TemplateError:
user_prompt = tokenizer.apply_chat_template(
conversation=[
{"role": "user", "content": r"$$$$$$$$$$$$$$$$"}
],
tokenize=False,
add_generation_prompt=True,
)
# some prompt templates require user/assistant alternating
assistant_prompt = tokenizer.apply_chat_template(
conversation=[
{"role": "user", "content": r"$$$$$$$$$$$$$$$$"},
{"role": "assistant", "content": r"%%%%%%%%%%%%%%%%"},
],
tokenize=False,
add_generation_prompt=True,
).split(r"$$$$$$$$$$$$$$$$")[-1].strip().split(r"%%%%%%%%%%%%%%%%")
response_prefix = assistant_prompt[0]
response_suffix = assistant_prompt[1]
# check for inserted system prompt and remove it
if tokenizer.eos_token in response_prefix:
response_prefix = response_prefix.split(tokenizer.eos_token)[-1].lstrip()
# some chat templates ALWAYS add the bos token
if tokenizer.bos_token in response_prefix:
response_prefix = response_prefix.replace(tokenizer.bos_token, "")
prefix_ids = tokenizer(response_prefix, add_special_tokens=False)["input_ids"]
suffix_ids = tokenizer(response_suffix, add_special_tokens=False)["input_ids"]
prefix_ids2 = tokenizer(" " + response_prefix, add_special_tokens=False)["input_ids"]
suffix_ids2 = tokenizer(" " + response_suffix, add_special_tokens=False)["input_ids"]
prefix_ids3 = tokenizer("\n" + response_prefix, add_special_tokens=False)["input_ids"]
suffix_ids3 = tokenizer("\n" + response_suffix, add_special_tokens=False)["input_ids"]
prefix_ids4 = tokenizer(response_prefix.strip(), add_special_tokens=False)["input_ids"]
suffix_ids4 = tokenizer(response_suffix.strip(), add_special_tokens=False)["input_ids"]
print(f"Estimated tokens for {model}")
print("response prefix:")
print(response_prefix)
print("tokens with no leading whitespace:", prefix_ids)
print("tokens with leading whitespace:", prefix_ids2)
print("tokens with leading newline:", prefix_ids3)
print("tokens with stripped whitespace:", prefix_ids4)
print("-" * 100)
print("response suffix:")
print(response_suffix)
print("tokens with no leading whitespace:", suffix_ids)
print("tokens with leading whitespace:", suffix_ids2)
print("tokens with leading newline:", suffix_ids3)
print("tokens with stripped whitespace:", suffix_ids4)
def _find_mask_ranges(input_ids, prefix_ids, suffix_ids):
"""
Returns a mask that blocks out everything but the response from the assistant
The mask does NOT include the response_prefix but DOES include the response_suffix.
The resulting behavior is the model uses the prefix as a prompt and the suffix as the end of text token
"""
ranges = []
i = 0
while i < len(input_ids):
try:
# Find the start index of the prefix
start_idx = input_ids.index(prefix_ids[0], i)
except ValueError:
break
# Check if the entire prefix is present
if input_ids[start_idx:start_idx + len(prefix_ids)] == prefix_ids:
end_prefix_idx = start_idx + len(prefix_ids)
start_response_idx = end_prefix_idx + 1
# Find the start index of the suffix
try:
# Find the start index of the suffix
suffix_start_idx = input_ids.index(suffix_ids[0], end_prefix_idx)
except ValueError:
ranges.append((start_response_idx, len(input_ids)))
break
# Check if the entire suffix is present
if input_ids[suffix_start_idx:suffix_start_idx + len(suffix_ids)] == suffix_ids:
ranges.append((start_response_idx, suffix_start_idx))
i = suffix_start_idx + len(suffix_ids)
else:
i = suffix_start_idx + 1
else:
i = start_idx + 1
inverse_ranges = []
current = 0
for start, end in sorted(ranges):
if start > current:
inverse_ranges.append((current, start - 1))
current = max(current, end + 1)
if current < len(input_ids):
inverse_ranges.append((current, len(input_ids) - 1))
return inverse_ranges
try:
label = tokenizer.apply_chat_template(
conversation=[
{"role": "system", "content": "this is a system prompt"},
{"role": "user", "content": "a user request goes here"},
{"role": "assistant", "content": "the response is in here"}
],
add_generation_prompt=False,
)
except TemplateError:
# some chat templates don't have a system prompt option
label = tokenizer.apply_chat_template(
conversation=[
{"role": "user", "content": "a user request goes here"},
{"role": "assistant", "content": "the response is in here"}
],
add_generation_prompt=False,
)
def check_range(label, name, prefix_ids, suffix_ids):
label = label[:]
mask_ranges = _find_mask_ranges(label, prefix_ids, suffix_ids)
found = False
for start, end in mask_ranges:
if end - start == len(label) - 1:
print(f"'{name}' did not find the assistant response")
else:
found = True
# label[start:end] = [-100] * (end - start)
# assistant_tokens = [x for x in label if x != -100]
# decoded_string = tokenizer.decode(assistant_tokens)
# expected_decoded_string = "the response is in here" + tokenizer.decode(suffix_ids)
# if decoded_string == expected_decoded_string:
# found = True
if found:
print(f"'{name}' found the assistant response!")
print(f"\t--prefix_ids {','.join([str(x) for x in prefix_ids])}")
print(f"\t--suffix_ids {','.join([str(x) for x in suffix_ids])}")
# else:
# print(f"'{decoded_string}' != '{expected_decoded_string}'")
print("-" * 100)
check_range(label, "no added whitespace", prefix_ids, suffix_ids)
check_range(label, "leading space", prefix_ids2, suffix_ids2)
check_range(label, "leading newline", prefix_ids3, suffix_ids3)
check_range(label, "stripped whitespace", prefix_ids4, suffix_ids4)

View File

@@ -1,26 +0,0 @@
compute_environment: LOCAL_MACHINE
debug: false
distributed_type: FSDP
downcast_bf16: 'no'
enable_cpu_affinity: false
fsdp_config:
fsdp_auto_wrap_policy: TRANSFORMER_BASED_WRAP
fsdp_backward_prefetch: BACKWARD_PRE
fsdp_cpu_ram_efficient_loading: true
fsdp_forward_prefetch: true
fsdp_offload_params: false
fsdp_sharding_strategy: FULL_SHARD
fsdp_state_dict_type: SHARDED_STATE_DICT
fsdp_sync_module_states: true
fsdp_use_orig_params: true
machine_rank: 0
main_training_function: main
mixed_precision: bf16
num_machines: 1
num_processes: 2 # number of GPUs on the system
rdzv_backend: static
same_network: true
tpu_env: []
tpu_use_cluster: false
tpu_use_sudo: false
use_cpu: false

View File

@@ -1,75 +0,0 @@
#!/usr/bin/env python3
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
SYSTEM_PROMPT = "You are 'Al', a helpful AI Assistant that controls the devices in a house. Complete the following task as instructed with the information provided only."
CTX_SIZE = 512
def tokenize(tokenizer, prompt):
return tokenizer(prompt, return_tensors="pt", padding=True, truncation=True, max_length=CTX_SIZE)
def generate(model, tokenizer, prompt):
eos_token_id = tokenizer(tokenizer.eos_token)["input_ids"][0]
inputs = tokenize(tokenizer, prompt)
with torch.no_grad():
outputs = model.generate(
**inputs,
max_new_tokens=128,
use_cache=True,
do_sample=True,
temperature=0.7,
top_k=50,
top_p=1.0,
repetition_penalty=1.15,
eos_token_id=eos_token_id,
pad_token_id=eos_token_id,
)
text = tokenizer.batch_decode(outputs)
return text
def format_example(example):
sys_prompt = SYSTEM_PROMPT
services_block = "Services: " + ", ".join(sorted(example["available_tools"]))
states_block = "Devices:\n" + "\n".join(example["states"])
question = "Request:\n" + example["question"]
response_start = "Response:\n"
return "\n".join([sys_prompt, services_block, states_block, question, response_start])
def main():
request = "turn on the office lights"
model_folder = "./models/home-llm-rev9"
num_examples = 10
example = {
"states": [
"light.kitchen_sink = on",
"light.kitchen_lamp = on",
"light.office_desk_lamp = on",
"light.family_room_overhead = on",
"fan.family_room = off",
"lock.front_door = locked"
],
"available_tools": ["turn_on", "turn_off", "toggle", "lock", "unlock" ],
"question": request,
}
prompt = format_example(example)
torch.set_default_device("cuda")
print(f"Loading model from {model_folder}...")
trained_model = AutoModelForCausalLM.from_pretrained(model_folder, trust_remote_code=True, torch_dtype=torch.bfloat16)
trained_tokenizer = AutoTokenizer.from_pretrained(model_folder, trust_remote_code=True)
print("Generating output...")
output = generate(trained_model, trained_tokenizer, [ prompt for x in range(num_examples) ])
for text in output:
print("--------------------------------------------------")
print(text.replace(trained_tokenizer.eos_token, ""))
if __name__ == "__main__":
main()

View File

@@ -1,4 +0,0 @@
# https://developers.home-assistant.io/docs/add-ons/repository#repository-configuration
name: text-generation-webui - Home Assistant Add-on
url: 'https://github.com/acon96/home-llm'
maintainer: acon96

View File

@@ -6,7 +6,7 @@ bitsandbytes>=0.45.2
trl>=0.14.0
webcolors>=24.8.0
pandas>=2.2.3
# flash-attn
flash-attn
sentencepiece>=0.2.0
deep-translator>=1.11.4
langcodes>=3.5.0

View File

@@ -1,36 +1,53 @@
#!/bin/bash
set -e
LLAMA_CPP=../llama.cpp
MODEL_NAME=$1
OUT_TYPE=${2:-"f16"}
MODELS_DIR=${3:-"./models"}
LLAMA_CPP=${4:-"./llama.cpp"}
if [[ ! -d "./models/$MODEL_NAME" ]]; then
if [[ ! -d "$MODELS_DIR/$MODEL_NAME" ]]; then
echo "Unknown model $MODEL_NAME"
exit -1
fi
if [ -f "./models/$MODEL_NAME/gguf_overrides.json" ]; then
OVERRIDES="--metadata ./models/$MODEL_NAME/gguf_overrides.json"
echo "Using metadata from ./models/$MODEL_NAME/gguf_overrides.json"
if [ -f "$MODELS_DIR/$MODEL_NAME/gguf_overrides.json" ]; then
OVERRIDES="--metadata $MODELS_DIR/$MODEL_NAME/gguf_overrides.json"
echo "Using metadata from $MODELS_DIR/$MODEL_NAME/gguf_overrides.json"
else
OVERRIDES=""
fi
echo "Converting to GGUF..."
if [ ! -f "./models/$MODEL_NAME/$MODEL_NAME.f16.gguf" ]; then
$LLAMA_CPP/convert_hf_to_gguf.py --outfile ./models/$MODEL_NAME/$MODEL_NAME.f16.gguf --outtype f16 ./models/$MODEL_NAME/ $OVERRIDES
if [ ! -f "$MODELS_DIR/$MODEL_NAME/$MODEL_NAME.$OUT_TYPE.gguf" ]; then
$LLAMA_CPP/convert_hf_to_gguf.py --outfile $MODELS_DIR/$MODEL_NAME/$MODEL_NAME.$OUT_TYPE.gguf --outtype $OUT_TYPE $MODELS_DIR/$MODEL_NAME/ $OVERRIDES
else
echo "Converted model for already exists. Skipping..."
fi
echo "Generate imatrix for model..."
if [ ! -f "groups_merged.txt" ]; then
echo "Downloading groups_merged.txt..."
wget https://huggingface.co/datasets/froggeric/imatrix/resolve/main/groups_merged.txt
fi
DESIRED_QUANTS=("Q8_0" "Q5_K_M" "Q4_0" "Q4_1" "Q4_K_M")
if [ ! -f "$MODELS_DIR/$MODEL_NAME/$MODEL_NAME.imatrix.gguf" ]; then
$LLAMA_CPP/build/bin/llama-imatrix -m $MODELS_DIR/$MODEL_NAME/$MODEL_NAME.$OUT_TYPE.gguf -ngl 999 -c 512 -f groups_merged.txt -o $MODELS_DIR/$MODEL_NAME/$MODEL_NAME.imatrix.gguf
else
echo "Imatrix model already exists. Skipping..."
fi
DESIRED_QUANTS=("Q8_0" "Q6_K" "Q5_K_M" "Q4_0" "Q4_1" "Q3_K_M" "IQ4_NL" "IQ4_XS")
for QUANT in "${DESIRED_QUANTS[@]}"
do
echo "Quantizing to $QUANT..."
QUANT_LOWER=$(echo "$QUANT" | awk '{print tolower($0)}')
if [ ! -f "./models/$MODEL_NAME/$MODEL_NAME.$QUANT_LOWER.gguf" ]; then
$LLAMA_CPP/build/bin/llama-quantize ./models/$MODEL_NAME/$MODEL_NAME.f16.gguf ./models/$MODEL_NAME/$MODEL_NAME.$QUANT_LOWER.gguf $QUANT
if [ ! -f "$MODELS_DIR/$MODEL_NAME/$MODEL_NAME.$QUANT_LOWER.gguf" ]; then
$LLAMA_CPP/build/bin/llama-quantize --imatrix $MODELS_DIR/$MODEL_NAME/$MODEL_NAME.imatrix.gguf $MODELS_DIR/$MODEL_NAME/$MODEL_NAME.$OUT_TYPE.gguf $MODELS_DIR/$MODEL_NAME/$MODEL_NAME.$QUANT_LOWER.gguf $QUANT
else
echo "Quantized model for '$QUANT' already exists. Skipping..."
fi
done
done
echo "All done!"

View File

@@ -1,17 +0,0 @@
{% for message in messages %}
{%- if message['role'] == 'user' or message['role'] == 'tool' -%}
<|user|> {{ message['content'] }}{{ eos_token }}
{%- elif message['role'] == 'system' -%}
<|system|> {{ message['content'] }}
Services:
{%- for tool in tools %} {{ tool['function']['name'] }}({% for param in tool['function']['parameters']['properties'].keys() if param != 'target_device' %}{{ param }}{% if not loop.last %},{% endif %}{% endfor -%}),{% if not loop.last -%}
{%- if tools | length == 0 %}No tools were provided. If the user requests you interact with a device, tell them you are unable to do so.{% endif %}
{%- endif -%}{%- endfor -%}
{{ eos_token }}
{%- elif message['role'] == 'assistant' -%}
<|assistant|> {{ message['content'] }}{{ eos_token }}
{%- endif -%}
{%- if loop.last and add_generation_prompt %}
<|assistant|>
{%- endif %}
{% endfor -%}

View File

@@ -27,7 +27,7 @@ from custom_components.llama_conversation.const import (
DEFAULT_LLAMACPP_ENABLE_FLASH_ATTENTION,
DEFAULT_GBNF_GRAMMAR_FILE,
DEFAULT_PROMPT_CACHING_ENABLED,
CONF_GENERIC_OPENAI_PATH,
CONF_API_PATH,
)
@@ -82,7 +82,7 @@ def test_generic_openai_name_and_path(hass_defaults):
CONF_HOST: "localhost",
CONF_PORT: "8080",
CONF_SSL: False,
CONF_GENERIC_OPENAI_PATH: "v1",
CONF_API_PATH: "v1",
CONF_CHAT_MODEL: "demo",
},
)
@@ -91,7 +91,7 @@ def test_generic_openai_name_and_path(hass_defaults):
CONF_HOST: "localhost",
CONF_PORT: "8080",
CONF_SSL: False,
CONF_GENERIC_OPENAI_PATH: "v1",
CONF_API_PATH: "v1",
}
)
assert "Generic OpenAI" in name

View File

@@ -16,7 +16,7 @@ from custom_components.llama_conversation.const import (
CONF_CONTEXT_LENGTH,
CONF_DOWNLOADED_MODEL_FILE,
CONF_DOWNLOADED_MODEL_QUANTIZATION,
CONF_GENERIC_OPENAI_PATH,
CONF_API_PATH,
CONF_PROMPT,
CONF_REQUEST_TIMEOUT,
DOMAIN,
@@ -43,7 +43,7 @@ async def test_migrate_v2_creates_subentry_and_updates_entry(monkeypatch, hass):
CONF_HOST: "localhost",
CONF_PORT: "8080",
CONF_SSL: False,
CONF_GENERIC_OPENAI_PATH: "v1",
CONF_API_PATH: "v1",
CONF_PROMPT: "hello",
CONF_REQUEST_TIMEOUT: 90,
CONF_CHAT_MODEL: "model-x",

View File

@@ -1,220 +0,0 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": null,
"id": "469a9a97-0f6b-475f-8aef-a796c1c5244f",
"metadata": {},
"outputs": [],
"source": [
"%pip install -r requirements.txt\n",
"\n",
"import os, re\n",
"from train import TrainingRunArguments, do_training_run\n",
"\n",
"def get_next_run_name(model):\n",
" pattern = re.compile(model + r\"-rev(\\d+)$\")\n",
" max_rev = 0\n",
"\n",
" for folder in os.listdir(\"models/\"):\n",
" match = pattern.search(folder)\n",
" if match:\n",
" max_rev = max(max_rev, int(match.group(1)))\n",
"\n",
" return f\"{model}-rev{max_rev + 1}\"\n",
"\n",
"os.environ[\"HF_HOME\"] = \"/workspace/\""
]
},
{
"cell_type": "markdown",
"id": "ed0807bf",
"metadata": {},
"source": [
"## Generate Data"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "aaafce74",
"metadata": {},
"outputs": [],
"source": [
"%pip install -r data/requirements.txt\n",
"from data.generate_home_assistant_data import main as generate_data\n",
"\n",
"generate_data([\"--train\", \"--test\", \"--large\", \"--sharegpt\", \"--language\", \"english\", \"german\", \"french\", \"spanish\", \"polish\"])"
]
},
{
"cell_type": "markdown",
"id": "ff011772",
"metadata": {},
"source": [
"## Llama 3.2 1B"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "48839ce2-1939-4d7f-817c-97b047bafd42",
"metadata": {},
"outputs": [],
"source": [
"# python3 train.py \\\n",
"# --run_name Home-Llama-3.2-1B-rev1 \\\n",
"# --base_model meta-llama/Llama-3.2-1B-Instruct \\\n",
"# --bf16 \\\n",
"# --train_dataset data/home_assistant_train.jsonl \\\n",
"# --test_dataset data/home_assistant_test.jsonl \\\n",
"# --learning_rate 2e-5 --learning_rate_warmup 0.03 --batch_size 64 --epochs 1 \\\n",
"# --micro_batch_size 2 \\\n",
"# --ctx_size 2048 \\\n",
"# --save_steps 200 --save_total_limit 1 --eval_steps 200 --logging_steps 2\n",
"\n",
"do_training_run(TrainingRunArguments(\n",
" run_name=get_next_run_name(\"Home-Llama-3.2-1B\"),\n",
" base_model=\"meta-llama/Llama-3.2-1B-Instruct\",\n",
" bf16=True,\n",
" train_dataset=\"data/home_assistant_train.jsonl\",\n",
" test_dataset=\"data/home_assistant_test.jsonl\",\n",
" learning_rate=2e-5, learning_rate_warmup=0.03, \n",
" batch_size=64, micro_batch_size=2, epochs=1,\n",
" ctx_size=2048,\n",
" save_steps=200, save_total_limit=1, eval_steps=200, logging_steps=2,\n",
"))"
]
},
{
"cell_type": "markdown",
"id": "e71572c4",
"metadata": {},
"source": [
"# Qwen3 1.7b"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "fdf2b998",
"metadata": {},
"outputs": [],
"source": [
"# HYPERPARAMETERS ARE NOT TUNED YET\n",
"# TODO: impelment no think in template\n",
"do_training_run(TrainingRunArguments(\n",
" run_name=get_next_run_name(\"Home-Qwen-3-1.7B\"),\n",
" base_model=\"Qwen/Qwen3-1.7B\",\n",
" bf16=True,\n",
" train_dataset=\"data/home_assistant_train.jsonl\",\n",
" test_dataset=\"data/home_assistant_test.jsonl\",\n",
" learning_rate=2e-5, learning_rate_warmup=0.03, \n",
" batch_size=64, micro_batch_size=2, epochs=1,\n",
" ctx_size=2048,\n",
" save_steps=200, save_total_limit=1, eval_steps=200, logging_steps=2,\n",
"))"
]
},
{
"cell_type": "markdown",
"id": "f2f49f10",
"metadata": {},
"source": [
"# Qwen 2.5 0.6B & 1.5B"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "ca9e2dec",
"metadata": {},
"outputs": [],
"source": [
"# HYPERPARAMETERS ARE NOT TUNED YET\n",
"do_training_run(TrainingRunArguments(\n",
" run_name=get_next_run_name(\"Home-Qwen-2.5-0.6B\"),\n",
" base_model=\"Qwen/Qwen2.5-0.6B-Instruct\",\n",
" bf16=True,\n",
" train_dataset=\"data/home_assistant_train.jsonl\",\n",
" test_dataset=\"data/home_assistant_test.jsonl\",\n",
" learning_rate=2e-5, learning_rate_warmup=0.03, \n",
" batch_size=64, micro_batch_size=2, epochs=1,\n",
" ctx_size=2048,\n",
" save_steps=200, save_total_limit=1, eval_steps=200, logging_steps=2,\n",
"))"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "6d875365",
"metadata": {},
"outputs": [],
"source": [
"# HYPERPARAMETERS ARE NOT TUNED YET\n",
"do_training_run(TrainingRunArguments(\n",
" run_name=get_next_run_name(\"Home-Qwen-2.5-1.5B\"),\n",
" base_model=\"Qwen/Qwen2.5-1.5B-Instruct\",\n",
" bf16=True,\n",
" train_dataset=\"data/home_assistant_train.jsonl\",\n",
" test_dataset=\"data/home_assistant_test.jsonl\",\n",
" learning_rate=2e-5, learning_rate_warmup=0.03, \n",
" batch_size=64, micro_batch_size=2, epochs=1,\n",
" ctx_size=2048,\n",
" save_steps=200, save_total_limit=1, eval_steps=200, logging_steps=2,\n",
"))"
]
},
{
"cell_type": "markdown",
"id": "21865d91",
"metadata": {},
"source": [
"# Gemma 3 1B"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "27db01c0",
"metadata": {},
"outputs": [],
"source": [
"# HYPERPARAMETERS ARE NOT TUNED YET\n",
"do_training_run(TrainingRunArguments(\n",
" run_name=get_next_run_name(\"Home-Gemma-3-1B\"),\n",
" base_model=\"google/gemma-3-1b-it\",\n",
" bf16=True,\n",
" train_dataset=\"data/home_assistant_train.jsonl\",\n",
" test_dataset=\"data/home_assistant_test.jsonl\",\n",
" learning_rate=2e-5, learning_rate_warmup=0.03, \n",
" batch_size=64, micro_batch_size=2, epochs=1,\n",
" ctx_size=2048,\n",
" save_steps=200, save_total_limit=1, eval_steps=200, logging_steps=2,\n",
"))"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.12"
}
},
"nbformat": 4,
"nbformat_minor": 5
}

683
train.py
View File

@@ -1,683 +0,0 @@
#!/usr/bin/env python3
import math
import copy
import torch
import os
import random
import time
import traceback
from torch.utils.data import SequentialSampler, Subset, RandomSampler
from transformers import AutoModelForCausalLM, AutoTokenizer, TrainingArguments, Trainer, \
HfArgumentParser, GPTQConfig, AutoConfig, TrainerCallback, BitsAndBytesConfig
from transformers.integrations.integration_utils import TensorBoardCallback
from datasets import load_dataset
from dataclasses import dataclass, field
from typing import Dict, Optional, Sequence
IS_DDP_ENABLED = "LOCAL_RANK" in os.environ
MULTI_GPU_WORLD_SIZE = int(os.environ.get("WORLD_SIZE", "1"))
MULTI_GPU_RANK = int(os.environ.get("RANK", "0"))
IS_MULTI_GPU = os.environ.get("RANK") != None
IS_MASTER_PROCESS = MULTI_GPU_RANK == 0
@dataclass
class TrainingRunArguments:
run_name: str = field(metadata={"help": "The folder to save the output model under"})
base_model: str = field(metadata={"help": "The base model to load for fine-tuning"})
train_dataset: str = field(metadata={"help": "The JSON file containing the training dataset"})
test_dataset: str = field(default=None, metadata={"help": "The JSON file containing the evaluation dataset"})
dataset_processing_threads: int = field(default=None, metadata={"help": "The number of threads to use to tokenize the dataset"})
ctx_size: int = field(default=2048, metadata={"help": "The number of tokens to pad & truncate the input examples to"})
bf16: bool = field(default=False, metadata={"help": "If set, the model will the loaded and trained in bf16 instead of fp32"})
batch_size: int = field(default=8, metadata={"help": "The simulated 'batch size' that we will train on. will tweak gradient accumulations steps"})
micro_batch_size: int = field(default=2, metadata={"help": "The actual batch size that will fit into VRAM on this machine"})
epochs: int = field(default=1, metadata={"help": "The number of times to train the model on each example"})
learning_rate: float = field(default=1e-5, metadata={"help": "The starting learning rate (speed at which the model trains)"})
learning_rate_schedule: str = field(default="cosine", metadata={"help": "How fast the learning rate is reduced during training"})
learning_rate_warmup: float = field(default=0.0, metadata={"help": "The starting learning rate (speed at which the model trains)"})
weight_decay: float = field(default=0.1, metadata={"help": "Weight Decay rate for regularization. Rate to reduce all neuron weights towards zero."})
# dropout: float = field(default=0.01, metadata={"help": "Dropout percent for regularization. Determines the fraction of neurons randomly deactivated during training."})
gradient_clip: float = field(default=1.0, metadata={"help": "Maximum gradient norm for clipping to prevent exploding gradients during training."})
resume_from_checkpoint: str = field(default="", metadata={"help": "The name of the checkpoint to resume training from"})
eval_steps: int = field(default=200, metadata={"help": "The number of steps in between evaluations of the model; set to -1 to evaluate every epoch"})
save_steps: int = field(default=-1, metadata={"help": "The number of steps in between model checkpoints; set to -1 to save every epoch"})
save_total_limit: int = field(default=1, metadata={"help": "The number of recent checkpoints of the model to save (not including the final model)"})
logging_steps: int = field(default=5, metadata={"help": "Sets the number of steps in between log output for the training run"})
group_by_length: bool = field(default=False, metadata={"help": "If enabled, the training data will be grouped by length to optimize use of padding. Runs from longest to shortest examples."})
gradient_checkpointing: bool = field(default=False, metadata={"help": "Enables gradient checkpointing to saves VRAM at the cost of re-computing activations during the backwards pass"})
pre_allocate_cuda_buffers: bool = field(default=True, metadata={"help": "If enabled, runs a forward and backward pass on the model before training to force pytorch to allocate the correct size CUDA buffers up front"})
# Quantization
load_in_8bit: bool = field(default=False, metadata={"help": "Set to load the base model in 8-bit mode using bitsandbytes"})
load_in_4bit: bool = field(default=False, metadata={"help": "Set to load the base model in 4-bit mode using bitsandbytes"})
load_as_gptq: bool = field(default=False, metadata={"help": "Set to load the base model as a GPTQ using AutoGPTQ"})
# lora config
use_lora: bool = field(default=False, metadata={"help": "If set, then the trained model will be a LoRA"})
lora_rank: int = field(default=4, metadata={"help": "Rank which determines LoRA matrix size. Rank typically starts at 8 but can go up to 256. Higher ranks can store more information but increase the computational and memory cost of LoRA."})
lora_alpha: int = field(default=32, metadata={"help": "Alpha a scaling factor for updates. Alpha directly impacts the adapters contribution and is often set to 1x or 2x the rank value."})
lora_dropout: float = field(default=0.05)
lora_modules: str = field(default=None, metadata={"help": "Target modules: LoRA can be applied to various model components, including attention mechanisms (Q, K, V matrices), output projections, feed-forward blocks, and linear output layers. While initially focused on attention mechanisms, extending LoRA to other components has shown benefits. However, adapting more modules increases the number of trainable parameters and memory needs."})
lora_modules_to_save: str = field(default=None, metadata={"help": "Additional modules to save"})
lora_merge: bool = field(default=False, metadata={"help": "If set, the Lora will be merged back into the base model an saved"})
# dpo config
dpo: bool = field(default=False, metadata={"help": "If set, performs Direct Preference Optimization instead of Supervised Fine Tuning"})
beta: float = field(default=0.1, metadata={"help": "The implicit reward value used during DPO training"})
dpo_loss: str = field(default="sigmoid", metadata={"help": "The loss type to use during DPO training"})
# token options
add_pad_token: bool = field(default=False, metadata={"help": "If set, a pad token will be added to the tokenizer's vocabulary"})
add_chatml_tokens: bool = field(default=False, metadata={"help": "If set, tokens for the ChatML format will be added specifically"})
add_chatml_prompt_template: bool = field(default=False, metadata={"help": "If set, the ChatML prompt template will be set as the model's Jinja2 template"})
prefix_ids: str = field(default=None, metadata={"help": "Determine the prefix tokens that surround the response from the assistant for SFT if model can not correctly recognize response."})
suffix_ids: str = field(default=None, metadata={"help": "Determine the suffix tokens that surround the response from the assistant for SFT if model can not correctly recognize response."})
# custom trainer tweaks
sync_to_bucket: str = field(default=None, metadata={"help": "If set, checkpoints will be synced to the s3 bucket specified by this argument"})
bucket_save_limit: int = field(default=None, metadata={"help": "The number of recent checkpoints of the model to save in S3 (not including the final model)"})
flops_baseline: str = field(default=None, metadata={"help": "The baseline flops for the GPUs used for the training run. Outputs MFU"})
class UploadToS3Callback(TrainerCallback):
def __init__(self, s3_bucket, s3_prefix, save_total_limit=None):
import boto3
self.s3_client = boto3.client('s3')
self.s3_bucket = s3_bucket
self.s3_prefix = s3_prefix
self.save_total_limit = save_total_limit
def on_save(self, args, state, control, **kwargs):
# Upload current checkpoint
checkpoint = f"checkpoint-{state.global_step}"
output_dir = f"{args.output_dir}/{checkpoint}"
for root, dirs, files in os.walk(output_dir):
for file in files:
local_path = os.path.join(root, file)
s3_path = os.path.join(self.s3_prefix, checkpoint, os.path.relpath(local_path, start=output_dir))
self.s3_client.upload_file(local_path, self.s3_bucket, s3_path)
print(f"Uploaded {local_path} to s3://{self.s3_bucket}/{s3_path}")
# Delete prior checkpoints from S3
if self.save_total_limit:
s3_checkpoints = self.list_s3_checkpoints()
if len(s3_checkpoints) > self.save_total_limit:
sorted_checkpoints = sorted(s3_checkpoints)
to_delete = sorted_checkpoints[:-self.save_total_limit]
for checkpoint in to_delete:
self.delete_checkpoint_from_s3(checkpoint)
def list_s3_checkpoints(self):
paginator = self.s3_client.get_paginator('list_objects_v2')
page_iterator = paginator.paginate(Bucket=self.s3_bucket, Prefix=self.s3_prefix + '/', Delimiter='/')
return [prefix.get('Prefix').rstrip('/').split('/')[-1] for page in page_iterator for prefix in page.get('CommonPrefixes', [])]
def delete_checkpoint_from_s3(self, checkpoint_name):
resp = self.s3_client.list_objects_v2(Bucket=self.s3_bucket, Prefix=os.path.join(self.s3_prefix, checkpoint_name))
for obj in resp.get('Contents', []):
self.s3_client.delete_object(Bucket=self.s3_bucket, Key=obj['Key'])
print(f"Deleted s3://{self.s3_bucket}/{obj['Key']}")
class MFUCallback(TrainerCallback):
def __init__(self, peak_flops):
self.total_iterations = 0
self.start_time = time.time()
self.flops_promised = peak_flops
self.last_total_flos = 0
def on_log(self, args, state, control, **kwargs):
if state.global_step == 0: # Avoid computation at the very beginning
return
current_time = time.time()
elapsed_time = current_time - self.start_time
# Calculate and log MFU
new_flops = state.total_flos - self.last_total_flos
kwargs['logs']['mfu'] = round(new_flops / elapsed_time / self.flops_promised, 4)
self.start_time = current_time
self.last_total_flos = state.total_flos
def ddp_print(*args, **kwargs):
if not IS_DDP_ENABLED or IS_MASTER_PROCESS:
print(*args, **kwargs)
def find_max_vram(min_buffer_mib=800):
max_memory = {}
for i in range(torch.cuda.device_count()):
gpu_properties = torch.cuda.get_device_properties(i)
total_memory_mib = (gpu_properties.total_memory / (1000 * 1000))
suggestion = max(total_memory_mib - 1000, min_buffer_mib)
ddp_print(f"GPU {i}: {gpu_properties.name}, Total Memory: {gpu_properties.total_memory / (1024**3):.2f} GB")
ddp_print(f"Model will target using {suggestion}MiB of VRAM on GPU {i}")
max_memory[i] = f'{suggestion}MiB'
return max_memory
class DataCollatorForSupervisedFineTuning(object):
"""Collate examples for supervised fine-tuning."""
tokenizer: AutoTokenizer
prompt_split: str
response_prefix: str
response_suffix: str
prefix_ids: list[int]
suffix_ids: list[int]
def __init__(self, *, tokenizer: AutoTokenizer, prefix_ids: Optional[list[int]] = None, suffix_ids: Optional[list[int]] = None):
self.tokenizer = tokenizer
if not prefix_ids and not suffix_ids:
assistant_prompt = tokenizer.apply_chat_template(
conversation=[{"role": "assistant", "content": r"%%%%%%%%%%%%%%%%"}],
tokenize=False).split( r"%%%%%%%%%%%%%%%%")
self.response_prefix = assistant_prompt[0]
self.response_suffix = assistant_prompt[1]
# check for inserted system prompt and remove it
if tokenizer.eos_token in self.response_prefix:
self.response_prefix = self.response_prefix.split(tokenizer.eos_token)[1].lstrip()
# some chat templates ALWAYS add the bos token
if tokenizer.bos_token in self.response_prefix:
self.response_prefix = self.response_prefix.replace(tokenizer.bos_token, "")
if prefix_ids:
self.prefix_ids = prefix_ids
else:
self.prefix_ids = self.tokenizer(self.response_prefix, add_special_tokens=False)["input_ids"]
if suffix_ids:
self.suffix_ids = suffix_ids
else:
self.suffix_ids = self.tokenizer(self.response_suffix, add_special_tokens=False)["input_ids"]
def _find_mask_ranges(self, input_ids):
"""
Returns a mask that blocks out everything but the response from the assistant
The mask does NOT include the response_prefix but DOES include the response_suffix.
The resulting behavior is the model uses the prefix as a prompt and the suffix as the end of text token
"""
ranges = []
i = 0
while i < len(input_ids):
try:
# Find the start index of the prefix
start_idx = input_ids.index(self.prefix_ids[0], i)
except ValueError:
break
# Check if the entire prefix is present
if input_ids[start_idx:start_idx + len(self.prefix_ids)] == self.prefix_ids:
end_prefix_idx = start_idx + len(self.prefix_ids)
start_response_idx = end_prefix_idx + 1
# Find the start index of the suffix
try:
# Find the start index of the suffix
suffix_start_idx = input_ids.index(self.suffix_ids[0], end_prefix_idx)
except ValueError:
ranges.append((start_response_idx, len(input_ids)))
break
# Check if the entire suffix is present
if input_ids[suffix_start_idx:suffix_start_idx + len(self.suffix_ids)] == self.suffix_ids:
ranges.append((start_response_idx, suffix_start_idx))
i = suffix_start_idx + len(self.suffix_ids)
else:
i = suffix_start_idx + 1
else:
i = start_idx + 1
inverse_ranges = []
current = 0
for start, end in sorted(ranges):
if start > current:
inverse_ranges.append((current, start - 1))
current = max(current, end + 1)
if current < len(input_ids):
inverse_ranges.append((current, len(input_ids) - 1))
return inverse_ranges
def _pad(self, examples, pad_value):
longest = max([len(ex) for ex in examples])
result = []
for example in examples:
cur_len = len(example)
result.append(example + [pad_value] * (longest - cur_len))
return result
def __call__(self, instances: Sequence[Dict]) -> Dict[str, torch.Tensor]:
input_ids = [instance["input_ids"] for instance in instances]
labels = copy.deepcopy(input_ids)
for label in labels:
mask_ranges = self._find_mask_ranges(label)
for start, end in mask_ranges:
if end - start == len(label) - 1:
print("warning! example had no assistant response in it!")
print(input_ids)
label[start:end] = [-100] * (end - start)
input_ids = torch.LongTensor(self._pad(input_ids, self.tokenizer.pad_token_id or self.tokenizer.eos_token_id))
labels = torch.LongTensor(self._pad(labels, -100))
return dict(
input_ids=input_ids,
labels=labels,
attention_mask=input_ids.ne(self.tokenizer.pad_token_id or self.tokenizer.eos_token_id),
)
def tokenize_raw_example(batch, tokenizer=None, training_run_args=None):
return tokenizer(
text=batch["text"],
max_length=training_run_args.ctx_size,
truncation=True,
add_special_tokens=False,
)
def tokenize_sharegpt_example(batch, tokenizer=None, training_run_args=None):
# TODO: figure out how to properly batch this
result = []
for example in batch["conversations"]:
conversation = [ { "role": x["from"], "content": x["value"] } for x in example ]
result.append(
tokenizer.apply_chat_template(
conversation=conversation,
max_length=training_run_args.ctx_size,
truncation=True,
)
)
return {"input_ids": result}
def template_dpo_example(batch, tokenizer=None, training_run_args=None):
# TODO: figure out how to properly batch this
result = []
for example in zip(batch["system"], batch["question"]):
conversation = [
{ "role": "system", "content": example[0] },
{ "role": "user", "content": example[1] },
]
result.append(
tokenizer.apply_chat_template(
conversation=conversation,
max_length=training_run_args.ctx_size,
truncation=True,
tokenize=False,
add_generation_prompt=True
)
)
return {"prompt": result}
class CustomSFTTrainer(Trainer):
"""Implement different training tweaks"""
def __init__(self, random_eval_sample_pct=0.1, learning_rate_overshoot=1.15, *args, **kwargs):
super().__init__(*args, **kwargs)
self.random_eval_sample_pct = random_eval_sample_pct
self.evaluate_full_dataset = False
self.learning_rate_overshoot = learning_rate_overshoot
def evaluate_all(self):
self.evaluate_full_dataset = True
super().evaluate()
self.evaluate_full_dataset = False
# Randomly sample the eval dataset
def _get_eval_sampler(self, eval_dataset):
if self.evaluate_full_dataset:
return SequentialSampler(eval_dataset)
else:
num_samples = int(self.random_eval_sample_pct * len(eval_dataset))
random_indices = random.sample(range(len(eval_dataset)), num_samples)
subset_eval_dataset = Subset(eval_dataset, random_indices)
return SequentialSampler(subset_eval_dataset)
def _get_train_sampler(self):
if self.args.group_by_length:
return super()._get_train_sampler()
return RandomSampler(self.train_dataset, generator=torch.Generator(device='cpu'))
def create_scheduler(self, num_training_steps: int, optimizer: torch.optim.Optimizer = None):
"""
Saw this in the chinchilla paper. It says not to go over 25% overshoot
Should improve training efficiency by skipping the final fine tuning part that doesn't affect accuracy much
"""
return super().create_scheduler(int(num_training_steps * self.learning_rate_overshoot), optimizer=optimizer)
def floating_point_ops(self, inputs):
config = self.model.config
examples_length = len(inputs["input_ids"][0])
batch_size = len(inputs["input_ids"])
# mfu is approximated using throughput and param count
# the number of parameters is approximately the number of multiply-accumulates (MAC) in the network
# each MAC has 2 FLOPs - we multiply by 2 ie 2 * n_param
# there are 3 passes of a NN (fwd, bwd, delta) - we multiply by 3 ie 2 * 3 * n_param
# this gets us FLOPs / token
flops_per_token = 2 * sum(p.numel() for p in self.model.parameters())
flops_per_seq = flops_per_token * examples_length
# there are 2 FLOPS per mac; there is A=Q*K^T and out=A*V ops (ie mult by 2)
attn_flops_per_seq = config.num_hidden_layers * 2 * 2 * (config.hidden_size * (examples_length**2))
# there are 2 ops in bwd pass and 1 in fwd pass so we mult by 3
result = (3 * flops_per_seq + 3 * attn_flops_per_seq) * batch_size
return result
def do_training_run(training_run_args: TrainingRunArguments):
# validate args + build model kwargs
if sum([training_run_args.load_in_8bit, training_run_args.load_in_4bit, training_run_args.load_as_gptq]) > 1:
raise Exception("Please select exactly one of 'load_in_8bit', 'load_in_4bit', or 'load_as_gptq")
model_kwargs = {}
if training_run_args.load_in_8bit:
model_kwargs["quantization_config"] = BitsAndBytesConfig(load_in_8bit=True)
elif training_run_args.load_in_4bit:
model_kwargs["quantization_config"] = BitsAndBytesConfig(load_in_4bit=True, bnb_4bit_compute_dtype=torch.bfloat16)
elif training_run_args.load_as_gptq:
model_kwargs["quantization_config"] = GPTQConfig(bits=4, disable_exllama=True)
if training_run_args.bf16:
model_kwargs["torch_dtype"] = torch.bfloat16
elif training_run_args.use_lora and "quantization_config" not in model_kwargs:
model_kwargs["torch_dtype"] = torch.float16
else:
# auto detect 'best' format with fallback to fp32
model_kwargs["torch_dtype"] = "auto"
# model_kwargs["resid_pdrop"] = training_run_args.dropout
model_kwargs["use_cache"] = False
if not IS_DDP_ENABLED:
model_kwargs["device_map"] = "auto"
# load the model
ddp_print(f"Loading model '{training_run_args.base_model}'...")
model = AutoModelForCausalLM.from_pretrained(
training_run_args.base_model,
max_memory=find_max_vram(),
token=os.environ.get("HF_TOKEN"),
**model_kwargs
)
tokenizer = AutoTokenizer.from_pretrained(training_run_args.base_model, token=os.environ.get("HF_TOKEN"))
# mess with tokens + prompt template
if training_run_args.add_pad_token:
tokenizer.add_special_tokens({'pad_token': '<|pad|>'})
model.config.pad_token_id = tokenizer.pad_token_id
if training_run_args.add_chatml_tokens:
tokenizer.add_special_tokens({
'bos_token': '<|im_start|>',
'eos_token': '<|im_end|>'
})
model.config.bos_token_id = tokenizer.bos_token_id
model.config.eos_token_id = tokenizer.eos_token_id
if training_run_args.add_chatml_prompt_template:
tokenizer.chat_template = (
"{% for message in messages %}"
"{{'<|im_start|>' + message['role'] + '\n' + message['content'] + '<|im_end|>' + '\n'}}"
"{% endfor %}"
"{% if add_generation_prompt %}"
"{{ '<|im_start|>assistant\n' }}"
"{% endif %}"
)
# resize embeddings if added tokens require it
embeddings_len = math.ceil(len(tokenizer) / 32) * 32
if model.get_input_embeddings().num_embeddings < embeddings_len:
model.resize_token_embeddings(embeddings_len)
else:
model.tie_weights()
# create LoRA model if config says so
original_model = model
peft_config = None
if training_run_args.use_lora:
from peft import LoraConfig, TaskType, get_peft_model, prepare_model_for_kbit_training
ddp_print("Creating LoRA for model...")
target_modules = training_run_args.lora_modules.split(",") if training_run_args.lora_modules else None
modules_to_save = training_run_args.lora_modules_to_save.split(",") if training_run_args.lora_modules_to_save else None
peft_config = LoraConfig(
task_type=TaskType.CAUSAL_LM,
inference_mode=False,
r=training_run_args.lora_rank,
lora_alpha=training_run_args.lora_alpha,
lora_dropout=training_run_args.lora_dropout,
target_modules=target_modules,
modules_to_save=modules_to_save,
)
if training_run_args.load_in_8bit or training_run_args.load_in_4bit or training_run_args.load_as_gptq:
model = prepare_model_for_kbit_training(
model, use_gradient_checkpointing=training_run_args.gradient_checkpointing
)
model = get_peft_model(model, peft_config)
model.enable_input_require_grads()
model.print_trainable_parameters()
base_dir = "loras" if training_run_args.use_lora else "models"
model_dir = f"./{base_dir}/{training_run_args.run_name}"
# set up HuggingFace Trainer args
training_kwargs = {}
if training_run_args.test_dataset:
training_kwargs.update({
"per_device_eval_batch_size": training_run_args.micro_batch_size,
"eval_strategy": ("steps" if training_run_args.eval_steps != -1 else "epoch"),
"eval_steps": (training_run_args.eval_steps if training_run_args.eval_steps != -1 else None),
"bf16_full_eval": training_run_args.bf16,
})
training_args = TrainingArguments(
per_device_train_batch_size=training_run_args.micro_batch_size,
gradient_accumulation_steps=training_run_args.batch_size//training_run_args.micro_batch_size,
gradient_checkpointing=training_run_args.gradient_checkpointing,
weight_decay=training_run_args.weight_decay,
max_grad_norm=training_run_args.gradient_clip,
save_strategy=("steps" if training_run_args.save_steps != -1 else "epoch"),
save_steps=(training_run_args.save_steps if training_run_args.save_steps != -1 else None),
save_safetensors=True,
logging_steps=training_run_args.logging_steps,
output_dir=model_dir,
num_train_epochs=training_run_args.epochs,
save_total_limit=training_run_args.save_total_limit,
report_to='none',
learning_rate=training_run_args.learning_rate,
lr_scheduler_type=training_run_args.learning_rate_schedule,
warmup_ratio=training_run_args.learning_rate_warmup,
log_level="info",
bf16=training_run_args.bf16,
group_by_length=training_run_args.group_by_length,
# include_num_input_tokens_seen=True,
**training_kwargs,
)
# set up trainer callbacks
training_callbacks = []
if training_run_args.sync_to_bucket:
training_callbacks.append(UploadToS3Callback(
s3_bucket=training_run_args.sync_to_bucket,
s3_prefix=training_run_args.run_name,
save_total_limit=training_run_args.bucket_save_limit if training_run_args.bucket_save_limit else training_run_args.save_total_limit
))
if training_run_args.flops_baseline:
# A100 40/80GB GPU bfloat16 peak flops is 312 TFLOPS (312e12)
# 4090 24GB GPU bfloat16 peak flops is 165.2 TFLOPS (1652e11)
# A40 48GB GPU bfloat16 peak flops is 149.7 TFLOPS (149.7e11)
# 3090 24GB GPU bfloat16 peak flops is 71 TFLOPS (71e12)
training_callbacks.append(MFUCallback(peak_flops=float(training_run_args.flops_baseline)))
# log to tensorboard (but after MFU)
training_callbacks.append(TensorBoardCallback())
if not training_run_args.dpo:
ddp_print("Loading dataset...")
data_files = { "train": training_run_args.train_dataset }
if training_run_args.test_dataset:
data_files["test"] = training_run_args.test_dataset
datasets = load_dataset("json", data_files=data_files)
# prepare the dataset
ddp_print("Tokenizing datasets...")
if "text" in datasets["train"].column_names:
tokenize_function = tokenize_raw_example
columns_to_remove = ["text"]
elif "conversations" in datasets["train"].column_names:
tokenize_function = tokenize_sharegpt_example
columns_to_remove = ["conversations"]
else:
raise Exception("Unknown dataset input format (not raw corpus or sharegpt)")
tokenized_test_dataset = None
num_proc = None
if training_run_args.dataset_processing_threads:
num_proc = training_run_args.dataset_processing_threads // MULTI_GPU_WORLD_SIZE
tokenized_train_dataset = datasets["train"].map(tokenize_function, batched=True, num_proc=num_proc, fn_kwargs={"tokenizer": tokenizer, "training_run_args": training_run_args}).remove_columns(columns_to_remove)
if training_run_args.test_dataset:
tokenized_test_dataset = datasets["test"].map(tokenize_function, batched=True, num_proc=num_proc, fn_kwargs={"tokenizer": tokenizer, "training_run_args": training_run_args}).remove_columns(columns_to_remove)
example_lengths = [ len(example) for example in tokenized_train_dataset["input_ids"] ]
tokens_in_train_set, longest_example = sum(example_lengths), max(example_lengths)
ddp_print(f"Train dataset has {int(tokens_in_train_set / 1000000)}M tokens. Longest Example: {longest_example} tokens")
provided_prefix_ids = None
provided_suffix_ids = None
try:
if training_run_args.prefix_ids:
provided_prefix_ids = [ int(x) for x in training_run_args.prefix_ids.split(",") ]
if training_run_args.suffix_ids:
provided_suffix_ids = [ int(x) for x in training_run_args.suffix_ids.split(",") ]
except ValueError as ex:
print(f"Error parsing prefix_ids or suffix_ids: '{ex}'")
exit(-1)
trainer = CustomSFTTrainer(
model=model,
args=training_args,
train_dataset=tokenized_train_dataset,
eval_dataset=tokenized_test_dataset,
data_collator=DataCollatorForSupervisedFineTuning(
tokenizer=tokenizer,
prefix_ids=provided_prefix_ids,
suffix_ids=provided_suffix_ids,
),
callbacks=training_callbacks,
)
else:
raise NotImplementedError("DPO Trainer doesn't work yet!")
# from trl import DPOTrainer
# max_prompt_length = 0
# train_dataset = datasets["train"].map(lambda x: { "prompt_len": len(x["system"]) })
# test_dataset = None
# if training_run_args.test_dataset:
# test_dataset = datasets["test"]
# max_prompt_length = max(train_dataset["prompt_len"])
# print("Templating DPO Examples...")
# templated_test_dataset = None
# templated_train_dataset = train_dataset.map(template_dpo_example, batched=True).remove_columns(["system", "question"])
# if training_run_args.test_dataset:
# templated_test_dataset = datasets["test"].map(template_dpo_example, batched=True).remove_columns(["system", "question"])
# # tokenizer.model_input_names = [ "chosen_input_ids" ]
# # group_by_length doesn't work here
# # templated_train_dataset = templated_train_dataset.sort("prompt_len", reverse=True)
# training_args.length_column_name = "prompt_len"
# model.enable_input_require_grads()
# trainer = DPOTrainer(
# model,
# ref_model=None,
# # ref_model=original_model,
# peft_config=peft_config,
# args=training_args,
# beta=training_run_args.beta,
# loss_type=training_run_args.dpo_loss,
# train_dataset=templated_train_dataset,
# eval_dataset=templated_test_dataset,
# tokenizer=tokenizer,
# max_length=training_run_args.ctx_size,
# max_prompt_length=max_prompt_length,
# truncation_mode="keep_start",
# callbacks=training_callbacks,
# )
try:
trainer.train(resume_from_checkpoint=training_run_args.resume_from_checkpoint if training_run_args.resume_from_checkpoint else None)
if training_run_args.test_dataset:
trainer.evaluate_all()
if trainer.is_fsdp_enabled:
trainer.accelerator.state.fsdp_plugin.set_state_dict_type("FULL_STATE_DICT")
if training_run_args.use_lora and training_run_args.lora_merge:
trainer.save_model() # save lora
merged_model = model.merge_and_unload(progressbar=True)
merged_model_dir = f"./models/{training_run_args.run_name}"
merged_model.save_pretrained(merged_model_dir, safe_serialization=True, max_shard_size="2GB")
tokenizer.save_pretrained(merged_model_dir)
else:
trainer.save_model()
tokenizer.save_pretrained(model_dir)
if training_run_args.sync_to_bucket:
import boto3
s3_client = boto3.client('s3')
for root, dirs, files in os.walk(model_dir):
for file in files:
local_path = os.path.join(root, file)
s3_path = os.path.join(training_run_args.run_name, os.path.relpath(local_path, start="."))
s3_client.upload_file(local_path, training_run_args.sync_to_bucket, s3_path)
print(f"Uploaded {local_path} to s3://{training_run_args.sync_to_bucket}/{s3_path}")
except Exception as ex:
if trainer.is_fsdp_enabled:
raise ex # this doesn't play nice with FSDP so don't even try
traceback.print_exc()
if input("Something bad happened! Try and save it? (Y/n) ").lower().startswith("y"):
trainer._save_checkpoint(model, None)
print("Saved Checkpoint!")
if __name__ == "__main__":
parser = HfArgumentParser([TrainingRunArguments])
training_run_args, _ = parser.parse_args_into_dataclasses(return_remaining_strings=True)
do_training_run(training_run_args)

190
train/README.md Normal file
View File

@@ -0,0 +1,190 @@
# Training (Docker + Axolotl)
This repo recommends training with **Axolotl** inside a Docker container. The `train/` folder includes:
- Example Axolotl configs in `train/configs/`.
- Chat templates in `train/chat_templates/`.
- A Kubernetes job spec in `train/training-job.yml` that references the Axolotl image.
The instructions below are written to match the paths used by the configs in this repo.
## Hardware recommendations
- **Recommended minimum VRAM:** **24GB total** across all GPUs.
- Multi-GPU is fine: e.g. **2×12GB**, **1×24GB**, **2×16GB**, etc.
- More VRAM lets you increase `sequence_len`, batch size, and/or train larger base models.
## Fine-tuning approaches (full vs LoRA vs QLoRA)
All three approaches start from a **base model** (e.g. `google/gemma-3-270m-it`) and train on this repos synthetic dataset.
### Full fine-tuning
Full fine-tuning updates **all** model weights.
- **Pros:** highest quality ceiling.
- **Cons:** highest VRAM/compute; largest checkpoints.
- **When to use:** you have ample VRAM/compute and want maximum adaptation.
### LoRA (Low-Rank Adaptation)
LoRA keeps base weights frozen and trains small **adapter** matrices.
- **Pros:** much lower VRAM; fast iteration; adapters are small and easy to share.
- **Cons:** slightly lower ceiling than full fine-tuning.
- **When to use:** common default when youre VRAM-constrained.
### QLoRA
QLoRA is LoRA, but the frozen base model is loaded in **4-bit quantized** form.
- **Pros:** lowest VRAM footprint; enables training larger models on modest GPUs.
- **Cons:** can be slower (dequant overhead) and sometimes trickier to tune.
- **When to use:** you want LoRA but need the base model to fit in memory.
## Training Scripts
We now recommend that you use the [Axolotl](https://github.com/axolotl-ai-cloud/axolotl) training script suite to perform training runs.
The Docker images that are recommended are:
- `axolotlai/axolotl-cloud:main-py3.11-cu128-2.8.0` - CUDA 12.8 with PyTorch 2.8.0
- `axolotlai/axolotl-cloud:main-py3.11-cu126-2.8.0` - CUDA 12.6 with PyTorch 2.8.0
Both images provide the `axolotl` CLI used in the examples below. It is recommended to use the "cloud" versions since they have various custom folder mounts already set up that make data management easier.
## Dataset Generation
The synthetic dataset is generated by scripts under `data/`.
- **Generator:** `data/generate_data.py`
- **Outputs:** JSONL files in `data/output/` (for example `home_assistant_train.jsonl`, `home_assistant_test.jsonl`, and `sample.jsonl`).
The example training configs in `train/configs/` are written to read a dataset file mounted at `/workspace/data/datasets/sample.jsonl`. Depending on the variant of the dataset that you are using for training, you may need to edit the config to point to the correct dataset file.
For local Docker training youll typically:
1. Generate a dataset JSONL under `data/output/`.
2. Copy it into a host folder that you mount as `/workspace/data/datasets/`.
## Training Configs
This repo currently includes:
- `train/configs/gemma3-270m.yml`
- `train/configs/functiongemma-270m.yml`
Additional configs can be found in the [Axolotl repo](https://github.com/axolotl-ai-cloud/axolotl/tree/main/examples). They will need to be adapted to use this repos dataset paths and potentially have their chat template adjusted.
### Model selection
- `base_model`: Hugging Face model id.
- `model_type`: Transformers model class (example: `Gemma3ForCausalLM`).
### Chat formatting and tool calling
- `chat_template: jinja` and `chat_template_jinja: | ...`:
- Defines how multi-turn chats (and tools) are rendered into training text.
- For tool calling, this formatting matters a lot.
Related files:
- `train/chat_templates/` contains reusable templates you can adapt.
### Dataset configs
- `datasets:` list points at a JSONL file, example:
- `path: /workspace/data/datasets/sample.jsonl`
- `ds_type: json`
- `type: chat_template`
- `message_field_training: train_on_turn`
- `roles_to_train: []`
> NOTE: `roles_to_train` controls which message roles are used for loss calculation. Alternatively, you can simply enable training against all "assistant" role messages by setting `roles_to_train: [assistant]`.
### Sequence length + packing
- `sequence_len`: max context length.
- `sample_packing`:
- `true` packs multiple short samples into one sequence (better throughput).
- `false` keeps samples separate (often easier to debug).
### Batch sizing
Effective batch size is calculated as:
$$\text{effective\_batch} = \text{micro\_batch\_size} \times \text{gradient\_accumulation\_steps} \times \text{num\_gpus}$$
Having the correct effective batch size is important for training stability. Modify `micro_batch_size` until you can fit the model and optimizer states in VRAM, and then set `gradient_accumulation_steps` to keep the effective batch size in the correct range -- 16, 32, or 64 are values shown to work well for this dataset.
### Memory/perf helpers
- `bf16: true`: bfloat16 training on modern NVIDIA GPUs (30-series/Ada or newer)
- `gradient_checkpointing: true`: re-compute gradient activations during backward pass instead of storing in VRAM (lower VRAM, more compute.)
- `flash_attention: true`: faster attention when supported (almost always).
- `optimizer: adamw_bnb_8bit`: 8-bit optimizer states to save VRAM
### Outputs
- `output_dir: /workspace/data/training-runs/<run-name>` stores checkpoints and TensorBoard logs.
## Running training with Docker (local machine)
These commands assume:
- You are running on Linux with an NVIDIA GPU (or WSL2)
- You have Docker installed
- You have the NVIDIA Driver and the NVIDIA Container Toolkit set up and installed
### 1) Create host folders to mount
```bash
mkdir -p ./train-local/datasets
mkdir -p ./train-local/training-runs
mkdir -p ./train-local/huggingface-cache
```
### 2) Generate a dataset JSONL
```bash
python3 data/generate_data.py --sample --language english
cp data/output/sample.jsonl ./train-local/datasets/sample.jsonl
```
### 3) Run preprocess + train
```bash
docker pull axolotlai/axolotl-cloud:main-py3.11-cu128-2.8.0
```
```bash
docker run --rm -it \
--gpus all \
-e AXOLOTL_DO_NOT_TRACK=1 \
-e HF_HOME=/workspace/data/huggingface-cache \
-e HF_TOKEN="$HF_TOKEN" \
-v "$PWD/train-local/datasets:/workspace/data/datasets" \
-v "$PWD/train-local/training-runs:/workspace/data/training-runs" \
-v "$PWD/train-local/huggingface-cache:/workspace/data/huggingface-cache" \
-v "$PWD/train/configs:/workspace/configs" \
axolotlai/axolotl-cloud:main-py3.11-cu128-2.8.0 \
axolotl preprocess /workspace/configs/gemma3-270m.yml --debug
```
```bash
docker run --rm -it \
--gpus all \
-e AXOLOTL_DO_NOT_TRACK=1 \
-e HF_HOME=/workspace/data/huggingface-cache \
-e HF_TOKEN="$HF_TOKEN" \
-v "$PWD/train-local/datasets:/workspace/data/datasets" \
-v "$PWD/train-local/training-runs:/workspace/data/training-runs" \
-v "$PWD/train-local/huggingface-cache:/workspace/data/huggingface-cache" \
-v "$PWD/train/configs:/workspace/configs" \
axolotlai/axolotl-cloud:main-py3.11-cu128-2.8.0 \
axolotl train /workspace/configs/gemma3-270m.yml
```
Artifacts will appear under `./train-local/training-runs/`.
## Running on Kubernetes (e.g. cloud GPU host)
`train/training-job.yml` mounts:
- `/workspace/data/datasets` (dataset JSONL)
- `/workspace/data/training-runs` (outputs)
- `/workspace/configs` (Axolotl YAML)
- `/workspace/data/huggingface-cache` (HF cache)
It runs `axolotl preprocess ...` as an init container, then `axolotl train ...`.
The helper script `train/train.sh` copies `train/configs/<MODEL_NAME>.yml` to a remote server and starts the Kubernetes Job.

View File

@@ -0,0 +1,58 @@
{%- if tools %}
{{- '<|im_start|>system\n' }}
{%- if messages[0].role == 'system' %}
{{- messages[0].content + '\n\n' }}
{%- endif %}
{{- "Tools:\n" }}
{%- for tool in tools %} {{ tool['name'] }}({% for param in tool['parameters']['properties'].keys() if param != 'target_device' %}{{ param }}{% if not loop.last %},{% endif %}{% endfor -%}),{% if not loop.last -%}
{{- "\n</tools>\n\nFor each function call, return a json object with function name and arguments within <tool_call></tool_call> XML tags:\n<tool_call>\n{\"name\": <function-name>, \"arguments\": <args-json-object>}\n</tool_call><|im_end|>\n" }}
{%- else %}
{%- if messages[0].role == 'system' %}
{{- '<|im_start|>system\n' + messages[0].content + '\nNo tools were provided. If the user requests you interact with a device, tell them you are unable to do so.' + '<|im_end|>\n' }}
{%- endif %}
{%- endif %}
{%- for message in messages %}
{%- if message.content is string %}
{%- set content = message.content %}
{%- else %}
{%- set content = '' %}
{%- endif %}
{%- if (message.role == "user") or (message.role == "system" and not loop.first) %}
{{- '<|im_start|>' + message.role + '\n' + content + '<|im_end|>' + '\n' }}
{%- elif message.role == "assistant" %}
{{- '<|im_start|>' + message.role + '\n' + content }}
{%- if message.tool_calls %}
{%- for tool_call in message.tool_calls %}
{%- if (loop.first and content) or (not loop.first) %}
{{- '\n' }}
{%- endif %}
{%- if tool_call.function %}
{%- set tool_call = tool_call.function %}
{%- endif %}
{{- '<tool_call>\n{"name": "' }}
{{- tool_call.name }}
{{- '", "arguments": ' }}
{%- if tool_call.arguments is string %}
"{{- tool_call.arguments }}
{%- else %}
{{- tool_call.arguments | tojson }}
{%- endif %}
{{- '}\n</tool_call>' }}
{%- endfor %}
{%- endif %}
{{- '<|im_end|>\n' }}
{%- elif message.role == "tool" %}
{%- if loop.first or (messages[loop.index0 - 1].role != "tool") %}
{{- '<|im_start|>user' }}
{%- endif %}
{{- '\n<tool_response>\n' }}
{{- content }}
{{- '\n</tool_response>' }}
{%- if loop.last or (messages[loop.index0 + 1].role != "tool") %}
{{- '<|im_end|>\n' }}
{%- endif %}
{%- endif %}
{%- endfor %}
{%- if add_generation_prompt %}
{{- '<|im_start|>assistant\n' }}
{%- endif %}

View File

@@ -0,0 +1,290 @@
{%- macro format_parameters(properties, required) -%}
{%- set standard_keys = ['description', 'type', 'properties', 'required', 'nullable'] -%}
{%- set ns = namespace(found_first=false) -%}
{%- for key, value in properties | dictsort -%}
{%- if key not in standard_keys -%}
{%- if ns.found_first %},{% endif -%}
{%- set ns.found_first = true -%}
{{- key }}:{description:<escape>{{ value['description'] }}<escape>
{%- if value['type'] | upper == 'STRING' -%}
{%- if value['enum'] -%}
,enum:{{ format_argument(value['enum']) }}
{%- endif -%}
{%- elif value['type'] | upper == 'OBJECT' -%}
,properties:{
{%- if value['properties'] is defined and value['properties'] is mapping -%}
{{- format_parameters(value['properties'], value['required'] | default([])) -}}
{%- elif value is mapping -%}
{{- format_parameters(value, value['required'] | default([])) -}}
{%- endif -%}
}
{%- if value['required'] -%}
,required:[
{%- for item in value['required'] | default([]) -%}
<escape>{{- item -}}<escape>
{%- if not loop.last %},{% endif -%}
{%- endfor -%}
]
{%- endif -%}
{%- elif value['type'] | upper == 'ARRAY' -%}
{%- if value['items'] is mapping and value['items'] -%}
,items:{
{%- set ns_items = namespace(found_first=false) -%}
{%- for item_key, item_value in value['items'].items() -%}
{%- if item_value is not none -%}
{%- if ns_items.found_first %},{% endif -%}
{%- set ns_items.found_first = true -%}
{%- if item_key == 'properties' -%}
properties:{
{%- if item_value is mapping -%}
{{- format_parameters(item_value, value['items']['required'] | default([])) -}}
{%- endif -%}
}
{%- elif item_key == 'required' -%}
required:[
{%- for req_item in item_value -%}
<escape>{{- req_item -}}<escape>
{%- if not loop.last %},{% endif -%}
{%- endfor -%}
]
{%- elif item_key == 'type' -%}
{%- if item_value is string -%}
type:{{ format_argument(item_value | upper) }}
{%- else -%}
type:{{ format_argument(item_value | map('upper') | list) }}
{%- endif -%}
{%- else -%}
{{ item_key }}:{{ format_argument(item_value) }}
{%- endif -%}
{%- endif -%}
{%- endfor -%}
}
{%- endif -%}
{%- endif -%}
,type:<escape>{{ value['type'] | upper }}<escape>}
{%- endif -%}
{%- endfor -%}
{%- endmacro -%}
{% macro format_function_declaration(tool_data) -%}
declaration:{{- tool_data['function']['name'] -}}
{description:<escape>{{- tool_data['function']['description'] -}}<escape>
{%- set params = tool_data['function']['parameters'] -%}
{%- if params -%}
,parameters:{
{%- if params['properties'] -%}
properties:{ {{- format_parameters(params['properties'], params['required']) -}} },
{%- endif -%}
{%- if params['required'] -%}
required:[
{%- for item in params['required'] -%}
<escape>{{- item -}}<escape>
{{- ',' if not loop.last -}}
{%- endfor -%}
],
{%- endif -%}
{%- if params['type'] -%}
type:<escape>{{- params['type'] | upper -}}<escape>}
{%- endif -%}
{%- endif -%}
}
{%- endmacro -%}
{% macro format_argument(argument, escape_keys=True) -%}
{%- if argument is string -%}
{{- '<escape>' + argument + '<escape>' -}}
{%- elif argument is boolean -%}
{%- if argument -%}
{{- 'true' -}}
{%- else -%}
{{- 'false' -}}
{%- endif -%}
{%- elif argument is mapping -%}
{{- '{' -}}
{%- set ns = namespace(found_first=false) -%}
{%- for key, value in argument.items() -%}
{%- if ns.found_first %},{% endif -%}
{%- set ns.found_first = true -%}
{%- if escape_keys -%}
{{- '<escape>' + key + '<escape>' -}}
{%- else -%}
{{- key -}}
{%- endif -%}
:{{- format_argument(value, escape_keys=escape_keys) -}}
{%- endfor -%}
{{- '}' -}}
{%- elif argument is iterable -%}
{{- '[' -}}
{%- for item in argument -%}
{{- format_argument(item, escape_keys=escape_keys) -}}
{%- if not loop.last %},{% endif -%}
{%- endfor -%}
{{- ']' -}}
{%- else -%}
{{- argument -}}
{%- endif -%}
{%- endmacro -%}
{{ bos_token }}
{%- set ns = namespace(prev_message_type=None) -%}
{#- extract system prompt for merging with user role -#}
{%- set loop_messages = messages -%}
{%- set system_message_content = '' %}
{%- if messages[0]['role'] == 'system' or messages[0]['role'] == 'developer' -%}
{%- set system_message_content = messages[0]['content'] -%}
{%- set loop_messages = messages[1:] -%}
{%- endif -%}
{#- 'static' system prompt. -#}
{%- if tools -%}
{{- '<start_of_turn>developer\nYou are a model that can do function calling with the following functions' -}}
{%- for tool in tools %}
{{- '<start_function_declaration>' -}}
{{- format_function_declaration(tool) | trim }}
{{- '<end_function_declaration>' -}}
{%- endfor %}
{{- '<end_of_turn>\n' -}}
{%- else -%}
{{- '<start_of_turn>developer\nNo tools have been provided. Only respond with answers that do not require tool usage.<end_of_turn>\n' -}}
{%- endif -%}
{#- Loop through messages. -#}
{%- for message in loop_messages -%}
{%- if (message['role'] == 'assistant') -%}
{#- Rename "assistant" to "model". -#}
{%- set role = "model" -%}
{%- else -%}
{%- set role = message['role'] -%}
{%- endif -%}
{%- if role != 'tool' -%}
{%- if ns.prev_message_type != 'tool_response' -%}
{{- '<start_of_turn>' + role + '\n' }}
{%- endif -%}
{%- set ns.prev_message_type = None -%}
{%- if loop.first and system_message_content -%}
{%- if system_message_content is string -%}
{{ system_message_content | trim }}
{%- elif system_message_content is iterable -%}
{%- for item in system_message_content -%}
{%- if item['type'] == 'image' -%}
{{ raise_exception("Invalid content type 'image' in system message") }}
{%- elif item['type'] == 'text' -%}
{{ item['text'] | trim }}
{%- endif -%}
{%- endfor -%}
{%- else -%}
{{ raise_exception("Invalid content type in system message") }}
{%- endif -%}
{{- '\n' -}}
{%- endif -%}
{#- User/Assistant Messages -#}
{%- if 'content' in message and message['content'] is not none -%}
{%- if message['content'] is string -%}
{{ message['content'] | trim }}
{%- elif message['content'] is iterable -%}
{%- for item in message['content'] -%}
{%- if item['type'] == 'image' -%}
{{ '<start_of_image>' }}
{%- elif item['type'] == 'text' -%}
{{ item['text'] | trim }}
{%- endif -%}
{%- endfor -%}
{%- else -%}
{{ raise_exception("Invalid content type in user/assistant message") }}
{%- endif -%}
{%- set ns.prev_message_type = 'content' -%}
{%- endif -%}
{%- if 'tool_calls' in message and message['tool_calls'] and message['tool_calls'] is iterable -%}
{#- Tool Calls -#}
{%- for tool_call in message['tool_calls'] -%}
{% set function = tool_call['function'] %}
{{- '<start_function_call>call:' + function['name'] + '{' -}}
{%- if 'arguments' in function -%}
{%- if function['arguments'] is mapping -%}
{%- set ns = namespace(found_first=false) -%}
{%- for key, value in function['arguments'] | dictsort -%}
{%- if ns.found_first %},{% endif -%}
{%- set ns.found_first = true -%}
{{- key -}}:{{- format_argument(value, escape_keys=False) -}}
{%- endfor -%}
{%- elif function['arguments'] is string -%}
{# This handles string-JSON, just in case #}
{{ function['arguments'] }}
{%- endif %}
{%- endif -%}
{{- '}<end_function_call>' -}}
{%- endfor -%}
{%- if loop.last -%}
{{ '<start_function_response>' }}
{%- endif -%}
{%- set ns.prev_message_type = 'tool_call' -%}
{%- endif -%}
{%- else -%}
{#- Tool Responses -#}
{%- if 'content' in message and message['content'] -%}
{%- if message['content'] is mapping -%}
{%- if 'name' in message['content'] and 'response' in message['content'] -%}
{{ '<start_function_response>response:' + message['content']['name'] | trim + '{' }}
{%- set response_ns = namespace(found_first=false) -%}
{%- for key, value in message['content']['response'] | dictsort -%}
{%- if response_ns.found_first %},{% endif -%}
{%- set response_ns.found_first = true -%}
{{- key -}}:{{- format_argument(value, escape_keys=False) -}}
{%- endfor -%}
{{- '}<end_function_response>' -}}
{%- elif 'name' in message -%}
{{ '<start_function_response>response:' + message['name'] | trim + '{' }}
{%- set response_ns = namespace(found_first=false) -%}
{%- for key, value in message['content'].items() -%}
{%- if response_ns.found_first %},{% endif -%}
{%- set response_ns.found_first = true -%}
{{- key -}}:{{- format_argument(value, escape_keys=False) -}}
{%- endfor -%}
{{- '}<end_function_response>' -}}
{%- else -%}
{{ raise_exception("Invalid tool response mapping: must contain 'name' and 'response' keys, or 'name' must be in the message.") }}
{%- endif -%}
{%- elif message['content'] is string -%}
{%- if 'name' in message -%}
{{ '<start_function_response>response:' + message['name'] | trim + '{value:' + format_argument(message['content'], escape_keys=False) + '}<end_function_response>' }}
{%- else -%}
{{ raise_exception("Invalid tool response: 'name' must be provided.") }}
{%- endif -%}
{%- elif message['content'] is iterable -%}
{%- for item in message['content'] -%}
{%- if item is mapping -%}
{%- if 'name' in item and 'response' in item -%}
{{ '<start_function_response>response:' + item['name'] | trim + '{' }}
{%- set response_ns = namespace(found_first=false) -%}
{%- for key, value in item['response'].items() -%}
{%- if response_ns.found_first %},{% endif -%}
{%- set response_ns.found_first = true -%}
{{- key -}}:{{- format_argument(value, escape_keys=False) -}}
{%- endfor -%}
{{- '}<end_function_response>' -}}
{%- elif 'name' in message -%}
{{ '<start_function_response>response:' + message['name'] | trim + '{' }}
{%- set response_ns = namespace(found_first=false) -%}
{%- for key, value in item.items() -%}
{%- if response_ns.found_first %},{% endif -%}
{%- set response_ns.found_first = true -%}
{{- key -}}:{{- format_argument(value, escape_keys=False) -}}
{%- endfor -%}
{{- '}<end_function_response>' -}}
{%- else -%}
{{ raise_exception("Invalid tool response mapping: must contain 'name' and 'response' keys, or 'name' must be in the message.") }}
{%- endif -%}
{%- else -%}
{{ raise_exception("Invalid tool response message: multiple responses must all be mappings") }}
{%- endif -%}
{%- endfor -%}
{%- else -%}
{{ raise_exception("Invalid content type in tool message: must be mapping, iterable of mappings, or string.") }}
{%- endif -%}
{%- endif -%}
{%- set ns.prev_message_type = 'tool_response' -%}
{%- endif -%}
{%- if ns.prev_message_type not in ['tool_call', 'tool_response'] -%}
{{ '<end_of_turn>\n' }}
{%- endif -%}
{%- endfor -%}
{%- if add_generation_prompt -%}
{%- if ns.prev_message_type != 'tool_response' -%}
{{- '<start_of_turn>model\n' -}}
{%- endif -%}
{%- endif -%}

View File

@@ -0,0 +1,46 @@
{{ bos_token }}
{%- if not tools or tools | length == 0 %}No tools were provided. If the user requests you interact with a device, tell them you are unable to do so.{% else %}
Tools:
{% for tool in tools %}
- {{ tool['function']['name'] }}({{ tool['function']['parameters']['properties'].keys() | join(', ') }}): {{ tool['function']['description'] }}
{% endfor -%}
{%- endif -%}
{%- for message in messages -%}
{%- if (message['role'] == 'assistant') -%}
{%- set role = "model" -%}
{%- elif message['role'] == 'system' -%}
{%- set role = "user" -%}
{%- else -%}
{%- set role = message['role'] -%}
{%- endif -%}
{{ '<start_of_turn>' + role + '\n' }}
{%- if role == "tool" -%}
{{ '<tool_result>' }}
{%- endif -%}
{%- if message['content'] is string -%}
{{ message['content'] | trim }}
{%- elif message['content'] is iterable -%}
{%- for item in message['content'] -%}
{%- if item['type'] == 'image' -%}
{{ '<start_of_image>' }}
{%- elif item['type'] == 'text' -%}
{{ item['text'] | trim }}
{%- endif -%}
{%- if not loop.last -%}
{{ '</tool_result>\n<tool_result>' }}
{%- endif -%}
{%- endfor -%}
{%- else -%}
{{ raise_exception("Invalid content type") }}
{%- endif -%}
{%- if role == "tool" -%}
{{ '</tool_result>' }}
{%- endif -%}
{%- if message['tool_calls'] is defined and message['tool_calls'] | length > 0 %}
{%- for tool_call in message["tool_calls"] -%}
{{ '\n<tool_call>{"name": "' + tool_call['function']['name'] + '", "arguments": ' + ('"' + tool_call['function']['arguments'] + '"' if tool_call['function']['arguments'] is string else tool_call['function']['arguments'] | tojson) + '"}</tool_call>' }}
{%- endfor %}
{%- endif -%}
{{ '<end_of_turn>\n' }}

View File

@@ -0,0 +1,58 @@
{%- if tools %}
{{- '<|system|>\n' }}
{%- if messages[0].role == 'system' %}
{{- messages[0].content + '\n\n' }}
{%- endif %}
{{- "Tools:\n" }}
{%- for tool in tools %} {{ tool['name'] }}({% for param in tool['parameters']['properties'].keys() if param != 'target_device' %}{{ param }}{% if not loop.last %},{% endif %}{% endfor -%}),{% if not loop.last -%}
{{- "\n</tools>\n\nFor each function call, return a json object with function name and arguments within <tool_call></tool_call> XML tags:\n<tool_call>\n{\"name\": <function-name>, \"arguments\": <args-json-object>}\n</tool_call><|endoftext|>\n" }}
{%- else %}
{%- if messages[0].role == 'system' %}
{{- '<|system|>\n' + messages[0].content + '\nNo tools were provided. If the user requests you interact with a device, tell them you are unable to do so.' + '<|endoftext|>\n' }}
{%- endif %}
{%- endif %}
{%- for message in messages %}
{%- if message.content is string %}
{%- set content = message.content %}
{%- else %}
{%- set content = '' %}
{%- endif %}
{%- if (message.role == "user") or (message.role == "system" and not loop.first) %}
{{- '<|' + message.role + '|>' + '\n' + content + '<|endoftext|>' + '\n' }}
{%- elif message.role == "assistant" %}
{{- '<|' + message.role + '|>' + '\n' + content }}
{%- if message.tool_calls %}
{%- for tool_call in message.tool_calls %}
{%- if (loop.first and content) or (not loop.first) %}
{{- '\n' }}
{%- endif %}
{%- if tool_call.function %}
{%- set tool_call = tool_call.function %}
{%- endif %}
{{- '<tool_call>\n{"name": "' }}
{{- tool_call.name }}
{{- '", "arguments": ' }}
{%- if tool_call.arguments is string %}
"{{- tool_call.arguments }}
{%- else %}
{{- tool_call.arguments | tojson }}
{%- endif %}
{{- '}\n</tool_call>' }}
{%- endfor %}
{%- endif %}
{{- '<|endoftext|>\n' }}
{%- elif message.role == "tool" %}
{%- if loop.first or (messages[loop.index0 - 1].role != "tool") %}
{{- '<|user|>' }}
{%- endif %}
{{- '\n<tool_response>\n' }}
{{- content }}
{{- '\n</tool_response>' }}
{%- if loop.last or (messages[loop.index0 + 1].role != "tool") %}
{{- '<|endoftext|>\n' }}
{%- endif %}
{%- endif %}
{%- endfor %}
{%- if add_generation_prompt %}
{{- '<|assistant|>\n' }}
{%- endif %}

View File

@@ -0,0 +1,350 @@
base_model: google/functiongemma-270m-it
model_type: Gemma3ForCausalLM
# gemma3 doesn't seem to play nice with ddp
ddp_find_unused_parameters: true
chat_template: jinja
chat_template_jinja: |
{%- macro format_parameters(properties, required) -%}
{%- set standard_keys = ['description', 'type', 'properties', 'required', 'nullable'] -%}
{%- set ns = namespace(found_first=false) -%}
{%- for key, value in properties | dictsort -%}
{%- if key not in standard_keys -%}
{%- if ns.found_first %},{% endif -%}
{%- set ns.found_first = true -%}
{{- key }}:{description:<escape>{{ value['description'] }}<escape>
{%- if value['type'] | upper == 'STRING' -%}
{%- if value['enum'] -%}
,enum:{{ format_argument(value['enum']) }}
{%- endif -%}
{%- elif value['type'] | upper == 'OBJECT' -%}
,properties:{
{%- if value['properties'] is defined and value['properties'] is mapping -%}
{{- format_parameters(value['properties'], value['required'] | default([])) -}}
{%- elif value is mapping -%}
{{- format_parameters(value, value['required'] | default([])) -}}
{%- endif -%}
}
{%- if value['required'] -%}
,required:[
{%- for item in value['required'] | default([]) -%}
<escape>{{- item -}}<escape>
{%- if not loop.last %},{% endif -%}
{%- endfor -%}
]
{%- endif -%}
{%- elif value['type'] | upper == 'ARRAY' -%}
{%- if value['items'] is mapping and value['items'] -%}
,items:{
{%- set ns_items = namespace(found_first=false) -%}
{%- for item_key, item_value in value['items'].items() -%}
{%- if item_value is not none -%}
{%- if ns_items.found_first %},{% endif -%}
{%- set ns_items.found_first = true -%}
{%- if item_key == 'properties' -%}
properties:{
{%- if item_value is mapping -%}
{{- format_parameters(item_value, value['items']['required'] | default([])) -}}
{%- endif -%}
}
{%- elif item_key == 'required' -%}
required:[
{%- for req_item in item_value -%}
<escape>{{- req_item -}}<escape>
{%- if not loop.last %},{% endif -%}
{%- endfor -%}
]
{%- elif item_key == 'type' -%}
{%- if item_value is string -%}
type:{{ format_argument(item_value | upper) }}
{%- else -%}
type:{{ format_argument(item_value | map('upper') | list) }}
{%- endif -%}
{%- else -%}
{{ item_key }}:{{ format_argument(item_value) }}
{%- endif -%}
{%- endif -%}
{%- endfor -%}
}
{%- endif -%}
{%- endif -%}
,type:<escape>{{ value['type'] | upper }}<escape>}
{%- endif -%}
{%- endfor -%}
{%- endmacro -%}
{% macro format_function_declaration(tool_data) -%}
declaration:{{- tool_data['function']['name'] -}}
{description:<escape>{{- tool_data['function']['description'] -}}<escape>
{%- set params = tool_data['function']['parameters'] -%}
{%- if params -%}
,parameters:{
{%- if params['properties'] -%}
properties:{ {{- format_parameters(params['properties'], params['required']) -}} },
{%- endif -%}
{%- if params['required'] -%}
required:[
{%- for item in params['required'] -%}
<escape>{{- item -}}<escape>
{{- ',' if not loop.last -}}
{%- endfor -%}
],
{%- endif -%}
{%- if params['type'] -%}
type:<escape>{{- params['type'] | upper -}}<escape>}
{%- endif -%}
{%- endif -%}
}
{%- endmacro -%}
{% macro format_argument(argument, escape_keys=True) -%}
{%- if argument is string -%}
{{- '<escape>' + argument + '<escape>' -}}
{%- elif argument is boolean -%}
{%- if argument -%}
{{- 'true' -}}
{%- else -%}
{{- 'false' -}}
{%- endif -%}
{%- elif argument is mapping -%}
{{- '{' -}}
{%- set ns = namespace(found_first=false) -%}
{%- for key, value in argument.items() -%}
{%- if ns.found_first %},{% endif -%}
{%- set ns.found_first = true -%}
{%- if escape_keys -%}
{{- '<escape>' + key + '<escape>' -}}
{%- else -%}
{{- key -}}
{%- endif -%}
:{{- format_argument(value, escape_keys=escape_keys) -}}
{%- endfor -%}
{{- '}' -}}
{%- elif argument is iterable -%}
{{- '[' -}}
{%- for item in argument -%}
{{- format_argument(item, escape_keys=escape_keys) -}}
{%- if not loop.last %},{% endif -%}
{%- endfor -%}
{{- ']' -}}
{%- else -%}
{{- argument -}}
{%- endif -%}
{%- endmacro -%}
{{ bos_token }}
{%- set ns = namespace(prev_message_type=None) -%}
{#- extract system prompt for merging with user role -#}
{%- set loop_messages = messages -%}
{%- set system_message_content = '' %}
{%- if messages[0]['role'] == 'system' or messages[0]['role'] == 'developer' -%}
{%- set system_message_content = messages[0]['content'] -%}
{%- set loop_messages = messages[1:] -%}
{%- endif -%}
{#- 'static' system prompt. -#}
{%- if tools -%}
{{- '<start_of_turn>developer\nYou are a model that can do function calling with the following functions' -}}
{%- for tool in tools %}
{{- '<start_function_declaration>' -}}
{{- format_function_declaration(tool) | trim }}
{{- '<end_function_declaration>' -}}
{%- endfor %}
{{- '<end_of_turn>\n' -}}
{%- else -%}
{{- '<start_of_turn>developer\nNo tools have been provided. Only respond with answers that do not require tool usage.<end_of_turn>\n' -}}
{%- endif -%}
{#- Loop through messages. -#}
{%- for message in loop_messages -%}
{%- if (message['role'] == 'assistant') -%}
{#- Rename "assistant" to "model". -#}
{%- set role = "model" -%}
{%- else -%}
{%- set role = message['role'] -%}
{%- endif -%}
{%- if role != 'tool' -%}
{%- if ns.prev_message_type != 'tool_response' -%}
{{- '<start_of_turn>' + role + '\n' }}
{%- endif -%}
{%- set ns.prev_message_type = None -%}
{%- if loop.first and system_message_content -%}
{%- if system_message_content is string -%}
{{ system_message_content | trim }}
{%- elif system_message_content is iterable -%}
{%- for item in system_message_content -%}
{%- if item['type'] == 'image' -%}
{{ raise_exception("Invalid content type 'image' in system message") }}
{%- elif item['type'] == 'text' -%}
{{ item['text'] | trim }}
{%- endif -%}
{%- endfor -%}
{%- else -%}
{{ raise_exception("Invalid content type in system message") }}
{%- endif -%}
{{- '\n' -}}
{%- endif -%}
{#- User/Assistant Messages -#}
{%- if 'content' in message and message['content'] is not none -%}
{%- if message['content'] is string -%}
{{ message['content'] | trim }}
{%- elif message['content'] is iterable -%}
{%- for item in message['content'] -%}
{%- if item['type'] == 'image' -%}
{{ '<start_of_image>' }}
{%- elif item['type'] == 'text' -%}
{{ item['text'] | trim }}
{%- endif -%}
{%- endfor -%}
{%- else -%}
{{ raise_exception("Invalid content type in user/assistant message") }}
{%- endif -%}
{%- set ns.prev_message_type = 'content' -%}
{%- endif -%}
{%- if 'tool_calls' in message and message['tool_calls'] and message['tool_calls'] is iterable -%}
{#- Tool Calls -#}
{%- for tool_call in message['tool_calls'] -%}
{% set function = tool_call['function'] %}
{{- '<start_function_call>call:' + function['name'] + '{' -}}
{%- if 'arguments' in function -%}
{%- if function['arguments'] is mapping -%}
{%- set ns = namespace(found_first=false) -%}
{%- for key, value in function['arguments'] | dictsort -%}
{%- if ns.found_first %},{% endif -%}
{%- set ns.found_first = true -%}
{{- key -}}:{{- format_argument(value, escape_keys=False) -}}
{%- endfor -%}
{%- elif function['arguments'] is string -%}
{# This handles string-JSON, just in case #}
{{ function['arguments'] }}
{%- endif %}
{%- endif -%}
{{- '}<end_function_call>' -}}
{%- endfor -%}
{%- if loop.last -%}
{{ '<start_function_response>' }}
{%- endif -%}
{%- set ns.prev_message_type = 'tool_call' -%}
{%- endif -%}
{%- else -%}
{#- Tool Responses -#}
{%- if 'content' in message and message['content'] -%}
{%- if message['content'] is mapping -%}
{%- if 'name' in message['content'] and 'response' in message['content'] -%}
{{ '<start_function_response>response:' + message['content']['name'] | trim + '{' }}
{%- set response_ns = namespace(found_first=false) -%}
{%- for key, value in message['content']['response'] | dictsort -%}
{%- if response_ns.found_first %},{% endif -%}
{%- set response_ns.found_first = true -%}
{{- key -}}:{{- format_argument(value, escape_keys=False) -}}
{%- endfor -%}
{{- '}<end_function_response>' -}}
{%- elif 'name' in message -%}
{{ '<start_function_response>response:' + message['name'] | trim + '{' }}
{%- set response_ns = namespace(found_first=false) -%}
{%- for key, value in message['content'].items() -%}
{%- if response_ns.found_first %},{% endif -%}
{%- set response_ns.found_first = true -%}
{{- key -}}:{{- format_argument(value, escape_keys=False) -}}
{%- endfor -%}
{{- '}<end_function_response>' -}}
{%- else -%}
{{ raise_exception("Invalid tool response mapping: must contain 'name' and 'response' keys, or 'name' must be in the message.") }}
{%- endif -%}
{%- elif message['content'] is string -%}
{%- if 'name' in message -%}
{{ '<start_function_response>response:' + message['name'] | trim + '{value:' + format_argument(message['content'], escape_keys=False) + '}<end_function_response>' }}
{%- else -%}
{{ raise_exception("Invalid tool response: 'name' must be provided.") }}
{%- endif -%}
{%- elif message['content'] is iterable -%}
{%- for item in message['content'] -%}
{%- if item is mapping -%}
{%- if 'name' in item and 'response' in item -%}
{{ '<start_function_response>response:' + item['name'] | trim + '{' }}
{%- set response_ns = namespace(found_first=false) -%}
{%- for key, value in item['response'].items() -%}
{%- if response_ns.found_first %},{% endif -%}
{%- set response_ns.found_first = true -%}
{{- key -}}:{{- format_argument(value, escape_keys=False) -}}
{%- endfor -%}
{{- '}<end_function_response>' -}}
{%- elif 'name' in message -%}
{{ '<start_function_response>response:' + message['name'] | trim + '{' }}
{%- set response_ns = namespace(found_first=false) -%}
{%- for key, value in item.items() -%}
{%- if response_ns.found_first %},{% endif -%}
{%- set response_ns.found_first = true -%}
{{- key -}}:{{- format_argument(value, escape_keys=False) -}}
{%- endfor -%}
{{- '}<end_function_response>' -}}
{%- else -%}
{{ raise_exception("Invalid tool response mapping: must contain 'name' and 'response' keys, or 'name' must be in the message.") }}
{%- endif -%}
{%- else -%}
{{ raise_exception("Invalid tool response message: multiple responses must all be mappings") }}
{%- endif -%}
{%- endfor -%}
{%- else -%}
{{ raise_exception("Invalid content type in tool message: must be mapping, iterable of mappings, or string.") }}
{%- endif -%}
{%- endif -%}
{%- set ns.prev_message_type = 'tool_response' -%}
{%- endif -%}
{%- if ns.prev_message_type not in ['tool_call', 'tool_response'] -%}
{{ '<end_of_turn>\n' }}
{%- endif -%}
{%- endfor -%}
{%- if add_generation_prompt -%}
{%- if ns.prev_message_type != 'tool_response' -%}
{{- '<start_of_turn>model\n' -}}
{%- endif -%}
{%- endif -%}
special_tokens:
eot_tokens:
- <end_of_turn>
- <end_function_call>
eos_token: <end_of_turn>
datasets:
- path: /workspace/data/datasets/sample.jsonl
ds_type: json
type: chat_template
roles_to_train: []
message_field_training: train_on_turn
dataset_prepared_path: /workspace/data/datasets/prepared/
# test_datasets:
# - path: /workspace/data/datasets/home_assistant_test.jsonl
# ds_type: json
# type: chat_template
val_set_size: 0.0
output_dir: /workspace/data/training-runs/Home-FunctionGemma-270m
sequence_len: 5130
sample_packing: false
eval_sample_packing: false
use_tensorboard: true
# batch size = 16
gradient_accumulation_steps: 16
micro_batch_size: 1
num_epochs: 1
optimizer: adamw_bnb_8bit
lr_scheduler: cosine
learning_rate: 0.0002
bf16: true
gradient_checkpointing: true
gradient_checkpointing_kwargs:
use_reentrant: false
resume_from_checkpoint:
logging_steps: 1
flash_attention: true
warmup_ratio: 0.1
evals_per_epoch:
saves_per_epoch: 1
weight_decay: 0.0

View File

@@ -0,0 +1,104 @@
base_model: google/gemma-3-270m-it
model_type: Gemma3ForCausalLM
# gemma3 doesn't seem to play nice with ddp
ddp_find_unused_parameters: true
chat_template: jinja
chat_template_jinja: |
{{ bos_token }}
{%- if not tools or tools | length == 0 %}No tools were provided. If the user requests you interact with a device, tell them you are unable to do so.{% else %}
Tools:
{% for tool in tools %}
- {{ tool['function']['name'] }}({{ tool['function']['parameters']['properties'].keys() | join(', ') }}): {{ tool['function']['description'] }}
{% endfor -%}
{%- endif -%}
{%- for message in messages -%}
{%- if (message['role'] == 'assistant') -%}
{%- set role = "model" -%}
{%- elif message['role'] == 'system' -%}
{%- set role = "user" -%}
{%- else -%}
{%- set role = message['role'] -%}
{%- endif -%}
{{ '<start_of_turn>' + role + '\n' }}
{%- if role == "tool" -%}
{{ '<tool_result>' }}
{%- endif -%}
{%- if message['content'] is string -%}
{{ message['content'] | trim }}
{%- elif message['content'] is iterable -%}
{%- for item in message['content'] -%}
{%- if item['type'] == 'image' -%}
{{ '<start_of_image>' }}
{%- elif item['type'] == 'text' -%}
{{ item['text'] | trim }}
{%- endif -%}
{%- if not loop.last -%}
{{ '</tool_result>\n<tool_result>' }}
{%- endif -%}
{%- endfor -%}
{%- else -%}
{{ raise_exception("Invalid content type") }}
{%- endif -%}
{%- if role == "tool" -%}
{{ '</tool_result>' }}
{%- endif -%}
{%- if message['tool_calls'] is defined and message['tool_calls'] | length > 0 %}
{%- for tool_call in message["tool_calls"] -%}
{{ '\n<tool_call>{"name": "' + tool_call['function']['name'] + '", "arguments": ' + ('"' + tool_call['function']['arguments'] + '"' if tool_call['function']['arguments'] is string else tool_call['function']['arguments'] | tojson) + '"}</tool_call>' }}
{%- endfor %}
{%- endif -%}
{{ '<end_of_turn>\n' }}
{%- endfor -%}
{%- if add_generation_prompt -%}
{{'<start_of_turn>model\n'}}
{%- endif -%}
special_tokens:
eot_tokens:
- <end_of_turn>
eos_token: <end_of_turn>
additional_special_tokens:
- <tool_call>
- </tool_call>
- <tool_result>
- </tool_result>
datasets:
- path: /workspace/data/datasets/sample.jsonl
ds_type: json
type: chat_template
roles_to_train:
- assistant
val_set_size: 0.0
output_dir: /workspace/data/training-runs/Home-Gemma3-270m
sequence_len: 4096
sample_packing: true
eval_sample_packing: false
use_tensorboard: true
# batch size = 16
gradient_accumulation_steps: 16
micro_batch_size: 1
num_epochs: 1
optimizer: adamw_bnb_8bit
lr_scheduler: cosine
learning_rate: 0.0002
bf16: true
gradient_checkpointing: true
gradient_checkpointing_kwargs:
use_reentrant: false
resume_from_checkpoint:
logging_steps: 1
flash_attention: true
warmup_ratio: 0.1
evals_per_epoch:
saves_per_epoch: 1
weight_decay: 0.0

12
train/train.sh Executable file
View File

@@ -0,0 +1,12 @@
#!/bin/bash
MODEL_NAME=${1}
REMOTE_SERVER=${2}
if [ -z "$MODEL_NAME" ] || [ -z "$REMOTE_SERVER" ]; then
echo "Usage: $0 <config-name> <remote-server>"
exit 1
fi
scp configs/${MODEL_NAME}.yml ${REMOTE_SERVER}:/mnt/data/training-configs/
cat training-job.yml | sed "s/MODEL_NAME/${MODEL_NAME}/g" | kubectl create -f -

104
train/training-job.yml Normal file
View File

@@ -0,0 +1,104 @@
apiVersion: batch/v1
kind: Job
metadata:
generateName: training-job-MODEL_NAME
namespace: ai
labels:
app: training-job
spec:
ttlSecondsAfterFinished: 604800 # 7 days (7 * 24 * 60 * 60)
template:
metadata:
labels:
app: training-job
spec:
containers:
- name: axolotl
image: axolotlai/axolotl-cloud:main-py3.11-cu128-2.8.0
imagePullPolicy: IfNotPresent
command:
- axolotl
- train
- /workspace/configs/MODEL_NAME.yml
env:
- name: AXOLOTL_DO_NOT_TRACK
value: "1"
- name: HF_TOKEN
valueFrom:
secretKeyRef:
name: hf-token
key: token
volumeMounts:
- name: training-runs
mountPath: /workspace/data/training-runs
- name: training-data
mountPath: /workspace/data/datasets
- name: training-configs
mountPath: /workspace/configs
- name: hf-cache
mountPath: /workspace/data/huggingface-cache
resources:
limits:
nvidia.com/gpu: 2 # number of GPUs to assign to this pod
initContainers:
- name: preprocess-dataset
image: axolotlai/axolotl-cloud:main-py3.11-cu128-2.8.0
imagePullPolicy: IfNotPresent
command:
- axolotl
- preprocess
- /workspace/configs/MODEL_NAME.yml
- --debug
env:
- name: AXOLOTL_DO_NOT_TRACK
value: "1"
- name: HF_TOKEN
valueFrom:
secretKeyRef:
name: hf-token
key: token
volumeMounts:
- name: training-runs
mountPath: /workspace/data/training-runs
- name: training-data
mountPath: /workspace/data/datasets
- name: training-configs
mountPath: /workspace/configs
- name: hf-cache
mountPath: /workspace/data/huggingface-cache
- name: tensorboard
image: python:3.11-slim
imagePullPolicy: IfNotPresent
restartPolicy: Always # mark as sidecar
command:
- bash
- -c
- "pip3 install tensorboard && tensorboard --logdir=/workspace/data/training-runs --host=0.0.0.0 --port 8080"
ports:
- containerPort: 8080
name: tensorboard
protocol: TCP
volumeMounts:
- name: training-runs
mountPath: /workspace/data/training-runs
runtimeClassName: nvidia
nodeSelector:
nvidia.com/gpu: "true"
restartPolicy: OnFailure
volumes:
- name: training-runs
hostPath:
path: /mnt/data/training-runs
type: DirectoryOrCreate
- name: training-data
hostPath:
path: /mnt/data/training-data
type: DirectoryOrCreate
- name: training-configs
hostPath:
path: /mnt/data/training-configs
type: DirectoryOrCreate
- name: hf-cache
hostPath:
path: /mnt/data/hf-cache
type: DirectoryOrCreate