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. Per SQL eine Differenz für bestimmte Zeitspanne

NEWS

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

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

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

Per SQL eine Differenz für bestimmte Zeitspanne

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
4 Beiträge 3 Kommentatoren 1.2k Aufrufe
  • Ä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 Offline
    F Offline
    Fitti
    schrieb am zuletzt editiert von
    #1

    Hi zusammen,

    gibt es SQL Cracks hier, die mir bitte einen Tipp geben können bezüglich Differenzermittelung in einer bestimmten Zeitspanne?

    Stehe total auf dem Schlauch, da mir einfach der Anfang fehlt.

    Was habe ich:

    • Ich frage ca. alle 2 Minuten meinen Stromzählerstand per JS ab und das Ganze kommt in eine Variable.

    • Die Variable ist per SQL verbunden, so dass diese Werte dann in meiner MariaDB landen.

    • Ich weiß aber nicht genau, wann die Variable geschrieben wird, das Kann z. B. 20:00:02 Uhr sein, oder aber auch mal 20:00:04 oder ganz anders in dieser Zeit, da ich z. B. gerade einen Reboot hatte.

    Nun mein Wunsch:

    Ich möchte die Wertedifferenz zwischen 20:00 und 8:00 haben, sprich, was ich in der Nacht verbraucht habe.

    Warum per SQL? Naja, somit kann der MySQL Server auch was machen. Den SQL Befehl rufe ich dann per JS auf. Das ist kein Problem. Aber ich finde nicht heraus, wie ich einen Wert nahe 20:00 und 8:00h abfrage und dann auch gleich per SQL berechnen lasse. Das müsste doch aber gehen.

    Danke wie immer im Voraus.

    So long,

    Fitti

    "Es wird die Zeit kommen, da ihr euch entscheiden müsst zwischen dem, was richtig ist, und dem, was bequem ist."
    Plural von Status ist auch Status!

    1 Antwort Letzte Antwort
    0
    • apollon77A Offline
      apollon77A Offline
      apollon77
      schrieb am zuletzt editiert von
      #2

      Also an die beiden werte kommst Du per SQL indem du einmal etwas hast wie

      Erster Wert: SELECT * FROM table WHERE time>=startzeit order by time LIMIT 1

      Letzter Wert: SELECT * FROM table WHERE time<=endzeit order by time desc LIMIT 1

      Das könnte man dann im Javascript berechnen. Du hast dann immer den Ersten wert und den letzten Wert in deiner Zeitspanne egal wann genau der Wert geschrieben wurde.

      Eine zweite Idee, die aber davon ausgeht das der Wert immer aufsteigend ist, wo dann auch die DB rechnen kann wäre

      SELECT MAX(wert)-MIN(wert) from table where time>=startzeit AND time<=endzeit

      Das nimmt die Differenz des größten und des kleinsten Wertes im Zeitbereich. Wenn der Wert immer aufsteigend ist müsste genau das rauskommen was Du willst

      Ist jetzt beides "trocken" ohne Test runtergeschrieben, aber vllt gibt es ja eine Idee.

      Ingo F

      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
      • F Offline
        F Offline
        Fitti
        schrieb am zuletzt editiert von
        #3

        Danke. Ja logisch. An Limit 1 habe ich gar nicht gedacht.

        Ich will einen Klatsch mit Hand an Kopf Smilie….

        Ich kann ja auch mit select dann rechnen.

        Aber der zweite Vorschlag gefällt mir noch besser. Das ist genau das was ich suchte.

        Morgen mal testen.

        Also. Danke noch einmal.

        Fitti

        "Es wird die Zeit kommen, da ihr euch entscheiden müsst zwischen dem, was richtig ist, und dem, was bequem ist."
        Plural von Status ist auch Status!

        1 Antwort Letzte Antwort
        0
        • a200A Offline
          a200A Offline
          a200
          schrieb am zuletzt editiert von
          #4

          Du kannst es ja direkt in ioBroker machen:

          ` > function getHistoryRow(date, callback) {

          var options = {

          start: date,

          //end: date,

          count: 1,

          aggregate: 'none',

          ignoreNull: 1

          };

          sendTo ("sql.1", "getHistory", { id: "<dein_datenpunkt>", options: options }, function(data) {

          if (data) {

          var rows = [];

          rows = rows.concat(data.result);

          log(targetId + " ts: " + formatDate(rows[0].ts, "DD.MM.YYYY hh:mm:ss") + " val: " + rows[0].val + " datum: " + rows[0].ts);

          }

          });

          }

          // und der Aufruf:

          dStunde = formatDate(new Date(), "JJJJ.MM.TT 00:00:00"); // heute um 00:00 Uhr

          iStunde = getDateObject(dStunde).getTime() - 86400000; // gestern um 00:00 Uhr

          getHistoryRow(iStunde);</dein_datenpunkt> `
          Darin kannst wiederum neue Datenpunkte erstellen, usw…

          Gruß,

          a200.

          IoBroker auf QNAP TS-451, Raspi und NUC

          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

          819

          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