NEWS
SQL-Adapter: Wert in ts_number statt ts_string
-
Hallo,
ich möchte Daten periodisch mit sendTo(...) an die sql.0 - Instanz in eine Datenbank schreiben. Für die Daten gibt es in ioBroker keine Datenpunkte. Im Prinzip funktioniert dies auch, aber leider werden die Daten nicht in der Tabelle ts_number, sondern in ts_string gespeichert.Hier nützt es dann auch nichts, dass ich in dem Objekt, das ich versende, "type: 0" hinzugefügt habe. Im ioB-Log erscheint sinngemäß die Meldung, dass es keinen Datenpunkt gibt, deshalb der Typ nicht ermittelbar ist und deswegen als Typ STRING verwendet wird.
Ich möchte aber, dass die Werte als ZAHL verwendet werden und somit die Werte in der Tabelle ts_number gespeichert werden.
Hier mal ein Schnipsel vom Objekt, welches ich per sendTo an sql.0 sende:
{id: 'aaa.bbb_kein iob-DP', state: { ts: Date.now(), val: 12, ack: false, from: 'Testsource', rules: false, type: 0 }} sendTo('sql.0', 'storeState', oObj, result => ....)
Die Attribute 'rules' und 'type' bewirken leider gar nichts.
Was muss ich machen, damit die Werte in der Datenbank in der Tabelle ts_number landen?
Vielen Dank für eure Hilfe
Johannes -
@johannesjahn schau mal hier
Ro75.
-
@ro75 said in SQL-Adapter: Wert in ts_number statt ts_string:
schau mal hier
Ro75.
Danke für die Rückmeldung, jedoch sind dies Einstellungen, die man vornehmen kann, wenn man bei einem existierenden Datenpunkt die Protokollierung aktivieren möchte.
Bei meinen Daten gibt es keinen expliziten Datenpunkt im ioBroker. Was nicht da ist, kann ich auch nicht konfigurieren (oder habe ich Deine Antwort einfach nur nicht verstanden?).
-
@johannesjahn also willst du in die Tabelle der Datenbank manuell reinschreiben?
Falls ja, die von dir aufgeführten Tabellen werden über die Historisierung gefüllt - also nix manuell, zumindest nicht in diese.
Ro75.
-
hm,
das läuft für mich unter unnötig kompliziert
also du willst unter Umgehung aller vom Adapter vorgegebenen Einstellungen und Prüfungen in seine Tabellen schreiben und wunderst dich, das das nicht so funktioniert.Was hindert dich den Datenpunkt einfach anzulegen, die Historisierung dafür anzuschalten und ganz normal diesen Datenpunkt zu beschreiben?
Falls die Daten außerhalb von iobroker entstehen, kannst du immer noch mit der simple-api den datenpunkt beschreiben.
-
@oliverio Da fällt mir spontan ein Beispiel ein:
Ich wollte eigene Zeitstempel schreiben. Also in der Zukunft und in der Vergangenheit. Und das geht über die normale Protokollierung mit setState eben nicht (das ist dann immer „jetzt“)
Das klappt per sendTo wunderbar
-
@haus-automatisierung Das stimmt. In manchen Fällen ja, mache das sogar auch mit zwei eigenen Tabellen.
Nur sein konkretes Vorhaben, habe ich noch nicht erkannt.
-
ja mag sein das es anwendungsszenarien gibt,
aber im beschriebenen fall mit
ts: Date.now(),
?