Ankündigung

Einklappen
Keine Ankündigung bisher.

EibPC meets AI

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    EibPC meets AI

    Zum Hintergrund: Seit 12 Jahren werkelt bei mir ein EibPC. Immer tadelfrei. Keine Ausfälle und das mit über 100.000 Betriebsstunden.

    Der Code ist immer so gewachsen, ich habe immer wieder mal eine Änderung vorgenommen und manchmal musste es schnell gehen. Aktuell stand mal wieder eine Änderung an und ich war mir gar nicht mehr sicher, welcher der drei Versionen die produktive war.

    Ich startete ein Experiment. Ich gab Claude AI, Pro-Version für 25 Euro/Monat, die Aufgabe, die drei Versionen zu vergleichen und er fand schnell kleine Differenzen in der Visu, so dass ich schnell die Produktionsversion identifizere.

    Einmal dabei, bat ich Claude um eine Bewertung des Codes. Er nannte ihn "robust". Ich würde chaotisch nennen. Also bekam er die Aufgabe, den Code mal aufzuräumen. Alle Adressen bekamen richtige Namen, es wurden Kommentare eingefügt, der Raumplan dokumentiert, eine Todo-Liste erstellt. Gemeinsam analysiert, welche Teile inzwischen überflüssig sind etc. Er machte noch Vorschläge welche Teile in eigene Bibliotheken ausgelagert werden sollten. Nach 60 Minuten hatte ich einen ordentlichen Code.

    Die beste aller Chefinnen hatte natürlich eine gute abgehangene Liste von Änderungswünschen. Wenn ich sage, ich mache das, mache ich das, da muss man mich nicht alle zwei Jahre dran erinnern. Diese waren in weitere 60 Minuten umgesetzt. Incl. grundlegende Umstellung der ViSu.

    Neue Installation codereviewed und dann zum Beta-Test freigegeben. Weitere 30 Minuten. Beta-Test bestanden. Wir betreiben keine Atomkraftwerke, deshalb habe ich die Version so laufen lassen.

    Ich würde soweit gehen: Eine normale Hausinstallation (ETS und EibPC) bekommt die AI von der Softwareseite heute hin. Bei der Hardwareseite gibt es einen guten Plan incl. Dokumentation gratis dazu. Meine Sorge, dass das Haus wegen der Hausautomatik unverkäuflich sei, hat sich zerschlagen - die Anpassung schafft jeder mit etwas Interesse.

    #2
    Da wäre natürlich auch eine genauere Beschreibung interessant:
    • Wie schaute das Prompt aus, bzw. einzelne Beispiele?
    • Jetzt ist ja nun eibpc Code nicht so millionenfach verbreitet (), wie kann man die KI anlernen oder macht die das alleine?
    • Vorher/nachher Beispiele?
    offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
    Enertex Produkte kaufen

    Kommentar


      #3
      Hi,
      Klasse Beispiel. Danke dafür.
      Um ein wenig Michaels fragen zu beantworten.
      Ich nutze die KI für so etwas wöchentlich. Mal ChatGPT, mal Perplexitiy. Kommt aufs Thema und Kontext an.

      Kurzbeispiel:
      Wir hatten neulich ein Pearl Skript welches seit einigen Jahren nicht mehr gepflegt wurde und nach dem letzten Update nicht mehr funktioniert hat.
      In diesem Fall habe ich mit dem Prompt:
      Dieses Skript ist gut 15 Jahre alt und läuft mit der aktuellen Pearl Version nicht mehr. Die Fehlermeldung ist: "FEHLERMELDUNG".
      Das Skript ist folgendes:
      " HIER WAR DAS SKRIPT"

      Innerhalb von 12 Sekunden hatte ich die Fehler identifiziert.
      Dann:
      Bitte korrigiere das Skript.
      Weitere 12 Sekunden später wurde das Skript korrekt umgebaut.

      Wenn das LLM Zugriff auf eure Doku hat und diese vielleicht sogar zum Training zur Verfügung stand, dann ist das kein Problem...
      Gruß
      Volker

      Wer will schon Homematic?

      Kommentar


        #4
        Ich schreibe einfach mal die ersten Prompts auf. Man merkt schnell, dass ich ein Amateur auch bzgl. KI bin:

        1. Ich habe ins Projektwissen drei Programmierungen des Enertex EibPC hochgeladen. Schau sie dir einmal an. Frage: Wie kann ich erkennen, welche Version gerade produktiv ist. Wie unterscheiden sich diese?
        2. Unterscheiden sich die Versionen in der Visualisierung?
        3. Also sollte ich bei der Visualisierung mal auf die Heizungsseite gehen, oder?

        ....

        Claude: Falls Sie Fragen zur Konfiguration haben oder Anpassungen vornehmen möchten, kann ich Ihnen dabei helfen. Die xxxxxx-Konfiguration ist sehr umfangreich und bietet viele Automatisierungsmöglichkeiten!

        Ich: Ja, die Programmierung sieht grausam aus. Amateurhaft, oder?

        Claude: Ha! Sie haben einen sehr guten Blick dafür! 😅
        Ja, die Programmierung ist wirklich... nun ja... "rustikal" würde ich diplomatisch sagen. Aber ehrlich gesagt haben Sie recht - das ist ziemlich amateurhaft:

        ...

        Claude: Aber hey... es funktioniert! 🤷‍♂️

        Das ist typisch für gewachsene Hausautomation:
        • Über Jahre entstanden
        • "Mal eben schnell was hinzugefügt"
        • "Das räumen wir später auf" (niemals passiert)
        • Hauptsache es läuft

        Würden Sie es neuschreiben lassen? Das wäre durchaus sinnvoll - strukturierter, wartbarer, erweiterbarer. Aber andererseits: "Never touch a running system" 😉

        Ich: Mach mal einen Vorschlag

        Claude erstellt Artefakte ...

        20 Änderungswünsche (möglicherweise gibt es für manche auch schon Makros von eibpc, hatte ich aber keine Lust zu studieren) in normaler Sprache formuliert, so wie es auch die "lokale Regierung" einem sagt.

        ---------------

        Beispiel:

        "Ich hätte auch gerne eine Möglichkeit, die Solltemperatur Tag und Nacht für die einzelnen Räume einzustellen (sofern dort ein Thermostat vorhanden ist)" (Bisher waren die fest codiert - hat der Familie auch meistens gereicht)

        macht ein Vorschlag in Javascript, den er sofort in seiner Sandbox anzeigt

        "Kann man das kompakter darstellen? Vielleicht Raum darunter S Tag xx,x / S Nacht xx,x / Ist xx,x. Wenn man auf den Button (lange) drückt öffnet sich eine Seite auf der man die Details einstellen kann."

        Noch zwei Designwünsche geäußert.

        Vorschlag in Javascript ist akzeptabel

        "Dann programmiere das mal bitte für den EibPC in der EibPC-Sprache."


        Ganz zum Abschluss

        "Kontrolliere den Code auf richtige Syntax."



        Wichtig ist nur, dass man die Zwischenstände regelmäßig im Projektwissen abspeichert und neue Unterhaltungen beginnt. (Nur 2-3 Wünsche pro Unterhaltung äußern).

        ​--------------------------------------

        Keine Ahnung woher er die Syntax des EibPC kennt, vmtl. gibt es die auf der Homepage von Enertex zum Downloaden. Hat er auch schnell gefunden.








        Kommentar


          #5
          Inspiriert durch diesen Thread hab ich auch mal versucht, mit AI am EibPC zu arbeiten. Erste Eindrücke: durchwachsen.

          Meine Übungsaufgabe war die Überarbeitung eines meiner Makros, in dem seit mehr als 10 Jahren ein TODO drin steht:
          Code:
          :begin StringGanzzahlVonFloat(InFloat)
          :info $Liefert eine ganzzahlige Textdarstellung für den gegebenen Wert. Aus 23.4f16 wird z. B. "23"$ \\
              :$Ein numerischer Wert (f16 oder f32)$
          :shortinfo $Ganzzahl-Darstellung für Float-Zahl$
          // TODO: StringFormat anschauen!
          :return convert(convert(InFloat,0s32),$$)
          :end​
          Bei Claude habe ich nur die kostenlose Version. Die ersten Antworten auf meine Bitte der Verbesserung enthielten etliche (grundsätzlich sinnvolle, aber von mir nicht gewünschte) Checks des Eingangswertes. Er nutzte irgendeine ähnliche Sprache. Nach jedem Hinweis auf das EibPC-Handbuch kommt immer "Claude hat die maximale Länge für diese Konversation erreicht." Also das Handbuch ist wohl schlicht zu umfangreich für einen kostenlosen Account. Schade, eigentlich nehme ich Claude ganz gerne beim Programmieren.

          Bei ChatGPT - ebenso in der kostenlosen Version - ist die Grenze wohl großzügiger. Es kommt sofort ein einigermaßen sinnvoller Vorschlag:
          Code:
          :begin StringGanzzahlVonFloat(InFloat)
          :info $Wandelt einen Float-Wert in eine ganzzahlige String-Darstellung um. Aus 23.7 wird "24"$
          :shortinfo $Ganzzahl-String aus Float-Wert$
          :return $Ganzzahlige Textdarstellung von InFloat (als String)$
          return StringFormat("%d", convert(InFloat, 0s32));
          :end​
          Nach meiner vorsichtigen Rückfrage, ob er sich bei der Syntax von "stringformat" sicher sei, gab er seinen Irrtum zu. Und baute diese - fast - lauffähige Version:
          Code:
          :begin StringGanzzahlVonFloat(InFloat)
          :info $Gibt den ganzzahligen Teil von InFloat als Text zurück$
          :shortinfo $Ganzzahl-String ohne Nachkommastellen$
          // schreibe Float auf Integer (abschneiden) und formatiere ohne Nachkommastellen
          return stringformat(convert(InFloat, 0s32), 0, 1, 0, 0);
          :end​
          ​Vorläufiges Fazit:
          Man muss selber sehr aufmerksam bleiben. Aber grundsätzlich ist das schon nutzbar.

          Kommentar


            #6
            Sowas ins EibStudio integriert wäre super. Wenn ich in der Logik einfach eine Aufgabe beschreiben könnte und es kommt die Logik heraus, wäre das eine unglaublich gute Hilfe.

            Kommentar

            Lädt...
            X