NEWS
Datenpunkt zu anderer Instanz verschieben möglich?
-
Ich habe auch angefangen für mich eine "eigene Struktur" von den eigenen Datenpunkten anzulegen.
Ich mache es jetzt so, das immer wenn ich einen eigenen Datenpunkt in einem Script oder Blockly brauche, dann lasse ich die im jeweiligen Script oder Blockly gleich mit anlegen. Ist zwar einmal etwas Arbeit, aber dann hat man irgendwann seine eigene Ordnung.
-
Wie legt man denn Datenpunkte via Blockly an? Mit Javascript habe ich das schon gesehen, aber noch nicht via Blockly…
-
Wie legt man denn Datenpunkte via Blockly an? Mit Javascript habe ich das schon gesehen, aber noch nicht via Blockly… ` hier habe ich mal ein Beispiel
-
vordiestirnklopp das ist so simpel, dass ich danach nie gesucht hätte. :shock: :oops: Besten Dank!
Und er legt die dann automatisch unterhalb der Instanz des javascript-Adapters an, unterhalb der sich das Skript befindet?
-
vordiestirnklopp das ist so simpel, dass ich danach nie gesucht hätte. :shock: :oops: Besten Dank!
Und er legt die dann automatisch unterhalb der Instanz des javascript-Adapters an, unterhalb der sich das Skript befindet? ` im Feld Name legst Du den Speicherort fest…
-
Importiere mal das Blockly und lasse es wie es ist. Dann probiere es einfach aus und schau Dir den erstellten Datenpunkt an (kannst ja anschließend den Datenpunkt wieder löschen), aber dann siehst Du wie es funktioniert.
-
Ihr habt recht :oops: - werde ich heute Abend mal ausprobieren!
-
Importiere mal das Blockly und lasse es wie es ist. Dann probiere es einfach aus und schau Dir den erstellten Datenpunkt an (kannst ja anschließend den Datenpunkt wieder löschen), aber dann siehst Du wie es funktioniert. `
Ah ja, die Magie steckt im "hier ist JS drin"
Kann man denn Datenpunkte auch eine Ebene höher anlegen?
Das Sctipt baut sich ja seine Struktur in javascript.0.
Habe meinenen eigenen "Baum" auf der gleichen Ebene, würde gerne dort (zustaende.0) anlegen.
Sehe ich code leider nirgends den Hinweis auf javascript.0, denke daher das anlegen geschieht "relativ"?
CU,
padrino
-
Importiere mal das Blockly und lasse es wie es ist. Dann probiere es einfach aus und schau Dir den erstellten Datenpunkt an (kannst ja anschließend den Datenpunkt wieder löschen), aber dann siehst Du wie es funktioniert. `
Ah ja, die Magie steckt im "hier ist JS drin"
Kann man denn Datenpunkte auch eine Ebene höher anlegen?
Das Sctipt baut sich ja seine Struktur in javascript.0.
Habe meinenen eigenen "Baum" auf der gleichen Ebene, würde gerne dort (zustaende.0) anlegen.
Sehe ich code leider nirgends den Hinweis auf javascript.0, denke daher das anlegen geschieht "relativ"?
CU,
padrino `
Ich verstehe nicht so ganz was Du meinst ? Wie soll denn der komplette Pfad aussehen ? Die Datenpunkte sind dann unter javascript.0
Ich habe bei mir so angefangen….
Im Blockly unter Name steht der Pfad. Die Punkte dazwischen bestimmen die Struktur.
-
Ich würde gerne da rein…
-
hm, sorry….da weiß ich nicht wie und ob das geht
-
Ich würde gerne da rein…
In Javascript funktiert es so:
const id = 'zustaende.0.geraet1.kanal1.dp_13'; const obj = { "type": "state", "common": { "name": "Datenpunkt 1.3", "role": "switch", "type": "boolean", "read": true, "write": true, "desc": "per Javascript erzeugt", "def": false }, }; setObject(id, obj, function() { setState(id, obj.common.def, true); // Initialisierung });
-
Ich würde gerne da rein… `
In Javascript funktiert es so:const id = 'zustaende.0.geraet1.kanal1.dp_13'; const obj = { "type": "state", "common": { "name": "Datenpunkt 1.3", "role": "switch", "type": "boolean", "read": true, "write": true, "desc": "per Javascript erzeugt", "def": false }, }; setObject(id, obj, function() { setState(id, obj.common.def, true); // Initialisierung }); ```` `
Hallo paul53,
verstehe ich das richtig das dann der Datenpunkt schon vorhanden sein muss und dann dorthin verschoben wird, oder wird der mit dem Script angelegt ?
-
oder wird der mit dem Script angelegt ?
Ja, wenn nicht vorhanden.
Man kann auch Objekte per Skript kopieren (Dst wird erzeugt, wenn nicht vorhanden).
const idSrc = "Messwerte.0.Solaranlage.Momentanwerte.Leistung_DC_aktuell"; const idDst = "datenpunkte.0.Messwerte.Solaranlage.Momentanwerte.Leistung"; function copyObject() { var obj = getObject(idSrc); setObject(idDst, obj, function() { if(obj.type === 'state') { var init = null; if(obj.common.def == undefined) { if(obj.common.type === 'number') init = 0; if(obj.common.type === 'boolean') init = false; if(obj.common.type === 'string') init = ''; } else init = obj.common.def; setState(idDst, init, true); } }); } copyObject();
Habe ich gerade getestet.
-
Ich würde gerne da rein… `
In Javascript funktiert es so:const id = 'zustaende.0.geraet1.kanal1.dp_13'; const obj = { "type": "state", "common": { "name": "Datenpunkt 1.3", "role": "switch", "type": "boolean", "read": true, "write": true, "desc": "per Javascript erzeugt", "def": false }, }; setObject(id, obj, function() { setState(id, obj.common.def, true); // Initialisierung }); ```` `
Hallo Paul53,
erstmal danke für Deine Beispiele.
Ich habe es heute mal probiert und es funktioniert prima. Wie und ob man das in Blockly verwursten könnte, da fehlt mir leider die Idee. Es wäre schön wenn man immer in einer Form bleiben könnte, dann kann man alles in einem Blockly oder eben in einem Javascript aufbauen.
Jetzt noch eine Frage zum Script.
Die erstellten Datenpunkte lassen sich nicht in den iot Adapter einfügen. Das geht nur wenn ich das hier
"desc": "per Javascript erzeugt",
auskommentiere oder lösche. Wofür ist der Punkt wichtig ?
-
"desc": "per Javascript erzeugt",
auskommentiere oder lösche. Wofür ist der Punkt wichtig ?
common.desc (Beschreibung) ist nicht wichtig.
Wie und ob man das in Blockly verwursten könnte,
Es hat einen berechtigten Grund, dass setObject() nicht in Blockly verfügbar ist, denn damit kann man schnell viel kaputt machen.
-
Kannst Du mir sagen, wieso man in Deinem Blockly den Wert für type nicht (z.B. auf number) ändern kann?
Das Skript endet dann mit einem "wrong type error" und legt nichts an.
CU,
padrino
-
Bei den zugehörigen Blocklies ist das ja kein Problem. Skripte exportieren, Suchen&Ersetzen, Skripte wieder importieren fertig. Habe ich schon für anderes gemacht und geht. Nur bei den Datenpunkten bin ich mir eben nicht sicher… `
Hallo Holger
unter Objekte deinen obersten Datenpunkt/Knoten auswählen, als JSON Datei downloaden, im Texteditor öffnen und dann wie du schon gesagt hast: Suchen&Ersetzen, JSON Datei wieder importieren fertig
Grüße
-
Kannst Du mir sagen, wieso man in Deinem Blockly den Wert für type nicht (z.B. auf number) ändern kann?
Das Skript endet dann mit einem "wrong type error" und legt nichts an.
CU,
padrino `
Dann lösche den Datenpunkt und nehme das hier oder ändere es Dir so ab wie Du es brauchst. Das hier geht z.B. für Number
! ````
<xml xmlns="http://www.w3.org/1999/xhtml"><block type="procedures_defcustomnoreturn" id="ORmhM@AO~Vbt~j|cDEnt" x="-188" y="63"><mutation statements="false"><arg name="ID"></arg>
<arg name="Name"></arg>
<arg name="Einheit"></arg>
<arg name="Min"></arg>
<arg name="Max"></arg></mutation>
<field name="NAME">newNumberDP</field>
<field name="SCRIPT">Y3JlYXRlU3RhdGUoSUQsIHsKICAgIHR5cGU6ICdudW1iZXInLAogICAgbmFtZTogTmFtZSwKICAgIHVuaXQ6IEVpbmhlaXQsCiAgICBtaW46IE1pbiwKICAgIG1heDogTWF4Cn0pOw==</field>
<comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment></block>
<block type="procedures_callcustomnoreturn" id="id:rx-b:Kgpji.O_Wp?*" x="-187" y="137"><mutation name="newNumberDP"><arg name="ID"></arg>
<arg name="Name"></arg>
<arg name="Einheit"></arg>
<arg name="Min"></arg>
<arg name="Max"></arg></mutation>
<value name="ARG0"><block type="text" id="+t4:h)4W#f_wYxYh9+6Q"><field name="TEXT">Eigene_Datenpunkte.OrdnerXX.DatenpunktYYZ</field></block></value>
<value name="ARG1"><block type="text" id="f[rkb0.G[*H9[vT:#n!/"><field name="TEXT">Test2</field></block></value>
<value name="ARG2"><block type="text" id="Cx3/BP4N],HF;V[o,btx"><field name="TEXT">°C</field></block></value>
<value name="ARG3"><block type="text" id="]/9o}32pEVp@:I+pgfCE"><field name="TEXT">-100</field></block></value>
<value name="ARG4"><block type="text" id="l%Zg[G8@hkN{5/CH{Sfm"><field name="TEXT">100</field></block></value></block></xml>Das ist der Inhalt vom Blockly: ![3822_bildschirmfoto_2019-02-02_um_17.47.51.png](/assets/uploads/files/3822_bildschirmfoto_2019-02-02_um_17.47.51.png) ![3822_bildschirmfoto_2019-02-02_um_17.48.02.png](/assets/uploads/files/3822_bildschirmfoto_2019-02-02_um_17.48.02.png) ![3822_bildschirmfoto_2019-02-02_um_17.50.57.png](/assets/uploads/files/3822_bildschirmfoto_2019-02-02_um_17.50.57.png) ![3822_bildschirmfoto_2019-02-02_um_17.51.20.png](/assets/uploads/files/3822_bildschirmfoto_2019-02-02_um_17.51.20.png)
-
Bei den zugehörigen Blocklies ist das ja kein Problem. Skripte exportieren, Suchen&Ersetzen, Skripte wieder importieren fertig. Habe ich schon für anderes gemacht und geht. Nur bei den Datenpunkten bin ich mir eben nicht sicher… `
Hallo Holger
unter Objekte deinen obersten Datenpunkt/Knoten auswählen, als JSON Datei downloaden, im Texteditor öffnen und dann wie du schon gesagt hast: Suchen&Ersetzen, JSON Datei wieder importieren fertig
Grüße `
Danke! Dann werde ich mich das beim nächsten Mal mal trauen :mrgreen: