Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Tester
  4. Betatest NSPanel-lovelace-ui v0.7.x

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.6k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.1k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    2.9k

Betatest NSPanel-lovelace-ui v0.7.x

Geplant Angeheftet Gesperrt Verschoben Tester
713 Beiträge 26 Kommentatoren 127.1k Aufrufe 29 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • bembelstemmerB bembelstemmer

    Hi, ich bin heute endlich mal ein paar Minuten zum weiter machen gekommen.

    Ich habe mal die ersten drei Themen gesammelt als Fragen und Feedback.


    Leider habe ich hier im Forum nichts dazu gefunden aber irgenwie scheitere ich gerade an den aller einfachsten Dingen. peinlich
    Ich wollte als ersten Test einfach nur einen Schalter auf die Hauptseite cardGrid legen.
    Aber egal welche Rolle der Datenpunkt hat, das Script gibt mir immer aus "Channel role ... not supported".
    Laut Doku bedeutet das ja, dass es nicht implementiert werden soll.

        const Hauptseite: ScriptConfig.PageGrid = {
            type: 'cardGrid',
            uniqueName: 'main',
            heading: 'Menü',
            items: [
                { id: '0_userdata.0.testswitch', icon: 'power' },
            ]
        };
    

    Der State ist boolean und ich habe state und switch mit den Untertypen ausprobiert. Ein Button hilft mir nicht, da es toggeln soll.

    Ich schätze mal, ich hab nur einfach irgendwas noch nicht richtig verstanden.


    Und noch eine zweite Frage bzw. Vorschlag: Bei der klassischen Script Variante wurde das Wetter aus einem Alias gezogen. Das hatte den Vorteil, dass ich die aktuelle Temperatur die z.B. der Screensaver beim Wettericon angezeigt wurde einfach auf mein richtiges Außenthermometer umbiegen konnte.
    Jetzt, wo direkt der Wetteradapter angegeben ist habe ich noch nicht gesehen dass das aktuell möglich ist außer wenn ich mir einen fake-proxy für z.b. den pirate-weather baue.
    Wäre das was für die Zukunft, denn den geschätzen Wert brauche ich ja nicht wenn ich auf einem zusätzlichen Icon dann noch den echten Wert anzeige.


    Thema Nr. 3 betrifft die MQTT Settings die automatisch konfiguriert werden.
    Wenn man "wie früher" die Rule2 konfiguriert um die Tasten von den Relais zu entkoppeln, wird im MQTT Pfad der Rule %topic% verwendet.
    Aktuell wird (bzw. wurde bei mir durch die Initialisierung) nichts für den %topic% Wert konfiguriert. Default ist dann "Tasmota_XXXX".
    Dadurch schickt der Panel dann den Tastendruck ohne Fehler an die falsche Stelle und nichts passiert.
    Nachdem ich das %topic% dann auf den Panelnamen gesetzt hatte, ging dann alles perfekt.


    Ansonsten vielen Dank für die ganze Arbeit, die Performance macht echt nen richtig guten Eindruck bisher.

    T Offline
    T Offline
    ticaki
    schrieb am zuletzt editiert von ticaki
    #700

    @bembelstemmer

    Zu:

    1.
    Es wird ein channel mit role 'xyz' erwartet in dem ein State mit type:'x' und role: 'y' ist. Der channel ist die ID.
    Um es sich besser zu merken - channel ist welches "Vorlage" verwendet wird und die states darunter sind die dazu gehörenden Daten.

    2. eigener State im Favorit

    Dafür muß wahrscheinlich das automatische Hinzufügen von Wetterelementen ausgeschaltet werden. Dann definiert man das Favoritenelement selbst. Es kann vielleicht auch gehen wenn die weiter an bleiben, weil Nutzerelemente vor den anderen ins Array geschrieben werden und ohne Rotation werden die ersten zuerst angezeigt.

    // Ausschalten des automatischen Hinzufügens. Auch im Admin auf custom = leer umstellen
    weatherEntity: '',
    //...
    
    favoritScreensaverEntity:[
             {
                    type: 'native',
                    native:{
                        template: 'text.brightsky.favorit',
                        dpInit: `/^brightsky\\.0\\.current.+/`,
                        modeScr: 'favorit',
                        data: {
                            entity2: {
                                value: {
                                    type: 'triggered',
                                    dp: 'sainlogic.0.weather.current.outdoortemp'
                                }
                            }
                        }
                    }
                },
         ],
    

    3.
    Der Adapter verwendet Rule3 und macht dann folgendes:

    this.sendToTasmota(
                `${this.topic}/cmnd/Rule3`,
                `ON CustomSend DO RuleTimer3 120 ENDON ON Rules#Timer=3 DO CustomSend pageType~pageStartup ENDON${
                    this.detach.left
                        ? ` ON Button1#state do Publish ${this.topic}/tele/RESULT {"CustomRecv":"event,button1"} ENDON`
                        : ''
                }${
                    this.detach.right
                        ? ` ON Button2#state do Publish ${this.topic}/tele/RESULT {"CustomRecv":"event,button2"} ENDON`
                        : ''
                }`,
            );
    

    Die erste Abfrage bringt das panel in den startup wenn es länger als 120 Sekunden keine Nachricht vom Adapter bekommen hat. Das zweite und dritte sind für das detachen zuständig, jenachdem wie State: nspanel-lovelace-ui.0.panels.A0_B7_65_54_C2_60.cmd.detachLeft / Right aussehen

    Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

    Spenden

    1 Antwort Letzte Antwort
    0
    • bembelstemmerB Offline
      bembelstemmerB Offline
      bembelstemmer
      schrieb am zuletzt editiert von bembelstemmer
      #701

      Vielen Dank, ich hab ja gesagt dass ich bestimmt irgendwas verpeilt habe :grin:
      Ich habe nen Haufen States die ich für die Steuerung meiner ganzen Scripts verwende für verschiedenste Use-Cases. Das sind alles weder Steckdosen noch Lichter. Hatte verdrängt dass ich für jeden Bool-Wert den ich schalten möchte ein Fake-Gerät-Alias anlegen muss.
      Hatte gedacht bzw. gehofft dass man einfach bool Punkte toggeln kann wie es z.B. bei der Belegung der Hardwarebuttons geht über den neuen Mode 'switch'.
      Also sorry für die überflüssige Frage.


      Zu Thema2: Vielen Dank für den Tipp. Werde ich mir mal anschauen und testen.
      Ich muss mir das noch mal genauer durchlesen. Ich habe das Konzept von den Templates noch nicht ganz durchschaut und was ich da dann genau machen muss.
      Ich gebe nochmal bescheid ob das so klappt wie vorgeschlagen.


      Zu Thema 3: Danke für die Erläuterung. Die ganzen Settings mit der Rule2 und detach sind alle bekannt. Ich benutze das ja schon einige Jahre.
      Ich hatte nur übersehen, dass hier die Einstellung für Topic auf dem Defaultwert bleibt bei der Einrichtung.
      Wenn dann die Rule2 so gesetzt ist:
      ...state do Publish SmartHome/%topic%/tele/RESULT ....
      dann landen die Events quasi im Nirvana, da der Pfad dann nicht stimmt.
      7a655f9a-d3f2-4c04-ab9e-54531a6456b2-grafik.png
      Aber vielleicht ist auch nur bei dem automatischen Setup bei mir was schief gegangen.
      Hatte nen reset 4 gemacht und dann alles automatisch über den Adapter laufen lassen.

      @ticaki Danke für die Info. Das habe ich nicht gesehen. Trotz komplettem Reset war irgendwie die Rule2 nach dem auto setup gesetzt und das schalten von States über die Buttons hat nicht funtkioniert. Nachdem ichs über die Rule2 wie oben beschrieben selbst gesetzt habe ging es dann.
      Werde ich nochmal vom Reset aus durchspielen was da schief gelaufen ist.

      T 1 Antwort Letzte Antwort
      0
      • bembelstemmerB bembelstemmer

        Vielen Dank, ich hab ja gesagt dass ich bestimmt irgendwas verpeilt habe :grin:
        Ich habe nen Haufen States die ich für die Steuerung meiner ganzen Scripts verwende für verschiedenste Use-Cases. Das sind alles weder Steckdosen noch Lichter. Hatte verdrängt dass ich für jeden Bool-Wert den ich schalten möchte ein Fake-Gerät-Alias anlegen muss.
        Hatte gedacht bzw. gehofft dass man einfach bool Punkte toggeln kann wie es z.B. bei der Belegung der Hardwarebuttons geht über den neuen Mode 'switch'.
        Also sorry für die überflüssige Frage.


        Zu Thema2: Vielen Dank für den Tipp. Werde ich mir mal anschauen und testen.
        Ich muss mir das noch mal genauer durchlesen. Ich habe das Konzept von den Templates noch nicht ganz durchschaut und was ich da dann genau machen muss.
        Ich gebe nochmal bescheid ob das so klappt wie vorgeschlagen.


        Zu Thema 3: Danke für die Erläuterung. Die ganzen Settings mit der Rule2 und detach sind alle bekannt. Ich benutze das ja schon einige Jahre.
        Ich hatte nur übersehen, dass hier die Einstellung für Topic auf dem Defaultwert bleibt bei der Einrichtung.
        Wenn dann die Rule2 so gesetzt ist:
        ...state do Publish SmartHome/%topic%/tele/RESULT ....
        dann landen die Events quasi im Nirvana, da der Pfad dann nicht stimmt.
        7a655f9a-d3f2-4c04-ab9e-54531a6456b2-grafik.png
        Aber vielleicht ist auch nur bei dem automatischen Setup bei mir was schief gegangen.
        Hatte nen reset 4 gemacht und dann alles automatisch über den Adapter laufen lassen.

        @ticaki Danke für die Info. Das habe ich nicht gesehen. Trotz komplettem Reset war irgendwie die Rule2 nach dem auto setup gesetzt und das schalten von States über die Buttons hat nicht funtkioniert. Nachdem ichs über die Rule2 wie oben beschrieben selbst gesetzt habe ging es dann.
        Werde ich nochmal vom Reset aus durchspielen was da schief gelaufen ist.

        T Offline
        T Offline
        ticaki
        schrieb am zuletzt editiert von ticaki
        #702

        @bembelstemmer
        Zu 1: Ich hatte schon überlegt sowas zu ermöglichen - zumindest für switch.
        Zu 2: Das mit den Templates ist gedacht gewesen um die komplexe Adapterkonfiguration zu vereinfachen und trotzdem was kompliziertes machen zu können:

        Beispiel wie das Adapter intern aussieht:

        oh was sehe ich da - da gehen ja auch Platzhalter - was man nicht alles in 2 Jahren vergisst, das muß ich dann nochmal rausbekommen wie das geht. :D

        'text.battery.bydhvs': {
                /**
                 * entity1 enthält den Füllstand
                 * entity2 ebenfalls
                 * entity3 ist true für laden und false für entladen. 
                 */
                template: 'text.battery',
                role: 'battery',
                adapter: 'bydhvs',
                type: 'text',
                dpInit: '/bydhvs\\.#°^°#\\./',
        
                data: {
                    icon: {
                        true: {
                            value: {
                                type: 'triggered',
                                mode: 'auto',
                                role: 'value.battery',
                                dp: '',
                                regexp: /\.State\.SOC$/,
                                read: `const v = Math.round(val / 10)
                                switch (v) {
                                    case 0:
                                        return 'battery-charging-outline';
                                    case 1:
                                    case 2:
                                    case 3:
                                    case 4:
                                    case 5:
                                    case 6:
                                    case 7:
                                    case 8:
                                    case 9:
                                        return 'battery-charging-' + v + '0';
                                    case 10:
                                    default:
                                        return 'battery-charging';}`,
                            },
                            text: {
                                value: {
                                    type: 'triggered',
                                    mode: 'auto',
                                    role: 'value.battery',
                                    dp: '',
                                    regexp: /\.State\.SOC$/,
                                },
                                unit: {
                                    type: 'const',
                                    constVal: '%',
                                },
                                textSize: { type: 'const', constVal: 2 },
                            },
                            color: undefined,
                        },
                        false: {
                            value: {
                                type: 'triggered',
                                mode: 'auto',
                                role: 'value.battery',
                                dp: '',
                                regexp: /\.State\.SOC$/,
                                read: `const v = Math.round(val / 10)
                                    switch (v) {
                                        case 0:
                                            return 'battery-outline';
                                        case 1:
                                        case 2:
                                        case 3:
                                        case 4:
                                        case 5:
                                        case 6:
                                        case 7:
                                        case 8:
                                        case 9:
                                            return 'battery-' + v + '0';
                                        case 10:
                                        default:
                                            return 'battery';}`,
                            },
                            color: undefined,
                        },
                        scale: { type: 'const', constVal: { val_min: 10, val_max: 50, log10: 'max' } },
                    },
                    entity1: {
                        value: {
                            type: 'state',
                            mode: 'auto',
                            role: 'value.battery',
                            dp: '',
                            regexp: /\.State\.SOC$/,
                        },
                    },
                    text: {
                        true: { type: 'const', constVal: 'Battery' },
                        false: undefined,
                    },
                    entity2: {
                        value: {
                            type: 'triggered',
                            mode: 'auto',
                            role: 'value.battery',
                            dp: '',
                            regexp: /\.State\.SOC$/,
                        },
                        unit: { type: 'const', constVal: '%' },
                    },
                    entity3: {
                        value: {
                            type: 'triggered',
                            mode: 'auto',
                            role: 'value.power',
                            dp: '',
                            regexp: /\.State\.Power$/,
                            read: 'return val < 0',
                        },
                    },
                },
            },
        

        Um das zu nutzen schreibt man dann einfach:

                   {
                        type: 'template',
                        template: 'text.battery.bydhvs',
                        dpInit: 'bydhvs.0',
                        modeScr: 'left',
                    }
        

        In das Skript und fertig. Mit dem data Zweig wie bei dem Favorit oben überschreibt man einzelne keys im Json

        EDIT:
        Das template macht folgendes:

        • Verwendet ca. 20 icons
        • unterschiedliche Icons für laden und entladen
        • ladestand in 1/10 am icon ablesbar
        • farbe wechselt je nach ladestand mit log10 von rot=10% zu grün= 50% (i.d.R. ist es bei 30 fast grün)

        hm das könnte ich noch auf trigrad umstellen.

        EDIT2:

        Bitte setzte erstmal keine eigenen Rule und lösche vorhandene - der Adapter sollte das alles für die Standardfälle selbst erledigen.

        Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

        Spenden

        bembelstemmerB 1 Antwort Letzte Antwort
        0
        • T ticaki

          @bembelstemmer
          Zu 1: Ich hatte schon überlegt sowas zu ermöglichen - zumindest für switch.
          Zu 2: Das mit den Templates ist gedacht gewesen um die komplexe Adapterkonfiguration zu vereinfachen und trotzdem was kompliziertes machen zu können:

          Beispiel wie das Adapter intern aussieht:

          oh was sehe ich da - da gehen ja auch Platzhalter - was man nicht alles in 2 Jahren vergisst, das muß ich dann nochmal rausbekommen wie das geht. :D

          'text.battery.bydhvs': {
                  /**
                   * entity1 enthält den Füllstand
                   * entity2 ebenfalls
                   * entity3 ist true für laden und false für entladen. 
                   */
                  template: 'text.battery',
                  role: 'battery',
                  adapter: 'bydhvs',
                  type: 'text',
                  dpInit: '/bydhvs\\.#°^°#\\./',
          
                  data: {
                      icon: {
                          true: {
                              value: {
                                  type: 'triggered',
                                  mode: 'auto',
                                  role: 'value.battery',
                                  dp: '',
                                  regexp: /\.State\.SOC$/,
                                  read: `const v = Math.round(val / 10)
                                  switch (v) {
                                      case 0:
                                          return 'battery-charging-outline';
                                      case 1:
                                      case 2:
                                      case 3:
                                      case 4:
                                      case 5:
                                      case 6:
                                      case 7:
                                      case 8:
                                      case 9:
                                          return 'battery-charging-' + v + '0';
                                      case 10:
                                      default:
                                          return 'battery-charging';}`,
                              },
                              text: {
                                  value: {
                                      type: 'triggered',
                                      mode: 'auto',
                                      role: 'value.battery',
                                      dp: '',
                                      regexp: /\.State\.SOC$/,
                                  },
                                  unit: {
                                      type: 'const',
                                      constVal: '%',
                                  },
                                  textSize: { type: 'const', constVal: 2 },
                              },
                              color: undefined,
                          },
                          false: {
                              value: {
                                  type: 'triggered',
                                  mode: 'auto',
                                  role: 'value.battery',
                                  dp: '',
                                  regexp: /\.State\.SOC$/,
                                  read: `const v = Math.round(val / 10)
                                      switch (v) {
                                          case 0:
                                              return 'battery-outline';
                                          case 1:
                                          case 2:
                                          case 3:
                                          case 4:
                                          case 5:
                                          case 6:
                                          case 7:
                                          case 8:
                                          case 9:
                                              return 'battery-' + v + '0';
                                          case 10:
                                          default:
                                              return 'battery';}`,
                              },
                              color: undefined,
                          },
                          scale: { type: 'const', constVal: { val_min: 10, val_max: 50, log10: 'max' } },
                      },
                      entity1: {
                          value: {
                              type: 'state',
                              mode: 'auto',
                              role: 'value.battery',
                              dp: '',
                              regexp: /\.State\.SOC$/,
                          },
                      },
                      text: {
                          true: { type: 'const', constVal: 'Battery' },
                          false: undefined,
                      },
                      entity2: {
                          value: {
                              type: 'triggered',
                              mode: 'auto',
                              role: 'value.battery',
                              dp: '',
                              regexp: /\.State\.SOC$/,
                          },
                          unit: { type: 'const', constVal: '%' },
                      },
                      entity3: {
                          value: {
                              type: 'triggered',
                              mode: 'auto',
                              role: 'value.power',
                              dp: '',
                              regexp: /\.State\.Power$/,
                              read: 'return val < 0',
                          },
                      },
                  },
              },
          

          Um das zu nutzen schreibt man dann einfach:

                     {
                          type: 'template',
                          template: 'text.battery.bydhvs',
                          dpInit: 'bydhvs.0',
                          modeScr: 'left',
                      }
          

          In das Skript und fertig. Mit dem data Zweig wie bei dem Favorit oben überschreibt man einzelne keys im Json

          EDIT:
          Das template macht folgendes:

          • Verwendet ca. 20 icons
          • unterschiedliche Icons für laden und entladen
          • ladestand in 1/10 am icon ablesbar
          • farbe wechselt je nach ladestand mit log10 von rot=10% zu grün= 50% (i.d.R. ist es bei 30 fast grün)

          hm das könnte ich noch auf trigrad umstellen.

          EDIT2:

          Bitte setzte erstmal keine eigenen Rule und lösche vorhandene - der Adapter sollte das alles für die Standardfälle selbst erledigen.

          bembelstemmerB Offline
          bembelstemmerB Offline
          bembelstemmer
          schrieb am zuletzt editiert von
          #703

          @ticaki Jo, alles klar. Wird gemacht.
          Hab den Fehler auch gefunden. Ich hatte nirgends die Info bzgl:
          "jenachdem wie State: nspanel-lovelace-ui.0.panels.A0_B7_65_54_C2_60.cmd.detachLeft / Right aussehen"

          Jetzt weiß ich dass man das dort setzen muss. Oder ist es vorgesehen das irgendwo anders zu konfigurieren und es wird dann automatisch gesetzt?

          T 1 Antwort Letzte Antwort
          0
          • T Offline
            T Offline
            ticaki
            schrieb am zuletzt editiert von ticaki
            #704

            Soll in den states gesetzt werden.

            Oder da wo Tom sagt

            Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

            Spenden

            1 Antwort Letzte Antwort
            0
            • bembelstemmerB bembelstemmer

              @ticaki Jo, alles klar. Wird gemacht.
              Hab den Fehler auch gefunden. Ich hatte nirgends die Info bzgl:
              "jenachdem wie State: nspanel-lovelace-ui.0.panels.A0_B7_65_54_C2_60.cmd.detachLeft / Right aussehen"

              Jetzt weiß ich dass man das dort setzen muss. Oder ist es vorgesehen das irgendwo anders zu konfigurieren und es wird dann automatisch gesetzt?

              T Offline
              T Offline
              TT-Tom
              schrieb am zuletzt editiert von
              #705

              @bembelstemmer
              Wie schon anfangs geschrieben hatte in den Serviceseiten unter Relais. Da kannst du es bequem einstellen

              Gruß Tom
              https://github.com/tt-tom17
              Wenn meine Hilfe erfolgreich war, benutze bitte das Voting unten rechts im Beitrag

              NSPanel Script Wiki
              https://github.com/joBr99/nspanel-lovelace-ui/wiki

              NSPanel Adapter Wiki
              https://github.com/ticaki/ioBroker.nspanel-lovelace-ui/wiki

              1 Antwort Letzte Antwort
              0
              • T Offline
                T Offline
                ticaki
                schrieb am zuletzt editiert von ticaki
                #706

                bitte lesen

                Betrifft nicht Screensaver-Doppelklick

                0.9.0 (2025-11-21)

                • (armilar) HMI: long press added (v5.1.1)
                • (ticaki) Replace double-click with long press
                • (ticaki) pageItem type=button long press added
                • (ticaki) custom pageitem added
                • (ticaki) script ID is found uniquely

                Solle da mal mehr rein schreiben:

                • Doppleklick ist weg - dafür gibts jetzt längers gedrückt halten. In blätterbaren cardGrids usw. springt man so direkt auf die nächste Seite
                • gibt eine neue Scriptoption für Pageitems: targetPageLongPress - die geht bei jedem Pageitem das ein button ist (button, light, socket z.B.) - bei einem langen Druck auf das PageItem springt man auf diese Seite
                • neues PageItem hinzugefügt: type: 'custom' - da kann man eine direkte ID angeben auf einen Datenpunkt. Muß jedoch alles definieren da die defaults alle Mist sind.

                Details - nur bei Interesse lesen

                Die Types für das neue PageItems sind so:

                der type: 'custom' definiert das id kein Channel sondern ein Datenpunkt ist.

                    {
                        type: 'custom';
                        id: string; // auf einen boolean datenpunkt
                        navigate?: boolean | null | undefined;
                        targetPage?: string | null | undefined;
                        targetPageLongPress?: string | null | undefined;
                        icon?: string;
                        icon2?: string;
                        name?: string;
                        onColor?: RGB | string;
                        offColor?: RGB | string;
                        colorScale?: IconScaleElement;
                        buttonText?: string;
                    };
                

                targetPageLongPress: Ich verwende das um einem start knopf für meinen Saugroboter eine Optionsseite hinzuzufügen mit der ich Saugleistung und Wischleistung einstellen kann - das ändere ich nicht und die Seite wo der Knopf ist hat schon 8 Items und ist damit voll :)

                Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                Spenden

                1 Antwort Letzte Antwort
                0
                • D Online
                  D Online
                  danny_v1
                  schrieb zuletzt editiert von
                  #707

                  Hallo, ich bin seit langem mal wieder hier und echt erstaunt was sich alles im Adapter getan hat. Ich habe jetzt ein neues Panel und damit habe ich jetzt gleich mal den Adapter genutzt und bin an Aufbau meiner Seiten muss ja alles etwas angepasst werden wenn man vom "alten" Skript kommt.

                  Da habe ich auch schon die ersten Fragen:

                  1. ich habe im Skript viel solche Sachen verwendet
                  *PageItem*/{ id: "alias.0.Wohnzimmer.Sensoren.BWM", icon: "motion-sensor", icon2: "motion-sensor-off", offColor:  Blue, onColor: Green, prefixName:"Wohnz.: ", name: "getState('alias.0.Wohnzimmer.Sensoren.BWM.SECOND').val", suffixName: " Lux" },
                  

                  wie kann ich das jetzt hier umsetzen?

                  1. gibt es irgendwo eine zusammenhängende Erklärung wie die Navigation funktioniert, bzw was wird im Adapter festgelegt und was im Skript?
                  let Obergeschoss: PageType =
                  
                  {
                      "type": "cardGrid",
                      "heading": "Obergeschoss",
                      "useColor": true,
                      "subPage": false,
                      'prev': 'AlarmSeite',
                      'next': 'Untergeschoss',
                      'prevIcon': 'shield-alert',
                      'nextIcon': 'home-floor-0',
                      "items": [
                              /*PageItem*/{ navigate: true, id: null, targetPage: "Wohnzimmer1", icon: "sofa-outline", onColor: White, name: "Wohnzimmer"},
                              /*PageItem*/{ navigate: true, id: null, targetPage: "Balkon", icon: "balcony", onColor: White, name: "Balkon"},
                              /*PageItem*/{ navigate: true, id: null, targetPage: "Flur_OG", icon: "stairs", onColor: White, name: "Flur"}
                      ]
                  
                  };
                  

                  so wird es ja nicht mehr funktionieren?!

                  1. Gibt es vielleicht sowas wie ein Beispielskript wo mal alle Seiten als Vorlage drin sind?

                  2. Gibt es eine Seite für WLED?

                  Vielen Lieben dank schon mal

                  T 1 Antwort Letzte Antwort
                  0
                  • D danny_v1

                    Hallo, ich bin seit langem mal wieder hier und echt erstaunt was sich alles im Adapter getan hat. Ich habe jetzt ein neues Panel und damit habe ich jetzt gleich mal den Adapter genutzt und bin an Aufbau meiner Seiten muss ja alles etwas angepasst werden wenn man vom "alten" Skript kommt.

                    Da habe ich auch schon die ersten Fragen:

                    1. ich habe im Skript viel solche Sachen verwendet
                    *PageItem*/{ id: "alias.0.Wohnzimmer.Sensoren.BWM", icon: "motion-sensor", icon2: "motion-sensor-off", offColor:  Blue, onColor: Green, prefixName:"Wohnz.: ", name: "getState('alias.0.Wohnzimmer.Sensoren.BWM.SECOND').val", suffixName: " Lux" },
                    

                    wie kann ich das jetzt hier umsetzen?

                    1. gibt es irgendwo eine zusammenhängende Erklärung wie die Navigation funktioniert, bzw was wird im Adapter festgelegt und was im Skript?
                    let Obergeschoss: PageType =
                    
                    {
                        "type": "cardGrid",
                        "heading": "Obergeschoss",
                        "useColor": true,
                        "subPage": false,
                        'prev': 'AlarmSeite',
                        'next': 'Untergeschoss',
                        'prevIcon': 'shield-alert',
                        'nextIcon': 'home-floor-0',
                        "items": [
                                /*PageItem*/{ navigate: true, id: null, targetPage: "Wohnzimmer1", icon: "sofa-outline", onColor: White, name: "Wohnzimmer"},
                                /*PageItem*/{ navigate: true, id: null, targetPage: "Balkon", icon: "balcony", onColor: White, name: "Balkon"},
                                /*PageItem*/{ navigate: true, id: null, targetPage: "Flur_OG", icon: "stairs", onColor: White, name: "Flur"}
                        ]
                    
                    };
                    

                    so wird es ja nicht mehr funktionieren?!

                    1. Gibt es vielleicht sowas wie ein Beispielskript wo mal alle Seiten als Vorlage drin sind?

                    2. Gibt es eine Seite für WLED?

                    Vielen Lieben dank schon mal

                    T Offline
                    T Offline
                    TT-Tom
                    schrieb zuletzt editiert von
                    #708

                    @danny_v1

                    es gibt eine Wiki Seite zum Adapter, wo viele Sachen schon erklärt sind. Link siehe meine Signatur. Bitte lese Sie dir durch und gehen wir speziell auf einzelne Problem ein.

                    1. getState wird nicht mehr benötigt, einfach den DP einsetzen.
                    2. Sie funktioniert wie im Script. Was sich änder sind die Seiten die über PageConfig im Aadmin erstellt werden. Das besprechen wir dann separat.
                    3. Der Adapter legt ein Script schon an in einem eigenen Ordner, siehe javascript.
                    4. ist auch nur eine cradGrid.

                    Also lese mal im Wiki und dann alles weitere

                    Gruß Tom
                    https://github.com/tt-tom17
                    Wenn meine Hilfe erfolgreich war, benutze bitte das Voting unten rechts im Beitrag

                    NSPanel Script Wiki
                    https://github.com/joBr99/nspanel-lovelace-ui/wiki

                    NSPanel Adapter Wiki
                    https://github.com/ticaki/ioBroker.nspanel-lovelace-ui/wiki

                    1 Antwort Letzte Antwort
                    1
                    • D Online
                      D Online
                      danny_v1
                      schrieb zuletzt editiert von
                      #709

                      Ja die Wiki Seite habe ich schon durchgeschaut und damit habe ich auch schon den Anfang umsetzen können.

                      zb meine Hauptseite:

                      const Hauptseite: PageType = {
                              type: 'cardThermo2',
                              uniqueName:'main',
                              heading: 'egal wird eh nicht angezeigt',
                              thermoItems:[
                                  {name: 'Wohnzimmer',
                                  set:'alias.0.Wohnzimmer.Temperaturen.Thermostat.Thermostat.SET', // Der Einstellwert der Heizung
                                      thermoId1:'alias.0.Wohnzimmer.Temperaturen.Thermostat.Thermostat.ACTUAL', // Aktuelle Raumtemperatur (oberer Wert in der Anzeige)
                                      thermoId2:'alias.0.Wohnzimmer.Temperaturen.Thermostat.Thermostat.HUMIDITY',
                                      modeId:'alias.0.Wohnzimmer.Temperaturen.Thermostat.Thermostat.MODE', modeList:['OFF', 'AUTO', 'COOL', 'HEAT', 'ECO', 'FAN', 'DRY']}],
                      
                              //    {name: 'test2', modeList:['aus','kaputt', 'falsch'], modeId:'0_userdata.0.Einzelne_Geräte.Thermostat.MODE' ,iconHeatCycle:'home', iconHeatCycleOffColor:Red, thermoId1:'alias.0.Wohnzimmer.Temperaturen.Thermostat.ACTUAL', set:'alias.0.Wohnzimmer.Temperaturen.Thermostat.SET', thermoId2:'alias.0.Wohnzimmer.Temperaturen.Thermostat.HUMIDITY'}],
                              items:[
                                  {id: 'alias.0.Wohnzimmer.Lampe.Schreibtisch.Schreibtischlampe', name: 'Schreibtisch', icon: 'desk-lamp', interpolateColor: true},
                                  {id: 'alias.0.Wohnzimmer.Lampe.Laterne.Laterne', name: 'Laterne', icon: 'lamp', icon2: 'lamp-outline',interpolateColor: true},
                                  {id: 'alias.0.Wohnzimmer.Lampe.Stehlampe.Stehlampe', icon: 'floor-lamp-outline', onColor: White, offColor: Gray, interpolateColor: true},
                                  {id: 'alias.0.Wohnzimmer.Deckenlampe.Gross.GruppeNSP', icon: 'ceiling-light-multiple'},
                      
                                  {navigate: true, targetPage: 'WZ_Lampen', icon: 'lamp'},
                                  {navigate: true, targetPage: 'WZ_Status', icon: 'state-machine'},
                                  {navigate: true, id: null, targetPage: 'WZ_Alexa', icon: 'music', onColor: White, name: 'Alexa'},
                                  {id: 'alias.0.Wohnzimmer.Lampe.Schreibtisch.Schreibtischlampe', name: 'Schreibtisch', icon: 'desk-lamp', interpolateColor: true},
                                  {id: 'alias.0.Wohnzimmer.Temperaturen.Thermostat.Thermostat.Batterie', name: 'Batterie', icon: 'battery', interpolateColor: true}
                                  ]
                          };
                      

                      Die funktioniert auch soweit, nur die Batterie anzeige Item9 funktioniert noch nicht.

                      Die anderen Seiten funktionieren soweit auch. Nur mit der Navigation (next, parent, prev, home) weiß ich noch nicht, macht man das wie im alten Skript oder in den Adapter einstellungen?

                      Zu zweitens wie muss das Item denn Aussehen, wenn der Name aus einem String und dann den Wert anzeigen soll, also zB Name: +Wert aus DP +Einheit

                      Gibt es irgendwo noch eine Zusammenfassung wann man bei den Items icon, icon2, onColor, offColor und interpolateColor verwenden kann?

                      1 Antwort Letzte Antwort
                      0
                      • T Offline
                        T Offline
                        ticaki
                        schrieb zuletzt editiert von ticaki
                        #710

                        useColor kannste löschen, wird nicht verwendet.
                        interpolateColor gibts ebenfalls nicht.

                        1. wird wahrscheinlich ein Alias/Channel problem sein
                        2. next und prev icons gibts aktuell nicht. Kann wahrscheinlich bei Bedarf eingebaut werden.
                        3. Navigation für Seiten die im Skript eingerichtet werden ist im Skript, welche die im Admin unter PageConfig sind im Admin.
                        4. Das hab wir nicht drin, name sollte auch als Datenpunkt gehen. Kannst ihn in einem Alias selbst bauen und diesen Alias-dp dann als name angeben
                        5. Ich glaube die ist nur in unseren Köpfen.

                        EDIT: Ich weiß das meiste was drin ist, ist natürlich möglich das es bei einzelnen channels fehlt, dann reporten.

                        Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                        Spenden

                        1 Antwort Letzte Antwort
                        0
                        • D Online
                          D Online
                          danny_v1
                          schrieb zuletzt editiert von danny_v1
                          #711

                          Ok vielen Dank schon mal, mit der Navigation komm ich nun schon mal klar.

                          Ich habe viele Sachen drin, mit denen ich ein paar Einstellungen mit dem LightControl Adapter über die Panel mache. In der Skript Version lief das alles sehr gut. Wenn ich jetzt die DP hier einfüge werden sie nicht erkannt. Ich habe da eigentlich nur die Schalter und ein paar Slider in Verwendung.

                          const Wohnzimmer_LC: PageType = {
                              type: 'cardEntities',
                              uniqueName: 'Wohnzimmer_LC',
                              heading: 'Wohnz. Lightcontrol',
                              subPage: true,
                              items: [
                          
                                        { id: 'alias.0.Wohnzimmer.LC.Komplett.AutoOnMotionEnable', name:'BWM', icon: 'lightbulb-off-outline'},
                                        { id: 'alias.0.Wohnzimmer.LC.Komplett.AutoOnMotionMinLux', name:'BWM MinLux"', icon: 'sun-wireless-outline', minValue: 0, maxValue: 25}]
                          }
                          

                          So sieht die Seite aus.

                          {
                            "type": "state",
                            "common": {
                              "name": "SET",
                              "role": "switch",
                              "type": "boolean",
                              "read": true,
                              "write": true,
                              "alias": {
                                "id": "lightcontrol.0.Wohnzimmer.autoOnMotion.enabled"
                              },
                              "custom": {
                                "lovelace.0": {
                                  "enabled": true,
                                  "entity": "switch",
                                  "name": "Wohnzimmer_LC_Komplett_AutoOnMotionEnable_SET",
                                  "attr_assumed_state": false,
                                  "attr_device_class": "switch"
                                }
                              },
                              "smartName": {
                                "de": "Wohnzimmer Bewegungsmelder",
                                "smartType": "socket"
                              }
                            },
                            "_id": "alias.0.Wohnzimmer.LC.Komplett.AutoOnMotionEnable.SET",
                            "native": {},
                            "acl": {
                              "object": 1636,
                              "state": 1636,
                              "owner": "system.user.admin",
                              "ownerGroup": "system.group.administrator"
                            },
                            "from": "system.adapter.admin.0",
                            "user": "system.user.admin",
                            "ts": 1764265292669
                          }
                          

                          So der DP für den Schalter.

                          {
                            "type": "state",
                            "common": {
                              "name": "SET",
                              "role": "level",
                              "type": "number",
                              "read": true,
                              "write": true,
                              "alias": {
                                "id": "lightcontrol.0.Wohnzimmer.autoOnMotion.minLux"
                              },
                              "max": 50
                            },
                            "_id": "alias.0.Wohnzimmer.LC.Komplett.AutoOnMotionMinLux.SET",
                            "native": {},
                            "from": "system.adapter.admin.0",
                            "user": "system.user.admin",
                            "ts": 1712775080349,
                            "acl": {
                              "object": 1636,
                              "state": 1636,
                              "owner": "system.user.admin",
                              "ownerGroup": "system.group.administrator"
                            }
                          }
                          

                          Und so der für den Slider.

                          Und iobroker schmeißt im log folgendes aus

                          [config-manager] Required: SET: alias.0.Wohnzimmer.LC.Komplett.AutoOnMotionMinLux, channel role: slider - missing - searching for dp: alias.0.Wohnzimmer.LC.Komplett.AutoOnMotionMinLux.SET, type: "number", role: "level", common.write: true
                          

                          Was mache ich da nur falsch?

                          Achso, das mit den Namen und Werten aus DPs geht so:

                          prefixName:"BWM: ", name: 'alias.0.Wohnzimmer.Sensoren.BWM.SECOND', suffixName: " Lux"
                          
                          1 Antwort Letzte Antwort
                          0
                          • T Offline
                            T Offline
                            ticaki
                            schrieb zuletzt editiert von ticaki
                            #712

                            Ich hab keinen channel mit role=slider im Einsatz daher weiß ich nicht ob es richtig eingebaut ist, jedoch heißt die Warnmeldung das der channel nicht richtig angelegt ist. Hier findest du die Definitionen dazu https://github.com/ticaki/ioBroker.nspanel-lovelace-ui/blob/main/ALIAS.md

                            Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                            Spenden

                            1 Antwort Letzte Antwort
                            0
                            • D Online
                              D Online
                              danny_v1
                              schrieb zuletzt editiert von
                              #713

                              Ja genaulaut der Tabelle sollte das so auch passen, komischerweise geht einer und die anderen nicht, obwohl ich alle auf die gleiche Weiße im Geräte Adapter erstellt habe.

                              Ich habe jetzt auch mal etwas mit dem Slider im Licht PopUp herumgespielt und da stürzt der Adapter ab mit folgenden Einträgen im Log

                              
                              host.iobrokerserver
                              2025-11-27 23:10:05.036	info	instance system.adapter.nspanel-lovelace-ui.0 in version "0.9.0" (non-npm: ticaki/ioBroker.nspanel-lovelace-ui#de12b19c803e62c1a8e4837f1df2afd4de351da7) started with pid 477383
                              
                              host.iobrokerserver
                              2025-11-27 23:09:34.681	info	Restart adapter system.adapter.nspanel-lovelace-ui.0 because enabled
                              
                              host.iobrokerserver
                              2025-11-27 23:09:34.680	error	instance system.adapter.nspanel-lovelace-ui.0 terminated with code 6 (UNCAUGHT_EXCEPTION)
                              
                              nspanel-lovelace-ui.0
                              2025-11-27 23:09:33.864	error	Cannot read properties of undefined (reading 'replaceAll')
                              
                              nspanel-lovelace-ui.0
                              2025-11-27 23:09:33.863	error	TypeError: Cannot read properties of undefined (reading 'replaceAll') at /opt/iobroker/node_modules/iobroker.nspanel-lovelace-ui/src/lib/const/tools.ts:1151:25 at Array.map (<anonymous>) at Object.getPayloadRemoveTilde (/opt/iobroker/node_modules/iobroker.nspanel-lovelace-ui/src/lib/const/tools.ts:1151:14) at PageItem.getDetailPayload (/opt/iobroker/node_modules/iobroker.nspanel-lovelace-ui/src/lib/pages/pageItem.ts:813:30) at PageItem.GeneratePopup (/opt/iobroker/node_modules/iobroker.nspanel-lovelace-ui/src/lib/pages/pageItem.ts:1916:21) at PageItem.onStateTrigger (/opt/iobroker/node_modules/iobroker.nspanel-lovelace-ui/src/lib/pages/pageItem.ts:2761:25) at PageItem.onStateTriggerSuperDoNotOverride (/opt/iobroker/node_modules/iobroker.nspanel-lovelace-ui/src/lib/classes/baseClassPage.ts:171:9) at StatesControler.onStateChange (/opt/iobroker/node_modules/iobroker.nspanel-lovelace-ui/src/lib/controller/states-controller.ts:773:25) at NspanelLovelaceUi.onStateChange (/opt/iobroker/node_modules/iobroker.nspanel-lovelace-ui/src/main.ts:611:17)
                              

                              Ich habe in der ThermoCard2 eine Lampe die nur dimmbar ist und wenn ich diese mit längerem Druck öffne also das PopUp und da den Slider hin und her bewege kommt es zum Absturz.
                              Das ist auch reproduzierbar.

                              1 Antwort Letzte Antwort
                              0
                              Antworten
                              • In einem neuen Thema antworten
                              Anmelden zum Antworten
                              • Älteste zuerst
                              • Neuste zuerst
                              • Meiste Stimmen


                              Support us

                              ioBroker
                              Community Adapters
                              Donate

                              616

                              Online

                              32.4k

                              Benutzer

                              81.5k

                              Themen

                              1.3m

                              Beiträge
                              Community
                              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                              ioBroker Community 2014-2025
                              logo
                              • Anmelden

                              • Du hast noch kein Konto? Registrieren

                              • Anmelden oder registrieren, um zu suchen
                              • Erster Beitrag
                                Letzter Beitrag
                              0
                              • Home
                              • Aktuell
                              • Tags
                              • Ungelesen 0
                              • Kategorien
                              • Unreplied
                              • Beliebt
                              • GitHub
                              • Docu
                              • Hilfe