NEWS
Wie lege ich den Datenpunkt an?
-
sorry paul aber das raff ich nicht..tue mir immer schwer und muss immer noch nach all den Jahren schwierig nachfragen hier...
-
@Kusselin [sagte]: aber das raff ich
Was raffst du nicht?
Der Kommentar in Zeile 14 beschreibt lediglich die Wirkung der nachfolgenden zwei createState().@Kusselin [sagte]: aber das raff ich
Was raffst du nicht?
Der Kommentar in Zeile 14 beschreibt lediglich die Wirkung der nachfolgenden zwei createState().O.K. ich dachte immer wenn das da steht muss ich es auch anlegen....
@Kusselin erstell dir in 0_userdata einen DP, den kannste dann verwenden...

Wenn ich mir einen datenpunkt da anlege...wie soll der heissen???? udn wie verwende ich den dann?
-
Nee isses nicht..sonst würd ich doch nicht fragen....
O.K. nochmal für mich...im Script ist das hier hinterlegt:// ── Jahres-Datenpunkte anlegen (falls nicht vorhanden) ───────── createState(DP_JAHR_KWH, { name: 'Einspeisung Jahr gesamt', type: 'number', role: 'value.energy', unit: 'kWh', read: true, write: true, def: 0 }); createState(DP_JAHR_EURO, { name: 'Einspeisung Jahr gesamt (€)', type: 'number', role: 'value.money', unit: '€', read: true, write: true, def: 0 });das heisst doch aber das das Script den Datenpunkt schon automatisch anlegt...da muss ich doch nichts mehr in 0_userdata anlegen...oder?
-
@Chrunchy [sagte]: Funktion createState in der JavaScript-Script-Engine (ab js-controller 6/7) als veraltet (deprecated) betrachtet und durch setObjectNotExists oder extendObject ersetzt.
Wie kommst du darauf?
@Kusselin [sagte]: Datenpunkt "'Einspeisung Jahr gesamt'" und "'Einspeisung Jahr gesamt (€)'" anlegen muss
Ändere common.write in false.
Für die Ermittlung von Periodenwerten inkl. Kosten gibt es den Adapter Sourceanalytix.
@Chrunchy [sagte]: Funktion createState in der JavaScript-Script-Engine (ab js-controller 6/7) als veraltet (deprecated) betrachtet und durch setObjectNotExists oder extendObject ersetzt.Wie kommst du darauf?
Hatt das hier (https://forum.iobroker.net/topic/75919/createstate-deprecated) so verstanden.
-
@Chrunchy [sagte]: Funktion createState in der JavaScript-Script-Engine (ab js-controller 6/7) als veraltet (deprecated) betrachtet und durch setObjectNotExists oder extendObject ersetzt.Wie kommst du darauf?
Hatt das hier (https://forum.iobroker.net/topic/75919/createstate-deprecated) so verstanden.
@Chrunchy [sagte]: Funktion createState in der JavaScript-Script-Engine (ab js-controller 6/7) als veraltet (deprecated) betrachtet und durch setObjectNotExists oder extendObject ersetzt.Wie kommst du darauf?
Hatt das hier (https://forum.iobroker.net/topic/75919/createstate-deprecated) so verstanden.
Das eine ist Adapterentwicklung das andere Javascript-Adapter - ich benutze in beiden "extendObject" - für nicht Adapterentwickler ist
createStates()aber besser. -
Ich hoffe hier liest noch jemand mit. Ich versuche mit dem Javascript-Adapter (9.0.18) einen Datenpunkt für ein Objekt anzulegen. Dazu nutze ich 'await createStateAsync(name, initialValue, forceCreation, common, native);'. Das funktioniert auch soweit, dass der DP angelegt wird, aber der Wert mit '(null)' in rot dargestellt wird. Von dem übergebenen initialValue {} keine Spur. Bei allen anderen Datenpunkten funktioniert das so wie erwartet. Kennt das auch jemand und hat dazu eine Lösung?
-
Ich hoffe hier liest noch jemand mit. Ich versuche mit dem Javascript-Adapter (9.0.18) einen Datenpunkt für ein Objekt anzulegen. Dazu nutze ich 'await createStateAsync(name, initialValue, forceCreation, common, native);'. Das funktioniert auch soweit, dass der DP angelegt wird, aber der Wert mit '(null)' in rot dargestellt wird. Von dem übergebenen initialValue {} keine Spur. Bei allen anderen Datenpunkten funktioniert das so wie erwartet. Kennt das auch jemand und hat dazu eine Lösung?
-
Danke @paul53 für den Versuch. Leider bekomme ich weiterhin ein " (null) " in rot. Darüber hinaus sehe ich im Objekt
{ "_id": "0_userdata.0.Test2.OBJ_3", "common": { "name": "0_userdata.0.Test2.OBJ_3", "role": "state", "type": "mixed" }, "native": {}, "type": "state", "from": "system.adapter.javascript.0", "user": "system.user.admin", "ts": 1784048742911, "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }. Auffällig hier der Type 'mixed' obwohl ich 'object' vorgegeben habe. -
Danke @paul53 für den Versuch. Leider bekomme ich weiterhin ein " (null) " in rot. Darüber hinaus sehe ich im Objekt
{ "_id": "0_userdata.0.Test2.OBJ_3", "common": { "name": "0_userdata.0.Test2.OBJ_3", "role": "state", "type": "mixed" }, "native": {}, "type": "state", "from": "system.adapter.javascript.0", "user": "system.user.admin", "ts": 1784048742911, "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }. Auffällig hier der Type 'mixed' obwohl ich 'object' vorgegeben habe.hat perfekt funktioniert.
einmal mit 0 und einmal mit def 1 probiertcreateState("0_userdata.0.forum", { name: 'Einspeisung Jahr gesamt', type: 'number', role: 'value.energy', unit: 'kWh', read: true, write: true, def: 1 });das funktioniert aber nur beim ersten mal falls der datenpunkt noch nicht existiert.
für das kontinuierliche schreiben von datenpunkte musst du setState verwenden
alsosetState("0_userdata.0.forum",3);oder wenn du mit ack=true schreiben wills
setState("0_userdata.0.forum",3,true);ein datenpunkt besteht aus einem object und ein oder mehrere states, die beiden werden von iobroker separat verwaltet.
das siehst du auch in den datenpunkt einstellungen


-
Danke @paul53 für den Versuch. Leider bekomme ich weiterhin ein " (null) " in rot. Darüber hinaus sehe ich im Objekt
{ "_id": "0_userdata.0.Test2.OBJ_3", "common": { "name": "0_userdata.0.Test2.OBJ_3", "role": "state", "type": "mixed" }, "native": {}, "type": "state", "from": "system.adapter.javascript.0", "user": "system.user.admin", "ts": 1784048742911, "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }. Auffällig hier der Type 'mixed' obwohl ich 'object' vorgegeben habe.@Rene55 [sagte]: Type 'mixed' obwohl ich 'object' vorgegeben habe.
Hat du den Initialvalue weggelassen? Falls nicht, wird dieser als common interpretiert und erzeugt einen Standard-DP mit dem Typ "mixed".
EDIT: Ohne Initialvalue erzeugter Datenpunkt:
{ "_id": "0_userdata.0.Test.neues_Objekt", "common": { "name": "neues Objekt", "type": "object", "def": {}, "role": "state" }, "native": {}, "type": "state", "from": "system.adapter.javascript.0", "user": "system.user.admin", "ts": 1784037212795, "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } } -
Langsam komme ich dahinter. Laut Docu hat "await createStateAsync(name, initialValue, forceCreation, common, native);" diese Signatur. Ich habe alle Werte beim Aufruf mitgegeben. Bei allen anderen Typen funktioniert das mit initialValue und forceCreation. Nur eben bei object nicht. Nun habe ich die beiden Parameter weggelassen und jetzt gehts. Kann das nochmal jemand nachvollziehen - bevor ich hier einen Bug melden müsste. Zur Info: ich habe mir vorgeschaltet einen "commonBuider" gebaut der mir für das common das hier aufbereitet : "common = {"name":"Object3","type":"object","role":"state","read":true,"write":true,"def":{}}"
-
Langsam komme ich dahinter. Laut Docu hat "await createStateAsync(name, initialValue, forceCreation, common, native);" diese Signatur. Ich habe alle Werte beim Aufruf mitgegeben. Bei allen anderen Typen funktioniert das mit initialValue und forceCreation. Nur eben bei object nicht. Nun habe ich die beiden Parameter weggelassen und jetzt gehts. Kann das nochmal jemand nachvollziehen - bevor ich hier einen Bug melden müsste. Zur Info: ich habe mir vorgeschaltet einen "commonBuider" gebaut der mir für das common das hier aufbereitet : "common = {"name":"Object3","type":"object","role":"state","read":true,"write":true,"def":{}}"
@Rene55 [sagte]: einen Bug melden müsste.
Da initialValue und forceCreation optional sind, ist es nicht möglich, initialValue als Objekt von einem common-Objekt zu unterscheiden. Will man einen DP vom Typ "object" erzeugen, muss man auf initialValue verzichten und statt dessen mit common.def initialisieren.
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden