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. Skripten / Logik
  4. [gelöst] SQL getHistory Abfrage

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.7k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.1k

[gelöst] SQL getHistory Abfrage

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
58 Beiträge 4 Kommentatoren 4.8k Aufrufe 4 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.
  • F fastfoot
    • Bei query fehlt die Angabe der Datenbank vor den Tabellennamen, steht auch so im Readme. Also SELECT id FROM iobroker.datapoints....
    • Bei getHistory wird id nicht mit zurück geliefert, allerdings würde ich mich fragen wozu, denn die Id ist ja Bestandteil der Abfrage. Es werden nur ts und val geliefert.
    • addId hat tatsächlich keinen Effekt, habe es im source auch nur einmal gefunden, genutzt scheint es nicht zu werden.
    apollon77A Offline
    apollon77A Offline
    apollon77
    schrieb am zuletzt editiert von
    #21

    @fastfoot sagte in SQL getHistory Abfrage:

    addId hat tatsächlich keinen Effekt, habe es im source auch nur einmal gefunden, genutzt scheint es nicht zu werden.

    Jupp scheint so zu sein, dann wäre das ein Bug

    Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

    • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
    • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
    1 Antwort Letzte Antwort
    0
    • apollon77A apollon77

      Naja, schau mal hier https://github.com/ioBroker/ioBroker.sql#structure-of-the-dbs ... da steht elche Tabelle für welchen DB Typ wie heisst ... Ja ich kann gern in der Doku darauf hinweisen das das Beispiel zB für ne PostGres bzw sqlite ist und ggf andere Tabellennamen genutzt werden müssen.

      .ts muss ich vermutlich durch .val ersetzen um den Wert zu bekommen

      ts ist der Timestamp ... und val ist was anderes.

      Logge doch einfach mal console.log(JSON.stringify(result.result[i])) dann sehen wir was wirklich zurückommt und raten nicht rum

      O Offline
      O Offline
      ostseeskipper
      schrieb am zuletzt editiert von
      #22

      @apollon77 said in SQL getHistory Abfrage:

      Logge doch einfach mal console.log(JSON.stringify(result.result[i])) dann sehen wir was wirklich zurückommt und raten nicht rum

      In der query oder gethistory ?

      F 1 Antwort Letzte Antwort
      0
      • apollon77A apollon77

        Naja, schau mal hier https://github.com/ioBroker/ioBroker.sql#structure-of-the-dbs ... da steht elche Tabelle für welchen DB Typ wie heisst ... Ja ich kann gern in der Doku darauf hinweisen das das Beispiel zB für ne PostGres bzw sqlite ist und ggf andere Tabellennamen genutzt werden müssen.

        .ts muss ich vermutlich durch .val ersetzen um den Wert zu bekommen

        ts ist der Timestamp ... und val ist was anderes.

        Logge doch einfach mal console.log(JSON.stringify(result.result[i])) dann sehen wir was wirklich zurückommt und raten nicht rum

        F Offline
        F Offline
        fastfoot
        schrieb am zuletzt editiert von
        #23

        @apollon77 sagte in SQL getHistory Abfrage:

        val ist was anderes.

        val ist der Wert, wir müssen nicht raten, ich habe das schon geprüft :-)
        {'ts':1648832706691,'val':2.029}

        iobroker läuft unter Docker auf QNAP TS-451+
        SkriptRecovery: https://forum.iobroker.net/post/930558

        O 1 Antwort Letzte Antwort
        0
        • F fastfoot

          @apollon77 sagte in SQL getHistory Abfrage:

          val ist was anderes.

          val ist der Wert, wir müssen nicht raten, ich habe das schon geprüft :-)
          {'ts':1648832706691,'val':2.029}

          O Offline
          O Offline
          ostseeskipper
          schrieb am zuletzt editiert von
          #24

          @fastfoot und @apollon77

          sendTo('sql.0', 'query', 'SELECT id FROM iobroker.datapoints WHERE name="smartmeter.0.1-0:16_7_0__255.value"', function (result) {
              if (result.error) {
                  console.error(result.error);
              } else {
                  var now = new Date();
                  now.setMinutes(-3);
                  sendTo('sql.0', 'query', 'SELECT AVG(val) AS Wert FROM iobroker.ts_number WHERE ts >= ' + now.getTime() + ' AND id=' + result.result[0].id, function (result) {
                      console.log(JSON.stringify(result.result[0]));
                  });
              }
          });
          

          ergibt

          21:54:35.208	info	javascript.0 (149) Start javascript script.js.Logik.GleitDurchschnitt
          21:54:35.226	info	javascript.0 (149) script.js.Logik.GleitDurchschnitt: registered 0 subscriptions and 0 schedules
          21:54:35.242	info	javascript.0 (149) script.js.Logik.GleitDurchschnitt: {"Wert":3.6997549019607843}
          
          O 1 Antwort Letzte Antwort
          0
          • O ostseeskipper

            @fastfoot und @apollon77

            sendTo('sql.0', 'query', 'SELECT id FROM iobroker.datapoints WHERE name="smartmeter.0.1-0:16_7_0__255.value"', function (result) {
                if (result.error) {
                    console.error(result.error);
                } else {
                    var now = new Date();
                    now.setMinutes(-3);
                    sendTo('sql.0', 'query', 'SELECT AVG(val) AS Wert FROM iobroker.ts_number WHERE ts >= ' + now.getTime() + ' AND id=' + result.result[0].id, function (result) {
                        console.log(JSON.stringify(result.result[0]));
                    });
                }
            });
            

            ergibt

            21:54:35.208	info	javascript.0 (149) Start javascript script.js.Logik.GleitDurchschnitt
            21:54:35.226	info	javascript.0 (149) script.js.Logik.GleitDurchschnitt: registered 0 subscriptions and 0 schedules
            21:54:35.242	info	javascript.0 (149) script.js.Logik.GleitDurchschnitt: {"Wert":3.6997549019607843}
            
            O Offline
            O Offline
            ostseeskipper
            schrieb am zuletzt editiert von
            #25

            Wenn mir nun noch einer von euch Beiden bitte sagen könne wie ich die Zahl 3.699 in eine Variable extrahiert bekomme wäre mein Abend gerettet:blush:

            paul53P F 2 Antworten Letzte Antwort
            0
            • O ostseeskipper

              @apollon77 said in SQL getHistory Abfrage:

              Logge doch einfach mal console.log(JSON.stringify(result.result[i])) dann sehen wir was wirklich zurückommt und raten nicht rum

              In der query oder gethistory ?

              F Offline
              F Offline
              fastfoot
              schrieb am zuletzt editiert von
              #26

              @ostseeskipper probiere mal mit getHistory average statt minmax. Dann kannst du mit:
              log(i+' : ' + new Date(result.result[i].ts).toLocaleString() + ' => ' + result.result[i].val); das Ergebnis anschauen

              22:01:19.335	info	javascript.1 (527) script.js.Forum.getHistory: 0 : 1.4.2022, 19:14:39 => 2.0199999999999996
              22:01:19.336	info	javascript.1 (527) script.js.Forum.getHistory: 1 : 1.4.2022, 20:29:39 => 2.01
              22:01:19.337	info	javascript.1 (527) script.js.Forum.getHistory: 2 : 1.4.2022, 22:01:19 => 1.9977777777777777
              

              iobroker läuft unter Docker auf QNAP TS-451+
              SkriptRecovery: https://forum.iobroker.net/post/930558

              1 Antwort Letzte Antwort
              1
              • O ostseeskipper

                Wenn mir nun noch einer von euch Beiden bitte sagen könne wie ich die Zahl 3.699 in eine Variable extrahiert bekomme wäre mein Abend gerettet:blush:

                paul53P Offline
                paul53P Offline
                paul53
                schrieb am zuletzt editiert von
                #27

                @ostseeskipper sagte: wie ich die Zahl 3.699 in eine Variable extrahiert bekomme

                let wert = result.result[0].Wert;
                

                Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                O 1 Antwort Letzte Antwort
                1
                • O ostseeskipper

                  Wenn mir nun noch einer von euch Beiden bitte sagen könne wie ich die Zahl 3.699 in eine Variable extrahiert bekomme wäre mein Abend gerettet:blush:

                  F Offline
                  F Offline
                  fastfoot
                  schrieb am zuletzt editiert von
                  #28

                  @ostseeskipper sagte in SQL getHistory Abfrage:

                  Wenn mir nun noch einer von euch Beiden bitte sagen könne wie ich die Zahl 3.699 in eine Variable extrahiert bekomme wäre mein Abend gerettet:blush:

                  mit let DeineVariable = result.result[0].Wert weist du das zu

                  iobroker läuft unter Docker auf QNAP TS-451+
                  SkriptRecovery: https://forum.iobroker.net/post/930558

                  1 Antwort Letzte Antwort
                  1
                  • paul53P paul53

                    @ostseeskipper sagte: wie ich die Zahl 3.699 in eine Variable extrahiert bekomme

                    let wert = result.result[0].Wert;
                    
                    O Offline
                    O Offline
                    ostseeskipper
                    schrieb am zuletzt editiert von ostseeskipper
                    #29

                    @paul53
                    @fastfoot
                    @apollon77

                    Danke Euch erst mal.:+1:

                    @fastfoot ist es mit gethistory performanter als über die letzte von mir gepostete Lösung mit queries und avg ?
                    fand das now.setMinutes(-3) relativ charmat auch wenn ich es noch nicht wirklich verstehe wie das alles mit den result.result verkapselt ist.

                    Aber ein Auto muss ja auch nur fahren
                    schönen Abend euch

                    F 2 Antworten Letzte Antwort
                    1
                    • apollon77A Offline
                      apollon77A Offline
                      apollon77
                      schrieb am zuletzt editiert von
                      #30

                      Ich stimme aber zu das die Beispiele vllt nicht die besten sind. Ich kann mal schauen das ich das hier gesagt dort einfließen lasse.

                      Ich bin aber auch ehrlich das mir persönlich Gerade die Zeit fehlt das alles sinnvoll und vollständig durchzuspielen und zu überlegen welche Beispiele in welcher Form aus „User“ Sicht Sinn machen. Da freuen wir uns über konkrete Vorschläge Bzw auf github einem Pull request“ für die readme (ist ganz easy: Stift bei der readme klicken, ändern, Änderung vorschlagen, pull request erstellen)

                      Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                      • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                      • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                      F 1 Antwort Letzte Antwort
                      0
                      • O ostseeskipper

                        @paul53
                        @fastfoot
                        @apollon77

                        Danke Euch erst mal.:+1:

                        @fastfoot ist es mit gethistory performanter als über die letzte von mir gepostete Lösung mit queries und avg ?
                        fand das now.setMinutes(-3) relativ charmat auch wenn ich es noch nicht wirklich verstehe wie das alles mit den result.result verkapselt ist.

                        Aber ein Auto muss ja auch nur fahren
                        schönen Abend euch

                        F Offline
                        F Offline
                        fastfoot
                        schrieb am zuletzt editiert von
                        #31

                        @ostseeskipper ob da performanter ist kann ich nicht sagen, für deinen gewählten Zeitraum ist das sicher egal. getHistory bietet einiges mehr, so kann man mit step noch einen Parameter mit angeben. Wie das genau funktioniert hat sich mir aber noch nicht erschlossen :-) Mit deiner Abfrage weisst du jedenfalls sicher was da passiert, das sehe ich erstmal als Vorteil. Wolltest du aber für den Zeitraum eines Jahres das jeweilige Tagesmittel errechnen, dann wäre getHistory einen näheren Blick wert :-)

                        iobroker läuft unter Docker auf QNAP TS-451+
                        SkriptRecovery: https://forum.iobroker.net/post/930558

                        1 Antwort Letzte Antwort
                        0
                        • apollon77A apollon77

                          Ich stimme aber zu das die Beispiele vllt nicht die besten sind. Ich kann mal schauen das ich das hier gesagt dort einfließen lasse.

                          Ich bin aber auch ehrlich das mir persönlich Gerade die Zeit fehlt das alles sinnvoll und vollständig durchzuspielen und zu überlegen welche Beispiele in welcher Form aus „User“ Sicht Sinn machen. Da freuen wir uns über konkrete Vorschläge Bzw auf github einem Pull request“ für die readme (ist ganz easy: Stift bei der readme klicken, ändern, Änderung vorschlagen, pull request erstellen)

                          F Offline
                          F Offline
                          fastfoot
                          schrieb am zuletzt editiert von
                          #32

                          @apollon77 ich schaue mal ob ich da was verschlimmbessern kann. Ist jedenfalls ein guter Tipp mit dem Stift! Dauert aber etwas, an Deine Schlagzahl komme ich in 100 Jahren nicht ran :-) Muss mich auch erst noch etwas einarbeiten, wäre aber cool dich da etwas 'entlasten' zu können

                          iobroker läuft unter Docker auf QNAP TS-451+
                          SkriptRecovery: https://forum.iobroker.net/post/930558

                          apollon77A 1 Antwort Letzte Antwort
                          1
                          • F fastfoot

                            @apollon77 ich schaue mal ob ich da was verschlimmbessern kann. Ist jedenfalls ein guter Tipp mit dem Stift! Dauert aber etwas, an Deine Schlagzahl komme ich in 100 Jahren nicht ran :-) Muss mich auch erst noch etwas einarbeiten, wäre aber cool dich da etwas 'entlasten' zu können

                            apollon77A Offline
                            apollon77A Offline
                            apollon77
                            schrieb am zuletzt editiert von
                            #33

                            @fastfoot Super. Vielen Dank!!

                            Das addId versuche ich die Tage mit noch zusammen mit einem anderen issue wo ich eh grad in allen 3 History Adaptern dran bin zu fixen.

                            Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                            • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                            • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                            1 Antwort Letzte Antwort
                            0
                            • O ostseeskipper

                              @paul53
                              @fastfoot
                              @apollon77

                              Danke Euch erst mal.:+1:

                              @fastfoot ist es mit gethistory performanter als über die letzte von mir gepostete Lösung mit queries und avg ?
                              fand das now.setMinutes(-3) relativ charmat auch wenn ich es noch nicht wirklich verstehe wie das alles mit den result.result verkapselt ist.

                              Aber ein Auto muss ja auch nur fahren
                              schönen Abend euch

                              F Offline
                              F Offline
                              fastfoot
                              schrieb am zuletzt editiert von
                              #34

                              @ostseeskipper sagte in SQL getHistory Abfrage:

                              fand das now.setMinutes(-3) relativ charmat

                              sieht cool aus, ist aber nicht was Du erwartest. Wenn now z.B. 09:43 ist dann setzt dir dieser Befehl dein now auf 08:57, nicht auf 09:40 :-)
                              Richtig geht es so: now.setMinutes(now.getMinutes() - 3)

                              iobroker läuft unter Docker auf QNAP TS-451+
                              SkriptRecovery: https://forum.iobroker.net/post/930558

                              O 1 Antwort Letzte Antwort
                              0
                              • F fastfoot

                                @ostseeskipper sagte in SQL getHistory Abfrage:

                                fand das now.setMinutes(-3) relativ charmat

                                sieht cool aus, ist aber nicht was Du erwartest. Wenn now z.B. 09:43 ist dann setzt dir dieser Befehl dein now auf 08:57, nicht auf 09:40 :-)
                                Richtig geht es so: now.setMinutes(now.getMinutes() - 3)

                                O Offline
                                O Offline
                                ostseeskipper
                                schrieb am zuletzt editiert von
                                #35

                                @fastfoot said in SQL getHistory Abfrage:

                                @ostseeskipper sagte in SQL getHistory Abfrage:

                                fand das now.setMinutes(-3) relativ charmat

                                sieht cool aus, ist aber nicht was Du erwartest. Wenn now z.B. 09:43 ist dann setzt dir dieser Befehl dein now auf 08:57, nicht auf 09:40 :-)
                                Richtig geht es so: now.setMinutes(now.getMinutes() - 3)

                                Ohh, besten Dank,
                                Wäre denn das z.B. Beispiel eine Stunde zurück?

                                        var now = new Date();
                                        now.setHours(-1);
                                
                                apollon77A F 2 Antworten Letzte Antwort
                                0
                                • O ostseeskipper

                                  @fastfoot said in SQL getHistory Abfrage:

                                  @ostseeskipper sagte in SQL getHistory Abfrage:

                                  fand das now.setMinutes(-3) relativ charmat

                                  sieht cool aus, ist aber nicht was Du erwartest. Wenn now z.B. 09:43 ist dann setzt dir dieser Befehl dein now auf 08:57, nicht auf 09:40 :-)
                                  Richtig geht es so: now.setMinutes(now.getMinutes() - 3)

                                  Ohh, besten Dank,
                                  Wäre denn das z.B. Beispiel eine Stunde zurück?

                                          var now = new Date();
                                          now.setHours(-1);
                                  
                                  apollon77A Offline
                                  apollon77A Offline
                                  apollon77
                                  schrieb am zuletzt editiert von
                                  #36

                                  @ostseeskipper Naja nach gleiochem chema wie bei den Stunden:

                                  now.setHours(now.setHours() - 1)

                                  Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                                  • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                                  • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                                  1 Antwort Letzte Antwort
                                  1
                                  • O ostseeskipper

                                    @fastfoot said in SQL getHistory Abfrage:

                                    @ostseeskipper sagte in SQL getHistory Abfrage:

                                    fand das now.setMinutes(-3) relativ charmat

                                    sieht cool aus, ist aber nicht was Du erwartest. Wenn now z.B. 09:43 ist dann setzt dir dieser Befehl dein now auf 08:57, nicht auf 09:40 :-)
                                    Richtig geht es so: now.setMinutes(now.getMinutes() - 3)

                                    Ohh, besten Dank,
                                    Wäre denn das z.B. Beispiel eine Stunde zurück?

                                            var now = new Date();
                                            now.setHours(-1);
                                    
                                    F Offline
                                    F Offline
                                    fastfoot
                                    schrieb am zuletzt editiert von
                                    #37

                                    @ostseeskipper sagte in SQL getHistory Abfrage:

                                    Wäre denn das z.B. Beispiel eine Stunde zurück?

                                    nein, in meinem Beispiel mit now = 09:43 setzt dir der Befehl die Zeit auf 23:43 des Vortages.
                                    Abhilfe auch hier: now.setHours(now.getHours() - 1), apollon hat da noch einen typo drin.

                                    Bis Ende der Woche gibt es aktuelle Beispiele auch mit Erklärungen zu den Optionen, wobei das hier ja JS Grundkenntnisse betrifft und dort dann nicht näher behandelt wird. Ist aber alles kein Problem, dafür gibt es ja hier das Forum :-)

                                    iobroker läuft unter Docker auf QNAP TS-451+
                                    SkriptRecovery: https://forum.iobroker.net/post/930558

                                    O 1 Antwort Letzte Antwort
                                    1
                                    • F fastfoot

                                      @ostseeskipper sagte in SQL getHistory Abfrage:

                                      Wäre denn das z.B. Beispiel eine Stunde zurück?

                                      nein, in meinem Beispiel mit now = 09:43 setzt dir der Befehl die Zeit auf 23:43 des Vortages.
                                      Abhilfe auch hier: now.setHours(now.getHours() - 1), apollon hat da noch einen typo drin.

                                      Bis Ende der Woche gibt es aktuelle Beispiele auch mit Erklärungen zu den Optionen, wobei das hier ja JS Grundkenntnisse betrifft und dort dann nicht näher behandelt wird. Ist aber alles kein Problem, dafür gibt es ja hier das Forum :-)

                                      O Offline
                                      O Offline
                                      ostseeskipper
                                      schrieb am zuletzt editiert von
                                      #38

                                      @fastfoot said in SQL getHistory Abfrage:

                                      nein, in meinem Beispiel mit now = 09:43 setzt dir der Befehl die Zeit auf 23:43 des Vortages.
                                      Abhilfe auch hier: now.setHours(now.getHours() - 1), apollon hat da noch einen typo drin.

                                      Bis Ende der Woche gibt es aktuelle Beispiele auch mit Erklärungen zu den Optionen, wobei das hier ja JS Grundkenntnisse betrifft und dort dann nicht näher behandelt wird. Ist aber alles kein Problem, dafür gibt es ja hier das Forum :-)

                                      Jetzt bin ich völlig erschlagen.

                                              now.setHours(-1);
                                      

                                      steht auch in dem SQL Adapter Beispiel drin
                                      hatte echt gedacht und mich gefreut das es so einfach ist die Zeit von jetzt abzüglich einer Stunde zu definieren.
                                      @fastfoot Danke:+1:
                                      Ich werd es einfach probieren.

                                      O F 2 Antworten Letzte Antwort
                                      0
                                      • O ostseeskipper

                                        @fastfoot said in SQL getHistory Abfrage:

                                        nein, in meinem Beispiel mit now = 09:43 setzt dir der Befehl die Zeit auf 23:43 des Vortages.
                                        Abhilfe auch hier: now.setHours(now.getHours() - 1), apollon hat da noch einen typo drin.

                                        Bis Ende der Woche gibt es aktuelle Beispiele auch mit Erklärungen zu den Optionen, wobei das hier ja JS Grundkenntnisse betrifft und dort dann nicht näher behandelt wird. Ist aber alles kein Problem, dafür gibt es ja hier das Forum :-)

                                        Jetzt bin ich völlig erschlagen.

                                                now.setHours(-1);
                                        

                                        steht auch in dem SQL Adapter Beispiel drin
                                        hatte echt gedacht und mich gefreut das es so einfach ist die Zeit von jetzt abzüglich einer Stunde zu definieren.
                                        @fastfoot Danke:+1:
                                        Ich werd es einfach probieren.

                                        O Offline
                                        O Offline
                                        ostseeskipper
                                        schrieb am zuletzt editiert von ostseeskipper
                                        #39

                                        Jetzt muss ich doch noch mal fragen.

                                        Das Scrpit sieht nun so aus.

                                        var pvwert=0;
                                        
                                        log("PV wert1: " + pvwert ,"info");
                                        
                                        sendTo('sql.0', 'query', 'SELECT id FROM iobroker.datapoints WHERE name="smartmeter.0.1-0:16_7_0__255.value"', function (result) {
                                            if (result.error) {
                                                console.error(result.error);
                                            } else {
                                                var now = new Date();
                                                now.setMinutes(now.getMinutes() - 3);
                                                sendTo('sql.0', 'query', 'SELECT AVG(val) AS Wert FROM iobroker.ts_number WHERE ts >= ' + now.getTime() + ' AND id=' + result.result[0].id, function (result) {
                                                    let pvwert_1 = result.result[0].Wert
                                                    pvwert = result.result[0].Wert  // ?? Wirkungslos ??  Warum
                                                    log("PV wert2: " + pvwert_1 ,"info")
                                                });
                                            }
                                        });
                                        log("PV wert3: " + pvwert ,"info");
                                        

                                        Habe am Anfang des JS Script pvwert definiert und will das in Zeile 13 übergeben, da ich den Wert im weiteren Scriptverlauf noch brauche.
                                        Scheinbar lässt es nichts aus der sendto raus.
                                        und wenn ich pvwert_1 ausserhalb der sendto aufrufe gibts ne Fehlermeldung.

                                        Edit: Was ich auch nicht verstehe warum wird die letzte Befehlszeile vor dem sendto ausgeführt

                                        20:21:12.047	info	javascript.0 (149) script.js.Logik.GleitDurchschnitt: PV wert1: 0
                                        20:21:12.048	info	javascript.0 (149) script.js.Logik.GleitDurchschnitt: PV wert3: 0
                                        20:21:12.048	info	javascript.0 (149) script.js.Logik.GleitDurchschnitt: registered 0 subscriptions and 0 schedules
                                        20:21:12.080	info	javascript.0 (149) script.js.Logik.GleitDurchschnitt: PV wert2: 3.5454545454545454
                                        
                                        F 1 Antwort Letzte Antwort
                                        0
                                        • O ostseeskipper

                                          @fastfoot said in SQL getHistory Abfrage:

                                          nein, in meinem Beispiel mit now = 09:43 setzt dir der Befehl die Zeit auf 23:43 des Vortages.
                                          Abhilfe auch hier: now.setHours(now.getHours() - 1), apollon hat da noch einen typo drin.

                                          Bis Ende der Woche gibt es aktuelle Beispiele auch mit Erklärungen zu den Optionen, wobei das hier ja JS Grundkenntnisse betrifft und dort dann nicht näher behandelt wird. Ist aber alles kein Problem, dafür gibt es ja hier das Forum :-)

                                          Jetzt bin ich völlig erschlagen.

                                                  now.setHours(-1);
                                          

                                          steht auch in dem SQL Adapter Beispiel drin
                                          hatte echt gedacht und mich gefreut das es so einfach ist die Zeit von jetzt abzüglich einer Stunde zu definieren.
                                          @fastfoot Danke:+1:
                                          Ich werd es einfach probieren.

                                          F Offline
                                          F Offline
                                          fastfoot
                                          schrieb am zuletzt editiert von
                                          #40

                                          @ostseeskipper sagte in SQL getHistory Abfrage:

                                          steht auch in dem SQL Adapter Beispiel drin

                                          da wird aber nicht behauptet, dass der Zeitraum 1 Std. sei :-) Aber ja, man unterstellt es. Wie gesagt überarbeite ich das gerade, es dauert aber noch etwas, da ich auch noch etwas zu den Optionen schreiben möchte und die Beispiele für alle dort genannten Datenbanken laufen sollen

                                          iobroker läuft unter Docker auf QNAP TS-451+
                                          SkriptRecovery: https://forum.iobroker.net/post/930558

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


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          947

                                          Online

                                          32.4k

                                          Benutzer

                                          81.5k

                                          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