Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Off Topic
  4. Plauderecke
  5. Zeigt her eure KI Projekte

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    2.8k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.1k

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.4k

Zeigt her eure KI Projekte

Geplant Angeheftet Gesperrt Verschoben Plauderecke
11 Beiträge 6 Kommentatoren 309 Aufrufe 9 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • liv-in-skyL Offline
    liv-in-skyL Offline
    liv-in-sky
    schrieb am zuletzt editiert von liv-in-sky
    #1

    vielleicht besteht ja interesse zu sehen was andere mit Ki herhestellt haben. Es wäre gut, wenn auch die KI erwähnt würde. Es geht dabei nicht so um das zeigen vom code selbst - eher die ideen und umsetzung sind ziel deses threads.

    Projekt: übersicht Pholtaik-Verbrauch (Gemini)
    Zeitaufwand: waren ein paar stunden an einem wochenende, da ich eigentlich nur ausprobieren wollte und immer wieder änderungen für die KI hatte

    die gesammelten daten von iobroker meiner Pholtaik-Nulleinspeisung, welche als JSON vorliegen. die ki erzeugte eine html datei (welches styles und javascript beinhaltet), welche die daten ausliest und die seite erstellt. dieses ganze html file ist als parameter in ein javascript in ibroker eingefügt und wird alle paar stunden aktualisiert. letztlich wird es in den iobroker daten als datei gespeichert damit ich den webserver von iobroker nutzen kann - es wird also über iobroker-url und webserver adapter aufgerufen

    Image 11-02--10-30-05.png

    was genaus so funktioniert ist diese übersicht, welches eine monatliche übersicht macht

    Image 11-02--10-42-07.png

    nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

    1 Antwort Letzte Antwort
    6
    • L Online
      L Online
      lesiflo
      Most Active
      schrieb am zuletzt editiert von lesiflo
      #2

      Ok, dann haue ich auch mal was raus. Erstellt ChatGPT und Gemini

      HEMS:
      1da6d60a-4091-4896-91c9-5b033a418154-image.png

      b75180f8-68a7-4fad-9764-7deb01ef9a3c-image.png

      Tibber:
      b02a9bb7-327e-46e7-9f87-aa4802b7abd5-image.png

      Energieübersicht:
      image.png

      eAuto Ladeplanung:
      image.png

      Wärmepumpe:
      image.png

      liv-in-skyL 1 Antwort Letzte Antwort
      4
      • NegaleinN Offline
        NegaleinN Offline
        Negalein
        Global Moderator
        schrieb am zuletzt editiert von Negalein
        #3

        von mir auch was mit ChatGPT

        Ziel war:

        • aktive Spulen direkt aus Klipper auszulesen
        • Restfilament zuverlässig aus Spoolman zu berechnen
        • Warnungen abhängig von Druckstatus und Zeitfenstern auszugeben
        • die Daten übersichtlich in ioBroker VIS darzustellen

        Features

        • Erkennung aktiver Spulen (bis zu 4 gleichzeitig)
        • Restfilament je Spule
        • Ampel-Logik (OK / WARN / LEER)
        • Zeit- und druckabhängige Warnungen
        • VIS-taugliche States
        • Erweiterbar (Telegram, Druck pausieren, etc.)

        7b572b5b-f544-4606-b835-057003452842-image.png


        und aktuell lass ich mir ein paar Scripte auf daswetter 4.x anpassen


        aktuell bin ich dabei, Dexcom in ioB zu bekommen.
        Script ist fertig, nur Dexcom will nicht ohne weiteres die API für private Zwecke freigeben.

        ° Node.js & System Update ---> sudo apt update, iob stop, sudo apt full-upgrade
        ° Node.js Fixer ---> iob nodejs-update
        ° Fixer ---> iob fix

        1 Antwort Letzte Antwort
        2
        • L lesiflo

          Ok, dann haue ich auch mal was raus. Erstellt ChatGPT und Gemini

          HEMS:
          1da6d60a-4091-4896-91c9-5b033a418154-image.png

          b75180f8-68a7-4fad-9764-7deb01ef9a3c-image.png

          Tibber:
          b02a9bb7-327e-46e7-9f87-aa4802b7abd5-image.png

          Energieübersicht:
          image.png

          eAuto Ladeplanung:
          image.png

          Wärmepumpe:
          image.png

          liv-in-skyL Offline
          liv-in-skyL Offline
          liv-in-sky
          schrieb am zuletzt editiert von
          #4

          @lesiflo kannst du eine kleine beschreibung und die KI noch in deinen oberen post dazu schreiben ? wenn du lust hast

          nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

          L 1 Antwort Letzte Antwort
          0
          • liv-in-skyL Offline
            liv-in-skyL Offline
            liv-in-sky
            schrieb am zuletzt editiert von liv-in-sky
            #5

            anderes project mit claude ki ! einen esp32 mit 7 segment anzeige und einer led. übernimmt die pholtaik-nulleinspeisung, wenn iobroker mal einen aussetzer hat. das ganze ist mit berry (programmiersprache in tasmota) von der ki gemacht worden. holt sich den verbrauch vom tasmota, der am stromzähler hängt und steuert den wechselrichter - vorher wird überprüft, ob iobroker regelt, wenn nicht wird regelung übernommen bis iobroker wieder übernimmt

            Image 11-02--13-01-58.png

            nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

            1 Antwort Letzte Antwort
            1
            • liv-in-skyL liv-in-sky

              @lesiflo kannst du eine kleine beschreibung und die KI noch in deinen oberen post dazu schreiben ? wenn du lust hast

              L Online
              L Online
              lesiflo
              Most Active
              schrieb am zuletzt editiert von
              #6

              @liv-in-sky sagte in Zeigt her eure KI Projekte:

              @lesiflo kannst du eine kleine beschreibung und die KI noch in deinen oberen post dazu schreiben ? wenn du lust hast

              Erledigt !

              1 Antwort Letzte Antwort
              0
              • L Online
                L Online
                Linedancer
                schrieb am zuletzt editiert von Linedancer
                #7

                Hallo Gemeinde,
                Wie es der Zufall will, hab ich heute das erst mal von Chat GPT mir ein Script bauen lassen.
                Aufgabe war es aus der Leistungsaufnahme der Split Klina zu Erkennen, wann die Ankage anfängt zu Takten.
                Hier das Script:

                
                /********************************************************************
                * TAKT-ERKENNUNG SPLIT-KLIMAANLAGE
                *
                * Erkennt periodisches Takten anhand der Leistungsaufnahme.
                * Ergebnis:
                *   javascript.0.klima.takten   (Boolean)
                *
                * Funktionsprinzip:
                *   - Wandelt Leistung in Zustände (AN/AUS)
                *   - Misst Zyklusdauer
                *   - Prüft Periodizität
                *   - Setzt Boolean bei stabiler Wiederholung
                ********************************************************************/
                
                
                /********************* EINSTELLUNGEN *******************************/
                
                // Leistungs-Datenpunkt
                const POWER_DP = "javascript.0.klima.power";
                
                // Ergebnis-Datenpunkt
                const TAKTEN_DP = "javascript.0.klima.takten";
                
                // Schaltschwellen
                const ON_THRESHOLD  = 300;   // W -> Anlage gilt als "AN"
                const OFF_THRESHOLD = 80;    // W -> Anlage gilt als "AUS"
                
                // Zyklusdefinition
                const MIN_CYCLE_TIME = 120;   // Sekunden (2 Minuten)
                const MAX_CYCLE_TIME = 900;   // Sekunden (15 Minuten)
                
                // Wie viele gültige Zyklen in Folge bis Takten erkannt wird
                const MIN_VALID_CYCLES = 3;
                
                // Maximale Streuung der Zyklusdauer (Sekunden)
                const MAX_CYCLE_DEVIATION = 120;
                
                
                /********************* INTERNE VARIABLEN ***************************/
                
                let lastState = null;              // "ON" oder "OFF"
                let lastTransitionTime = null;     // Zeit der letzten Zustandsänderung
                let cycleDurations = [];           // Array der letzten Zykluszeiten
                let validCycleCount = 0;
                
                
                /********************* HILFSFUNKTION *******************************/
                
                // Mittelwert berechnen
                function average(arr) {
                   return arr.reduce((a,b) => a+b, 0) / arr.length;
                }
                
                
                /********************* TAKTEN DATENPUNKT ANLEGEN *******************/
                
                createState(TAKTEN_DP, false, {
                   name: "Klima Takten erkannt",
                   type: "boolean",
                   role: "indicator"
                });
                
                
                /********************* HAUPTLOGIK **********************************/
                
                on({id: POWER_DP, change: "ne"}, function (obj) {
                
                   const power = obj.state.val;
                   const now = Date.now();
                
                   // Zustand aus Leistung ableiten
                   let currentState = lastState;
                
                   if (power >= ON_THRESHOLD) {
                       currentState = "ON";
                   } 
                   else if (power <= OFF_THRESHOLD) {
                       currentState = "OFF";
                   }
                   // Werte dazwischen -> Zustand bleibt unverändert (Hysterese)
                
                
                   // Nur reagieren wenn sich Zustand geändert hat
                   if (currentState !== lastState && lastState !== null) {
                
                       let cycleTime = (now - lastTransitionTime) / 1000; // Sekunden
                
                       // Prüfen ob Zyklus im gültigen Bereich liegt
                       if (cycleTime >= MIN_CYCLE_TIME && cycleTime <= MAX_CYCLE_TIME) {
                
                           cycleDurations.push(cycleTime);
                
                           // Nur die letzten 5 Zyklen speichern
                           if (cycleDurations.length > 5) {
                               cycleDurations.shift();
                           }
                
                           // Periodizität prüfen
                           if (cycleDurations.length >= MIN_VALID_CYCLES) {
                
                               let avg = average(cycleDurations);
                
                               let stable = cycleDurations.every(c =>
                                   Math.abs(c - avg) <= MAX_CYCLE_DEVIATION
                               );
                
                               if (stable) {
                                   validCycleCount++;
                               } else {
                                   validCycleCount = 0;
                                   cycleDurations = [];
                               }
                
                           }
                
                       } else {
                           // Zykluszeit ungültig -> Reset
                           validCycleCount = 0;
                           cycleDurations = [];
                       }
                
                       lastTransitionTime = now;
                   }
                
                   // Initialisierung
                   if (lastState === null) {
                       lastTransitionTime = now;
                   }
                
                   lastState = currentState;
                
                
                   /********************* TAKTEN STATUS SETZEN *********************/
                
                   if (validCycleCount >= 1) {
                       setState(TAKTEN_DP, true, true);
                   } else {
                       setState(TAKTEN_DP, false, true);
                   }
                
                });
                
                

                Das läuft erst seit heute Vormittag, also gibt’s noch keine Langzeit Erfahrung, aber zumindest einmal hat er das Takten schon erkannt.

                Das einzige, was ich in dem Script angepasst habe, war der Ort der Datenpunkte. Chat GPT hat hier JavaScript.0 vorgeschlagen.

                –

                Ciao, Gerhard

                L 1 Antwort Letzte Antwort
                1
                • L Linedancer

                  Hallo Gemeinde,
                  Wie es der Zufall will, hab ich heute das erst mal von Chat GPT mir ein Script bauen lassen.
                  Aufgabe war es aus der Leistungsaufnahme der Split Klina zu Erkennen, wann die Ankage anfängt zu Takten.
                  Hier das Script:

                  
                  /********************************************************************
                  * TAKT-ERKENNUNG SPLIT-KLIMAANLAGE
                  *
                  * Erkennt periodisches Takten anhand der Leistungsaufnahme.
                  * Ergebnis:
                  *   javascript.0.klima.takten   (Boolean)
                  *
                  * Funktionsprinzip:
                  *   - Wandelt Leistung in Zustände (AN/AUS)
                  *   - Misst Zyklusdauer
                  *   - Prüft Periodizität
                  *   - Setzt Boolean bei stabiler Wiederholung
                  ********************************************************************/
                  
                  
                  /********************* EINSTELLUNGEN *******************************/
                  
                  // Leistungs-Datenpunkt
                  const POWER_DP = "javascript.0.klima.power";
                  
                  // Ergebnis-Datenpunkt
                  const TAKTEN_DP = "javascript.0.klima.takten";
                  
                  // Schaltschwellen
                  const ON_THRESHOLD  = 300;   // W -> Anlage gilt als "AN"
                  const OFF_THRESHOLD = 80;    // W -> Anlage gilt als "AUS"
                  
                  // Zyklusdefinition
                  const MIN_CYCLE_TIME = 120;   // Sekunden (2 Minuten)
                  const MAX_CYCLE_TIME = 900;   // Sekunden (15 Minuten)
                  
                  // Wie viele gültige Zyklen in Folge bis Takten erkannt wird
                  const MIN_VALID_CYCLES = 3;
                  
                  // Maximale Streuung der Zyklusdauer (Sekunden)
                  const MAX_CYCLE_DEVIATION = 120;
                  
                  
                  /********************* INTERNE VARIABLEN ***************************/
                  
                  let lastState = null;              // "ON" oder "OFF"
                  let lastTransitionTime = null;     // Zeit der letzten Zustandsänderung
                  let cycleDurations = [];           // Array der letzten Zykluszeiten
                  let validCycleCount = 0;
                  
                  
                  /********************* HILFSFUNKTION *******************************/
                  
                  // Mittelwert berechnen
                  function average(arr) {
                     return arr.reduce((a,b) => a+b, 0) / arr.length;
                  }
                  
                  
                  /********************* TAKTEN DATENPUNKT ANLEGEN *******************/
                  
                  createState(TAKTEN_DP, false, {
                     name: "Klima Takten erkannt",
                     type: "boolean",
                     role: "indicator"
                  });
                  
                  
                  /********************* HAUPTLOGIK **********************************/
                  
                  on({id: POWER_DP, change: "ne"}, function (obj) {
                  
                     const power = obj.state.val;
                     const now = Date.now();
                  
                     // Zustand aus Leistung ableiten
                     let currentState = lastState;
                  
                     if (power >= ON_THRESHOLD) {
                         currentState = "ON";
                     } 
                     else if (power <= OFF_THRESHOLD) {
                         currentState = "OFF";
                     }
                     // Werte dazwischen -> Zustand bleibt unverändert (Hysterese)
                  
                  
                     // Nur reagieren wenn sich Zustand geändert hat
                     if (currentState !== lastState && lastState !== null) {
                  
                         let cycleTime = (now - lastTransitionTime) / 1000; // Sekunden
                  
                         // Prüfen ob Zyklus im gültigen Bereich liegt
                         if (cycleTime >= MIN_CYCLE_TIME && cycleTime <= MAX_CYCLE_TIME) {
                  
                             cycleDurations.push(cycleTime);
                  
                             // Nur die letzten 5 Zyklen speichern
                             if (cycleDurations.length > 5) {
                                 cycleDurations.shift();
                             }
                  
                             // Periodizität prüfen
                             if (cycleDurations.length >= MIN_VALID_CYCLES) {
                  
                                 let avg = average(cycleDurations);
                  
                                 let stable = cycleDurations.every(c =>
                                     Math.abs(c - avg) <= MAX_CYCLE_DEVIATION
                                 );
                  
                                 if (stable) {
                                     validCycleCount++;
                                 } else {
                                     validCycleCount = 0;
                                     cycleDurations = [];
                                 }
                  
                             }
                  
                         } else {
                             // Zykluszeit ungültig -> Reset
                             validCycleCount = 0;
                             cycleDurations = [];
                         }
                  
                         lastTransitionTime = now;
                     }
                  
                     // Initialisierung
                     if (lastState === null) {
                         lastTransitionTime = now;
                     }
                  
                     lastState = currentState;
                  
                  
                     /********************* TAKTEN STATUS SETZEN *********************/
                  
                     if (validCycleCount >= 1) {
                         setState(TAKTEN_DP, true, true);
                     } else {
                         setState(TAKTEN_DP, false, true);
                     }
                  
                  });
                  
                  

                  Das läuft erst seit heute Vormittag, also gibt’s noch keine Langzeit Erfahrung, aber zumindest einmal hat er das Takten schon erkannt.

                  Das einzige, was ich in dem Script angepasst habe, war der Ort der Datenpunkte. Chat GPT hat hier JavaScript.0 vorgeschlagen.

                  L Online
                  L Online
                  lesiflo
                  Most Active
                  schrieb am zuletzt editiert von lesiflo
                  #8

                  @Linedancer sagte in Zeigt her eure KI Projekte:

                  Chat GPT hat hier JavaScript.0 vorgeschlagen

                  Kein guter Vorschlag. Eigene Datenpunkte immer unter 0_userdata anlegen.

                  420dc9e1-b008-40b3-84c3-668408785e46-image.png

                  Nie direkt unter dem Adapter. Wenn der mal gelöscht werden sollte sind die Datenpunkte auch weg.

                  1 Antwort Letzte Antwort
                  0
                  • L Online
                    L Online
                    Linedancer
                    schrieb am zuletzt editiert von
                    #9

                    Das hatte ich auch erkannt und korrigiert.
                    Wenn das Script sonst keine Schwachstellen hat, bin ich zufrieden.
                    Ich lass das jetzt noch erweitern, damit Abtau Vorgänge erkannt werden.

                    –

                    Ciao, Gerhard

                    OliverIOO 1 Antwort Letzte Antwort
                    0
                    • L Linedancer

                      Das hatte ich auch erkannt und korrigiert.
                      Wenn das Script sonst keine Schwachstellen hat, bin ich zufrieden.
                      Ich lass das jetzt noch erweitern, damit Abtau Vorgänge erkannt werden.

                      OliverIOO Offline
                      OliverIOO Offline
                      OliverIO
                      schrieb am zuletzt editiert von OliverIO
                      #10

                      @Linedancer

                      Aktuell 2 Projekte

                      Eine Medikamenten einnahmeplanung mit vis1 Widget
                      https://github.com/oweitman/ioBroker.med-plan

                      Und hier der Test thread

                      https://forum.iobroker.net/topic/83556/test-support-adapter-iobroker.med-plan?_=1770821881110

                      Aktuell nur über GitHub verfügbar

                      Und ein nicht Iobroker Projekt,
                      Evtl mach ich einen Adapter noch dazu

                      ein Docker Container zur Überwachung von fail2ban über eine weboberfläche

                      https://github.com/oweitman/fail2bancontrol

                      Beides so ca 80% mit ki erstellt.
                      Für med plan versuche ich mal noch die Chat Protokolle bereitzustellen wenn ich sie ordentlich konvertiert bekomme

                      Meine Adapter und Widgets
                      TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                      Links im Profil

                      1 Antwort Letzte Antwort
                      1
                      • Jey CeeJ Online
                        Jey CeeJ Online
                        Jey Cee
                        Developer
                        schrieb am zuletzt editiert von Jey Cee
                        #11

                        Features Bauen die erstmal mehr Arbeit verursachen.
                        Login um Passkey erweitern, damit ich nicht jedes mal Benutzer und Passwort am Handy eingeben muss. Stattdessen reicht der Fingerabdruck.
                        Allerdings braucht man dafür ein Gültiges Zertifikat, mit self signed funktioniert es nicht.

                        Edit: Ganz vergessen das ganze ist mit Claude Opus 4.6 entstanden.

                        17130.jpg 17129.jpg

                        Persönlicher Support
                        Spenden -> paypal.me/J3YC33

                        1 Antwort Letzte Antwort
                        2
                        Antworten
                        • In einem neuen Thema antworten
                        Anmelden zum Antworten
                        • Älteste zuerst
                        • Neuste zuerst
                        • Meiste Stimmen


                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        613

                        Online

                        32.6k

                        Benutzer

                        82.3k

                        Themen

                        1.3m

                        Beiträge
                        Community
                        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                        ioBroker Community 2014-2025
                        logo
                        • Anmelden

                        • Du hast noch kein Konto? Registrieren

                        • Anmelden oder registrieren, um zu suchen
                        • Erster Beitrag
                          Letzter Beitrag
                        0
                        • Home
                        • Aktuell
                        • Tags
                        • Ungelesen 0
                        • Kategorien
                        • Unreplied
                        • Beliebt
                        • GitHub
                        • Docu
                        • Hilfe