Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Entwicklung
    4. Technische Fragen zur Adapterentwicklung

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Technische Fragen zur Adapterentwicklung

    This topic has been deleted. Only users with topic management privileges can see it.
    • Peoples
      Peoples @Jey Cee last edited by

      @jey-cee
      Bei ical meine ich die io-package.json dort steht ab Zeile 194 instance Objects und wie ich es interpretiert habe werden dort die Objekte von Adapter.0... für jeden gefundenen Event erstellt.

      Nun wollte ich auch gleich meine Datenpunkte, die für jede View erstellt werden ebenfalls auf diese Methode erstellen, anstatt das mit this.setObjectNotExistsAsync zu machen. Nur wie packe ich das in eine Schleife?

      Viele (wahrscheinlich dumme) Fragen sorry und da kommen bestimmt noch einige

      Jey Cee 1 Reply Last reply Reply Quote 0
      • Jey Cee
        Jey Cee Developer @Peoples last edited by

        @peoples sagte in Technische Fragen zur Adapterentwicklung:

        Nun wollte ich auch gleich meine Datenpunkte, die für jede View erstellt werden ebenfalls auf diese Methode erstellen, anstatt das mit this.setObjectNotExistsAsync zu machen. Nur wie packe ich das in eine Schleife?

        Gar nicht. Die dort eingetragenen Objekte werden beim Anlegen der Instanz einmalig erstellt.

        @peoples sagte in Technische Fragen zur Adapterentwicklung:

        Viele (wahrscheinlich dumme) Fragen sorry und da kommen bestimmt noch einige

        Kein Problem.

        Peoples 1 Reply Last reply Reply Quote 0
        • Peoples
          Peoples @Jey Cee last edited by

          @jey-cee
          Also es hat zwar einige Zeit gedauert aber ich habe einen Teilerfolg erzielt. Und zwei Fragen dazu, hier ein Ausschnitt der jsonConfig:

          "type": "tabs",
              "items": {
                "Main": {
                  "type": "panel",
                  "label": "Main",
                  "items": {
                    "engine": {
                      "type": "selectSendTo",
                      "label": "visProject",
                      "sm": 2,
                      "command": "getProjectList"
                    }
                  }
                },
          

          Ich verarbeite nun die sendTo Anfrage, bekomme die gewünschten Werte zurück und es baut sich das Select zusammen.

          Nun verwende ich in der main.js an anderer Stelle folgenden Aufruf:

          visData.viewList = await this.readViews(this.config.visProject);
          

          Bisher war es so dass "config.visProject" das Select aus dem Admin war und dort der selectierte Wert genommen wurde, aber jetzt wird hier kein Wert mehr erfasst. Muss ich dem jsonConfig-Teil oben noch irgendwas hinzufügen oder ist das

          "label": "visProject"
          

          doch der "Bezeichner" für -> config.visProject?

          Zweite Frage:
          das "sm": 2, beeinflusst nur die Dimensionen hat aber keinen Einfluss auf die Funktion oder?
          Auszug aus dem Schema (All types could have: sm - width in 1/12 of screen on small screen)

          Das wars dann auch für heute, danke schonmal

          Jey Cee 1 Reply Last reply Reply Quote 0
          • OliverIO
            OliverIO @Peoples last edited by

            @peoples
            Hast du in io-Package.JSON
            Auch den Parameter gesetzt?
            https://github.com/oweitman/ioBroker.tvprogram/blob/8b37570b860faffb77da17b25415ca0fd897b2c8/io-package.json#L238

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

              @OliverIO
              Ja, das select wird ja richtig befüllt, ich kann den selektierten Werd nur nicht über config.... Erfassen.

              1 Reply Last reply Reply Quote 0
              • Jey Cee
                Jey Cee Developer @Peoples last edited by

                @peoples label ist der Text der im Frontend zu dem Feld angezeigt wird.
                Der key vom Item ist der Name der Konfigurationsvariable. Also in meinem Beispiel engine. Wie bisher auch muss der Name in der io-package unter native eingetragen werden.

                sm gibt an wieviele Spalten das Element im Grid einnimmt. Das Grid unterteilt sich in 12 Spalten.

                Peoples 1 Reply Last reply Reply Quote 1
                • Peoples
                  Peoples @Jey Cee last edited by Peoples

                  @jey-cee
                  Und wie muss ich es dann anstellen, dass ich eine dynamische Liste ausgeben / zusammenBauen kann die folgenden Aufbau hat:

                  | ViewName | - AnzeigeZeit- | Sichtbar in Autoview | -- Ist HomeView -- | --- Ist LockView --- |
                  |----- Text ----| --- Number --- | ------ Checkbox ------ | --- RadioButton --- | --- RadioButton --- |

                  Diese Zeile wiederholt sich je nach Anzahl der Views des gewählten Vis-Projekts.

                  Muss ich dann die ganze "Liste" innerhalb einer Schleife in der main.js erstellen und kann mir den dann wieder über sendTo in die Admin-Oberfläche laden?

                  Schematisch dargestellt so:

                  for ("jede View) {
                   
                       "viewName": {
                              "type": "text",
                              "label": "View Name",
                            },
                      "anzeigeZeit": {
                              "type": "number",
                              "label": "Anzeigezeit",
                            },
                      "sichtbarIAv": {
                              "type": "checkbox",
                              "label": "Sichtbar in Autoview",
                            },
                      "istHv": {
                              "type": "radio",
                              "label": "Ist HomeView",
                            },
                      "istLV": {
                              "type": "radio",
                              "label": "Anzeigezeit",
                            }
                  } 
                  

                  Oder wird das anders realisiert? Evtl. kennst du ja sogar einen Adapter der eine Liste auf diese Weise erstellt, dann könnte ich mich daran orientieren?

                  -EDIT-
                  Was ich gerade noch gelesen habe, dass es ja gar kein "radio" gibt sondern nur checkbox, aber ist es dann überhaupt möglich dass nur eine gesetzt ist und sich die anderen automatisch wieder zurücksetzen?

                  Jey Cee 1 Reply Last reply Reply Quote 0
                  • Jey Cee
                    Jey Cee Developer @Peoples last edited by

                    @peoples sagte in Technische Fragen zur Adapterentwicklung:

                    Und wie muss ich es dann anstellen, dass ich eine dynamische Liste ausgeben / zusammenBauen kann die folgenden Aufbau hat:

                    Ich hab bisher noch nie eine Tabelle/Liste gebaut. Sieht für mich jetzt erstmal so aus als gibt es keine Möglichkeit eine Tabelle dynamisch zu füllen. Das hatte ich nicht auf dem Schirm.

                    @peoples sagte in Technische Fragen zur Adapterentwicklung:

                    Was ich gerade noch gelesen habe, dass es ja gar kein "radio" gibt sondern nur checkbox, aber ist es dann überhaupt möglich dass nur eine gesetzt ist und sich die anderen automatisch wieder zurücksetzen?

                    Nein. Radio Buttons sind dann noch ein Feature Request.

                    Ich denke hier ist die JSONConfig wohl ausgereizt, die Fehlenden Radio Buttons kann man ersetzen durch ein einfaches Select. Aber für die Tabelle gibt es keinen Ersatz.

                    Peoples 1 Reply Last reply Reply Quote 0
                    • Peoples
                      Peoples @Jey Cee last edited by

                      @jey-cee
                      Nun gut, einen Versuch wars allemal wert 🙂

                      1 Reply Last reply Reply Quote 0
                      • Peoples
                        Peoples last edited by Peoples

                        Und weiter gehts:

                        Ich habe mir eine Funktion geschrieben, die Datenpunkte löscht, die nicht mehr benötigt werden (bspw. wenn man ein anderes vorhandenes Projekt wählt):

                        async deleteVisObjects(arr){
                            try{
                                const states = await this.getStatesAsync('Views' + '.*');
                                for (const idS in states){
                                    let nmb = idS.split('.')[3];
                        			this.log.info(this.namespace + '.' + nmb);
                                    if(arr.includes(nmb)){
                                        this.log.debug('View exists in Json: '+idS)
                                    } else {
                                        this.log.debug('View does NOT exist in Json: '+idS)
                        				await this.delObjectAsync(nmb);
                                    } 
                                }
                            } catch (err) {
                                this.log.error(err);
                            }
                        }
                        

                        die Strucktur der Datenpunkte schaut so aus:
                        viewswitch.png

                        Wie man sieht, gelingt es mir die Datenpunkte innerhalb der "Channels" zu löschen, nur der leere "Channel" wird nicht mitgelöscht.
                        Ich habe nun versucht innerhalb der Schleife einfach den Channel zu löschen mit deleteChannel(namespace + '.' + nmb) was dem Namen entspricht, da tut sich aber nichts da er vermutlich noch "Unterobjekte" hat.

                        Gibt es einen Befehl, der mir den Channel inkl. aller vorhandener States löscht, so als würde ich in der Objekte-Übersicht auf den Mülleimer klicken?

                        Peoples 1 Reply Last reply Reply Quote 0
                        • Peoples
                          Peoples @Peoples last edited by

                          Keiner ne Idee

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

                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          810
                          Online

                          31.7k
                          Users

                          79.8k
                          Topics

                          1.3m
                          Posts

                          adapter sendto
                          4
                          18
                          763
                          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