iobroker.assistant 1.1.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +74 -1
- package/admin/custom/.vite/manifest.json +62 -62
- package/admin/custom/assets/Components-x2Dfv8qE.js +2 -0
- package/admin/custom/assets/{_virtual_mf-localSharedImportMap___mfe_internal__ConfigCustomAssistant__mf_owner__1-A4gakomR.js → _virtual_mf-localSharedImportMap___mfe_internal__ConfigCustomAssistant__mf_owner__1-B4YbqhBb.js} +1 -1
- package/admin/custom/assets/{_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__201375093093590__loadShare___mf_0_emotion_mf_1_styled__loadShare__.js-CwqmfMvn.js → _virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__163539842885036__loadShare___mf_0_emotion_mf_1_styled__loadShare__.js-IaosaymG.js} +1 -1
- package/admin/custom/assets/{_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__201375093093590__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-BMuLYe6f.js → _virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__163539842885036__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-o4EU_Ut5.js} +39 -39
- package/admin/custom/assets/{_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__201375093093590__loadShare__shared-BxjZmnpc.js → _virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__163539842885036__loadShare__shared--be2hWbV.js} +1 -1
- package/admin/custom/assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__163539842885036__prebuild___mf_0_iobroker_mf_1_json_mf_2_config__prebuild__-BsTz_EWE.js +122 -0
- package/admin/custom/assets/{hostInit-4roC4hEj.js → hostInit-Blh7a-Qe.js} +1 -1
- package/admin/custom/assets/{lib-CchzgTUs.js → lib-DBbNtolG.js} +1 -1
- package/admin/custom/assets/{mf-entry-bootstrap-0-4806bbe4.js → mf-entry-bootstrap-0-7abd30d3.js} +2 -2
- package/admin/custom/assets/{pendingShares-DLlv8yFY.js → pendingShares-U0D1MYK4.js} +1 -1
- package/admin/custom/customComponents.js +2 -2
- package/admin/custom/i18n/de.json +56 -0
- package/admin/custom/i18n/en.json +56 -0
- package/admin/custom/i18n/es.json +56 -0
- package/admin/custom/i18n/fr.json +56 -0
- package/admin/custom/i18n/it.json +56 -0
- package/admin/custom/i18n/nl.json +56 -0
- package/admin/custom/i18n/pl.json +56 -0
- package/admin/custom/i18n/pt.json +56 -0
- package/admin/custom/i18n/ru.json +56 -0
- package/admin/custom/i18n/uk.json +56 -0
- package/admin/custom/i18n/zh-cn.json +56 -0
- package/admin/custom/index.html +2 -2
- package/admin/custom/mf-manifest.json +1 -1
- package/admin/custom/mf-stats.json +1 -1
- package/admin/i18n/de.json +31 -4
- package/admin/i18n/en.json +31 -4
- package/admin/i18n/es.json +31 -4
- package/admin/i18n/fr.json +31 -4
- package/admin/i18n/it.json +31 -4
- package/admin/i18n/nl.json +31 -4
- package/admin/i18n/pl.json +31 -4
- package/admin/i18n/pt.json +31 -4
- package/admin/i18n/ru.json +31 -4
- package/admin/i18n/uk.json +31 -4
- package/admin/i18n/zh-cn.json +31 -4
- package/admin/jsonConfig.json +226 -15
- package/build/lib/credentials.js +11 -5
- package/build/lib/credentials.js.map +1 -1
- package/build/lib/journal.js +298 -2
- package/build/lib/journal.js.map +1 -1
- package/build/lib/llm.js +122 -7
- package/build/lib/llm.js.map +1 -1
- package/build/lib/localLlm.js +47 -10
- package/build/lib/localLlm.js.map +1 -1
- package/build/lib/nlu.js +372 -13
- package/build/lib/nlu.js.map +1 -1
- package/build/lib/piAgent.js +89 -0
- package/build/lib/piAgent.js.map +1 -0
- package/build/lib/systemAi.js +124 -0
- package/build/lib/systemAi.js.map +1 -0
- package/build/lib/tools.js +3 -0
- package/build/lib/tools.js.map +1 -1
- package/build/lib/voice/engines.js +31 -3
- package/build/lib/voice/engines.js.map +1 -1
- package/build/lib/voice/esphome.js +81 -7
- package/build/lib/voice/esphome.js.map +1 -1
- package/build/lib/voice/esphomeProto.js.map +1 -1
- package/build/lib/voice/mediaServer.js +29 -1
- package/build/lib/voice/mediaServer.js.map +1 -1
- package/build/lib/voice/openrouter.js +220 -0
- package/build/lib/voice/openrouter.js.map +1 -0
- package/build/lib/voice/protocol.js.map +1 -1
- package/build/lib/voice/voiceServer.js +81 -7
- package/build/lib/voice/voiceServer.js.map +1 -1
- package/build/lib/voice/wakeWords.js +284 -0
- package/build/lib/voice/wakeWords.js.map +1 -0
- package/build/lib/voice/wyoming.js +12 -4
- package/build/lib/voice/wyoming.js.map +1 -1
- package/build/lib/weather.js +160 -0
- package/build/lib/weather.js.map +1 -1
- package/build/main.js +1282 -126
- package/build/main.js.map +1 -1
- package/io-package.json +53 -41
- package/package.json +5 -5
- package/admin/custom/assets/Components-C6qcpaRC.js +0 -1
- package/admin/custom/assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__201375093093590__prebuild___mf_0_iobroker_mf_1_json_mf_2_config__prebuild__-TM4l0OYm.js +0 -122
- /package/admin/custom/assets/{_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__201375093093590__loadShare___mf_0_emotion_mf_1_react__loadShare__.js-BkH7fzDw.js → _virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__163539842885036__loadShare___mf_0_emotion_mf_1_react__loadShare__.js-BkH7fzDw.js} +0 -0
- /package/admin/custom/assets/{_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__201375093093590__prebuild__react_mf_1_jsx_mf_2_runtime__prebuild__-M61rjtmp.js → _virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__163539842885036__prebuild__react_mf_1_jsx_mf_2_runtime__prebuild__-M61rjtmp.js} +0 -0
|
@@ -1,35 +1,60 @@
|
|
|
1
1
|
{
|
|
2
2
|
"custom_assistant_%s of %s active": "%s of %s active",
|
|
3
|
+
"custom_assistant_%s s audio": "%s 秒音频",
|
|
3
4
|
"custom_assistant_(no spoken answer)": "(no spoken answer)",
|
|
4
5
|
"custom_assistant_All sources": "All sources",
|
|
5
6
|
"custom_assistant_Announcement": "公告",
|
|
7
|
+
"custom_assistant_Answer": "回答",
|
|
8
|
+
"custom_assistant_Audio file": "音频文件",
|
|
6
9
|
"custom_assistant_Cancel": "Cancel",
|
|
7
10
|
"custom_assistant_Chat": "Chat",
|
|
8
11
|
"custom_assistant_Clear chat": "清晰聊天",
|
|
12
|
+
"custom_assistant_Click for details": "点击查看详情",
|
|
9
13
|
"custom_assistant_Close": "Close",
|
|
10
14
|
"custom_assistant_Cloud LLM": "Cloud LLM",
|
|
15
|
+
"custom_assistant_Collapse all": "全部折叠",
|
|
16
|
+
"custom_assistant_Context": "上下文",
|
|
17
|
+
"custom_assistant_Copied": "已复制",
|
|
18
|
+
"custom_assistant_Copy": "复制",
|
|
19
|
+
"custom_assistant_Copy everything as JSON": "全部复制为 JSON",
|
|
11
20
|
"custom_assistant_Delete": "Delete",
|
|
12
21
|
"custom_assistant_Delete the recorded history of all sources?": "Delete the recorded history of all sources?",
|
|
13
22
|
"custom_assistant_Device cache cleared.": "设备缓存已清除。",
|
|
14
23
|
"custom_assistant_Device settings": "Device settings",
|
|
24
|
+
"custom_assistant_Download as JSON": "下载为 JSON",
|
|
25
|
+
"custom_assistant_Error": "错误",
|
|
26
|
+
"custom_assistant_Expand all": "全部展开",
|
|
27
|
+
"custom_assistant_Follow-up": "追问",
|
|
15
28
|
"custom_assistant_Hide disabled": "隐藏已禁用",
|
|
16
29
|
"custom_assistant_Hide processing details": "Hide processing details",
|
|
17
30
|
"custom_assistant_Host": "主持人",
|
|
18
31
|
"custom_assistant_Last seen": "最后一次出现",
|
|
19
32
|
"custom_assistant_Listening…": "正在听……",
|
|
33
|
+
"custom_assistant_Loading…": "加载中…",
|
|
20
34
|
"custom_assistant_Local LLM": "Local LLM",
|
|
21
35
|
"custom_assistant_Local model": "本地模型",
|
|
22
36
|
"custom_assistant_Mic re-opened without wake word": "Mic re-opened without wake word (follow-up or question)",
|
|
23
37
|
"custom_assistant_Name language: %s": "名称语言:%s",
|
|
38
|
+
"custom_assistant_No answer": "无应答",
|
|
24
39
|
"custom_assistant_No devices detected. Assign states to rooms and functions in ioBroker.": "未检测到设备。请在ioBroker中为房间和功能分配状态。",
|
|
25
40
|
"custom_assistant_No messages yet. Type a question below.": "暂无消息。请在下方输入问题。",
|
|
41
|
+
"custom_assistant_No processing steps were recorded for this request.": "此请求没有记录处理步骤。仅保留最近 200 个请求的详细信息。",
|
|
26
42
|
"custom_assistant_No satellites registered yet.": "目前尚未注册任何卫星。",
|
|
27
43
|
"custom_assistant_Not understood": "Not understood",
|
|
44
|
+
"custom_assistant_Nothing recognized": "未识别到内容",
|
|
28
45
|
"custom_assistant_Per-device permissions": "每个设备的权限",
|
|
29
46
|
"custom_assistant_Play answer (backend TTS)": "播放答案(后端 TTS)",
|
|
47
|
+
"custom_assistant_Please select a .tflite model file": "请选择 .tflite 模型文件",
|
|
48
|
+
"custom_assistant_Question": "问题",
|
|
30
49
|
"custom_assistant_Read answers aloud": "大声朗读答案",
|
|
50
|
+
"custom_assistant_Recognized": "识别结果",
|
|
51
|
+
"custom_assistant_Record": "录音",
|
|
52
|
+
"custom_assistant_Recorded audio": "录制的音频",
|
|
31
53
|
"custom_assistant_Refresh device cache": "刷新设备缓存",
|
|
54
|
+
"custom_assistant_Reply audio": "回复音频",
|
|
32
55
|
"custom_assistant_Reply to a question": "Reply to a question",
|
|
56
|
+
"custom_assistant_Request": "请求",
|
|
57
|
+
"custom_assistant_Request details": "请求详情",
|
|
33
58
|
"custom_assistant_Room": "Room",
|
|
34
59
|
"custom_assistant_Routine": "Routine",
|
|
35
60
|
"custom_assistant_Rule-based NLU": "Rule-based NLU (local)",
|
|
@@ -44,28 +69,53 @@
|
|
|
44
69
|
"custom_assistant_Source": "Source",
|
|
45
70
|
"custom_assistant_Speak": "说话",
|
|
46
71
|
"custom_assistant_Speak on all satellites": "在所有卫星上通话",
|
|
72
|
+
"custom_assistant_Speak the test sentence and recognize it": "朗读测试句子并识别",
|
|
73
|
+
"custom_assistant_Speech output": "语音输出",
|
|
74
|
+
"custom_assistant_Speech recognition": "语音识别",
|
|
47
75
|
"custom_assistant_Speech recognition time": "Speech recognition time",
|
|
76
|
+
"custom_assistant_Speech synthesis": "语音合成",
|
|
77
|
+
"custom_assistant_Spoken": "朗读内容",
|
|
48
78
|
"custom_assistant_Start the assistant instance to chat.": "启动助手实例进行聊天。",
|
|
49
79
|
"custom_assistant_Start the assistant instance to load the device list.": "启动助手实例以加载设备列表。",
|
|
50
80
|
"custom_assistant_State": "State",
|
|
81
|
+
"custom_assistant_States read": "读取的状态",
|
|
82
|
+
"custom_assistant_States written": "写入的状态",
|
|
51
83
|
"custom_assistant_Status": "地位",
|
|
84
|
+
"custom_assistant_Steps": "步骤",
|
|
85
|
+
"custom_assistant_Stop": "停止",
|
|
52
86
|
"custom_assistant_Stop listening": "别听了",
|
|
53
87
|
"custom_assistant_Stop reading answers aloud": "停止大声朗读答案",
|
|
54
88
|
"custom_assistant_Stop word": "Stop word",
|
|
55
89
|
"custom_assistant_Test chat": "测试聊天",
|
|
90
|
+
"custom_assistant_Test sentence": "测试句子",
|
|
91
|
+
"custom_assistant_Test voice": "测试语音",
|
|
92
|
+
"custom_assistant_The instance must be running to test the voice.": "实例必须正在运行才能测试语音。",
|
|
93
|
+
"custom_assistant_The microphone only works over https or on localhost.": "麦克风仅在 https 或 localhost 下可用。",
|
|
56
94
|
"custom_assistant_Thinking…": "思维…",
|
|
57
95
|
"custom_assistant_This satellite exposes no settings.": "This satellite exposes no settings.",
|
|
96
|
+
"custom_assistant_Time": "时间",
|
|
97
|
+
"custom_assistant_Tool": "工具",
|
|
98
|
+
"custom_assistant_Tool calls": "工具调用",
|
|
99
|
+
"custom_assistant_Tool result": "工具结果",
|
|
100
|
+
"custom_assistant_Tools & states": "工具和状态",
|
|
101
|
+
"custom_assistant_Total duration": "总耗时",
|
|
58
102
|
"custom_assistant_Translate all missing (%s)": "翻译所有缺失值(%s)",
|
|
59
103
|
"custom_assistant_Translate name into %s": "将名称翻译成 %s",
|
|
60
104
|
"custom_assistant_Type a message…": "输入消息…",
|
|
105
|
+
"custom_assistant_Upload": "上传",
|
|
106
|
+
"custom_assistant_Upload own wake word": "上传自定义唤醒词",
|
|
107
|
+
"custom_assistant_Uploaded wake word": "已上传的唤醒词",
|
|
61
108
|
"custom_assistant_Wake word": "Wake word",
|
|
109
|
+
"custom_assistant_Wake word phrase": "唤醒短语",
|
|
62
110
|
"custom_assistant_Wake words": "Wake words",
|
|
63
111
|
"custom_assistant_auto": "汽车",
|
|
64
112
|
"custom_assistant_change it on the Voice tab": "在“语音”选项卡上更改。",
|
|
113
|
+
"custom_assistant_delete_wake_word_confirm": "删除“%s”?它将不再提供给设备;已下载它的设备会保留它。",
|
|
65
114
|
"custom_assistant_device": "设备",
|
|
66
115
|
"custom_assistant_filter": "筛选",
|
|
67
116
|
"custom_assistant_follow-up": "follow-up",
|
|
68
117
|
"custom_assistant_hint": "取消勾选“读取”选项可将设备对语音助手隐藏,取消勾选“写入”选项可将其设置为只读(例如,锁定设备)。设备默认设置为完全允许访问。",
|
|
118
|
+
"custom_assistant_in progress": "进行中",
|
|
69
119
|
"custom_assistant_llm_downloading": "正在下载模型…",
|
|
70
120
|
"custom_assistant_llm_error": "错误",
|
|
71
121
|
"custom_assistant_llm_idle": "闲置的",
|
|
@@ -73,10 +123,12 @@
|
|
|
73
123
|
"custom_assistant_llm_loading": "加载中…",
|
|
74
124
|
"custom_assistant_llm_not installed": "未安装",
|
|
75
125
|
"custom_assistant_llm_ready": "准备好",
|
|
126
|
+
"custom_assistant_made in %s ms": "用时 %s 毫秒",
|
|
76
127
|
"custom_assistant_no name in %s (showing %s)": "“%s”中没有名称——显示“%s”",
|
|
77
128
|
"custom_assistant_offline": "离线",
|
|
78
129
|
"custom_assistant_online": "在线的",
|
|
79
130
|
"custom_assistant_read": "读",
|
|
131
|
+
"custom_assistant_recognized in %s ms": "识别用时 %s 毫秒",
|
|
80
132
|
"custom_assistant_room": "房间",
|
|
81
133
|
"custom_assistant_sat_idle": "闲置的",
|
|
82
134
|
"custom_assistant_sat_listening": "聆听",
|
|
@@ -85,6 +137,10 @@
|
|
|
85
137
|
"custom_assistant_sat_speaking": "请讲",
|
|
86
138
|
"custom_assistant_type": "类型",
|
|
87
139
|
"custom_assistant_waits for reply": "waits for reply",
|
|
140
|
+
"custom_assistant_wake_word_deleted": "“%s”已删除。已下载它的设备会保留其副本。",
|
|
88
141
|
"custom_assistant_wake_word_hint": "唤醒词在设备上运行。将鼠标悬停在某个词上可查看它训练所用的语言——大多数仅支持英语。",
|
|
142
|
+
"custom_assistant_wake_word_phrase_hint": "唤醒设备时要说的话——列表中会这样显示。",
|
|
143
|
+
"custom_assistant_wake_word_upload_hint": "microWakeWord 模型:.tflite 文件,最好连同其 .json 一起。其他模型类型(openWakeWord、Porcupine)无法通过此方式安装。",
|
|
144
|
+
"custom_assistant_wake_word_uploaded": "“%s”已上传。在上方选择它即可启用——设备会在此时下载模型。",
|
|
89
145
|
"custom_assistant_write": "写"
|
|
90
146
|
}
|
package/admin/custom/index.html
CHANGED
|
@@ -24,8 +24,8 @@
|
|
|
24
24
|
|
|
25
25
|
document.head.appendChild(script);
|
|
26
26
|
</script>
|
|
27
|
-
<script type="module" crossorigin src="./assets/mf-entry-bootstrap-0-
|
|
28
|
-
<link rel="modulepreload" crossorigin href="./assets/hostInit-
|
|
27
|
+
<script type="module" crossorigin src="./assets/mf-entry-bootstrap-0-7abd30d3.js"></script>
|
|
28
|
+
<link rel="modulepreload" crossorigin href="./assets/hostInit-Blh7a-Qe.js"><link rel="modulepreload" crossorigin href="./assets/index-P2Xu9kJm.js"><link rel="modulepreload" crossorigin href="./customComponents.js"><link rel="modulepreload" crossorigin href="./assets/_virtual_mf-localSharedImportMap___mfe_internal__ConfigCustomAssistant__mf_owner__1-B4YbqhBb.js"><link rel="modulepreload" crossorigin href="./assets/vite-preload-helper-BbbETgeG.js"><link rel="modulepreload" crossorigin href="./assets/helpers-DE61bb74.js"><link rel="modulepreload" crossorigin href="./assets/dist-B3E7IYuQ.js"><link rel="modulepreload" crossorigin href="./assets/utils-Bi7ATSfV.js"></head>
|
|
29
29
|
<body>
|
|
30
30
|
<div id="root"></div>
|
|
31
31
|
</body>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"id":"ConfigCustomAssistant","name":"ConfigCustomAssistant","metaData":{"name":"ConfigCustomAssistant","type":"app","buildInfo":{"buildVersion":"1.0.0","buildName":"ConfigCustomAssistant"},"remoteEntry":{"name":"customComponents.js","path":"","type":"module"},"types":{"path":"","name":""},"globalName":"ConfigCustomAssistant","pluginVersion":"1.23.5","publicPath":"auto"},"shared":[{"id":"ConfigCustomAssistant:@emotion/react","name":"@emotion/react","version":"11.14.0","singleton":true,"requiredVersion":"*","assets":{"js":{"async":["assets/
|
|
1
|
+
{"id":"ConfigCustomAssistant","name":"ConfigCustomAssistant","metaData":{"name":"ConfigCustomAssistant","type":"app","buildInfo":{"buildVersion":"1.0.0","buildName":"ConfigCustomAssistant"},"remoteEntry":{"name":"customComponents.js","path":"","type":"module"},"types":{"path":"","name":""},"globalName":"ConfigCustomAssistant","pluginVersion":"1.23.5","publicPath":"auto"},"shared":[{"id":"ConfigCustomAssistant:@emotion/react","name":"@emotion/react","version":"11.14.0","singleton":true,"requiredVersion":"*","assets":{"js":{"async":["assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__163539842885036__loadShare___mf_0_emotion_mf_1_react__loadShare__.js-BkH7fzDw.js"],"sync":[]},"css":{"async":[],"sync":[]}}},{"id":"ConfigCustomAssistant:@emotion/styled","name":"@emotion/styled","version":"11.14.1","singleton":true,"requiredVersion":"*","assets":{"js":{"async":["assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__163539842885036__loadShare___mf_0_emotion_mf_1_styled__loadShare__.js-IaosaymG.js"],"sync":[]},"css":{"async":[],"sync":[]}}},{"id":"ConfigCustomAssistant:@iobroker/gui-components","name":"@iobroker/gui-components","version":"10.3.14","singleton":true,"requiredVersion":"*","assets":{"js":{"async":["assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__163539842885036__prebuild__react_mf_1_jsx_mf_2_runtime__prebuild__-M61rjtmp.js","assets/prod-ChPGnyiA.js","assets/iconLibraryData-B5fiyl1C.js","assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__163539842885036__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-o4EU_Ut5.js"],"sync":[]},"css":{"async":[],"sync":[]}}},{"id":"ConfigCustomAssistant:@iobroker/json-config","name":"@iobroker/json-config","version":"10.1.8","singleton":true,"requiredVersion":"*","assets":{"js":{"async":["assets/lib-DBbNtolG.js","assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__163539842885036__prebuild__react_mf_1_jsx_mf_2_runtime__prebuild__-M61rjtmp.js","assets/prod-ChPGnyiA.js","assets/iconLibraryData-B5fiyl1C.js","assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__163539842885036__prebuild___mf_0_iobroker_mf_1_json_mf_2_config__prebuild__-BsTz_EWE.js"],"sync":[]},"css":{"async":[],"sync":[]}}},{"id":"ConfigCustomAssistant:@mui/icons-material","name":"@mui/icons-material","version":"9.5.0","singleton":true,"requiredVersion":"*","assets":{"js":{"async":["assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__163539842885036__prebuild__react_mf_1_jsx_mf_2_runtime__prebuild__-M61rjtmp.js","assets/prod-ChPGnyiA.js","assets/iconLibraryData-B5fiyl1C.js","assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__163539842885036__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-o4EU_Ut5.js"],"sync":[]},"css":{"async":[],"sync":[]}}},{"id":"ConfigCustomAssistant:@mui/material","name":"@mui/material","version":"9.5.0","singleton":true,"requiredVersion":"*","assets":{"js":{"async":["assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__163539842885036__prebuild__react_mf_1_jsx_mf_2_runtime__prebuild__-M61rjtmp.js","assets/prod-ChPGnyiA.js","assets/iconLibraryData-B5fiyl1C.js","assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__163539842885036__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-o4EU_Ut5.js"],"sync":[]},"css":{"async":[],"sync":[]}}},{"id":"ConfigCustomAssistant:react","name":"react","version":"19.3.1","singleton":true,"requiredVersion":"*","assets":{"js":{"async":["assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__163539842885036__loadShare___mf_0_emotion_mf_1_react__loadShare__.js-BkH7fzDw.js"],"sync":[]},"css":{"async":[],"sync":[]}}},{"id":"ConfigCustomAssistant:react-dom","name":"react-dom","version":"19.3.1","singleton":true,"requiredVersion":"*","assets":{"js":{"async":["assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__163539842885036__prebuild__react_mf_1_jsx_mf_2_runtime__prebuild__-M61rjtmp.js","assets/prod-ChPGnyiA.js","assets/iconLibraryData-B5fiyl1C.js","assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__163539842885036__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-o4EU_Ut5.js"],"sync":[]},"css":{"async":[],"sync":[]}}},{"id":"ConfigCustomAssistant:react/jsx-runtime","name":"react/jsx-runtime","version":"19.3.1","singleton":true,"requiredVersion":"*","assets":{"js":{"async":["assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__163539842885036__prebuild__react_mf_1_jsx_mf_2_runtime__prebuild__-M61rjtmp.js"],"sync":[]},"css":{"async":[],"sync":[]}}}],"remotes":[],"exposes":[{"id":"ConfigCustomAssistant:Components","name":"Components","assets":{"js":{"async":["assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__163539842885036__loadShare__shared--be2hWbV.js"],"sync":["assets/dist-B3E7IYuQ.js","assets/vite-preload-helper-BbbETgeG.js","assets/helpers-DE61bb74.js","assets/utils-Bi7ATSfV.js","assets/_virtual_mf-localSharedImportMap___mfe_internal__ConfigCustomAssistant__mf_owner__1-B4YbqhBb.js","assets/Components-x2Dfv8qE.js","assets/rolldown-runtime-COiEfhsA.js"]},"css":{"async":[],"sync":[]}},"path":"./Components"}]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"id":"ConfigCustomAssistant","name":"ConfigCustomAssistant","metaData":{"name":"ConfigCustomAssistant","type":"app","buildInfo":{"buildVersion":"1.0.0","buildName":"ConfigCustomAssistant"},"remoteEntry":{"name":"customComponents.js","path":"","type":"module"},"types":{"path":"","name":""},"globalName":"ConfigCustomAssistant","pluginVersion":"1.23.5","publicPath":"auto"},"shared":[{"id":"ConfigCustomAssistant:@emotion/react","name":"@emotion/react","version":"11.14.0","singleton":true,"requiredVersion":"*","assets":{"js":{"async":["assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__201375093093590__loadShare___mf_0_emotion_mf_1_react__loadShare__.js-BkH7fzDw.js"],"sync":[]},"css":{"async":[],"sync":[]}}},{"id":"ConfigCustomAssistant:@emotion/styled","name":"@emotion/styled","version":"11.14.1","singleton":true,"requiredVersion":"*","assets":{"js":{"async":["assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__201375093093590__loadShare___mf_0_emotion_mf_1_styled__loadShare__.js-CwqmfMvn.js"],"sync":[]},"css":{"async":[],"sync":[]}}},{"id":"ConfigCustomAssistant:@iobroker/gui-components","name":"@iobroker/gui-components","version":"10.3.13","singleton":true,"requiredVersion":"*","assets":{"js":{"async":["assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__201375093093590__prebuild__react_mf_1_jsx_mf_2_runtime__prebuild__-M61rjtmp.js","assets/prod-ChPGnyiA.js","assets/iconLibraryData-B5fiyl1C.js","assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__201375093093590__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-BMuLYe6f.js"],"sync":[]},"css":{"async":[],"sync":[]}}},{"id":"ConfigCustomAssistant:@iobroker/json-config","name":"@iobroker/json-config","version":"10.1.7","singleton":true,"requiredVersion":"*","assets":{"js":{"async":["assets/lib-CchzgTUs.js","assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__201375093093590__prebuild__react_mf_1_jsx_mf_2_runtime__prebuild__-M61rjtmp.js","assets/prod-ChPGnyiA.js","assets/iconLibraryData-B5fiyl1C.js","assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__201375093093590__prebuild___mf_0_iobroker_mf_1_json_mf_2_config__prebuild__-TM4l0OYm.js"],"sync":[]},"css":{"async":[],"sync":[]}}},{"id":"ConfigCustomAssistant:@mui/icons-material","name":"@mui/icons-material","version":"9.5.0","singleton":true,"requiredVersion":"*","assets":{"js":{"async":["assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__201375093093590__prebuild__react_mf_1_jsx_mf_2_runtime__prebuild__-M61rjtmp.js","assets/prod-ChPGnyiA.js","assets/iconLibraryData-B5fiyl1C.js","assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__201375093093590__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-BMuLYe6f.js"],"sync":[]},"css":{"async":[],"sync":[]}}},{"id":"ConfigCustomAssistant:@mui/material","name":"@mui/material","version":"9.5.0","singleton":true,"requiredVersion":"*","assets":{"js":{"async":["assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__201375093093590__prebuild__react_mf_1_jsx_mf_2_runtime__prebuild__-M61rjtmp.js","assets/prod-ChPGnyiA.js","assets/iconLibraryData-B5fiyl1C.js","assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__201375093093590__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-BMuLYe6f.js"],"sync":[]},"css":{"async":[],"sync":[]}}},{"id":"ConfigCustomAssistant:react","name":"react","version":"19.3.1","singleton":true,"requiredVersion":"*","assets":{"js":{"async":["assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__201375093093590__loadShare___mf_0_emotion_mf_1_react__loadShare__.js-BkH7fzDw.js"],"sync":[]},"css":{"async":[],"sync":[]}}},{"id":"ConfigCustomAssistant:react-dom","name":"react-dom","version":"19.3.1","singleton":true,"requiredVersion":"*","assets":{"js":{"async":["assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__201375093093590__prebuild__react_mf_1_jsx_mf_2_runtime__prebuild__-M61rjtmp.js","assets/prod-ChPGnyiA.js","assets/iconLibraryData-B5fiyl1C.js","assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__201375093093590__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-BMuLYe6f.js"],"sync":[]},"css":{"async":[],"sync":[]}}},{"id":"ConfigCustomAssistant:react/jsx-runtime","name":"react/jsx-runtime","version":"19.3.1","singleton":true,"requiredVersion":"*","assets":{"js":{"async":["assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__201375093093590__prebuild__react_mf_1_jsx_mf_2_runtime__prebuild__-M61rjtmp.js"],"sync":[]},"css":{"async":[],"sync":[]}}}],"remotes":[],"exposes":[{"id":"ConfigCustomAssistant:Components","name":"Components","assets":{"js":{"async":["assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__201375093093590__loadShare__shared-BxjZmnpc.js"],"sync":["assets/dist-B3E7IYuQ.js","assets/vite-preload-helper-BbbETgeG.js","assets/helpers-DE61bb74.js","assets/utils-Bi7ATSfV.js","assets/_virtual_mf-localSharedImportMap___mfe_internal__ConfigCustomAssistant__mf_owner__1-A4gakomR.js","assets/Components-C6qcpaRC.js","assets/rolldown-runtime-COiEfhsA.js"]},"css":{"async":[],"sync":[]}},"path":"./Components"}],"buildOutput":[{"fileName":"assets/Components-C6qcpaRC.js","type":"chunk","isEntry":true,"size":110975},{"fileName":"assets/hostInit-4roC4hEj.js","type":"chunk","isEntry":false,"size":6151},{"fileName":"assets/index-P2Xu9kJm.js","type":"chunk","isEntry":true,"size":670},{"fileName":"assets/pendingShares-DLlv8yFY.js","type":"chunk","isEntry":false,"size":3329},{"fileName":"customComponents.js","type":"chunk","isEntry":false,"size":23536},{"fileName":"assets/_virtual_mf-localSharedImportMap___mfe_internal__ConfigCustomAssistant__mf_owner__1-A4gakomR.js","type":"chunk","isEntry":false,"size":8748},{"fileName":"assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__201375093093590__loadShare___mf_0_emotion_mf_1_react__loadShare__.js-BkH7fzDw.js","type":"chunk","isEntry":false,"size":38784},{"fileName":"assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__201375093093590__loadShare___mf_0_emotion_mf_1_styled__loadShare__.js-CwqmfMvn.js","type":"chunk","isEntry":false,"size":9707},{"fileName":"assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__201375093093590__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-BMuLYe6f.js","type":"chunk","isEntry":false,"size":7145456},{"fileName":"assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__201375093093590__loadShare__shared-BxjZmnpc.js","type":"chunk","isEntry":false,"size":2374},{"fileName":"assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__201375093093590__prebuild___mf_0_iobroker_mf_1_json_mf_2_config__prebuild__-TM4l0OYm.js","type":"chunk","isEntry":false,"size":732629},{"fileName":"assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__201375093093590__prebuild__react_mf_1_jsx_mf_2_runtime__prebuild__-M61rjtmp.js","type":"chunk","isEntry":false,"size":526},{"fileName":"assets/dist-B3E7IYuQ.js","type":"chunk","isEntry":false,"size":457},{"fileName":"assets/helpers-DE61bb74.js","type":"chunk","isEntry":false,"size":88},{"fileName":"assets/iconLibraryData-B5fiyl1C.js","type":"chunk","isEntry":false,"size":250966},{"fileName":"assets/lib-CchzgTUs.js","type":"chunk","isEntry":false,"size":23451},{"fileName":"assets/prod-ChPGnyiA.js","type":"chunk","isEntry":false,"size":92192},{"fileName":"assets/rolldown-runtime-COiEfhsA.js","type":"chunk","isEntry":false,"size":1116},{"fileName":"assets/utils-Bi7ATSfV.js","type":"chunk","isEntry":false,"size":66578},{"fileName":"assets/vite-preload-helper-BbbETgeG.js","type":"chunk","isEntry":false,"size":1566},{"fileName":"index.html","type":"asset","isEntry":false,"size":1781},{"fileName":"assets/mf-entry-bootstrap-0-4806bbe4.js","type":"asset","isEntry":false,"size":2162}],"assetAnalysis":{"./src/Components.tsx":{"js":{"sync":["assets/dist-B3E7IYuQ.js","assets/vite-preload-helper-BbbETgeG.js","assets/helpers-DE61bb74.js","assets/utils-Bi7ATSfV.js","assets/_virtual_mf-localSharedImportMap___mfe_internal__ConfigCustomAssistant__mf_owner__1-A4gakomR.js","assets/Components-C6qcpaRC.js","assets/rolldown-runtime-COiEfhsA.js"],"async":["assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__201375093093590__loadShare__shared-BxjZmnpc.js"]},"css":{"sync":[],"async":[]}},"react":{"js":{"sync":[],"async":["assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__201375093093590__loadShare___mf_0_emotion_mf_1_react__loadShare__.js-BkH7fzDw.js"]},"css":{"sync":[],"async":[]}},"@emotion/react":{"js":{"sync":[],"async":["assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__201375093093590__loadShare___mf_0_emotion_mf_1_react__loadShare__.js-BkH7fzDw.js"]},"css":{"sync":[],"async":[]}},"@emotion/styled":{"js":{"sync":[],"async":["assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__201375093093590__loadShare___mf_0_emotion_mf_1_styled__loadShare__.js-CwqmfMvn.js"]},"css":{"sync":[],"async":[]}},"react-dom":{"js":{"sync":[],"async":["assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__201375093093590__prebuild__react_mf_1_jsx_mf_2_runtime__prebuild__-M61rjtmp.js","assets/prod-ChPGnyiA.js","assets/iconLibraryData-B5fiyl1C.js","assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__201375093093590__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-BMuLYe6f.js"]},"css":{"sync":[],"async":[]}},"@mui/material":{"js":{"sync":[],"async":["assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__201375093093590__prebuild__react_mf_1_jsx_mf_2_runtime__prebuild__-M61rjtmp.js","assets/prod-ChPGnyiA.js","assets/iconLibraryData-B5fiyl1C.js","assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__201375093093590__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-BMuLYe6f.js"]},"css":{"sync":[],"async":[]}},"@mui/icons-material":{"js":{"sync":[],"async":["assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__201375093093590__prebuild__react_mf_1_jsx_mf_2_runtime__prebuild__-M61rjtmp.js","assets/prod-ChPGnyiA.js","assets/iconLibraryData-B5fiyl1C.js","assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__201375093093590__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-BMuLYe6f.js"]},"css":{"sync":[],"async":[]}},"@iobroker/gui-components":{"js":{"sync":[],"async":["assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__201375093093590__prebuild__react_mf_1_jsx_mf_2_runtime__prebuild__-M61rjtmp.js","assets/prod-ChPGnyiA.js","assets/iconLibraryData-B5fiyl1C.js","assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__201375093093590__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-BMuLYe6f.js"]},"css":{"sync":[],"async":[]}},"@iobroker/json-config":{"js":{"sync":[],"async":["assets/lib-CchzgTUs.js","assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__201375093093590__prebuild__react_mf_1_jsx_mf_2_runtime__prebuild__-M61rjtmp.js","assets/prod-ChPGnyiA.js","assets/iconLibraryData-B5fiyl1C.js","assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__201375093093590__prebuild___mf_0_iobroker_mf_1_json_mf_2_config__prebuild__-TM4l0OYm.js"]},"css":{"sync":[],"async":[]}},"react/jsx-runtime":{"js":{"sync":[],"async":["assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__201375093093590__prebuild__react_mf_1_jsx_mf_2_runtime__prebuild__-M61rjtmp.js"]},"css":{"sync":[],"async":[]}}}}
|
|
1
|
+
{"id":"ConfigCustomAssistant","name":"ConfigCustomAssistant","metaData":{"name":"ConfigCustomAssistant","type":"app","buildInfo":{"buildVersion":"1.0.0","buildName":"ConfigCustomAssistant"},"remoteEntry":{"name":"customComponents.js","path":"","type":"module"},"types":{"path":"","name":""},"globalName":"ConfigCustomAssistant","pluginVersion":"1.23.5","publicPath":"auto"},"shared":[{"id":"ConfigCustomAssistant:@emotion/react","name":"@emotion/react","version":"11.14.0","singleton":true,"requiredVersion":"*","assets":{"js":{"async":["assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__163539842885036__loadShare___mf_0_emotion_mf_1_react__loadShare__.js-BkH7fzDw.js"],"sync":[]},"css":{"async":[],"sync":[]}}},{"id":"ConfigCustomAssistant:@emotion/styled","name":"@emotion/styled","version":"11.14.1","singleton":true,"requiredVersion":"*","assets":{"js":{"async":["assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__163539842885036__loadShare___mf_0_emotion_mf_1_styled__loadShare__.js-IaosaymG.js"],"sync":[]},"css":{"async":[],"sync":[]}}},{"id":"ConfigCustomAssistant:@iobroker/gui-components","name":"@iobroker/gui-components","version":"10.3.14","singleton":true,"requiredVersion":"*","assets":{"js":{"async":["assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__163539842885036__prebuild__react_mf_1_jsx_mf_2_runtime__prebuild__-M61rjtmp.js","assets/prod-ChPGnyiA.js","assets/iconLibraryData-B5fiyl1C.js","assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__163539842885036__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-o4EU_Ut5.js"],"sync":[]},"css":{"async":[],"sync":[]}}},{"id":"ConfigCustomAssistant:@iobroker/json-config","name":"@iobroker/json-config","version":"10.1.8","singleton":true,"requiredVersion":"*","assets":{"js":{"async":["assets/lib-DBbNtolG.js","assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__163539842885036__prebuild__react_mf_1_jsx_mf_2_runtime__prebuild__-M61rjtmp.js","assets/prod-ChPGnyiA.js","assets/iconLibraryData-B5fiyl1C.js","assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__163539842885036__prebuild___mf_0_iobroker_mf_1_json_mf_2_config__prebuild__-BsTz_EWE.js"],"sync":[]},"css":{"async":[],"sync":[]}}},{"id":"ConfigCustomAssistant:@mui/icons-material","name":"@mui/icons-material","version":"9.5.0","singleton":true,"requiredVersion":"*","assets":{"js":{"async":["assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__163539842885036__prebuild__react_mf_1_jsx_mf_2_runtime__prebuild__-M61rjtmp.js","assets/prod-ChPGnyiA.js","assets/iconLibraryData-B5fiyl1C.js","assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__163539842885036__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-o4EU_Ut5.js"],"sync":[]},"css":{"async":[],"sync":[]}}},{"id":"ConfigCustomAssistant:@mui/material","name":"@mui/material","version":"9.5.0","singleton":true,"requiredVersion":"*","assets":{"js":{"async":["assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__163539842885036__prebuild__react_mf_1_jsx_mf_2_runtime__prebuild__-M61rjtmp.js","assets/prod-ChPGnyiA.js","assets/iconLibraryData-B5fiyl1C.js","assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__163539842885036__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-o4EU_Ut5.js"],"sync":[]},"css":{"async":[],"sync":[]}}},{"id":"ConfigCustomAssistant:react","name":"react","version":"19.3.1","singleton":true,"requiredVersion":"*","assets":{"js":{"async":["assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__163539842885036__loadShare___mf_0_emotion_mf_1_react__loadShare__.js-BkH7fzDw.js"],"sync":[]},"css":{"async":[],"sync":[]}}},{"id":"ConfigCustomAssistant:react-dom","name":"react-dom","version":"19.3.1","singleton":true,"requiredVersion":"*","assets":{"js":{"async":["assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__163539842885036__prebuild__react_mf_1_jsx_mf_2_runtime__prebuild__-M61rjtmp.js","assets/prod-ChPGnyiA.js","assets/iconLibraryData-B5fiyl1C.js","assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__163539842885036__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-o4EU_Ut5.js"],"sync":[]},"css":{"async":[],"sync":[]}}},{"id":"ConfigCustomAssistant:react/jsx-runtime","name":"react/jsx-runtime","version":"19.3.1","singleton":true,"requiredVersion":"*","assets":{"js":{"async":["assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__163539842885036__prebuild__react_mf_1_jsx_mf_2_runtime__prebuild__-M61rjtmp.js"],"sync":[]},"css":{"async":[],"sync":[]}}}],"remotes":[],"exposes":[{"id":"ConfigCustomAssistant:Components","name":"Components","assets":{"js":{"async":["assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__163539842885036__loadShare__shared--be2hWbV.js"],"sync":["assets/dist-B3E7IYuQ.js","assets/vite-preload-helper-BbbETgeG.js","assets/helpers-DE61bb74.js","assets/utils-Bi7ATSfV.js","assets/_virtual_mf-localSharedImportMap___mfe_internal__ConfigCustomAssistant__mf_owner__1-B4YbqhBb.js","assets/Components-x2Dfv8qE.js","assets/rolldown-runtime-COiEfhsA.js"]},"css":{"async":[],"sync":[]}},"path":"./Components"}],"buildOutput":[{"fileName":"assets/Components-x2Dfv8qE.js","type":"chunk","isEntry":true,"size":184984},{"fileName":"assets/hostInit-Blh7a-Qe.js","type":"chunk","isEntry":false,"size":6151},{"fileName":"assets/index-P2Xu9kJm.js","type":"chunk","isEntry":true,"size":670},{"fileName":"assets/pendingShares-U0D1MYK4.js","type":"chunk","isEntry":false,"size":3329},{"fileName":"customComponents.js","type":"chunk","isEntry":false,"size":23536},{"fileName":"assets/_virtual_mf-localSharedImportMap___mfe_internal__ConfigCustomAssistant__mf_owner__1-B4YbqhBb.js","type":"chunk","isEntry":false,"size":8748},{"fileName":"assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__163539842885036__loadShare___mf_0_emotion_mf_1_react__loadShare__.js-BkH7fzDw.js","type":"chunk","isEntry":false,"size":38784},{"fileName":"assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__163539842885036__loadShare___mf_0_emotion_mf_1_styled__loadShare__.js-IaosaymG.js","type":"chunk","isEntry":false,"size":9707},{"fileName":"assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__163539842885036__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-o4EU_Ut5.js","type":"chunk","isEntry":false,"size":7146915},{"fileName":"assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__163539842885036__loadShare__shared--be2hWbV.js","type":"chunk","isEntry":false,"size":2374},{"fileName":"assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__163539842885036__prebuild___mf_0_iobroker_mf_1_json_mf_2_config__prebuild__-BsTz_EWE.js","type":"chunk","isEntry":false,"size":732746},{"fileName":"assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__163539842885036__prebuild__react_mf_1_jsx_mf_2_runtime__prebuild__-M61rjtmp.js","type":"chunk","isEntry":false,"size":526},{"fileName":"assets/dist-B3E7IYuQ.js","type":"chunk","isEntry":false,"size":457},{"fileName":"assets/helpers-DE61bb74.js","type":"chunk","isEntry":false,"size":88},{"fileName":"assets/iconLibraryData-B5fiyl1C.js","type":"chunk","isEntry":false,"size":250966},{"fileName":"assets/lib-DBbNtolG.js","type":"chunk","isEntry":false,"size":23451},{"fileName":"assets/prod-ChPGnyiA.js","type":"chunk","isEntry":false,"size":92192},{"fileName":"assets/rolldown-runtime-COiEfhsA.js","type":"chunk","isEntry":false,"size":1116},{"fileName":"assets/utils-Bi7ATSfV.js","type":"chunk","isEntry":false,"size":66578},{"fileName":"assets/vite-preload-helper-BbbETgeG.js","type":"chunk","isEntry":false,"size":1566},{"fileName":"index.html","type":"asset","isEntry":false,"size":1781},{"fileName":"assets/mf-entry-bootstrap-0-7abd30d3.js","type":"asset","isEntry":false,"size":2162}],"assetAnalysis":{"./src/Components.tsx":{"js":{"sync":["assets/dist-B3E7IYuQ.js","assets/vite-preload-helper-BbbETgeG.js","assets/helpers-DE61bb74.js","assets/utils-Bi7ATSfV.js","assets/_virtual_mf-localSharedImportMap___mfe_internal__ConfigCustomAssistant__mf_owner__1-B4YbqhBb.js","assets/Components-x2Dfv8qE.js","assets/rolldown-runtime-COiEfhsA.js"],"async":["assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__163539842885036__loadShare__shared--be2hWbV.js"]},"css":{"sync":[],"async":[]}},"react":{"js":{"sync":[],"async":["assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__163539842885036__loadShare___mf_0_emotion_mf_1_react__loadShare__.js-BkH7fzDw.js"]},"css":{"sync":[],"async":[]}},"@emotion/react":{"js":{"sync":[],"async":["assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__163539842885036__loadShare___mf_0_emotion_mf_1_react__loadShare__.js-BkH7fzDw.js"]},"css":{"sync":[],"async":[]}},"@emotion/styled":{"js":{"sync":[],"async":["assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__163539842885036__loadShare___mf_0_emotion_mf_1_styled__loadShare__.js-IaosaymG.js"]},"css":{"sync":[],"async":[]}},"react-dom":{"js":{"sync":[],"async":["assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__163539842885036__prebuild__react_mf_1_jsx_mf_2_runtime__prebuild__-M61rjtmp.js","assets/prod-ChPGnyiA.js","assets/iconLibraryData-B5fiyl1C.js","assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__163539842885036__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-o4EU_Ut5.js"]},"css":{"sync":[],"async":[]}},"@mui/material":{"js":{"sync":[],"async":["assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__163539842885036__prebuild__react_mf_1_jsx_mf_2_runtime__prebuild__-M61rjtmp.js","assets/prod-ChPGnyiA.js","assets/iconLibraryData-B5fiyl1C.js","assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__163539842885036__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-o4EU_Ut5.js"]},"css":{"sync":[],"async":[]}},"@mui/icons-material":{"js":{"sync":[],"async":["assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__163539842885036__prebuild__react_mf_1_jsx_mf_2_runtime__prebuild__-M61rjtmp.js","assets/prod-ChPGnyiA.js","assets/iconLibraryData-B5fiyl1C.js","assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__163539842885036__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-o4EU_Ut5.js"]},"css":{"sync":[],"async":[]}},"@iobroker/gui-components":{"js":{"sync":[],"async":["assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__163539842885036__prebuild__react_mf_1_jsx_mf_2_runtime__prebuild__-M61rjtmp.js","assets/prod-ChPGnyiA.js","assets/iconLibraryData-B5fiyl1C.js","assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__163539842885036__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-o4EU_Ut5.js"]},"css":{"sync":[],"async":[]}},"@iobroker/json-config":{"js":{"sync":[],"async":["assets/lib-DBbNtolG.js","assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__163539842885036__prebuild__react_mf_1_jsx_mf_2_runtime__prebuild__-M61rjtmp.js","assets/prod-ChPGnyiA.js","assets/iconLibraryData-B5fiyl1C.js","assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__163539842885036__prebuild___mf_0_iobroker_mf_1_json_mf_2_config__prebuild__-BsTz_EWE.js"]},"css":{"sync":[],"async":[]}},"react/jsx-runtime":{"js":{"sync":[],"async":["assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__163539842885036__prebuild__react_mf_1_jsx_mf_2_runtime__prebuild__-M61rjtmp.js"]},"css":{"sync":[],"async":[]}}}}
|
package/admin/i18n/de.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"A fired timer/alarm keeps ringing (looping the sound) for up to this long, or until you say 'stop'/'halt'/'aufhören'/'cancel' (or write the stopRinging state). 0 = play the sound once.": "Ein abgelaufener Timer/Wecker klingelt (Sound in Schleife) bis zu so lange, oder bis du 'Stop'/'Halt'/'Aufhören'/'Cancel' sagst (oder den State stopRinging schreibst). 0 = Sound einmal abspielen.",
|
|
3
3
|
"A phrase that runs a list of actions: \"Gute Nacht\" switches off five things and answers once. Phrases: several separated by commas (matched anywhere in the sentence, upper/lower case and umlauts do not matter). Actions as JSON, same shape as a trigger: [{\"setState\":{\"id\":\"hm-rpc.0.ABC.1.STATE\",\"value\":false}},{\"say\":\"Schlaf gut\",\"room\":\"Schlafzimmer\"}]. Reply: what the assistant answers (leave empty to stay silent). Matched before the offline rule engine and before the LLM, so a routine is never reinterpreted.": "Eine Phrase, die eine Liste von Aktionen ausführt: \"Gute Nacht\" schaltet fünf Dinge aus und antwortet einmal. Phrasen: mehrere mit Komma getrennt (werden irgendwo im Satz erkannt, Groß-/Kleinschreibung und Umlaute sind egal). Aktionen als JSON, gleiche Form wie bei einem Trigger: [{\"setState\":{\"id\":\"hm-rpc.0.ABC.1.STATE\",\"value\":false}},{\"say\":\"Schlaf gut\",\"room\":\"Schlafzimmer\"}]. Antwort: was der Assistent sagt (leer lassen = nichts sagen). Wird vor der Offline-Regel-Engine und vor dem LLM geprüft, eine Routine wird also nie umgedeutet.",
|
|
4
|
-
"A
|
|
4
|
+
"A switch command that worked (on, off, set to a value) is confirmed by a short tone on the satellite instead of a spoken sentence, whether the offline rules or the AI carried it out. Questions, errors and the text channels are unaffected.": "Ein Schaltbefehl, der geklappt hat (an, aus, auf einen Wert), wird statt mit einem gesprochenen Satz mit einem kurzen Ton am Satelliten bestätigt, egal ob die Offline-Regeln oder die KI ihn ausgeführt haben. Fragen, Fehler und die Textkanäle bleiben unverändert.",
|
|
5
5
|
"A trigger watches states or the clock and then speaks, writes a state, or asks you a question and acts on your answer. Switch single triggers off at runtime with triggers.items.<id>.enabled, test one with its fire button, and all of them with triggers.enabled.": "Ein Trigger beobachtet States oder die Uhr und sagt dann etwas, schreibt einen State oder stellt dir eine Frage und handelt nach deiner Antwort. Einzelne Trigger lassen sich zur Laufzeit über triggers.items.<id>.enabled abschalten, über den fire-Knopf testen und alle gemeinsam über triggers.enabled.",
|
|
6
6
|
"API key": "API-Schlüssel",
|
|
7
7
|
"API password (usually empty)": "API-Passwort (meist leer)",
|
|
@@ -128,7 +128,7 @@
|
|
|
128
128
|
"Room": "Raum",
|
|
129
129
|
"Routines": "Routinen",
|
|
130
130
|
"Run the UDP voice server (ESP / Hannah satellites)": "UDP-Sprach-Server betreiben (ESP-/Hannah-Satelliten)",
|
|
131
|
-
"Runs a small local model (node-llama-cpp) for general questions
|
|
131
|
+
"Runs a small local model (node-llama-cpp) for general questions. With a cloud provider it only answers when the cloud fails, unless \"Ask the local model first\" is on. Install it with the button below.": "Führt ein kleines lokales Modell (node-llama-cpp) für allgemeine Fragen aus. Mit einem Cloud-Anbieter antwortet es nur, wenn die Cloud ausfällt, außer „Zuerst das lokale Modell fragen“ ist aktiv. Installation über die Schaltfläche unten.",
|
|
132
132
|
"Said or typed": "Gesagt oder getippt",
|
|
133
133
|
"Satellites": "Satelliten",
|
|
134
134
|
"Satellites, rooms or devices (comma separated)": "Satelliten, Räume oder Geräte (mit Komma getrennt)",
|
|
@@ -160,7 +160,11 @@
|
|
|
160
160
|
"Two default sounds (timer.wav, alarm.wav) are preinstalled — pick one below or upload your own mp3/wav. The selected sound plays before the spoken announcement. Needs ffmpeg on the host and at least one satellite.": "Zwei Standard-Sounds (timer.wav, alarm.wav) sind vorinstalliert — unten auswählen oder eigene mp3/wav hochladen. Der gewählte Sound wird vor der gesprochenen Ansage abgespielt. Benötigt ffmpeg auf dem Host und mindestens einen Satelliten.",
|
|
161
161
|
"UDP port": "UDP-Port",
|
|
162
162
|
"Upload mp3/wav jingles below; the selected sound plays before the spoken announcement. Needs ffmpeg installed on the host and at least one satellite.": "Lade unten mp3/wav-Jingles hoch; der gewählte Sound wird vor der gesprochenen Ansage abgespielt. Benötigt ffmpeg auf dem Host und mindestens einen Satelliten.",
|
|
163
|
-
"Use a local LLM
|
|
163
|
+
"Use a local LLM (installed on demand)": "Lokales LLM verwenden (bei Bedarf installiert)",
|
|
164
|
+
"Ask the local model first": "Zuerst das lokale Modell fragen",
|
|
165
|
+
"Every question the rules do not understand goes to the local model before the cloud. Saves cloud calls, but on a Raspberry Pi it adds 10–25 seconds to such questions.": "Jede Frage, die die Regeln nicht verstehen, geht vor der Cloud an das lokale Modell. Spart Cloud-Aufrufe, kostet auf einem Raspberry Pi aber 10–25 Sekunden pro solcher Frage.",
|
|
166
|
+
"Local model timeout (s)": "Zeitlimit lokales Modell (s)",
|
|
167
|
+
"After this time the local model is stopped and the question goes on to the cloud.": "Nach dieser Zeit wird das lokale Modell abgebrochen und die Frage geht an die Cloud weiter.",
|
|
164
168
|
"Used when the provider above fails (outage, expired key, empty quota). A local engine keeps voice working without the internet.": "Wird genutzt, wenn der Anbieter oben ausfällt (Störung, abgelaufener Key, leeres Guthaben). Eine lokale Engine hält die Sprachsteuerung ohne Internet am Leben.",
|
|
165
169
|
"Used when the provider above fails. Piper keeps the assistant speaking without the internet.": "Wird genutzt, wenn der Anbieter oben ausfällt. Piper lässt den Assistenten ohne Internet weitersprechen.",
|
|
166
170
|
"Verify device feedback": "Geräte-Rückmeldung prüfen",
|
|
@@ -190,5 +194,28 @@
|
|
|
190
194
|
"TV power (optional)": "Fernseher einschalten (optional)",
|
|
191
195
|
"Start delay (s)": "Startverzögerung (s)",
|
|
192
196
|
"Name": "Name",
|
|
193
|
-
"TVs and devices of the youtube-remote adapter the assistant may play on, e.g. \"play the channel Sailing OceanAir\". The first row is the default when no player is named; a request from a satellite in the room of a row goes to that row. Player: the youtube-remote instance - it finds its paired TV itself, also after the TV was paired again; with several TVs in one instance pick one of them. Power: optional state that switches the TV on (e.g. samsungtv.0.<tv>.control.power) - if it is off, the TV is switched on first and the video starts after the start delay. A power button (toggle) is never pressed, because it would switch a running TV off. Needs \"Allow writing states\".": "Fernseher und Geräte des youtube-remote-Adapters, auf denen der Assistent abspielen darf, z. B. „spiele den Kanal Sailing OceanAir ab“. Die erste Zeile ist der Standard, wenn kein Player genannt wird; eine Anfrage von einem Satelliten im Raum einer Zeile geht an diese Zeile. Player: die youtube-remote-Instanz - sie findet ihren gekoppelten Fernseher selbst, auch nach erneutem Koppeln; bei mehreren Fernsehern in einer Instanz einen davon wählen. Einschalten: optionaler State, der den Fernseher einschaltet (z. B. samsungtv.0.<tv>.control.power) - ist er aus, wird der Fernseher zuerst eingeschaltet und das Video startet nach der Startverzögerung. Eine Power-Taste (Umschalter) wird nie gedrückt, weil sie einen laufenden Fernseher ausschalten würde. Benötigt „Schreiben von States erlauben“."
|
|
197
|
+
"TVs and devices of the youtube-remote adapter the assistant may play on, e.g. \"play the channel Sailing OceanAir\". The first row is the default when no player is named; a request from a satellite in the room of a row goes to that row. Player: the youtube-remote instance - it finds its paired TV itself, also after the TV was paired again; with several TVs in one instance pick one of them. Power: optional state that switches the TV on (e.g. samsungtv.0.<tv>.control.power) - if it is off, the TV is switched on first and the video starts after the start delay. A power button (toggle) is never pressed, because it would switch a running TV off. Needs \"Allow writing states\".": "Fernseher und Geräte des youtube-remote-Adapters, auf denen der Assistent abspielen darf, z. B. „spiele den Kanal Sailing OceanAir ab“. Die erste Zeile ist der Standard, wenn kein Player genannt wird; eine Anfrage von einem Satelliten im Raum einer Zeile geht an diese Zeile. Player: die youtube-remote-Instanz - sie findet ihren gekoppelten Fernseher selbst, auch nach erneutem Koppeln; bei mehreren Fernsehern in einer Instanz einen davon wählen. Einschalten: optionaler State, der den Fernseher einschaltet (z. B. samsungtv.0.<tv>.control.power) - ist er aus, wird der Fernseher zuerst eingeschaltet und das Video startet nach der Startverzögerung. Eine Power-Taste (Umschalter) wird nie gedrückt, weil sie einen laufenden Fernseher ausschalten würde. Benötigt „Schreiben von States erlauben“.",
|
|
198
|
+
"Adapter pi-agent": "Adapter pi-agent",
|
|
199
|
+
"pi-agent instance": "pi-agent-Instanz",
|
|
200
|
+
"pi-agent timeout (s)": "pi-agent-Zeitlimit (s)",
|
|
201
|
+
"Everything the local tiers cannot answer goes to the adapter pi-agent: its model and key (also the system-wide AI settings of admin), its tools and its write permissions. Every request source gets a conversation of its own there. The tools of this adapter (timers, memory, announcements, YouTube) are not available to it; the rule-based commands still handle timers and alarms.": "Alles, was die lokalen Stufen nicht beantworten können, geht an den Adapter pi-agent: sein Modell und Schlüssel (auch die systemweiten KI-Einstellungen von Admin), seine Tools und seine Schreibrechte. Jede Anfragequelle bekommt dort eine eigene Unterhaltung. Die Tools dieses Adapters (Timer, Gedächtnis, Durchsagen, YouTube) stehen dort nicht zur Verfügung; Timer und Wecker erledigen weiterhin die regelbasierten Befehle.",
|
|
202
|
+
"System-wide AI settings (admin)": "Systemweite KI-Einstellungen (Admin)",
|
|
203
|
+
"OpenRouter": "OpenRouter",
|
|
204
|
+
"Provider, model and API key come from the system settings of admin (tab \"AI\"). A change there restarts this instance.": "Provider, Modell und API-Schlüssel kommen aus den Systemeinstellungen von Admin (Reiter „KI“). Eine Änderung dort startet diese Instanz neu.",
|
|
205
|
+
"Empty: the system-wide AI settings of admin are used": "Leer: die systemweiten KI-Einstellungen von Admin werden verwendet",
|
|
206
|
+
"OpenRouter key for speech (optional)": "OpenRouter-Schlüssel für Sprache (optional)",
|
|
207
|
+
"OpenRouter credential": "OpenRouter-Zugangsdaten",
|
|
208
|
+
"Empty: the key of the AI provider is used if that is OpenRouter (also from the system-wide AI settings).": "Leer: Der Schlüssel des KI-Anbieters wird verwendet, wenn das OpenRouter ist (auch aus den systemweiten KI-Einstellungen).",
|
|
209
|
+
"OpenRouter STT model (optional)": "OpenRouter-STT-Modell (optional)",
|
|
210
|
+
"Empty = openai/whisper-large-v3-turbo.": "Leer = openai/whisper-large-v3-turbo.",
|
|
211
|
+
"OpenRouter TTS model (optional)": "OpenRouter-TTS-Modell (optional)",
|
|
212
|
+
"Empty = elevenlabs/eleven-flash-v2.5.": "Leer = elevenlabs/eleven-flash-v2.5.",
|
|
213
|
+
"OpenRouter voice (optional)": "OpenRouter-Stimme (optional)",
|
|
214
|
+
"The voices depend on the model. Empty = the first voice of the model for the language.": "Die Stimmen hängen vom Modell ab. Leer = die erste Stimme des Modells für die Sprache.",
|
|
215
|
+
"Calendar for commands for later": "Kalender für spätere Befehle",
|
|
216
|
+
"A fullcalendar instance: \"turn off the light in 2 hours\" or \"blinds to 50 % at 10 pm\" becomes an event in this calendar, and the AI can plan, list and cancel events. Without it such commands go to the AI.": "Eine fullcalendar-Instanz: „Licht in 2 Stunden aus“ oder „Rollo um 22 Uhr auf 50 %“ wird ein Termin in diesem Kalender, und die KI kann Termine planen, auflisten und löschen. Ohne sie gehen solche Befehle an die KI.",
|
|
217
|
+
"Person": "Person",
|
|
218
|
+
"Guest": "Gast",
|
|
219
|
+
"Pet": "Haustier",
|
|
220
|
+
"Group": "Gruppe"
|
|
194
221
|
}
|
package/admin/i18n/en.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"A fired timer/alarm keeps ringing (looping the sound) for up to this long, or until you say 'stop'/'halt'/'aufhören'/'cancel' (or write the stopRinging state). 0 = play the sound once.": "A fired timer/alarm keeps ringing (looping the sound) for up to this long, or until you say 'stop'/'halt'/'aufhören'/'cancel' (or write the stopRinging state). 0 = play the sound once.",
|
|
3
3
|
"A phrase that runs a list of actions: \"Gute Nacht\" switches off five things and answers once. Phrases: several separated by commas (matched anywhere in the sentence, upper/lower case and umlauts do not matter). Actions as JSON, same shape as a trigger: [{\"setState\":{\"id\":\"hm-rpc.0.ABC.1.STATE\",\"value\":false}},{\"say\":\"Schlaf gut\",\"room\":\"Schlafzimmer\"}]. Reply: what the assistant answers (leave empty to stay silent). Matched before the offline rule engine and before the LLM, so a routine is never reinterpreted.": "A phrase that runs a list of actions: \"Gute Nacht\" switches off five things and answers once. Phrases: several separated by commas (matched anywhere in the sentence, upper/lower case and umlauts do not matter). Actions as JSON, same shape as a trigger: [{\"setState\":{\"id\":\"hm-rpc.0.ABC.1.STATE\",\"value\":false}},{\"say\":\"Schlaf gut\",\"room\":\"Schlafzimmer\"}]. Reply: what the assistant answers (leave empty to stay silent). Matched before the offline rule engine and before the LLM, so a routine is never reinterpreted.",
|
|
4
|
-
"A
|
|
4
|
+
"A switch command that worked (on, off, set to a value) is confirmed by a short tone on the satellite instead of a spoken sentence, whether the offline rules or the AI carried it out. Questions, errors and the text channels are unaffected.": "A switch command that worked (on, off, set to a value) is confirmed by a short tone on the satellite instead of a spoken sentence, whether the offline rules or the AI carried it out. Questions, errors and the text channels are unaffected.",
|
|
5
5
|
"A trigger watches states or the clock and then speaks, writes a state, or asks you a question and acts on your answer. Switch single triggers off at runtime with triggers.items.<id>.enabled, test one with its fire button, and all of them with triggers.enabled.": "A trigger watches states or the clock and then speaks, writes a state, or asks you a question and acts on your answer. Switch single triggers off at runtime with triggers.items.<id>.enabled, test one with its fire button, and all of them with triggers.enabled.",
|
|
6
6
|
"API key": "API key",
|
|
7
7
|
"API password (usually empty)": "API password (usually empty)",
|
|
@@ -128,7 +128,7 @@
|
|
|
128
128
|
"Room": "Room",
|
|
129
129
|
"Routines": "Routines",
|
|
130
130
|
"Run the UDP voice server (ESP / Hannah satellites)": "Run the UDP voice server (ESP / Hannah satellites)",
|
|
131
|
-
"Runs a small local model (node-llama-cpp) for general questions
|
|
131
|
+
"Runs a small local model (node-llama-cpp) for general questions. With a cloud provider it only answers when the cloud fails, unless \"Ask the local model first\" is on. Install it with the button below.": "Runs a small local model (node-llama-cpp) for general questions. With a cloud provider it only answers when the cloud fails, unless \"Ask the local model first\" is on. Install it with the button below.",
|
|
132
132
|
"Said or typed": "Said or typed",
|
|
133
133
|
"Satellites": "Satellites",
|
|
134
134
|
"Satellites, rooms or devices (comma separated)": "Satellites, rooms or devices (comma separated)",
|
|
@@ -160,7 +160,11 @@
|
|
|
160
160
|
"Two default sounds (timer.wav, alarm.wav) are preinstalled — pick one below or upload your own mp3/wav. The selected sound plays before the spoken announcement. Needs ffmpeg on the host and at least one satellite.": "Two default sounds (timer.wav, alarm.wav) are preinstalled — pick one below or upload your own mp3/wav. The selected sound plays before the spoken announcement. Needs ffmpeg on the host and at least one satellite.",
|
|
161
161
|
"UDP port": "UDP port",
|
|
162
162
|
"Upload mp3/wav jingles below; the selected sound plays before the spoken announcement. Needs ffmpeg installed on the host and at least one satellite.": "Upload mp3/wav jingles below; the selected sound plays before the spoken announcement. Needs ffmpeg installed on the host and at least one satellite.",
|
|
163
|
-
"Use a local LLM
|
|
163
|
+
"Use a local LLM (installed on demand)": "Use a local LLM (installed on demand)",
|
|
164
|
+
"Ask the local model first": "Ask the local model first",
|
|
165
|
+
"Every question the rules do not understand goes to the local model before the cloud. Saves cloud calls, but on a Raspberry Pi it adds 10–25 seconds to such questions.": "Every question the rules do not understand goes to the local model before the cloud. Saves cloud calls, but on a Raspberry Pi it adds 10–25 seconds to such questions.",
|
|
166
|
+
"Local model timeout (s)": "Local model timeout (s)",
|
|
167
|
+
"After this time the local model is stopped and the question goes on to the cloud.": "After this time the local model is stopped and the question goes on to the cloud.",
|
|
164
168
|
"Used when the provider above fails (outage, expired key, empty quota). A local engine keeps voice working without the internet.": "Used when the provider above fails (outage, expired key, empty quota). A local engine keeps voice working without the internet.",
|
|
165
169
|
"Used when the provider above fails. Piper keeps the assistant speaking without the internet.": "Used when the provider above fails. Piper keeps the assistant speaking without the internet.",
|
|
166
170
|
"Verify device feedback": "Verify device feedback",
|
|
@@ -190,5 +194,28 @@
|
|
|
190
194
|
"TV power (optional)": "TV power (optional)",
|
|
191
195
|
"Start delay (s)": "Start delay (s)",
|
|
192
196
|
"Name": "Name",
|
|
193
|
-
"TVs and devices of the youtube-remote adapter the assistant may play on, e.g. \"play the channel Sailing OceanAir\". The first row is the default when no player is named; a request from a satellite in the room of a row goes to that row. Player: the youtube-remote instance - it finds its paired TV itself, also after the TV was paired again; with several TVs in one instance pick one of them. Power: optional state that switches the TV on (e.g. samsungtv.0.<tv>.control.power) - if it is off, the TV is switched on first and the video starts after the start delay. A power button (toggle) is never pressed, because it would switch a running TV off. Needs \"Allow writing states\".": "TVs and devices of the youtube-remote adapter the assistant may play on, e.g. \"play the channel Sailing OceanAir\". The first row is the default when no player is named; a request from a satellite in the room of a row goes to that row. Player: the youtube-remote instance - it finds its paired TV itself, also after the TV was paired again; with several TVs in one instance pick one of them. Power: optional state that switches the TV on (e.g. samsungtv.0.<tv>.control.power) - if it is off, the TV is switched on first and the video starts after the start delay. A power button (toggle) is never pressed, because it would switch a running TV off. Needs \"Allow writing states\"."
|
|
197
|
+
"TVs and devices of the youtube-remote adapter the assistant may play on, e.g. \"play the channel Sailing OceanAir\". The first row is the default when no player is named; a request from a satellite in the room of a row goes to that row. Player: the youtube-remote instance - it finds its paired TV itself, also after the TV was paired again; with several TVs in one instance pick one of them. Power: optional state that switches the TV on (e.g. samsungtv.0.<tv>.control.power) - if it is off, the TV is switched on first and the video starts after the start delay. A power button (toggle) is never pressed, because it would switch a running TV off. Needs \"Allow writing states\".": "TVs and devices of the youtube-remote adapter the assistant may play on, e.g. \"play the channel Sailing OceanAir\". The first row is the default when no player is named; a request from a satellite in the room of a row goes to that row. Player: the youtube-remote instance - it finds its paired TV itself, also after the TV was paired again; with several TVs in one instance pick one of them. Power: optional state that switches the TV on (e.g. samsungtv.0.<tv>.control.power) - if it is off, the TV is switched on first and the video starts after the start delay. A power button (toggle) is never pressed, because it would switch a running TV off. Needs \"Allow writing states\".",
|
|
198
|
+
"Adapter pi-agent": "Adapter pi-agent",
|
|
199
|
+
"pi-agent instance": "pi-agent instance",
|
|
200
|
+
"pi-agent timeout (s)": "pi-agent timeout (s)",
|
|
201
|
+
"Everything the local tiers cannot answer goes to the adapter pi-agent: its model and key (also the system-wide AI settings of admin), its tools and its write permissions. Every request source gets a conversation of its own there. The tools of this adapter (timers, memory, announcements, YouTube) are not available to it; the rule-based commands still handle timers and alarms.": "Everything the local tiers cannot answer goes to the adapter pi-agent: its model and key (also the system-wide AI settings of admin), its tools and its write permissions. Every request source gets a conversation of its own there. The tools of this adapter (timers, memory, announcements, YouTube) are not available to it; the rule-based commands still handle timers and alarms.",
|
|
202
|
+
"System-wide AI settings (admin)": "System-wide AI settings (admin)",
|
|
203
|
+
"OpenRouter": "OpenRouter",
|
|
204
|
+
"Provider, model and API key come from the system settings of admin (tab \"AI\"). A change there restarts this instance.": "Provider, model and API key come from the system settings of admin (tab \"AI\"). A change there restarts this instance.",
|
|
205
|
+
"Empty: the system-wide AI settings of admin are used": "Empty: the system-wide AI settings of admin are used",
|
|
206
|
+
"OpenRouter key for speech (optional)": "OpenRouter key for speech (optional)",
|
|
207
|
+
"OpenRouter credential": "OpenRouter credential",
|
|
208
|
+
"Empty: the key of the AI provider is used if that is OpenRouter (also from the system-wide AI settings).": "Empty: the key of the AI provider is used if that is OpenRouter (also from the system-wide AI settings).",
|
|
209
|
+
"OpenRouter STT model (optional)": "OpenRouter STT model (optional)",
|
|
210
|
+
"Empty = openai/whisper-large-v3-turbo.": "Empty = openai/whisper-large-v3-turbo.",
|
|
211
|
+
"OpenRouter TTS model (optional)": "OpenRouter TTS model (optional)",
|
|
212
|
+
"Empty = elevenlabs/eleven-flash-v2.5.": "Empty = elevenlabs/eleven-flash-v2.5.",
|
|
213
|
+
"OpenRouter voice (optional)": "OpenRouter voice (optional)",
|
|
214
|
+
"The voices depend on the model. Empty = the first voice of the model for the language.": "The voices depend on the model. Empty = the first voice of the model for the language.",
|
|
215
|
+
"Calendar for commands for later": "Calendar for commands for later",
|
|
216
|
+
"A fullcalendar instance: \"turn off the light in 2 hours\" or \"blinds to 50 % at 10 pm\" becomes an event in this calendar, and the AI can plan, list and cancel events. Without it such commands go to the AI.": "A fullcalendar instance: \"turn off the light in 2 hours\" or \"blinds to 50 % at 10 pm\" becomes an event in this calendar, and the AI can plan, list and cancel events. Without it such commands go to the AI.",
|
|
217
|
+
"Person": "Person",
|
|
218
|
+
"Guest": "Guest",
|
|
219
|
+
"Pet": "Pet",
|
|
220
|
+
"Group": "Group"
|
|
194
221
|
}
|
package/admin/i18n/es.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"A fired timer/alarm keeps ringing (looping the sound) for up to this long, or until you say 'stop'/'halt'/'aufhören'/'cancel' (or write the stopRinging state). 0 = play the sound once.": "Un temporizador/alarma activado sigue sonando (repitiendo el sonido) durante este tiempo, o hasta que digas \"stop\"/\"halt\"/\"aufhören\"/\"cancel\" (o escribas el estado stopRing). 0 = reproducir el sonido una vez.",
|
|
3
3
|
"A phrase that runs a list of actions: \"Gute Nacht\" switches off five things and answers once. Phrases: several separated by commas (matched anywhere in the sentence, upper/lower case and umlauts do not matter). Actions as JSON, same shape as a trigger: [{\"setState\":{\"id\":\"hm-rpc.0.ABC.1.STATE\",\"value\":false}},{\"say\":\"Schlaf gut\",\"room\":\"Schlafzimmer\"}]. Reply: what the assistant answers (leave empty to stay silent). Matched before the offline rule engine and before the LLM, so a routine is never reinterpreted.": "Una frase que ejecuta una lista de acciones: \"Gute Nacht\" apaga cinco cosas y responde una sola vez. Frases: varias separadas por comas (se reconocen en cualquier parte de la oración; mayúsculas/minúsculas y diéresis no importan). Acciones en JSON, con el mismo formato que un disparador: [{\"setState\":{\"id\":\"hm-rpc.0.ABC.1.STATE\",\"value\":false}},{\"say\":\"Schlaf gut\",\"room\":\"Schlafzimmer\"}]. Respuesta: lo que contesta el asistente (déjalo vacío para no decir nada). Se comprueba antes del motor de reglas sin conexión y antes del LLM, así que una rutina nunca se reinterpreta.",
|
|
4
|
-
"A
|
|
4
|
+
"A switch command that worked (on, off, set to a value) is confirmed by a short tone on the satellite instead of a spoken sentence, whether the offline rules or the AI carried it out. Questions, errors and the text channels are unaffected.": "Un comando de conmutación correcto (encender, apagar, ajustar un valor) se confirma con un tono corto en el satélite en lugar de una frase hablada, tanto si lo ejecutaron las reglas sin conexión como la IA. Las preguntas, los errores y los canales de texto no se ven afectados.",
|
|
5
5
|
"A trigger watches states or the clock and then speaks, writes a state, or asks you a question and acts on your answer. Switch single triggers off at runtime with triggers.items.<id>.enabled, test one with its fire button, and all of them with triggers.enabled.": "Un disparador vigila estados o el reloj y luego habla, escribe un estado o te hace una pregunta y actúa según tu respuesta. Desactiva disparadores individuales en tiempo de ejecución con triggers.items.<id>.enabled, prueba uno con su botón fire y todos a la vez con triggers.enabled.",
|
|
6
6
|
"API key": "clave API",
|
|
7
7
|
"API password (usually empty)": "Contraseña de API (normalmente vacía)",
|
|
@@ -128,7 +128,7 @@
|
|
|
128
128
|
"Room": "Habitación",
|
|
129
129
|
"Routines": "Rutinas",
|
|
130
130
|
"Run the UDP voice server (ESP / Hannah satellites)": "Ejecutar el servidor de voz UDP (satélites ESP/Hannah)",
|
|
131
|
-
"Runs a small local model (node-llama-cpp) for general questions
|
|
131
|
+
"Runs a small local model (node-llama-cpp) for general questions. With a cloud provider it only answers when the cloud fails, unless \"Ask the local model first\" is on. Install it with the button below.": "Ejecuta un pequeño modelo local (node-llama-cpp) para preguntas generales. Con un proveedor en la nube solo responde cuando la nube falla, salvo que «Preguntar primero al modelo local» esté activado. Instálelo con el botón de abajo.",
|
|
132
132
|
"Said or typed": "Dicho o escrito",
|
|
133
133
|
"Satellites": "satélites",
|
|
134
134
|
"Satellites, rooms or devices (comma separated)": "Satélites, habitaciones o dispositivos (separados por comas)",
|
|
@@ -160,7 +160,11 @@
|
|
|
160
160
|
"Two default sounds (timer.wav, alarm.wav) are preinstalled — pick one below or upload your own mp3/wav. The selected sound plays before the spoken announcement. Needs ffmpeg on the host and at least one satellite.": "Se incluyen dos sonidos predeterminados (timer.wav, alarm.wav): seleccione uno a continuación o suba su propio archivo mp3/wav. El sonido seleccionado se reproduce antes del anuncio hablado. Requiere ffmpeg en el host y al menos un satélite.",
|
|
161
161
|
"UDP port": "puerto UDP",
|
|
162
162
|
"Upload mp3/wav jingles below; the selected sound plays before the spoken announcement. Needs ffmpeg installed on the host and at least one satellite.": "Sube tus jingles en formato MP3/WAV a continuación; el sonido seleccionado se reproducirá antes del anuncio hablado. Se requiere tener ffmpeg instalado en el host y al menos un satélite.",
|
|
163
|
-
"Use a local LLM
|
|
163
|
+
"Use a local LLM (installed on demand)": "Usar un LLM local (instalado bajo demanda)",
|
|
164
|
+
"Ask the local model first": "Preguntar primero al modelo local",
|
|
165
|
+
"Every question the rules do not understand goes to the local model before the cloud. Saves cloud calls, but on a Raspberry Pi it adds 10–25 seconds to such questions.": "Cada pregunta que las reglas no entienden va al modelo local antes que a la nube. Ahorra llamadas a la nube, pero en una Raspberry Pi añade 10–25 segundos a esas preguntas.",
|
|
166
|
+
"Local model timeout (s)": "Tiempo límite del modelo local (s)",
|
|
167
|
+
"After this time the local model is stopped and the question goes on to the cloud.": "Pasado este tiempo, el modelo local se detiene y la pregunta pasa a la nube.",
|
|
164
168
|
"Used when the provider above fails (outage, expired key, empty quota). A local engine keeps voice working without the internet.": "Se usa cuando falla el proveedor de arriba (caída, clave caducada, cuota agotada). Un motor local mantiene el control por voz funcionando sin internet.",
|
|
165
169
|
"Used when the provider above fails. Piper keeps the assistant speaking without the internet.": "Se usa cuando falla el proveedor de arriba. Piper mantiene al asistente hablando sin internet.",
|
|
166
170
|
"Verify device feedback": "Verificar la respuesta del dispositivo",
|
|
@@ -190,5 +194,28 @@
|
|
|
190
194
|
"TV power (optional)": "Encendido del TV (opcional)",
|
|
191
195
|
"Start delay (s)": "Retardo de inicio (s)",
|
|
192
196
|
"Name": "Nombre",
|
|
193
|
-
"TVs and devices of the youtube-remote adapter the assistant may play on, e.g. \"play the channel Sailing OceanAir\". The first row is the default when no player is named; a request from a satellite in the room of a row goes to that row. Player: the youtube-remote instance - it finds its paired TV itself, also after the TV was paired again; with several TVs in one instance pick one of them. Power: optional state that switches the TV on (e.g. samsungtv.0.<tv>.control.power) - if it is off, the TV is switched on first and the video starts after the start delay. A power button (toggle) is never pressed, because it would switch a running TV off. Needs \"Allow writing states\".": "Televisores y dispositivos del adaptador youtube-remote en los que el asistente puede reproducir, p. ej. \"reproduce el canal Sailing OceanAir\". La primera fila es la predeterminada si no se nombra ningún reproductor; una petición de un satélite en la sala de una fila va a esa fila. Reproductor: la instancia de youtube-remote; encuentra sola su televisor vinculado, también tras volver a vincularlo; con varios televisores en una instancia, elija uno. Encendido: estado opcional que enciende el televisor (p. ej. samsungtv.0.<tv>.control.power): si está apagado, primero se enciende y el vídeo empieza tras el retardo. Nunca se pulsa un botón de encendido (conmutador), porque apagaría un televisor encendido. Requiere \"Permitir escribir estados\"."
|
|
197
|
+
"TVs and devices of the youtube-remote adapter the assistant may play on, e.g. \"play the channel Sailing OceanAir\". The first row is the default when no player is named; a request from a satellite in the room of a row goes to that row. Player: the youtube-remote instance - it finds its paired TV itself, also after the TV was paired again; with several TVs in one instance pick one of them. Power: optional state that switches the TV on (e.g. samsungtv.0.<tv>.control.power) - if it is off, the TV is switched on first and the video starts after the start delay. A power button (toggle) is never pressed, because it would switch a running TV off. Needs \"Allow writing states\".": "Televisores y dispositivos del adaptador youtube-remote en los que el asistente puede reproducir, p. ej. \"reproduce el canal Sailing OceanAir\". La primera fila es la predeterminada si no se nombra ningún reproductor; una petición de un satélite en la sala de una fila va a esa fila. Reproductor: la instancia de youtube-remote; encuentra sola su televisor vinculado, también tras volver a vincularlo; con varios televisores en una instancia, elija uno. Encendido: estado opcional que enciende el televisor (p. ej. samsungtv.0.<tv>.control.power): si está apagado, primero se enciende y el vídeo empieza tras el retardo. Nunca se pulsa un botón de encendido (conmutador), porque apagaría un televisor encendido. Requiere \"Permitir escribir estados\".",
|
|
198
|
+
"Adapter pi-agent": "Adaptador pi-agent",
|
|
199
|
+
"pi-agent instance": "Instancia de pi-agent",
|
|
200
|
+
"pi-agent timeout (s)": "Tiempo de espera de pi-agent (s)",
|
|
201
|
+
"Everything the local tiers cannot answer goes to the adapter pi-agent: its model and key (also the system-wide AI settings of admin), its tools and its write permissions. Every request source gets a conversation of its own there. The tools of this adapter (timers, memory, announcements, YouTube) are not available to it; the rule-based commands still handle timers and alarms.": "Todo lo que los niveles locales no pueden responder va al adaptador pi-agent: su modelo y clave (también los ajustes de IA de todo el sistema en admin), sus herramientas y sus permisos de escritura. Cada origen de solicitudes obtiene allí su propia conversación. Las herramientas de este adaptador (temporizadores, memoria, avisos, YouTube) no están disponibles allí; los comandos basados en reglas siguen gestionando temporizadores y alarmas.",
|
|
202
|
+
"System-wide AI settings (admin)": "Ajustes de IA de todo el sistema (admin)",
|
|
203
|
+
"OpenRouter": "OpenRouter",
|
|
204
|
+
"Provider, model and API key come from the system settings of admin (tab \"AI\"). A change there restarts this instance.": "El proveedor, el modelo y la clave API proceden de los ajustes del sistema de admin (pestaña \"IA\"). Un cambio allí reinicia esta instancia.",
|
|
205
|
+
"Empty: the system-wide AI settings of admin are used": "Vacío: se usan los ajustes de IA de todo el sistema de admin",
|
|
206
|
+
"OpenRouter key for speech (optional)": "Clave de OpenRouter para voz (opcional)",
|
|
207
|
+
"OpenRouter credential": "Credencial de OpenRouter",
|
|
208
|
+
"Empty: the key of the AI provider is used if that is OpenRouter (also from the system-wide AI settings).": "Vacío: se usa la clave del proveedor de IA si es OpenRouter (también desde la configuración de IA de todo el sistema).",
|
|
209
|
+
"OpenRouter STT model (optional)": "Modelo STT de OpenRouter (opcional)",
|
|
210
|
+
"Empty = openai/whisper-large-v3-turbo.": "Vacío = openai/whisper-large-v3-turbo.",
|
|
211
|
+
"OpenRouter TTS model (optional)": "Modelo TTS de OpenRouter (opcional)",
|
|
212
|
+
"Empty = elevenlabs/eleven-flash-v2.5.": "Vacío = elevenlabs/eleven-flash-v2.5.",
|
|
213
|
+
"OpenRouter voice (optional)": "Voz de OpenRouter (opcional)",
|
|
214
|
+
"The voices depend on the model. Empty = the first voice of the model for the language.": "Las voces dependen del modelo. Vacío = la primera voz del modelo para el idioma.",
|
|
215
|
+
"Calendar for commands for later": "Calendario para órdenes posteriores",
|
|
216
|
+
"A fullcalendar instance: \"turn off the light in 2 hours\" or \"blinds to 50 % at 10 pm\" becomes an event in this calendar, and the AI can plan, list and cancel events. Without it such commands go to the AI.": "Una instancia de fullcalendar: «apaga la luz dentro de 2 horas» o «persianas al 50 % a las 22» se convierte en un evento de este calendario, y la IA puede planificar, listar y cancelar eventos. Sin ella, esas órdenes van a la IA.",
|
|
217
|
+
"Person": "Persona",
|
|
218
|
+
"Guest": "Invitado",
|
|
219
|
+
"Pet": "Mascota",
|
|
220
|
+
"Group": "Grupo"
|
|
194
221
|
}
|
package/admin/i18n/fr.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"A fired timer/alarm keeps ringing (looping the sound) for up to this long, or until you say 'stop'/'halt'/'aufhören'/'cancel' (or write the stopRinging state). 0 = play the sound once.": "Une alarme/minuterie déclenchée continue de sonner (en boucle) pendant une durée maximale, ou jusqu'à ce que vous disiez « stop », « halt », « aufhören » ou « cancel » (ou que vous écriviez l'état stopRinging). 0 = le son est joué une seule fois.",
|
|
3
3
|
"A phrase that runs a list of actions: \"Gute Nacht\" switches off five things and answers once. Phrases: several separated by commas (matched anywhere in the sentence, upper/lower case and umlauts do not matter). Actions as JSON, same shape as a trigger: [{\"setState\":{\"id\":\"hm-rpc.0.ABC.1.STATE\",\"value\":false}},{\"say\":\"Schlaf gut\",\"room\":\"Schlafzimmer\"}]. Reply: what the assistant answers (leave empty to stay silent). Matched before the offline rule engine and before the LLM, so a routine is never reinterpreted.": "Une phrase qui exécute une liste d'actions : \"Gute Nacht\" éteint cinq appareils et répond une seule fois. Phrases : plusieurs, séparées par des virgules (reconnues n'importe où dans la phrase, majuscules/minuscules et trémas sans importance). Actions en JSON, même format qu'un déclencheur : [{\"setState\":{\"id\":\"hm-rpc.0.ABC.1.STATE\",\"value\":false}},{\"say\":\"Schlaf gut\",\"room\":\"Schlafzimmer\"}]. Réponse : ce que répond l'assistant (laisser vide pour rester silencieux). Vérifiée avant le moteur de règles hors ligne et avant le LLM, une routine n'est donc jamais réinterprétée.",
|
|
4
|
-
"A
|
|
4
|
+
"A switch command that worked (on, off, set to a value) is confirmed by a short tone on the satellite instead of a spoken sentence, whether the offline rules or the AI carried it out. Questions, errors and the text channels are unaffected.": "Une commande de commutation réussie (allumer, éteindre, régler une valeur) est confirmée par un bref signal sonore sur le satellite au lieu d'une phrase prononcée, qu'elle ait été exécutée par les règles hors ligne ou par l'IA. Les questions, les erreurs et les canaux texte ne sont pas concernés.",
|
|
5
5
|
"A trigger watches states or the clock and then speaks, writes a state, or asks you a question and acts on your answer. Switch single triggers off at runtime with triggers.items.<id>.enabled, test one with its fire button, and all of them with triggers.enabled.": "Un déclencheur surveille des états ou l'horloge, puis parle, écrit un état ou vous pose une question et agit selon votre réponse. Désactivez un déclencheur pendant l'exécution avec triggers.items.<id>.enabled, testez-le avec son bouton fire, et tous à la fois avec triggers.enabled.",
|
|
6
6
|
"API key": "Clé API",
|
|
7
7
|
"API password (usually empty)": "Mot de passe API (généralement vide)",
|
|
@@ -128,7 +128,7 @@
|
|
|
128
128
|
"Room": "Pièce",
|
|
129
129
|
"Routines": "Routines",
|
|
130
130
|
"Run the UDP voice server (ESP / Hannah satellites)": "Lancer le serveur vocal UDP (satellites ESP / Hannah)",
|
|
131
|
-
"Runs a small local model (node-llama-cpp) for general questions
|
|
131
|
+
"Runs a small local model (node-llama-cpp) for general questions. With a cloud provider it only answers when the cloud fails, unless \"Ask the local model first\" is on. Install it with the button below.": "Exécute un petit modèle local (node-llama-cpp) pour les questions générales. Avec un fournisseur cloud, il ne répond qu’en cas de panne du cloud, sauf si « Interroger d’abord le modèle local » est activé. Installez-le avec le bouton ci-dessous.",
|
|
132
132
|
"Said or typed": "dit ou tapé",
|
|
133
133
|
"Satellites": "Satellites",
|
|
134
134
|
"Satellites, rooms or devices (comma separated)": "Satellites, pièces ou appareils (séparés par des virgules)",
|
|
@@ -160,7 +160,11 @@
|
|
|
160
160
|
"Two default sounds (timer.wav, alarm.wav) are preinstalled — pick one below or upload your own mp3/wav. The selected sound plays before the spoken announcement. Needs ffmpeg on the host and at least one satellite.": "Deux sons par défaut (timer.wav, alarm.wav) sont préinstallés ; choisissez-en un ci-dessous ou téléchargez votre propre fichier mp3/wav. Le son sélectionné sera diffusé avant l’annonce vocale. Nécessite ffmpeg sur l’hôte et au moins un satellite.",
|
|
161
161
|
"UDP port": "port UDP",
|
|
162
162
|
"Upload mp3/wav jingles below; the selected sound plays before the spoken announcement. Needs ffmpeg installed on the host and at least one satellite.": "Téléversez vos jingles MP3/WAV ci-dessous ; le son sélectionné sera diffusé avant l’annonce vocale. ffmpeg doit être installé sur le serveur hôte et au moins un satellite est requis.",
|
|
163
|
-
"Use a local LLM
|
|
163
|
+
"Use a local LLM (installed on demand)": "Utiliser un LLM local (installé à la demande)",
|
|
164
|
+
"Ask the local model first": "Interroger d’abord le modèle local",
|
|
165
|
+
"Every question the rules do not understand goes to the local model before the cloud. Saves cloud calls, but on a Raspberry Pi it adds 10–25 seconds to such questions.": "Chaque question que les règles ne comprennent pas va au modèle local avant le cloud. Économise des appels au cloud, mais ajoute 10 à 25 secondes à ces questions sur un Raspberry Pi.",
|
|
166
|
+
"Local model timeout (s)": "Délai du modèle local (s)",
|
|
167
|
+
"After this time the local model is stopped and the question goes on to the cloud.": "Passé ce délai, le modèle local est arrêté et la question est transmise au cloud.",
|
|
164
168
|
"Used when the provider above fails (outage, expired key, empty quota). A local engine keeps voice working without the internet.": "Utilisé lorsque le fournisseur ci-dessus échoue (panne, clé expirée, quota épuisé). Un moteur local permet à la commande vocale de fonctionner sans Internet.",
|
|
165
169
|
"Used when the provider above fails. Piper keeps the assistant speaking without the internet.": "Utilisé lorsque le fournisseur ci-dessus échoue. Piper permet à l'assistant de continuer à parler sans Internet.",
|
|
166
170
|
"Verify device feedback": "Vérifier le retour de l'appareil",
|
|
@@ -190,5 +194,28 @@
|
|
|
190
194
|
"TV power (optional)": "Alimentation TV (optionnel)",
|
|
191
195
|
"Start delay (s)": "Délai de démarrage (s)",
|
|
192
196
|
"Name": "Nom",
|
|
193
|
-
"TVs and devices of the youtube-remote adapter the assistant may play on, e.g. \"play the channel Sailing OceanAir\". The first row is the default when no player is named; a request from a satellite in the room of a row goes to that row. Player: the youtube-remote instance - it finds its paired TV itself, also after the TV was paired again; with several TVs in one instance pick one of them. Power: optional state that switches the TV on (e.g. samsungtv.0.<tv>.control.power) - if it is off, the TV is switched on first and the video starts after the start delay. A power button (toggle) is never pressed, because it would switch a running TV off. Needs \"Allow writing states\".": "Téléviseurs et appareils de l’adaptateur youtube-remote sur lesquels l’assistant peut lire, p. ex. « joue la chaîne Sailing OceanAir ». La première ligne est utilisée par défaut si aucun lecteur n’est nommé ; une demande d’un satellite dans la pièce d’une ligne va à cette ligne. Lecteur : l’instance youtube-remote - elle trouve elle-même son téléviseur associé, même après une nouvelle association ; avec plusieurs téléviseurs dans une instance, choisissez-en un. Alimentation : état optionnel qui allume le téléviseur (p. ex. samsungtv.0.<tv>.control.power) - s’il est éteint, il est d’abord allumé et la vidéo démarre après le délai. Un bouton d’alimentation (bascule) n’est jamais pressé, car il éteindrait un téléviseur allumé. Nécessite « Autoriser l’écriture des états »."
|
|
197
|
+
"TVs and devices of the youtube-remote adapter the assistant may play on, e.g. \"play the channel Sailing OceanAir\". The first row is the default when no player is named; a request from a satellite in the room of a row goes to that row. Player: the youtube-remote instance - it finds its paired TV itself, also after the TV was paired again; with several TVs in one instance pick one of them. Power: optional state that switches the TV on (e.g. samsungtv.0.<tv>.control.power) - if it is off, the TV is switched on first and the video starts after the start delay. A power button (toggle) is never pressed, because it would switch a running TV off. Needs \"Allow writing states\".": "Téléviseurs et appareils de l’adaptateur youtube-remote sur lesquels l’assistant peut lire, p. ex. « joue la chaîne Sailing OceanAir ». La première ligne est utilisée par défaut si aucun lecteur n’est nommé ; une demande d’un satellite dans la pièce d’une ligne va à cette ligne. Lecteur : l’instance youtube-remote - elle trouve elle-même son téléviseur associé, même après une nouvelle association ; avec plusieurs téléviseurs dans une instance, choisissez-en un. Alimentation : état optionnel qui allume le téléviseur (p. ex. samsungtv.0.<tv>.control.power) - s’il est éteint, il est d’abord allumé et la vidéo démarre après le délai. Un bouton d’alimentation (bascule) n’est jamais pressé, car il éteindrait un téléviseur allumé. Nécessite « Autoriser l’écriture des états ».",
|
|
198
|
+
"Adapter pi-agent": "Adaptateur pi-agent",
|
|
199
|
+
"pi-agent instance": "Instance pi-agent",
|
|
200
|
+
"pi-agent timeout (s)": "Délai d'attente de pi-agent (s)",
|
|
201
|
+
"Everything the local tiers cannot answer goes to the adapter pi-agent: its model and key (also the system-wide AI settings of admin), its tools and its write permissions. Every request source gets a conversation of its own there. The tools of this adapter (timers, memory, announcements, YouTube) are not available to it; the rule-based commands still handle timers and alarms.": "Tout ce à quoi les niveaux locaux ne peuvent pas répondre est transmis à l'adaptateur pi-agent : son modèle et sa clé (y compris les paramètres d'IA de tout le système dans admin), ses outils et ses droits d'écriture. Chaque source de requêtes y obtient sa propre conversation. Les outils de cet adaptateur (minuteurs, mémoire, annonces, YouTube) n'y sont pas disponibles ; les commandes à base de règles continuent de gérer minuteurs et alarmes.",
|
|
202
|
+
"System-wide AI settings (admin)": "Paramètres IA du système (admin)",
|
|
203
|
+
"OpenRouter": "OpenRouter",
|
|
204
|
+
"Provider, model and API key come from the system settings of admin (tab \"AI\"). A change there restarts this instance.": "Le fournisseur, le modèle et la clé API proviennent des paramètres système d'admin (onglet « IA »). Une modification à cet endroit redémarre cette instance.",
|
|
205
|
+
"Empty: the system-wide AI settings of admin are used": "Vide : les paramètres IA du système d'admin sont utilisés",
|
|
206
|
+
"OpenRouter key for speech (optional)": "Clé OpenRouter pour la voix (facultatif)",
|
|
207
|
+
"OpenRouter credential": "Identifiants OpenRouter",
|
|
208
|
+
"Empty: the key of the AI provider is used if that is OpenRouter (also from the system-wide AI settings).": "Vide : la clé du fournisseur d'IA est utilisée s'il s'agit d'OpenRouter (y compris depuis les paramètres d'IA du système).",
|
|
209
|
+
"OpenRouter STT model (optional)": "Modèle STT OpenRouter (facultatif)",
|
|
210
|
+
"Empty = openai/whisper-large-v3-turbo.": "Vide = openai/whisper-large-v3-turbo.",
|
|
211
|
+
"OpenRouter TTS model (optional)": "Modèle TTS OpenRouter (facultatif)",
|
|
212
|
+
"Empty = elevenlabs/eleven-flash-v2.5.": "Vide = elevenlabs/eleven-flash-v2.5.",
|
|
213
|
+
"OpenRouter voice (optional)": "Voix OpenRouter (facultatif)",
|
|
214
|
+
"The voices depend on the model. Empty = the first voice of the model for the language.": "Les voix dépendent du modèle. Vide = la première voix du modèle pour la langue.",
|
|
215
|
+
"Calendar for commands for later": "Calendrier pour les commandes différées",
|
|
216
|
+
"A fullcalendar instance: \"turn off the light in 2 hours\" or \"blinds to 50 % at 10 pm\" becomes an event in this calendar, and the AI can plan, list and cancel events. Without it such commands go to the AI.": "Une instance fullcalendar : « éteins la lumière dans 2 heures » ou « volets à 50 % à 22 h » devient un événement de ce calendrier, et l’IA peut planifier, lister et supprimer des événements. Sans elle, ces commandes vont à l’IA.",
|
|
217
|
+
"Person": "Personne",
|
|
218
|
+
"Guest": "Invité",
|
|
219
|
+
"Pet": "Animal",
|
|
220
|
+
"Group": "Groupe"
|
|
194
221
|
}
|