node-red-contrib-knx-ultimate 6.3.32 → 7.0.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.
Files changed (44) hide show
  1. package/CHANGELOG.md +128 -116
  2. package/README.md +4 -0
  3. package/nodes/knxUltimateAI.html +29 -11
  4. package/nodes/knxUltimateAI.js +1567 -237
  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 +12 -12
  10. package/nodes/locales/de/knxUltimateAI.html +4 -199
  11. package/nodes/locales/de/knxUltimateAI.json +11 -8
  12. package/nodes/locales/de/knxUltimateViewer.html +1 -1
  13. package/nodes/locales/en/knxUltimateAI.html +4 -203
  14. package/nodes/locales/en/knxUltimateAI.json +11 -8
  15. package/nodes/locales/en/knxUltimateViewer.html +1 -1
  16. package/nodes/locales/es/knxUltimateAI.html +4 -199
  17. package/nodes/locales/es/knxUltimateAI.json +11 -8
  18. package/nodes/locales/es/knxUltimateViewer.html +1 -1
  19. package/nodes/locales/fr/knxUltimateAI.html +4 -199
  20. package/nodes/locales/fr/knxUltimateAI.json +11 -8
  21. package/nodes/locales/fr/knxUltimateViewer.html +1 -1
  22. package/nodes/locales/it/knxUltimateAI.html +4 -203
  23. package/nodes/locales/it/knxUltimateAI.json +11 -8
  24. package/nodes/locales/it/knxUltimateViewer.html +1 -1
  25. package/nodes/locales/zh-CN/knxUltimateAI.html +4 -199
  26. package/nodes/locales/zh-CN/knxUltimateAI.json +11 -8
  27. package/nodes/locales/zh-CN/knxUltimateViewer.html +1 -1
  28. package/nodes/plugins/knxUltimate-cerebrum-runtime-plugin.js +79 -0
  29. package/nodes/plugins/knxUltimateAI-vue/assets/app.css +1 -1
  30. package/nodes/plugins/knxUltimateAI-vue/assets/app.js +13 -4
  31. package/nodes/plugins/knxUltimateAI-vue/index.html +1 -1
  32. package/nodes/plugins/knxUltimateViewer-vue/assets/app.js +2 -2
  33. package/nodes/utils/knxAiCamera.js +4 -4
  34. package/nodes/utils/knxAiCerebrum.js +406 -0
  35. package/nodes/utils/knxAiChatContext.js +4 -4
  36. package/nodes/utils/knxAiHomeMemory.js +543 -9
  37. package/nodes/utils/knxAiScheduler.js +2 -2
  38. package/nodes/utils/knxAiSemanticContext.js +5 -5
  39. package/package.json +4 -2
  40. package/resources/KNXAIChatAdapterMappings.js +35 -9
  41. package/resources/hueControllerProfiles.js +7614 -7622
  42. package/examples/KNX AI - Conversational Control with Confirmation.json +0 -395
  43. package/examples/KNX AI - Summary Anomalies and Ask.json +0 -226
  44. package/examples/KNX AI - Telegrambot Direct Chat.json +0 -198
package/README.md CHANGED
@@ -8,6 +8,10 @@
8
8
 
9
9
  KNX Ultimate is the most advanced KNX integration for Node-RED, providing secure KNX/IP communication, routing, ETS project import, Philips Hue, Matter Controller and Matter Bridge (control matter device via KNX and expose KNX GA via Matter), MQTT, diagnostics, virtual devices, and powerful automation nodes. Build professional, reliable, and scalable smart home and building automation projects with minimal effort.
10
10
 
11
+ ## Cerebrum Ultimate
12
+
13
+ The former bundled AI assistant has moved to the standalone [Cerebrum Ultimate](https://github.com/Supergiovane/node-red-contrib-cerebrum-ultimate) package. Cerebrum Ultimate now provides the conversational, learning and supervised home-intelligence features, while using KNX Ultimate as an optional compatible integration. Hidden legacy runtime types remain in this package only so existing Node-RED flows continue to load; new installations should add the Cerebrum node from the standalone package.
14
+
11
15
  <br/>
12
16
  <br/>
13
17
  <br/>
@@ -467,11 +467,11 @@
467
467
 
468
468
  <script type="text/javascript">
469
469
  RED.nodes.registerType('knxUltimateAI', {
470
- category: "KNX Ultimate AI",
470
+ category: "KNX Ultimate (legacy)",
471
471
  color: '#FF9800',
472
472
  defaults: {
473
473
  server: { type: "knxUltimate-config", required: true },
474
- name: { value: "KNX AI", required: false },
474
+ name: { value: "Legacy AI node", required: false },
475
475
  topic: { value: "", required: false },
476
476
 
477
477
  llmEnabled: { value: false },
@@ -509,9 +509,9 @@
509
509
  },
510
510
  icon: "node-eye-icon.svg",
511
511
  label: function () {
512
- return (this.name || "KNX AI");
512
+ return (this.name || "Legacy AI node");
513
513
  },
514
- paletteLabel: "KNX AI",
514
+ paletteLabel: "Legacy AI node",
515
515
  oneditprepare: function () {
516
516
  try { RED.sidebar.show("help"); } catch (error) { }
517
517
  const node = this;
@@ -873,7 +873,7 @@
873
873
  .text(String(prompt.text))
874
874
  .on("click", function (evt) {
875
875
  evt.preventDefault();
876
- openKnxAiWebPage("assistant", String(prompt.text));
876
+ openKnxAiWebPage("cerebrum", String(prompt.text));
877
877
  })
878
878
  .appendTo($prompts);
879
879
  });
@@ -1004,7 +1004,7 @@
1004
1004
  homeMemory: t("knxUltimateAI.messages.chatContextFileHomeMemory", "Bounded learned home memory only; AI Education remains in the node property."),
1005
1005
  schedules: t("knxUltimateAI.messages.chatContextFileSchedules", "Authoritative structured plans and reminders for this node."),
1006
1006
  schedulesReadable: t("knxUltimateAI.messages.chatContextFileSchedulesReadable", "Human-readable plans and reminders generated from the scheduler state."),
1007
- assistantConfig: t("knxUltimateAI.messages.chatContextFileAssistantConfig", "Persistent web Assistant configuration and semantic areas for this node."),
1007
+ assistantConfig: t("knxUltimateAI.messages.chatContextFileAssistantConfig", "Persistent Cerebrum configuration and semantic areas for this node."),
1008
1008
  lastChatPrompt: t("knxUltimateAI.messages.chatContextFileLastChatPrompt", "Temporary local copy of the latest system and user messages sent to the chat model; overwritten on every chat request.")
1009
1009
  };
1010
1010
  (Array.isArray(overview.files) ? overview.files : []).forEach(function (item) {
@@ -1082,10 +1082,14 @@
1082
1082
  const params = new URLSearchParams();
1083
1083
  if (nodeId) params.set("nodeId", nodeId);
1084
1084
  if (view === "chat-learning") {
1085
- params.set("tab", "settings");
1086
- params.set("settingsTab", "learning");
1087
- } else if (view === "assistant") {
1088
- params.set("tab", "assistant");
1085
+ params.set("tab", "cerebrum");
1086
+ params.set("cerebrumTab", "learning");
1087
+ } else if (view === "cerebrum-memory") {
1088
+ params.set("tab", "cerebrum");
1089
+ params.set("cerebrumTab", "memory");
1090
+ } else if (view === "cerebrum") {
1091
+ params.set("tab", "cerebrum");
1092
+ params.set("cerebrumTab", "conversation");
1089
1093
  if (prompt) params.set("prompt", String(prompt));
1090
1094
  }
1091
1095
  const accessToken = resolveAccessToken();
@@ -1105,6 +1109,11 @@
1105
1109
  openKnxAiWebPage("chat-learning");
1106
1110
  });
1107
1111
 
1112
+ $("#knx-ai-open-cerebrum-memory").on("click", function (evt) {
1113
+ evt.preventDefault();
1114
+ openKnxAiWebPage("cerebrum-memory");
1115
+ });
1116
+
1108
1117
  const setRefreshModelsBusy = (busy) => {
1109
1118
  const $button = $("#knx-ai-refreshModels");
1110
1119
  $button.prop("disabled", !!busy);
@@ -1522,9 +1531,13 @@
1522
1531
  } catch (error) { }
1523
1532
  }
1524
1533
  })
1534
+ // The historical type remains registered so deployed flows keep loading,
1535
+ // but new Cerebrum nodes belong to node-red-contrib-cerebrum-ultimate.
1536
+ try { RED.palette.remove('knxUltimateAI'); } catch (error) { }
1525
1537
  </script>
1526
1538
 
1527
1539
  <script type="text/html" data-template-name="knxUltimateAI">
1540
+ <div class="form-tips" style="margin-bottom:10px;"><b>Legacy node:</b> existing flow instances remain supported. For new installations use <a href="https://github.com/Supergiovane/node-red-contrib-cerebrum-ultimate#readme" target="_blank"><b>Cerebrum Ultimate</b></a>.</div>
1528
1541
  <div class="form-row" style="margin-bottom:10px;">
1529
1542
  <span style="color:#ff0000"><i class="fa fa-youtube"></i></span>&nbsp;<a target="_blank" href="https://www.youtube.com/playlist?list=PL9Yh1bjbLAYrU8PsVhW4xzEug2WtVFv3E"><b>KNX-Ultimate video tutorials (YouTube playlist)</b></a>
1530
1543
  </div>
@@ -1550,7 +1563,7 @@
1550
1563
  <label><i class="fa fa-external-link"></i> Web UI</label>
1551
1564
  <div style="display:flex; gap:8px; flex-wrap:wrap;">
1552
1565
  <button type="button" class="red-ui-button" id="knx-ai-open-web-page-vue" style="background-color:#ff9800; border-color:#ff9800; color:#ffffff !important; -webkit-text-fill-color:#ffffff;">
1553
- <i class="fa fa-external-link" style="color:#ffffff !important;"></i> <span style="color:#ffffff !important;">Open KNX AI Web Page</span>
1566
+ <i class="fa fa-external-link" style="color:#ffffff !important;"></i> <span style="color:#ffffff !important;">Open Cerebrum Ultimate Web Page</span>
1554
1567
  </button>
1555
1568
  </div>
1556
1569
  </div>
@@ -1590,6 +1603,11 @@
1590
1603
  <button type="button" class="red-ui-button" id="knx-ai-open-chat-learning">
1591
1604
  <i class="fa fa-external-link"></i> <span data-i18n="knxUltimateAI.buttons.openChatLearning"></span>
1592
1605
  </button>
1606
+ <h4 style="margin-top:14px;"><i class="fa fa-database"></i> <span data-i18n="knxUltimateAI.sections.cerebrumMemory"></span></h4>
1607
+ <p class="knx-ai-chat-learning-link-copy" data-i18n="knxUltimateAI.messages.cerebrumMemoryOpenHint"></p>
1608
+ <button type="button" class="red-ui-button" id="knx-ai-open-cerebrum-memory">
1609
+ <i class="fa fa-external-link"></i> <span data-i18n="knxUltimateAI.buttons.openCerebrumMemory"></span>
1610
+ </button>
1593
1611
  </div>
1594
1612
  <div id="knx-ai-detected-adapters-panel">
1595
1613
  <h4><i class="fa fa-puzzle-piece"></i> <span data-i18n="knxUltimateAI.sections.detectedAdapters"></span></h4>