Navigation

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

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Javascript Adapter Frage

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

      Ich muss jetzt nochmal fragen, ich hatte gestern versucht unter javascript.0.XXXX einen datenpunkt zu erzeugen mittels der Funktion in Iobroker skript Das funktioniert auch aber der Datenpunkt erscheint nach dem erstellen nicht unter Javascript.0.XXX sondern unter javascript.0.scriptproblem.XXXX und ich kann das auch nicht ändern. Hab das jetzt sooft probiert komm da aber im Moment garnicht weiter. Könnte mir da mal jemand helfen .
      Gruß
      Hawe

      paul53 haus-automatisierung Asgothian Codierknecht 4 Replies Last reply Reply Quote 0
      • paul53
        paul53 @teletapi last edited by

        @teletapi sagte: versucht unter javascript.0.XXXX einen datenpunkt zu erzeugen

        Wie?

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

          @teletapi Tipp: Erstelle direkt deine Datenpunkte in 0_userdata.0 mit dem JavaScript-Adapter und nicht in der javascript.0. Struktur.

          Ansonsten zeig mal das Script, welches sich so verhält.

          1 Reply Last reply Reply Quote 0
          • Asgothian
            Asgothian Developer @teletapi last edited by

            @teletapi sagte in Javascript Adapter Frage:

            Ich muss jetzt nochmal fragen, ich hatte gestern versucht unter javascript.0.XXXX einen datenpunkt zu erzeugen mittels der Funktion in Iobroker skript Das funktioniert auch aber der Datenpunkt erscheint nach dem erstellen nicht unter Javascript.0.XXX sondern unter javascript.0.scriptproblem.XXXX und ich kann das auch nicht ändern. Hab das jetzt sooft probiert komm da aber im Moment garnicht weiter. Könnte mir da mal jemand helfen .
            Gruß
            Hawe

            Manuell erzeugte datenpunkte gehören nicht in den namespace von Adaptern sondern unter 0_userdata. Die adapter namespaces sind für adapter-interne datenpunkte vorgesehen. Es ist denkbar das der JS adapter da code zu hat das sicher zu stellen.

            A.

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

              @asgothian sagte in Javascript Adapter Frage:

              Es ist denkbar das der JS adapter da code zu hat das sicher zu stellen.

              Hat er nicht - alles in javascript.0 (ist ja der "eigene Namespace" der Scripts) und 0_userdata.0 ist erlaubt.

              1 Reply Last reply Reply Quote 0
              • Codierknecht
                Codierknecht Developer Most Active @teletapi last edited by

                @teletapi sagte in Javascript Adapter Frage:

                nicht unter Javascript.0.XXX sondern unter javascript.0.scriptproblem.XXXX

                Dann hast Du das in Deinem Script auch so vorgesehen.
                Ohne besonderes Zutun - also per createState('meinState') - erscheint ein State unter javascript.0.

                Dass der da nicht hingehört, wurde bereits gesagt.

                Aber ohne das Script zu sehen bleibt unsere Glaskugel recht trüb.

                1 Reply Last reply Reply Quote 2
                • teletapi
                  teletapi last edited by

                  Jetzt im Moment hatte ich garkein script dazu ich wollte nur nochmal versuchen einen datenpunkt unter dem Rootverzeichnis javascript.0.XX zu erstellen. Gestern hatte ich mir mithilfe von Chatgpt ein script erstellen lassen um aus einem wert die differenz pro tag erstellen zu lassen Chatgpt hatte dazu den Datenpunkt unter javascript.0.XXX erstellen wollen was aber nicht funktionierte weil der Datenpunkt dann immer unter javascrip.0.scriptproblem.XXXX auftauchte und somit das script nicht laufen konnte und ich auch nicht wirklich einen weg gefunden hatte das zu ändern. Irgendwie hab ich das wohl hinbekommen. Möglicherweise ist das ja falsch aber ich habe ja viele datenpunkte im Javascript Adapter dann aber in Unterordner..

                  // Funktion, die das Skript periodisch ausführt
                  function updateDailyEnergy() {
                      // Datenpunkt für die gesamte erzeugte Energie
                      const totalEnergyDP = 'modbus.0.holdingRegisters.1086_Total_PV_Energy';
                      // Datenpunkt für die täglich erzeugte Energie
                      const dailyEnergyDP = 'javascript.0.PV_Daily_Energy';
                  
                      // Heutiges Datum
                      const today = new Date();
                      today.setHours(0, 0, 0, 0); // Setze Zeit auf Mitternacht
                  
                      // Gestriges Datum
                      const yesterday = new Date(today);
                      yesterday.setDate(yesterday.getDate() - 1);
                  
                      // Datenpunktwerte lesen
                      getState(totalEnergyDP, (err, state) => {
                          if (err) {
                              console.error('Fehler beim Lesen des Datenpunkts für die gesamte erzeugte Energie:', err);
                              return;
                          }
                          
                          const totalEnergy = state.val || 0; // Gesamte erzeugte Energie heute
                          console.log('Gesamte erzeugte Energie heute:', totalEnergy);
                  
                          getState(dailyEnergyDP, (err, state) => {
                              if (err) {
                                  console.error('Fehler beim Lesen des Datenpunkts für die täglich erzeugte Energie:', err);
                                  return;
                              }
                  
                              const lastTotalEnergy = state.val || 0; // Gesamte erzeugte Energie gestern
                              console.log('Gesamte erzeugte Energie gestern:', lastTotalEnergy);
                              
                              // Täglich erzeugte Energie berechnen
                              const dailyEnergy = totalEnergy - lastTotalEnergy;
                  
                              console.log('Täglich erzeugte Energie:', dailyEnergy);
                  
                              // Täglich erzeugte Energie in den entsprechenden Datenpunkt schreiben
                              setState(dailyEnergyDP, dailyEnergy, true, (err) => {
                                  if (err) {
                                      console.error('Fehler beim Schreiben des Datenpunkts für die täglich erzeugte Energie:', err);
                                      return;
                                  }
                                  console.log('Täglich erzeugte Energie erfolgreich aktualisiert:', dailyEnergy);
                              });
                          });
                      });
                  }
                  
                  // Funktion periodisch ausführen (alle 30 Minuten)
                  updateDailyEnergy(); // Sofortiges Ausführen beim Start
                  setInterval(updateDailyEnergy, 30 * 60 * 1000); // Alle 30 Minuten wiederholen
                  
                  haus-automatisierung paul53 2 Replies Last reply Reply Quote 0
                  • haus-automatisierung
                    haus-automatisierung Developer Most Active @teletapi last edited by haus-automatisierung

                    @teletapi sagte in Javascript Adapter Frage:

                    wollte nur nochmal versuchen einen datenpunkt unter dem Rootverzeichnis javascript.0.XX zu erstellen

                    Dann lass den Namespace javascript.0. in der ID weg.

                    Dein Script legt aber nirgendwo einen neuen State an, sondern liest und schreibt nur diesen State?!

                    1 Reply Last reply Reply Quote 0
                    • paul53
                      paul53 @teletapi last edited by paul53

                      @teletapi
                      Es gibt 3 Möglichkeiten in Javascript per createState() einen Datenpunkt zu erstellen:

                      createState('XXXX', 0, common); // erstellt DP "javascript.N.XXXX" (N = JS-Instanznr.)
                      createState('javascript.0.XXXX', 0, common); // erstellt DP "javascript.0.XXXX" 
                      createState('0_userdata.0.XXXX', 0, common); // erstellt DP "0_userdata.0.XXXX"
                      

                      EDIT: Die 3. Version ist zu bevorzugen.

                      1 Reply Last reply Reply Quote 0
                      • teletapi
                        teletapi last edited by

                        Danke euch, man lernt halt nie aus

                        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

                        682
                        Online

                        32.0k
                        Users

                        80.4k
                        Topics

                        1.3m
                        Posts

                        5
                        10
                        291
                        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