NEWS
Remanente Speicherung von User Datenpunkte
-
@nordischerjung
Du verwendest falsche Rollen, was allerdings nicht der Grund für fehlende Werte nach Neustart ist. -
@nordischerjung sagte in Remanente Speicherung von User Datenpunkte:
@dslraser Moin, das hier ist es, bei Bedarf aktiviere ich die oberen Zeilen demnestprechend mit neune Namen etc.
//####################---Number---#################### //createUserDataState('Grill.Fleischtemperatur1', {'name':'Fleischtemperatur1', 'type':'number', 'read':true, 'write':true, 'role':'number', 'def':0}); //createUserDataState('Grill.Fleischtemperatur2', {'name':'Fleischtemperatur2', 'type':'number', 'read':true, 'write':true, 'role':'number', 'def':0}); //createUserDataState('Grill.Grilltemperatur', {'name':'Grilltemperatur', 'type':'number', 'read':true, 'write':true, 'role':'number', 'def':0}); //####################---String---#################### //createUserDataState('vis.Stundenplan.Toni.Montag.Stunde1', {'name':'Montag Stunde1', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':'1'}); //createUserDataState('vis.AdapterStatus.restartTrigger', {'name':'Adapter_restartTrigger', 'type':'string', 'read':true, 'write':true, 'role':'string', 'def':'noch leer'}); //####################---Bool---#################### //createUserDataState('Test.State1', {'name':'State1', 'type':'boolean', 'read':true, 'write':true, 'role':'state', 'def':false, "smartName": {"de": "State","smartType": "state"}}); log(new Date()); /** * Creates a state under 0_userdata.0 * Source: https://forum.iobroker.net/topic/26839/ * Thanks to ioBroker forum user "paul53" for the basis of this function. * Version: 0.1 - Mic * @param {string} stateId State ID to be created under '0_userdata.0', like 'LivingRoom.Lights.Sideboard.Brightness' * @param {object} param Object with state details. Template: {'name':'NAME', 'type':'number', 'unit':'UNIT', 'min':MIN, 'max':MAX, 'read':true, 'write':true, 'role':'ROLE', 'def':DEFAULT } * @param {boolean} [warn=false] Optional. Throws warning in log, if state is already existing. Default is false, so no warning in log, if state exists */ function createUserDataState(stateId, param, warn) { if (warn === undefined) warn = false; const WHERE = '0_userdata.0'; stateId = (stateId.startsWith(WHERE)) ? stateId.substring(WHERE.length) : stateId; // remove WHERE from beginning of string stateId = (stateId.startsWith('.')) ? stateId.substring(1) : stateId; // remove first "." const FULL_STATE_ID = (WHERE.endsWith('.') ? WHERE : WHERE + '.') + stateId; // Final state if($(FULL_STATE_ID).length) { if(warn) log('State [' + FULL_STATE_ID + '] is already existing and will no longer be created.', 'warn'); return; } let obj = {}; obj.type = 'state'; obj.common = param; setObject(FULL_STATE_ID, obj, function (err) { if (err) { log('Cannot write object: ' + err); } else { let init = null; if(param.def === undefined) { if(param.type === 'number') init = 0; if(param.type === 'boolean') init = false; if(param.type === 'string') init = 'noch leer'; } else { init = param.def; } setTimeout(function() { setState(FULL_STATE_ID, init, true); }, 1000); // see https://forum.iobroker.net/post/334331 } }); }
Wie @paul53 schon geschrieben hat, deaktiviere das Script wenn es noch irgendwo bei Dir läuft. Die Rollen der DP kannst Du auch nachträglich korrigieren.
Und diese Version von dem Script von Mic ist eine der ersten....Nimm das nicht mehr.* Version: 0.1 - Mic
Edit: Hier ist das letzte Script von Mic, wenn Du es weiter verwenden willst. Da steht übrigens unter 2.:
-
@nordischerjung
Hier ein Vorschlag/Beispiel, welches ich aktuell verwende. (Blockly mit JS Funktion)in der Funktion stehen diese Beispiele
Daraus wird dann das
Kannst Du beliebig erweitern und immer mit laufen lassen. Die Datenpunkte werden durch diese Funktion nicht neu initialisiert oder überschrieben.
EDIT:
Dieser Haken muß im Javascript Adapter drinn sein
-
@dslraser sagte: in der Funktion stehen diese Beispiele
Dann sollte man gleich in Javascript programmieren und nicht mit Blockly.
-
@paul53 sagte in Remanente Speicherung von User Datenpunkte:
@dslraser sagte: in der Funktion stehen diese Beispiele
Dann sollte man gleich in Javascript programmieren und nicht mit Blockly.
Ja, hast ja Recht, wenn man es kann...Ich kann nur etwas Blockly und wenig Javascript, deshalb mache ich es so. Es war/ist ja auch nur ein Vorschlag.
-
@dslraser Ja super danke, das nehme ich dann. Jetzt hab ich auch verstanden was du meinst. Das Script, das ich benutze bis dato, ist immer inaktiv. Es sei denn ich benötige einen D,.dDann habe ich das Script einmal gestartet und wieder gestoppt, nachdem ich den entsprechenden DP oben eingetragen hatte.
Achso, hast du die Funktion auch als Text für mich?
-
@dslraser sagte: Ich kann nur etwas Blockly und wenig Javascript, deshalb mache ich es so.
Was ich sagen wollte: Für eine Javscript-Funktion innerhalb von Blockly ist diese Funktion zu komplex.
-
@nordischerjung sagte in Remanente Speicherung von User Datenpunkte:
Achso, hast du die Funktion auch als Text für mich?
ich habe den Export hier eingefügt. Hatte ich vergessen.
-
@paul53 sagte in Remanente Speicherung von User Datenpunkte:
Was ich sagen wollte: Für eine Javscript-Funktion innerhalb von Blockly ist diese Funktion zu komplex.
Diese Funktion habe ich auch nicht selbst geschrieben, die stammt von hier
Grundsätzlich geht ja auch der Blockly Baustein, aber was mich daran eben bisher stört, das die erstellten Datenpunkte (wenn es neue sind) erst beim zweiten Blocklystart verwendet werden können, wenn denn alles in einem Blockly passieren soll.
-
@dslraser
Ich würde nur eine allgemein gehaltene Javascript-Funktion verwenden, denn den Rest darum kann man in Blockly realisieren. -
-
@nordischerjung sagte: Kann ich die anderen damit überschreiben damit die gespeichert bleiben nach einem neustart?
Werte von Datenpunkten, die nicht in einem Skript überschrieben werden, bleiben bei einem Neustart erhalten.
-
@paul53 Moin,
so aus dem nichts ist es wieder passiert, alle DPs für die beiden Stundenpläne haben "null" stehen. Kein Update, keine Änderung an irgend etwas. Dies DPs werden nirgens in einem Script oder so benutzt. Die DPs sind lediglich in der VIS im Widget "jqui-Input". Was kann das sein?
-
@nordischerjung sagte: Die DPs sind lediglich in der VIS im Widget "jqui-Input". Was kann das sein?
Mit Vis kenne ich mich nicht aus, habe solch ein Verhalten aber noch nicht beobachtet.