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.7k

  • 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 302 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.
  • 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

                      687

                      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