Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Script.js - undefined

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Script.js - undefined

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

      Hallo,
      guten Morgen an Alle.
      Ich bemühe mich gerade einbißchen in script einzuarbeiten. Als Anlehnung gibt es ja viele gute Beispiele, danke dafür.
      Jetzt komme ich aber mit einem nicht weiter.

      schedule ( "12 10 * * *" , async function () {
      sendTo('sql.0', 'query', 'select sum(val) from iobroker.ts_number where  id=86 ', function (sumsolarfeb22) {
          if (sumsolarfeb22.error) {
              console.error(sumsolarfeb22.error);
          } else {
              // show result
               log('Rows: ' + JSON.stringify(sumsolarfeb22.result));
               var test = JSON.stringify(sumsolarfeb22.result[0]["sumsolarfeb22"]);
               log(test);
          }
      setState("0_userdata.0.SumSoFeb22", parseFloat(sumsolarfeb22.result[0]["sumsolarfeb22"]), true); 
          } ) } ) ;
      
      
      13.2.2022, 10:22:00.048	[info ]: javascript.0 (26225) script.js.Skript-SumSolarFeb22: sendTo(adapter=sql.0, cmd=query, msg="select sum(val) from iobroker.ts_number where  id=86 ")
      13.2.2022, 10:22:00.081	[info ]: javascript.0 (26225) script.js.Skript-SumSolarFeb22: Rows: [{"sum(val)":223.24739}]
      13.2.2022, 10:22:00.082	[info ]: javascript.0 (26225) script.js.Skript-SumSolarFeb22: undefined
      13.2.2022, 10:22:00.083	[info ]: javascript.0 (26225) script.js.Skript-SumSolarFeb22: setForeignState(id=0_userdata.0.SumSoFeb22, state={"val":null,"ack":true,"c":"script.js.Skript-SumSolarFeb22"})
      
      
      

      Der Wert wird durch die sql-Abfrage richtig übergeben, aber nicht im Datenpunkt eingetragen. Ich habe schon mal den Datenpunkt als string bzw. number geändert und neuangelegt, leider keine Änderung.
      Solche Scripte mit sql-Abfrage habe ich mehrere im Einsatz, laufen alle bestens.

      Habt Ihr einen Hinweis für mich??
      Danke im Voraus.

      Gruß Reinald

      T paul53 2 Replies Last reply Reply Quote 0
      • T
        ticaki Developer @rhrh11 last edited by ticaki

        @rhrh11 sagte in Script.js - undefined:

        [{"sum(val)":223.24739}]

        var test = JSON.stringify(sumsolarfeb22.result[0]["sum(val)"]);
        
        1 Reply Last reply Reply Quote 0
        • paul53
          paul53 @rhrh11 last edited by

          @rhrh11 sagte: Rows: [{"sum(val)":223.24739}]

                   let test = sumsolarfeb22.result[0]['sum(val)'];
                   log(test);
                   setState("0_userdata.0.SumSoFeb22", Math.round(test), true); 
              }
            });
          });
          
          1 Reply Last reply Reply Quote 0
          • R
            rhrh11 last edited by

            Hallo,
            danke für eure Hinweise, muss ich mir erstmal anschauen.
            Ich hbe noch einges ausprobiert(bin schon ganz wuschig).
            Wenn ich in der sql-abfrage statt sum ein max-wert berechne, funktioniert alles. Schreibt die sum-Funktion einen anderes Datenformat???

            T paul53 2 Replies Last reply Reply Quote 0
            • T
              ticaki Developer @rhrh11 last edited by

              @rhrh11
              Ich weiß nicht was die andere Funktion ausgibt aber:

              javascript.0 (26225) script.js.Skript-SumSolarFeb22: Rows: [{"sum(val)":223.24739}]
              

              das ist ein Objekt. Auf ein Objekt greift man zu in dem man objektbezeichnung.schlüssel oder objektbezeichnung["schlüssel"] verwendet. In deinem Fall

              sumsolarfeb22.result[0]["sum(val)"]
              

              ["sum(val)"] ist der Schlüssel.

              Das JSON.stringify() hab ich übersehen und ist falsch/unnötig. Da der Wert von "sum(val)" eine Zahl(number) ist.

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

                @rhrh11 sagte: Wenn ich in der sql-abfrage statt sum ein max-wert berechne, funktioniert alles.

                Von SQL habe ich keine Ahnung. Ich sehe nur an der Log-Ausgabe "Rows: ...", was in .result geliefert wird.

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

                  Danke euch beiden,

                  das war der Schlüssel, und natürlich ein klassischer Namensfehler( ich werde heute noch Asche auf mein haupt tun).
                  Klar kommt da sum(val) hin!!!!
                  Also wieder was gelernt und nicht nur Sport gekuckt.

                  Dann kann ich ja jetzt meine Solartabellen über die Monate und Jahre aufbauen.

                  Gruß Reinald

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

                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  782
                  Online

                  31.8k
                  Users

                  80.0k
                  Topics

                  1.3m
                  Posts

                  3
                  7
                  398
                  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