NEWS
Admin5: Ich kann keine Objekte mehr manuell anlegen
-
@dr-bakterius Ja das weiß ich - das geht halt alles nur in der Übergangszeit zum Kopieren -
Ok Rollen, Units etc. - das kann ich in dem Flow noch modifizieren, das ist aber dann doch ein komplexerer Flow - weil ja nicht jeder Datenpunkt diese Einheiten hat. Da mache ich mich vielleicht morgen dran. Aber heute nicht mehr.
Auch die Raumzuordnungen kann ich anscheinend auslesen, aber wie gesagt ich weiß nicht ob ich das Schreiben kann.
-
Wobei ich habe es gesehen mit dem Export und Import ist doch einfach da ist dann alles dabei!! Dann betreibe ich nicht den Aufwand.
Flow gelöscht - bevor da Unsinn getrieben wird.
@Dr-Bakterius Am Besten Du löscht den kopierten Baum wieder und legst den über Export, Texteditor IDs ersetzen und Import neu an.
-
@mickym Trotzdem Danke für deine Mühe...
Hab' ich wohl überlesen: wie geht 'Export' -> 'Import'?
-
@dr-bakterius @mickym
Guter Ansatz, aber wenn ich das alles so lese, dann glaube ich, dass ich meine 70-80 DPs wahrscheinlich lieber direkt manuell migriere.
Ich befürchte, dass ich mich hinterher sonst mehr an den Nachbesserungen aufreiben würde, als wenn ich das direkt händisch mache.
Auch für die Blocklys ...Dass kann dann ja ruhig auch bis Jahresende dauern ..
Btw. mal eine Frage zu der sandfarbenen Infobox im Web-Frontend unter Info:
Da steht: "Das Speichern von Objekten oder Arrays muss immer als String erfolgen und dies wird von js-controller 3.3 überprüft. In vielen Fällen wurde dies beim Speichern oder Lesen von Werten nicht richtig gemacht und dadurch waren die Benutzer verwirrt."Also unter 'Objekten' verstehe ich auch Datenpunkte, richtig? Muss ich die dann 'nur' künftig immer als 'String' anlegen, oder gilt das auch für meine bisherigen unter javascript.0/[irgendein 'Ordner(=Kanal)'].
Weil wenn das so wäre, würde ich die tatsächlich wohl eher noch alle vor dem Update umstellen -
@pedder007 Also 70 oder Datenpunkte kann man spielend manuell migrieren. Ich habe meine ca. 700 Datenpunkte manuell migriert und gleichzeitig die Struktur leicht angepasst. Aufwand würde ich mal sagen ca. 30 Stunden incl Anpassung aller Scripte. Das einzige was mir noch fehlt ist vis das ist derzeit eher nutzlos Aber ich denke das werde ich vielleicht morgen schaffen.
Nächstes Wochenende könnte ich dann wohl mal das update machen. Wahrscheinlich werde ich aber noch abwarten.
-
@dr-bakterius Na ich habs gerade gesehen - wäre wohl eine Kombination aus beiden gut - da die Werte bei dem Export nicht mit übernommen werden - also dann wohl die Kombi aus beiden - zumindest sollten dann Rollen, Units etc übernommen werden.
- Baum exportieren - Download der JSON Datei
-
Mit Texteditor und suchen ersetzen den alten gegen den neuen Pfad ersetzen
-
Dann die Objekte mit der neuen JSON Datei wieder importieren
Die Werte damit nicht übernommen, sondern die Objekte, da müsstest Du dann doch mein NodeRed Flow oder ein Blockly etc. drüber laufen lassen. Da aber nur die ID ausgetauscht ist - bleiben alle Objekteigenschaften wie Unit etc. erhalten - deswegen war mir das zu viel - das im Flow abzubilden, da man quasi immer überprüfen müsste welche zusätzliche Eigenschaften ein Objekt hat und ich hatte ja nur die Werte übernommen.
Bei den Räumen und Funktionen musst Du alle Punkte unter enums überprüfen und in den Objektdaten die members anpassen.
-
@pedder007 In meinen Augen mussten Objekte immer schon als String abgespeichert werden. Man hat ein Objekt meist mit stringfy in einen JSON String konvertiert und beim Lesen den String wieder in ein Objekt gewandelt. Das macht der js-controller nur automatisch, sodass man Objekte wohl direkt schreiben kann und diese in einen JSON String gewandelt werden.
-
@pedder007 sagt: "Das Speichern von Objekten oder Arrays muss immer als String erfolgen und dies wird von js-controller 3.3 überprüft.
Das betrifft nur die Adapter-Entwickler: Objekte / Arrays müssen per JSON.stringify() als Wert in Datenpunkte geschrieben werden. Das war vorher nicht so.
Der Javascript-Adapter wandelt ab Version 5.2.x automatisch. -
@cash wow, das hört sich fix an , allerdings würden sich 30 Stunden bei mir dann über Wochen hinziehen. Deswegen werde ich das wohl eher nach dem Update machen, wenn es geht, nur diese String-Fragestellung hatte mich irritiert.
... und an VIS muss ich dann natürlich auch ran ...@mickym vielleicht habe ich auch irgendwas falsch verstanden, aber ich habe eigene Objekte (= Datenpunkte) auch z. B. als Zahl oder Boolean definiert!? Ist hier mit dem String etwas anderes gemeint?
@paul53 ich meinte tatsächlich nur eigene Datenpunkte. Ich bin Lichtjahre davon entfernt irgendeinen Adapter selber entwickeln zu können
-
@pedder007 Ok dann haben wir uns - oder Du was falsch verstanden.
Ein iobroker Objekt ist wieder was anderes als ein iobroker State.
Beim javascript Adapter ging es um Javascript Objekte.
Von was @paul53 und ich geschrieben habe ist im state ein Javascript Objekt zu speichern. Das musste man eben in einen JSON String umwandeln und das macht der Adapter nun in der Version 3.3 und neuer automatisch.Die States, die Du meinst sind aus Javascript Sicht skalare Werte (also Boolean, Zahl, String) und keine Objekte.
Das meinte ich mit Objekten: https://www.w3schools.com/js/js_objects.asp
da haben wir aneinander vorbei geredet.
-
@mickym sagte: Das musste man eben in einen JSON String umwandeln und das macht der Adapter nun in der Version 3.3 und neuer automatisch.
Objekte / Arrays musste man früher nicht in ein JSON umwandeln. Das müssen jetzt aber die Adapter-Entwickler tun, weil der js-controller ab Version 3.3 es so erwartet und prüft. Er wandelt allerdings nicht selbst.
-
@paul53 Ok dann hatte ich das falsch verstanden - danke für Richtigstellung bevor ich hier zur Verwirrung beitrage.
-
@mickym @paul53 danke für Eure schnellen Rückmeldungen, aber irgendwie komme ich noch nicht ganz mit, sorry.
Verstanden habe ich jetzt, dass das in erster Linie Adapterentwickler betrifft. Über den Link habe ich verstanden, dass ein Objekt auch aus mehreren DPs bestehen kann, weshalb dann wohl auch von Arrays die Rede ist, soweit ok.
Meine Datenpunkte sind also states(=Variablen?) richtig? .. und sind, so wie ich Eure Antworten interpretier, also mit dem Hinweis in der Infobox gar nicht gemeint, richtig?
Tut mir leid, aber ich habe das letzte Mal vor wahrscheinlich >25 Jahren selber auf Sourcecode-Ebene (Pascal/Basic) ein wenig programmiert und die Begriffe werden nun evtl. etwas anders genutzt? -
@pedder007 Ja Du kannst Deine Datenpunkte, wenn Du sie manuell anlegst unter userdata - als Zahl, Boolean und was auch immer anlegen.
Wenn Du es, wie Du unter geschrieben hast, manuell machst, würde ich es sowie dann lieber mit admin5 machen, da dieser ja bereits eine Typprüfung vornimmt und Dir das vorgibt, was erlaubt ist.
Diese Infobox - ist, wie @paul53 geschrieben nur die Adapterentwickler. Wie gesagt wenn Du manuell mit admin5 anlegst, dann prüft dieser ja - was erlaubt ist und was nicht.
Bei Zahlen, Strings, Booleans hast eh kein Problem:
Hier siehtst ja was möglich ist.
-
@mickym ok super danke
Dann also mal das Update planen und danach via neuem Admin die ganzen aktuellen DPs sukzessive migrieren, inkl. Blockly und VIS Anpassungen.
Naja, der Herbst/Winter wird ja kommen ...
Schönen Abend noch! -
@cash sagte in Admin5: Ich kann keine Objekte mehr manuell anlegen:
@pedder007 Also 70 oder Datenpunkte kann man spielend manuell migrieren. Ich habe meine ca. 700 Datenpunkte manuell migriert und gleichzeitig die Struktur leicht angepasst. Aufwand würde ich mal sagen ca. 30 Stunden incl Anpassung aller Scripte. Das einzige was mir noch fehlt ist vis das ist derzeit eher nutzlos Aber ich denke das werde ich vielleicht morgen schaffen.
Nächstes Wochenende könnte ich dann wohl mal das update machen. Wahrscheinlich werde ich aber noch abwarten.
Ich mache so Massenänderungen immer über Search/Replace direkt in der vis-views.json - Wichtig ist nur, das kein Prozess mehr da währendessen drauf zugreift - also am besten den ioBroker vorher stoppen.
-
@mickym sagte in Admin5: Ich kann keine Objekte mehr manuell anlegen:
ich habs gerade gesehen - wäre wohl eine Kombination aus beiden gut
Wenn du nur nicht dein node-red flow gelöscht hättest...
-
@dr-bakterius Na gut - habe den Flow (muss halt ggf. die Warnmeldungen ignorieren) nochmal soweit verändert, dass nun auch Rollen und Typ etc. mit übernommen werden, wenn man ihn solo laufen ließ. Er übernimmt auch keine Min Werte, da da noch ein Bug in der Node ist, habe ich aber schon ein Issue aufgemacht. Und werden halt nur states übernommen.
Ich dachte Du hättest den Flow ja noch.
Gut so sieht es jetzt aus:
An Quelle und Ziel hat sich nichts geändert man muss halt quelle.0 durch den richtigen Pfad und 0_userdata.0.ziel ebenfalls.
Ansonsten werden mit der function Node nun die Werte aus dem common Objekt gesetzt:
if (msg.common.name !== undefined) msg.stateName = msg.common.name; if (msg.common.role !== undefined) msg.stateRole = msg.common.role; if (msg.common.type !== undefined) msg.stateType = msg.common.type; if (msg.common.unit !== undefined) msg.stateUnit = msg.common.unit; // if (msg.common.min !== undefined) msg.stateMin = msg.common.min; if (msg.common.max !== undefined) msg.stateMax = msg.common.max; return msg;
HIer nochmal der Flow - aber wie gesagt ohne Garantie - werde da jetzt nichts mehr dran machen!
Wenn man die Verbindung zur IoB write value Node unterbricht und den DebugNode aktiviert - hat man quasi ein Trockenlauf indem nichts geschrieben wird, aber man sieht welche States geschrieben werden.
-
@darkiop das funktioniert bei mir nicht, da ich die Gelegenheit genutzt habe und teilweise eine neue Struktur angelegt habe. Bin mittlerweile aber auch soweit durch. Alle normalen Ansichten habe ich aktualisiert. Nur die Einstellungsseiten fehlen noch. Aber die sind nicht so wichtig, da man die eh nur sehr selten ändern muss…
-
@mickym ich nochmal ...
Nachdem die ganze Updaterei nun bei mir auch super durchgelaufen ist, mal noch zwei Fragen zu den Datenpunkten, welche mir durch den Kopf gingen, als ich nun gestern Abend die ersten DPs nach userdata verschoben habe:
- Wo werden die DPs via backitup eigentlich gesichert, oder evtl. gar nicht? Weil dann würde ich dazu nämlich einen Request aufmachen.
- Ich habe bei mir unter javascript auch die Datenpunkt zum Astro Script liegen. Die wurden bei der Implementierung automatisch angelegt, wenn ich mich da richtig erinnere. Die wären dann ja genauso 'gefährdet' wie die eigenen DPs!? - da würde ich dann nämlich mal den Entwickler drauf aufmerksam machen ...