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

  1. ioBroker Community Home
  2. Deutsch
  3. Hardware
  4. SONOFF NSPanel mit Lovelace UI

NEWS

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

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

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

SONOFF NSPanel mit Lovelace UI

Geplant Angeheftet Gesperrt Verschoben Hardware
lovelace uinspanelsonoff
7.8k Beiträge 272 Kommentatoren 6.7m Aufrufe 254 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.
  • T TT-Tom

    @flipps sagte in SONOFF NSPanel mit Lovelace UI:

    Dann habe ich Werte aus meiner PV-Anlage, die Aliase habe ich genau so erstellt wie die vom Pool, die zeigt er mir in den pages nicht an (ohne Fehlermeldung).
    Ersetze ich jetzt einen der PV-Alias pfaden durch einen der Pool-Aliase wird mir da der Pool-Wert angezeigt.

    Zeige mal bitte von beiden, die Objektdaten einmal Channel und einmal Datenpunkt

    Was passiert, wenn du nur den Verweis änderst?

    ArmilarA Offline
    ArmilarA Offline
    Armilar
    Most Active Forum Testing
    schrieb am zuletzt editiert von
    #3488

    @tt-tom

    8c770fb4-c206-4501-97cc-2368ecb1c7fc-image.png

    v4.2.0.2

    Neue zusätzliche cardGrid2 mit 8 Steuerelementen
    f483e820-26e7-497d-8884-4d33f6a6613b-image.png

    Variablendeklaration der cardGrid2 analog cardGrid mit:

    let Buero_Seite_2 = <PageGrid2>
    {
        'type': 'cardGrid2',
        'heading': 'Büro 2',
        'useColor': true,
        ...
    

    Änderungen in der Variable also PageGrid2 und cardGrid2.

    Es reicht den unteren Teil ab ( _______ Ab hier keine Konfiguration mehr ______ ) zu ersetzen.
    Und falls noch nicht geschehen:

    FlashNextion http://nspanel.pky.eu/lovelace-ui/github/nspanel-v4.2.0.tft
    

    Installationsanleitung, Tipps, Alias-Definitionen, FAQ für das Sonoff NSPanel mit lovelace UI unter ioBroker
    https://github.com/joBr99/nspanel-lovelace-ui/wiki

    Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

    ArmilarA 1 Antwort Letzte Antwort
    1
    • ArmilarA Armilar

      @tt-tom

      8c770fb4-c206-4501-97cc-2368ecb1c7fc-image.png

      v4.2.0.2

      Neue zusätzliche cardGrid2 mit 8 Steuerelementen
      f483e820-26e7-497d-8884-4d33f6a6613b-image.png

      Variablendeklaration der cardGrid2 analog cardGrid mit:

      let Buero_Seite_2 = <PageGrid2>
      {
          'type': 'cardGrid2',
          'heading': 'Büro 2',
          'useColor': true,
          ...
      

      Änderungen in der Variable also PageGrid2 und cardGrid2.

      Es reicht den unteren Teil ab ( _______ Ab hier keine Konfiguration mehr ______ ) zu ersetzen.
      Und falls noch nicht geschehen:

      FlashNextion http://nspanel.pky.eu/lovelace-ui/github/nspanel-v4.2.0.tft
      
      ArmilarA Offline
      ArmilarA Offline
      Armilar
      Most Active Forum Testing
      schrieb am zuletzt editiert von
      #3489

      Gibt aber schon einen FeatureRequest von @Kuckuckmann

      https://github.com/joBr99/nspanel-lovelace-ui/issues/964

      ce05d934-87ba-412f-a11f-a737a4327ccd-image.png

      Die Schrift ist bei Darstellung von Werten noch etwas groß...

      Installationsanleitung, Tipps, Alias-Definitionen, FAQ für das Sonoff NSPanel mit lovelace UI unter ioBroker
      https://github.com/joBr99/nspanel-lovelace-ui/wiki

      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

      1 Antwort Letzte Antwort
      0
      • icebearI Online
        icebearI Online
        icebear
        schrieb am zuletzt editiert von icebear
        #3490

        Noch eine Frage ich hätt?

        Ich hab jetzt für ein Thermostat (HomematicIP evo) die cardTHERMO angelegt,

        office.png

        funktioniert auch wie man glaub ich sieht soweit.
        Allerdings bekomm ich unten bei den Indikatoren das Batteriesymbol nicht angezeigt (WIFI funktioniert) woran kann das liegen ?

        Alias sieht wie folgt aus

        office1.png

        Und beinahe vergessen kann man auch 'Open Window' als Indikator einblenden lassen?

        ArmilarA 2 Antworten Letzte Antwort
        0
        • Marc BergM Offline
          Marc BergM Offline
          Marc Berg
          Most Active
          schrieb am zuletzt editiert von
          #3491

          @icebear sagte in SONOFF NSPanel mit Lovelace UI:

          Allerdings bekomm ich unten bei den Indikatoren das Batteriesymbol nicht angezeigt (WIFI funktioniert) woran kann das liegen ?

          Also bei mir wird unter Role "indicator.maintenance.lowbat" angezeigt. Vielleicht liegt es daran?
          ed1eb6d3-607f-4ab1-baad-6bde171c6fdc-grafik.png

          NUC10I3+Ubuntu+Docker+ioBroker+influxDB2+Node Red+RabbitMQ+Grafana

          Pi-hole, Traefik, Checkmk, Conbee II+Zigbee2MQTT, ESPSomfy-RTS, LoRaWAN, Arduino, KiCad

          Benutzt das Voting im Beitrag, wenn er euch geholfen hat.

          ArmilarA 1 Antwort Letzte Antwort
          0
          • Marc BergM Marc Berg

            @icebear sagte in SONOFF NSPanel mit Lovelace UI:

            Allerdings bekomm ich unten bei den Indikatoren das Batteriesymbol nicht angezeigt (WIFI funktioniert) woran kann das liegen ?

            Also bei mir wird unter Role "indicator.maintenance.lowbat" angezeigt. Vielleicht liegt es daran?
            ed1eb6d3-607f-4ab1-baad-6bde171c6fdc-grafik.png

            ArmilarA Offline
            ArmilarA Offline
            Armilar
            Most Active Forum Testing
            schrieb am zuletzt editiert von
            #3492

            @marc-berg

            Die Rolle wird da eigentlich nicht ausgewertet. Sollte mit der Zuweisung im Alias genügen.

            Installationsanleitung, Tipps, Alias-Definitionen, FAQ für das Sonoff NSPanel mit lovelace UI unter ioBroker
            https://github.com/joBr99/nspanel-lovelace-ui/wiki

            Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

            1 Antwort Letzte Antwort
            0
            • icebearI icebear

              Noch eine Frage ich hätt?

              Ich hab jetzt für ein Thermostat (HomematicIP evo) die cardTHERMO angelegt,

              office.png

              funktioniert auch wie man glaub ich sieht soweit.
              Allerdings bekomm ich unten bei den Indikatoren das Batteriesymbol nicht angezeigt (WIFI funktioniert) woran kann das liegen ?

              Alias sieht wie folgt aus

              office1.png

              Und beinahe vergessen kann man auch 'Open Window' als Indikator einblenden lassen?

              ArmilarA Offline
              ArmilarA Offline
              Armilar
              Most Active Forum Testing
              schrieb am zuletzt editiert von
              #3493

              @icebear sagte in SONOFF NSPanel mit Lovelace UI:

              Und beinahe vergessen kann man auch 'Open Window' als Indikator einblenden lassen?

              Aktuell nicht. Gehört der zum Thermostaten? Falls ja, könnte man ihn noch einbauen. Denke mal Bool (true/false) bei Fenster offen - Erkennung?

              Installationsanleitung, Tipps, Alias-Definitionen, FAQ für das Sonoff NSPanel mit lovelace UI unter ioBroker
              https://github.com/joBr99/nspanel-lovelace-ui/wiki

              Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

              icebearI 1 Antwort Letzte Antwort
              0
              • ArmilarA Armilar

                @icebear sagte in SONOFF NSPanel mit Lovelace UI:

                Und beinahe vergessen kann man auch 'Open Window' als Indikator einblenden lassen?

                Aktuell nicht. Gehört der zum Thermostaten? Falls ja, könnte man ihn noch einbauen. Denke mal Bool (true/false) bei Fenster offen - Erkennung?

                icebearI Online
                icebearI Online
                icebear
                schrieb am zuletzt editiert von
                #3494

                @armilar said in SONOFF NSPanel mit Lovelace UI:

                Aktuell nicht. Gehört der zum Thermostaten?

                Jepp, die HMIP Fenstersensoren können in der CCU mit den Thermostaten verknüpft werden und im Objektmanager tauchen die States dann bei den Thermostaten auf (siehe Screenshots)
                Wenn das Fenster geöffnet wird setzt das automatisch die Setpointtemp auf einen vordefinierten Wert (Standard ist glaub ich 12°C)

                hmip1.png

                hmip2.png

                Das mit dem Batteriesymbol hab ich übrings immernoch nich hinbekommen (teste weiter)

                Solltest du noch etwas brauchen einfach melden.

                ArmilarA 1 Antwort Letzte Antwort
                1
                • icebearI icebear

                  @armilar said in SONOFF NSPanel mit Lovelace UI:

                  Aktuell nicht. Gehört der zum Thermostaten?

                  Jepp, die HMIP Fenstersensoren können in der CCU mit den Thermostaten verknüpft werden und im Objektmanager tauchen die States dann bei den Thermostaten auf (siehe Screenshots)
                  Wenn das Fenster geöffnet wird setzt das automatisch die Setpointtemp auf einen vordefinierten Wert (Standard ist glaub ich 12°C)

                  hmip1.png

                  hmip2.png

                  Das mit dem Batteriesymbol hab ich übrings immernoch nich hinbekommen (teste weiter)

                  Solltest du noch etwas brauchen einfach melden.

                  ArmilarA Offline
                  ArmilarA Offline
                  Armilar
                  Most Active Forum Testing
                  schrieb am zuletzt editiert von Armilar
                  #3495

                  @icebear

                  Sind die Batteriewerte in den Objektdaten ebenfalls vom Typ Number? Falls Boolean, bitte mal manuell am Original-Datenpunkt an/aus-schalten...

                  Installationsanleitung, Tipps, Alias-Definitionen, FAQ für das Sonoff NSPanel mit lovelace UI unter ioBroker
                  https://github.com/joBr99/nspanel-lovelace-ui/wiki

                  Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                  icebearI 1 Antwort Letzte Antwort
                  0
                  • ArmilarA Armilar

                    @icebear

                    Sind die Batteriewerte in den Objektdaten ebenfalls vom Typ Number? Falls Boolean, bitte mal manuell am Original-Datenpunkt an/aus-schalten...

                    icebearI Online
                    icebearI Online
                    icebear
                    schrieb am zuletzt editiert von
                    #3496

                    @armilar said in SONOFF NSPanel mit Lovelace UI:

                    Sind die Batteriewerte in den Objektdaten ebenfalls vom Typ Number?

                    Guckst du hier

                    bat.png

                    1 Antwort Letzte Antwort
                    1
                    • icebearI icebear

                      Noch eine Frage ich hätt?

                      Ich hab jetzt für ein Thermostat (HomematicIP evo) die cardTHERMO angelegt,

                      office.png

                      funktioniert auch wie man glaub ich sieht soweit.
                      Allerdings bekomm ich unten bei den Indikatoren das Batteriesymbol nicht angezeigt (WIFI funktioniert) woran kann das liegen ?

                      Alias sieht wie folgt aus

                      office1.png

                      Und beinahe vergessen kann man auch 'Open Window' als Indikator einblenden lassen?

                      ArmilarA Offline
                      ArmilarA Offline
                      Armilar
                      Most Active Forum Testing
                      schrieb am zuletzt editiert von Armilar
                      #3497

                      @icebear

                      Habe den Fehler gefunden. Dein Datenpunkt sollte im ALIAS LOWBAT heißen. Deiner ist LOW_BAT ...

                      Lösche den mal und lege den neu an.

                      Einen LOW_BAT frage ich im TS-Script nicht ab

                                                      case 'LOWBAT':
                                                          if (existsState(id + '.LOWBAT') && getState(id + '.LOWBAT').val != null) {
                                                              if (getState(id + '.LOWBAT').val) {
                                                                  bt[i - 1] = Icons.GetIcon('battery-low') + '~63488~1~' + 'LBAT' + '~';
                                                              } else {
                                                                  bt[i - 1] = Icons.GetIcon('battery-high') + '~2016~1~' + 'LBAT' + '~';
                                                              }
                                                          } else i--;
                                                          break;
                      

                      Installationsanleitung, Tipps, Alias-Definitionen, FAQ für das Sonoff NSPanel mit lovelace UI unter ioBroker
                      https://github.com/joBr99/nspanel-lovelace-ui/wiki

                      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                      ArmilarA 1 Antwort Letzte Antwort
                      0
                      • ArmilarA Armilar

                        @icebear

                        Habe den Fehler gefunden. Dein Datenpunkt sollte im ALIAS LOWBAT heißen. Deiner ist LOW_BAT ...

                        Lösche den mal und lege den neu an.

                        Einen LOW_BAT frage ich im TS-Script nicht ab

                                                        case 'LOWBAT':
                                                            if (existsState(id + '.LOWBAT') && getState(id + '.LOWBAT').val != null) {
                                                                if (getState(id + '.LOWBAT').val) {
                                                                    bt[i - 1] = Icons.GetIcon('battery-low') + '~63488~1~' + 'LBAT' + '~';
                                                                } else {
                                                                    bt[i - 1] = Icons.GetIcon('battery-high') + '~2016~1~' + 'LBAT' + '~';
                                                                }
                                                            } else i--;
                                                            break;
                        
                        ArmilarA Offline
                        ArmilarA Offline
                        Armilar
                        Most Active Forum Testing
                        schrieb am zuletzt editiert von Armilar
                        #3498

                        @icebear

                        95c59b13-ee0e-4aef-a645-eb06890e8f09-image.png

                        Ist auch noch ein dicker fetter roter Kringel um den Fehler gemacht worden... ich werde alt :blush:

                        EDIT:
                        Ich werde den Thermostaten noch um WINDOWOPEN (Boolean erscheint mir sinnvoller - keine Ahnung warum das numerisch ist ;-) ) erweitern. Kann dann beim Lesen im Alias mit fx: "val === 0 ? false : true" von deinen Nummern in true/false geändert werden.

                        Installationsanleitung, Tipps, Alias-Definitionen, FAQ für das Sonoff NSPanel mit lovelace UI unter ioBroker
                        https://github.com/joBr99/nspanel-lovelace-ui/wiki

                        Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                        icebearI ArmilarA 2 Antworten Letzte Antwort
                        0
                        • ArmilarA Armilar

                          @icebear

                          95c59b13-ee0e-4aef-a645-eb06890e8f09-image.png

                          Ist auch noch ein dicker fetter roter Kringel um den Fehler gemacht worden... ich werde alt :blush:

                          EDIT:
                          Ich werde den Thermostaten noch um WINDOWOPEN (Boolean erscheint mir sinnvoller - keine Ahnung warum das numerisch ist ;-) ) erweitern. Kann dann beim Lesen im Alias mit fx: "val === 0 ? false : true" von deinen Nummern in true/false geändert werden.

                          icebearI Online
                          icebearI Online
                          icebear
                          schrieb am zuletzt editiert von
                          #3499

                          @armilar

                          Danke hatte ich auch nich gesehen (Wald und Bäume).

                          Jetzt funktioniert es!

                          HMIbat.png

                          ArmilarA 1 Antwort Letzte Antwort
                          1
                          • icebearI icebear

                            @armilar

                            Danke hatte ich auch nich gesehen (Wald und Bäume).

                            Jetzt funktioniert es!

                            HMIbat.png

                            ArmilarA Offline
                            ArmilarA Offline
                            Armilar
                            Most Active Forum Testing
                            schrieb am zuletzt editiert von
                            #3500

                            @icebear

                            hübsche Batterie ;-)

                            Installationsanleitung, Tipps, Alias-Definitionen, FAQ für das Sonoff NSPanel mit lovelace UI unter ioBroker
                            https://github.com/joBr99/nspanel-lovelace-ui/wiki

                            Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                            icebearI 1 Antwort Letzte Antwort
                            0
                            • ArmilarA Armilar

                              @icebear

                              hübsche Batterie ;-)

                              icebearI Online
                              icebearI Online
                              icebear
                              schrieb am zuletzt editiert von
                              #3501

                              @armilar

                              Ich seh schon, ich muß mich ein bischen mehr mit dem unteren Teil des Scripts beschäftigen :relaxed:

                              ArmilarA 1 Antwort Letzte Antwort
                              0
                              • ArmilarA Armilar

                                @icebear

                                95c59b13-ee0e-4aef-a645-eb06890e8f09-image.png

                                Ist auch noch ein dicker fetter roter Kringel um den Fehler gemacht worden... ich werde alt :blush:

                                EDIT:
                                Ich werde den Thermostaten noch um WINDOWOPEN (Boolean erscheint mir sinnvoller - keine Ahnung warum das numerisch ist ;-) ) erweitern. Kann dann beim Lesen im Alias mit fx: "val === 0 ? false : true" von deinen Nummern in true/false geändert werden.

                                ArmilarA Offline
                                ArmilarA Offline
                                Armilar
                                Most Active Forum Testing
                                schrieb am zuletzt editiert von
                                #3502

                                @armilar sagte in SONOFF NSPanel mit Lovelace UI:

                                @icebear

                                EDIT:
                                Ich werde den Thermostaten noch um WINDOWOPEN (Boolean erscheint mir sinnvoller - keine Ahnung warum das numerisch ist ) erweitern. Kann dann beim Lesen im Alias mit fx: "val === 0 ? false : true" von deinen Nummern in true/false geändert werden.

                                Kannste mal testen?

                                Die function GenerateThermoPage suchen und ersetzen:

                                function GenerateThermoPage(page: PageThermo): Payload[] {
                                    try {
                                        let id = page.items[0].id
                                        let out_msgs: Array<Payload> = [];
                                        out_msgs.push({ payload: 'pageType~cardThermo' });
                                        
                                        // ioBroker
                                        if (existsObject(id)) {
                                            let o = getObject(id);
                                            let name = page.heading !== undefined ? page.heading : o.common.name.de;
                                            let currentTemp = 0;
                                            if (existsState(id + '.ACTUAL')) {
                                                currentTemp = (Math.round(parseFloat(getState(id + '.ACTUAL').val) * 10) / 10);
                                            }
                                
                                            let minTemp = page.items[0].minValue !== undefined ? page.items[0].minValue : 50;   //Min Temp 5°C
                                            let maxTemp = page.items[0].maxValue !== undefined ? page.items[0].maxValue : 300;  //Max Temp 30°C
                                            let stepTemp = page.items[0].stepValue !== undefined ? page.items[0].stepValue : 5; //Default 0,5° Schritte
                                
                                            let destTemp = 0;
                                            if (existsState(id + '.SET')) {
                                                // using minValue, if .SET is null (e.g. for tado AWAY or tado is off)
                                                let setValue = getState(id + '.SET').val;
                                                if (setValue == null) {
                                                    setValue = minTemp;
                                                }
                                
                                                destTemp = setValue.toFixed(2) * 10;
                                            }
                                            let statusStr: String = 'MANU';
                                
                                            if (existsState(id + '.MODE') && getState(id + '.MODE').val != null) {
                                                if (getState(id + '.MODE').val === 1) {
                                                    statusStr = 'MANU';
                                                } else {
                                                    statusStr = 'AUTO';
                                                }
                                            }
                                
                                            //Attribute hinzufügen, wenn im Alias definiert
                                            let i_list = Array.prototype.slice.apply($('[state.id="' + id + '.*"]'));
                                            let bt = ['~~~~', '~~~~', '~~~~', '~~~~', '~~~~', '~~~~', '~~~~', '~~~~', '~~~~'];
                                            
                                            let tempIcon: string = '';
                                            
                                            if ((i_list.length - 3) != 0) {
                                
                                                let i = 0;
                                
                                                if (o.common.role == 'thermostat') {
                                
                                                    if (existsState(id + '.AUTOMATIC') && getState(id + '.AUTOMATIC').val != null) {
                                                        if (getState(id + '.AUTOMATIC').val) {
                                                            bt[i++] = Icons.GetIcon('alpha-a-circle') + '~' + rgb_dec565(On) + '~1~' + 'AUTT' + '~';
                                                            statusStr = 'AUTO';
                                                        } else {
                                                            bt[i++] = Icons.GetIcon('alpha-a-circle') + '~33840~1~' + 'AUTT' + '~';
                                                        }
                                                    }
                                                    if (existsState(id + '.MANUAL') && getState(id + '.MANUAL').val != null) {
                                                        if (getState(id + '.MANUAL').val) {
                                                            bt[i++] = Icons.GetIcon('alpha-m-circle') + '~' + rgb_dec565(On) + '~1~' + 'MANT' + '~';
                                                            statusStr = 'MANU';
                                                        } else {
                                                            bt[i++] = Icons.GetIcon('alpha-m-circle') + '~33840~1~' + 'MANT' + '~';
                                                        }
                                                    }
                                                    if (existsState(id + '.PARTY') && getState(id + '.PARTY').val != null) {
                                                        if (getState(id + '.PARTY').val) {
                                                            bt[i++] = Icons.GetIcon('party-popper') + '~' + rgb_dec565(On) + '~1~' + 'PART' + '~';
                                                            statusStr = 'PARTY';
                                                        } else {
                                                            bt[i++] = Icons.GetIcon('party-popper') + '~33840~1~' + 'PART' + '~';
                                                        }
                                                    }
                                                    if (existsState(id + '.VACATION') && getState(id + '.VACATION').val != null) {
                                                        if (getState(id + '.VACATION').val) {
                                                            bt[i++] = Icons.GetIcon('palm-tree') + '~' + rgb_dec565(On) + '~1~' + 'VACT' + '~';
                                                            statusStr = 'VAC';
                                                        } else {
                                                            bt[i++] = Icons.GetIcon('palm-tree') + '~33840~1~' + 'VACT' + '~';
                                                        }
                                                    }
                                                    if (existsState(id + '.BOOST') && getState(id + '.BOOST').val != null) {
                                                        if (getState(id + '.BOOST').val) {
                                                            bt[i++] = Icons.GetIcon('fast-forward-60') + '~' + rgb_dec565(On) + '~1~' + 'BOOT' + '~';
                                                            statusStr = 'BOOST';
                                                        } else {
                                                            bt[i++] = Icons.GetIcon('fast-forward-60') + '~33840~1~' + 'BOOT' + '~';
                                                        }
                                                    }
                                
                                                    for (let i_index in i_list) {
                                                        let thermostatState = i_list[i_index].split('.');
                                                        if (
                                                            thermostatState[thermostatState.length - 1] != 'SET' &&
                                                            thermostatState[thermostatState.length - 1] != 'ACTUAL' &&
                                                            thermostatState[thermostatState.length - 1] != 'MODE'
                                                        ) {
                                                            i++;
                                
                                                            switch (thermostatState[thermostatState.length - 1]) {
                                                                case 'HUMIDITY':
                                                                    if (existsState(id + '.HUMIDITY') && getState(id + '.HUMIDITY').val != null) {
                                                                        if (parseInt(getState(id + '.HUMIDITY').val) < 40) {
                                                                            bt[i - 1] = Icons.GetIcon('water-percent') + '~65504~1~' + 'HUM' + '~';
                                                                        } else if (parseInt(getState(id + '.HUMIDITY').val) < 30) {
                                                                            bt[i - 1] = Icons.GetIcon('water-percent') + '~63488~1~' + 'HUM' + '~';
                                                                        } else if (parseInt(getState(id + '.HUMIDITY').val) >= 40) {
                                                                            bt[i - 1] = Icons.GetIcon('water-percent') + '~2016~1~' + 'HUM' + '~';
                                                                        } else if (parseInt(getState(id + '.HUMIDITY').val) > 65) {
                                                                            bt[i - 1] = Icons.GetIcon('water-percent') + '~65504~1~' + 'HUM' + '~';
                                                                        } else if (parseInt(getState(id + '.HUMIDITY').val) > 75) {
                                                                            bt[i - 1] = Icons.GetIcon('water-percent') + '~63488~1~' + 'HUM' + '~';
                                                                        }
                                                                    } else i--;
                                                                    break;
                                                                case 'LOWBAT':
                                                                    if (existsState(id + '.LOWBAT') && getState(id + '.LOWBAT').val != null) {
                                                                        if (getState(id + '.LOWBAT').val) {
                                                                            bt[i - 1] = Icons.GetIcon('battery-low') + '~63488~1~' + 'LBAT' + '~';
                                                                        } else {
                                                                            bt[i - 1] = Icons.GetIcon('battery-high') + '~2016~1~' + 'LBAT' + '~';
                                                                        }
                                                                    } else i--;
                                                                    break;
                                                                case 'MAINTAIN':
                                                                    if (existsState(id + '.MAINTAIN') && getState(id + '.MAINTAIN').val != null) {
                                                                        if (getState(id + '.MAINTAIN').val >> .1) {
                                                                            bt[i - 1] = Icons.GetIcon('account-wrench') + '~60897~1~' + 'MAIN' + '~';
                                                                        } else {
                                                                            bt[i - 1] = Icons.GetIcon('account-wrench') + '~33840~1~' + 'MAIN' + '~';
                                                                        }
                                                                    } else i--;
                                                                    break;
                                                                case 'UNREACH':
                                                                    if (existsState(id + '.UNREACH') && getState(id + '.UNREACH').val != null) {
                                                                        if (getState(id + '.UNREACH').val) {
                                                                            bt[i - 1] = Icons.GetIcon('wifi-off') + '~63488~1~' + 'WLAN' + '~';
                                                                        } else {
                                                                            bt[i - 1] = Icons.GetIcon('wifi') + '~2016~1~' + 'WLAN' + '~';
                                                                        }
                                                                    } else i--;
                                                                    break;
                                                                case 'POWER':
                                                                    if (existsState(id + '.POWER') && getState(id + '.POWER').val != null) {
                                                                        if (getState(id + '.POWER').val) {
                                                                            bt[i - 1] = Icons.GetIcon('power-standby') + '~2016~1~' + 'POW' + '~';
                                                                        } else {
                                                                            bt[i - 1] = Icons.GetIcon('power-standby') + '~33840~1~' + 'POW' + '~';
                                                                        }
                                                                    } else i--;
                                                                    break;
                                                                case 'ERROR':
                                                                    if (existsState(id + '.ERROR') && getState(id + '.ERROR').val != null) {
                                                                        if (getState(id + '.ERROR').val) {
                                                                            bt[i - 1] = Icons.GetIcon('alert-circle') + '~63488~1~' + 'ERR' + '~';
                                                                        } else {
                                                                            bt[i - 1] = Icons.GetIcon('alert-circle') + '~33840~1~' + 'ERR' + '~';
                                                                        }
                                                                    } else i--;
                                                                    break;
                                                                case 'WORKING':
                                                                    if (existsState(id + '.WORKING') && getState(id + '.WORKING').val != null) {
                                                                        if (getState(id + '.WORKING').val) {
                                                                            bt[i - 1] = Icons.GetIcon('briefcase-check') + '~2016~1~' + 'WORK' + '~';
                                                                        } else {
                                                                            bt[i - 1] = Icons.GetIcon('briefcase-check') + '~33840~1~' + 'WORK' + '~';
                                                                        }
                                                                    } else i--;
                                                                    break;
                                                                case 'WINDOWOPEN':
                                                                    if (existsState(id + '.WINDOWOPEN') && getState(id + '.WINDOWOPEN').val != null) {
                                                                        if (getState(id + '.WINDOWOPEN').val) {
                                                                            bt[i - 1] = Icons.GetIcon('window-open-variant') + '~63488~1~' + 'WIN' + '~';
                                                                        } else {
                                                                            bt[i - 1] = Icons.GetIcon('window-closed-variant') + '~2016~1~' + 'WIN' + '~';
                                                                        }
                                                                    } else i--;
                                                                    break;
                                                                default:
                                                                    i--;
                                                                    break;
                                                            }
                                                        }
                                                    }
                                
                                                    for (let j = i; j < 9; j++) {
                                                        bt[j] = '~~~~';
                                                    }
                                                }
                                
                                                if (o.common.role == 'airCondition') {
                                                    if (existsState(id + '.MODE') && getState(id + '.MODE').val != null) {
                                                        let Mode = getState(id + '.MODE').val
                                                        let States = getObject(id + '.MODE').common.states;
                                                        
                                                        let iconIndex: number = 1;
                                                        for(const statekey in States) {
                                                            let stateName: string = States[statekey];
                                                            let stateKeyNumber: number = parseInt(statekey);
                                                            if(stateName == 'OFF' || stateKeyNumber > 6) {
                                                                continue;
                                                            }
                                                            if(stateKeyNumber == Mode) {
                                                                statusStr = stateName.replace('_', ' ');
                                                            }
                                
                                                            switch(stateName) {
                                                                case 'AUTO':
                                                                    if (page.items[0].iconArray !== undefined && page.items[0].iconArray[1] !== '') {
                                                                        tempIcon = page.items[0].iconArray[1];
                                                                    } else {
                                                                        tempIcon = 'air-conditioner';
                                                                    }
                                                                    if(stateKeyNumber == Mode) {
                                                                        bt[iconIndex] = Icons.GetIcon(tempIcon) + '~1024~1~' + 'AUTO' + '~';
                                                                    } else {
                                                                        bt[iconIndex] = Icons.GetIcon(tempIcon) + '~35921~0~' + 'AUTO' + '~';
                                                                    }
                                                                    break;
                                                                case 'COOL':
                                                                    if (page.items[0].iconArray !== undefined && page.items[0].iconArray[2] !== '') {
                                                                        tempIcon = page.items[0].iconArray[2];
                                                                    } else {
                                                                        tempIcon = 'snowflake';
                                                                    }
                                                                    if(stateKeyNumber == Mode) {
                                                                        bt[iconIndex] = Icons.GetIcon(tempIcon) + '~11487~1~' + 'COOL' + '~';
                                                                    } else {
                                                                        bt[iconIndex] = Icons.GetIcon(tempIcon) + '~35921~0~' + 'COOL' + '~';
                                                                    }
                                                                    break;
                                                                case 'HEAT':
                                                                    if (page.items[0].iconArray !== undefined && page.items[0].iconArray[3] !== '') {
                                                                        tempIcon = page.items[0].iconArray[3];
                                                                    } else {
                                                                        tempIcon = 'fire';
                                                                    }
                                                                    if(stateKeyNumber == Mode) {
                                                                        bt[iconIndex] = Icons.GetIcon(tempIcon) + '~64512~1~' + 'HEAT' + '~';
                                                                    } else {
                                                                        bt[iconIndex] = Icons.GetIcon(tempIcon) + '~35921~0~' + 'HEAT' + '~';
                                                                    }
                                                                    break;
                                                                case 'ECO':
                                                                    if (page.items[0].iconArray !== undefined && page.items[0].iconArray[4] !== '') {
                                                                        tempIcon = page.items[0].iconArray[4];
                                                                    } else {
                                                                        tempIcon = 'alpha-e-circle-outline';
                                                                    }
                                                                    if(stateKeyNumber == Mode) {
                                                                        bt[iconIndex] = Icons.GetIcon(tempIcon) + '~2016~1~' + 'ECO' + '~';
                                                                    } else {
                                                                        bt[iconIndex] = Icons.GetIcon(tempIcon) + '~35921~0~' + 'ECO' + '~';
                                                                    }
                                                                    break;
                                                                case 'FAN_ONLY':
                                                                    if (page.items[0].iconArray !== undefined && page.items[0].iconArray[5] !== '') {
                                                                        tempIcon = page.items[0].iconArray[5];
                                                                    } else {
                                                                        tempIcon = 'fan';
                                                                    }
                                                                    if(stateKeyNumber == Mode) {
                                                                        bt[iconIndex] = Icons.GetIcon(tempIcon) + '~11487~1~' + 'FAN_ONLY' + '~';
                                                                    } else {
                                                                        bt[iconIndex] = Icons.GetIcon(tempIcon) + '~35921~0~' + 'FAN_ONLY' + '~';
                                                                    }
                                                                    break;
                                                                case 'DRY':
                                                                    if (page.items[0].iconArray !== undefined && page.items[0].iconArray[6] !== '') {
                                                                        tempIcon = page.items[0].iconArray[6];
                                                                    } else {
                                                                        tempIcon = 'water-percent';
                                                                    }
                                                                    if(stateKeyNumber == Mode) {
                                                                        bt[iconIndex] = Icons.GetIcon(tempIcon) + '~60897~1~' + 'DRY' + '~';
                                                                    } else {
                                                                        bt[iconIndex] = Icons.GetIcon(tempIcon) + '~35921~0~' + 'DRY' + '~';
                                                                    }
                                                                    break;
                                                            }
                                                            iconIndex++;
                                                        }
                                                        
                                                        if (iconIndex <= 7 && existsState(id + '.ECO') && getState(id + '.ECO').val != null) {
                                                            if (page.items[0].iconArray !== undefined && page.items[0].iconArray[4] !== '') {
                                                                tempIcon = page.items[0].iconArray[4];
                                                            } else {
                                                                tempIcon = 'alpha-e-circle-outline';
                                                            }
                                                            if (getState(id + '.ECO').val && getState(id + '.ECO').val == 1) {
                                                                bt[iconIndex] = Icons.GetIcon(tempIcon) + '~2016~1~' + 'ECO' + '~';
                                                                statusStr = 'ECO';
                                                            } else {
                                                                bt[iconIndex] = Icons.GetIcon(tempIcon) + '~35921~0~' + 'ECO' + '~';
                                                            }
                                                            iconIndex++;
                                                        }
                                
                                                        if (iconIndex <= 7 && existsState(id + '.SWING') && getState(id + '.SWING').val != null) {
                                                            if (page.items[0].iconArray !== undefined && page.items[0].iconArray[7] !== '') {
                                                                tempIcon = page.items[0].iconArray[7];
                                                            } else {
                                                                tempIcon = 'swap-vertical-bold';
                                                            }
                                                            if (getState(id + '.POWER').val && getState(id + '.SWING').val == 1) {          //0=ON oder .SWING = true
                                                                bt[7] = Icons.GetIcon(tempIcon) + '~2016~1~' + 'SWING' + '~';
                                                            } else {
                                                                bt[7] = Icons.GetIcon(tempIcon) + '~35921~0~' + 'SWING' + '~';
                                                            }
                                                            iconIndex++;
                                                        }
                                
                                                        // Power Icon zuletzt pruefen, damit der Mode ggf. mit OFF ueberschrieben werden kann
                                                        if (existsState(id + '.POWER') && getState(id + '.POWER').val != null) {
                                                            if (page.items[0].iconArray !== undefined && page.items[0].iconArray[0] !== '') {
                                                                tempIcon = page.items[0].iconArray[0];
                                                            } else {
                                                                tempIcon = 'power-standby';
                                                            }
                                                            if (States[Mode] == 'OFF' || !getState(id + '.POWER').val) {
                                                                bt[0] = Icons.GetIcon(tempIcon) + '~35921~0~' + 'POWER' + '~';
                                                                statusStr = 'OFF';
                                                            }
                                                            else {
                                                                bt[0] = Icons.GetIcon(tempIcon) + '~2016~1~' + 'POWER' + '~';
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                
                                            let destTemp2 = '';
                                            if (page.items[0].setThermoDestTemp2 != undefined) {
                                                let setValue2 = getState(id + '.' + page.items[0].setThermoDestTemp2).val;
                                                destTemp2 = '' + setValue2.toFixed(2) * 10;
                                            }
                                
                                            let thermoPopup = 1;
                                            if (page.items[0].popupThermoMode1 != undefined) {
                                                thermoPopup = 0;
                                            }
                                            
                                            let temperatureUnit = getState(NSPanel_Path + 'Config.temperatureUnit').val;
                                
                                            let icon_res = bt[0] + bt[1] + bt[2] + bt[3] + bt[4] + bt[5] + bt[6] + bt[7];
                                
                                            out_msgs.push({
                                                payload: 'entityUpd~'
                                                    + name + '~'                                        // Heading
                                                    + GetNavigationString(pageId) + '~'                 // Page Navigation
                                                    + id + '~'                                          // internalNameEntity
                                                    + currentTemp + temperatureUnit+ '~'                // Ist-Temperatur (String)
                                                    + destTemp + '~'                                    // Soll-Temperatur (numerisch ohne Komma)
                                                    + statusStr + '~'                                   // Mode
                                                    + minTemp + '~'                                     // Thermostat Min-Temperatur
                                                    + maxTemp + '~'                                     // Thermostat Max-Temperatur
                                                    + stepTemp + '~'                                    // Schritte für Soll (5°C)
                                                    + icon_res                                      	// Icons Status
                                                    + findLocale('thermostat', 'Currently') + '~'       // Bezeichner vor Aktueller Raumtemperatur
                                                    + findLocale('thermostat', 'State') + '~~'          // Bezeichner vor State
                                                    + temperatureUnit + '~'                      	// iconTemperature dstTempTwoTempMode
                                                    + destTemp2 + '~'                                   // dstTempTwoTempMode --> Wenn Wert, dann 2 Temp
                                                    + thermoPopup                                       // PopUp
                                
                                            });
                                
                                        }
                                
                                        if (Debug) {
                                            console.log('GenerateThermoPage payload: ' + out_msgs);
                                        }
                                        return out_msgs;
                                    } catch (err) {
                                        console.warn('error at function GenerateThermoPage: ' + err.message);
                                    }
                                }
                                

                                Installationsanleitung, Tipps, Alias-Definitionen, FAQ für das Sonoff NSPanel mit lovelace UI unter ioBroker
                                https://github.com/joBr99/nspanel-lovelace-ui/wiki

                                Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                                1 Antwort Letzte Antwort
                                1
                                • icebearI icebear

                                  @armilar

                                  Ich seh schon, ich muß mich ein bischen mehr mit dem unteren Teil des Scripts beschäftigen :relaxed:

                                  ArmilarA Offline
                                  ArmilarA Offline
                                  Armilar
                                  Most Active Forum Testing
                                  schrieb am zuletzt editiert von Armilar
                                  #3503

                                  @icebear

                                  Ich seh schon, ich muß mich ein bischen mehr mit dem unteren Teil des Scripts beschäftigen ☺

                                  Eigentlich nicht... wenn Anregungen und Wünsche, dann gerne melden... :blush:

                                  EDIT: Wenn dein Fenster-Test erfolgreich verläuft, dann setze ich die Version auf die v4.2.0.3

                                  Bei mir funktioniert es schon...

                                  bf06050f-3a88-4939-a8bb-a7f5c63ddf08-image.png

                                  Und noch ein Bildchen mit dem Fenster

                                  Installationsanleitung, Tipps, Alias-Definitionen, FAQ für das Sonoff NSPanel mit lovelace UI unter ioBroker
                                  https://github.com/joBr99/nspanel-lovelace-ui/wiki

                                  Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                                  icebearI 1 Antwort Letzte Antwort
                                  0
                                  • ArmilarA Armilar

                                    @icebear

                                    Ich seh schon, ich muß mich ein bischen mehr mit dem unteren Teil des Scripts beschäftigen ☺

                                    Eigentlich nicht... wenn Anregungen und Wünsche, dann gerne melden... :blush:

                                    EDIT: Wenn dein Fenster-Test erfolgreich verläuft, dann setze ich die Version auf die v4.2.0.3

                                    Bei mir funktioniert es schon...

                                    bf06050f-3a88-4939-a8bb-a7f5c63ddf08-image.png

                                    Und noch ein Bildchen mit dem Fenster

                                    icebearI Online
                                    icebearI Online
                                    icebear
                                    schrieb am zuletzt editiert von
                                    #3504

                                    @armilar said in SONOFF NSPanel mit Lovelace UI:

                                    Wenn dein Fenster-Test erfolgreich verläuft,

                                    Supi, works as expected.

                                    HMIwindow.png

                                    vielen Dank für die schnelle Umsetzung.

                                    ArmilarA 1 Antwort Letzte Antwort
                                    0
                                    • icebearI icebear

                                      @armilar said in SONOFF NSPanel mit Lovelace UI:

                                      Wenn dein Fenster-Test erfolgreich verläuft,

                                      Supi, works as expected.

                                      HMIwindow.png

                                      vielen Dank für die schnelle Umsetzung.

                                      ArmilarA Offline
                                      ArmilarA Offline
                                      Armilar
                                      Most Active Forum Testing
                                      schrieb am zuletzt editiert von
                                      #3505

                                      @icebear

                                      29cbc7ab-c471-438f-9055-86fc0a77388c-image.png

                                      Bestandteil der v4.2.1.1 geworden

                                      Es reicht den unteren Teil ab ( _______ Ab hier keine Konfiguration mehr ______ ) zu ersetzen.

                                      Und falls noch nicht geschehen:

                                      FlashNextion http://nspanel.pky.eu/lovelace-ui/github/nspanel-v4.2.1.tft
                                      

                                      Installationsanleitung, Tipps, Alias-Definitionen, FAQ für das Sonoff NSPanel mit lovelace UI unter ioBroker
                                      https://github.com/joBr99/nspanel-lovelace-ui/wiki

                                      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                                      agreenA 1 Antwort Letzte Antwort
                                      1
                                      • ArmilarA Armilar

                                        @icebear

                                        29cbc7ab-c471-438f-9055-86fc0a77388c-image.png

                                        Bestandteil der v4.2.1.1 geworden

                                        Es reicht den unteren Teil ab ( _______ Ab hier keine Konfiguration mehr ______ ) zu ersetzen.

                                        Und falls noch nicht geschehen:

                                        FlashNextion http://nspanel.pky.eu/lovelace-ui/github/nspanel-v4.2.1.tft
                                        
                                        agreenA Offline
                                        agreenA Offline
                                        agreen
                                        schrieb am zuletzt editiert von
                                        #3506

                                        Kann ich mit dem Grid2 8 Icons hinterlegen bei denen ich ein eigenes Script starten kann?

                                        K 1 Antwort Letzte Antwort
                                        0
                                        • agreenA agreen

                                          Kann ich mit dem Grid2 8 Icons hinterlegen bei denen ich ein eigenes Script starten kann?

                                          K Offline
                                          K Offline
                                          Kuckuckmann
                                          schrieb am zuletzt editiert von
                                          #3507

                                          @agreen

                                          Hi,

                                          willkommen im Forum.

                                          Mit Cardgrid2 hast Du nun die Option 8 statt bisher 6 PageItems nutzen zu können.
                                          Bei jedem PageItem kannst du natürlich ein Icon hinterlegen und auch Aktionen damit ausführen, wie z.B. etwas schalten, oder eine Navigation aufrufen.

                                          LG

                                          NSPanel Dokumentation im GitHub Wiki:

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

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


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          880

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          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