Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Entwicklung
    4. jsonConfig für jsonTab

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    jsonConfig für jsonTab

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

      @skb Zeige mal die komplette json
      Hast du dir das mal in shuttercontrol angeschaut

      SKB 1 Reply Last reply Reply Quote 0
      • SKB
        SKB Developer Most Active @simatec last edited by SKB

        @simatec Klar.

        Also, es sollen insgesamt 3 Felder sein.

        2025-05-26 10_49_55-.png

        Das erste Feld sollte ein "select" sein - wird aber eine Number.

        Das zweite Feld ist eigentlich als Text - ist aber ein Number Feld.

        Das dritte Feld ist der Slider - der funktioniert.

        Das json dazu ist wie folgt:

        {
           "type": "panel",
           "i18n": true,
           "items": {
              "_logo": {
                 "type": "staticImage",
                 "noTranslation": true,
                 "src": "chargecontrol.png",
                 "newLine": true,
                 "xs": 2,
                 "sm": 2,
                 "md": 1,
                 "lg": 0.33,
                 "xl": 0.33
              },
              "chargeControlHeader": {
                 "type": "staticText",
                 "text": {
                    "en": "ChargeControl",
                    "de": "Ladesteuerung",
                    "ru": "ChargeControl",
                    "pt": "Controle de Carga",
                    "nl": "ChargeControl",
                    "fr": "Contrôle de charge",
                    "it": "ChargeControl",
                    "es": "ChargeControl",
                    "pl": "ChargeControl",
                    "uk": "Партнерство",
                    "zh-cn": "充电控制"
                 },
                 "style": {
                    "fontSize": 24
                 },
                 "xs": 10,
                 "sm": 10,
                 "md": 11,
                 "lg": 11,
                 "xl": 11
              },
              "_info": {
                 "newLine": true,
                 "type": "staticText",
                 "text": "tab_intro",
                 "size": 2,
                 "xs": 12,
                 "sm": 12,
                 "md": 12,
                 "lg": 12,
                 "xl": 12
              },
              "mode": {
                 "type": "state",
                 "label": "tab_mode",
                 "control": "select",
                 "options": [
                    {
                       "label": "tab_mode_deactivated",
                       "value": 0
                    },
                    {
                       "label": "tab_mode_manual",
                       "value": 1
                    }
                 ],
                 "oid": "control.mode",
                 "xs": 12,
                 "sm": 12,
                 "md": 12,
                 "lg": 12,
                 "xl": 12
              },
              "chargeCurrentDisplay": {
                 "type": "state",
                 "label": "tab_chargeAmpere",
                 "oid": "control.chargeCurrent",
                 "narrow": true,
                 "addColon": true,
                 "readOnly": true,
                 "blinkOnUpdate": true,
                 "highlight": true,
                 "unit": "A",
                 "xs": 12,
                 "sm": 12,
                 "md": 4,
                 "lg": 3,
                 "xl": 3
              },
              "chargeCurrent": {
                 "newLine": true,
                 "type": "state",
                 "label": "tab_chargeAmpere",
                 "control": "slider",
                 "controlDelay": 500,
                 "oid": "control.chargeCurrent",
                 "min": 6,
                 "max": 32,
                 "size": "normal",
                 "xs": 12,
                 "sm": 12,
                 "md": 12,
                 "lg": 12,
                 "xl": 12
              }
           }
        }
        

        Admin Instanz dazu ist: 7.6.3

        simatec 1 Reply Last reply Reply Quote 0
        • simatec
          simatec Developer Most Active @SKB last edited by simatec

          @skb Hast du es mal mit id: 'shuttercontrol.%INSTANCE%.control.autoAll', versucht Beim Button muss es z.B. die ID sein

          SKB 1 Reply Last reply Reply Quote 0
          • SKB
            SKB Developer Most Active @simatec last edited by SKB

            @simatec Probiert habe ich bereits vieles - leider ohne Erfolg.

            Gehen wir mal chronologisch vor und nehmen nur einen Datenpunkt, der als Select fungieren soll.

            Die Syntax dazu ist:

            "mode": {
                     "type": "state",
                     "label": "tab_mode",
                     "control": "select",
                     "options": [
                        {
                           "label": "tab_mode_deactivated",
                           "value": 0
                        },
                        {
                           "label": "tab_mode_manual",
                           "value": 1
                        }
                     ],
                     "oid": "control.mode",
                     "xs": 12,
                     "sm": 12,
                     "md": 12,
                     "lg": 12,
                     "xl": 12
                  },
            

            Dargestellt wird eine Number-Box. Hier kann ich zwar die Werte ändern - jedoch greift das Select nicht.
            2025-05-26 11_01_54-chargecontrol-0 - ioBroker-master – Mozilla Firefox.png

            simatec 1 Reply Last reply Reply Quote 0
            • simatec
              simatec Developer Most Active @SKB last edited by

              @skb Ich würde type: 'setState',nehmen

              SKB 1 Reply Last reply Reply Quote 0
              • SKB
                SKB Developer Most Active @simatec last edited by

                @simatec state oder setState funktioniert zum Setzen. Aber beide zeigen keine Select-Box an.

                simatec 1 Reply Last reply Reply Quote 0
                • simatec
                  simatec Developer Most Active @SKB last edited by

                  @skb Zeige mal den State. Der State muss vom Typ her zum json Eintrag passen. Ist da kein select definiert, zeigt er die nur den Wert an. Das würde auch passieren, wenn du einen State vom Type String als Slider integrierst

                  SKB 1 Reply Last reply Reply Quote 0
                  • SKB
                    SKB Developer Most Active @simatec last edited by SKB

                    @simatec Ah, ok. Das macht allerdings Sinn. Der state ist tatsächlich eine Number - aber, wie könnte man ihn als "List" passend machen? Dann liegt wohl da der Fehler.

                    "type": "number",
                        "role": "indicator",
                        "read": true,
                        "write": true,
                        "def": 0,
                        "states": {
                          "0": "Deactivated",
                          "1": "Manual",
                          "2": "Only Surplus",
                          "3": "Minimal + Surplus",
                          "4": "Fast"
                        }
                    

                    Allerdings steht ja in der Beschreibung der states, das states nur bei number oder string gilt. Somit müsste ja dann auch ein select bei jsonTab gültig sein.

                    Was ja auch nicht geht - wie es bei shuttercontrol klappt, eine Zahl ohne Box darzustellen:
                    2025-05-26 11_57_38-chargecontrol-0 - ioBroker-master – Mozilla Firefox.png

                    "chargeCurrentDisplay": {
                             "newLine": true,
                             "type": "state",
                             "label": "tab_chargeAmpere",
                             "oid": "control.chargeCurrent",
                             "narrow": true,
                             "addColon": true,
                             "readOnly": true,
                             "blinkOnUpdate": true,
                             "highlight": true,
                             "unit": "A",
                             "xs": 12,
                             "sm": 12,
                             "md": 6,
                             "lg": 6,
                             "xl": 6
                          },
                    

                    Sollte, wie bei shuttercontrol aussehen:
                    2025-05-26 11_58_23-shuttercontrol-0 - ioBroker-master – Mozilla Firefox.png

                    Edit: Ok, das geht - allerdings nur, wenn der state auch auf write: false steht. Sollte das dann nicht eher immer so sein, wenn ich dies auf readOnly: true stelle?

                    mcm1957 1 Reply Last reply Reply Quote 0
                    • mcm1957
                      mcm1957 @SKB last edited by mcm1957

                      @skb said in jsonConfig für jsonTab:

                      "type": "number",
                      "role": "indicator", 
                      "read": true,
                      "write": true,
                      :
                      :                                                                                                                                                                               }                                            
                      

                      Bitte korrigiere die ROLE des States:
                      role indicator erfordert type BOOLEAN, READ-ONLY.
                      siehe https://github.com/ioBroker/ioBroker.docs/blob/master/docs/en/dev/stateroles.md#indicators-boolean-read-only

                      Hier würde wahrscheinlich value[.xxx] oder info.status passen oder wenns schreibbar sein soll level[.x]

                      SKB 1 Reply Last reply Reply Quote 0
                      • SKB
                        SKB Developer Most Active @mcm1957 last edited by

                        @mcm1957 Kann ich machen - ändert jedoch nichts an den o.g. "Problemen".

                        mcm1957 1 Reply Last reply Reply Quote 1
                        • mcm1957
                          mcm1957 @SKB last edited by

                          @skb
                          Ja ist schon klar - war nur als ein Hinweis gedacht weil ichs gesehen habe.
                          Sorry für Unterbrechung /Randanmerkung.

                          An sich sollte aber - weil du in einer der ersten Beiträge gefragt hast - das oben angeführte README auch für tab passen. Wenn was nicht funktioniert wär es ein Issue im admin Adapter Repo. Funktionalität sollte mit admin ausgeliefert werden. Also ggF den aktuellsten Admin gegentesten wenn du nicht eh am latest bin (stable wurde heute aktualissiert).

                          Die Komponents der jsconConfig sind übrigends da (https://github.com/ioBroker/ioBroker.admin/tree/master/packages/jsonConfig/src/JsonConfigComponent) kodiert. Falls du selbst suchen / schaun willst was da wie implementiert ist.

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

                            @skb

                            Müsste ein dropdown nicht so definiert sein?
                            https://github.com/ioBroker/ioBroker.admin/blob/master/packages/jsonConfig/README.md#select

                            SKB 1 Reply Last reply Reply Quote 0
                            • SKB
                              SKB Developer Most Active @OliverIO last edited by

                              @oliverio Ja, wenn man es ohne state nutzt, wird dies wohl so definiert. Das funktioniert auch. Allerdings nicht, wenn ich einen state habe, der als number definiert ist und eine states-List beinhaltet.

                              OliverIO 1 Reply Last reply Reply Quote 0
                              • SKB
                                SKB Developer Most Active last edited by

                                Auch würde mich interessieren, ob man den Wert, den so ein type: state ausgibt, weiterverarbeiten kann. Ich würde dann Buttons entsprechend stylen, wenn control: select nicht geht.

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

                                  @SKB
                                  Ich hab mal im source geschaut. Was mir auffällt ist, das der Typ select zwar definiert ist,
                                  https://github.com/ioBroker/ioBroker.admin/blob/d64077fb7249005a1253de90eb54d0d84f019679/packages/jsonConfig/src/JsonConfigComponent/ConfigState.tsx#L47
                                  Aber dann bei renderItem es für diesen Typ keine Unterscheidung gibt, was dann die tatsächliche Anzeige beeinflusst.
                                  Also select wohl nicht umgesetzt wurde. Ist allerdings erstmal nur eine flüchtige Analyse, react ist da nicht immer alles gleich ersichtlich

                                  SKB 1 Reply Last reply Reply Quote 1
                                  • SKB
                                    SKB Developer Most Active @OliverIO last edited by

                                    @oliverio Habe damit nun mal ein Bisschen getestet. Bei den control geht eigentlich alles - bis auf eben das select.
                                    Button kann schalten und walten - switch auch.

                                    Ich könnte statt mit dem select auch mit einem Button leben - nur müsste ich dann die value, die der Button setzt auch auslesen können, damit ich ggf. mit variant: outlined z.B. den aktiven Wert in dem state erkenntlich machen kann.

                                    mcm1957 1 Reply Last reply Reply Quote 0
                                    • mcm1957
                                      mcm1957 @SKB last edited by

                                      @skb
                                      @OliverIO

                                      Bitte erstellt bei erkannten Problemen ein Issue im admin Repository.
                                      (Natürlich ist auch ein PR willkommen).

                                      DANKE

                                      SKB 1 Reply Last reply Reply Quote 1
                                      • SKB
                                        SKB Developer Most Active @mcm1957 last edited by SKB

                                        @mcm1957 Mir ging es im ersten Moment um das Verständnis - allerdings vermute ich nun einen Fehler. Habe ein Issue dazu erstellt.

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

                                          @skb

                                          Als workaround könntest du auch ein selectsendto nehmen und den State dann im Adapter lesen und setzen.(vermutlich)

                                          SKB 1 Reply Last reply Reply Quote 2
                                          • SKB
                                            SKB Developer Most Active @OliverIO last edited by

                                            @oliverio Mit Sicherheit gibt es viele Ansätze, damit man irgendwie Daten erhält - aber ich muss ja nicht states durch den Adapter schicken, damit ich Resultate bekomme, die eigentlich eine vorgesehene Funktion haben 😉
                                            Ich denke, ein Issue wird erstmal gut sein, damit sich das jemand angucken kann und ggf. die Funktion richtig stellt.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            492
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            6
                                            29
                                            747
                                            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