node-red-contrib-knx-ultimate 6.3.19 → 6.3.22

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.
@@ -31,7 +31,7 @@ Jede Ask-/Chat-Sitzung speichert ihre letzten 8 Gesprächsschritte und bis zu 20
31
31
  Bei DPT-1.xxx-Schreibvorgängen werden die sicheren KI-Entsprechungen `true`/`false`, `1`/`0` und `on`/`off` vor der lokalen Validierung und Ausgabe in echte Boolesche Werte normalisiert.
32
32
 
33
33
  ### Aktuelle KNX-Lesewerte
34
- Wenn der Benutzer ausdrücklich einen aktuellen oder aktualisierten Zustand anfordert, kann die KI exakte Objekte aus dem importierten ETS-Katalog abfragen, einschließlich Status- und anderer schreibgeschützter Objekte. Ausgang 4 gibt `msg.destination`, `msg.dpt`, `msg.event = "GroupValue_Read"` und `msg.readstatus = true` aus. Der Node wartet bis zu 6 Sekunden auf jede `GroupValue_Response` oder ein aktuelles Write-Telegramm, gibt anschließend die dekodierten Werte an Ausgang 3 zurück und stellt Details in `msg.knxAi.readResults` bereit. Leseoperationen erfordern keine Bestätigung und werden niemals in Schreiboperationen umgewandelt.
34
+ Wenn der Benutzer ausdrücklich einen aktuellen oder aktualisierten Zustand anfordert, kann die KI exakte Objekte aus dem importierten ETS-Katalog abfragen, einschließlich Status- und anderer schreibgeschützter Objekte. Ausgang 4 gibt `msg.destination`, `msg.dpt`, `msg.event = "GroupValue_Read"` und `msg.readstatus = true` aus. Der Node wartet bis zu 6 Sekunden auf jede `GroupValue_Response` oder ein aktuelles Write-Telegramm, gibt anschließend die dekodierten Werte an Ausgang 3 zurück und stellt Details in `msg.knxAi.readResults` bereit. Leseoperationen erfordern keine Bestätigung und werden niemals in Schreiboperationen umgewandelt. Lässt ein kleines lokales Modell Vorgangstyp und Payload weg, werden exakte ETS-Objekte sicher als Leseoperationen normalisiert; ein Element mit Payload bleibt eine validierte Schreiboperation.
35
35
 
36
36
  ### Mehrstufige Gesprächsroutinen
37
37
  Anfragen wie „Ich gehe“, „Gute Nacht“ oder „Kinomodus“ können ohne neue Editor-Option eine zustandsabhängige Routine koordinieren. Im ersten LLM-Durchlauf werden ausschließlich exakte ETS-Leseoperationen akzeptiert (maximal 20); KNX AI sendet sie und übergibt die aktuellen GA-/DPT-/Wert-Ergebnisse an einen zweiten isolierten Planungsdurchlauf. Dieser darf bis zu 12 validierte Schreiboperationen vorbereiten, aber keinen weiteren Lesezyklus starten. Bei aktivierter Bestätigung benötigt der gesamte Plan eine einzige lokalisierte Bestätigung; vorher werden weder Schreiboperationen noch angeforderte TTS-Ansagen ausgegeben. Nach der Bestätigung wird jede Schreiboperation erneut validiert, in Reihenfolge weitergegeben und bis zu 4 Sekunden auf eine passende unmittelbare Bus-Rückmeldung beobachtet. Die Abschlussmeldung unterscheidet beobachtete Rückmeldungen von Vorgängen ohne unmittelbare Rückmeldung, ohne daraus einen Gerätefehler abzuleiten. Details stehen in `msg.knxAi.routine`, `readResults`, `verifiedCount` und `unverifiedCount`.
@@ -51,13 +51,15 @@ Installierte Kamerapakete können KNX AI zur Laufzeit einen Kamera-Adapter berei
51
51
 
52
52
  Der Benutzer kann einen aktuellen Snapshot anfordern oder das Vision-Modell nach dem sichtbaren Inhalt fragen. Die Telegram- und RedBot-Vorlagen senden das Bild als natives Foto mit Bildunterschrift. Außerdem lassen sich dauerhafte Benachrichtigungen für Bewegung, das Überqueren einer intelligenten Linie oder das Betreten einer Einbruchs-/Verweilzone erstellen, optional auf erkannte Personen und eine genau benannte Linie oder Zone begrenzt. Diese Regeln werden in derselben Datei `knxai-chat-context.md` gespeichert und nach einem Neustart von Node-RED wiederhergestellt. UniFi-Ereignisse und Snapshot-Anfragen laufen direkt über den erkannten Anbieter; Ausgang 4 von KNX AI und zusätzliche Flow-Verkabelung sind nicht erforderlich.
53
53
 
54
+ Jedes von einem automatisch erkannten Adapter veröffentlichte Ereignis wird normalisiert und in eine tägliche Datei `YYYY-MM-DD.jsonl` unter `knxultimatestorage/knxai/adapter-history/<node-id>/` geschrieben. Das Archiv bewahrt 10 Tage auf, garantiert mehr als 24 Stunden Historie und speichert Ereignismetadaten, jedoch keine Snapshot-Bilder. Web-Assistent und alle CHAT-Kanäle fragen es zusammen mit dem täglichen KNX-Telegrammarchiv ab. Summen umfassen alle gespeicherten Zeilen; ausgewählte Details sind nur eine relevante Stichprobe.
55
+
54
56
  ### Ansagen mit TTS Ultimate
55
57
  Wenn das optionale Paket `node-red-contrib-tts-ultimate` installiert ist, erscheint es unter den automatisch erkannten Adaptern. Die Auswahl listet alle `ttsultimate`-Nodes in sämtlichen Projekt-Flows mit Flow, Node-Name und konfiguriertem Player auf. Wählen Sie den Node für Chat-Ansagen aus und deployen Sie den Flow.
56
58
 
57
59
  Nur eine ausdrückliche Anfrage in der aktuellen Chat-Nachricht kann eine Ansage erzeugen. KNX AI sendet den exakten Text direkt als `msg.payload` mit `msg.topic = "knx_ai_announcement"` an den ausgewählten Node; eine Zwischenverkabelung im Flow ist nicht erforderlich. TTS Ultimate verwaltet anschließend den konfigurierten Sonos-Player, Stimme, Lautstärke, Hailing und Warteschlange. Persistenter Kontext, KI-Erziehung, Kamerainhalte und abgeleitete Ereignisse lösen niemals selbstständig Sprache aus.
58
60
 
59
61
  ### Übersicht des Chat-Kontexts
60
- Der Node-Editor zeigt eine kompakte Karte mit den für den Chat verfügbaren Quellen: aktuellem KNX-Verkehr, ETS-Semantik und Node-RED-Projekt, Sitzungs- und Hausgedächtnis, KI-Erziehung, erkannten Kameras und relevanter Dokumentation. Außerdem werden `knxai-chat-context.md`, `knxai-home-memory.md` und `knxai-config-<node-id>.json` sowie das absolute Stammverzeichnis des KNX-Telegrammarchivs, das Node-spezifische Verzeichnis und das Tagesdateimuster `YYYY-MM-DD.jsonl` aufgeführt. Die Pfade werden zur Laufzeit aus dem tatsächlich verwendeten Datenverzeichnis des konfigurierten Gateways ermittelt.
62
+ Der Node-Editor zeigt eine kompakte Karte mit den für den Chat verfügbaren Quellen: aktuellem KNX-Verkehr, ETS-Semantik und Node-RED-Projekt, Sitzungs- und Hausgedächtnis, KI-Erziehung und erkannten Kameras. Sie zeigt außerdem den maximalen operativen Kontext und die tatsächliche UTF-8-Größe des letzten Chat-Prompts; gemeldete Eingabe-Token des Anbieters werden exakt verwendet, andernfalls wird der Tokenwert als Schätzung gekennzeichnet. Außerdem werden `knxai-chat-context.md`, `knxai-home-memory.md` und `knxai-config-<node-id>.json` sowie das absolute Stammverzeichnis des KNX-Telegrammarchivs, das Node-spezifische Verzeichnis und das Tagesdateimuster `YYYY-MM-DD.jsonl` aufgeführt. Die Pfade werden zur Laufzeit aus dem tatsächlich verwendeten Datenverzeichnis des konfigurierten Gateways ermittelt.
61
63
 
62
64
  ## Durch KI-Erziehung gesteuerte proaktive Hausintelligenz und begrenztes Gedächtnis
63
65
  Aus ETS-Hierarchie, Namen, Rollen und DPTs erstellt der Node ein deterministisches semantisches Modell. Es gibt keinen separaten Schalter und keine erweiterten proaktiven Einstellungen. Eine Benachrichtigung wird nur bewertet, wenn das LLM aktiv ist und die **KI-Erziehung** sie ausdrücklich verlangt. Ausschließlich die Erziehung bestimmt Bedingungen, Offenzeit, Ruhezeiten und Wiederholung. Ohne eine ausdrückliche Regel oder bei fehlgeschlagener LLM-Auswertung wird nichts gesendet.
@@ -112,7 +114,7 @@ Hier sind alle Felder aufgeführt, wie sie im KNX-AI-Editor sichtbar sind.
112
114
  - **Vor dem Senden von KNX-Befehlen bestätigen lassen**: Standardmäßig aktiv. Zeigt zuerst die validierten Änderungen und sendet nichts, bis dieselbe Chat-Sitzung bestätigt. Wenn Befehle auf Bestätigung warten, fügt die Antwort immer die genauen Anweisungen zum Bestätigen oder Abbrechen in der Sprache der aktuellen Anfrage hinzu. Vor der Ausgabe werden die Befehle erneut validiert.
113
115
  - **Adapter-Vorlage**: Standardmäßig ist **Kein Adapter** gewählt. Die Auswahl lädt das vordefinierte Paar aus Ein- und Ausgangszuordnung; beide bleiben im Editor verborgen.
114
116
  - **KI-Erziehung**: Verbindliche, ausschließlich vom Benutzer verwaltete Hinweise, die die KI lesen, aber nie ändern darf. Nur hier werden proaktive Benachrichtigungen mit Bedingungen, Dauer, Ruhezeiten und Wiederholung angefordert.
115
- - Relevante Auszüge aus Hilfe, README und Beispielen werden immer automatisch einbezogen; ihre Sprache wird aus der Benutzeranfrage erkannt, mit automatischen Rückgriffen auf alle unterstützten Sprachen.
117
+ - Mitgelieferte Auszüge aus Hilfe, README, Changelog, Wiki und Beispielen werden nicht in Prompts von Telegram, RedBot oder benutzerdefinierten CHAT-Adaptern aufgenommen. Sie bleiben nur dem Web-Assistenten für technische Fragen zum Paket verfügbar.
116
118
  - Button **Refresh**: Fragt den Provider ab und lädt verfügbare Modelle. Währenddessen dreht sich das Symbol; ein erfolgreicher Abschluss bleibt absichtlich ohne Meldung.
117
119
 
118
120
  ### Ollama Schnellstart (lokal)
@@ -123,6 +125,7 @@ Hier sind alle Felder aufgeführt, wie sie im KNX-AI-Editor sichtbar sind.
123
125
  - **2) Install it**: lädt und installiert das Modell lokal (z. B. `llama3.1`).
124
126
  - Beim Refresh/Install versucht KNX AI zusätzlich, den Ollama-Server automatisch zu starten.
125
127
  - Bei Installationsfehlern mit Verbindungsproblem prüfen, ob Ollama läuft (Desktop-App oder `ollama serve`).
128
+ - Der von `/api/show` gemeldete maximale Kontext dient nur zur Information. KNX AI sendet immer `num_ctx = 16384` (oder das kleinere Modellmaximum) und verwendet dieselbe relevanzbasierte semantische 16K-Ansicht. So wird keine übergroße KV-Cache-Zuweisung erzeugt, ohne Agentenfunktionen zu entfernen.
126
129
  - Wenn Node-RED in Docker läuft, im Endpoint `host.docker.internal` statt `localhost` verwenden.
127
130
 
128
131
  ### Bionic LM Studio Schnellstart (lokal)
@@ -130,6 +133,7 @@ Hier sind alle Felder aufgeführt, wie sie im KNX-AI-Editor sichtbar sind.
130
133
  - Den LM-Studio-API-Server auf der Seite **Developer** oder mit `lms server start` starten.
131
134
  - Standard-Endpoint: `http://localhost:1234/v1/chat/completions`.
132
135
  - Mit **Refresh** alle von `/v1/models` bereitgestellten Modelle laden; ist kein Modell konfiguriert, wird das erste ausgewählt.
136
+ - Ist ein Modell bereits geladen, behält KNX AI dessen aktive Kontextlänge bei. KNX AI lädt ein inaktives Bionic-Modell niemals über die Verwaltungs-API: Die erste Chat-Anfrage lässt Bionic das Modell per JIT mit den gespeicherten modellspezifischen Standardwerten laden. Unabhängig vom von Bionic gemeldeten Kontext begrenzt KNX AI den eigenen Prompt immer auf eine nach Relevanz ausgewählte semantische 16K-Ansicht; dadurch wird nicht der gesamte 131K-Datensatz gesendet, ohne Denk-, KNX-, Routinen-, Kamera- oder TTS-Funktionen zu entfernen.
133
137
  - Der API-Schlüssel ist optional, sofern die Authentifizierung in den LM-Studio-Servereinstellungen nicht aktiviert ist. In Docker `localhost` durch `host.docker.internal` ersetzen.
134
138
 
135
139
  ## Sicherheitshinweis
@@ -62,10 +62,12 @@
62
62
  },
63
63
  "messages": {
64
64
  "lmStudioContextAvailable": "Maximaler Modellkontext",
65
- "lmStudioContextLoading": "Modell wird mit maximalem Kontext geladen",
66
- "lmStudioContextConfigured": "Maximaler Modellkontext konfiguriert",
65
+ "lmStudioContextLoading": "Aktiver Modellkontext wird geprüft",
66
+ "lmStudioContextInactive": "Modell inaktiv; bei der ersten Anfrage werden die Bionic-Standardwerte verwendet",
67
+ "lmStudioContextConfigured": "Aktiver Modellkontext",
67
68
  "lmStudioContextFailed": "Der Modellkontext konnte nicht konfiguriert werden",
68
69
  "lmStudioContextCurrentlyLoaded": "derzeit geladen",
70
+ "localContextBudget": "KNX-AI-Kontextbudget",
69
71
  "ollamaNotSupported": "Ollama local mode: API key not required. Default endpoint is http://localhost:11434/api/chat.",
70
72
  "ollamaNoModels": "No local Ollama model found. Install one or pick one from the library.",
71
73
  "installingOllamaModel": "Starting Ollama and installing model…",
@@ -86,13 +88,22 @@
86
88
  "chatContextLoading": "Zusammenfassung des Chat-Kontexts wird geladen…",
87
89
  "chatContextUnavailable": "Die Zusammenfassung des Chat-Kontexts ist vorübergehend nicht verfügbar.",
88
90
  "chatContextIntro": "Der Chat erhält diese Quellen automatisch. Die folgenden Pfade werden von dieser Node-RED-Installation tatsächlich verwendet.",
91
+ "chatContextLimitLabel": "Maximaler operativer Kontext",
92
+ "chatContextProviderManaged": "vom ausgewählten Anbieter/Modell verwaltet",
93
+ "chatContextTokens": "Token",
94
+ "chatContextLastPromptLabel": "Tatsächliche Größe des letzten Chat-Prompts",
95
+ "chatContextLastPromptUnavailable": "bis zur ersten Chat-Anfrage nicht verfügbar",
96
+ "chatContextExactInputTokens": "vom Anbieter gemessene Eingabe-Token",
97
+ "chatContextEstimatedInputTokens": "geschätzte Eingabe-Token",
98
+ "chatContextImages": "Bilder",
89
99
  "chatContextSourcesTitle": "Enthaltene Quellen",
90
100
  "chatContextFilesTitle": "Dauerhafte Kontextdateien",
91
101
  "chatContextDirectoriesTitle": "KNX-Telegrammarchiv",
92
102
  "chatContextSourceKnxTraffic": "Aktuelle KNX-Zusammenfassung, Anomalien, Topologie und ausgewählte Telegramme.",
103
+ "chatContextSourceAdapterHistory": "Dauerhaftes Tagesarchiv automatisch erkannter Adapterereignisse einschließlich Kameraerkennungen.",
93
104
  "chatContextSourceEtsProject": "ETS-Semantik und vollständiges Inventar des Node-RED-Projekts.",
94
105
  "chatContextSourceMemoryEducation": "Sitzungskontext, KI-Erziehung und begrenztes Hausgedächtnis.",
95
- "chatContextSourceCamerasDocs": "Erkannte Kameras und relevante Auszüge aus Hilfe, README und Beispielen.",
106
+ "chatContextSourceCameras": "Erkannte Kameras und ihre verfügbaren Funktionen.",
96
107
  "chatContextSourceTtsUltimate": "Ausgewählter TTS-Ultimate-Node für Ansagen.",
97
108
  "chatContextSourceBadge": "Quelle",
98
109
  "chatContextFileChatContext": "Dauerhafte Gesprächsverläufe, Anweisungen und Regeln für Kamerabenachrichtigungen.",
@@ -102,6 +113,9 @@
102
113
  "chatContextDirectoryRoot": "Stammverzeichnis des Telegrammarchivs",
103
114
  "chatContextDirectoryNode": "Telegrammarchiv dieses Nodes",
104
115
  "chatContextDirectoryBadge": "KNX",
116
+ "chatContextDirectoryAdapterRoot": "Stammverzeichnis des Adapterereignisarchivs",
117
+ "chatContextDirectoryAdapterNode": "Adapterereignisarchiv dieses Nodes",
118
+ "chatContextDirectoryAdapterBadge": "Adapter",
105
119
  "chatContextTelegramPattern": "Tagesdateien",
106
120
  "chatAdapterIntro": "Wählen Sie eine Vorlage, um den Code für Ein- und Ausgang einzufügen. Die Liste wird aus der mitgelieferten Chat-Adapter-Datei geladen; der erzeugte Code bleibt bearbeitbar.",
107
121
  "chatAdapterCodeHelp": "Zuordnungen laufen synchron. Geben Sie msg zurück, um fortzufahren, oder keinen Wert, um die Nachricht zu verwerfen. Fehler werden abgefangen und gemeldet, ohne Node-RED anzuhalten.",
@@ -31,7 +31,7 @@ Every Ask/chat session keeps its last 8 turns and up to 20 explicit long-term in
31
31
  For DPT 1.xxx writes, safe AI equivalents `true`/`false`, `1`/`0`, and `on`/`off` are normalized to a real boolean before local validation and output.
32
32
 
33
33
  ### Fresh KNX reads
34
- When the user explicitly asks for a fresh/current state, the AI may query exact objects from the imported ETS catalog, including status and other read-only objects. Output 4 emits `msg.destination`, `msg.dpt`, `msg.event = "GroupValue_Read"`, and `msg.readstatus = true`. The node waits up to 6 seconds for each `GroupValue_Response` or fresh write, then returns the decoded values on output 3 and exposes details in `msg.knxAi.readResults`. Reads never require confirmation and never become writes.
34
+ When the user explicitly asks for a fresh/current state, the AI may query exact objects from the imported ETS catalog, including status and other read-only objects. Output 4 emits `msg.destination`, `msg.dpt`, `msg.event = "GroupValue_Read"`, and `msg.readstatus = true`. The node waits up to 6 seconds for each `GroupValue_Response` or fresh write, then returns the decoded values on output 3 and exposes details in `msg.knxAi.readResults`. Reads never require confirmation and never become writes. If a small local model omits the operation discriminator and payload, exact ETS items are safely normalized as reads; an item containing a payload remains a validated write.
35
35
 
36
36
  ### Conversational multi-step routines
37
37
  Requests such as “I’m leaving”, “Good night”, or “Cinema mode” can coordinate a state-aware routine without a new editor option. In the first LLM pass, only exact ETS reads are accepted (up to 20); KNX AI sends them and supplies the fresh GA/DPT/value results to a second isolated planning pass. That pass may prepare up to 12 validated writes, but cannot request another read cycle. With confirmation enabled, the complete plan has one localized confirmation and no write or requested TTS announcement is emitted beforehand. After confirmation every write is revalidated, forwarded in order, and observed for up to 4 seconds for matching immediate bus feedback. The final reply distinguishes observed feedback from operations without immediate feedback—absence of feedback is not reported as device failure. Routine details are exposed in `msg.knxAi.routine`, `readResults`, `verifiedCount`, and `unverifiedCount`.
@@ -51,13 +51,15 @@ Installed camera packages can publish a camera adapter to KNX AI at runtime. The
51
51
 
52
52
  The user can ask for a current snapshot or ask the vision model what is visible. Telegram and RedBot presets emit the returned image as a native photo with a caption. The user can also create persistent notifications for motion, a smart line crossing or entry into an intrusion/loiter zone, optionally limited to detected people and to an exact named line or zone. These rules are stored in the same `knxai-chat-context.md` file and are restored after Node-RED restarts. UniFi event subscriptions and snapshot requests are made directly through the detected provider; KNX AI output 4 is not involved and no intermediate flow wiring is required.
53
53
 
54
+ Every event published by an automatically detected adapter is normalized and appended to a daily `YYYY-MM-DD.jsonl` file under `knxultimatestorage/knxai/adapter-history/<node-id>/`. The archive keeps 10 days, guarantees more than 24 hours of history and stores event metadata rather than snapshot images. The web Assistant and every CHAT channel query it together with the KNX daily telegram archive. Totals cover every stored row in the requested interval; selected details are only a relevant sample.
55
+
54
56
  ### TTS Ultimate announcements
55
57
  When the optional `node-red-contrib-tts-ultimate` package is installed, it appears among the automatically detected adapters. The selector lists every `ttsultimate` node in all project flows, with its flow, node name and configured player. Choose the node that must handle chat announcements and deploy the flow.
56
58
 
57
59
  Only an explicit request in the current chat message can create an announcement. KNX AI sends the exact text directly to the selected node as `msg.payload`, with `msg.topic = "knx_ai_announcement"`; no intermediate flow wiring is required. TTS Ultimate then handles the configured Sonos player, voice, volume, hailing and queue. Persistent context, AI Education, camera content and inferred events never trigger speech by themselves.
58
60
 
59
61
  ### Chat context overview
60
- The node editor shows a compact card summarizing the sources available to the chat: live KNX traffic, ETS semantics and the Node-RED project, session and home memory, AI Education, detected cameras and relevant documentation. It also lists `knxai-chat-context.md`, `knxai-home-memory.md` and `knxai-config-<node-id>.json`, together with the absolute KNX telegram archive root, the node-specific archive directory and the `YYYY-MM-DD.jsonl` daily-file pattern. The paths are resolved at runtime from the data directory actually used by the configured gateway.
62
+ The node editor shows a compact card summarizing the sources available to the chat: live and archived KNX traffic, persistent adapter events, ETS semantics and the Node-RED project, session and home memory, AI Education and detected cameras. It also shows the maximum operational context and the actual UTF-8 size of the last chat prompt; exact provider input tokens are used when reported, otherwise the token count is marked as estimated. The card lists the absolute KNX telegram and adapter-event archive directories and the `YYYY-MM-DD.jsonl` daily-file pattern.
61
63
 
62
64
  ## Education-driven proactive home intelligence and bounded memory
63
65
  From ETS hierarchy, names, roles and DPTs, the node builds a deterministic semantic model for covers, windows, doors, lights, temperature, climate, occupancy and alarms using Italian, English, German, French, Spanish and Chinese terms. Its proactive detector watches only reliably recognized non-command cover/window/door states.
@@ -118,7 +120,7 @@ All fields exposed in the KNX AI editor are listed below.
118
120
  - **Ask for confirmation before sending KNX commands**: Enabled by default. Shows the validated changes first and emits no KNX command until the same chat session confirms them. Whenever commands are awaiting confirmation, the response always appends the exact confirmation/cancellation instructions in the language of the current request. Commands are validated again immediately before output.
119
121
  - **Adapter preset**: Defaults to **No adapter**. Selecting a preset loads its predefined input/output mapping pair; both mappings remain hidden in the editor.
120
122
  - **AI Education**: User-only, authoritative guidance read by the AI and never modified by it. It is also the sole place to request proactive notifications and define their conditions, duration, quiet hours and repetition.
121
- - Relevant help, README, and example snippets are always included automatically; their language is selected from the user request, with automatic fallbacks across all supported languages.
123
+ - Packaged help, README, changelog, wiki and example snippets are not included in Telegram, RedBot or custom CHAT prompts. They remain available only to the web Assistant for package-support questions.
122
124
  - **Refresh** button: Queries the provider and loads available model IDs. Its icon spins while loading; successful completion is intentionally silent.
123
125
 
124
126
  ### Ollama quick setup (local)
@@ -129,6 +131,7 @@ All fields exposed in the KNX AI editor are listed below.
129
131
  - **2) Install it**: downloads and installs the model locally (for example `llama3.1`).
130
132
  - During model refresh/install, KNX AI also tries to auto-start the Ollama server when possible.
131
133
  - If install fails with connection errors, ensure Ollama is running (desktop app or `ollama serve`).
134
+ - The maximum context reported by `/api/show` is informational. KNX AI always sends `num_ctx = 16384` (or the model maximum when it is smaller) and uses the same relevance-selected 16K semantic prompt, avoiding oversized KV-cache allocation without removing agent capabilities.
132
135
  - If Node-RED runs in Docker, use `host.docker.internal` instead of `localhost` in the endpoint URL.
133
136
 
134
137
  ### Bionic LM Studio quick setup (local)
@@ -136,6 +139,7 @@ All fields exposed in the KNX AI editor are listed below.
136
139
  - Start the LM Studio API server from the **Developer** page or with `lms server start`.
137
140
  - Default endpoint: `http://localhost:1234/v1/chat/completions`.
138
141
  - Click **Refresh** to load all models exposed by `/v1/models`; the first model is selected when none is configured.
142
+ - When a model is already loaded, KNX AI preserves its active context length. KNX AI never loads an inactive Bionic model through the management API: the first chat request lets Bionic JIT-load it with its saved per-model defaults. Independently of the context reported by Bionic, KNX AI always limits its own prompt to a relevance-selected 16K semantic view; this avoids sending the full 131K data set without removing reasoning, KNX, routine, camera or TTS capabilities.
139
143
  - An API key is optional unless authentication is enabled in the LM Studio server settings. In Docker, replace `localhost` with `host.docker.internal`.
140
144
 
141
145
  ## Security note
@@ -63,10 +63,12 @@
63
63
  "loadingModels": "Loading models…",
64
64
  "loadedModels": "Models loaded",
65
65
  "lmStudioContextAvailable": "Maximum model context",
66
- "lmStudioContextLoading": "Loading the model with its maximum context",
67
- "lmStudioContextConfigured": "Maximum model context configured",
66
+ "lmStudioContextLoading": "Checking the active model context",
67
+ "lmStudioContextInactive": "Model inactive; Bionic defaults will be used on the first request",
68
+ "lmStudioContextConfigured": "Active model context",
68
69
  "lmStudioContextFailed": "Unable to configure the model context",
69
70
  "lmStudioContextCurrentlyLoaded": "currently loaded",
71
+ "localContextBudget": "KNX AI context budget",
70
72
  "ollamaNotSupported": "Ollama local mode: API key not required. Default endpoint is http://localhost:11434/api/chat.",
71
73
  "ollamaNoModels": "No local Ollama model found. Install one or pick one from the library.",
72
74
  "installingOllamaModel": "Starting Ollama and installing model…",
@@ -87,13 +89,22 @@
87
89
  "chatContextLoading": "Loading chat context summary…",
88
90
  "chatContextUnavailable": "The chat context summary is temporarily unavailable.",
89
91
  "chatContextIntro": "The chat automatically receives these sources. The paths below are the actual paths used by this Node-RED installation.",
92
+ "chatContextLimitLabel": "Maximum operational context",
93
+ "chatContextProviderManaged": "managed by the selected provider/model",
94
+ "chatContextTokens": "tokens",
95
+ "chatContextLastPromptLabel": "Last chat prompt actual size",
96
+ "chatContextLastPromptUnavailable": "not available until the first chat request",
97
+ "chatContextExactInputTokens": "input tokens measured by the provider",
98
+ "chatContextEstimatedInputTokens": "estimated input tokens",
99
+ "chatContextImages": "images",
90
100
  "chatContextSourcesTitle": "Included sources",
91
101
  "chatContextFilesTitle": "Persistent context files",
92
102
  "chatContextDirectoriesTitle": "KNX telegram archive",
93
103
  "chatContextSourceKnxTraffic": "Live KNX summary, anomalies, topology and selected telegrams.",
104
+ "chatContextSourceAdapterHistory": "Persistent daily history of automatically detected adapter events, including camera detections.",
94
105
  "chatContextSourceEtsProject": "ETS semantics and the full Node-RED project inventory.",
95
106
  "chatContextSourceMemoryEducation": "Session context, AI Education and bounded home memory.",
96
- "chatContextSourceCamerasDocs": "Detected cameras and relevant help, README and example snippets.",
107
+ "chatContextSourceCameras": "Detected cameras and their available capabilities.",
97
108
  "chatContextSourceTtsUltimate": "Selected TTS Ultimate announcement target.",
98
109
  "chatContextSourceBadge": "Source",
99
110
  "chatContextFileChatContext": "Persistent conversation turns, instructions and camera notification rules.",
@@ -103,6 +114,9 @@
103
114
  "chatContextDirectoryRoot": "Telegram archive root",
104
115
  "chatContextDirectoryNode": "This node's telegram archive",
105
116
  "chatContextDirectoryBadge": "KNX",
117
+ "chatContextDirectoryAdapterRoot": "Adapter event archive root",
118
+ "chatContextDirectoryAdapterNode": "This node's adapter event archive",
119
+ "chatContextDirectoryAdapterBadge": "Adapter",
106
120
  "chatContextTelegramPattern": "Daily files",
107
121
  "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.",
108
122
  "chatAdapterCodeHelp": "Mappings run synchronously. Return msg to continue or return no value to discard it. Errors are caught and reported without stopping Node-RED.",
@@ -31,7 +31,7 @@ Cada sesión Ask/chat conserva sus últimos 8 turnos y hasta 20 instrucciones ex
31
31
  Para las escrituras DPT 1.xxx, los equivalentes seguros producidos por la IA `true`/`false`, `1`/`0` y `on`/`off` se normalizan a booleanos reales antes de la validación local y la salida.
32
32
 
33
33
  ### Lecturas KNX actualizadas
34
- Cuando el usuario solicita explícitamente un estado actual o actualizado, la IA puede consultar objetos exactos del catálogo ETS importado, incluidos objetos de estado y otros objetos de solo lectura. La salida 4 emite `msg.destination`, `msg.dpt`, `msg.event = "GroupValue_Read"` y `msg.readstatus = true`. El nodo espera hasta 6 segundos cada `GroupValue_Response` o escritura reciente, devuelve los valores decodificados por la salida 3 y expone los detalles en `msg.knxAi.readResults`. Las lecturas nunca requieren confirmación ni se convierten en escrituras.
34
+ Cuando el usuario solicita explícitamente un estado actual o actualizado, la IA puede consultar objetos exactos del catálogo ETS importado, incluidos objetos de estado y otros objetos de solo lectura. La salida 4 emite `msg.destination`, `msg.dpt`, `msg.event = "GroupValue_Read"` y `msg.readstatus = true`. El nodo espera hasta 6 segundos cada `GroupValue_Response` o escritura reciente, devuelve los valores decodificados por la salida 3 y expone los detalles en `msg.knxAi.readResults`. Las lecturas nunca requieren confirmación ni se convierten en escrituras. Si un modelo local pequeño omite el tipo de operación y el payload, los objetos ETS exactos se normalizan de forma segura como lecturas; un elemento con payload sigue siendo una escritura validada.
35
35
 
36
36
  ### Rutinas conversacionales de varios pasos
37
37
  Solicitudes como «Me voy», «Buenas noches» o «Modo cine» pueden coordinar una rutina basada en el estado actual sin añadir opciones al editor. En la primera pasada del LLM solo se aceptan lecturas ETS exactas (hasta 20); KNX AI las envía y proporciona los resultados actualizados de GA/DPT/valor a una segunda pasada de planificación aislada. Esta puede preparar hasta 12 escrituras validadas, pero no iniciar otro ciclo de lecturas. Con la confirmación activa, todo el plan requiere una sola confirmación localizada y antes no se emite ninguna escritura ni anuncio TTS solicitado. Tras confirmar, cada escritura se vuelve a validar, se envía en orden y se observa hasta 4 segundos para detectar una respuesta inmediata coincidente en el bus. La respuesta final distingue las respuestas observadas de las operaciones sin respuesta inmediata, sin declarar por ello un fallo del dispositivo. Los detalles están disponibles en `msg.knxAi.routine`, `readResults`, `verifiedCount` y `unverifiedCount`.
@@ -51,13 +51,15 @@ Los paquetes de cámaras instalados pueden publicar en tiempo de ejecución un a
51
51
 
52
52
  El usuario puede pedir una captura actual o preguntar al modelo de visión qué se ve. Los preajustes de Telegram y RedBot envían la imagen como foto nativa con pie. También se pueden crear notificaciones persistentes por movimiento, cruce de una línea inteligente o entrada en una zona de intrusión/merodeo, limitadas opcionalmente a personas detectadas y a una línea o zona concreta por nombre. Estas reglas se guardan en el mismo archivo `knxai-chat-context.md` y se restauran después de reiniciar Node-RED. Las suscripciones a eventos UniFi y las solicitudes de captura se realizan directamente a través del proveedor detectado; no interviene la salida 4 de KNX AI ni hace falta cableado intermedio en el flujo.
53
53
 
54
+ Cada evento publicado por un adaptador detectado automáticamente se normaliza y se añade a un archivo diario `YYYY-MM-DD.jsonl` bajo `knxultimatestorage/knxai/adapter-history/<id-nodo>/`. El archivo conserva 10 días, garantiza más de 24 horas de historial y guarda metadatos, pero no imágenes. El Asistente web y todos los canales CHAT lo consultan junto con el archivo diario KNX. Los totales abarcan todas las filas almacenadas; los detalles seleccionados son solo una muestra relevante.
55
+
54
56
  ### Anuncios con TTS Ultimate
55
57
  Cuando está instalado el paquete opcional `node-red-contrib-tts-ultimate`, aparece entre los adaptadores detectados automáticamente. El selector muestra todos los nodos `ttsultimate` de todos los flows del proyecto, con el flow, el nombre del nodo y el reproductor configurado. Elige el nodo que gestionará los anuncios del chat y despliega el flow.
56
58
 
57
59
  Solo una solicitud explícita en el mensaje de chat actual puede crear un anuncio. KNX AI envía el texto exacto directamente al nodo elegido como `msg.payload`, con `msg.topic = "knx_ai_announcement"`; no hace falta cableado intermedio en el flow. TTS Ultimate gestiona después el reproductor Sonos configurado, la voz, el volumen, el aviso inicial y la cola. El contexto persistente, la Educación IA, el contenido de las cámaras y los eventos inferidos nunca activan la voz por sí solos.
58
60
 
59
61
  ### Resumen del contexto del chat
60
- El editor del nodo muestra una tarjeta compacta con las fuentes disponibles para el chat: tráfico KNX actual, semántica ETS y proyecto Node-RED, memoria de sesión y del hogar, Educación IA, cámaras detectadas y documentación relevante. También enumera `knxai-chat-context.md`, `knxai-home-memory.md` y `knxai-config-<id-nodo>.json`, junto con la raíz absoluta del archivo de telegramas KNX, la carpeta específica del nodo y el patrón diario `YYYY-MM-DD.jsonl`. Las rutas se resuelven en tiempo de ejecución desde el directorio de datos que usa realmente la pasarela configurada.
62
+ El editor del nodo muestra una tarjeta compacta con las fuentes disponibles para el chat: tráfico KNX actual, semántica ETS y proyecto Node-RED, memoria de sesión y del hogar, Educación IA y cámaras detectadas. También muestra el contexto operativo máximo y el tamaño UTF-8 real del último prompt del chat; se usan los tokens de entrada exactos cuando el proveedor los informa y, de lo contrario, el recuento se marca como estimado. También enumera `knxai-chat-context.md`, `knxai-home-memory.md` y `knxai-config-<id-nodo>.json`, junto con la raíz absoluta del archivo de telegramas KNX, la carpeta específica del nodo y el patrón diario `YYYY-MM-DD.jsonl`. Las rutas se resuelven en tiempo de ejecución desde el directorio de datos que usa realmente la pasarela configurada.
61
63
 
62
64
  ## Inteligencia doméstica proactiva guiada por Educación y memoria limitada
63
65
  A partir de la jerarquía ETS, nombres, roles y DPT, el nodo crea un modelo semántico determinista. No existe un interruptor separado ni ajustes proactivos avanzados. Una notificación solo se evalúa si el LLM está activo y **Educación IA** la solicita explícitamente. Educación es la única política para condiciones, duración, horas silenciosas y repetición. Sin una regla explícita, o si el LLM no puede evaluarla, no se envía ningún mensaje.
@@ -112,7 +114,7 @@ Aquí tienes todos los campos tal como se muestran en el editor de KNX AI.
112
114
  - **Pedir confirmación antes de enviar comandos KNX**: activado por defecto. Muestra primero los cambios validados y no emite comandos hasta que la misma sesión de chat los confirme. Cuando hay comandos pendientes, la respuesta añade siempre las instrucciones exactas para confirmar o cancelar en el idioma de la solicitud actual. Los comandos se validan de nuevo justo antes de la salida.
113
115
  - **Preajuste del adaptador**: usa **Sin adaptador** por defecto. La selección carga el par predefinido de mapeos de entrada y salida; ambos permanecen ocultos en el editor.
114
116
  - **Educación de la IA**: instrucciones vinculantes gestionadas solo por el usuario, leídas por la IA y nunca modificadas. Es el único lugar donde solicitar notificaciones proactivas y definir sus condiciones, duración, horas silenciosas y repetición.
115
- - Los fragmentos pertinentes de la ayuda, README y ejemplos se incluyen siempre de forma automática; el idioma se detecta a partir de la solicitud del usuario, con alternativas automáticas entre todos los idiomas compatibles.
117
+ - Los fragmentos incluidos con el paquete procedentes de la ayuda, README, changelog, wiki y ejemplos no se añaden a los prompts de Telegram, RedBot ni CHAT personalizados. Solo permanecen disponibles para el Asistente web en preguntas técnicas sobre el paquete.
116
118
  - Botón **Refresh**: consulta el provider y carga los modelos disponibles. El icono gira durante la carga; una finalización correcta no muestra ningún mensaje.
117
119
 
118
120
  ### Configuración rápida de Ollama (local)
@@ -123,6 +125,7 @@ Aquí tienes todos los campos tal como se muestran en el editor de KNX AI.
123
125
  - **2) Install it**: descarga e instala el modelo localmente (p. ej. `llama3.1`).
124
126
  - Durante refresh/instalación, KNX AI también intenta iniciar automáticamente el servidor Ollama.
125
127
  - Si la instalación falla con error de conexión, verifica que Ollama esté ejecutándose (app de escritorio o `ollama serve`).
128
+ - El contexto máximo declarado por `/api/show` queda solo como información. KNX AI envía siempre `num_ctx = 16384` (o el máximo del modelo si es menor) y usa la misma vista semántica de 16K seleccionada por relevancia, evitando una caché KV sobredimensionada sin eliminar capacidades del agente.
126
129
  - Si Node-RED se ejecuta en Docker, usa `host.docker.internal` en lugar de `localhost` en el endpoint.
127
130
 
128
131
  ### Configuración rápida de Bionic LM Studio (local)
@@ -130,6 +133,7 @@ Aquí tienes todos los campos tal como se muestran en el editor de KNX AI.
130
133
  - Inicia el servidor API de LM Studio desde la página **Developer** o con `lms server start`.
131
134
  - Endpoint por defecto: `http://localhost:1234/v1/chat/completions`.
132
135
  - Pulsa **Refresh** para cargar todos los modelos expuestos por `/v1/models`; si no hay un modelo configurado se selecciona el primero.
136
+ - Si un modelo ya está cargado, KNX AI conserva la longitud de contexto activa. KNX AI nunca carga un modelo Bionic inactivo mediante la API de gestión: la primera solicitud de chat permite que Bionic lo cargue mediante JIT con los valores predeterminados guardados para el modelo. Independientemente del contexto declarado por Bionic, KNX AI limita siempre su propio prompt a una vista semántica de 16K seleccionada por relevancia; así evita enviar el conjunto completo de 131K sin eliminar capacidades de razonamiento, KNX, rutinas, cámaras o TTS.
133
137
  - La clave API es opcional salvo que la autenticación esté activada en los ajustes del servidor LM Studio. En Docker, sustituye `localhost` por `host.docker.internal`.
134
138
 
135
139
  ## Nota de seguridad
@@ -55,10 +55,12 @@
55
55
  },
56
56
  "messages": {
57
57
  "lmStudioContextAvailable": "Contexto máximo del modelo",
58
- "lmStudioContextLoading": "Cargando el modelo con su contexto máximo",
59
- "lmStudioContextConfigured": "Contexto máximo del modelo configurado",
58
+ "lmStudioContextLoading": "Comprobando el contexto activo del modelo",
59
+ "lmStudioContextInactive": "Modelo inactivo; se usarán los valores predeterminados de Bionic en la primera solicitud",
60
+ "lmStudioContextConfigured": "Contexto activo del modelo",
60
61
  "lmStudioContextFailed": "No se pudo configurar el contexto del modelo",
61
62
  "lmStudioContextCurrentlyLoaded": "cargado actualmente",
63
+ "localContextBudget": "Presupuesto de contexto de KNX AI",
62
64
  "ollamaNotSupported": "Ollama local mode: API key not required. Default endpoint is http://localhost:11434/api/chat.",
63
65
  "ollamaNoModels": "No local Ollama model found. Install one or pick one from the library.",
64
66
  "installingOllamaModel": "Starting Ollama and installing model…",
@@ -79,13 +81,22 @@
79
81
  "chatContextLoading": "Cargando el resumen del contexto del chat…",
80
82
  "chatContextUnavailable": "El resumen del contexto del chat no está disponible temporalmente.",
81
83
  "chatContextIntro": "El chat recibe automáticamente estas fuentes. Las rutas siguientes son las que usa realmente esta instalación de Node-RED.",
84
+ "chatContextLimitLabel": "Contexto operativo máximo",
85
+ "chatContextProviderManaged": "gestionado por el proveedor/modelo seleccionado",
86
+ "chatContextTokens": "tokens",
87
+ "chatContextLastPromptLabel": "Tamaño real del último prompt del chat",
88
+ "chatContextLastPromptUnavailable": "no disponible hasta la primera solicitud del chat",
89
+ "chatContextExactInputTokens": "tokens de entrada medidos por el proveedor",
90
+ "chatContextEstimatedInputTokens": "tokens de entrada estimados",
91
+ "chatContextImages": "imágenes",
82
92
  "chatContextSourcesTitle": "Fuentes incluidas",
83
93
  "chatContextFilesTitle": "Archivos de contexto persistentes",
84
94
  "chatContextDirectoriesTitle": "Archivo de telegramas KNX",
85
95
  "chatContextSourceKnxTraffic": "Resumen KNX actual, anomalías, topología y telegramas seleccionados.",
96
+ "chatContextSourceAdapterHistory": "Historial diario persistente de eventos de los adaptadores detectados, incluidas las detecciones de cámaras.",
86
97
  "chatContextSourceEtsProject": "Semántica ETS e inventario completo del proyecto Node-RED.",
87
98
  "chatContextSourceMemoryEducation": "Contexto de sesión, Educación IA y memoria doméstica limitada.",
88
- "chatContextSourceCamerasDocs": "Cámaras detectadas y fragmentos relevantes de la ayuda, README y ejemplos.",
99
+ "chatContextSourceCameras": "Cámaras detectadas y sus capacidades disponibles.",
89
100
  "chatContextSourceTtsUltimate": "Nodo TTS Ultimate seleccionado para los anuncios.",
90
101
  "chatContextSourceBadge": "Fuente",
91
102
  "chatContextFileChatContext": "Turnos persistentes, instrucciones y reglas de notificación de cámaras.",
@@ -95,6 +106,9 @@
95
106
  "chatContextDirectoryRoot": "Raíz del archivo de telegramas",
96
107
  "chatContextDirectoryNode": "Archivo de telegramas de este nodo",
97
108
  "chatContextDirectoryBadge": "KNX",
109
+ "chatContextDirectoryAdapterRoot": "Raíz del archivo de eventos de adaptadores",
110
+ "chatContextDirectoryAdapterNode": "Archivo de eventos de adaptadores de este nodo",
111
+ "chatContextDirectoryAdapterBadge": "Adaptador",
98
112
  "chatContextTelegramPattern": "Archivos diarios",
99
113
  "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.",
100
114
  "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.",
@@ -31,7 +31,7 @@ Chaque session Ask/chat conserve ses 8 derniers échanges et jusqu'à 20 instruc
31
31
  Pour les écritures DPT 1.xxx, les équivalents sûrs produits par l’IA `true`/`false`, `1`/`0` et `on`/`off` sont normalisés en véritables booléens avant la validation locale et la sortie.
32
32
 
33
33
  ### Lectures KNX actualisées
34
- Lorsque l’utilisateur demande explicitement un état actuel ou actualisé, l’IA peut interroger les objets exacts du catalogue ETS importé, y compris les objets d’état et autres objets en lecture seule. La sortie 4 émet `msg.destination`, `msg.dpt`, `msg.event = "GroupValue_Read"` et `msg.readstatus = true`. Le nœud attend jusqu’à 6 secondes chaque `GroupValue_Response` ou écriture récente, puis renvoie les valeurs décodées sur la sortie 3 et les détails dans `msg.knxAi.readResults`. Les lectures ne nécessitent jamais de confirmation et ne sont jamais transformées en écritures.
34
+ Lorsque l’utilisateur demande explicitement un état actuel ou actualisé, l’IA peut interroger les objets exacts du catalogue ETS importé, y compris les objets d’état et autres objets en lecture seule. La sortie 4 émet `msg.destination`, `msg.dpt`, `msg.event = "GroupValue_Read"` et `msg.readstatus = true`. Le nœud attend jusqu’à 6 secondes chaque `GroupValue_Response` ou écriture récente, puis renvoie les valeurs décodées sur la sortie 3 et les détails dans `msg.knxAi.readResults`. Les lectures ne nécessitent jamais de confirmation et ne sont jamais transformées en écritures. Si un petit modèle local omet le type d’opération et le payload, les objets ETS exacts sont normalisés en toute sécurité comme lectures ; un élément contenant un payload reste une écriture validée.
35
35
 
36
36
  ### Routines conversationnelles multi-étapes
37
37
  Des demandes comme « Je pars », « Bonne nuit » ou « Mode cinéma » peuvent coordonner une routine tenant compte de l’état courant sans nouvelle option dans l’éditeur. Au premier passage LLM, seules les lectures ETS exactes sont acceptées (20 au maximum) ; KNX AI les envoie puis fournit les résultats actualisés GA/DPT/valeur à un second passage de planification isolé. Celui-ci peut préparer jusqu’à 12 écritures validées, sans lancer un nouveau cycle de lecture. Lorsque la confirmation est active, le plan complet ne demande qu’une confirmation localisée et aucune écriture ni annonce TTS demandée n’est émise auparavant. Après confirmation, chaque écriture est revalidée, transmise dans l’ordre et observée jusqu’à 4 secondes pour détecter un retour immédiat correspondant sur le bus. La réponse finale distingue les retours observés des opérations sans retour immédiat, sans déclarer pour autant une panne de l’appareil. Les détails figurent dans `msg.knxAi.routine`, `readResults`, `verifiedCount` et `unverifiedCount`.
@@ -51,13 +51,15 @@ Les paquets de caméra installés peuvent publier à l’exécution un adaptateu
51
51
 
52
52
  L’utilisateur peut demander une capture actuelle ou demander au modèle de vision ce qui est visible. Les préréglages Telegram et RedBot envoient l’image comme photo native avec une légende. L’utilisateur peut aussi créer des notifications persistantes pour un mouvement, le franchissement d’une ligne intelligente ou l’entrée dans une zone d’intrusion/de stationnement, avec une limitation facultative aux personnes détectées et à une ligne ou zone nommée précise. Ces règles sont stockées dans le même fichier `knxai-chat-context.md` et restaurées après les redémarrages de Node-RED. Les abonnements aux événements UniFi et les demandes de capture passent directement par le fournisseur détecté ; la sortie 4 de KNX AI et un câblage intermédiaire ne sont pas nécessaires.
53
53
 
54
+ Chaque événement publié par un adaptateur détecté automatiquement est normalisé puis ajouté à un fichier quotidien `YYYY-MM-DD.jsonl` sous `knxultimatestorage/knxai/adapter-history/<id-nœud>/`. L’archive conserve 10 jours, garantit plus de 24 heures d’historique et stocke les métadonnées, mais pas les images. L’Assistant web et tous les canaux CHAT l’interrogent avec l’archive quotidienne KNX. Les totaux couvrent toutes les lignes stockées ; les détails sélectionnés ne sont qu’un échantillon pertinent.
55
+
54
56
  ### Annonces avec TTS Ultimate
55
57
  Lorsque le paquet facultatif `node-red-contrib-tts-ultimate` est installé, il apparaît parmi les adaptateurs détectés automatiquement. Le sélecteur recense tous les nœuds `ttsultimate` de tous les flows du projet, avec le flow, le nom du nœud et le lecteur configuré. Sélectionnez le nœud chargé des annonces du chat, puis déployez le flow.
56
58
 
57
59
  Seule une demande explicite dans le message de chat actuel peut créer une annonce. KNX AI envoie le texte exact directement au nœud choisi dans `msg.payload`, avec `msg.topic = "knx_ai_announcement"` ; aucun câblage intermédiaire n’est nécessaire. TTS Ultimate gère ensuite le lecteur Sonos configuré, la voix, le volume, le signal d’introduction et la file d’attente. Le contexte persistant, l’Éducation IA, le contenu des caméras et les événements déduits ne déclenchent jamais la parole de manière autonome.
58
60
 
59
61
  ### Aperçu du contexte du chat
60
- L’éditeur du nœud affiche une carte compacte résumant les sources disponibles pour le chat : trafic KNX actuel, sémantique ETS et projet Node-RED, mémoire de session et de la maison, Éducation IA, caméras détectées et documentation pertinente. Elle répertorie aussi `knxai-chat-context.md`, `knxai-home-memory.md` et `knxai-config-<id-nœud>.json`, ainsi que la racine absolue de l’archive des télégrammes KNX, le dossier propre au nœud et le format quotidien `YYYY-MM-DD.jsonl`. Les chemins sont déterminés à l’exécution depuis le répertoire de données réellement utilisé par la passerelle configurée.
62
+ L’éditeur du nœud affiche une carte compacte résumant les sources disponibles pour le chat : trafic KNX actuel, sémantique ETS et projet Node-RED, mémoire de session et de la maison, Éducation IA et caméras détectées. Elle affiche aussi le contexte opérationnel maximal et la taille UTF-8 réelle du dernier prompt du chat ; les jetons d’entrée exacts du fournisseur sont utilisés lorsqu’ils sont fournis, sinon leur nombre est signalé comme estimé. Elle répertorie aussi `knxai-chat-context.md`, `knxai-home-memory.md` et `knxai-config-<id-nœud>.json`, ainsi que la racine absolue de l’archive des télégrammes KNX, le dossier propre au nœud et le format quotidien `YYYY-MM-DD.jsonl`. Les chemins sont déterminés à l’exécution depuis le répertoire de données réellement utilisé par la passerelle configurée.
61
63
 
62
64
  ## Intelligence domestique proactive guidée par l’Éducation et mémoire limitée
63
65
  À partir de la hiérarchie ETS, des noms, rôles et DPT, le nœud crée un modèle sémantique déterministe. Il n’existe ni interrupteur séparé ni paramètres proactifs avancés. Une notification n’est évaluée que si le LLM est actif et si **Éducation IA** la demande explicitement. L’Éducation définit seule les conditions, la durée, les heures silencieuses et la répétition. Sans règle explicite, ou si le LLM ne peut pas l’évaluer, aucun message n’est envoyé.
@@ -112,7 +114,7 @@ Voici tous les champs tels qu'affichés dans l'éditeur KNX AI.
112
114
  - **Demander confirmation avant d’envoyer les commandes KNX** : activé par défaut. Affiche d'abord les modifications validées et n'émet aucune commande tant que la même session de chat ne les confirme pas. Lorsque des commandes attendent une confirmation, la réponse ajoute toujours les instructions exactes de confirmation ou d'annulation dans la langue de la demande courante. Les commandes sont à nouveau validées juste avant la sortie.
113
115
  - **Préréglage d’adaptateur** : utilise **Aucun adaptateur** par défaut. La sélection charge la paire prédéfinie de mappages entrée/sortie ; les deux restent masqués dans l’éditeur.
114
116
  - **Éducation de l’IA** : consignes autoritaires gérées uniquement par l'utilisateur, lues par l'IA et jamais modifiées. C’est le seul endroit où demander des notifications proactives et définir leurs conditions, durée, heures silencieuses et répétition.
115
- - Les extraits pertinents de l’aide, du README et des exemples sont toujours inclus automatiquement ; leur langue est déterminée à partir de la demande de l’utilisateur, avec des replis automatiques sur toutes les langues prises en charge.
117
+ - Les extraits fournis avec le paquet depuis l’aide, le README, le changelog, le wiki et les exemples ne sont pas inclus dans les prompts Telegram, RedBot ou CHAT personnalisés. Ils restent disponibles uniquement pour l’Assistant web lors des questions techniques sur le paquet.
116
118
  - Bouton **Refresh** : interroge le provider et charge les modèles disponibles. Son icône tourne pendant le chargement ; une réussite ne produit volontairement aucun message.
117
119
 
118
120
  ### Démarrage rapide Ollama (local)
@@ -123,6 +125,7 @@ Voici tous les champs tels qu'affichés dans l'éditeur KNX AI.
123
125
  - **2) Install it** : télécharge et installe le modèle localement (ex. `llama3.1`).
124
126
  - Pendant refresh/install, KNX AI tente aussi de démarrer automatiquement le serveur Ollama.
125
127
  - Si l'installation échoue avec une erreur de connexion, vérifier qu'Ollama est lancé (app desktop ou `ollama serve`).
128
+ - Le contexte maximal déclaré par `/api/show` reste informatif. KNX AI envoie toujours `num_ctx = 16384` (ou le maximum du modèle s'il est inférieur) et utilise la même vue sémantique de 16K sélectionnée par pertinence, évitant une allocation KV cache surdimensionnée sans retirer de capacités à l'agent.
126
129
  - Si Node-RED tourne dans Docker, utiliser `host.docker.internal` au lieu de `localhost` dans l'endpoint.
127
130
 
128
131
  ### Démarrage rapide Bionic LM Studio (local)
@@ -130,6 +133,7 @@ Voici tous les champs tels qu'affichés dans l'éditeur KNX AI.
130
133
  - Démarrer le serveur API LM Studio depuis la page **Developer** ou avec `lms server start`.
131
134
  - Endpoint par défaut : `http://localhost:1234/v1/chat/completions`.
132
135
  - Cliquer sur **Refresh** pour charger tous les modèles exposés par `/v1/models` ; le premier est sélectionné si aucun modèle n’est configuré.
136
+ - Lorsqu’un modèle est déjà chargé, KNX AI conserve la longueur de contexte active. KNX AI ne charge jamais un modèle Bionic inactif via l’API de gestion : la première requête de chat laisse Bionic le charger en JIT avec les valeurs par défaut enregistrées pour ce modèle. Indépendamment du contexte déclaré par Bionic, KNX AI limite toujours son propre prompt à une vue sémantique de 16K sélectionnée par pertinence ; cela évite d’envoyer l’ensemble complet de 131K sans supprimer les capacités de raisonnement, KNX, routines, caméras ou TTS.
133
137
  - La clé API est facultative sauf si l’authentification est activée dans les paramètres du serveur LM Studio. Dans Docker, remplacer `localhost` par `host.docker.internal`.
134
138
 
135
139
  ## Note sécurité
@@ -55,10 +55,12 @@
55
55
  },
56
56
  "messages": {
57
57
  "lmStudioContextAvailable": "Contexte maximal du modèle",
58
- "lmStudioContextLoading": "Chargement du modèle avec son contexte maximal",
59
- "lmStudioContextConfigured": "Contexte maximal du modèle configuré",
58
+ "lmStudioContextLoading": "Vérification du contexte actif du modèle",
59
+ "lmStudioContextInactive": "Modèle inactif ; les valeurs par défaut de Bionic seront utilisées à la première requête",
60
+ "lmStudioContextConfigured": "Contexte actif du modèle",
60
61
  "lmStudioContextFailed": "Impossible de configurer le contexte du modèle",
61
62
  "lmStudioContextCurrentlyLoaded": "actuellement chargé",
63
+ "localContextBudget": "Budget de contexte KNX AI",
62
64
  "ollamaNotSupported": "Ollama local mode: API key not required. Default endpoint is http://localhost:11434/api/chat.",
63
65
  "ollamaNoModels": "No local Ollama model found. Install one or pick one from the library.",
64
66
  "installingOllamaModel": "Starting Ollama and installing model…",
@@ -79,13 +81,22 @@
79
81
  "chatContextLoading": "Chargement du résumé du contexte du chat…",
80
82
  "chatContextUnavailable": "Le résumé du contexte du chat est temporairement indisponible.",
81
83
  "chatContextIntro": "Le chat reçoit automatiquement ces sources. Les chemins ci-dessous sont ceux réellement utilisés par cette installation Node-RED.",
84
+ "chatContextLimitLabel": "Contexte opérationnel maximal",
85
+ "chatContextProviderManaged": "géré par le fournisseur/modèle sélectionné",
86
+ "chatContextTokens": "jetons",
87
+ "chatContextLastPromptLabel": "Taille réelle du dernier prompt du chat",
88
+ "chatContextLastPromptUnavailable": "indisponible jusqu'à la première demande du chat",
89
+ "chatContextExactInputTokens": "jetons d'entrée mesurés par le fournisseur",
90
+ "chatContextEstimatedInputTokens": "jetons d'entrée estimés",
91
+ "chatContextImages": "images",
82
92
  "chatContextSourcesTitle": "Sources incluses",
83
93
  "chatContextFilesTitle": "Fichiers de contexte persistants",
84
94
  "chatContextDirectoriesTitle": "Archive des télégrammes KNX",
85
95
  "chatContextSourceKnxTraffic": "Résumé KNX actuel, anomalies, topologie et télégrammes sélectionnés.",
96
+ "chatContextSourceAdapterHistory": "Historique quotidien persistant des événements des adaptateurs détectés, y compris les détections des caméras.",
86
97
  "chatContextSourceEtsProject": "Sémantique ETS et inventaire complet du projet Node-RED.",
87
98
  "chatContextSourceMemoryEducation": "Contexte de session, Éducation IA et mémoire domestique limitée.",
88
- "chatContextSourceCamerasDocs": "Caméras détectées et extraits pertinents de l'aide, du README et des exemples.",
99
+ "chatContextSourceCameras": "Caméras détectées et leurs fonctionnalités disponibles.",
89
100
  "chatContextSourceTtsUltimate": "Nœud TTS Ultimate sélectionné pour les annonces.",
90
101
  "chatContextSourceBadge": "Source",
91
102
  "chatContextFileChatContext": "Tours de conversation persistants, instructions et règles de notification des caméras.",
@@ -95,6 +106,9 @@
95
106
  "chatContextDirectoryRoot": "Racine de l'archive des télégrammes",
96
107
  "chatContextDirectoryNode": "Archive des télégrammes de ce nœud",
97
108
  "chatContextDirectoryBadge": "KNX",
109
+ "chatContextDirectoryAdapterRoot": "Racine de l’archive des événements des adaptateurs",
110
+ "chatContextDirectoryAdapterNode": "Archive des événements des adaptateurs de ce nœud",
111
+ "chatContextDirectoryAdapterBadge": "Adaptateur",
98
112
  "chatContextTelegramPattern": "Fichiers quotidiens",
99
113
  "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.",
100
114
  "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.",
@@ -31,7 +31,7 @@ Ogni sessione Ask/chat conserva gli ultimi 8 turni e fino a 20 istruzioni esplic
31
31
  Per le scritture DPT 1.xxx, gli equivalenti sicuri prodotti dall'AI `true`/`false`, `1`/`0` e `on`/`off` vengono normalizzati in un vero booleano prima della validazione locale e dell'uscita.
32
32
 
33
33
  ### Letture KNX aggiornate
34
- Quando l'utente chiede esplicitamente uno stato attuale o aggiornato, l'AI può interrogare gli oggetti esatti del catalogo ETS importato, compresi gli oggetti di stato e di sola lettura. L'uscita 4 emette `msg.destination`, `msg.dpt`, `msg.event = "GroupValue_Read"` e `msg.readstatus = true`. Il nodo attende fino a 6 secondi ogni `GroupValue_Response` o scrittura fresca, poi restituisce i valori decodificati sull'uscita 3 e i dettagli in `msg.knxAi.readResults`. Le letture non richiedono mai conferma e non vengono mai trasformate in scritture.
34
+ Quando l'utente chiede esplicitamente uno stato attuale o aggiornato, l'AI può interrogare gli oggetti esatti del catalogo ETS importato, compresi gli oggetti di stato e di sola lettura. L'uscita 4 emette `msg.destination`, `msg.dpt`, `msg.event = "GroupValue_Read"` e `msg.readstatus = true`. Il nodo attende fino a 6 secondi ogni `GroupValue_Response` o scrittura fresca, poi restituisce i valori decodificati sull'uscita 3 e i dettagli in `msg.knxAi.readResults`. Le letture non richiedono mai conferma e non vengono mai trasformate in scritture. Se un piccolo modello locale omette il tipo di operazione e il payload, gli oggetti ETS esatti vengono normalizzati in modo sicuro come letture; un elemento con payload resta una scrittura validata.
35
35
 
36
36
  ### Routine conversazionali multi-step
37
37
  Richieste come «Sto uscendo», «Buonanotte» o «Modalità cinema» possono coordinare una routine basata sullo stato corrente senza aggiungere opzioni all'editor. Nel primo passaggio LLM vengono accettate soltanto letture ETS esatte (massimo 20); KNX AI le invia e passa i risultati aggiornati GA/DPT/valore a un secondo passaggio di pianificazione isolato. Quest'ultimo può preparare fino a 12 scritture validate, ma non può avviare un altro ciclo di letture. Con la conferma attiva, l'intero piano richiede una sola conferma localizzata e nessuna scrittura o annuncio TTS richiesto viene emesso prima. Dopo la conferma ogni scrittura viene rivalidata, inoltrata in ordine e osservata fino a 4 secondi per un feedback immediato corrispondente sul bus. La risposta finale distingue il feedback osservato dalle operazioni senza feedback immediato, senza considerare queste ultime come dispositivi guasti. I dettagli sono disponibili in `msg.knxAi.routine`, `readResults`, `verifiedCount` e `unverifiedCount`.
@@ -51,13 +51,15 @@ I pacchetti di telecamere installati possono pubblicare a runtime un adapter per
51
51
 
52
52
  L'utente può chiedere uno snapshot aggiornato oppure domandare al modello vision che cosa è visibile. I preset Telegram e RedBot inviano l'immagine come foto nativa con didascalia. L'utente può anche creare notifiche persistenti per movimento, attraversamento di una linea intelligente o ingresso in una zona di intrusione/stazionamento, limitandole facoltativamente alle persone rilevate e a una linea o zona nominata esatta. Le regole vengono salvate nello stesso file `knxai-chat-context.md` e ripristinate dopo i riavvii di Node-RED. Le sottoscrizioni agli eventi UniFi e le richieste snapshot avvengono direttamente tramite il provider rilevato: l'uscita 4 di KNX AI non è coinvolta e non servono collegamenti intermedi nel flow.
53
53
 
54
+ Ogni evento pubblicato da un adapter rilevato automaticamente viene normalizzato e aggiunto a un file giornaliero `YYYY-MM-DD.jsonl` sotto `knxultimatestorage/knxai/adapter-history/<id-nodo>/`. L'archivio conserva 10 giorni, garantisce più di 24 ore di storico e salva i metadati degli eventi, non le immagini. Assistente web e canali CHAT lo interrogano insieme all'archivio giornaliero KNX. I totali comprendono tutte le righe memorizzate nell'intervallo richiesto; i dettagli selezionati sono soltanto un campione pertinente.
55
+
54
56
  ### Annunci con TTS Ultimate
55
57
  Quando è installato il pacchetto opzionale `node-red-contrib-tts-ultimate`, questo compare tra gli adapter rilevati automaticamente. Il selettore elenca tutti i nodi `ttsultimate` presenti in tutti i flow del progetto, indicando flow, nome del nodo e player configurato. Scegli il nodo che deve gestire gli annunci della chat e fai il deploy del flow.
56
58
 
57
59
  Solo una richiesta esplicita nel messaggio corrente della chat può creare un annuncio. KNX AI invia il testo esatto direttamente al nodo scelto come `msg.payload`, con `msg.topic = "knx_ai_announcement"`; non servono collegamenti intermedi nel flow. TTS Ultimate gestisce poi il player Sonos configurato, voce, volume, hailing e coda. Contesto persistente, Educazione AI, contenuto delle telecamere ed eventi dedotti non attivano mai autonomamente la voce.
58
60
 
59
61
  ### Riepilogo del contesto della chat
60
- L'editor del nodo mostra una scheda compatta con le fonti disponibili alla chat: traffico KNX corrente, semantica ETS e progetto Node-RED, memoria di sessione e domestica, Educazione AI, telecamere rilevate e documentazione pertinente. Elenca inoltre `knxai-chat-context.md`, `knxai-home-memory.md` e `knxai-config-<id-nodo>.json`, insieme alla radice assoluta dell'archivio telegrammi KNX, alla cartella specifica del nodo e al formato giornaliero `YYYY-MM-DD.jsonl`. I percorsi vengono risolti a runtime dalla directory dati realmente usata dal gateway configurato.
62
+ L'editor del nodo mostra una scheda compatta con le fonti disponibili alla chat: traffico KNX corrente e archiviato, eventi persistenti degli adapter, semantica ETS e progetto Node-RED, memoria di sessione e domestica, Educazione AI e telecamere rilevate. Mostra anche il contesto operativo massimo e il peso UTF-8 effettivo dell'ultimo prompt della chat; quando il provider comunica i token di input viene usato il valore esatto, altrimenti il conteggio è indicato come stima. La scheda elenca le directory assolute degli archivi KNX e degli eventi adapter e il formato giornaliero `YYYY-MM-DD.jsonl`.
61
63
 
62
64
  ## Intelligenza domestica proattiva guidata dall'Educazione e memoria limitata
63
65
  Da gerarchia ETS, nomi, ruoli e DPT, il nodo crea un modello semantico deterministico per persiane, finestre, porte, luci, temperatura, clima, presenza e allarmi usando termini italiani, inglesi, tedeschi, francesi, spagnoli e cinesi. Il rilevatore proattivo osserva soltanto stati non di comando di persiane, finestre e porte riconosciuti con sufficiente affidabilità.
@@ -118,7 +120,7 @@ Di seguito sono elencati tutti i campi presenti nell'editor del nodo KNX AI.
118
120
  - **Chiedi conferma prima di inviare comandi KNX**: attivo per default. Mostra prima le modifiche validate e non emette comandi KNX finché la stessa sessione chat non le conferma. Quando ci sono comandi in attesa, la risposta aggiunge sempre le istruzioni esatte per confermare o annullare nella lingua della richiesta corrente. I comandi vengono validati nuovamente subito prima dell'uscita.
119
121
  - **Preset adattatore**: parte da **Nessun adattatore**. La selezione carica la coppia predefinita di mappature ingresso/uscita; entrambe restano nascoste nell'editor.
120
122
  - **Educazione AI**: istruzioni autorevoli gestite soltanto dall'utente, lette dall'AI e mai modificate. È anche l'unico punto in cui richiedere notifiche proattive e definirne condizioni, durata, ore silenziose e ripetizione.
121
- - Gli estratti pertinenti di help, README ed esempi vengono sempre inclusi automaticamente; la lingua viene ricavata dalla richiesta dell'utente, con fallback automatici fra tutte le lingue supportate.
123
+ - Gli estratti inclusi nel pacchetto da help, README, changelog, wiki ed esempi non vengono inviati nei prompt di Telegram, RedBot o CHAT personalizzate. Restano disponibili soltanto all'Assistente web per le domande tecniche sul pacchetto.
122
124
  - Pulsante **Aggiorna**: interroga il provider e popola i modelli disponibili. Durante il caricamento l'icona ruota; il completamento corretto non mostra messaggi.
123
125
 
124
126
  ### Setup rapido Ollama (locale)
@@ -129,6 +131,7 @@ Di seguito sono elencati tutti i campi presenti nell'editor del nodo KNX AI.
129
131
  - **2) Installalo**: scarica e installa localmente il modello (esempio `llama3.1`).
130
132
  - Durante refresh/installazione, KNX AI prova anche ad avviare automaticamente il server Ollama quando possibile.
131
133
  - Se l'installazione fallisce per errore di connessione, verifica che Ollama sia avviato (app desktop o `ollama serve`).
134
+ - Il contesto massimo dichiarato da `/api/show` resta informativo. KNX AI invia sempre `num_ctx = 16384` (oppure il massimo del modello se inferiore) e usa la stessa vista semantica di 16K selezionata per pertinenza, evitando una KV cache sovradimensionata senza rimuovere capacità dell'agente.
132
135
  - Se Node-RED gira in Docker, usa `host.docker.internal` al posto di `localhost` nell'endpoint.
133
136
 
134
137
  ### Setup rapido Bionic LM Studio (locale)
@@ -136,6 +139,7 @@ Di seguito sono elencati tutti i campi presenti nell'editor del nodo KNX AI.
136
139
  - Avvia il server API di LM Studio dalla pagina **Developer** oppure con `lms server start`.
137
140
  - Endpoint predefinito: `http://localhost:1234/v1/chat/completions`.
138
141
  - Premi **Aggiorna** per caricare tutti i modelli esposti da `/v1/models`; se non è configurato un modello viene selezionato il primo.
142
+ - Se un modello è già caricato, KNX AI conserva la lunghezza del contesto attiva. KNX AI non carica mai un modello Bionic inattivo tramite l'API di gestione: la prima richiesta chat lascia che Bionic lo carichi JIT con i valori predefiniti salvati per il modello. Indipendentemente dal contesto dichiarato da Bionic, KNX AI limita sempre il proprio prompt a una vista semantica di 16K selezionata per pertinenza; evita così di inviare l'intero insieme di dati da 131K senza rimuovere capacità di ragionamento, KNX, routine, telecamere o TTS.
139
143
  - La API key è opzionale, salvo autenticazione attiva nelle impostazioni del server LM Studio. In Docker sostituisci `localhost` con `host.docker.internal`.
140
144
 
141
145
  ## Nota sicurezza
@@ -63,10 +63,12 @@
63
63
  "loadingModels": "Carico i modelli…",
64
64
  "loadedModels": "Modelli caricati",
65
65
  "lmStudioContextAvailable": "Contesto massimo del modello",
66
- "lmStudioContextLoading": "Caricamento del modello con il contesto massimo",
67
- "lmStudioContextConfigured": "Contesto massimo del modello configurato",
66
+ "lmStudioContextLoading": "Verifica del contesto attivo del modello",
67
+ "lmStudioContextInactive": "Modello inattivo; alla prima richiesta verranno usati i valori predefiniti di Bionic",
68
+ "lmStudioContextConfigured": "Contesto attivo del modello",
68
69
  "lmStudioContextFailed": "Impossibile configurare il contesto del modello",
69
70
  "lmStudioContextCurrentlyLoaded": "attualmente caricato",
71
+ "localContextBudget": "Budget contesto KNX AI",
70
72
  "ollamaNotSupported": "Modalita locale Ollama: API key non richiesta. Endpoint predefinito: http://localhost:11434/api/chat.",
71
73
  "ollamaNoModels": "Nessun modello Ollama locale trovato. Installa un modello o scegli dalla libreria.",
72
74
  "installingOllamaModel": "Avvio Ollama e installo il modello…",
@@ -87,13 +89,22 @@
87
89
  "chatContextLoading": "Caricamento del riepilogo del contesto…",
88
90
  "chatContextUnavailable": "Il riepilogo del contesto della chat non è momentaneamente disponibile.",
89
91
  "chatContextIntro": "La chat riceve automaticamente queste fonti. I percorsi sottostanti sono quelli effettivi usati da questa installazione Node-RED.",
92
+ "chatContextLimitLabel": "Contesto operativo massimo",
93
+ "chatContextProviderManaged": "gestito dal provider/modello selezionato",
94
+ "chatContextTokens": "token",
95
+ "chatContextLastPromptLabel": "Peso effettivo dell'ultimo prompt della chat",
96
+ "chatContextLastPromptUnavailable": "non disponibile fino alla prima richiesta della chat",
97
+ "chatContextExactInputTokens": "token di input misurati dal provider",
98
+ "chatContextEstimatedInputTokens": "token di input stimati",
99
+ "chatContextImages": "immagini",
90
100
  "chatContextSourcesTitle": "Fonti incluse",
91
101
  "chatContextFilesTitle": "File persistenti di contesto",
92
102
  "chatContextDirectoriesTitle": "Archivio telegrammi KNX",
93
103
  "chatContextSourceKnxTraffic": "Riepilogo KNX corrente, anomalie, topologia e telegrammi selezionati.",
104
+ "chatContextSourceAdapterHistory": "Storico giornaliero persistente degli eventi degli adapter rilevati, comprese le rilevazioni delle telecamere.",
94
105
  "chatContextSourceEtsProject": "Semantica ETS e inventario completo del progetto Node-RED.",
95
106
  "chatContextSourceMemoryEducation": "Contesto di sessione, Educazione AI e memoria domestica limitata.",
96
- "chatContextSourceCamerasDocs": "Telecamere rilevate ed estratti pertinenti da help, README ed esempi.",
107
+ "chatContextSourceCameras": "Telecamere rilevate e relative funzionalità disponibili.",
97
108
  "chatContextSourceTtsUltimate": "Nodo TTS Ultimate selezionato per gli annunci.",
98
109
  "chatContextSourceBadge": "Fonte",
99
110
  "chatContextFileChatContext": "Turni persistenti, istruzioni e regole di notifica delle telecamere.",
@@ -103,6 +114,9 @@
103
114
  "chatContextDirectoryRoot": "Radice archivio telegrammi",
104
115
  "chatContextDirectoryNode": "Archivio telegrammi di questo nodo",
105
116
  "chatContextDirectoryBadge": "KNX",
117
+ "chatContextDirectoryAdapterRoot": "Radice archivio eventi adapter",
118
+ "chatContextDirectoryAdapterNode": "Archivio eventi adapter di questo nodo",
119
+ "chatContextDirectoryAdapterBadge": "Adapter",
106
120
  "chatContextTelegramPattern": "File giornalieri",
107
121
  "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.",
108
122
  "chatAdapterCodeHelp": "Le mappature sono sincrone. Restituisci msg per continuare oppure nessun valore per scartarlo. Gli errori vengono intercettati e segnalati senza arrestare Node-RED.",