NEWS
Admin5: Ich kann keine Objekte mehr manuell anlegen
-
@fastfoot Habe gerade mal den Quellcode der iobroker-out Node geschaut, die scheint alles mit setState zu schreiben:
adapter.setState(id, {val, ack}, callback);
Wobei das wahrscheinlich egal ist, weil man einfach die id übergeben hat - egal ob bei setState oder setObject - obwohl das ja dann mit adapter.setState auch eine eigene Funktion im Adapter sein könnte. Ich steck da nicht so tief drin. - Muss ich ja auch nicht - bin ja nur blöder Anwender.
-
@mickym ich bin da ganz bei dir,. den Programmieraufwand hätte jeder anstatt 'nur' der iobroker. Ob das aber wirklich so einfach auf Systemseite umgesetzt werden kann ist eine andere Sache, die ich nicht beurteilen kann. Ich könnte mir vorstellen dass setObject() an sehr vielen Stellen verwendet wird wo es nicht um das (Erst-)Erstellen eines Objektes geht, eine Dauerprüfung auf valide Strukturen würde dann das System erheblich belasten. Die momentane Handhabung scheint mir jedenfalls inkonsequent zu sein.
-
@mickym nee, da müsste mehr sein, ein reines setState() ohne existierendes Objekt wirft einen Fehler und erstellt den state nicht, zumindest im JS-Adapter
-
@mickym Ein Objekt definiert das da was ist und die zugehörigen Metadaten (Typ, min/max und so). Hat aber keinen Wert! Ein State ist der aktuelle Wert des Objekts. Wenn das Objekt mal existiert brauchen nur noch States geschrieben zu werden um die Werte zu ändern
-
@fastfoot Jo
adapter.setObject(id, data, _ => adapter.setState(id, val, () => callback && callback(true)));
-
@apollon77 Das Prinzip hab ich ja verstanden - ich versuche ja nur gerade zu überlegen, wie ein einfache Lösung aussehen könnte. ;), sodass man mit einer "id" einfach weiterarbeiten kann - auch wenn zur Erstellung des Objektes eben nicht alle Hierarchieebenen vorhanden sind.
Und das ist meines Erachtens ja kein Problem von NodeRed oder anderen Logikmaschinen, ich kann ja auch in dem jetzigen Admin einen Datenpunkt mit xx.yy.zz erstellen und yy ist dann automatisch ein nicht existierendes Objekt.
-
@mickym Am Ende müssen die relevanten Adapterentwickler das angehen ... wie node-red und so ... und der controller muss unterstützen. Aber das führt hier etwas zu weit
-
@apollon77 sagte in Admin5: Ich kann keine Objekte mehr manuell anlegen:
@mickym Am Ende müssen die relevanten Adapterentwickler das angehen ... wie node-red und so ... und der controller muss unterstützen. Aber das führt hier etwas zu weit
Na wie gesagt auch der jetzige Admin 5 lässt noch über xxx.yyy.zzz bei der Erstellung eines Datenpunktes "nicht existierende Objekte zu" - deswegen war ich der Meinung es liegt vielleicht nicht nur am einzelnen Adapter, sondern man kann das im System irgendwie lösen. Aber OK führt wohl zu weit.
Mit Umgehungslösungen und dem Skript von @fastfoot kann man sich ja behelfen, zumindest solange nicht weiter eingeschränkt wird!
-
Grundsätzlich muss man mal überlegen warum das so sein muss. Welches zukünftige geplante Feature wird nicht funktionieren, wenn die Objektstruktur nicht bereinigt wird.
oder möchte man nur bereinigen, weil das in einem ursprünglichen Konzept so mal aufgeschrieben wurde?
Ich selbst verwende in meinen Adaptern fast nur Objekte, mit der Bezeichnung von xxx.yyy.zzz. Das ist für die Erstellung und Verwaltung viel einfacher und dennoch hat man in der Visualisierung die Unterteilung in eine "Pseudo-Ordner-Struktur"
Wenn ich jetzt dran denke, das ich für jede Ebene ein separates Objekt anlegen muss, asynchron darauf warten muss, bis es angelegt wurde, dann die nächste Ebene anlegen kann und so fort, dann wird das mit den heutigen mitteln schon aufwändiger.
Das muss ich dann bei jedem Adapterstart auch noch überprüfen (gibt es eigentlich die Funktion: gib mir alle Objekte unterhalb eines Astes?).
Auch hier muss ich warten, bis eine Ebene abgefragt wurde und kann dann erst die nächste Ebene abfragen. -
@oliverio Bitte das Thema "Adapter-Entwicklung" hier nicht auch noch reinmischen ... lasst das bitte in den Entwickler Foren bzw Channeln klären.
-
@liv-in-sky sagte in Admin5: Ich kann keine Objekte mehr manuell anlegen:
ein weiteres puzzleteil
der Datenpunktkonverter für Skripte ist jetzt im Pre-Alpha. Läuft schon perfekt(???) für Blocklys aber so kann ich ihn noch nicht freigeben. Ich suche noch ein paar fancy Skripte(Blockly only) um mehr zu testen, am Besten mit zu konvertierenden DP in JS-Funktionen...
- Schreiben als XML oder js/ts ins Dateisystem
- Direktes Ändern im System, wahlweise mit neuer ID(.chg)
- Filtern nach Ordner oder Skript möglich
Braucht das Wer?
-
@apollon77 sagte in Admin5: Ich kann keine Objekte mehr manuell anlegen:
@oliverio Bitte das Thema "Adapter-Entwicklung" hier nicht auch noch reinmischen ... lasst das bitte in den Entwickler Foren bzw Channeln klären.
Hm, ist das anlegen von Datenpunkten nicht ein generelles Thema um das es hier in diesem Thread geht?
Gelten den für Adapter und manuelle Anlage von Datenpunkten unterschiedliche Regeln?Ich lese hier nur, das es hier auch um die Anlage von verschiedenen Objekten (channel, devices, directory) geht, um eine gewisse (gestaffelte) Struktur in vis zu erzeugen, gegenüber einer flachen Liste von Datenpunkten, die im Namen ein oder mehrere Punkte enthalten.
-
@oliverio sagte in Admin5: Ich kann keine Objekte mehr manuell anlegen:
Hm, ist das anlegen von Datenpunkten nicht ein generelles Thema um das es hier in diesem Thread geht?
Jain ... in dem Thread geht es um "Hilfe ich kann per Admin5 keine Objekt mehr manuell anlegen"
Die ganze andere Diskussion ist quasi Off Topic reingerutscht.
-
@fastfoot danke für's weiterverfolgen - vielleicht sollten wir neuen thread aufmachen ?
ich habe so gut wie keine scripte, die in blockly datenpunkte anlegen, damit du das testen kannst - aber das hier habe ich gefunden
- legt dp unter javascript an
- ist eine stoppuhr
- wenn start unter steuerung gedrückt wird - beginnt stoppuhr
- anschliessend stopp drücken
- anschliessend reset um wieder bei 0 zu beginnen
- die dp werden mit einer js-function angelegt - kannst du ja disabeln, falls das stört
hoffe, dass hilft weiter
-
@fastfoot sagte in Admin5: Ich kann keine Objekte mehr manuell anlegen:
folder
das skript einfach kopieren, als neue javaskript instanz anlegen un dann nur auf play (starten) drücken?
-
@rebel85 sagte in Admin5: Ich kann keine Objekte mehr manuell anlegen:
@fastfoot sagte in Admin5: Ich kann keine Objekte mehr manuell anlegen:
folder
das skript einfach kopieren, als neue javaskript instanz anlegen un dann nur auf play (starten) drücken?
Zuerst ein Backup, dann die Anleitung beachten und dann Play. Was meinst du mit als neue javaskript instanz anlegen?
-
@fastfoot
backup ist erstellt
Anleitung bzgl. wohin die ordner verschoben werden müssen?naja irgendwo muss ich ja das skript speichern um es auszuführen oder?
also nur noch play richtig?
-
@rebel85 Das Skript ist nicht dazu da, um Ordner zu verschieben, sondern Ordner aus den fehlenden Hierachien zu machen (Stiftsymbol fehlt). Zum Ordner kopieren kannst meinen NodeRed Flow nutzen.
-
@mickym
hi,
ich habe das problem und wurde nur hier her verlinkthttps://forum.iobroker.net/topic/46813/admin-v5-jetzt-im-stable/274?_=1628841946709
bei 2 DP hat das hier geholfen
https://forum.iobroker.net/assets/uploads/files/1628840963629-41971cb6-0009-4e1c-9332-58ca260719fc-grafik.pngund mir ist hier das skript aufgefallen und dachte okay das hilft mir bei meinem problem.
stifte habe ich bei jeden ordner
mein problem ist der Zu-Hause Ordner das von dort aus nichts mehr bei IOT hinzufügen kann.
ich aber schon eine einheitliche passende ordner struktur hätte ohne alles neu machen zu müssen
sind nicht nur skripte und IOT verknüpfungen sondern auch Iqontrol verlinkungen -
@rebel85 sagte in Admin5: Ich kann keine Objekte mehr manuell anlegen:
mein problem ist der Zu-Hause Ordner
wie @mickym schon sagte kann dir sein Flow dabei helfen, die Datenpunkte an einen anderen Platz(0_userdata.0) zu kopieren. Eine andere Möglichkeit ist der Export als JSON Datei, im Editor suchen/ersetzen und dann reimport. Zum Anpassen der Skripte schreibe ich gerade ein Skript, mit iot und iqontrol kenne ich mich nicht aus