node-red-contrib-knx-ultimate 6.3.18 → 6.3.21
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 +10 -0
- package/examples/KNX AI - Conversational Control with Confirmation.json +40 -1
- package/nodes/knxUltimateAI.html +11 -6
- package/nodes/knxUltimateAI.js +628 -83
- package/nodes/locales/de/knxUltimateAI.html +5 -0
- package/nodes/locales/de/knxUltimateAI.json +4 -0
- package/nodes/locales/en/knxUltimateAI.html +6 -1
- package/nodes/locales/en/knxUltimateAI.json +4 -0
- package/nodes/locales/es/knxUltimateAI.html +5 -0
- package/nodes/locales/es/knxUltimateAI.json +4 -0
- package/nodes/locales/fr/knxUltimateAI.html +5 -0
- package/nodes/locales/fr/knxUltimateAI.json +4 -0
- package/nodes/locales/it/knxUltimateAI.html +6 -1
- package/nodes/locales/it/knxUltimateAI.json +4 -0
- package/nodes/locales/zh-CN/knxUltimateAI.html +5 -0
- package/nodes/locales/zh-CN/knxUltimateAI.json +4 -0
- package/nodes/utils/knxAiEventHistory.js +246 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,16 @@
|
|
|
6
6
|
|
|
7
7
|
# CHANGELOG
|
|
8
8
|
|
|
9
|
+
**Version 6.3.21** - August 2026<br/>
|
|
10
|
+
|
|
11
|
+
- **KNX AI — persistent adapter-event history**: every event published by an automatically detected adapter is now normalized into vendor-neutral metadata and appended to a node-specific daily JSONL archive. The archive follows the 10-day KNX retention, guaranteeing at least 24 hours of camera and future adapter events across Node-RED restarts without storing snapshot image data. The editor context card exposes the actual adapter-history directories.<br/>
|
|
12
|
+
- **KNX AI — authoritative historical queries**: web Assistant, Telegram, RedBot and custom CHAT channels now query both the adapter-event archive and the existing KNX daily telegram files. Historical prompts include totals calculated across every stored row in the requested interval plus relevance-selected detail samples, preventing sample size from being reported as the total. Natural-language ranges now include multilingual “last N hours” requests and are bounded by available retention.<br/>
|
|
13
|
+
|
|
14
|
+
**Version 6.3.19** - August 2026<br/>
|
|
15
|
+
|
|
16
|
+
- **KNX AI — conversational multi-step routines**: added coordinated routines such as leaving home, bedtime and cinema mode. KNX AI can now perform a first pass with up to 20 fresh KNX state reads, use the authoritative bus results to prepare an ordered plan of up to 12 validated writes, request one confirmation and then execute the complete routine. After confirmation it waits up to four seconds for immediate matching bus feedback, reports verified and unverified operations without treating missing immediate feedback as a device failure, and dispatches any explicitly requested TTS Ultimate announcement only after execution. Routine details, preliminary readings and execution results are exposed as structured chat metadata. The importable confirmation example, editor help and wiki documentation were updated in EN, IT, DE, FR, ES and zh-CN.<br/>
|
|
17
|
+
- **KNX AI — localized output labels**: corrected the four output-pin labels to use the node-scoped Node-RED translation catalog, so Summary, Anomalies, Assistant and KNX Commands follow the active editor language.<br/>
|
|
18
|
+
|
|
9
19
|
**Version 6.3.18** - August 2026<br/>
|
|
10
20
|
|
|
11
21
|
- **KNX AI — focused configuration with fixed defaults**: aligned the hidden traffic-analysis defaults to a 600-second history, disk archival enabled for 10 days, automatic summaries disabled, a 120-second analysis window, 5,000 in-memory events and a Top-12 list. The Node-RED project inventory is now always included, while traffic analysis, chat input/output mappings and their obsolete editor controls remain hidden. Documentation language selection was removed because the AI now chooses the appropriate language. Proactive-home switches and advanced proactive settings were removed without legacy-value migration: user-managed AI Education is now the sole configuration surface for this behaviour. Editor help, examples and wiki documentation were updated in EN, IT, DE, FR, ES and zh-CN.<br/>
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"type": "tab",
|
|
5
5
|
"label": "KNX AI - Conversational control",
|
|
6
6
|
"disabled": false,
|
|
7
|
-
"info": "Example of fresh KNX state reads and
|
|
7
|
+
"info": "Example of fresh KNX state reads, conversational multi-step routines and actuator control with a mandatory confirmation step for writes."
|
|
8
8
|
},
|
|
9
9
|
{
|
|
10
10
|
"id": "cmt_knx_ai_control_setup",
|
|
@@ -192,6 +192,45 @@
|
|
|
192
192
|
]
|
|
193
193
|
]
|
|
194
194
|
},
|
|
195
|
+
{
|
|
196
|
+
"id": "inj_knx_ai_control_routine",
|
|
197
|
+
"type": "inject",
|
|
198
|
+
"z": "tab_knx_ai_control",
|
|
199
|
+
"name": "Routine: sto uscendo",
|
|
200
|
+
"props": [
|
|
201
|
+
{
|
|
202
|
+
"p": "payload",
|
|
203
|
+
"v": "Sto uscendo: controlla gli stati aggiornati della casa e prepara una routine sicura per spegnere le luci, abbassare le tapparelle e ridurre il clima. Segnalami porte o finestre aperte.",
|
|
204
|
+
"vt": "str"
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
"p": "topic",
|
|
208
|
+
"v": "ask",
|
|
209
|
+
"vt": "str"
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
"p": "chatId",
|
|
213
|
+
"v": "demo-chat-1",
|
|
214
|
+
"vt": "str"
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
"p": "language",
|
|
218
|
+
"v": "it",
|
|
219
|
+
"vt": "str"
|
|
220
|
+
}
|
|
221
|
+
],
|
|
222
|
+
"repeat": "",
|
|
223
|
+
"crontab": "",
|
|
224
|
+
"once": false,
|
|
225
|
+
"onceDelay": 0.1,
|
|
226
|
+
"x": 170,
|
|
227
|
+
"y": 340,
|
|
228
|
+
"wires": [
|
|
229
|
+
[
|
|
230
|
+
"node_knx_ai_control"
|
|
231
|
+
]
|
|
232
|
+
]
|
|
233
|
+
},
|
|
195
234
|
{
|
|
196
235
|
"id": "node_knx_ai_control",
|
|
197
236
|
"type": "knxUltimateAI",
|
package/nodes/knxUltimateAI.html
CHANGED
|
@@ -282,10 +282,10 @@
|
|
|
282
282
|
outputs: 4,
|
|
283
283
|
outputLabels: function (i) {
|
|
284
284
|
switch (i) {
|
|
285
|
-
case 0: return
|
|
286
|
-
case 1: return
|
|
287
|
-
case 2: return
|
|
288
|
-
case 3: return
|
|
285
|
+
case 0: return this._('knxUltimateAI.outputs.summary');
|
|
286
|
+
case 1: return this._('knxUltimateAI.outputs.anomalies');
|
|
287
|
+
case 2: return this._('knxUltimateAI.outputs.assistant');
|
|
288
|
+
case 3: return this._('knxUltimateAI.outputs.knxCommands');
|
|
289
289
|
}
|
|
290
290
|
},
|
|
291
291
|
icon: "node-eye-icon.svg",
|
|
@@ -635,6 +635,7 @@
|
|
|
635
635
|
|
|
636
636
|
const sourceLabels = {
|
|
637
637
|
knxTraffic: t("knxUltimateAI.messages.chatContextSourceKnxTraffic", "Live KNX summary, anomalies, topology and selected telegrams."),
|
|
638
|
+
adapterHistory: t("knxUltimateAI.messages.chatContextSourceAdapterHistory", "Persistent history of automatically detected adapter events."),
|
|
638
639
|
etsProject: t("knxUltimateAI.messages.chatContextSourceEtsProject", "ETS semantics and the full Node-RED project inventory."),
|
|
639
640
|
memoryEducation: t("knxUltimateAI.messages.chatContextSourceMemoryEducation", "Session context, AI Education and bounded home memory."),
|
|
640
641
|
camerasDocs: t("knxUltimateAI.messages.chatContextSourceCamerasDocs", "Detected cameras and relevant help, README and example snippets."),
|
|
@@ -668,7 +669,9 @@
|
|
|
668
669
|
|
|
669
670
|
const directoryLabels = {
|
|
670
671
|
archiveRoot: t("knxUltimateAI.messages.chatContextDirectoryRoot", "Telegram archive root"),
|
|
671
|
-
nodeArchive: t("knxUltimateAI.messages.chatContextDirectoryNode", "This node's telegram archive")
|
|
672
|
+
nodeArchive: t("knxUltimateAI.messages.chatContextDirectoryNode", "This node's telegram archive"),
|
|
673
|
+
adapterArchiveRoot: t("knxUltimateAI.messages.chatContextDirectoryAdapterRoot", "Adapter event archive root"),
|
|
674
|
+
adapterNodeArchive: t("knxUltimateAI.messages.chatContextDirectoryAdapterNode", "This node's adapter event archive")
|
|
672
675
|
};
|
|
673
676
|
(Array.isArray(overview.telegramDirectories) ? overview.telegramDirectories : []).forEach(function (item) {
|
|
674
677
|
if (!item || !item.path) return;
|
|
@@ -677,7 +680,9 @@
|
|
|
677
680
|
directoryLabels[item.id] || String(item.id || ""),
|
|
678
681
|
"",
|
|
679
682
|
item.path,
|
|
680
|
-
|
|
683
|
+
/^adapter/.test(String(item.id || ""))
|
|
684
|
+
? t("knxUltimateAI.messages.chatContextDirectoryAdapterBadge", "Adapter")
|
|
685
|
+
: t("knxUltimateAI.messages.chatContextDirectoryBadge", "KNX")
|
|
681
686
|
);
|
|
682
687
|
});
|
|
683
688
|
|