Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Chat GPT im Javascript Adapter verwenden

    NEWS

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    Chat GPT im Javascript Adapter verwenden

    This topic has been deleted. Only users with topic management privileges can see it.
    • ch90045
      ch90045 @OliverIO last edited by

      @oliverio Was meinst du genau mit "du musst deinen input verkleinern" - meine Anfrage für ein einfaches Script war "Schalte am Wochende scene.0.WohnzimmerLicht um 7:00 an" - noch weniger?

      OliverIO 1 Reply Last reply Reply Quote 0
      • OliverIO
        OliverIO @ch90045 last edited by

        @ch90045

        gemäß fehlermeldung wurden 62000 tokens versendet.
        https://deinkikompass.de/blog/openai-gpt-token-guide
        das verhältnis buchstaben zu tokens hängt von der sprache ab (von 1:1 bis 1:4 tokens/buchstaben)

        dann musst du prüfen warum da mehr tokens versendet wurden.
        wahrscheinlich wurde als context das komplette script mit versendet

        haus-automatisierung ch90045 2 Replies Last reply Reply Quote 0
        • haus-automatisierung
          haus-automatisierung Developer Most Active @OliverIO last edited by haus-automatisierung

          @oliverio sagte in Chat GPT im Javascript Adapter verwenden:

          wahrscheinlich wurde als context das komplette script mit versendet

          Als Context wird immer die Dokumentation angehangen (als Markdown). Die ist halt alleine schon sehr lang. Und wenn man viele Geräte definiert hat, dann werden die auch noch mitgeliefert, damit ChatCPT auch die richtigen Objekt-IDs, Räume, usw. kennt.

          Das wird ggf. natürlich sehr groß.

          N 1 Reply Last reply Reply Quote 0
          • ch90045
            ch90045 @OliverIO last edited by

            @oliverio Nun ja, skript war 0 gross, ChatGPT sollte, rein zum testen, ein Skript zur Änderung EINES Zustandes erstellen - denke die Frage war kleiner als 100 Token, der Rest waren Interna.

            T 1 Reply Last reply Reply Quote 0
            • T
              TomTom24 @ch90045 last edited by

              ist im Moment unbrauchbar...leider

              Error: 400 This model's maximum context length is 16385 tokens. However, your messages resulted in 49186 tokens

              1 Reply Last reply Reply Quote 0
              • N
                nerg @haus-automatisierung last edited by

                @haus-automatisierung said in Chat GPT im Javascript Adapter verwenden:

                @oliverio sagte in Chat GPT im Javascript Adapter verwenden:

                wahrscheinlich wurde als context das komplette script mit versendet

                Als Context wird immer die Dokumentation angehangen (als Markdown). Die ist halt alleine schon sehr lang. Und wenn man viele Geräte definiert hat, dann werden die auch noch mitgeliefert, damit ChatCPT auch die richtigen Objekt-IDs, Räume, usw. kennt.

                Das wird ggf. natürlich sehr groß.

                Lässt sich das mit der Dokumentation eigentlich ausschalten? Meiner Erfahrung nach macht GPT auch so ganz gute Skripte

                haus-automatisierung 1 Reply Last reply Reply Quote 0
                • haus-automatisierung
                  haus-automatisierung Developer Most Active @nerg last edited by

                  @nerg Und dann gibst Du immer die Verison des Adapters mit, damit ChatGPT alle verfügbaren Funktionen der Version kennt?!

                  N 1 Reply Last reply Reply Quote 0
                  • N
                    nerg @haus-automatisierung last edited by nerg

                    @haus-automatisierung mit ein bisschen Fingerspitzengefühl hab ich ihn bisher ganz gut angeleitet auch ganz ohne Anbindung an die Doku.
                    Da ich nur tier1 bei der API habe, sprengt die Doku direkt das token Limit. Im Gegensatz zu Lindner würde ich die Schnittstelle lieber schlecht als gar nicht nutzen 🥴😉

                    Edit: falls jemand noch einen chatGPT Plus Account hat, dann könnte der-/diejenige auch einen individuellen iobroker GPT anlegen, der mit der Doku gefüttert wird und ein paar individuelle Anweisungen zur Codeerstellung bekommt. Zur Not würde ich auch noch Mal Plus abschließen, falls da Interesse besteht. Das würde auch die Schwelle reduzieren für Einsteiger

                    haus-automatisierung 1 Reply Last reply Reply Quote 0
                    • haus-automatisierung
                      haus-automatisierung Developer Most Active @nerg last edited by

                      @nerg sagte in Chat GPT im Javascript Adapter verwenden:

                      mit ein bisschen Fingerspitzengefühl hab ich ihn bisher ganz gut angeleitet auch ganz ohne Anbindung an die Doku.

                      Da kommt sehr häufig unnötig komplexer Code raus, welcher dann erstmal fetch importiert, statt z.B die internen Methoden zu nutzen. Das Ergebnis ist in den meisten Fällen nicht gut. Das bestätigen auch zig Screenshots in der Facebook-Gruppe, wo Leute ihre "top Ergebnisse" gezeigt haben.

                      Ich habe schonmal überlegt ein Custom GPT (heißt das so?) zu erstellen, welches dann den ioBroker-Adapter kennt und dann nur noch die Version übergeben werden muss. Damit man auch vernünftigen Code bekommt, welcher die internen Methoden nutzt.

                      N 1 Reply Last reply Reply Quote 0
                      • N
                        nerg @haus-automatisierung last edited by

                        @haus-automatisierung ja das stimmt. Blind übernehmen kann man das nicht. Er ist aber auch mit 4o wieder deutlich besser geworden und auch kooperativer.
                        Ich glaube custom gpt ist richtig. Ich schau mir das Mal an. Hatte das seinerzeit Mal versucht, da waren die Tokens aber sehr niedrig, die man mitgeben konnte.

                        1 Reply Last reply Reply Quote 0
                        • N
                          nerg last edited by nerg

                          @haus-automatisierung
                          ChatGPT Link
                          hier mal ein erster Wurf. Gefüttert mit den Docs aus Github, die auch bei der API genutzt werden und ein paar angepassten Anweisungen.

                          // edit: Mit 3 Anweisungen zu diesem Ergebnis:

                          // Anwesenheitserkennung für verschiedene User anhand von boolean-Datenpunkten
                          
                          // Liste der zu überwachenden Datenpunkte für jeden User
                          const userPresenceDataPoints = {
                              user1: ['geofence.user1', 'wlan.user1'],
                              user2: ['geofence.user2', 'wlan.user2'],
                              // Weitere User und deren Datenpunkte hier hinzufügen
                          };
                          
                          // Funktion zur Überprüfung der Anwesenheit eines Users
                          async function isUserPresent(user, dataPoints) {
                              for (let dp of dataPoints) {
                                  let state = await getStateAsync(dp);
                                  if (state && state.val === true) {
                                      return true;
                                  }
                              }
                              return false;
                          }
                          
                          // Funktion zur Überprüfung und Erstellung eines Datenpunkts
                          async function checkAndCreateDataPoint(user) {
                              const dpPath = `userdata.0.${user}.presence`;
                              const dpObj = await getObjectAsync(dpPath);
                              if (!dpObj) {
                                  await setObjectAsync(dpPath, {
                                      type: 'state',
                                      common: {
                                          name: `${user} Presence`,
                                          type: 'boolean',
                                          role: 'indicator',
                                          read: true,
                                          write: true,
                                      },
                                      native: {},
                                  });
                              }
                              return dpPath;
                          }
                          
                          // Anwesenheitsprüfung für alle User
                          async function checkAllUsersPresence() {
                              for (let user in userPresenceDataPoints) {
                                  let isPresent = await isUserPresent(user, userPresenceDataPoints[user]);
                                  const dpPath = await checkAndCreateDataPoint(user);
                                  await setStateAsync(dpPath, isPresent);
                                  console.log(`${user} ist ${isPresent ? 'anwesend' : 'abwesend'}`);
                              }
                          }
                          
                          // Starte die Anwesenheitsprüfung alle 17 Sekunden
                          setInterval(checkAllUsersPresence, 17000);
                          
                          

                          habs nicht ausprobiert, aber schaut brauchbar aus.

                          haus-automatisierung 1 Reply Last reply Reply Quote 0
                          • haus-automatisierung
                            haus-automatisierung Developer Most Active @nerg last edited by

                            @nerg sagte in Chat GPT im Javascript Adapter verwenden:

                            aber schaut brauchbar aus.

                            Auch wieder unnötig kompliziert, statt setObjectAsync kann man einfach createState aus der Sandbox nutzen. Dann braucht man den Zugriff auf die Objekte auch nicht freigeben. Genauso gibt es existsState

                            • https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md#createstateasync
                            • https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md#existsState
                            N 1 Reply Last reply Reply Quote 0
                            • N
                              nerg @haus-automatisierung last edited by nerg

                              @haus-automatisierung ja das stimmt. wenn man das ganz nochmal probiert, kommt auch wieder anderer Code raus:

                              // Funktion, um Anwesenheit der User zu prüfen
                              function checkUserPresence() {
                                  const users = ['user1', 'user2', 'user3']; // Liste der User
                                  const userPresenceDataPoints = {
                                      'user1': ['geofence.user1', 'wifi.user1'],
                                      'user2': ['geofence.user2', 'wifi.user2'],
                                      'user3': ['geofence.user3', 'wifi.user3']
                                  };
                              
                                  users.forEach(user => {
                                      let isPresent = false;
                              
                                      // Überprüfe alle Datenpunkte für jeden User
                                      userPresenceDataPoints[user].forEach(dp => {
                                          if (getState(dp).val) {
                                              isPresent = true;
                                          }
                                      });
                              
                                      const userPresenceState = `userdata.0.${user}.presence`;
                              
                                      // Falls der Datenpunkt nicht existiert, lege ihn an
                                      if (!existsState(userPresenceState)) {
                                          createState(userPresenceState, { type: 'boolean', def: false });
                                      }
                              
                                      // Setze den Anwesenheitsstatus
                                      setState(userPresenceState, isPresent);
                                  });
                              }
                              
                              // Die Funktion alle 17 Sekunden ausführen
                              schedule("*/17 * * * * *", checkUserPresence);
                              
                              // Initiale Ausführung beim Start des Skripts
                              checkUserPresence();
                              
                              

                              Eventuell muss man die Anweisungen nochmal konkreter fassen.

                              //edit: habe ihn nochmal konkreter angewiesen, die docs.md zu befolgen. Probiere es gerne aus: https://chatgpt.com/g/g-y65cMkHAC-iobroker-javascriptgpt

                              1 Reply Last reply Reply Quote 0
                              • First post
                                Last post

                              Support us

                              ioBroker
                              Community Adapters
                              Donate
                              FAQ Cloud / IOT
                              HowTo: Node.js-Update
                              HowTo: Backup/Restore
                              Downloads
                              BLOG

                              804
                              Online

                              31.6k
                              Users

                              79.5k
                              Topics

                              1.3m
                              Posts

                              10
                              45
                              5377
                              Loading More Posts
                              • Oldest to Newest
                              • Newest to Oldest
                              • Most Votes
                              Reply
                              • Reply as topic
                              Log in to reply
                              Community
                              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                              The ioBroker Community 2014-2023
                              logo