NEWS
Blockly Datenpunkte erstellen
-
Hi,
ich programmiere nun seit ca. 1,5 Jahren zwischendurch an meiner ioBroker Instanz herum.
Da das Thema programmieren für mich neu war, habe ich beim Erstellen meiner Blockly Skripte einige ANfänger Fehler gemacht.
z.B. habe ich die Datenpunkte die in den Skripten genutzt werden, vorher manuell erstellt.
Jetzt werde ich meine ioBroker Instanz demnächst wohl neu aufesetzen (müssen) weil meine Datenpunkte und Objekte gelöscht habe und sie nicht mehr importieren kann.
Das will ich zum Anlass nehmen und meine Skripte Absturz sicherer zu machen.Ich möchte in jedem Blockly Skript in dem ein Datenpunkt genutzt wird, diesen vorher erstellen.
Hierzu gibt es ja den System Baustein "Create State".
Leider finde ich in der Doku keine weiteren Infos darüber, wie man dem so erstellen Datenpunkt dann Attribute zuweist.
Ich möchte gerne per Blockly Datenpunkte erzeugen und folgendes mitgeben können:- Typ (bool, num ...)
- Min / Max Wert
- Einheit
Geht das?
-
-
Perfekt. Danke.
Das könnte man evtl. noch in die Doku vom JavaScript Adapter aufnehmen.
Am besten bei GitHub melden, oder? -
@aleks-83 sagte in Blockly Datenpunkte erstellen:
z.B. habe ich die Datenpunkte die in den Skripten genutzt werden, vorher manuell erstellt.
Jetzt werde ich meine ioBroker Instanz demnächst wohl neu aufesetzen (müssen) weil meine Datenpunkte und Objekte gelöscht habe und sie nicht mehr importieren kann.
Das will ich zum Anlass nehmen und meine Skripte Absturz sicherer zu machen.Wichtig ist auch zu bedenken und zu erwähnen, das es am besten ist, eigene Datenpunkte ausserhalb eines Adapterkontextes anzulegen.
Also d.h. am besten unter 0_Userdata.0. (dann wäre das mit dem Javascript Adapter crash auch kein Problem gewesen) -
@Alex-0 sagte in Blockly Datenpunkte erstellen:
Also d.h. am besten unter 0_Userdata.0.
das stimmt, aber das kann der Blockly Baustein nicht. Das geht aber per Script
-
@dslraser sagte in Blockly Datenpunkte erstellen:
@Alex-0 sagte in Blockly Datenpunkte erstellen:
Also d.h. am besten unter 0_Userdata.0.
das stimmt, aber das kann der Blockly Baustein nicht. Das geht aber per Script
@dslraser ja das stimmt auch
ich würde dann halt anstatt diesen Datenpunkt Blockly ein Javascript Blockly - Baustein nutzen.
-
Hierzu gibt es ja den System Baustein "Create State".
ich mache das auch so, ich wollte nur drauf hinweisen, weil es im ersten Beitrag um den Blockly Baustein ging.
-
@dslraser sagte in Blockly Datenpunkte erstellen:
Hierzu gibt es ja den System Baustein "Create State".
ich mache das auch so, ich wollte nur drauf hinweisen, weil es im ersten Beitrag um den Blockly Baustein ging.
@dslraser
gut, dann sind wir uns ja einig -
Danke euch für die hilfreichen Tipps!
@Alex-0
Die Funktion "Datenpunkte_anlegen" ist eine globale Javascript Funktion?
Wie ich die erstelle weiß ich leider (noch) nicht.Die Datenpunkte unter Javascript.0 zu "lagern" ist ja eigentlich nicht mein Grundproblem.
Wenn der Javascript Adapter abstürzt oder ein Problem hat und die Datenpunkte dann mal weg sind, werden sie ja nach der Reparatur des Javascript Adapters wieder angelegt.
Ich verwende diese Datenpunkte auch ausschließlich im Javascript Adapter. Das wäre für mich von daher kein Problem. -
@aleks-83 sagte in Blockly Datenpunkte erstellen:
Danke euch für die hilfreichen Tipps!
@Alex-0
Die Funktion "Datenpunkte_anlegen" ist eine globale Javascript Funktion?
Wie ich die erstelle weiß ich leider (noch) nicht.nein, gibt es nicht.
nimm als Vorlage hier dieses Script: https://forum.iobroker.net/topic/26839/vorlage-skript-erstellen-von-user-datenpunkten/64
Bzw. besser gleich von hier: https://github.com/Mic-M/iobroker.createUserStates
Einfach kopieren und hier in den Blockly einfügen:Die Funktion heisst bei mir dann "Datenpunkte_anlegen" wie man hier im Screenshot auch erkennt.
Das Script ist funktonal aufgebaut und kannst das überall, wo Du datenpunkte benötigst nutzen.
oben im Script bei der Variablendeklaration kannst Du dann beliebig viele Datenpunkte anlegen lassen:let statesToCreate = [ ['Datenpunkt_1', {'name':Datenpunkt 1', 'type':'boolean', 'read':true, 'write':true, 'role':'switch' }], ['Datenpunkt_2', {'name':Datenpunkt 2', 'type':'boolean', 'read':true, 'write':true, 'role':'button' }], ['Datenpunkt_3', {'name':Datenpunkt 3', 'type':'text', 'read':true, 'write':true, 'role':'mixed' }], ];
der unter teil des Scipts bleibt immer gleich.
-
@Alex-0 sagte:
['Datenpunkt_3', {'name':Datenpunkt 3', 'type':'text', 'read':true, 'write':true, 'role':'mixed' }],
type:'text' und role:'mixed' sind unzulässig.
-
@Alex-0
Super, Danke.
Das werde ich dann doch eher umsetzen. Dann lege ich alle meine eigenen DP in userdata.
Scheint ja so auch gewünscht und empfohlen zu werden von den ioBroker Programmierern.Bei dem GitHub Skript verstehe ich allerdings nicht wo ich den Pfad und die Datenpunkte deklariere.
Bzw. wo schreibe ich das "statesToCreate " hin?let statesToCreate = [ ['Test.Test1', {'name':'Test 1', 'type':'string', 'read':true, 'write':true, 'role':'info', 'def':'Hello' }], ... ];
Wenn ich das Javascript Skript dann im Ordner "global" ablege, kann ich aber in keinem Blockly diese Funktion aufrufen.
Geht das dann nur aus reinen Javascript Skripten?@paul53 sagte in Blockly Datenpunkte erstellen:
type:'text' und role:'mixed' sind unzulässig.
Steht denn irgendwo was (un)zulässig ist?
Für erfahrene Programmierer ist downs evtl selbstverständlich, aber für Menschen wie mich leider gar nicht -
@aleks-83 sagte:
Steht denn irgendwo was (un)zulässig ist?
Siehe Doku Kernkonzept unter "Attribute für bestimmte Objekttypen" und Rollen von Datenpunkten.
-
Hallo zusammen
wie kann ich eigentlich den Datenpunkt sofort im History.0 Adapter aktivieren?let statesToCreate = [ ['Test.Test1', {'name':'Test 1', 'type':'string', 'read':true, 'write':true, 'role':'info', 'def':'Hello' }], ... ];
(
Vielen Dank
-
@Eisbaer721 sagte:
sofort im History.0 Adapter aktivieren?
So sieht ein Eintrag für history.0 unter common aus:
"custom": { "history.0": { "enabled": true, "changesOnly": true, "debounce": "1000", "maxLength": "10", "retention": "259200", "changesRelogInterval": 0, "changesMinDelta": 0, "aliasId": "" }