Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Datenpunkt per JavaScript bearbeiten - Ordner

    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

    Datenpunkt per JavaScript bearbeiten - Ordner

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

      @paul53 in der neuen Adminoberfläche unter 0_userdata.0 kann ich gezielt Ordner erstellen - geht das auch per JavaSkript? Wenn es schon keine Objekte sind?

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

        @bananajoe sagte: geht das auch per JavaSkript? Wenn es schon keine Objekte sind?

        Ja, aber Du musst das gesamte Objekt mit type, common, native im Skript erstellen.

        const tempobj = {
           type: 'device',
           common: {
               name: 'Sicherungskasten ESP32 Stromversorgung'
           },
           native: {}
        };
        

        anstelle von Zeilen 13, 14.

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

          @paul53 irgendwie bin ich zu blöd ...

          Hättest du mal ein funktionierendes Mini-Beispiel welches mir einen Datenpunkt( aka Ordner) erzeugt vom Typ Gerät?
          Unterhalb dessen ich dann meine Eigentlichen Datenpunkte anlegen kann?

          Eigentlich würde ich gerne in meinem Skripten

          • einen Ordner unterhalb von 0_userdata.0 anlegen, also das der Typ auch Ordner ist. Und ich es auch im neuen Admin bearbeiten kann. Irgendwie kann ich das bei all meinen Datenpunkten die ich per Skript anlegen nicht. Ich kann dann dort auch nur noch Verzeichnisse anlegen aber z.B. nicht direkt einen Datenpunkt Bei allen die ich mit dem neuen Admin von Hand anlege geht das ohne Probleme
          • Ein Gerät darunter anlegen was auch wirklich vom Typ Gerät ist
          Sokomoto paul53 2 Replies Last reply Reply Quote 0
          • Sokomoto
            Sokomoto @BananaJoe last edited by

            @bananajoe sagte in Datenpunkt per JavaScript bearbeiten - Ordner:

            irgendwie bin ich zu blöd ...

            Das ging mir auch so, bis mir @paul53 den entscheidenden Tipp gab. Allerdings habe ich mir dann die Ordnerstruktur genauer angeschaut und gesehen, dass bei mir die Systemordner von den Adaptern auch ohne Objekt angelegt worden sind. Auf dem Bild sieht man es an den Berechtigungen 644. Irgendwie habe ich die Zugriffsberechtigungen noch nicht begriffen. Vielleicht liegt es daran, weil ich das immer mit einem Filesystem vergleiche.

            1b4db741-8706-4280-bee9-2e1f9c837e54-image.png

            tschuess

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

              @bananajoe sagte: Hättest du mal ein funktionierendes Mini-Beispiel welches mir einen Datenpunkt( aka Ordner) erzeugt vom Typ Gerät?

              const idDevice = '0_userdata.0.Blitzwolf099';
              const idPower = idDevice + '.POWER';
              const obj = {
                  type: 'device',
                  common: {
                      name: 'Sicherungskasten ESP32 Stromversorgung'
                  },
                  native: {}
              };
              const common = {
                  type: 'boolean',
                  role: 'switch',
                  read: true, 
                  write: true, 
                  name: 'Blitzwolf099: AN (=true) oder AUS (=false)'
              };
              
              setObject(idDevice, obj, function() {
                  createState(idPower, false, common);
              });
              
              BananaJoe 1 Reply Last reply Reply Quote 0
              • OliverIO
                OliverIO @BananaJoe last edited by OliverIO

                @bananajoe
                Nicht alles was im Objekt-Tab wie ein Ordner aussieht ist ein eigenes Objekt.
                Manche sind echte eigene Objekte (da wo bei Type was drin steht)
                Dort wo bei typ nix drin steht ist der Ordner nur eine Darstellung eines Ordners

                In dieser Grafik siehst du 2 Datenpunkte, welche unterschiedlich angelegt worden ist (ausgehend von einem Ordner vom Type channel)

                Beispiel
                2de6897e-c6e0-4bd2-bd1e-4ddfffdbabe5-image.png

                javascript.0.test.ordner1.order2.datenpunkt
                

                Test markieren, das plus drücken und dann den folgenden Namen eingeben:
                ordner1.order2.datenpunkt
                und als Type detenpunkt wählen

                javascript.0.test.ordner3.order4.datenpunkt
                

                a) Test markieren, das plus drücken und dann den folgenden Namen eingeben:
                ordner3
                mit Type channel
                b) ordner 3 markieren, das plus drücken und dann den folgenden Namen eingeben:
                ordner4
                mit Type channel
                c) ordner 4 markieren, das plus drücken und dann den folgenden Namen eingeben:
                datenpunkt
                mit Type datenpunkt

                Beides sieht gleich aus, bis auf den Angaben in der Spalte Typ

                Wenn du per Script drauf zugreifen willst, dann musst du das richtige Objekt wählen.
                Im ersten Beispiel gibt es da nur das Objekt mit dem Type Datenpunkt

                Alternativ zu channel geht auch device/Gerät.

                Sokomoto 1 Reply Last reply Reply Quote 1
                • Sokomoto
                  Sokomoto @OliverIO last edited by

                  @oliverio sagte in Datenpunkt per JavaScript bearbeiten - Ordner:

                  Dort wo bei typ nix drin steht ist der Ordner nur eine Darstellung eines Ordners

                  ok...dann kann man ja ruhig, seinen Ordner.Datenpunkt mit createState() anlegen. Das hat nur den Nachteil, der Ordner hat keinen Type zugewiesen. Das einzige negative, man kann den Ordnerinhalt manuell nicht bearbeiten, aber das ist ja dann kein Fehler in den Okjekten der das System beeinträchtigt.

                  Danke für die Info,
                  tschuess

                  OliverIO 1 Reply Last reply Reply Quote 0
                  • OliverIO
                    OliverIO @Sokomoto last edited by

                    @sokomoto
                    ja so lege ich in meinen adaptern alle meine datenpunkte an.
                    es kann aber sein, das das irgendwann nicht mehr erwünscht ist, wenn ich es richtig verstanden habe, es gab da mal eine diskussion darüber.
                    aber aktuell meckert der iobroker noch nicht.

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

                      @oliverio sagte: es kann aber sein, das das irgendwann nicht mehr erwünscht ist

                      Nein, es ist kein Problem, solange Du nicht später weitere Datenpunkte manuell im Admin anlegen möchtest.

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

                        @paul53 ok ok, jetzt habe ich meinen Fehler, die Verschachtelung von von setObject und createState fehlte mir.
                        Folgendes hat jetzt funktioniert: (ich hoffe alles notwendige zusammenkopiert zu haben)

                        // Setup ##########################################################
                        var s_DeviceName = "K58-Buero-Steckdose-oben";
                        var s_state_rootpath = "0_userdata.0.tasmota2.";
                        
                        // Funktionen ##########################################################
                        async function CreateMyStatesAndStartup(){
                            try {
                                DebugWarning("Startup: Erstelle ggf. Datenpunkte ...");
                        
                                await setObjectAsync(s_state_rootpath + s_DeviceName, {
                                        type: 'device',
                                        common: {
                                            name: s_DeviceName
                                        },
                                        native: {}
                                    }, function() {
                                        createState(s_state_rootpath + s_DeviceName + ".POWER", false, {
                                            type: 'boolean',
                                            role: 'switch',
                                            read: true,
                                            write: true,
                                            name: s_DeviceName + ': AN (=true) oder AUS (=false)'
                                        });
                                });
                        }
                            catch(error) {
                                DebugWarning(error);
                                log(error);
                            }
                        }
                        
                        // Startup ###########################################################
                        CreateMyStatesAndStartup();
                        

                        a7f565ad-0be0-4cad-b779-a426f7304734-image.png
                        Und meine anderen Datenpunkte hänge ich einfach zwischen Zeile 23 und 24, richtig?

                        Einzig den tasmota2 habe ich nun einmal vorher von Hand erzeugt, daran arbeite ich.

                        Zum einen weil ich gerade mal alles von javascript.0 auf 0_userdata.0 umstellen will.
                        Zum anderen für mein langfristiges Ziel daraus mal einen Adapter zu bauen und dann soll das natürlich alles ordentlich sein.

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

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        509
                        Online

                        31.8k
                        Users

                        80.0k
                        Topics

                        1.3m
                        Posts

                        4
                        12
                        549
                        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