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. Error/Bug
  4. [gelöst] sql-Adapter - einige sich selten ändernde Variablen werden nicht in die DB geschrieben

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    16
    1
    1.8k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    898

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

[gelöst] sql-Adapter - einige sich selten ändernde Variablen werden nicht in die DB geschrieben

Geplant Angeheftet Gesperrt Verschoben Error/Bug
1 Beiträge 1 Kommentatoren 639 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.
  • H Offline
    H Offline
    harvey637
    schrieb am zuletzt editiert von
    #1

    Wenn bei Werten zum Eintrag in die sql-db der Modus "nur bei Änderung speichern" angewählt wird findet

    der Eintrag in die Datenbank nur statt, wenn die Zeitpunkte der Datenänderung exakt identisch mit dem

    Zeitpunkt des Lesens der Daten übereinstimmt. Es wird also nicht auf Änderung des Wertes geprüft, sondern

    ob die Änderung genau jetzt erfolgt ist und nicht schon älter ist.

    Wenn aber Variable durch Scripte geändert werden ist der Zeitstempel der Änderung der Zeitstempel des Programmablaufs.

    Dieser Zeitpunkt kann bis zu 30 Sekunden (dem Abstand des Polling von hm-rega Aufrufen) vom Zeitpunkt

    der Datenänderung unterscheiden. Daher wird der Wert nicht in die sql-db geschrieebn, obwohl er geändert wurde.

    Lösung:

    In /opt/iobroker/node_modules/iobroker.sql/main.js hatte ich in der Funktion pushHistory(id, state) gesehen, dass

    in der Zeile 904 bei geseztem Flag "nur bei Änderung" KEIN Eintrag in die sql-db stattfindet, wenn diese beiden Zeitstempel ungleich sind.

    Also der geänderte Programmcode: (das Original steht noch als Kommentar drin):

            // if (sqlDPs[id].state && settings.changesOnly && (state.ts !== state.lc)) return;
            if (sqlDPs[id].state && settings.changesOnly && ((state.ts - state.lc) >= 30)) return;
    

    Und schon werden alle Daten in die sql-db geschrieben, deren Änderung innerhalb der letzten 30 Sekunden stattgefunden haben.

    Mein Problem hat sich damit gelöst.

    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

    712

    Online

    32.6k

    Benutzer

    82.2k

    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