node-red-contrib-knx-ultimate 7.1.0-beta.2 → 7.1.2

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.
Files changed (52) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/README.md +5 -1
  3. package/nodes/knxUltimateAI.html +1820 -0
  4. package/nodes/knxUltimateAI.js +16797 -0
  5. package/nodes/knxUltimateAIHomeAssistant.html +40 -0
  6. package/nodes/knxUltimateAIHomeAssistant.js +152 -0
  7. package/nodes/knxUltimateHueController.html +1 -1
  8. package/nodes/knxUltimateMatterBridge.html +2 -2
  9. package/nodes/knxUltimateMatterControllerDevice.html +2 -2
  10. package/nodes/locales/de/knxUltimateAI.html +5 -0
  11. package/nodes/locales/de/knxUltimateAI.json +231 -0
  12. package/nodes/locales/de/knxUltimateUtility.json +8 -0
  13. package/nodes/locales/en/knxUltimateAI.html +5 -0
  14. package/nodes/locales/en/knxUltimateAI.json +234 -0
  15. package/nodes/locales/en/knxUltimateUtility.json +8 -0
  16. package/nodes/locales/es/knxUltimateAI.html +5 -0
  17. package/nodes/locales/es/knxUltimateAI.json +231 -0
  18. package/nodes/locales/es/knxUltimateUtility.json +9 -1
  19. package/nodes/locales/fr/knxUltimateAI.html +5 -0
  20. package/nodes/locales/fr/knxUltimateAI.json +231 -0
  21. package/nodes/locales/fr/knxUltimateUtility.json +8 -0
  22. package/nodes/locales/it/knxUltimateAI.html +5 -0
  23. package/nodes/locales/it/knxUltimateAI.json +234 -0
  24. package/nodes/locales/it/knxUltimateUtility.json +8 -0
  25. package/nodes/locales/zh-CN/knxUltimateAI.html +5 -0
  26. package/nodes/locales/zh-CN/knxUltimateAI.json +231 -0
  27. package/nodes/locales/zh-CN/knxUltimateUtility.json +8 -0
  28. package/nodes/plugins/knxUltimate-cerebrum-runtime-plugin.js +79 -0
  29. package/nodes/plugins/knxUltimate-migration-notice-plugin.html +19 -0
  30. package/nodes/plugins/knxUltimateAI-vue/assets/app.css +1 -0
  31. package/nodes/plugins/knxUltimateAI-vue/assets/app.js +13 -0
  32. package/nodes/plugins/knxUltimateAI-vue/assets/chunk-html2canvas.esm.js +5 -0
  33. package/nodes/plugins/knxUltimateAI-vue/assets/chunk-index.es.js +5 -0
  34. package/nodes/plugins/knxUltimateAI-vue/assets/chunk-jspdf.es.min.js +79 -0
  35. package/nodes/plugins/knxUltimateAI-vue/assets/chunk-purify.es.js +3 -0
  36. package/nodes/plugins/knxUltimateAI-vue/index.html +13 -0
  37. package/nodes/plugins/knxUltimateViewer-vue/assets/app.js +2 -2
  38. package/nodes/utils/knxAiCamera.js +302 -0
  39. package/nodes/utils/knxAiCatalogRetrieval.js +349 -0
  40. package/nodes/utils/knxAiCerebrum.js +406 -0
  41. package/nodes/utils/knxAiChatContext.js +496 -0
  42. package/nodes/utils/knxAiEventHistory.js +521 -0
  43. package/nodes/utils/knxAiHomeMemory.js +1021 -0
  44. package/nodes/utils/knxAiScheduler.js +445 -0
  45. package/nodes/utils/knxAiSemanticContext.js +662 -0
  46. package/nodes/utils/knxAiTelegramVoice.js +545 -0
  47. package/nodes/utils/knxAiWebAccess.js +631 -0
  48. package/package.json +17 -9
  49. package/resources/KNXAIChatAdapterMappings.js +416 -0
  50. package/resources/hueControllerMigrationDialog.js +3 -0
  51. package/resources/knxUtilityMigration.js +3 -0
  52. package/resources/legacyMigrationNotice.js +143 -0
@@ -0,0 +1,234 @@
1
+ {
2
+ "knxUltimateAI": {
3
+ "title": "Legacy AI node — use Cerebrum Ultimate",
4
+ "sections": {
5
+ "groupAssistant": "AI assistant",
6
+ "groupChatHome": "Cerebrum (BETA)",
7
+ "setupDoctor": "Setup Doctor",
8
+ "webIntelligence": "Web intelligence",
9
+ "detectedAdapters": "Compatible nodes detected and used in chat",
10
+ "chatContextOverview": "Chat context overview",
11
+ "chatLearning": "AI Chat Learning",
12
+ "cerebrumMemory": "Cerebrum memory",
13
+ "quickSetup": "Assistant setup",
14
+ "etsAccess": "ETS object access",
15
+ "llmConnection": "AI Assistant Connection",
16
+ "chatAdapter": "Chat input and output pins",
17
+ "homeIntelligence": "AI Education & memory",
18
+ "advanced": "Provider & limits"
19
+ },
20
+ "properties": {
21
+ "server": "Gateway",
22
+ "name": "Name",
23
+ "topic": "Topic",
24
+ "llmEnabled": "Enable LLM assistant",
25
+ "llmProvider": "Provider",
26
+ "llmBaseUrl": "Endpoint URL",
27
+ "llmApiKey": "API key",
28
+ "llmModel": "Model",
29
+ "llmReasoningEffort": "Reasoning effort",
30
+ "llmLocalContextTokens": "Local context window",
31
+ "llmSystemPrompt": "System prompt",
32
+ "llmIncludeRaw": "Include raw payload hex",
33
+ "llmAllowKnxCommands": "Allow AI to read KNX states and control actuators",
34
+ "llmRequireCommandConfirmation": "Ask for confirmation before sending KNX commands",
35
+ "webAccessEnabled": "Allow the AI to use the Web",
36
+ "webMaxCallsPerHour": "Maximum Web calls per hour",
37
+ "chatAdapterPreset": "Input/output message adapter",
38
+ "chatInputCode": "Input mapping (chat → Cerebrum Ultimate)",
39
+ "chatOutputCode": "Output mapping (Cerebrum Ultimate → chat)",
40
+ "aiEducation": "AI Education (user managed)"
41
+ },
42
+ "outputs": {
43
+ "summary": "Summary/Stats",
44
+ "anomalies": "Anomalies",
45
+ "assistant": "AI Assistant",
46
+ "knxCommands": "KNX operations",
47
+ "ttsUltimate": "TTS Ultimate announcements"
48
+ },
49
+ "selectlists": {
50
+ "llmProvider": {
51
+ "openai_compat": "OpenAI / OpenAI-compatible",
52
+ "anthropic": "Anthropic (Claude)",
53
+ "ollama": "Ollama (local)",
54
+ "lmstudio": "Bionic LM Studio"
55
+ },
56
+ "reasoningEffort": {
57
+ "default": "Automatic (model/provider default)",
58
+ "none": "None",
59
+ "minimal": "Minimal",
60
+ "low": "Low",
61
+ "medium": "Medium",
62
+ "high": "High",
63
+ "xhigh": "Extra high",
64
+ "max": "Maximum"
65
+ },
66
+ "localContext": {
67
+ "maximum": "Maximum",
68
+ "k4": "4K",
69
+ "k8": "8K",
70
+ "k16": "16K",
71
+ "k32": "32K",
72
+ "k64": "64K",
73
+ "k128": "128K",
74
+ "k256": "256K"
75
+ },
76
+ "chatAdapter": {
77
+ "none": "No adapter"
78
+ }
79
+ },
80
+ "buttons": {
81
+ "refreshSetupDoctor": "Check again",
82
+ "refreshModels": "Refresh",
83
+ "installOllamaModel": "2) Install it",
84
+ "ollamaLibrary": "Model library",
85
+ "downloadOllamaModel": "1) Download model",
86
+ "openChatLearning": "Open AI Chat Learning",
87
+ "openCerebrumMemory": "Open Cerebrum memory",
88
+ "etsSelectAll": "Select all",
89
+ "etsSelectNone": "Select none",
90
+ "etsReadOnlyAll": "Set read only",
91
+ "etsReadOnlyNone": "Clear read only"
92
+ },
93
+ "messages": {
94
+ "setupDoctorLoading": "Analyzing this installation…",
95
+ "setupDoctorUnavailable": "Setup Doctor is temporarily unavailable.",
96
+ "setupDoctorPromptsTitle": "Try your installation",
97
+ "setupDoctorPromptsHint": "Each suggestion opens the Web Assistant with a personalized, safe prompt. Nothing is executed automatically.",
98
+ "setupDoctorDeployHint": "Setup Doctor reads the last deployed flow. Deploy editor changes, then check again.",
99
+ "setupDoctorPass": "OK",
100
+ "setupDoctorWarn": "Check",
101
+ "setupDoctorFail": "Fix",
102
+ "setupDoctorInfo": "Optional",
103
+ "webAccessHint": "The model chooses this general Web tool semantically for each clear chat or scheduled request. If essential scope is ambiguous, it asks the user before searching; no background polling, keywords or intent classifiers are used. External sites and the search service receive the query and this server’s public IP. Private KNX, camera, chat, memory and credential data are never added automatically.",
104
+ "webBudgetHint": "The rolling budget counts real outbound calls from conversations and user-created scheduled tasks.",
105
+ "loadingModels": "Loading models…",
106
+ "loadedModels": "Models loaded",
107
+ "lmStudioContextAvailable": "Maximum model context",
108
+ "lmStudioContextLoading": "Checking the active model context",
109
+ "lmStudioContextInactive": "Model inactive; Bionic defaults will be used on the first request",
110
+ "lmStudioContextConfigured": "Active model context",
111
+ "lmStudioContextFailed": "Unable to configure the model context",
112
+ "lmStudioContextCurrentlyLoaded": "currently loaded",
113
+ "etsAccessHint": "Select the group addresses available to Cerebrum Ultimate. Every selected address is active and readable; every selected address not marked Read only is writable. Cloud providers receive the complete selected semantic ETS catalog; local models receive as much as fits their selected context window and can retrieve missing details locally.",
114
+ "etsFilterPlaceholder": "Filter by name, GA or DPT…",
115
+ "etsSelected": "selected",
116
+ "etsReadOnly": "Read only",
117
+ "etsReadOnlyBulk": "Read only for shown addresses",
118
+ "etsNoGateway": "Select a KNX gateway.",
119
+ "etsNoGa": "No group addresses found. Import the ETS list in the KNX gateway.",
120
+ "etsCsvError": "Unable to load the group address list from the gateway.",
121
+ "reasoningEffortHint": "Optional preference for models that support reasoning effort. Automatic sends no preference; if a provider or model rejects the selected value, Cerebrum Ultimate retries without it.",
122
+ "localContextBudget": "Local context window",
123
+ "localContextHint": "Sets the maximum context sent to local models only. Maximum uses the selected model's known context window; unavailable sizes are hidden when the model limit is known. Cloud providers ignore this selector and receive the complete selected semantic ETS catalog.",
124
+ "ollamaNotSupported": "Ollama local mode: API key not required. Default endpoint is http://localhost:11434/api/chat.",
125
+ "ollamaNoModels": "No local Ollama model found. Install one or pick one from the library.",
126
+ "installingOllamaModel": "Starting Ollama and installing model…",
127
+ "installedOllamaModel": "Ollama model installed",
128
+ "installOllamaModelFailed": "Failed to install Ollama model",
129
+ "ollamaInstallSteps": "1) Open the model library and copy the model name (for example llama3.1). 2) Put the name in the Model field and click Install it.",
130
+ "ollamaStartedAuto": "Ollama server started automatically.",
131
+ "detectedAdaptersLoading": "Detecting installed compatible nodes…",
132
+ "detectedAdaptersNone": "No compatible node detected.",
133
+ "detectedAdaptersUnavailable": "Compatible-node detection is temporarily unavailable.",
134
+ "detectedAdapterDetected": "Detected",
135
+ "detectedAdapterControllers": "Controllers",
136
+ "detectedAdapterCameras": "Cameras",
137
+ "detectedAdapterNodes": "Nodes",
138
+ "chatContextLoading": "Loading chat context summary…",
139
+ "chatContextUnavailable": "The chat context summary is temporarily unavailable.",
140
+ "chatLearningOpenHint": "Open the Web UI directly on the shared CHAT learning editor to view, edit, copy or back up its persistent file.",
141
+ "cerebrumMemoryOpenHint": "Open the user-readable Cerebrum memory to inspect or edit learned habits, occupant decisions and cached home states.",
142
+ "chatContextIntro": "The chat automatically receives these sources. The paths below are the actual paths used by this Node-RED installation.",
143
+ "chatContextLimitLabel": "Maximum operational context",
144
+ "chatContextProviderManaged": "managed by the selected provider/model",
145
+ "chatContextTokens": "tokens",
146
+ "chatContextLastPromptLabel": "Last chat prompt actual size",
147
+ "chatContextLastPromptUnavailable": "not available until the first chat request",
148
+ "chatContextExactInputTokens": "input tokens measured by the provider",
149
+ "chatContextEstimatedInputTokens": "estimated input tokens",
150
+ "chatContextImages": "images",
151
+ "chatContextSourcesTitle": "Included sources",
152
+ "chatContextFilesTitle": "Persistent context files",
153
+ "chatContextDirectoriesTitle": "KNX telegram archive",
154
+ "chatContextSourceKnxTraffic": "Derived KNX analysis plus the latest exact events from the default 20-minute or explicit interval, automatically bounded for the active local-model window.",
155
+ "chatContextSourceAdapterHistory": "Latest exact adapter events from the same interval, automatically bounded for the active local-model window.",
156
+ "chatContextSourceEtsProject": "Complete selected semantic ETS catalog for cloud models. Local models receive the full catalog when it fits; otherwise they receive a window-sized manifest and exact model-requested details. Function source only for explicit code review.",
157
+ "chatContextSourceMemoryEducation": "Session context, AI Education, bounded home memory and active plans.",
158
+ "chatContextSourceCameras": "Detected cameras and their available capabilities.",
159
+ "chatContextSourceBadge": "Source",
160
+ "chatContextFileChatContext": "Persistent conversation turns, instructions and camera notification rules.",
161
+ "chatContextFileHomeMemory": "Bounded learned home memory only; AI Education remains in the node property.",
162
+ "chatContextFileSchedules": "Authoritative persistent runtime state for this node's plans and reminders.",
163
+ "chatContextFileSchedulesReadable": "Generated human-readable view of this node's plans and reminders.",
164
+ "chatContextFileAssistantConfig": "Persistent Cerebrum configuration and semantic areas for this node.",
165
+ "chatContextFileLastChatPrompt": "Temporary local copy of the latest system and user messages sent to the chat model; overwritten on every chat request.",
166
+ "chatContextFileBadge": "File",
167
+ "chatContextDirectoryRoot": "Telegram archive root",
168
+ "chatContextDirectoryNode": "This node's telegram archive",
169
+ "chatContextDirectoryBadge": "KNX",
170
+ "chatContextDirectoryAdapterRoot": "Adapter event archive root",
171
+ "chatContextDirectoryAdapterNode": "This node's adapter event archive",
172
+ "chatContextDirectoryAdapterBadge": "Adapter",
173
+ "chatContextTelegramPattern": "Daily files",
174
+ "chatAdapterIntro": "Choose a mapping preset to insert its input and output code. The list is loaded from the packaged chat-adapter mappings file; the generated code remains editable.",
175
+ "chatAdapterCodeHelp": "Mappings run synchronously. Return msg to continue or return no value to discard it. Errors are caught and reported without stopping Node-RED.",
176
+ "homeIntelligenceIntro": "The node builds a multilingual semantic ETS model. Proactive notifications are considered only when AI Education explicitly requests them; it never sends a KNX command proactively.",
177
+ "aiEducationHelp": "Only the user can edit this node property. Use it for durable guidance and proactive notification policies, including conditions, duration, quiet hours and repetition. The model reads it as authoritative guidance but never writes it. Facts and preferences requested in chat are stored in learned chat memory; one-time or recurring plans, reminders, monitoring and future commands are stored by the semantic scheduler. No trigger phrases or intent routing are required. Maximum 16,000 characters."
178
+ },
179
+ "placeholder": {
180
+ "llmBaseUrl": "https://api.openai.com/v1/chat/completions (or your compatible endpoint)",
181
+ "llmApiKey": "Paste API key (starts with sk-)",
182
+ "llmModel": "e.g. gpt-4o-mini",
183
+ "llmSystemPrompt": "Optional. Leave empty for default.",
184
+ "aiEducation": "Example: Keep replies short. Notify my most recent chat if a window stays open for 30 minutes; stay quiet between 23:00 and 07:00."
185
+ },
186
+ "sidebar": {
187
+ "ui": {
188
+ "refreshNodeList": "Refresh Node List",
189
+ "refreshSummary": "Refresh Summary",
190
+ "auto": "Auto",
191
+ "sections": {
192
+ "summary": "Summary",
193
+ "anomalies": "Anomalies",
194
+ "ask": "Ask"
195
+ },
196
+ "empty": {
197
+ "noNodes": "No Cerebrum Ultimate nodes found.",
198
+ "noAnomalies": "No anomalies."
199
+ },
200
+ "chat": {
201
+ "placeholder": "Ask a question about KNX traffic…",
202
+ "send": "Send",
203
+ "pending": "Thinking…",
204
+ "llmDisabled": "LLM disabled in node config",
205
+ "emptyAnswer": "(empty answer)"
206
+ },
207
+ "status": {
208
+ "ready": "Ready",
209
+ "loadingNodes": "Loading nodes…",
210
+ "loading": "Loading…",
211
+ "asking": "Asking…"
212
+ },
213
+ "errors": {
214
+ "loadNodes": "Failed to load nodes",
215
+ "loadState": "Failed to load state",
216
+ "askFailed": "Ask failed"
217
+ }
218
+ },
219
+ "summary": {
220
+ "noData": "No data available.",
221
+ "header": {
222
+ "gateway": "Gateway: {{gatewayName}}",
223
+ "updated": "Updated: {{at}}"
224
+ },
225
+ "analysisWindowLine": "Analysis window: {{seconds}}s",
226
+ "statsLine": "Telegrams: {{telegrams}} · Rate: {{rate}}/s · Echoed: {{echoed}} · Unknown DPT: {{unknownDpt}}",
227
+ "topGAsTitle": "Top Group Address:",
228
+ "eventsTitle": "Events:",
229
+ "patternsTitle": "Patterns (recurring sequences):",
230
+ "patternItem": "{{from}} → {{to}} ({{count}} times within {{withinMs}}ms)"
231
+ }
232
+ }
233
+ }
234
+ }
@@ -10,6 +10,14 @@
10
10
  "migration_success": "The flow backup download has started. {{count}} nodes converted to KNX Utility. Review the result and click Deploy to apply it. You can undo the conversion with Undo.",
11
11
  "migration_backup_failed": "Flow backup could not be started. No nodes were converted:",
12
12
  "migration_failed": "KNX Utility conversion failed:",
13
+ "startup_migration": {
14
+ "title": "Legacy KNX Ultimate nodes",
15
+ "message": "Legacy nodes found in your flows and subflows: HUE: {{hue}}; KNX utility: {{knx}}. These nodes still work, but are hidden from the palette. Migrate them to HUE Controller and KNX Utility. Each migration downloads a flow backup; review the result before deploying.",
16
+ "hue_button": "Migrate HUE ({{count}})",
17
+ "knx_button": "Migrate KNX ({{count}})",
18
+ "later": "Later",
19
+ "unavailable": "The migration tool is unavailable. Reload the editor after restarting Node-RED."
20
+ },
13
21
  "locale": "en",
14
22
  "function": "Function",
15
23
  "gateway": "KNX Gateway",
@@ -0,0 +1,5 @@
1
+ <script type="text/html" data-help-name="knxUltimateAI">
2
+ <p><b>Este es un nodo heredado oculto, conservado únicamente para los flows existentes.</b></p>
3
+ <p>Para instalaciones nuevas, utiliza el nodo independiente <b>Cerebrum Ultimate</b> del paquete <code>node-red-contrib-cerebrum-ultimate</code>. Sustituye a este nodo y utiliza KNX Ultimate como integración compatible opcional.</p>
4
+ <p><a href="https://github.com/Supergiovane/node-red-contrib-cerebrum-ultimate#readme" target="_blank">Abrir la documentación de Cerebrum Ultimate</a>.</p>
5
+ </script>
@@ -0,0 +1,231 @@
1
+ {
2
+ "knxUltimateAI": {
3
+ "title": "Nodo de IA heredado — usa Cerebrum Ultimate",
4
+ "sections": {
5
+ "groupAssistant": "Asistente IA",
6
+ "groupChatHome": "Cerebrum (BETA)",
7
+ "setupDoctor": "Setup Doctor",
8
+ "webIntelligence": "Inteligencia Web",
9
+ "detectedAdapters": "Nodos compatibles detectados y utilizados en el chat",
10
+ "chatContextOverview": "Resumen del contexto del chat",
11
+ "chatLearning": "Aprendizaje del chat IA",
12
+ "cerebrumMemory": "Memoria Cerebrum",
13
+ "quickSetup": "Configurar el asistente",
14
+ "etsAccess": "Acceso a objetos ETS",
15
+ "llmConnection": "Conexion del Asistente IA",
16
+ "chatAdapter": "Pines de entrada y salida del chat",
17
+ "homeIntelligence": "Educación IA y memoria",
18
+ "advanced": "Proveedor y límites"
19
+ },
20
+ "properties": {
21
+ "server": "Gateway",
22
+ "name": "Name",
23
+ "topic": "Topic",
24
+ "llmEnabled": "Enable LLM assistant",
25
+ "llmProvider": "Provider",
26
+ "llmBaseUrl": "Endpoint URL",
27
+ "llmApiKey": "API key",
28
+ "llmModel": "Model",
29
+ "llmReasoningEffort": "Esfuerzo de razonamiento",
30
+ "llmLocalContextTokens": "Ventana de contexto local",
31
+ "llmSystemPrompt": "System prompt",
32
+ "llmIncludeRaw": "Include raw payload hex",
33
+ "llmAllowKnxCommands": "Permitir que la IA lea estados KNX y controle actuadores",
34
+ "llmRequireCommandConfirmation": "Pedir confirmación antes de enviar comandos KNX",
35
+ "webAccessEnabled": "Permitir que la IA use la Web",
36
+ "webMaxCallsPerHour": "Máximo de llamadas Web por hora",
37
+ "chatAdapterPreset": "Adaptador de mensajes de entrada/salida",
38
+ "chatInputCode": "Mapeo de entrada (chat → Cerebrum Ultimate)",
39
+ "chatOutputCode": "Mapeo de salida (Cerebrum Ultimate → chat)",
40
+ "aiEducation": "Educación IA (gestionada por el usuario)"
41
+ },
42
+ "outputs": {
43
+ "summary": "Resumen/Estadísticas",
44
+ "anomalies": "Anomalías",
45
+ "assistant": "Asistente IA",
46
+ "knxCommands": "Operaciones KNX",
47
+ "ttsUltimate": "Anuncios TTS Ultimate"
48
+ },
49
+ "selectlists": {
50
+ "llmProvider": {
51
+ "openai_compat": "OpenAI / compatible con OpenAI",
52
+ "anthropic": "Anthropic (Claude)",
53
+ "ollama": "Ollama (local)",
54
+ "lmstudio": "Bionic LM Studio"
55
+ },
56
+ "reasoningEffort": {
57
+ "default": "Automático (valor del modelo/proveedor)",
58
+ "none": "Ninguno",
59
+ "minimal": "Mínimo",
60
+ "low": "Bajo",
61
+ "medium": "Medio",
62
+ "high": "Alto",
63
+ "xhigh": "Muy alto",
64
+ "max": "Máximo"
65
+ },
66
+ "localContext": {
67
+ "maximum": "Máximo",
68
+ "k4": "4K",
69
+ "k8": "8K",
70
+ "k16": "16K",
71
+ "k32": "32K",
72
+ "k64": "64K",
73
+ "k128": "128K",
74
+ "k256": "256K"
75
+ },
76
+ "chatAdapter": {
77
+ "none": "Sin adaptador"
78
+ }
79
+ },
80
+ "messages": {
81
+ "setupDoctorLoading": "Analizando esta instalación…",
82
+ "setupDoctorUnavailable": "Setup Doctor no está disponible temporalmente.",
83
+ "setupDoctorPromptsTitle": "Probar tu instalación",
84
+ "setupDoctorPromptsHint": "Cada sugerencia abre el Asistente Web con una consulta personalizada y segura. Nada se ejecuta automáticamente.",
85
+ "setupDoctorDeployHint": "Setup Doctor lee el último flow desplegado. Despliega los cambios y vuelve a comprobar.",
86
+ "setupDoctorPass": "OK",
87
+ "setupDoctorWarn": "Revisar",
88
+ "setupDoctorFail": "Corregir",
89
+ "setupDoctorInfo": "Opcional",
90
+ "webAccessHint": "El modelo elige semánticamente esta herramienta Web general para cada solicitud clara del chat o programada. Si falta un alcance esencial, pide una aclaración al usuario antes de buscar; no se usan consultas periódicas en segundo plano, palabras clave ni clasificadores de intención. Los sitios externos y el servicio de búsqueda reciben la consulta y la IP pública de este servidor. Los datos privados de KNX, cámaras, chat, memoria y credenciales nunca se añaden automáticamente.",
91
+ "webBudgetHint": "El presupuesto deslizante cuenta las llamadas externas reales de las conversaciones y las tareas programadas creadas por el usuario.",
92
+ "lmStudioContextAvailable": "Contexto máximo del modelo",
93
+ "lmStudioContextLoading": "Comprobando el contexto activo del modelo",
94
+ "lmStudioContextInactive": "Modelo inactivo; se usarán los valores predeterminados de Bionic en la primera solicitud",
95
+ "lmStudioContextConfigured": "Contexto activo del modelo",
96
+ "lmStudioContextFailed": "No se pudo configurar el contexto del modelo",
97
+ "lmStudioContextCurrentlyLoaded": "cargado actualmente",
98
+ "etsAccessHint": "Selecciona las direcciones de grupo disponibles para Cerebrum Ultimate. Todas las direcciones seleccionadas están activas y se pueden leer; todas las direcciones seleccionadas no marcadas como Solo lectura se pueden escribir. Los proveedores cloud reciben todo el catálogo ETS semántico seleccionado; los modelos locales reciben lo que cabe en la ventana de contexto elegida y pueden recuperar localmente los detalles que falten.",
99
+ "etsFilterPlaceholder": "Filtrar por nombre, GA o DPT…",
100
+ "etsSelected": "seleccionadas",
101
+ "etsReadOnly": "Solo lectura",
102
+ "etsReadOnlyBulk": "Solo lectura para las direcciones mostradas",
103
+ "etsNoGateway": "Selecciona una pasarela KNX.",
104
+ "etsNoGa": "No se encontraron direcciones de grupo. Importa la lista ETS en la pasarela KNX.",
105
+ "etsCsvError": "No se pudo cargar la lista de direcciones de grupo desde la pasarela.",
106
+ "reasoningEffortHint": "Preferencia opcional para los modelos que admiten esfuerzo de razonamiento. Automático no envía ninguna preferencia; si el proveedor o el modelo rechaza el valor elegido, Cerebrum Ultimate reintenta sin él.",
107
+ "localContextBudget": "Ventana de contexto local",
108
+ "localContextHint": "Establece el contexto máximo solo para modelos locales. Máximo usa la ventana conocida del modelo y oculta los tamaños no disponibles. Los proveedores cloud ignoran este selector y reciben todo el catálogo ETS semántico seleccionado.",
109
+ "ollamaNotSupported": "Ollama local mode: API key not required. Default endpoint is http://localhost:11434/api/chat.",
110
+ "ollamaNoModels": "No local Ollama model found. Install one or pick one from the library.",
111
+ "installingOllamaModel": "Starting Ollama and installing model…",
112
+ "installedOllamaModel": "Ollama model installed",
113
+ "installOllamaModelFailed": "Failed to install Ollama model",
114
+ "ollamaInstallSteps": "1) Open the model library and copy the model name (for example llama3.1). 2) Put the name in the Model field and click Install it.",
115
+ "ollamaStartedAuto": "Ollama server started automatically.",
116
+ "detectedAdaptersLoading": "Detectando nodos compatibles instalados…",
117
+ "detectedAdaptersNone": "No se detectó ningún nodo compatible.",
118
+ "detectedAdaptersUnavailable": "La detección de nodos compatibles no está disponible temporalmente.",
119
+ "detectedAdapterDetected": "Detectado",
120
+ "detectedAdapterControllers": "Controladores",
121
+ "detectedAdapterCameras": "Cámaras",
122
+ "detectedAdapterNodes": "Nodos",
123
+ "chatContextLoading": "Cargando el resumen del contexto del chat…",
124
+ "chatContextUnavailable": "El resumen del contexto del chat no está disponible temporalmente.",
125
+ "chatLearningOpenHint": "Abre la interfaz web directamente en el editor de aprendizaje CHAT compartido para ver, editar, copiar o guardar una copia de su archivo persistente.",
126
+ "cerebrumMemoryOpenHint": "Abre la memoria Cerebrum legible para consultar o editar hábitos, decisiones de los ocupantes y estados de la casa.",
127
+ "chatContextIntro": "El chat recibe automáticamente estas fuentes. Las rutas siguientes son las que usa realmente esta instalación de Node-RED.",
128
+ "chatContextLimitLabel": "Contexto operativo máximo",
129
+ "chatContextProviderManaged": "gestionado por el proveedor/modelo seleccionado",
130
+ "chatContextTokens": "tokens",
131
+ "chatContextLastPromptLabel": "Tamaño real del último prompt del chat",
132
+ "chatContextLastPromptUnavailable": "no disponible hasta la primera solicitud del chat",
133
+ "chatContextExactInputTokens": "tokens de entrada medidos por el proveedor",
134
+ "chatContextEstimatedInputTokens": "tokens de entrada estimados",
135
+ "chatContextImages": "imágenes",
136
+ "chatContextSourcesTitle": "Fuentes incluidas",
137
+ "chatContextFilesTitle": "Archivos de contexto persistentes",
138
+ "chatContextDirectoriesTitle": "Archivo de telegramas KNX",
139
+ "chatContextSourceKnxTraffic": "Análisis KNX derivado y los eventos exactos más recientes del intervalo predeterminado de 20 minutos o explícito, limitados automáticamente a la ventana activa del modelo local.",
140
+ "chatContextSourceAdapterHistory": "Eventos exactos más recientes de adaptadores del mismo intervalo, limitados automáticamente a la ventana activa del modelo local.",
141
+ "chatContextSourceEtsProject": "Catálogo ETS semántico seleccionado completo para modelos cloud. Los modelos locales reciben el catálogo completo cuando cabe en la ventana; de lo contrario reciben un índice ajustado y los detalles exactos solicitados por el modelo. Código Function solo para una revisión explícita.",
142
+ "chatContextSourceMemoryEducation": "Contexto de sesión, Educación IA, memoria doméstica limitada y planificaciones activas.",
143
+ "chatContextSourceCameras": "Cámaras detectadas y sus capacidades disponibles.",
144
+ "chatContextSourceBadge": "Fuente",
145
+ "chatContextFileChatContext": "Turnos persistentes, instrucciones y reglas de notificación de cámaras.",
146
+ "chatContextFileHomeMemory": "Solo memoria doméstica aprendida y limitada; la Educación IA permanece en la propiedad del nodo.",
147
+ "chatContextFileSchedules": "Estado de ejecución persistente y autoritativo de las planificaciones y recordatorios de este nodo.",
148
+ "chatContextFileSchedulesReadable": "Vista legible generada de las planificaciones y recordatorios de este nodo.",
149
+ "chatContextFileAssistantConfig": "Configuración persistente de Cerebrum y áreas semánticas de este nodo.",
150
+ "chatContextFileLastChatPrompt": "Copia local temporal de los últimos mensajes system y user enviados al modelo de chat; se sobrescribe en cada solicitud.",
151
+ "chatContextFileBadge": "Archivo",
152
+ "chatContextDirectoryRoot": "Raíz del archivo de telegramas",
153
+ "chatContextDirectoryNode": "Archivo de telegramas de este nodo",
154
+ "chatContextDirectoryBadge": "KNX",
155
+ "chatContextDirectoryAdapterRoot": "Raíz del archivo de eventos de adaptadores",
156
+ "chatContextDirectoryAdapterNode": "Archivo de eventos de adaptadores de este nodo",
157
+ "chatContextDirectoryAdapterBadge": "Adaptador",
158
+ "chatContextTelegramPattern": "Archivos diarios",
159
+ "chatAdapterIntro": "Elige un preajuste para insertar su código de mapeo de entrada y salida. La lista se carga desde el archivo de adaptadores de chat incluido; el código generado sigue siendo editable.",
160
+ "chatAdapterCodeHelp": "Los mapeos se ejecutan de forma síncrona. Devuelve msg para continuar o ningún valor para descartarlo. Los errores se capturan y notifican sin detener Node-RED.",
161
+ "homeIntelligenceIntro": "El nodo crea un modelo ETS semántico multilingüe. Las notificaciones proactivas solo se consideran cuando la Educación IA las solicita explícitamente; nunca envía por sí solo un comando KNX.",
162
+ "aiEducationHelp": "Solo el usuario puede editar esta propiedad del nodo. Úsala para instrucciones duraderas y reglas de notificación proactiva, incluidas las condiciones, la duración, las horas silenciosas y la repetición. El modelo la lee como una instrucción autoritativa, pero nunca la escribe. Los hechos y preferencias solicitados en el chat se guardan en la memoria aprendida del chat; las planificaciones, recordatorios, monitorizaciones y comandos futuros, únicos o recurrentes, se guardan mediante el planificador semántico. No se requieren frases activadoras ni routing por intents. Máximo 16.000 caracteres."
163
+ },
164
+ "placeholder": {
165
+ "llmBaseUrl": "https://api.openai.com/v1/chat/completions (or your compatible endpoint)",
166
+ "llmApiKey": "Paste API key (starts with sk-)",
167
+ "llmModel": "e.g. gpt-4o-mini",
168
+ "llmSystemPrompt": "Optional. Leave empty for default.",
169
+ "aiEducation": "Ejemplo: responde de forma breve. Avisa a mi último chat si una ventana sigue abierta 30 minutos; no me avises entre las 23:00 y las 07:00."
170
+ },
171
+ "sidebar": {
172
+ "ui": {
173
+ "refreshNodeList": "Actualizar lista de nodos",
174
+ "refreshSummary": "Actualizar resumen",
175
+ "auto": "Auto",
176
+ "sections": {
177
+ "summary": "Resumen",
178
+ "anomalies": "Anomalías",
179
+ "ask": "Preguntar"
180
+ },
181
+ "empty": {
182
+ "noNodes": "No se encontraron nodos Cerebrum Ultimate.",
183
+ "noAnomalies": "Sin anomalías."
184
+ },
185
+ "chat": {
186
+ "placeholder": "Haz una pregunta sobre el tráfico KNX…",
187
+ "send": "Enviar",
188
+ "pending": "Pensando…",
189
+ "llmDisabled": "LLM deshabilitado en la configuración del nodo",
190
+ "emptyAnswer": "(respuesta vacía)"
191
+ },
192
+ "status": {
193
+ "ready": "Listo",
194
+ "loadingNodes": "Cargando nodos…",
195
+ "loading": "Cargando…",
196
+ "asking": "Preguntando…"
197
+ },
198
+ "errors": {
199
+ "loadNodes": "Error al cargar los nodos",
200
+ "loadState": "Error al cargar el estado",
201
+ "askFailed": "Falló la pregunta"
202
+ }
203
+ },
204
+ "summary": {
205
+ "noData": "No hay datos disponibles.",
206
+ "header": {
207
+ "gateway": "Gateway: {{gatewayName}}",
208
+ "updated": "Actualizado: {{at}}"
209
+ },
210
+ "analysisWindowLine": "Ventana de análisis: {{seconds}}s",
211
+ "statsLine": "Telegramas: {{telegrams}} · Tasa: {{rate}}/s · Eco: {{echoed}} · DPT desconocidos: {{unknownDpt}}",
212
+ "topGAsTitle": "Principales direcciones de grupo:",
213
+ "eventsTitle": "Eventos:",
214
+ "patternsTitle": "Patrones (secuencias recurrentes):",
215
+ "patternItem": "{{from}} → {{to}} ({{count}} veces en {{withinMs}}ms)"
216
+ }
217
+ },
218
+ "buttons": {
219
+ "refreshSetupDoctor": "Comprobar de nuevo",
220
+ "installOllamaModel": "2) Install it",
221
+ "ollamaLibrary": "Model library",
222
+ "downloadOllamaModel": "1) Download model",
223
+ "openChatLearning": "Abrir aprendizaje del chat IA",
224
+ "openCerebrumMemory": "Abrir memoria Cerebrum",
225
+ "etsSelectAll": "Seleccionar todo",
226
+ "etsSelectNone": "Deseleccionar todo",
227
+ "etsReadOnlyAll": "Marcar solo lectura",
228
+ "etsReadOnlyNone": "Quitar solo lectura"
229
+ }
230
+ }
231
+ }
@@ -10,6 +10,14 @@
10
10
  "migration_success": "Se ha iniciado la descarga de la copia de seguridad de los flujos. {{count}} nodos convertidos en KNX Utility. Revisa el resultado y pulsa Deploy para aplicarlo. Puedes deshacer la conversión con Deshacer.",
11
11
  "migration_backup_failed": "No se pudo iniciar la copia de seguridad de los flujos. No se convirtió ningún nodo:",
12
12
  "migration_failed": "Error al convertir en KNX Utility:",
13
+ "startup_migration": {
14
+ "title": "Nodos antiguos de KNX Ultimate",
15
+ "message": "Nodos antiguos encontrados en tus flujos y subflujos: HUE: {{hue}}; utilidades KNX: {{knx}}. Estos nodos siguen funcionando, pero están ocultos en la paleta. Migra estos nodos a HUE Controller y KNX Utility. Cada migración descarga una copia de seguridad de los flujos; revisa el resultado antes de hacer Deploy.",
16
+ "hue_button": "Migrar HUE ({{count}})",
17
+ "knx_button": "Migrar KNX ({{count}})",
18
+ "later": "Más tarde",
19
+ "unavailable": "La herramienta de migración no está disponible. Recarga el editor después de reiniciar Node-RED."
20
+ },
13
21
  "locale": "es",
14
22
  "function": "Función",
15
23
  "gateway": "Pasarela KNX",
@@ -47,7 +55,7 @@
47
55
  "2": "Último dispositivo en alerta"
48
56
  },
49
57
  "variable_name": "Nombre de variable",
50
- "variable_name_description": "Solo letras (A–Z, a–z). Este nombre determina las variables globales <nombre>_READ y <nombre>_WRITE.",
58
+ "variable_name_description": "Solo letras (A-Z, a-z). Este nombre determina las variables globales <nombre>_READ y <nombre>_WRITE.",
51
59
  "logger_outputs": {
52
60
  "0": "XML de diagnóstico ETS",
53
61
  "1": "Contador de telegramas"
@@ -0,0 +1,5 @@
1
+ <script type="text/html" data-help-name="knxUltimateAI">
2
+ <p><b>Il s’agit d’un nœud historique masqué, conservé uniquement pour les flows existants.</b></p>
3
+ <p>Pour toute nouvelle installation, utilisez le nœud autonome <b>Cerebrum Ultimate</b> du paquet <code>node-red-contrib-cerebrum-ultimate</code>. Il remplace ce nœud et utilise KNX Ultimate comme intégration compatible facultative.</p>
4
+ <p><a href="https://github.com/Supergiovane/node-red-contrib-cerebrum-ultimate#readme" target="_blank">Ouvrir la documentation de Cerebrum Ultimate</a>.</p>
5
+ </script>