Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
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
    17
    1
    2.8k

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.4k

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

Scheduled Pinned Locked Moved Error/Bug
1 Posts 1 Posters 639 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • H Offline
    H Offline
    harvey637
    wrote on last edited by
    #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 Reply Last reply
    0
    Reply
    • Reply as topic
    Log in to reply
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes


    Support us

    ioBroker
    Community Adapters
    Donate

    429

    Online

    32.6k

    Users

    82.3k

    Topics

    1.3m

    Posts
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
    ioBroker Community 2014-2025
    logo
    • Login

    • Don't have an account? Register

    • Login or register to search.
    • First post
      Last post
    0
    • Home
    • Recent
    • Tags
    • Unread 0
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe