Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
Logo
  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.0k

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

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

SONOFF NSPanel mit Lovelace UI

SONOFF NSPanel mit Lovelace UI

Scheduled Pinned Locked Moved Hardware
lovelace uinspanelsonoff
7.7k Posts 271 Posters 6.7m Views 253 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • 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
    wrote on last edited by
    #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 Reply Last reply
    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
      wrote on last edited by 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 Reply Last reply
      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
        wrote on last edited by
        #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 Reply Last reply
        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
          wrote on last edited by 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 Reply Last reply
          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
            wrote on last edited by 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 😊

            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 Replies Last reply
            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 😊

              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
              wrote on last edited by
              #3499

              @armilar

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

              Jetzt funktioniert es!

              HMIbat.png

              ArmilarA 1 Reply Last reply
              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
                wrote on last edited by
                #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 Reply Last reply
                0
                • ArmilarA Armilar

                  @icebear

                  hübsche Batterie 😉

                  icebearI Online
                  icebearI Online
                  icebear
                  wrote on last edited by
                  #3501

                  @armilar

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

                  ArmilarA 1 Reply Last reply
                  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 😊

                    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
                    wrote on last edited by
                    #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 Reply Last reply
                    1
                    • icebearI icebear

                      @armilar

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

                      ArmilarA Offline
                      ArmilarA Offline
                      Armilar
                      Most Active Forum Testing
                      wrote on last edited by 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... 😊

                      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 Reply Last reply
                      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... 😊

                        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
                        wrote on last edited by
                        #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 Reply Last reply
                        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
                          wrote on last edited by
                          #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 Reply Last reply
                          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
                            wrote on last edited by
                            #3506

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

                            K 1 Reply Last reply
                            0
                            • agreenA agreen

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

                              K Offline
                              K Offline
                              Kuckuckmann
                              wrote on last edited by
                              #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 Reply Last reply
                              1
                              • K Kuckuckmann

                                @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

                                agreenA Offline
                                agreenA Offline
                                agreen
                                wrote on last edited by
                                #3508

                                @kuckuckmann
                                wie kann ich eine Funktion aufrufen?

                                K ArmilarA 2 Replies Last reply
                                0
                                • agreenA agreen

                                  @kuckuckmann
                                  wie kann ich eine Funktion aufrufen?

                                  K Offline
                                  K Offline
                                  Kuckuckmann
                                  wrote on last edited by
                                  #3509

                                  @agreen

                                  Was ist denn für Dich eine Funktion?

                                  NSPanel Dokumentation im GitHub Wiki:

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

                                  1 Reply Last reply
                                  0
                                  • agreenA agreen

                                    @kuckuckmann
                                    wie kann ich eine Funktion aufrufen?

                                    ArmilarA Offline
                                    ArmilarA Offline
                                    Armilar
                                    Most Active Forum Testing
                                    wrote on last edited by Armilar
                                    #3510

                                    @agreen

                                    Entweder mit einem Datenpunkt über den Alias "Taste" oder über einen Alias "Licht" oder über einen Alias "Steckdose"....

                                    Hierfür müsstest du einen eigenen Datenpunkt im 0_userdata.0... anlegen. Wenn sich dieser dann ändert, kannst du z.B. mit einem Trigger in einem Blockly/JS alles mögliche schalten oder aufrufen...

                                    Also komplett entkoppelt vom TS-Script

                                    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 Reply Last reply
                                    0
                                    • ArmilarA Armilar

                                      @agreen

                                      Entweder mit einem Datenpunkt über den Alias "Taste" oder über einen Alias "Licht" oder über einen Alias "Steckdose"....

                                      Hierfür müsstest du einen eigenen Datenpunkt im 0_userdata.0... anlegen. Wenn sich dieser dann ändert, kannst du z.B. mit einem Trigger in einem Blockly/JS alles mögliche schalten oder aufrufen...

                                      Also komplett entkoppelt vom TS-Script

                                      agreenA Offline
                                      agreenA Offline
                                      agreen
                                      wrote on last edited by
                                      #3511

                                      @armilar
                                      ok, so habe ich das bereits gelöst ... ich dachte es gibt eine leichtere Möglichkeit.
                                      trotzdem danke.

                                      ArmilarA 1 Reply Last reply
                                      0
                                      • agreenA agreen

                                        @armilar
                                        ok, so habe ich das bereits gelöst ... ich dachte es gibt eine leichtere Möglichkeit.
                                        trotzdem danke.

                                        ArmilarA Offline
                                        ArmilarA Offline
                                        Armilar
                                        Most Active Forum Testing
                                        wrote on last edited by
                                        #3512

                                        @agreen

                                        ich dachte es gibt eine leichtere Möglichkeit.

                                        leider nicht... Für einen direkten Funktionsaufruf müsste eine Funktion global definiert sein. Das kann auch schnell ins Chaos führen 😉

                                        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 Reply Last reply
                                        0
                                        • Nobody elseN Offline
                                          Nobody elseN Offline
                                          Nobody else
                                          wrote on last edited by
                                          #3513

                                          Hallo Zusammen,

                                          Ich habe ein Problem, das NS Panel macht keinen AP auf nach dem Flashen.
                                          Geflasht habe ich mit einen FTDI Board, das lief auch 100% durch.
                                          Folgende Flash Programme habe ich genommen ESP-Flasher und ESP-Home-Flasher, mit der Datei tasmota32-nspanel.bin
                                          Folgende Spannungsversorgungen habe ich probiert 3,3V FTDI Board/ 5V Direkt am Konnektor/ 230V, natürlich nicht gleichzeitig.
                                          Das Panel Funktionierte vorher mit der Stock Firmware.
                                          Ich habe schon ein Panel Reklamiert, weil ich dachte es sei Defekt, aber der Fehler muss bei mir liegen.

                                          Gruß Matthias

                                          K 1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          548

                                          Online

                                          32.4k

                                          Users

                                          81.3k

                                          Topics

                                          1.3m

                                          Posts
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Recent
                                          • Tags
                                          • Unread 0
                                          • Categories
                                          • Unreplied
                                          • Popular
                                          • GitHub
                                          • Docu
                                          • Hilfe