Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Admin5: Ich kann keine Objekte mehr manuell anlegen

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Admin5: Ich kann keine Objekte mehr manuell anlegen

    This topic has been deleted. Only users with topic management privileges can see it.
    • paul53
      paul53 @Pedder007 last edited by paul53

      @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.

      1 Reply Last reply Reply Quote 1
      • Pedder007
        Pedder007 @cash last edited by Pedder007

        @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 😉

        mickym 1 Reply Last reply Reply Quote 0
        • mickym
          mickym Most Active @Pedder007 last edited by mickym

          @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.

          paul53 1 Reply Last reply Reply Quote 1
          • paul53
            paul53 @mickym last edited by

            @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.

            mickym 1 Reply Last reply Reply Quote 1
            • mickym
              mickym Most Active @paul53 last edited by

              @paul53 Ok dann hatte ich das falsch verstanden - danke für Richtigstellung bevor ich hier zur Verwirrung beitrage.

              Pedder007 1 Reply Last reply Reply Quote 1
              • Pedder007
                Pedder007 @mickym last edited by Pedder007

                @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?

                mickym 1 Reply Last reply Reply Quote 0
                • mickym
                  mickym Most Active @Pedder007 last edited by mickym

                  @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:

                  0ccf58aa-6c54-42d2-a4e3-bfe57c9d8820-image.png

                  Hier siehtst ja was möglich ist.

                  Pedder007 2 Replies Last reply Reply Quote 1
                  • Pedder007
                    Pedder007 @mickym last edited by

                    @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!

                    1 Reply Last reply Reply Quote 0
                    • D
                      darkiop Most Active @cash last edited by

                      @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.

                      cash 1 Reply Last reply Reply Quote 0
                      • Dr. Bakterius
                        Dr. Bakterius Most Active @mickym last edited by

                        @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... 🤔

                        mickym 1 Reply Last reply Reply Quote 0
                        • mickym
                          mickym Most Active @Dr. Bakterius last edited by mickym

                          @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:

                          58748b4a-d83d-4419-84d5-230e81d4899d-image.png

                          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!

                          [
                             {
                                 "id": "be83eaac.c5ea58",
                                 "type": "inject",
                                 "z": "da12ce6.5c3523",
                                 "name": "",
                                 "props": [
                                     {
                                         "p": "payload"
                                     }
                                 ],
                                 "repeat": "",
                                 "crontab": "",
                                 "once": false,
                                 "onceDelay": 0.1,
                                 "topic": "",
                                 "payload": "true",
                                 "payloadType": "bool",
                                 "x": 310,
                                 "y": 200,
                                 "wires": [
                                     [
                                         "42243161.51f15"
                                     ]
                                 ]
                             },
                             {
                                 "id": "42243161.51f15",
                                 "type": "ioBroker list",
                                 "z": "da12ce6.5c3523",
                                 "name": "Quelle",
                                 "topic": "quelle.0.*",
                                 "objType": "",
                                 "regex": "",
                                 "asArray": "false",
                                 "onlyIDs": "false",
                                 "withValues": "true",
                                 "x": 450,
                                 "y": 200,
                                 "wires": [
                                     [
                                         "8f8a1529.424f58"
                                     ]
                                 ]
                             },
                             {
                                 "id": "8f8a1529.424f58",
                                 "type": "change",
                                 "z": "da12ce6.5c3523",
                                 "name": "Ziel",
                                 "rules": [
                                     {
                                         "t": "change",
                                         "p": "topic",
                                         "pt": "msg",
                                         "from": "quelle.0",
                                         "fromt": "str",
                                         "to": "0_userdata.0.ziel",
                                         "tot": "str"
                                     },
                                     {
                                         "t": "set",
                                         "p": "common",
                                         "pt": "msg",
                                         "to": "payload.common",
                                         "tot": "msg"
                                     },
                                     {
                                         "t": "set",
                                         "p": "stateReadonly",
                                         "pt": "msg",
                                         "to": "$not(payload.common.write)\t",
                                         "tot": "jsonata"
                                     },
                                     {
                                         "t": "set",
                                         "p": "payload",
                                         "pt": "msg",
                                         "to": "payload.val",
                                         "tot": "msg"
                                     }
                                 ],
                                 "action": "",
                                 "property": "",
                                 "from": "",
                                 "to": "",
                                 "reg": false,
                                 "x": 610,
                                 "y": 200,
                                 "wires": [
                                     [
                                         "e5bdedf0.19083"
                                     ]
                                 ]
                             },
                             {
                                 "id": "4eea8557.a14b8c",
                                 "type": "ioBroker out",
                                 "z": "da12ce6.5c3523",
                                 "name": "",
                                 "topic": "",
                                 "ack": "true",
                                 "autoCreate": "true",
                                 "stateName": "",
                                 "role": "",
                                 "payloadType": "",
                                 "readonly": "false",
                                 "stateUnit": "",
                                 "stateMin": "",
                                 "stateMax": "",
                                 "x": 1180,
                                 "y": 200,
                                 "wires": []
                             },
                             {
                                 "id": "b561d2ad.bfd1f",
                                 "type": "debug",
                                 "z": "da12ce6.5c3523",
                                 "name": "",
                                 "active": false,
                                 "tosidebar": true,
                                 "console": false,
                                 "tostatus": false,
                                 "complete": "true",
                                 "targetType": "full",
                                 "statusVal": "",
                                 "statusType": "auto",
                                 "x": 1170,
                                 "y": 140,
                                 "wires": []
                             },
                             {
                                 "id": "e5bdedf0.19083",
                                 "type": "function",
                                 "z": "da12ce6.5c3523",
                                 "name": "",
                                 "func": "if (msg.common.name !== undefined) msg.stateName = msg.common.name;\nif (msg.common.role !== undefined) msg.stateRole = msg.common.role;\nif (msg.common.type !== undefined) msg.stateType = msg.common.type;\nif (msg.common.unit !== undefined) msg.stateUnit = msg.common.unit;\n// if (msg.common.min !== undefined) msg.stateMin = msg.common.min;\nif (msg.common.max !== undefined) msg.stateMax = msg.common.max;\nreturn msg;",
                                 "outputs": 1,
                                 "noerr": 0,
                                 "initialize": "",
                                 "finalize": "",
                                 "libs": [],
                                 "x": 760,
                                 "y": 200,
                                 "wires": [
                                     [
                                         "672bafba.c28dc"
                                     ]
                                 ]
                             },
                             {
                                 "id": "672bafba.c28dc",
                                 "type": "change",
                                 "z": "da12ce6.5c3523",
                                 "name": "",
                                 "rules": [
                                     {
                                         "t": "delete",
                                         "p": "common",
                                         "pt": "msg"
                                     }
                                 ],
                                 "action": "",
                                 "property": "",
                                 "from": "",
                                 "to": "",
                                 "reg": false,
                                 "x": 960,
                                 "y": 200,
                                 "wires": [
                                     [
                                         "4eea8557.a14b8c",
                                         "b561d2ad.bfd1f"
                                     ]
                                 ]
                             }
                          ]
                          

                          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.

                          1 Reply Last reply Reply Quote 1
                          • cash
                            cash Most Active @darkiop last edited by

                            @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…

                            1 Reply Last reply Reply Quote 1
                            • Pedder007
                              Pedder007 @mickym last edited by

                              @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:

                              1. Wo werden die DPs via backitup eigentlich gesichert, oder evtl. gar nicht? Weil dann würde ich dazu nämlich einen Request aufmachen.
                              2. 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 ...
                              paul53 mickym 2 Replies Last reply Reply Quote 0
                              • paul53
                                paul53 @Pedder007 last edited by

                                @pedder007 sagte: Die wären dann ja genauso 'gefährdet' wie die eigenen DPs!?

                                Datenpunkte unter "javascript.N" sind nicht gefährdet.

                                Pedder007 1 Reply Last reply Reply Quote 0
                                • Pedder007
                                  Pedder007 @paul53 last edited by

                                  @paul53 ja ich weiß, wurde ja mehrfach gesagt 😉
                                  Deswegen 'gefährdet' ja auch in Hochkommas. Aber es wurde ja auch schon mehrfach erwähnt, dass da irgendwann in der Zukunft bei irgendeiner neuen Java Version da evtl. mal was passieren könnte - evtl. sehe ich das ja auch zu schwarz ...

                                  Mir fällt jetzt gerade aber noch eine Frage ein:

                                  Im neuen Admin scheint es keine Möglichkeit mehr zu geben, die Eigenschaften von DPs (z. B. Zahl: min/max oder auch Unit) via einer entsprechenden Maske zu bearbeiten.
                                  Das geht, für non-Developer wie mich wohl nur noch recht kryptisch über die Bearbeitung und dann Objektdaten. Was dann entsprechend fehlerbehaftet ist.

                                  Oder habe ich die Möglichkeit einfach bisher nicht gefunden?

                                  Homoran 1 Reply Last reply Reply Quote 0
                                  • F
                                    fastfoot @liv-in-sky last edited by

                                    @liv-in-sky sagte in Admin5: Ich kann keine Objekte mehr manuell anlegen:

                                    danke für's weiterverfolgen - vielleicht sollten wir neuen thread aufmachen ?

                                    Das Skript ist jetzt soweit fertig und steht hier bereit. Als kleiner Nebeneffekt listet es auch einfach nur alle Skripte auf. Ich hoffe es macht Dir und anderen die Migration etwas leichter. Vorschläge für Verbesserungen sind natürlich willkommen.

                                    1 Reply Last reply Reply Quote 0
                                    • mickym
                                      mickym Most Active @Pedder007 last edited by

                                      @pedder007 sagte in Admin5: Ich kann keine Objekte mehr manuell anlegen:

                                      1. Wo werden die DPs via backitup eigentlich gesichert, oder evtl. gar nicht? Weil dann würde ich dazu nämlich einen Request aufmachen.

                                      Mal unabhängig davon, was @paul53 gesagt hat - der steckt da ja viel tiefer in der Materie als ich, werden meines Wissens immer alle Objekte und Zustände in dem Backup gespeichert, egal wo sie sich im Baum befinden. Die Objekte und Zustände liegen ja nicht wirklich in der vom admin dargestellten Struktur vor, sondern sind in 2 Dateien gespeichert.

                                      Objekte in der objects.json und die Zustände in der states.json

                                      ff96a8a9-4ed9-4f18-b999-27f795c6c882-image.png

                                      Diese beiden Dateien sind in meinen Augen Bestandteil des Backups und enthalten alle Datenpunkte und Objekte des Systems.

                                      Gefahr besteht eher, dass Adapter im Rahmen eines Updates Datenstrukturen in ihrem Namespace was Löschen. Aber hier wissen die Entwickler besser Bescheid.

                                      Ansonsten gebe ich Dir Recht - dass man in der Standardansicht nicht mehr Units und andere Eigenschaften des common Objektes im Objekt angeben kann, ist in meinen Augen ein Manko.
                                      Wenn man diesen Komfort nicht im Admin4 gehabt hätte, würde man sich wahrscheinlich über die Komforteinbußen in der weiterentwickelten Version nicht wundern.

                                      Homoran Pedder007 apollon77 3 Replies Last reply Reply Quote 1
                                      • Homoran
                                        Homoran Global Moderator Administrators @Pedder007 last edited by

                                        @pedder007 sagte in Admin5: Ich kann keine Objekte mehr manuell anlegen:

                                        Aber es wurde ja auch schon mehrfach erwähnt, dass da irgendwann in der Zukunft bei irgendeiner neuen Java Version da evtl. mal was passieren könnte

                                        das wurde von einigen Usern behauptet, stimmt aber nicht

                                        1 Reply Last reply Reply Quote 0
                                        • Homoran
                                          Homoran Global Moderator Administrators @mickym last edited by

                                          @mickym sagte in Admin5: Ich kann keine Objekte mehr manuell anlegen:

                                          Diese beiden Dateien sind in meinen Augen Bestandteil des Backups und enthalten alle Datenpunkte und Objekte des Systems.

                                          so ist es

                                          liv-in-sky 1 Reply Last reply Reply Quote 2
                                          • Pedder007
                                            Pedder007 @mickym last edited by

                                            @mickym super danke, hab's gefunden und bin dann beruhigt 🙂

                                            Das mit den DP Eigenschaften ist echt schade, evtl. wirds ja noch nachgeschoben. So Leute wie ich sind dann jetzt dort auf umständliches Copy-Paste angewiesen, da mir sonst garantiert immer Syntaxfehler unterlaufen würden ...

                                            @Homoran ok, dann kann ich ja meine DP-Migration eigentlich erst einmal einstellen. Ich wundere mich dann aber tatsächlich etwas darüber, wie viel Aufwand da teilweise mit hunderten von DPs getrieben wird..., zzgl. Blockly/Script- und VIS-Anpassungen
                                            Aber evtl. gibts da ja noch andere Gründe, die sich mir nicht so ganz erschließen.

                                            Der Punkt sollte auch definitiv keine neue Debatte darüber auslösen 😉

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate
                                            FAQ Cloud / IOT
                                            HowTo: Node.js-Update
                                            HowTo: Backup/Restore
                                            Downloads
                                            BLOG

                                            823
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            36
                                            466
                                            70124
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo