Neue Hauptversion V 4.1.1 mit Bugfix verfügbar

Dies ist die Fehlerkorrekturversion zur V 4.1 mit Fix für Kompatibilität der Tunnel, u.a. für ETS 6.3.0

Wir haben den seit 2019 bereitgestellten KNXnet/IP Tunneling Server im Timberwolf Server erweitert für Kompatibilität mit aktuellen Anforderungen der ETS 6.3 und weiterer Software, z.B. Weinzierl ENO Tools

Alle Informationen hier: https://elabnet.atlassian.net/wiki/page ... 3100770306

[Erfahrungsbericht] [V4.5 IP4] Nutzung von KI (LLM) für Dokumentation und Custom-Logiken

User-Geschichten zu erfolgreichen Projekten wie Migrationen vom Wiregate, Eigenbauten, usw.
Forumsregeln
  • Denke bitte an aussagekräftige Titel und gebe dort auch die [Firmware] an. Wenn ETS oder CometVisu beteiligt sind, dann auch deren Version
  • Bitte mache vollständige Angaben zu Deinem Server, dessen ID und dem Online-Status in Deiner Signatur. Hilfreich ist oft auch die Beschreibung der angeschlossener Hardware sowie die verwendeten Protokolle
  • Beschreibe Dein Projekt und Dein Problem bitte vollständig. Achte bitte darauf, dass auf Screenshots die Statusleiste sichtbar ist
  • Bitte sei stets freundlich und wohlwollend, bleibe beim Thema und unterschreibe mit deinem Vornamen. Bitte lese alle Regeln, die Du hier findest: https://wiki.timberwolf.io/Forenregeln

Ersteller
Franky
Reactions:
Beiträge: 105
Registriert: Di Dez 24, 2024 1:24 pm
Hat sich bedankt: 38 Mal
Danksagung erhalten: 57 Mal

[V4.5 IP4] Nutzung von KI (LLM) für Dokumentation und Custom-Logiken

#1

Beitrag von Franky »

Hi,

entstanden aus dem Thread [V4.5 IP3] Schritt für Schritt Umsetzung einer (Dusch)-Lüftersteuerung

können wir hier das Thema Nutzung von KI (LLM) bspw. für die Erstellung und Verbesserung von Dokumentation und Custom-Logiken aufgreifen. Beiträge zur eigentlichen Lüftersteuerung belassen wir am besten weiterhin im Ursprungsthread.

Auf die Schnelle, folgende Infos von mir:

Ich habe meinen (auch für mich :ugeek: experimentellen) Chatverlauf der Lüftersteuerung mit Claude 3.7 gerade auf öffentlich gestellt. (Wer sich das antun will :lol: :lol:).

https://claude.ai/share/a97b4528-cb7e-4 ... 60cfdb2dc9

Wer noch keine Erfahrung mit LLM (Large Language Models) hat: Sie "halluzinieren" (leider) :doh: :angry-banghead: . Sie sind (nach meinem Verständnis) auch darauf trainiert, plausibel KLINGENDE Texte zu generieren. Ich habe in meiner Domäne (Elektrotechnik) mal ein paar Wissensabfragen gemacht und das Ergebnis war katastrophal. Da werden falsche Aussagen gegeben, Normen etc. pp. völlig frei erfunden. Diese Erfahrung hat mich geprägt und ich bin mittlerweile froh, so eine schlechte erste Erfahrung mit LLMs gemacht zu haben, um ein richtiges Verständnis von der Leistungsfähigeit der LLMs zu erhalten und die Grenzen kennenzulernen. Siehe auch Halluzination (Künstliche Intelligenz).

Nun ist der Bereich der Softwareentwicklung aber (tendentiell) gut geeignet für KI, da die Korrektheit der Ergebnisse (Code) durch Tests / Reviews geprüft werden kann.

So hat der Custom-Logik-Editor vom TWS das erste recht umfangreiche Code-Ergebnis sofort (syntaktisch) geschluckt und keinen einzigen Fehler angemerkt. Ich glaube wir wissen alle, was das für eine Leistung für den Ersteller einer Custom-Logik ist :twisted: :lol: :twisted:. Durch diesen "Test" war ich mir sicher, dass die Qualität des erstellten Ergebnisses richtig, richtig gut wird. Wie gesagt, bei Code oder in einer Domäne, in der man sich auskennt, ist das Risiko geringer, da Fehler (wie hier syntaktische) i.d.R. sofort auffallen.

Bei einer reinen Informationssuche ist das nicht so einfach, da man eben nicht weiss, ob die Antwort die gesuchte Information ist oder ein "Hirngespinst" des LLM. Und die LLMs sind stark im "Erfinden" und frei kombinieren von Informationen. Also lasst euch nicht blenden von guten Formulierungen! Das können sie gut.

Zu den Tools: Ich springe immer mal wieder zwischen Gemini (google) ChatGPT (OpenAI) und meinem Favorit Claude (anthropic.com) hin und her. Ebenso gönne ich mir ein der Regel eine der kostenpflichtigen Versionen. Im Folgemonat oft einen der anderen Anbieter, um vergleichen zu können.

Ich lasse mir kleine Routinen / Scripte mittlerweile oft durch eine LLM schreiben.

Ein weiteres Beispiel, das zu unserem Thema (KNX) passt, ist folgender Thread (link). Da ist ein sehr spezieller Generator für Gruppenadressen inkl. Prompt veröffentlicht. ("Promt" ist die Anweisung an die KI (LLM)). Das Tolle: Das "Fachkonzept" liegt im Prompt in "Prosa" vor. Wer eine etwas andere Lösung haben will, fasst seine Anforderung ebenfals in Prosa zusammen und erhält eine neue Lösung. Die Aufgaben die sich so lösen lassen, dürfen mit der Zeit immer komplexer werden. Ob die Zunahme der Komplexität anhält, oder ein mit unserem aktuellen Stand der Technik nicht überschreitbares Plateau erreicht wurde, bleibt spannend: google suche

Wenn ihr ein "Fachkonzept" (Anforderung) erstellt habt, dann setzt doch einfach mal den Text

Code: Alles auswählen

Untersuche den folgenden Prompt auf Inkonsistenzen, Lücken, Widersprüche, Fehler, Vereinfachungsmöglichkeiten:
vor diesen Prompt, sendet ihn ab und lasst euch das Fachkonzept selbst von der KI verbessern, auf Definitionslücken oder Widersprüche untersuchen. Mega faszinierend, damit "um die Ecke" zu denken.

Hier ein paar einleitende Worte in einem Prompt an eine LLM, um die Korrektheit zu schärfen und das Halluzinieren (hoffentlich) weiter einzudämmen:

Code: Alles auswählen

Überprüfe alle Annahmen gründlich, bevor du Lösungsvorschläge machst
Analysiere jeden Vorschlag vollständig auf Machbarkeit und Konsistenz
Frage bei Unsicherheiten explizit nach weiteren Informationen
Führe bei technischen Lösungen systematisch Gegenprüfungen durch
Prüfe bei Signalverarbeitung und Kommunikationssystemen, ob Lösungen sowohl mit konstanten als auch mit wechselnden Signalwerten funktionieren
Stelle dir immer die Frage: 'Was könnte bei diesem Ansatz schieflaufen?'"
Ich, für meinen Teil, bin sehr fasziniert von der aktuellen Technik, nutze sie für mich, blicke aber auch etwas sorgenvoll in die Zukunft (AGI, KI-Singularität, KI im Internet mit Zugriff auf IOT-devices / Telefonie (Stimmenimitation) / E-Mails / (social engineering), ...)

Gruß

Franky

(Mod-Edit: Versionsangabe im Titel anhand des Datums des Beitrags ergänzt.)
Zuletzt geändert von Parsley am Do Apr 10, 2025 7:07 pm, insgesamt 10-mal geändert.
Timberwolf 3500L ID:1642; Support-VPN für ElabNET ist an.

Ersteller
Franky
Reactions:
Beiträge: 105
Registriert: Di Dez 24, 2024 1:24 pm
Hat sich bedankt: 38 Mal
Danksagung erhalten: 57 Mal

#2

Beitrag von Franky »

Mit Claude3.7 komme ich (trotz Bezahlmodell) momentan sehr schnell an die Grenzen der Limit Anzahl Abfragen/Tokennutzung.

Da ich aktuell mit der KI "Promoptengeneering" für Custom-Logiken mache, also mir den Prompt (als Arbeitsergebnis und Speicher für alle Informationen an die KI) durch die KI selbst erstellen lasse, ist das blöd: Wenn das rate limit zuschlägt, kann ich mir den letzten Stand des Prompts nicht mehr ausgeben lassen. Ihn jedes mal ausgeben zu lassen ist nicht zielführend, da er sehr lang ist.

Aktueller heißer Scheiß: google ai (nicht gemini)

Über den link hat man (ohne Bezahlabo) scheinbar unbegrenzten Zugriff auf das beste (Beta) Modell von google und das ist in derselben Liga wie Claude.

Hier mein aktueller "Meta Prompt", an dem ich gerade entwickle. Wie gesagt, das ist nicht zwingend ökonomisch, ich baue damit aber meine Skills in der Promptentwicklung auf und nach meiner Einschätzung wird das in der Zukunft die Schnittstelle sein, um unsere Tools, Roboter, (Entwicklungsumgebungen), den Timberwolfserver :twisted: also alles mit einer gewissen Kompexität zu bedienen.

Die notwendigen Seiten aus der TWS-Wiki habe ich in ein pdf gepackt

Code: Alles auswählen

--- START DES AKTUELLEN MASTERPROMPTS ---

ANWEISUNGEN FUER DIE PROMPT-OPTIMIERUNG:

WICHTIG: Sprich in deutscher Sprache mit mir. Die notwendige Dokumentation (Timberwolf Custom Logik Module, Statemachine Beschreibung) wurde bereitgestellt.

Du bist ein Experte fuer die Timberwolfserver-Plattform.
Du hast die Funktionsweise der "Custom-Logik" des Timberwolf-Servers und der verfügbaren Module (Statemachine, Monoflop, Lowpass, Comparator,
Triggered, SendExplicit, Clocksignal, And, Or, Limiter, Polynomial, Latch, Multiplexer etc.) durch Studium der bereitgestellten
Dokumentation verinnerlicht.
Fachbegriffe im Chat und Code dürfen in Englisch sein.
Du sollst mir dabei helfen, den gesamten nachfolgenden Prompt-Text (inklusive dieser Meta-Anweisungen und der besonderen Anforderungen) zu optimieren.
Gibst du ihn aus, dann vollständig, inkl. dieser ANWEISUNGEN FUER DIE PROMPT-OPTIMIERUNG.
Der Hauptfokus liegt dabei auf der Optimierung der Anforderungen fuer die feuchtigkeitsgesteuerte Lueftersteuerung im Abschnitt "ANFORDERUNGEN".
Wichtiger Hinweis: Alle relevanten Informationen, Entscheidungen und offenen Punkte werden in diesem Prompt festgehalten. Er dient als
Master-Dokument für die Entwicklung. Stelle bei Unklarheiten Rückfragen.

Die folgenden Meta-Anweisungen (Punkte 1-8 dieses Abschnitts und der Abschnitt "BESONDERE ANFORDERUNGEN") beschreiben, wie du diese Optimierung durchfuehren
sollst. Sie sind selbst Teil des zu optimierenden Prompts und sollen ausgegeben werden. Wenn du feststellst, dass diese Meta-Anweisungen selbst unklar
sind oder verbessert werden koennten, um das Ziel besser zu erreichen, weise bitte darauf hin.

Deine Hauptaufgabe gemaess dieser Anweisungen ist es:

Den Abschnitt "ANFORDERUNGEN" auf Klarheit, Vollstaendigkeit und technische Praezision zu ueberpruefen (jetzt für den Statemachine-Ansatz mit Catch-All).

Unklarheiten zu identifizieren und zur Klaerung zu markieren (statt sie eigenmaechtig zu loesen).

Die Struktur für die Statemachine-Implementierung vorzubereiten und zu verfeinern.

Eine Analyse und Empfehlung zum Statemachine-Ansatz zu geben (Status: Statemachine bevorzugt, wird jetzt implementiert).

Die Logik für die Ableitung von $LuefterAn und $FehlerText aus $State zu definieren.

Analyse: Analysiere "ANFORDERUNGEN" auf Klarheit, Vollstaendigkeit und technische Präzision im Kontext der Timberwolfserver Custom-Logiken,
speziell für den Statemachine-Ansatz, unter Berücksichtigung der bereitgestellten Dokumentation.

Identifiziere Unklarheiten: Finde alle Stellen, an denen Anforderungen mehrdeutig, widerspruechlich, unvollstaendig oder potenziell fehlerhaft
interpretiert werden koennten.

Identifiziere fehlende Details: Finde Stellen, an denen technische Details fehlen, die fuer eine eindeutige Implementierung notwendig sind
(z.B. genaue Trigger-Bedingungen, Verhalten in Grenzfällen, Timer-Parameter, Reset-Verhalten von Timern).

Schlage Verbesserungen vor: Schlage konkrete Formulierungen oder Strukturänderungen fuer "ANFORDERUNGEN" vor, um Klarheit und Präzision zu
erhoehen.

KEINE ANNAHMEN TREFFEN - FRAGEN STELLEN: Wenn du bei der Analyse (Punkte 2-4) eine Unklarheit identifizierst:

Triff keine Annahme ueber die gewuenschte Logik.

Markiere Unklarheiten in "ANFORDERUNGEN" deutlich und präzise (z.B. mit [KLAERUNGSBEDARF SM.X - Kurze Beschreibung]). Formuliere direkt
darunter die konkrete Rückfrage oder die zu klärenden Alternativen.

Formuliere die praezise Rueckfrage im Abschnitt "OFFENE PUNKTE UND KLÄRUNGSBEDARF".

Gedankliche Durchfuehrung: Nutze den 'Trockentest', um den Prompt gedanklich durchzufuehren und gezielt Stellen zu identifizieren, die Rueckfragen
erfordern, insbesondere bei Zustandsübergängen und Timer-Interaktionen.

Logikgenerierung aus Tabelle (ENTFALLEN): Dieser Punkt entfällt korrekt.

Kritische Überprüfung von Anforderungen:

Hinterfrage aktiv, ob die im Prompt definierten technischen Anforderungen mit den verfügbaren Mitteln der Timberwolfserver-Plattform umsetzbar
sind, insbesondere mit dem Statemachine-Modul und dem Monoflop für MaxZeit.

Prüfe besonders die Timer-Interaktionen (Start, Stopp, Reset-Bedingungen gemäß Modul-Doku), die Bedingungslogik für die Statemachine und die
Prioritätenreihenfolge.

Schlage bei technischen Limitierungen alternative Implementierungsmöglichkeiten vor (z.B. andere Modulkombinationen).

Beziehe dich bei der Überprüfung explizit auf die bereitgestellte Dokumentation.

BESONDERE ANFORDERUNGEN:

ASCII-Nur Format: Der optimierte Prompt (inkl. der Metaanweisungen im Anfang) muss in reinem ASCII-Text formatiert sein (Umlaute erlaubt). Der
Zeilenumbruch sollte so erfolgen, dass er in einem reinen Texteditor mit ca. 165 Zeichen Breite gut lesbar ist. Rechtschreibfehler sind zu
korrigieren.

Self-Debugging-Ansatz: Der 'Trockentest' dient primaer dazu, Unklarheiten zu identifizieren und Rueckfragen zu generieren, nicht dazu, eine
Loesung vorwegzunehmen. Die identifizierten "Stolpersteine" und die daraus resultierenden Fragen/Alternativen müssen klar im Prompt markiert und im
Abschnitt "OFFENE PUNKTE" zusammengefasst werden.

Dokumentationsreferenz: Beziehe dich bei Vorschlaegen zur Verwendung von Modulen auf die bereitgestellte Dokumentation, um die korrekte Anwendung
sicherzustellen und ggf. auf Einschraenkungen oder Besonderheiten hinzuweisen (z.B. Reset-Verhalten Monoflop, Timeout-Bedingung Statemachine).

Strukturierte Kommentare: Die Anforderung, die Statemachine-Übergangsregeln und die vorbereitende Logik angemessen zu kommentieren, wurde dem
Abschnitt "ANFORDERUNGEN AN DIE IMPLEMENTIERUNG" hinzugefügt.

"ANFORDERUNGEN" (Statemachine-Ansatz mit Catch-All):

TIMBERWOLFSERVER CUSTOM-LOGIK: FEUCHTIGKEITSGESTEUERTE LUEFTERSTEUERUNG MIT STATEMACHINE

Diese Logik implementiert eine Lüftersteuerung mittels des Statemachine-Moduls.

GRUNDFUNKTIONALITAET:

Automatische Lueftersteuerung basierend auf relativer Luftfeuchtigkeit mit Hysterese.
Manueller Luefterbetrieb durch Tasterbedienung mit definierter Laufzeit.
Zeitgesteuerter Nachlauf nach Unterschreiten der Feuchtigkeitsschwelle.
Übergeordnete Sperrfunktion.
Sicherheitsabschaltung nach maximaler ununterbrochener Laufzeit.
Bus-Reset-Funktion zur erneuten Ausgabe des aktuellen Luefterstatus.
Fehlererkennung für unbehandelte Zustandsübergänge.

ZUSTAENDE (Variable $State):

0: AUS - Lüfter ist aus, keine Anforderung aktiv.

1: FEUCHTE_AKTIV - Lüfter läuft aufgrund hoher Feuchtigkeit.

2: NACHLAUF - Lüfter läuft für eine definierte Zeit nach, nachdem die Feuchteanforderung entfallen ist.

3: MANUELL - Lüfter läuft für eine definierte Zeit aufgrund manueller Tasterbetätigung.

4: GESPERRT - Lüfter ist aus aufgrund einer externen Sperre (höchste Priorität).

5: MAX_ZEIT_ERREICHT - Lüfter ist aus aufgrund Überschreitung der maximalen Laufzeit (zweithöchste Priorität).

99: FEHLER - Unbehandelte Situation in der Statemachine erkannt (Catch-All).

DETAILLIERTE ANFORDERUNGEN:
1. VORVERARBEITUNG & BEDINGUNGEN:

Feuchtigkeitsglättung: in_Feuchtigkeit wird mittels Lowpass (Zeitkonstante $GlaettungsZeit) geglättet -> $GeglaetteteFeuchte.

["Lowpass", "in_Feuchtigkeit", "$GeglaetteteFeuchte", "$GlaettungsZeit"]

Parameter übernehmen: (Stellt sicher, dass Parameter für Berechnungen verfügbar sind)

["Latch", "in_param_Feuchte_GlaettungDauer", "$GlaettungsZeit", "$ConstTrue", 0]

["Latch", "in_param_Feuchte_EinschaltOffset", "$EinschaltOffset", "$ConstTrue", 0]

["Latch", "in_param_Feuchte_AusschaltOffset", "$AusschaltOffset", "$ConstTrue", 0]

["Latch", "in_param_TasterLueftung_Laufzeit", "$ManuelleLaufzeit", "$ConstTrue", 0]

["Latch", "in_param_Feuchte_Nachlaufzeit", "$Nachlaufzeit", "$ConstTrue", 0]

["Latch", "in_param_Luefter_max_Laufzeit", "$MaxLaufzeitParam", "$ConstTrue", 0]

Schwellenberechnung: (Mit Polynomial für A+BX, wobei X=1)

["Polynomial", "$ConstTrue", "$EinschaltSchwelle", ["$GeglaetteteFeuchte", "$EinschaltOffset"]] /* $EinschaltSchwelle = $GeglaetteteFeuchte + $EinschaltOffset * 1 */

["Polynomial", "$ConstTrue", "$AusschaltSchwelle", ["$GeglaetteteFeuchte", "$AusschaltOffset"]] /* $AusschaltSchwelle = $GeglaetteteFeuchte + $AusschaltOffset * 1 */

Feuchtigkeitsvergleiche (mit Comparator, strikte Ungleichheit > bzw. <):

["Comparator", "in_Feuchtigkeit", "$FeuchteUeberEinschalt", "$EinschaltSchwelle"]

["Comparator", "$AusschaltSchwelle", "$FeuchteUnterAusschalt", "in_Feuchtigkeit"] /* Prüft $AusschaltSchwelle > in_Feuchtigkeit */

["Comparator", "in_Feuchtigkeit", "$FeuchteUeberAusschalt", "$AusschaltSchwelle"] /* Benötigt für Nachlauf-Reset */

Tastererkennung (Steigende Flanke):

["Triggered", "in_Taster_manuellesLueften", "$TasterHatAusgeloest"]

["And", ["$TasterHatAusgeloest", "in_Taster_manuellesLueften"], "$TasterBetaetigt"] /* Funktioniert bei Trigger 'c' auf in_Taster_manuellesLueften */

Sperre: $SperreAktiv = in_LuefterSperre

["Latch", "in_LuefterSperre", "$SperreAktiv", "$ConstTrue", 0] /* Direkte Übernahme für unmittelbare Reaktion */

2. MAXIMALE LAUFZEITUEBERWACHUNG (Externer Monoflop):

Monoflop-Modul (MaxZeitTimer): Startet bei steigender Flanke des Lüfters ($LuefterAn vom aktuellen Zyklus), wird bei fallender Flanke
zurückgesetzt (-$LuefterAn vom aktuellen Zyklus). Der Ausgang $MaxZeitTimerLaeuft zeigt an, ob der Timer noch läuft.

["Monoflop", "$LuefterAn", "-$LuefterAn", "$MaxZeitTimerLaeuft", "$MaxLaufzeitParam", 2] /* Option 2: nicht erneut startbar */

Bedingung für Statemachine-Übergang (Timer abgelaufen?): Ermittelt, ob der MaxZeit-Timer abgelaufen ist. Der Status $TimerIstAbgelaufen wird true,
sobald der Timer abläuft und bleibt true, bis der Lüfter wieder ausgeschaltet wird (durch Wegfall der auslösenden Bedingung).

["Latch", "$MaxZeitTimerLaeuft", "$MaxZeitTimerLaeuft_LetzterZyklus", "$ConstTrue", 0] /* Timer-Status vom Zyklusbeginn speichern */

["And", ["$MaxZeitTimerLaeuft_LetzterZyklus", "-$MaxZeitTimerLaeuft"], "$TimerIstGeradeAbgelaufen"] /* Fallende Flanke == Timer abgelaufen */

["Or", ["$TimerIstGeradeAbgelaufen", "$WarBereitsAbgelaufen"], "$TimerIstAbgelaufen"] /* Kombiniert aktuellen Ablauf mit gemerktem Status */

["Latch", "$TimerIstAbgelaufen", "$WarBereitsAbgelaufen", "$ConstTrue", 0] /* Ablaufstatus für nächsten Zyklus merken */

["Latch", "$ConstFalse", "$WarBereitsAbgelaufen", "-$LuefterAn", 1] /* Reset "
𝑊
𝑎
𝑟
𝐵
𝑒
𝑟
𝑒
𝑖
𝑡
𝑠
𝐴
𝑏
𝑔
𝑒
𝑙
𝑎
𝑢
𝑓
𝑒
𝑛
"
𝑤
𝑒
𝑛
𝑛
𝐿
𝑢
¨
𝑓
𝑡
𝑒
𝑟
∗
𝑎
𝑢
𝑠
𝑔
𝑒
𝑠
𝑐
ℎ
𝑎
𝑙
𝑡
𝑒
𝑡
∗
𝑤
𝑢
𝑟
𝑑
𝑒
(
𝑠
𝑡
𝑒
𝑖
𝑔
𝑒
𝑛
𝑑
𝑒
𝐹
𝑙
𝑎
𝑛
𝑘
𝑒
𝑣
𝑜
𝑛
−
WarBereitsAbgelaufen"wennL
u
¨
fter∗ausgeschaltet∗wurde(steigendeFlankevon−
LuefterAn) */

[ANMERKUNG]: Diese Logik stellt sicher, dass $TimerIstAbgelaufen für die Statemachine zur Verfügung steht und korrekt zurückgesetzt wird.

3. STATEMACHINE LOGIK (Variable $State, Initialzustand: 0):

Die folgenden Regeln werden im transitions-Array des Statemachine-Moduls exakt in dieser Reihenfolge definiert. Das Modul liest $State zu
Beginn, prüft die Bedingungen und setzt den neuen $State für das Ende des Zyklus.

Regeln für SPERRE (State 4 - höchste Priorität):

["$SperreAktiv", 0, 4, 0] /* AUS -> GESPERRT */

["$SperreAktiv", 1, 4, 0] /* FEUCHTE_AKTIV -> GESPERRT */

["$SperreAktiv", 2, 4, 0] /* NACHLAUF -> GESPERRT */

["$SperreAktiv", 3, 4, 0] /* MANUELL -> GESPERRT */

["$SperreAktiv", 5, 4, 0] /* MAX_ZEIT_ERREICHT -> GESPERRT */

["$SperreAktiv", 99, 4, 0] /* FEHLER -> GESPERRT */

Regel zum Verlassen von SPERRE:

["-$SperreAktiv", 4, 0, 0] /* GESPERRT -> AUS (Nur wenn Sperre entfällt) */

Regeln für MAX_ZEIT_ERREICHT (State 5 - zweithöchste Priorität): Prüft, ob der MaxZeit-Timer abgelaufen ist, während der Lüfter laufen sollte
(State 1, 2 oder 3).

["$TimerIstAbgelaufen", 1, 5, 0] /* FEUCHTE_AKTIV -> MAX_ZEIT_ERREICHT */

["$TimerIstAbgelaufen", 2, 5, 0] /* NACHLAUF -> MAX_ZEIT_ERREICHT */

["$TimerIstAbgelaufen", 3, 5, 0] /* MANUELL -> MAX_ZEIT_ERREICHT */

Regel zum Verlassen von MAX_ZEIT_ERREICHT: Wechselt nach AUS, sobald der Timer nicht mehr als abgelaufen gilt (also wenn $LuefterAn auf false
geht und $WarBereitsAbgelaufen zurückgesetzt wird). Dies geschieht implizit, wenn keine andere Bedingung (Feuchte/Taster) mehr anliegt und die Sperre
nicht aktiv ist. Eine explizite Regel ist hier weniger sinnvoll, da der Zustand nur verlassen werden soll, wenn die Ursache wegfällt und keine höhere Priorität
anliegt. Der Übergang nach AUS (State 0) wird durch die unten folgenden Regeln für State 0 oder die Catch-Alls abgedeckt, sobald $TimerIstAbgelaufen
false wird.

[Überlegung]: Sollte ein $TasterBetaetigt in State 5 erlaubt sein, um direkt nach State 3 zu wechseln, falls $SperreAktiv false ist?
Aktuell würde der Taster ignoriert, bis $TimerIstAbgelaufen false wird.

Regeln für Taster / MANUELL (State 3):

["$TasterBetaetigt", 0, 3, "$ManuelleLaufzeit"] /* AUS -> MANUELL, Startet Timer */

["$TasterBetaetigt", 1, 3, "$ManuelleLaufzeit"] /* FEUCHTE_AKTIV -> MANUELL, Startet/Retriggert Timer */

["$TasterBetaetigt", 2, 3, "$ManuelleLaufzeit"] /* NACHLAUF -> MANUELL, Startet/Retriggert Timer, bricht Nachlauf ab */

Regel für Timeout von MANUELL:

[0, 3, 0, 0] /* MANUELL -> AUS (Statemachine Timeout-Bedingung 0), wenn keine Feuchteanforderung */

["$FeuchteUeberEinschalt", 3, 1, 0] /* MANUELL -> FEUCHTE_AKTIV (Wenn Manuell-Timer abläuft UND Feuchte hoch ist) */

[Anmerkung]: Diese Regel muss nach der Timeout-Regel stehen, wird aber nur relevant, wenn 0 (Timeout) und $FeuchteUeberEinschalt
im selben Zyklus wahr werden, was unwahrscheinlich ist. Besser: Der Timeout führt immer zu AUS, und FEUCHTE_AKTIV wird im nächsten Zyklus aus AUS
heraus getriggert. Daher nur [0, 3, 0, 0] beibehalten.

Regeln für FEUCHTE_AKTIV (State 1):

["$FeuchteUeberEinschalt", 0, 1, 0] /* AUS -> FEUCHTE_AKTIV */

["$FeuchteUeberEinschalt", 2, 1, 0] /* NACHLAUF -> FEUCHTE_AKTIV (bricht Nachlauf ab) */

Regel zum Starten von NACHLAUF (State 2):

["$FeuchteUnterAusschalt", 1, 2, "$Nachlaufzeit"] /* FEUCHTE_AKTIV -> NACHLAUF, Startet Timer */

Regeln für NACHLAUF (State 2):

Timeout: [0, 2, 0, 0] /* NACHLAUF -> AUS (Statemachine Timeout-Bedingung 0) */

Reset bei leichtem Feuchteanstieg:

[ENTSCHEIDUNG für SM.4.A]: ["$FeuchteUeberAusschalt", 2, 0, 0] /* NACHLAUF -> AUS (Stoppt Nachlauf, FEUCHTE_AKTIV wird ggf. im nächsten Zyklus aus AUS gestartet) */

Catch-All Regeln (Letzte Regel pro Zustand 0-5):

["$ConstTrue", 0, 99, 0] /* AUS -> FEHLER (Sollte nie eintreten, da AUS der Default ist) */

["$ConstTrue", 1, 99, 0] /* FEUCHTE_AKTIV -> FEHLER (Wenn keine der obigen Regeln für State 1 zutraf) */

["$ConstTrue", 2, 99, 0] /* NACHLAUF -> FEHLER (Wenn keine der obigen Regeln für State 2 zutraf) */

["$ConstTrue", 3, 99, 0] /* MANUELL -> FEHLER (Wenn keine der obigen Regeln für State 3 zutraf) */

["$ConstTrue", 5, 99, 0] /* MAX_ZEIT_ERREICHT -> FEHLER (Sollte nur eintreten, wenn Sperre nicht aktiv, aber auch kein Grund zum Ausschalten?) */

Regeln für Fehlerzustand (State 99):

[KLAERUNGSBEDARF SM.99 - Fehler-Reset]: Wie soll der Fehlerzustand verlassen werden?

Option SM.99.A: Automatisch nach kurzer Zeit nach AUS: [0, 99, 0, 10.0] /* FEHLER -> AUS nach 10s Timeout */

Option SM.99.B: Nur durch Behebung der Ursache (z.B. Wegfall der Sperre führt direkt zu State 4, von dort nach 0). Benötigt keine eigene Regel für 99. Der Zustand bleibt, bis eine höhere Priorität (Sperre) greift oder die Logik neu gestartet wird.

Option SM.99.C: Durch einen manuellen Reset-Eingang.

Bitte Option wählen. (Empfehlung: A oder B)

4. AUSGANGSLOGIK:

Der finale Lüfterzustand ($LuefterAn) wird aus dem aktuellen $State nach Abarbeitung der Statemachine abgeleitet:

["Limiter", "$State", 0, "$LuefterAn", [1, 3]] /* $LuefterAn ist true, wenn $State 1 (FEUCHTE_AKTIV), 2 (NACHLAUF) oder 3 (MANUELL) ist */

Dieser Wert $LuefterAn wird dem Ausgang out_LuefterEA_logic_result zugewiesen (Sendeoption 'c').

Der Fehlertext wird basierend auf dem Zustand gesetzt:

["Multiplexer", ["OK", "OK", "OK", "OK", "Gesperrt", "MaxZeit", "Unbekannter Fehler"], "$FehlerText", "$State"] /* Annahme: State 99 wird gemappt */

[ANMERKUNG]: Der Multiplexer muss an die höchste verwendete Zustandsnummer angepasst werden, ggf. mit Füllwerten. Bei wenigen Zuständen kann dies auch mit mehreren Latch-Befehlen erfolgen.

5. BUSRESET-FUNKTION:

Erkennung des BusReset-Signals (Steigende Flanke):

["Triggered", "in_Bus_reset", "$BusResetHatAusgeloest"]

["And", ["$BusResetHatAusgeloest", "in_Bus_reset"], "$BusResetErkannt"]

Explizites Senden von $LuefterAn mittels SendExplicit:

["SendExplicit", "$BusResetErkannt", "$LuefterAn", 0]

Dieser Befehl muss im "Module"-Array nach der Berechnung von $LuefterAn platziert werden.

[KLAERUNGSBEDARF 6.1 - Zwei Ausgänge]: Bestätigung benötigt: out_LuefterEA_logic_result (sendet bei Änderung 'c') dient der normalen Steuerung,
out_LuefterEA_BusReset_explicit (sendet explizit 'x', getriggert durch SendExplicit) dient dem Lesen/Aktualisieren auf dem Bus. Ist das korrekt?

VARIABLE UND PARAMETER:
Eingangsvariablen (Input Array):

in_Feuchtigkeit (float): Aktueller Feuchtigkeitswert vom Sensor in % (Trigger: c - Siehe Klärungsbedarf 7.1)
in_Taster_manuellesLueften (bool): Manueller Taster (Trigger: c)
in_Bus_reset (bool): Signal zum erneuten Senden (Trigger: c)
in_LuefterSperre (bool): Uebergeordnete Sperre (Trigger: c)
[KLAERUNGSBEDARF 7.1 - Trigger-Optionen]: Wie soll die Gesamtlogik getriggert werden? Für zuverlässige Timer-Funktion ist ein periodischer Trigger
unerlässlich.
* Option A (Empfohlen): Ein Clocksignal-Modul einfügen (z.B. alle 5 Sekunden). Alle anderen Eingänge auf 'c' oder 'u' lassen.
* Option B: Einen häufig ändernden Eingang (z.B. in_Feuchtigkeit) auf Trigger 'a' (always) setzen. (Nicht empfohlen).
* Bitte Option wählen.

Konfigurationsparameter (Input Array, Trigger: u):

in_param_Feuchte_EinschaltOffset (float): % ueber Mittelwert zum Einschalten
in_param_Feuchte_AusschaltOffset (float): % ueber Mittelwert zum Ausschalten (< EinschaltOffset empfohlen)
in_param_Feuchte_Nachlaufzeit (float): Nachlaufzeit [s] (>0)
in_param_TasterLueftung_Laufzeit (float): Manuelle Laufzeit [s] (>0)
in_param_Luefter_max_Laufzeit (float): Maximale Laufzeit [s] (>0)
in_param_Feuchte_GlaettungDauer (float): Glaettungsdauer fuer Lowpass [s] (>=0)

Ausgangsgroessen (Output Array):

out_LuefterEA_logic_result (bool): Regulärer Luefterausgang (Sendeoption: c)
out_LuefterEA_BusReset_explicit (bool): Luefterausgang fuer explizites Senden (Sendeoption: x)
out_dbg_State? (integer): Aktueller Zustand der Statemachine (Sendeoption: c)
out_dbg_GeglaetteteFeuchte? (float): Geglätteter Feuchtewert (Sendeoption: c)
out_dbg_MaxZeitTimerLaeuft? (bool): Status des MaxZeit-Timers (Sendeoption: c)
out_dbg_LuefterAn? (bool): Berechneter Lüfterstatus (Sendeoption: c)
out_dbg_FehlerText? (string): Textausgabe für Fehler oder Debug-Infos (Sendeoption: c)
[KLAERUNGSBEDARF 7.2 - Debug-Ausgänge]: Sind die vorgeschlagenen Debug-Ausgänge ($State, $GeglaetteteFeuchte, $MaxZeitTimerLaeuft, $LuefterAn,
$FehlerText) ausreichend?

Interne Variablen (Level Array):

// Zustand
$State (integer, init: 0)

// Vorverarbeitung & Bedingungen
$GlaettungsZeit (float, init: 10.0)
$GeglaetteteFeuchte (float, init: 0.0)
$EinschaltOffset (float, init: 5.0)
$AusschaltOffset (float, init: 2.0)
$EinschaltSchwelle (float, init: 0.0)
$AusschaltSchwelle (float, init: 0.0)
$FeuchteUeberEinschalt (bool, init: false)
$FeuchteUnterAusschalt (bool, init: false)
$FeuchteUeberAusschalt (bool, init: false)
$TasterHatAusgeloest (bool, init: false)
$TasterBetaetigt (bool, init: false)
$SperreAktiv (bool, init: false)

// Timer-Variablen & Zeiten
$ManuelleLaufzeit (float, init: 600.0)
$Nachlaufzeit (float, init: 300.0)
$MaxLaufzeitParam (float, init: 7200.0)
$MaxZeitTimerLaeuft (bool, init: false) // Ausgang des externen Monoflops
$MaxZeitTimerLaeuft_LetzterZyklus (bool, init: false) // Für Flankenerkennung Ablauf
$TimerIstGeradeAbgelaufen (bool, init: false) // Flanke für Ablauf MaxZeit
$TimerIstAbgelaufen (bool, init: false) // Zustand: MaxZeit ist abgelaufen
$WarBereitsAbgelaufen (bool, init: false) // Merker für MaxZeit Ablauf

// Ausgang & BusReset & Fehlertext
$LuefterAn (bool, init: false) // Finaler Zustand nach Ableitung aus Logik
$BusResetHatAusgeloest (bool, init: false)
$BusResetErkannt (bool, init: false)
$FehlerText (string, init: "Init") // Für Debug-/Fehlerausgabe

// Konstanten & Takt
$ConstTrue (bool, init: true)
$ConstFalse (bool, init: false)
$Clk (bool, init: false) // Falls Clocksignal verwendet wird

ANFORDERUNGEN AN DIE IMPLEMENTIERUNG:

Die Implementierung sollte übersichtlich strukturiert und angemessen kommentiert sein. Die vorbereitende Logik für Bedingungen, die Timer-Logik und
insbesondere die Statemachine-Übergangsregeln im transitions-Array sind klar und präzise zu dokumentieren (z.B. mittels /* Kommentar */).

Bitte entwickle einen vollstaendigen Custom-Logik-Code als JSON-Objekt mit allen erforderlichen Arrays (Level, Module, Input, Output) basierend auf
diesem Statemachine-Ansatz. Beachte dabei:

Korrekte Implementierung der Vorverarbeitung (Glättung, Parameterübernahme, Schwellen, Vergleiche, Taster, Sperre).

Korrekte Implementierung des externen Monoflops für die MaxZeit inklusive der Logik zur Erkennung des Timer-Ablaufs ($TimerIstAbgelaufen) und dessen Reset.

Korrekte Definition der Statemachine mit Zuständen (0-5, 99) und Übergangstabelle unter Einhaltung der Prioritätenreihenfolge und mit Catch-All-Regeln.

Korrekte Ableitung von $LuefterAn und $FehlerText aus dem aktuellen $State.

Korrekte Implementierung der Bus-Reset-Logik (SendExplicit).

Logische Reihenfolge der Module im "Module"-Array sicherstellen (Parameter laden -> Eingänge verarbeiten -> Glättung/Schwellen -> MaxZeit-Status
-> Statemachine -> $LuefterAn/$FehlerText -> MaxZeit Monoflop Update -> BusReset).

Verwende Kommentare, um die Logikschritte zu erklaeren und markiere Stellen im Code, die auf offenen Klärungsbedarf zurückgehen.

Qualitaetskriterien:

Korrekte Abbildung der Prioritaeten durch die Reihenfolge der Statemachine-Regeln (Sperre > MaxZeit > ... > CatchAll).

Korrekte Funktion der Timer (intern für Manuell/Nachlauf via Statemachine, extern für MaxZeit via Monoflop) unter Berücksichtigung des gewählten Triggers
(siehe 7.1) und der Reset-Bedingungen.

Robuste Handhabung der Zustandsübergänge, auch in Grenzfällen, inklusive Fehlererkennung (Catch-All).

Uebersichtliche Strukturierung und Kommentierung.

Der fertige Code muss direkt in den Logikeditor des Timberwolfservers eingefuegt werden koennen und alle beschriebenen Funktionen korrekt umsetzen,
sobald die markierten Unklarheiten geklärt sind.

OFFENE PUNKTE UND KLÄRUNGSBEDARF (Statemachine-Ansatz mit Catch-All):

[KLAERUNGSBEDARF SM.4 - Nachlauf Reset Verhalten]: Verhalten bei $FeuchteUeberAusschalt während des Nachlaufs (State 2). ENTSCHEIDUNG getroffen:
Option SM.4.A (Übergang nach AUS).

[KLAERUNGSBEDARF 6.1 - Zwei Ausgänge]: Zweck der zwei Ausgänge (_logic_result 'c' vs. _BusReset_explicit 'x') bestätigen (Normal vs.
Bus-Lesen/Reset).

[KLAERUNGSBEDARF 7.1 - Trigger-Optionen]: Gesamt-Triggerung der Logik festlegen. Option A (Clocksignal) oder Option B (Eingang auf 'a')?
(Empfehlung: A)

[KLAERUNGSBEDARF 7.2 - Debug-Ausgänge]: Benötigte Debug-Ausgänge bestätigen/ergänzen ($State, $GeglaetteteFeuchte, $MaxZeitTimerLaeuft, $LuefterAn,
$FehlerText vorgeschlagen).

[KLAERUNGSBEDARF SM.99 - Fehler-Reset]: Verhalten beim Verlassen des Fehlerzustands (State 99) festlegen. Option A (Auto-Reset nach AUS), Option B
(implizit durch Behebung/Neustart) oder Option C (manueller Reset)? (Empfehlung: A oder B).

--- ENDE DES AKTUELLEN MASTERPROMPTS ---
Mal ebenbei fragt sich Gemini gerade, ob Lowpass richtig funktionieren wird, wenn er nicht zyklisch aufgerufen wird und bringt mir bei, dass es selbst bei Betrachtung der vergangenen Zeit nicht dasselbe Ergebnis sein wird :roll: :
(Weisse Farbe Gemini, pastelligen Violett-/Lavenderton: ich (btw: dass diese Farbe wohl ein pastelligen Violett-/Lavenderton ist, hat mir Chatgpt gesagt, ich bin echt nicht auf einen Namen gekommen)

Bild

Bild

Bild

Bild

Bild
Timberwolf 3500L ID:1642; Support-VPN für ElabNET ist an.

Ersteller
Franky
Reactions:
Beiträge: 105
Registriert: Di Dez 24, 2024 1:24 pm
Hat sich bedankt: 38 Mal
Danksagung erhalten: 57 Mal

#3

Beitrag von Franky »

StefanW hat geschrieben: Sa Okt 05, 2024 2:14 pm KI ist so eine Sache. Künftig ist ein Produkt ohne KI kaum zu verkaufen. Unser derzeitiger Gedanke ist, dass wir eines Tages eine KI mit dem Wiki trainieren und damit ein KI-Online-Hilfesystem schaffen.
oh ja, für die Fähigkeit von Claude / Gemini, bei der Entwicklung von custom logiken zu unterstützen, hat genau dieser Ansatz funktioniert. Ich werfe ihnen einfach beiliegende PDF zum Fraß vor, da sie noch nicht selbst aufs Internet zugreifen können. Wobei für Gemini muss ich das nachher mal probieren ....
AndererStefan hat geschrieben: So Okt 06, 2024 11:39 am Hi,
das Thema KI darf man m.E. nicht komplett ausblenden. Ich finde es gut das Thema rechtzeitig „mitzudenken“, wenngleich da zum jetzigen Zeitpunkt noch keine signifikanten Ressourcen investiert werden sollten.

Neben der KI als Hilfetool glaube ich, dass diese auch bei der Programmierung von Logiken sehr hilfreich sein kann. Ich bin immer wieder erstaunt wie gut ChatGPT bei z.B. VBA, RegEx oder Excelformeln funktioniert.

Ich kann z.B. in Python programmieren, aber kenne VBA kaum und habe mich nie in RegEx reingefuchst, da ich das zu selten brauche. Damit beruflich kleine Tools zu machen war immer ein peinliches Rumgewurschtel. Mit ChatGPT läuft das hingegen wie bei Star Trek, wenn die Voyager Crew mit dem Bordcomputer neue Technologien am Schiff installiert.

VG
Stefan
Das kann ich nur zu 100% bestätigen. In den letzten Monaten ist eine Leistungsfähigkeit der LLM erreicht worden, die für "einfacherere" Anforderungen eine nahezu 100% Lösungsgarantie mit sich bringt (im Sinne von "ich bekomme mein Problem gelöst, auch wenn ich kein Entwickler bin oder mich nicht in die Domäne einarbeiten will/kann")

Gruß

Franky
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Timberwolf 3500L ID:1642; Support-VPN für ElabNET ist an.

AndererStefan
Reactions:
Beiträge: 207
Registriert: Sa Mär 02, 2024 11:04 am
Hat sich bedankt: 126 Mal
Danksagung erhalten: 131 Mal

#4

Beitrag von AndererStefan »

Ich war zunächst etwas entäuscht/besorgt dass die Logik nicht in Python oder etwas anderem verbreitetem geschrieben wird, sodass man im Internet leicht Hilfe findet. Aber wenn eine KI einfach nur das Wiki lesen muss und das dann so gut funktioniert, ist das sehr gut und wird für Marktdurchdringung noch sehr wichtig.

VG Grüße
Stefan

Edit: Ich wollte dabei auf keinen Fall die Mühe von Franky beim Prompt-Engineering missachten. „Einfach so“ hat Claude das ja auch nicht gelernt wenn ich mir die Länge des Prompts anschaue. Das ist weit über allem was ich je versucht habe.
Zuletzt geändert von AndererStefan am Sa Mär 29, 2025 2:39 pm, insgesamt 2-mal geändert.
TWS 3500XL ID:1486, VPN aktiv, Reboot nach Rücksprache
Benutzeravatar

Chris M.
Reactions:
Beiträge: 1220
Registriert: Sa Aug 11, 2018 10:52 pm
Wohnort: Oberbayern
Hat sich bedankt: 248 Mal
Danksagung erhalten: 884 Mal
Kontaktdaten:

#5

Beitrag von Chris M. »

Die Logiken sind ja keine Programmiersprache sondern Funktionsblöcke die verschaltet werden. Die musst Du eher wie ein Schaltschrank sehen bei dem Du nun die Leitungen zwischen den Komponenten ziehen kannst.
CometVisu Entwickler - Bitte keine PNs, Fragen gehören in das Forum, damit jeder was von den Antworten hat!

CometVisu Fragen, Bugs, ... bitte im Entwicklungs-Forum, hier nur spezifisches für CV<->Timberwolf.

TWS 2500 ID: 76 + TP-UART - VPN offen, Reboot nur nach Absprache

AndererStefan
Reactions:
Beiträge: 207
Registriert: Sa Mär 02, 2024 11:04 am
Hat sich bedankt: 126 Mal
Danksagung erhalten: 131 Mal

#6

Beitrag von AndererStefan »

Ja, hat denn so eine „Funktionsblock-Sprache“ einen Namen? Ist das im TWS mit irgendwas anderem vergleichbar?
Ihr mekrt ich komm aus einer ganz anderen Ecke…

VG Stefan
TWS 3500XL ID:1486, VPN aktiv, Reboot nach Rücksprache

Ersteller
Franky
Reactions:
Beiträge: 105
Registriert: Di Dez 24, 2024 1:24 pm
Hat sich bedankt: 38 Mal
Danksagung erhalten: 57 Mal

#7

Beitrag von Franky »

Ich bin inhaltlich bei Euch.

Auch ich war enttäuscht, keine "Programmiersprache" wie bei Mitbewerbern zu erhalten. Mittlerweile aber einverstanden, wenn es dadurch wartbarer, stabiler, einfacherer, weniger komplex (für ElabNET) wird. Das kommt dem Anwendern auch direkt zugute.

Mir wäre eine normale Programmiersprache immer noch lieber. Aber das Thema ist entschieden und die gegebene Lösung vielleicht (!) sogar die bessere von beiden. Wobei es schwer wird (vom Funktionsumfang), gegen Lösungen wie Homeassistant anzustinken. Wenn das Gesamtsystem aber auch nur 10% stabiler ist, ist der TWS die bessere Lösung. Ich habe, wenn die Automatisierungen laufen und ich bei anderen Themen bin oder einem anderen KNX-Objekt, keine Lust, unnötig in die Wartung laufender Systeme zu investieren.

Mir nutzt ein nahezu perfektes System wenig, wenn es alle x Tage hängen bleibt. Und da stehen die Chancen für uns mit dem Timberwolf gut, dass es sehr gut bleibt.

@AndererStefan: Den Prompt hat das LLM (im Dialog mit mir) weitestgehend selbst entwickelt und dient ihm als "Speicher". Man muss den Prompt nämlich alle Nase lang in einem neuen Chat erneut starten. Alles was du im Chatverlauf vorher eingegeben hast ist dann verloren. Und neu starten must du, wenn Tokens aufgebraucht sind oder der Anbieter einfach sagt, "der Chat wird zu lang, starte einen neuen Chat". (claude)

Natürlich habe ich Stunden investiert, aber nicht (nur) für das Ergebnis, sondern primär für den Spaß an der Freude. Ich werde schlauer und vielleicht kommt ein Custom-Logik Generator dabei raus. Ein Gruppenadressengenerator fürs Blocksystem mit korrektem Setzen der Datentypen hat mir die LLM auf jeden Fall schon "geschenkt" (Vorstellung: ETS-Gruppenadressen Generator (Blocksystem).

Gruß Franky
Zuletzt geändert von Franky am Sa Mär 29, 2025 4:09 pm, insgesamt 8-mal geändert.
Timberwolf 3500L ID:1642; Support-VPN für ElabNET ist an.

eib-eg
Reactions:
Beiträge: 508
Registriert: Fr Sep 14, 2018 5:03 pm
Hat sich bedankt: 1539 Mal
Danksagung erhalten: 325 Mal

#8

Beitrag von eib-eg »

Bei den gruppenadressgenerator stellt sich mir spontan die Frage ( habs aber nicht genau durchgelesen sondern nur überflogen)
warum
1. weis der Generator überhaupt welche Geräte verbaut wurden ?
2. weis der Generator welche Dpt und son Typ je Aktor bzw. Sensor benötigt werden
3. das währe in meinen Augen genial wenn das funktionieren würde , kanalbeschriftung der aktoren und Sensoren und der Generator erstellt selber die GAs


Ist hier jetzt OT aber nur laut gedacht ä geschrieben

Weiter im Text

Die ki im wolf integrieren 🤔 die Zukunft wird es zeigen das er dadurch bei einigen abwertend, aber bei den in meinen Augen Interessenten sehr aufgewertet wird, da er vermutlich hinsichtlich Logik leichter zu Händeln ist.

Nicht jetzt für den 0815 Anwender sondern wenn es um Energie und noch andere Sachen geht

Diejenigen die beim User Treffen dabei waren werden mich vermutlich verstehen worauf ich raus will.
TW 2600_99 seit 1.1.2018 / VPN zu

Ersteller
Franky
Reactions:
Beiträge: 105
Registriert: Di Dez 24, 2024 1:24 pm
Hat sich bedankt: 38 Mal
Danksagung erhalten: 57 Mal

#9

Beitrag von Franky »

@eib-eg: All das ist im Thread des Nachbarforums beschrieben. Zur Not einfach den Prompt (ist ja ein einfaches deutsches "Fachkonzept") lesen.

In kurz: Es gibt eine Beschreibungsdatei, in der die Geräte, Funktionen, Räume, ... aufgeführt sind. Der Datentyp ergibt sich aus einer Textanalyse: eine Funktion mit "Status" im Namen ist binär Ein/Aus. mit "Auf" oder "Ab" im Namen ist ein binär Ab/Auf und so weiter.

Das schöne auch hier: Man will was anderes: Einfach das Fachkonzept (den Prompt) "in Umgangsprache Deutsch" ändern und die Lösung (hier jetzt bspw. als pythonscript) liegt vor. Zur Not so lange mit Try and error arbeiten bis es passt. Eine lauffähige Lösung ist als "Beweis, dass es geht" ja veröffentlicht.

Gruß

Franky
Zuletzt geändert von Franky am Sa Mär 29, 2025 3:52 pm, insgesamt 3-mal geändert.
Timberwolf 3500L ID:1642; Support-VPN für ElabNET ist an.

Ersteller
Franky
Reactions:
Beiträge: 105
Registriert: Di Dez 24, 2024 1:24 pm
Hat sich bedankt: 38 Mal
Danksagung erhalten: 57 Mal

#10

Beitrag von Franky »

Noch ein Zusatz, weil ich es schon formuliert hatte. Ich verschiebe es jetzt in eine eigene msg:

Franky hat geschrieben: Sa Mär 29, 2025 2:56 pm Wobei es schwer wird (vom Funktionsumfang), gegen Lösungen wie Homeassistant anzustinken. Wenn das Gesamtsystem aber auch nur 10% stabiler ist, ist der TWS die bessere Lösung.
Ich finde, wie an anderer Stelle bereits diskutiert wurde, dass es vorteilhaft für den TWS sein könnte, wenn ElabNET nicht alles selbst entwickeln müsste. Ein Schnittstellensystem könnte es Fremdanbietern/Integratoren/Kunden, ermöglichen, Anbindungen an andere Systeme zu schaffen. Aus meiner Sicht am liebsten eingefordert als FOSS (free open source software) mit Zwangsveröffentlichung :oops:. ElabNET müsste (aus eigenem Gusto) alles übernehmen dürfen, wenn es festes Produktfeature werden soll.

Ich fänd es auch gewinnbringend, wenn alle Logiken, die man im TWS erstellt, im Default für alle anderen sichtbar sind und erst ein "opt out" die Lösung "geheim" hält.

Neue User könnten dann aus fertigen Bausteinen schöpfen, ElebNET cherry picking betreiben, jeder könnte mehr Code einsehen, die KI mehr lernen :lol: und ein Bewertungssystem / Anzahl Nutzungen könnte über die Popularität (wenn das denn eine wichtige Metrik ist) Auskunft geben.

Eine Nachricht informiert mich als Nutzer, wenn der Ursprungsautor eine Änderung an der Logik vorgenommen hat. Ich kann dann prüfen, ob ich sie (schon) übernehmen will. Ja denkbar ist so viel :D Dies ist KEIN FR :lol: :lol:

Aber im Moment bin ich (als spät geborener TWS-user) glücklich, wie es im Moment läuft. Kenne keine andere Firma oder Produkt (im kommerziellen Bereich), wo sich das so stark wie ein community Projekt anfühlt (Mitspracherecht, offene Kommunikation, kurzer Weg von/zu den Entwicklern...) aber mir steht es als green horn nicht zu, alles über den Klee zu loben, ich habe auch ältere Threads gelesen, aber jetzt ist jetzt und die Zukunft kann rosig sein :whistle:
Zuletzt geändert von Franky am Sa Mär 29, 2025 4:12 pm, insgesamt 5-mal geändert.
Timberwolf 3500L ID:1642; Support-VPN für ElabNET ist an.
Antworten

Zurück zu „Erfolgsgeschichten“