Dieser Node ĂŒberwacht alle KNX-Telegramme des ausgewĂ€hlten KNX-Ultimate-Gateways, erstellt Verkehrsstatistiken, erkennt Anomalien und kann optional ein LLM befragen.
Der Editor verwendet drei Hauptbereiche als Akkordeon: KI-Assistent enthĂ€lt Einrichtung, Wissen/Kontext und Anbietergrenzen; GesprĂ€che & Zuhause enthĂ€lt Chat-KanĂ€le, proaktives Zuhause und begrenztes GedĂ€chtnis; KNX-Verkehrsanalyse enthĂ€lt Bus-Telegramme, Verlauf/Zusammenfassungen und Anomalien/Muster. Beim Ăffnen eines Hauptbereichs werden alle zugehörigen Optionen gemeinsam angezeigt. Gespeicherte Feld-IDs und Werte bleiben unverĂ€ndert.
AusgÀnge
- Zusammenfassung/Statistik (
msg.payloadJSON) - Anomalien (
msg.payloadJSON) - KI-Assistent (
msg.payloadText, mitmsg.summary) - KNX-Operationen (eine Universal-Mode-Nachricht je validierter Lese- oder Schreiboperation)
Jede an den AusgĂ€ngen 3 und 4 ausgegebene Nachricht enthĂ€lt auĂerdem eine Kopie der ursprĂŒnglichen Eingangsnachricht in msg.inputMessage. Dadurch bleiben der ursprĂŒngliche Payload, das Topic, die Chat-Metadaten und alle weiteren Eingangseigenschaften fĂŒr nachfolgende Nodes verfĂŒgbar. Fehler beim Klonen oder Ausgeben werden abgefangen und gemeldet, statt in die Node-RED-Laufzeit zu gelangen.
Befehle (Eingang)
Sende msg.topic:
summary(oder leer): Summary sofort sendenreset: internen Verlauf, ZÀhler und gelerntes HausgedÀchtnis löschen; die KI-Erziehung bleibt unverÀndertask: Frage an das konfigurierte LLM sendenconfirm/cancel: ausstehende KNX-Befehle ohne erneuten LLM-Aufruf bestÀtigen oder abbrechenclear_chat: GesprÀchsspeicher der aktuellen Sitzung löschen
FĂŒr ask die Frage in msg.prompt (empfohlen), msg.payload (String) oder den ĂŒblichen Telegram-Feldern msg.payload.content / msg.payload.text ĂŒbergeben.
Bei aktiviertem KNX-Steuern werden die letzten GesprĂ€chsschritte im RAM nach msg.knxAi.sessionId, msg.sessionId oder erkannter Telegram-Chat-ID getrennt. Ausgang 3 mit dem Chat-Sender und Ausgang 4 mit einem KNX-Ultimate-Node im Universalmodus verbinden. Bei aktiver BestĂ€tigung zeigt die erste Antwort GA, DPT und Payload, ohne Schreiboperationen auszugeben; dieselbe Sitzung muss innerhalb von 5 Minuten BESTĂTIGEN oder ABBRECHEN antworten. Eine neue Anfrage ersetzt einen Ă€lteren Plan. Jeder bestĂ€tigte Befehl enthĂ€lt msg.destination, msg.dpt, msg.payload und msg.event = "GroupValue_Write".
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.
Aktuelle KNX-Lesewerte
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.
BestĂ€tigungsanfrage fĂŒr Chat-SchaltflĂ€chen
Solange ein Plan aussteht, enthĂ€lt Ausgang 3 msg.knxAi.confirmationRequest. Das Objekt enthĂ€lt required, status, sessionId, expiresAt, commandCount und zwei EintrĂ€ge in actions. Verwenden Sie action.label als Text der Telegram-SchaltflĂ€che, action.callbackData als Callback und senden Sie action.message an KNX AI zurĂŒck, um ohne Texteingabe zu bestĂ€tigen oder abzubrechen.
Chat-Adapter-Vorlagen
Der Tab Chat-Adapter lĂ€dt seine auswĂ€hlbaren Zuordnungen aus resources/KNXAIChatAdapterMappings.js. Die Auswahl einer Vorlage fĂŒgt zwei bearbeitbare synchrone JavaScript-Zuordnungen in Textfeldern ĂŒber die volle Breite ein: eine vor der Verarbeitung des Eingangs durch KNX AI und eine vor der Ausgabe an Ausgang 3. Geben Sie msg zurĂŒck, um fortzufahren, oder keinen Wert, um die Nachricht zu verwerfen. Syntax- und Laufzeitfehler werden abgefangen und gemeldet, ohne Node-RED anzuhalten.
Die enthaltene Vorlage windkh/node-red-contrib-telegrambot folgt dem Receiver-/Sender-Vertrag des Pakets. Verbinden Sie einen telegram receiver direkt mit KNX AI und Ausgang 3 direkt mit einem telegram sender. FĂŒr Inline-BestĂ€tigungsschaltflĂ€chen verbinden Sie zusĂ€tzlich einen als callback_query konfigurierten telegram event mit demselben KNX-AI-Eingang. Die Eingangszuordnung liest msg.payload.content, msg.payload.chatId und die Telegram-Sprache. Die Ausgangszuordnung erstellt msg.payload.chatId, type und content und ergĂ€nzt bei ausstehender SchreibbestĂ€tigung options.reply_markup aus msg.knxAi.confirmationRequest. Das Telegram-Paket bleibt eine separate optionale AbhĂ€ngigkeit.
Proaktive Hausintelligenz und begrenztes GedÀchtnis
Der Unterbereich Proaktives Zuhause & GedĂ€chtnis in GesprĂ€che & Zuhause aktiviert proaktive Benachrichtigungen auf Wunsch des Benutzers. Aus ETS-Hierarchie, Namen, Rollen und DPTs erstellt der Node ein deterministisches semantisches Modell fĂŒr RolllĂ€den, Fenster, TĂŒren, Licht, Temperatur, Klima, Anwesenheit und Alarme mit italienischen, englischen, deutschen, französischen, spanischen und chinesischen Begriffen. Der erste proaktive Detektor ĂŒberwacht nur zuverlĂ€ssig erkannte Nicht-BefehlszustĂ€nde von RolllĂ€den/Fenstern/TĂŒren. Nach der konfigurierten Offenzeit und auĂerhalb der Ruhezeiten gibt Ausgang 3 eine lokalisierte Nachricht mit msg.knxAi.type = "proactive_notification" aus. Ausgang 4 wird niemals proaktiv verwendet und KNX wird nicht selbststĂ€ndig verĂ€ndert; eine spĂ€tere Benutzeranfrage durchlĂ€uft weiterhin die normale Validierung und BestĂ€tigung.
Die letzte Chat-Sitzung wird als EigentĂŒmer gespeichert; alternativ kann HauptempfĂ€nger / Chat-ID sie ausdrĂŒcklich festlegen. Ein synthetisches msg.inputMessage bewahrt den EmpfĂ€nger, damit der Telegram-Adapter eine spontane Nachricht senden kann. Cooldown und höchstens drei proaktive Nachrichten pro Stunde verhindern eine Nachrichtenflut.
Die gelernte Referenz wird beim Start aus <userDir>/knxai/memory/knxai-home-memory-<node-id>.md geladen, alle 15 Minuten atomar neu geschrieben und strikt auf konfigurierbare 64â1.024 KB begrenzt (standardmĂ€Ăig 256 KB). Sie enthĂ€lt höchstens 120 wichtige Beobachtungen, 80 aggregierte Gewohnheiten, 80 Benachrichtigungen und 300 semantische ETS-Objekte, niemals einen unbegrenzten Rohtelegrammstrom. Alte EintrĂ€ge mit niedriger PrioritĂ€t werden zuerst entfernt. KI-Erziehung ist auf 16.000 Zeichen begrenzt und stammt immer aus der Node-Konfiguration: Die KI darf sie als verbindliche Vorgabe lesen, aber weder Ă€ndern noch ĂŒberschreiben. Ist eine Erziehung vorhanden, kann das LLM sie aber nicht auswerten, wird die mögliche Benachrichtigung unterdrĂŒckt, statt ihr möglicherweise zu widersprechen.
Praktisches Konfigurationsbeispiel
Dieses Beispiel erstellt einen knappen Assistenten, der wichtige Ăffnungen meldet, aber akzeptiert, dass der Rollladen im BĂŒro offen bleiben darf:
| Editor-Feld | Beispielwert | Wirkung |
|---|---|---|
Proaktive Hausbenachrichtigungen aktivieren (proactiveEnabled) |
aktiv | ZuverlĂ€ssig erkannte offene Rollladen-/Fenster-/TĂŒrzustĂ€nde werden bewertet. |
HauptempfÀnger / Chat-ID (proactiveRecipient) |
123456789 |
Spontane Nachrichten gehen an diesen Chat; leer bedeutet: letzte Ask-Sitzung merken. |
Nach offener Dauer benachrichtigen (proactiveOpenMinutes) |
120 |
Nach zwei Stunden wird eine mögliche Meldung bewertet. |
| Ruhezeit Beginn / Ende | 23:00 / 07:00 |
Nachts werden keine proaktiven Nachrichten ausgegeben. |
Wiederholungs-Cooldown (proactiveCooldownMinutes) |
360 |
Dasselbe Objekt meldet sich sechs Stunden lang nicht erneut. |
Maximale HausgedÀchtnis-Datei (homeMemoryMaxKb) |
256 |
Die Markdown-Referenz dieses Nodes bleibt unter 256 KB. |
Beispiel fĂŒr KI-Erziehung (aiEducation):
Nenne mich Alex und antworte in derselben Sprache wie ich.
Antworte kurz, auĂer ich bitte um technische Einzelheiten.
Der BĂŒro-Rollladen darf tagsĂŒber offen bleiben: benachrichtige mich nicht.
Melde andere RolllĂ€den, Fenster oder TĂŒren, die ungewöhnlich lange offen bleiben.
Wenn âWohnzimmerlichtâ mehrdeutig ist, frage nach der gemeinten Leuchte.
Behaupte nie eine AktorÀnderung, bevor ein KNX-Statusobjekt sie bestÀtigt.
Damit kann Ausgang 3 nach 120 Minuten eine lokalisierte proactive_notification fĂŒr den Wohnzimmer-Rollladen ausgeben, wĂ€hrend eine Meldung fĂŒr den BĂŒro-Rollladen durch die Erziehung unterdrĂŒckt wird. Bittet Alex danach um das SchlieĂen, erstellt KNX AI den exakten ETS-Befehl, behĂ€lt aber Validierung und BestĂ€tigung vor Ausgang 4 bei.
Verwenden Sie aussagekrÀftige ETS-Hierarchien und Objektnamen sowie korrekte Status-/Befehlsrollen. Die Erziehung personalisiert Entscheidungen und Formulierungen, kann aber keine Gruppenadresse erfinden, keinen DPT Àndern und die KNX-Validierung nicht umgehen.
Kurzer Ablauf: KNX-Steuerung
- Importieren Sie die ETS-CSV in das Gateway und konfigurieren Sie LLM-Anbieter, Modell und Zugangsdaten.
- Aktivieren Sie LLM-Assistent und KNX-ZustÀnde lesen und Aktoren steuern; lassen Sie die BestÀtigung aktiviert.
- Verbinden Sie den Chat-Eingang mit KNX AI und behalten Sie eine stabile Sitzungs-/Chat-ID bei.
- Verbinden Sie Ausgang 3 mit der Chat-Antwort und Ausgang 4 mit KNX Ultimate im Universalmodus.
- Der Benutzer sendet eine Anfrage; aktuelle Zustandsabfragen werden sofort gelesen, wÀhrend Schreiboperationen zuerst GA, DPT und Wert ohne Bus-Schreibzugriff anzeigen.
- Innerhalb von 5 Minuten antwortet derselbe Chat exakt mit
BESTĂTIGENoderABBRECHEN. - Nur
BESTĂTIGENvalidiert erneut und gibt Befehle an Ausgang 4 aus; prĂŒfen Sie die AusfĂŒhrung ĂŒber eine KNX-Status-GA.
Konfigurationsfelder
Hier sind alle Felder aufgefĂŒhrt, wie sie im KNX-AI-Editor sichtbar sind.
Allgemein
- Gateway: KNX-Ultimate Gateway/Config-Node als Telegrammquelle.
- Name: Node-Name und Dashboard-Titel.
- Topic: Basis-Topic der Node-AusgÀnge.
- Button Open KNX AI Web: Ăffnet das Web-Dashboard (
/knxUltimateAI/sidebar/page).
KNX AI hört automatisch auf GroupValue_Write, GroupValue_Response und GroupValue_Read. Die Muster- und Anomalieanalyse wird immer mit den integrierten Standardwerten initialisiert; Busereignisse und Erkennung mĂŒssen daher nicht konfiguriert werden.
Analysis
- Analysis window (seconds): Hauptfenster fĂŒr Summary/Rate-Berechnung.
- History window (seconds): Aufbewahrungsfenster der internen Telegramm-Historie.
- Captured telegrams also on disk archivieren: Speichert Telegramme zusÀtzlich zu RAM in
knxultimatestorage/knxai/history/<node-id>/YYYY-MM-DD.jsonl. - Aufbewahrung des Festplattenarchivs (Tage): Anzahl Tage, die Archivdateien auf Platte behalten werden, bevor sie automatisch gelöscht werden.
- Max stored events: Maximale Anzahl Telegramme im Speicher.
- Auto emit summary (seconds, 0=off): Periodisches Summary-Intervall.
- Top list size: Anzahl Top-Gruppenadressen/Quellen in der Summary.
KI-Assistent
- Enable LLM assistant: Aktiviert Ask/Chat-Funktionen.
- Provider: LLM-Backend (OpenAI-compatible oder Ollama).
- Endpoint URL: URL des Chat/Completions-Endpunkts.
- API key: API-SchlĂŒssel (fĂŒr lokales Ollama nicht erforderlich).
- Model: Modell-ID/Name.
- Chatmodell-KompatibilitĂ€t: Das ausgewĂ€hlte Modell muss den konfigurierten Chat-Completions-Endpunkt unterstĂŒtzen. Ăltere reine Completions-Modelle wie
gpt-3.5-turbo-instructwerden beim Aktualisieren der Modellliste ausgeschlossen. Lehnt der Anbieter einen benutzerdefinierten Temperaturwert oder den Token-Limit-Parameter ab, wiederholt KNX AI die Anfrage und entfernt oder ersetzt nur das inkompatible Feld. - KI darf KNX-ZustĂ€nde lesen und Aktoren steuern: Aktiviert Ausgang 4 und ist standardmĂ€Ăig aus. Exakte ETS-Katalogobjekte dĂŒrfen gelesen werden; Schreiboperationen werden ausschlieĂlich fĂŒr Objekte mit Rolle
commandakzeptiert. Unbekannte, DPT-falsche, ungĂŒltige oder ĂŒberzĂ€hlige Operationen sowie Schreiboperationen auf Status-/Neutralobjekte werden lokal abgewiesen. - 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.
- Adapter-Vorlage: StandardmĂ€Ăig ist Kein Adapter gewĂ€hlt. Die JavaScript-Editoren bleiben verborgen, bis ein Adapter ausgewĂ€hlt wird; danach werden die bearbeitbaren Ein- und Ausgangszuordnungen geladen und angezeigt.
- Eingangszuordnung (Chat â KNX AI): Synchrones JavaScript vor der Verarbeitung des Eingangsbefehls im grĂŒnen JavaScript-Editor.
- Ausgangszuordnung (KNX AI â Chat): Synchrones JavaScript ausschlieĂlich fĂŒr Nachrichten an Ausgang 3 im gelben JavaScript-Editor.
- Proaktive Hausbenachrichtigungen aktivieren: Optionaler Detektor fĂŒr zuverlĂ€ssig erkannte offene Rollladen-/Fenster-/TĂŒrzustĂ€nde; er schreibt nie selbststĂ€ndig auf KNX.
- HauptempfĂ€nger / Chat-ID: Optionales Ziel fĂŒr unaufgeforderte Chatnachrichten; andernfalls wird die letzte Ask-Sitzung gespeichert.
- Nach offener Dauer benachrichtigen (Minuten): Schwelle, bevor eine proaktive Nachricht erwogen wird; standardmĂ€Ăig 120 Minuten.
- Ruhezeit Beginn / Ende: TĂ€glicher Zeitraum, in dem proaktive Nachrichten unterdrĂŒckt werden.
- KI-Erziehung: Verbindliche, ausschlieĂlich vom Benutzer verwaltete Hinweise, die die KI lesen, aber nie Ă€ndern darf.
- Wiederholungs-Cooldown (Minuten): Mindestintervall vor einer weiteren Meldung desselben Objekts; standardmĂ€Ăig 360 Minuten.
- Maximale HausgedĂ€chtnis-Datei (KB): Harte Grenze von 64 bis 1.024 KB; standardmĂ€Ăig 256 KB.
- Wenn das Festplattenarchiv aktiv ist, nutzt Ask standardmĂ€Ăig dieses Archiv: explizite Datumsangaben/Zeitbereiche werden beachtet, sonst durchsucht der Assistent die letzten 24 Stunden plus aktuelle RAM-Events.
- Node-RED-Projektinventar einbeziehen: Nimmt das gesamte Node-RED-Projektinventar in den Prompt auf, einschlieĂlich KNX-Nodes und anderer hilfreicher Nodes wie function/change/inject/template, wenn sie KNX-Logik oder Gruppenadressen enthalten.
- Relevante AuszĂŒge aus Hilfe, README und Beispielen werden immer automatisch einbezogen.
- Docs language: Bevorzugte Sprache der automatisch einbezogenen DokumentationsauszĂŒge.
- 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.
Advanced
- Analysis window (seconds): Hauptfenster fĂŒr Summary/Rate-Berechnung.
- Max stored events: Maximale Anzahl Telegramme im Speicher.
- Top list size: Anzahl Top-Gruppenadressen/Quellen in der Summary.
Ollama Schnellstart (lokal)
- Provider = Ollama auswÀhlen.
- Standard-Endpoint:
http://localhost:11434/api/chat. - Wenn keine lokalen Modelle gefunden werden:
- 1) Download model: öffnet die Seite Model library.
- 2) Install it: lÀdt und installiert das Modell lokal (z. B.
llama3.1).
- Beim Refresh/Install versucht KNX AI zusÀtzlich, den Ollama-Server automatisch zu starten.
- Bei Installationsfehlern mit Verbindungsproblem prĂŒfen, ob Ollama lĂ€uft (Desktop-App oder
ollama serve). - Wenn Node-RED in Docker lÀuft, im Endpoint
host.docker.internalstattlocalhostverwenden.
Sicherheitshinweis
Bei aktiviertem LLM kann KNX-Traffic-Kontext an den konfigurierten Endpoint gesendet werden. FĂŒr striktes On-Premise lokale Provider verwenden. Ein Befehl an Ausgang 4 hat die lokale Validierung bestanden und wurde an den Flow weitergegeben; dies bestĂ€tigt nicht die AusfĂŒhrung durch den Aktor. DafĂŒr eine KNX-Status-GA verwenden.