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.
- package/CHANGELOG.md +9 -0
- package/README.md +5 -1
- package/nodes/knxUltimateAI.html +1820 -0
- package/nodes/knxUltimateAI.js +16797 -0
- package/nodes/knxUltimateAIHomeAssistant.html +40 -0
- package/nodes/knxUltimateAIHomeAssistant.js +152 -0
- package/nodes/knxUltimateHueController.html +1 -1
- package/nodes/knxUltimateMatterBridge.html +2 -2
- package/nodes/knxUltimateMatterControllerDevice.html +2 -2
- package/nodes/locales/de/knxUltimateAI.html +5 -0
- package/nodes/locales/de/knxUltimateAI.json +231 -0
- package/nodes/locales/de/knxUltimateUtility.json +8 -0
- package/nodes/locales/en/knxUltimateAI.html +5 -0
- package/nodes/locales/en/knxUltimateAI.json +234 -0
- package/nodes/locales/en/knxUltimateUtility.json +8 -0
- package/nodes/locales/es/knxUltimateAI.html +5 -0
- package/nodes/locales/es/knxUltimateAI.json +231 -0
- package/nodes/locales/es/knxUltimateUtility.json +9 -1
- package/nodes/locales/fr/knxUltimateAI.html +5 -0
- package/nodes/locales/fr/knxUltimateAI.json +231 -0
- package/nodes/locales/fr/knxUltimateUtility.json +8 -0
- package/nodes/locales/it/knxUltimateAI.html +5 -0
- package/nodes/locales/it/knxUltimateAI.json +234 -0
- package/nodes/locales/it/knxUltimateUtility.json +8 -0
- package/nodes/locales/zh-CN/knxUltimateAI.html +5 -0
- package/nodes/locales/zh-CN/knxUltimateAI.json +231 -0
- package/nodes/locales/zh-CN/knxUltimateUtility.json +8 -0
- package/nodes/plugins/knxUltimate-cerebrum-runtime-plugin.js +79 -0
- package/nodes/plugins/knxUltimate-migration-notice-plugin.html +19 -0
- package/nodes/plugins/knxUltimateAI-vue/assets/app.css +1 -0
- package/nodes/plugins/knxUltimateAI-vue/assets/app.js +13 -0
- package/nodes/plugins/knxUltimateAI-vue/assets/chunk-html2canvas.esm.js +5 -0
- package/nodes/plugins/knxUltimateAI-vue/assets/chunk-index.es.js +5 -0
- package/nodes/plugins/knxUltimateAI-vue/assets/chunk-jspdf.es.min.js +79 -0
- package/nodes/plugins/knxUltimateAI-vue/assets/chunk-purify.es.js +3 -0
- package/nodes/plugins/knxUltimateAI-vue/index.html +13 -0
- package/nodes/plugins/knxUltimateViewer-vue/assets/app.js +2 -2
- package/nodes/utils/knxAiCamera.js +302 -0
- package/nodes/utils/knxAiCatalogRetrieval.js +349 -0
- package/nodes/utils/knxAiCerebrum.js +406 -0
- package/nodes/utils/knxAiChatContext.js +496 -0
- package/nodes/utils/knxAiEventHistory.js +521 -0
- package/nodes/utils/knxAiHomeMemory.js +1021 -0
- package/nodes/utils/knxAiScheduler.js +445 -0
- package/nodes/utils/knxAiSemanticContext.js +662 -0
- package/nodes/utils/knxAiTelegramVoice.js +545 -0
- package/nodes/utils/knxAiWebAccess.js +631 -0
- package/package.json +17 -9
- package/resources/KNXAIChatAdapterMappings.js +416 -0
- package/resources/hueControllerMigrationDialog.js +3 -0
- package/resources/knxUtilityMigration.js +3 -0
- package/resources/legacyMigrationNotice.js +143 -0
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
{
|
|
2
|
+
"knxUltimateAI": {
|
|
3
|
+
"title": "Nœud IA historique — utiliser Cerebrum Ultimate",
|
|
4
|
+
"sections": {
|
|
5
|
+
"groupAssistant": "Assistant IA",
|
|
6
|
+
"groupChatHome": "Cerebrum (BETA)",
|
|
7
|
+
"setupDoctor": "Setup Doctor",
|
|
8
|
+
"webIntelligence": "Intelligence Web",
|
|
9
|
+
"detectedAdapters": "Nœuds compatibles détectés et utilisés dans le chat",
|
|
10
|
+
"chatContextOverview": "Aperçu du contexte du chat",
|
|
11
|
+
"chatLearning": "Apprentissage du chat IA",
|
|
12
|
+
"cerebrumMemory": "Mémoire Cerebrum",
|
|
13
|
+
"quickSetup": "Configurer l'assistant",
|
|
14
|
+
"etsAccess": "Accès aux objets ETS",
|
|
15
|
+
"llmConnection": "Connexion Assistant IA",
|
|
16
|
+
"chatAdapter": "Ports d’entrée et de sortie du chat",
|
|
17
|
+
"homeIntelligence": "Éducation IA et mémoire",
|
|
18
|
+
"advanced": "Fournisseur et limites"
|
|
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": "Effort de raisonnement",
|
|
30
|
+
"llmLocalContextTokens": "Fenêtre de contexte locale",
|
|
31
|
+
"llmSystemPrompt": "System prompt",
|
|
32
|
+
"llmIncludeRaw": "Include raw payload hex",
|
|
33
|
+
"llmAllowKnxCommands": "Autoriser l’IA à lire les états KNX et commander les actionneurs",
|
|
34
|
+
"llmRequireCommandConfirmation": "Demander confirmation avant d’envoyer les commandes KNX",
|
|
35
|
+
"webAccessEnabled": "Autoriser l’IA à utiliser le Web",
|
|
36
|
+
"webMaxCallsPerHour": "Nombre maximal d’appels Web par heure",
|
|
37
|
+
"chatAdapterPreset": "Adaptateur des messages d’entrée/sortie",
|
|
38
|
+
"chatInputCode": "Mappage d’entrée (chat → Cerebrum Ultimate)",
|
|
39
|
+
"chatOutputCode": "Mappage de sortie (Cerebrum Ultimate → chat)",
|
|
40
|
+
"aiEducation": "Éducation IA (gérée par l'utilisateur)"
|
|
41
|
+
},
|
|
42
|
+
"outputs": {
|
|
43
|
+
"summary": "Résumé/Stats",
|
|
44
|
+
"anomalies": "Anomalies",
|
|
45
|
+
"assistant": "Assistant IA",
|
|
46
|
+
"knxCommands": "Opérations KNX",
|
|
47
|
+
"ttsUltimate": "Annonces TTS Ultimate"
|
|
48
|
+
},
|
|
49
|
+
"selectlists": {
|
|
50
|
+
"llmProvider": {
|
|
51
|
+
"openai_compat": "OpenAI / compatible OpenAI",
|
|
52
|
+
"anthropic": "Anthropic (Claude)",
|
|
53
|
+
"ollama": "Ollama (local)",
|
|
54
|
+
"lmstudio": "Bionic LM Studio"
|
|
55
|
+
},
|
|
56
|
+
"reasoningEffort": {
|
|
57
|
+
"default": "Automatique (valeur du modèle/fournisseur)",
|
|
58
|
+
"none": "Aucun",
|
|
59
|
+
"minimal": "Minimal",
|
|
60
|
+
"low": "Faible",
|
|
61
|
+
"medium": "Moyen",
|
|
62
|
+
"high": "Élevé",
|
|
63
|
+
"xhigh": "Très élevé",
|
|
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": "Aucun adaptateur"
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
"messages": {
|
|
81
|
+
"setupDoctorLoading": "Analyse de cette installation…",
|
|
82
|
+
"setupDoctorUnavailable": "Setup Doctor est temporairement indisponible.",
|
|
83
|
+
"setupDoctorPromptsTitle": "Essayer votre installation",
|
|
84
|
+
"setupDoctorPromptsHint": "Chaque suggestion ouvre l’Assistant Web avec une demande personnalisée et sûre. Rien n’est exécuté automatiquement.",
|
|
85
|
+
"setupDoctorDeployHint": "Setup Doctor lit le dernier flow déployé. Déployez les modifications, puis revérifiez.",
|
|
86
|
+
"setupDoctorPass": "OK",
|
|
87
|
+
"setupDoctorWarn": "Vérifier",
|
|
88
|
+
"setupDoctorFail": "Corriger",
|
|
89
|
+
"setupDoctorInfo": "Optionnel",
|
|
90
|
+
"webAccessHint": "Le modèle choisit sémantiquement cet outil Web général pour chaque demande claire du chat ou planifiée. Si une portée essentielle est ambiguë, il demande une précision à l’utilisateur avant la recherche ; aucun polling en arrière-plan, mot-clé ni classificateur d’intention n’est utilisé. Les sites externes et le service de recherche reçoivent la requête et l’adresse IP publique de ce serveur. Les données privées KNX, caméra, chat, mémoire et identifiants d’accès ne sont jamais ajoutées automatiquement.",
|
|
91
|
+
"webBudgetHint": "Le budget glissant compte les appels externes réels des conversations et des tâches planifiées créées par l’utilisateur.",
|
|
92
|
+
"lmStudioContextAvailable": "Contexte maximal du modèle",
|
|
93
|
+
"lmStudioContextLoading": "Vérification du contexte actif du modèle",
|
|
94
|
+
"lmStudioContextInactive": "Modèle inactif ; les valeurs par défaut de Bionic seront utilisées à la première requête",
|
|
95
|
+
"lmStudioContextConfigured": "Contexte actif du modèle",
|
|
96
|
+
"lmStudioContextFailed": "Impossible de configurer le contexte du modèle",
|
|
97
|
+
"lmStudioContextCurrentlyLoaded": "actuellement chargé",
|
|
98
|
+
"etsAccessHint": "Sélectionnez les adresses de groupe disponibles pour Cerebrum Ultimate. Toute adresse sélectionnée est active et lisible ; toute adresse sélectionnée non marquée Lecture seule est inscriptible. Les fournisseurs cloud reçoivent tout le catalogue ETS sémantique sélectionné ; les modèles locaux reçoivent ce qui tient dans la fenêtre de contexte choisie et peuvent récupérer localement les détails manquants.",
|
|
99
|
+
"etsFilterPlaceholder": "Filtrer par nom, GA ou DPT…",
|
|
100
|
+
"etsSelected": "sélectionnées",
|
|
101
|
+
"etsReadOnly": "Lecture seule",
|
|
102
|
+
"etsReadOnlyBulk": "Lecture seule pour les adresses affichées",
|
|
103
|
+
"etsNoGateway": "Sélectionnez une passerelle KNX.",
|
|
104
|
+
"etsNoGa": "Aucune adresse de groupe trouvée. Importez la liste ETS dans la passerelle KNX.",
|
|
105
|
+
"etsCsvError": "Impossible de charger la liste des adresses de groupe depuis la passerelle.",
|
|
106
|
+
"reasoningEffortHint": "Préférence facultative pour les modèles prenant en charge l'effort de raisonnement. Automatique n'envoie aucune préférence ; si le fournisseur ou le modèle refuse la valeur choisie, Cerebrum Ultimate réessaie sans elle.",
|
|
107
|
+
"localContextBudget": "Fenêtre de contexte locale",
|
|
108
|
+
"localContextHint": "Définit le contexte maximal uniquement pour les modèles locaux. Maximum utilise la fenêtre connue du modèle et masque les tailles indisponibles. Les fournisseurs cloud ignorent ce sélecteur et reçoivent tout le catalogue ETS sémantique sélectionné.",
|
|
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": "Détection des nœuds compatibles installés…",
|
|
117
|
+
"detectedAdaptersNone": "Aucun nœud compatible détecté.",
|
|
118
|
+
"detectedAdaptersUnavailable": "La détection des nœuds compatibles est temporairement indisponible.",
|
|
119
|
+
"detectedAdapterDetected": "Détecté",
|
|
120
|
+
"detectedAdapterControllers": "Contrôleurs",
|
|
121
|
+
"detectedAdapterCameras": "Caméras",
|
|
122
|
+
"detectedAdapterNodes": "Nœuds",
|
|
123
|
+
"chatContextLoading": "Chargement du résumé du contexte du chat…",
|
|
124
|
+
"chatContextUnavailable": "Le résumé du contexte du chat est temporairement indisponible.",
|
|
125
|
+
"chatLearningOpenHint": "Ouvre l’interface web directement dans l’éditeur d’apprentissage CHAT partagé pour afficher, modifier, copier ou sauvegarder son fichier persistant.",
|
|
126
|
+
"cerebrumMemoryOpenHint": "Ouvre la mémoire Cerebrum lisible pour consulter ou modifier les habitudes, les décisions des occupants et les états du logement.",
|
|
127
|
+
"chatContextIntro": "Le chat reçoit automatiquement ces sources. Les chemins ci-dessous sont ceux réellement utilisés par cette installation Node-RED.",
|
|
128
|
+
"chatContextLimitLabel": "Contexte opérationnel maximal",
|
|
129
|
+
"chatContextProviderManaged": "géré par le fournisseur/modèle sélectionné",
|
|
130
|
+
"chatContextTokens": "jetons",
|
|
131
|
+
"chatContextLastPromptLabel": "Taille réelle du dernier prompt du chat",
|
|
132
|
+
"chatContextLastPromptUnavailable": "indisponible jusqu'à la première demande du chat",
|
|
133
|
+
"chatContextExactInputTokens": "jetons d'entrée mesurés par le fournisseur",
|
|
134
|
+
"chatContextEstimatedInputTokens": "jetons d'entrée estimés",
|
|
135
|
+
"chatContextImages": "images",
|
|
136
|
+
"chatContextSourcesTitle": "Sources incluses",
|
|
137
|
+
"chatContextFilesTitle": "Fichiers de contexte persistants",
|
|
138
|
+
"chatContextDirectoriesTitle": "Archive des télégrammes KNX",
|
|
139
|
+
"chatContextSourceKnxTraffic": "Analyse KNX dérivée et événements exacts les plus récents de l’intervalle implicite de 20 minutes ou explicite, automatiquement limités à la fenêtre active du modèle local.",
|
|
140
|
+
"chatContextSourceAdapterHistory": "Événements exacts les plus récents des adaptateurs pour le même intervalle, automatiquement limités à la fenêtre active du modèle local.",
|
|
141
|
+
"chatContextSourceEtsProject": "Catalogue ETS sémantique sélectionné complet pour les modèles cloud. Les modèles locaux reçoivent le catalogue complet lorsqu’il tient dans la fenêtre, sinon un index adapté et les détails exacts demandés par le modèle. Source Function uniquement pour une revue explicite du code.",
|
|
142
|
+
"chatContextSourceMemoryEducation": "Contexte de session, Éducation IA, mémoire domestique limitée et planifications actives.",
|
|
143
|
+
"chatContextSourceCameras": "Caméras détectées et leurs fonctionnalités disponibles.",
|
|
144
|
+
"chatContextSourceBadge": "Source",
|
|
145
|
+
"chatContextFileChatContext": "Tours de conversation persistants, instructions et règles de notification des caméras.",
|
|
146
|
+
"chatContextFileHomeMemory": "Mémoire domestique apprise et limitée uniquement ; l’Éducation IA reste dans la propriété du nœud.",
|
|
147
|
+
"chatContextFileSchedules": "État d’exécution persistant faisant autorité pour les planifications et rappels de ce nœud.",
|
|
148
|
+
"chatContextFileSchedulesReadable": "Vue lisible générée des planifications et rappels de ce nœud.",
|
|
149
|
+
"chatContextFileAssistantConfig": "Configuration persistante de Cerebrum et zones sémantiques de ce nœud.",
|
|
150
|
+
"chatContextFileLastChatPrompt": "Copie locale temporaire des derniers messages système et utilisateur envoyés au modèle de chat ; remplacée à chaque requête.",
|
|
151
|
+
"chatContextFileBadge": "Fichier",
|
|
152
|
+
"chatContextDirectoryRoot": "Racine de l'archive des télégrammes",
|
|
153
|
+
"chatContextDirectoryNode": "Archive des télégrammes de ce nœud",
|
|
154
|
+
"chatContextDirectoryBadge": "KNX",
|
|
155
|
+
"chatContextDirectoryAdapterRoot": "Racine de l’archive des événements des adaptateurs",
|
|
156
|
+
"chatContextDirectoryAdapterNode": "Archive des événements des adaptateurs de ce nœud",
|
|
157
|
+
"chatContextDirectoryAdapterBadge": "Adaptateur",
|
|
158
|
+
"chatContextTelegramPattern": "Fichiers quotidiens",
|
|
159
|
+
"chatAdapterIntro": "Choisissez un préréglage pour insérer son code de mappage d’entrée et de sortie. La liste est chargée depuis le fichier d’adaptateurs de chat fourni ; le code généré reste modifiable.",
|
|
160
|
+
"chatAdapterCodeHelp": "Les mappages s’exécutent de façon synchrone. Renvoyez msg pour continuer ou aucune valeur pour l’écarter. Les erreurs sont interceptées et signalées sans arrêter Node-RED.",
|
|
161
|
+
"homeIntelligenceIntro": "Le nœud crée un modèle ETS sémantique multilingue. Les notifications proactives ne sont envisagées que si l'Éducation IA les demande explicitement ; il n'envoie jamais de commande KNX de manière autonome.",
|
|
162
|
+
"aiEducationHelp": "Seul l’utilisateur peut modifier cette propriété du nœud. Utilisez-la pour les consignes durables et les règles de notification proactive, notamment les conditions, la durée, les heures silencieuses et la répétition. Le modèle la lit comme une consigne faisant autorité, mais ne l’écrit jamais. Les faits et préférences demandés dans le chat sont conservés dans la mémoire apprise du chat ; les planifications, rappels, surveillances et commandes futures, ponctuels ou récurrents, sont conservés par le planificateur sémantique. Aucune phrase déclencheuse ni aucun routage par intent n’est requis. Maximum 16 000 caractères."
|
|
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": "Exemple : répondre brièvement. Notifier mon dernier chat si une fenêtre reste ouverte 30 minutes ; ne pas me notifier entre 23:00 et 07:00."
|
|
170
|
+
},
|
|
171
|
+
"sidebar": {
|
|
172
|
+
"ui": {
|
|
173
|
+
"refreshNodeList": "Rafraîchir la liste des nœuds",
|
|
174
|
+
"refreshSummary": "Rafraîchir le résumé",
|
|
175
|
+
"auto": "Auto",
|
|
176
|
+
"sections": {
|
|
177
|
+
"summary": "Résumé",
|
|
178
|
+
"anomalies": "Anomalies",
|
|
179
|
+
"ask": "Demander"
|
|
180
|
+
},
|
|
181
|
+
"empty": {
|
|
182
|
+
"noNodes": "Aucun nœud Cerebrum Ultimate trouvé.",
|
|
183
|
+
"noAnomalies": "Aucune anomalie."
|
|
184
|
+
},
|
|
185
|
+
"chat": {
|
|
186
|
+
"placeholder": "Posez une question sur le trafic KNX…",
|
|
187
|
+
"send": "Envoyer",
|
|
188
|
+
"pending": "Je réfléchis…",
|
|
189
|
+
"llmDisabled": "LLM désactivé dans la configuration du nœud",
|
|
190
|
+
"emptyAnswer": "(réponse vide)"
|
|
191
|
+
},
|
|
192
|
+
"status": {
|
|
193
|
+
"ready": "Prêt",
|
|
194
|
+
"loadingNodes": "Chargement des nœuds…",
|
|
195
|
+
"loading": "Chargement…",
|
|
196
|
+
"asking": "Question…"
|
|
197
|
+
},
|
|
198
|
+
"errors": {
|
|
199
|
+
"loadNodes": "Impossible de charger les nœuds",
|
|
200
|
+
"loadState": "Impossible de charger l’état",
|
|
201
|
+
"askFailed": "Échec de la question"
|
|
202
|
+
}
|
|
203
|
+
},
|
|
204
|
+
"summary": {
|
|
205
|
+
"noData": "Aucune donnée disponible.",
|
|
206
|
+
"header": {
|
|
207
|
+
"gateway": "Passerelle : {{gatewayName}}",
|
|
208
|
+
"updated": "Mis à jour : {{at}}"
|
|
209
|
+
},
|
|
210
|
+
"analysisWindowLine": "Fenêtre d’analyse : {{seconds}} s",
|
|
211
|
+
"statsLine": "Télégrammes : {{telegrams}} · Taux : {{rate}}/s · Écho : {{echoed}} · DPT inconnus : {{unknownDpt}}",
|
|
212
|
+
"topGAsTitle": "Principales adresses de groupe :",
|
|
213
|
+
"eventsTitle": "Événements :",
|
|
214
|
+
"patternsTitle": "Motifs (séquences récurrentes) :",
|
|
215
|
+
"patternItem": "{{from}} → {{to}} ({{count}} fois en {{withinMs}}ms)"
|
|
216
|
+
}
|
|
217
|
+
},
|
|
218
|
+
"buttons": {
|
|
219
|
+
"refreshSetupDoctor": "Revérifier",
|
|
220
|
+
"installOllamaModel": "2) Install it",
|
|
221
|
+
"ollamaLibrary": "Model library",
|
|
222
|
+
"downloadOllamaModel": "1) Download model",
|
|
223
|
+
"openChatLearning": "Ouvrir l’apprentissage du chat IA",
|
|
224
|
+
"openCerebrumMemory": "Ouvrir la mémoire Cerebrum",
|
|
225
|
+
"etsSelectAll": "Tout sélectionner",
|
|
226
|
+
"etsSelectNone": "Tout désélectionner",
|
|
227
|
+
"etsReadOnlyAll": "Activer lecture seule",
|
|
228
|
+
"etsReadOnlyNone": "Retirer lecture seule"
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
}
|
|
@@ -10,6 +10,14 @@
|
|
|
10
10
|
"migration_success": "Le téléchargement de la sauvegarde des flux a démarré. {{count}} nœuds convertis en KNX Utility. Vérifiez le résultat et cliquez sur Deploy pour l’appliquer. Vous pouvez revenir en arrière avec Annuler.",
|
|
11
11
|
"migration_backup_failed": "Impossible de démarrer la sauvegarde des flux. Aucun nœud n’a été converti :",
|
|
12
12
|
"migration_failed": "Échec de la conversion en KNX Utility :",
|
|
13
|
+
"startup_migration": {
|
|
14
|
+
"title": "Anciens nœuds KNX Ultimate",
|
|
15
|
+
"message": "Anciens nœuds détectés dans vos flux et sous-flux : HUE : {{hue}} ; utilitaires KNX : {{knx}}. Ces nœuds fonctionnent toujours, mais sont masqués dans la palette. Migrez-les vers HUE Controller et KNX Utility. Chaque migration télécharge une sauvegarde des flux ; vérifiez le résultat avant de déployer.",
|
|
16
|
+
"hue_button": "Migrer HUE ({{count}})",
|
|
17
|
+
"knx_button": "Migrer KNX ({{count}})",
|
|
18
|
+
"later": "Plus tard",
|
|
19
|
+
"unavailable": "L’outil de migration n’est pas disponible. Rechargez l’éditeur après avoir redémarré Node-RED."
|
|
20
|
+
},
|
|
13
21
|
"locale": "fr",
|
|
14
22
|
"function": "Fonction",
|
|
15
23
|
"gateway": "Passerelle KNX",
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<script type="text/html" data-help-name="knxUltimateAI">
|
|
2
|
+
<p><b>Questo è un nodo legacy nascosto, mantenuto soltanto per i flow esistenti.</b></p>
|
|
3
|
+
<p>Per le nuove installazioni usa il nodo standalone <b>Cerebrum Ultimate</b> del package <code>node-red-contrib-cerebrum-ultimate</code>. Ha sostituito questo nodo e usa KNX Ultimate come integrazione compatibile opzionale.</p>
|
|
4
|
+
<p><a href="https://github.com/Supergiovane/node-red-contrib-cerebrum-ultimate#readme" target="_blank">Apri la documentazione di Cerebrum Ultimate</a>.</p>
|
|
5
|
+
</script>
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
{
|
|
2
|
+
"knxUltimateAI": {
|
|
3
|
+
"title": "Nodo AI legacy — usa Cerebrum Ultimate",
|
|
4
|
+
"sections": {
|
|
5
|
+
"groupAssistant": "Assistente AI",
|
|
6
|
+
"groupChatHome": "Cerebrum (BETA)",
|
|
7
|
+
"setupDoctor": "Setup Doctor",
|
|
8
|
+
"webIntelligence": "Intelligenza Web",
|
|
9
|
+
"detectedAdapters": "Nodi compatibili rilevati ed usati in chat",
|
|
10
|
+
"chatContextOverview": "Contesto disponibile alla chat",
|
|
11
|
+
"chatLearning": "Apprendimento AI Chat",
|
|
12
|
+
"cerebrumMemory": "Memoria Cerebrum",
|
|
13
|
+
"quickSetup": "Configurazione assistente",
|
|
14
|
+
"etsAccess": "Accesso agli oggetti ETS",
|
|
15
|
+
"llmConnection": "Connessione Assistente AI",
|
|
16
|
+
"chatAdapter": "Chat PIN Input e Output",
|
|
17
|
+
"homeIntelligence": "Educazione AI e memoria",
|
|
18
|
+
"advanced": "Provider e limiti"
|
|
19
|
+
},
|
|
20
|
+
"properties": {
|
|
21
|
+
"server": "Gateway",
|
|
22
|
+
"name": "Nome",
|
|
23
|
+
"topic": "Topic",
|
|
24
|
+
"llmEnabled": "Abilita assistente LLM",
|
|
25
|
+
"llmProvider": "Provider",
|
|
26
|
+
"llmBaseUrl": "URL endpoint",
|
|
27
|
+
"llmApiKey": "API key",
|
|
28
|
+
"llmModel": "Modello",
|
|
29
|
+
"llmReasoningEffort": "Impegno di ragionamento",
|
|
30
|
+
"llmLocalContextTokens": "Finestra contesto locale",
|
|
31
|
+
"llmSystemPrompt": "Prompt di sistema",
|
|
32
|
+
"llmIncludeRaw": "Includi payload raw in hex",
|
|
33
|
+
"llmAllowKnxCommands": "Consenti all'AI di leggere stati KNX e comandare attuatori",
|
|
34
|
+
"llmRequireCommandConfirmation": "Chiedi conferma prima di inviare comandi KNX",
|
|
35
|
+
"webAccessEnabled": "Consenti all’AI di usare il Web",
|
|
36
|
+
"webMaxCallsPerHour": "Numero massimo di chiamate Web all’ora",
|
|
37
|
+
"chatAdapterPreset": "Adattatore messaggi ingresso/uscita",
|
|
38
|
+
"chatInputCode": "Mappatura ingresso (chat → Cerebrum Ultimate)",
|
|
39
|
+
"chatOutputCode": "Mappatura uscita (Cerebrum Ultimate → chat)",
|
|
40
|
+
"aiEducation": "Educazione AI (gestita dall'utente)"
|
|
41
|
+
},
|
|
42
|
+
"outputs": {
|
|
43
|
+
"summary": "Riepilogo/Statistiche",
|
|
44
|
+
"anomalies": "Anomalie",
|
|
45
|
+
"assistant": "Assistente AI",
|
|
46
|
+
"knxCommands": "Operazioni KNX",
|
|
47
|
+
"ttsUltimate": "Annunci TTS Ultimate"
|
|
48
|
+
},
|
|
49
|
+
"selectlists": {
|
|
50
|
+
"llmProvider": {
|
|
51
|
+
"openai_compat": "OpenAI / compatibile OpenAI",
|
|
52
|
+
"anthropic": "Anthropic (Claude)",
|
|
53
|
+
"ollama": "Ollama (locale)",
|
|
54
|
+
"lmstudio": "Bionic LM Studio"
|
|
55
|
+
},
|
|
56
|
+
"reasoningEffort": {
|
|
57
|
+
"default": "Automatico (predefinito del modello/provider)",
|
|
58
|
+
"none": "Nessuno",
|
|
59
|
+
"minimal": "Minimo",
|
|
60
|
+
"low": "Basso",
|
|
61
|
+
"medium": "Medio",
|
|
62
|
+
"high": "Alto",
|
|
63
|
+
"xhigh": "Molto alto",
|
|
64
|
+
"max": "Massimo"
|
|
65
|
+
},
|
|
66
|
+
"localContext": {
|
|
67
|
+
"maximum": "Massimo",
|
|
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": "Nessun adattatore"
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
"buttons": {
|
|
81
|
+
"refreshSetupDoctor": "Ricontrolla",
|
|
82
|
+
"refreshModels": "Aggiorna",
|
|
83
|
+
"installOllamaModel": "2) Installalo",
|
|
84
|
+
"ollamaLibrary": "Libreria modelli",
|
|
85
|
+
"downloadOllamaModel": "1) Scarica il modello",
|
|
86
|
+
"openChatLearning": "Apri Apprendimento AI Chat",
|
|
87
|
+
"openCerebrumMemory": "Apri memoria Cerebrum",
|
|
88
|
+
"etsSelectAll": "Seleziona tutti",
|
|
89
|
+
"etsSelectNone": "Deseleziona tutti",
|
|
90
|
+
"etsReadOnlyAll": "Imposta sola lettura",
|
|
91
|
+
"etsReadOnlyNone": "Togli sola lettura"
|
|
92
|
+
},
|
|
93
|
+
"messages": {
|
|
94
|
+
"setupDoctorLoading": "Sto analizzando questo impianto…",
|
|
95
|
+
"setupDoctorUnavailable": "Setup Doctor non è temporaneamente disponibile.",
|
|
96
|
+
"setupDoctorPromptsTitle": "Prova il tuo impianto",
|
|
97
|
+
"setupDoctorPromptsHint": "Ogni suggerimento apre l’Assistant Web con una richiesta personalizzata e sicura. Nulla viene eseguito automaticamente.",
|
|
98
|
+
"setupDoctorDeployHint": "Setup Doctor legge l’ultimo flow distribuito. Fai Deploy delle modifiche e poi ricontrolla.",
|
|
99
|
+
"setupDoctorPass": "OK",
|
|
100
|
+
"setupDoctorWarn": "Controlla",
|
|
101
|
+
"setupDoctorFail": "Correggi",
|
|
102
|
+
"setupDoctorInfo": "Opzionale",
|
|
103
|
+
"webAccessHint": "Il modello sceglie semanticamente questo tool Web generale per ogni richiesta chiara della chat o pianificata. Se manca un dettaglio essenziale, chiede chiarimenti all’utente prima della ricerca; non vengono usati polling in background, parole chiave o classificatori d’intento. I siti esterni e il servizio di ricerca ricevono la query e l’IP pubblico del server. Dati privati KNX, telecamere, chat, memoria e credenziali non vengono mai aggiunti automaticamente.",
|
|
104
|
+
"webBudgetHint": "Il budget scorrevole conteggia le chiamate esterne reali delle conversazioni e delle pianificazioni create dall’utente.",
|
|
105
|
+
"loadingModels": "Carico i modelli…",
|
|
106
|
+
"loadedModels": "Modelli caricati",
|
|
107
|
+
"lmStudioContextAvailable": "Contesto massimo del modello",
|
|
108
|
+
"lmStudioContextLoading": "Verifica del contesto attivo del modello",
|
|
109
|
+
"lmStudioContextInactive": "Modello inattivo; alla prima richiesta verranno usati i valori predefiniti di Bionic",
|
|
110
|
+
"lmStudioContextConfigured": "Contesto attivo del modello",
|
|
111
|
+
"lmStudioContextFailed": "Impossibile configurare il contesto del modello",
|
|
112
|
+
"lmStudioContextCurrentlyLoaded": "attualmente caricato",
|
|
113
|
+
"etsAccessHint": "Seleziona gli indirizzi di gruppo disponibili a Cerebrum Ultimate. Ogni indirizzo selezionato è attivo e leggibile; ogni indirizzo selezionato non marcato Sola lettura è scrivibile. I provider cloud ricevono l'intero catalogo ETS semantico selezionato; i modelli locali ricevono ciò che entra nella finestra di contesto scelta e possono recuperare localmente i dettagli mancanti.",
|
|
114
|
+
"etsFilterPlaceholder": "Filtra per nome, GA o DPT…",
|
|
115
|
+
"etsSelected": "selezionati",
|
|
116
|
+
"etsReadOnly": "Sola lettura",
|
|
117
|
+
"etsReadOnlyBulk": "Sola lettura per gli indirizzi mostrati",
|
|
118
|
+
"etsNoGateway": "Seleziona un gateway KNX.",
|
|
119
|
+
"etsNoGa": "Nessun indirizzo di gruppo trovato. Importa la lista ETS nel gateway KNX.",
|
|
120
|
+
"etsCsvError": "Impossibile caricare la lista degli indirizzi di gruppo dal gateway.",
|
|
121
|
+
"reasoningEffortHint": "Preferenza facoltativa per i modelli che supportano l'impegno di ragionamento. Automatico non invia alcuna preferenza; se il provider o il modello rifiuta il valore scelto, Cerebrum Ultimate riprova senza di esso.",
|
|
122
|
+
"localContextBudget": "Finestra contesto locale",
|
|
123
|
+
"localContextHint": "Imposta il contesto massimo inviato soltanto ai modelli locali. Massimo usa la finestra nota del modello selezionato; le dimensioni non disponibili vengono nascoste quando il limite del modello è noto. I provider cloud ignorano questa selezione e ricevono l'intero catalogo ETS semantico selezionato.",
|
|
124
|
+
"ollamaNotSupported": "Modalità locale Ollama: API key non richiesta. Endpoint predefinito: http://localhost:11434/api/chat.",
|
|
125
|
+
"ollamaNoModels": "Nessun modello Ollama locale trovato. Installa un modello o scegli dalla libreria.",
|
|
126
|
+
"installingOllamaModel": "Avvio Ollama e installo il modello…",
|
|
127
|
+
"installedOllamaModel": "Modello Ollama installato",
|
|
128
|
+
"installOllamaModelFailed": "Installazione modello Ollama non riuscita",
|
|
129
|
+
"ollamaInstallSteps": "1) Apri la libreria, scegli un modello e copiane il nome (es. llama3.1). 2) Inserisci il nome nel campo Modello e clicca Installalo.",
|
|
130
|
+
"ollamaStartedAuto": "Server Ollama avviato automaticamente.",
|
|
131
|
+
"detectedAdaptersLoading": "Rilevamento dei nodi compatibili installati…",
|
|
132
|
+
"detectedAdaptersNone": "Nessun nodo compatibile rilevato.",
|
|
133
|
+
"detectedAdaptersUnavailable": "Il rilevamento dei nodi compatibili non è momentaneamente disponibile.",
|
|
134
|
+
"detectedAdapterDetected": "Rilevato",
|
|
135
|
+
"detectedAdapterControllers": "Controller",
|
|
136
|
+
"detectedAdapterCameras": "Telecamere",
|
|
137
|
+
"detectedAdapterNodes": "Nodi",
|
|
138
|
+
"chatContextLoading": "Caricamento del riepilogo del contesto…",
|
|
139
|
+
"chatContextUnavailable": "Il riepilogo del contesto della chat non è momentaneamente disponibile.",
|
|
140
|
+
"chatLearningOpenHint": "Apri la Web UI direttamente nell’editor dell’apprendimento CHAT condiviso per visualizzare, modificare, copiare o salvare il suo file persistente.",
|
|
141
|
+
"cerebrumMemoryOpenHint": "Apri la memoria Cerebrum leggibile dall’utente per esaminare o modificare abitudini, decisioni degli occupanti e stati della casa.",
|
|
142
|
+
"chatContextIntro": "La chat riceve automaticamente queste fonti. I percorsi sottostanti sono quelli effettivi usati da questa installazione Node-RED.",
|
|
143
|
+
"chatContextLimitLabel": "Contesto operativo massimo",
|
|
144
|
+
"chatContextProviderManaged": "gestito dal provider/modello selezionato",
|
|
145
|
+
"chatContextTokens": "token",
|
|
146
|
+
"chatContextLastPromptLabel": "Peso effettivo dell'ultimo prompt della chat",
|
|
147
|
+
"chatContextLastPromptUnavailable": "non disponibile fino alla prima richiesta della chat",
|
|
148
|
+
"chatContextExactInputTokens": "token di input misurati dal provider",
|
|
149
|
+
"chatContextEstimatedInputTokens": "token di input stimati",
|
|
150
|
+
"chatContextImages": "immagini",
|
|
151
|
+
"chatContextSourcesTitle": "Fonti incluse",
|
|
152
|
+
"chatContextFilesTitle": "File persistenti di contesto",
|
|
153
|
+
"chatContextDirectoriesTitle": "Archivio telegrammi KNX",
|
|
154
|
+
"chatContextSourceKnxTraffic": "Analisi KNX derivata più gli eventi esatti più recenti dell’intervallo predefinito di 20 minuti o di quello esplicito, limitati automaticamente alla finestra attiva del modello locale.",
|
|
155
|
+
"chatContextSourceAdapterHistory": "Eventi adapter esatti più recenti dello stesso intervallo, limitati automaticamente alla finestra attiva del modello locale.",
|
|
156
|
+
"chatContextSourceEtsProject": "Catalogo ETS semantico selezionato completo per i modelli cloud. I modelli locali ricevono il catalogo completo quando entra nella finestra; altrimenti ricevono un manifest dimensionato e i dettagli esatti richiesti dal modello. Sorgenti Function solo per revisioni esplicite del codice.",
|
|
157
|
+
"chatContextSourceMemoryEducation": "Contesto di sessione, Educazione AI, memoria domestica limitata e pianificazioni attive.",
|
|
158
|
+
"chatContextSourceCameras": "Telecamere rilevate e relative funzionalità disponibili.",
|
|
159
|
+
"chatContextSourceBadge": "Fonte",
|
|
160
|
+
"chatContextFileChatContext": "Turni persistenti, istruzioni e regole di notifica delle telecamere.",
|
|
161
|
+
"chatContextFileHomeMemory": "Solo memoria domestica appresa e limitata; l'Educazione AI resta nella proprietà del nodo.",
|
|
162
|
+
"chatContextFileSchedules": "Stato di runtime persistente e autorevole delle pianificazioni e dei promemoria di questo nodo.",
|
|
163
|
+
"chatContextFileSchedulesReadable": "Vista leggibile generata delle pianificazioni e dei promemoria di questo nodo.",
|
|
164
|
+
"chatContextFileAssistantConfig": "Configurazione persistente di Cerebrum e aree semantiche di questo nodo.",
|
|
165
|
+
"chatContextFileLastChatPrompt": "Copia locale temporanea degli ultimi messaggi system e user inviati al modello chat; viene sovrascritta a ogni richiesta.",
|
|
166
|
+
"chatContextFileBadge": "File",
|
|
167
|
+
"chatContextDirectoryRoot": "Radice archivio telegrammi",
|
|
168
|
+
"chatContextDirectoryNode": "Archivio telegrammi di questo nodo",
|
|
169
|
+
"chatContextDirectoryBadge": "KNX",
|
|
170
|
+
"chatContextDirectoryAdapterRoot": "Radice archivio eventi adapter",
|
|
171
|
+
"chatContextDirectoryAdapterNode": "Archivio eventi adapter di questo nodo",
|
|
172
|
+
"chatContextDirectoryAdapterBadge": "Adapter",
|
|
173
|
+
"chatContextTelegramPattern": "File giornalieri",
|
|
174
|
+
"chatAdapterIntro": "Scegli un preset per inserire il codice di mappatura in ingresso e in uscita. La lista viene caricata dal file degli adattatori chat incluso nel pacchetto; il codice generato resta modificabile.",
|
|
175
|
+
"chatAdapterCodeHelp": "Le mappature sono sincrone. Restituisci msg per continuare oppure nessun valore per scartarlo. Gli errori vengono intercettati e segnalati senza arrestare Node-RED.",
|
|
176
|
+
"homeIntelligenceIntro": "Il nodo crea un modello ETS semantico multilingue. Le notifiche proattive vengono valutate solo quando l'Educazione AI le richiede esplicitamente; non invia mai autonomamente comandi KNX.",
|
|
177
|
+
"aiEducationHelp": "Solo l'utente può modificare questa proprietà del nodo. Usala per istruzioni durevoli e regole di notifica proattiva, comprese condizioni, durata, ore silenziose e ripetizione. Il modello la legge come istruzione autorevole, ma non la scrive mai. Fatti e preferenze richiesti in chat vengono conservati nella memoria appresa della chat; pianificazioni, promemoria, monitoraggi e comandi futuri, singoli o ricorrenti, vengono conservati dallo scheduler semantico. Non servono frasi di attivazione né routing per intent. Massimo 16.000 caratteri."
|
|
178
|
+
},
|
|
179
|
+
"placeholder": {
|
|
180
|
+
"llmBaseUrl": "https://api.openai.com/v1/chat/completions (o endpoint compatibile)",
|
|
181
|
+
"llmApiKey": "Incolla la chiave (inizia con sk-)",
|
|
182
|
+
"llmModel": "es. gpt-4o-mini",
|
|
183
|
+
"llmSystemPrompt": "Opzionale. Lascia vuoto per default.",
|
|
184
|
+
"aiEducation": "Esempio: rispondi in modo conciso. Avvisa la mia ultima chat se una finestra resta aperta per 30 minuti; non avvisarmi tra le 23:00 e le 07:00."
|
|
185
|
+
},
|
|
186
|
+
"sidebar": {
|
|
187
|
+
"ui": {
|
|
188
|
+
"refreshNodeList": "Aggiorna lista nodi",
|
|
189
|
+
"refreshSummary": "Aggiorna riepilogo",
|
|
190
|
+
"auto": "Auto",
|
|
191
|
+
"sections": {
|
|
192
|
+
"summary": "Riepilogo",
|
|
193
|
+
"anomalies": "Anomalie",
|
|
194
|
+
"ask": "Chiedi"
|
|
195
|
+
},
|
|
196
|
+
"empty": {
|
|
197
|
+
"noNodes": "Nessun nodo Cerebrum Ultimate trovato.",
|
|
198
|
+
"noAnomalies": "Nessuna anomalia."
|
|
199
|
+
},
|
|
200
|
+
"chat": {
|
|
201
|
+
"placeholder": "Fai una domanda sul traffico KNX…",
|
|
202
|
+
"send": "Invia",
|
|
203
|
+
"pending": "Sto pensando…",
|
|
204
|
+
"llmDisabled": "LLM disabilitato nella configurazione del nodo",
|
|
205
|
+
"emptyAnswer": "(risposta vuota)"
|
|
206
|
+
},
|
|
207
|
+
"status": {
|
|
208
|
+
"ready": "Pronto",
|
|
209
|
+
"loadingNodes": "Carico nodi…",
|
|
210
|
+
"loading": "Carico…",
|
|
211
|
+
"asking": "Sto chiedendo…"
|
|
212
|
+
},
|
|
213
|
+
"errors": {
|
|
214
|
+
"loadNodes": "Impossibile caricare i nodi",
|
|
215
|
+
"loadState": "Impossibile caricare lo stato",
|
|
216
|
+
"askFailed": "Richiesta fallita"
|
|
217
|
+
}
|
|
218
|
+
},
|
|
219
|
+
"summary": {
|
|
220
|
+
"noData": "Nessun dato disponibile.",
|
|
221
|
+
"header": {
|
|
222
|
+
"gateway": "Gateway: {{gatewayName}}",
|
|
223
|
+
"updated": "Aggiornato: {{at}}"
|
|
224
|
+
},
|
|
225
|
+
"analysisWindowLine": "Finestra analisi: {{seconds}}s",
|
|
226
|
+
"statsLine": "Telegrammi: {{telegrams}} · Rate: {{rate}}/s · Echoed: {{echoed}} · DPT sconosciuti: {{unknownDpt}}",
|
|
227
|
+
"topGAsTitle": "Indirizzi di gruppo più attivi:",
|
|
228
|
+
"eventsTitle": "Eventi:",
|
|
229
|
+
"patternsTitle": "Pattern (sequenze ricorrenti):",
|
|
230
|
+
"patternItem": "{{from}} → {{to}} ({{count}} volte entro {{withinMs}}ms)"
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
}
|
|
@@ -10,6 +10,14 @@
|
|
|
10
10
|
"migration_success": "Il download del backup dei flow è stato avviato. {{count}} nodi convertiti in KNX Utility. Controlla il risultato e premi Deploy per applicarlo. Puoi annullare la conversione con Annulla.",
|
|
11
11
|
"migration_backup_failed": "Impossibile avviare il backup dei flow. Nessun nodo è stato convertito:",
|
|
12
12
|
"migration_failed": "Conversione in KNX Utility non riuscita:",
|
|
13
|
+
"startup_migration": {
|
|
14
|
+
"title": "Nodi KNX Ultimate legacy",
|
|
15
|
+
"message": "Nodi legacy rilevati nei tuoi flow e subflow: HUE: {{hue}}; utility KNX: {{knx}}. Questi nodi continuano a funzionare, ma sono nascosti dalla palette. Convertili in HUE Controller e KNX Utility. Ogni migrazione scarica un backup dei flow; controlla il risultato prima del Deploy.",
|
|
16
|
+
"hue_button": "Migra HUE ({{count}})",
|
|
17
|
+
"knx_button": "Migra KNX ({{count}})",
|
|
18
|
+
"later": "Più tardi",
|
|
19
|
+
"unavailable": "Lo strumento di migrazione non è disponibile. Ricarica l’editor dopo aver riavviato Node-RED."
|
|
20
|
+
},
|
|
13
21
|
"locale": "it",
|
|
14
22
|
"function": "Funzione",
|
|
15
23
|
"gateway": "Gateway KNX",
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<script type="text/html" data-help-name="knxUltimateAI">
|
|
2
|
+
<p><b>这是一个隐藏的旧版节点,仅为现有 flow 保留。</b></p>
|
|
3
|
+
<p>新安装请使用 <code>node-red-contrib-cerebrum-ultimate</code> 软件包中的独立 <b>Cerebrum Ultimate</b> 节点。它已取代此节点,并将 KNX Ultimate 作为可选兼容集成。</p>
|
|
4
|
+
<p><a href="https://github.com/Supergiovane/node-red-contrib-cerebrum-ultimate#readme" target="_blank">打开 Cerebrum Ultimate 文档</a>。</p>
|
|
5
|
+
</script>
|