Hallo zusammen,
ich habe ein Problem mit der Kombination von Javascript und SQL-Adapter.
Datenpunkte, die ich in Blockly generiere, werden mir zwar im Objekte-Baum angezeigt und auch wie im Script programmiert aktualisiert, allerdings lassen sie sich nicht im SQL-Adapter loggen.
Ich habe das ganze nun in zwei fällen beobachtet, im log finde ich folgendes:
sql.0 2021-01-08 10:41:42.377 info (14389) No Data
sql.0 2021-01-08 10:41:42.376 warn (14389) Cannot get index of "javascript.0.Teichpumpe.Energie": id not found
bzw.
sql.0 2021-01-08 09:40:10.978 warn (14389) Cannot get index of "javascript.0.Teichpumpe.Energie": Error: ER_NO_DEFAULT_FOR_FIELD: Field 'id' doesn't have a default value
sql.0 2021-01-08 09:40:10.977 error (14389) Cannot insert INSERT INTO `ioBroker`.datapoints (name, type) VALUES('javascript.0.Teichpumpe.Energie', 0);: Error: ER_NO_DEFAULT_FOR_FIELD: Field 'id' doesn't have a default value
Hat jemand eine Idee diebzgl.?
Das Script sieht so aus:
var Teichpumpe;
createState("Teichpumpe.Strom", 0, async function () {
});
createState("Teichpumpe.Leistung", 0, async function () {
});
createState("Teichpumpe.Energie", 0, async function () {
});
on({id: 'mqtt.0.tele.teichpumpe.SENSOR', change: "any"}, async function (obj) {
var value = obj.state.val;
var oldValue = obj.oldState.val;
Teichpumpe = (function () { try {return JSON.parse(getState("mqtt.0.tele.teichpumpe.SENSOR").val);} catch(e) {return {};}})();
setState("javascript.0.Teichpumpe.Strom"/*Teichpumpe.Strom*/, getAttr(Teichpumpe, 'ENERGY.Current'));
setState("javascript.0.Teichpumpe.Leistung"/*Teichpumpe.Leistung*/, getAttr(Teichpumpe, 'ENERGY.Power'));
setState("javascript.0.Teichpumpe.Energie"/*Teichpumpe.Energie*/, getAttr(Teichpumpe, 'ENERGY.Today'));
});
Meine Konfiguration ist wie folgt, die Datenbank ist eine MariaDB10 auf Synology.
EDIT: Das Problem liegt offenbar nicht bei den durch den JS-Adapter generierten Zuständen. Ich habe zwischenzeitlich den device-reminder installiert und auch diese Zustände kann ich nicht in SQL speichern. Mit allen alten Zuständen gibt es keine Probleme.