Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Hardware
    4. SONOFF NSPanel mit Lovelace UI

    NEWS

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    • Save The Date: ioBroker@Smart Living Forum Solingen, 14.06.

    SONOFF NSPanel mit Lovelace UI

    This topic has been deleted. Only users with topic management privileges can see it.
    • Armilar
      Armilar Most Active Forum Testing @drloksoft last edited by Armilar

      @drloksoft

      74da3c06-8fcf-4c6a-be54-80638b420086-image.png

      Bei mir läuft das aktuell komplett über die DP's im 0_userdata.0..., da ich keine physische Klimaanlage, jedoch ab und an Tests mit der Card anstehen. Es funktionieren auch die Buttons und die Bezeichner dazu (d.h. Auto im Mode wechselt auch)

      Wenn du das analog aufbaust (sind ja bei dir nicht alle Funktionen erforderlich) und dann per Blockly per Trigger auf den HASS map'st, dann sollte es funktionieren.

      D 1 Reply Last reply Reply Quote 0
      • D
        drloksoft @Armilar last edited by drloksoft

        @armilar okay, teste ich. Ich weiss, es könnte anmaßend sein, aber hast Du ein Blockly beispiel? Ich mache bislang alles in JavaScript. Und Dein MODE ist numerisch. Ich muss den Mode in einen String umwandeln, um ihn an meine Klimaanlage zu übergeben.
        So wie ...
        "off": 0,
        "cool": 1,
        "heat": 2,
        "fan_only": 3,
        "dry": 4,
        "auto": 5
        aber ich kann diese Umwandlung ja dann tatsächlich per Javascript machen ..

        Armilar 1 Reply Last reply Reply Quote 0
        • Armilar
          Armilar Most Active Forum Testing @drloksoft last edited by

          @drloksoft

          Javascript ist doch eh besser 😉

          Wie schon gesagt, habe keine physische Klimaanlage. Bei mir hört alles bei den Datenpunkten der Test-Klimaanlage auf

          D 2 Replies Last reply Reply Quote 1
          • D
            drloksoft @Armilar last edited by

            @armilar ok, ich probiere es.

            Armilar 1 Reply Last reply Reply Quote 1
            • Armilar
              Armilar Most Active Forum Testing @drloksoft last edited by

              @drloksoft

              Falls es nicht klappen sollte, dann melde dich nochmal. Habe aktuell nur wenig bis gar keine Zeit und sehe nur ab und an in den Thread 😊

              T 1 Reply Last reply Reply Quote 0
              • D
                drloksoft @Armilar last edited by

                @armilar ach ja ... also nur zum Verständnis. Die cardTermo greift auf den Datenpunkt "Klimaanlage" in Deinem Beispiel und die darunter liegenden Datenpunkte wie BOOST etc sind einfach Teil der Card, richtig?

                Armilar 1 Reply Last reply Reply Quote 0
                • Armilar
                  Armilar Most Active Forum Testing @drloksoft last edited by

                  @drloksoft

                  ja, nur auf den einen Alias

                  1 Reply Last reply Reply Quote 0
                  • T
                    TT-Tom @Armilar last edited by TT-Tom

                    @armilar @drloksoft

                    ich kann dir auch weiterhelfen, muss nur zwd. mal Geld verdienen gehen bzw. die Welt retten 😉

                    D 1 Reply Last reply Reply Quote 1
                    • D
                      drloksoft @TT-Tom last edited by

                      @tt-tom said in SONOFF NSPanel mit Lovelace UI:

                      ich kann dir auch weiterhelfen, muss nur zwd. mal Geld verdienen gehen bzw. die Welt retten

                      @TT-Tom, das mit der Welt retten kommt immer wieder dazwischen 🙂
                      Ich lege mir die Karten mit der TermoCard, vielleicht liegt es an meinem grundsätzlichem Verstädnisproblem, wie die Karten mit den Datenpunkten interagieren, allerdings ist meine Idee die Ziffern, die die Termokarte unter MODE versteht, in Strings umzuwandeln gescheitert. Am Ende konnte ich zwar die Klimaanlage anschalten und auch wieder ausschalten, wenn ich allerdings den Modus mit einer Funkfernbedienung oder einem VIS Widget ändern wollte, bleib der Modus stoisch auf den vom NSPANEL eingestellten Wert, was sicher an meinem JavaScript lag. Also fange ich von vorne an, um die Card Konfiguration zu verstehen. Wenn Ihr erlaubt, treffe ich ein paar Annahmen und bitte um Kommentare hinsichtlich meines Verständnisses. Wenn es alles zu blöde klingt, dann bitte ich um einen Link zu einer grundsätzlichen Doku. Ich danke Euch auf jeden Fall schon jetzt für die Hilfsbereitschaft! Dass die Seite https://github.com/joBr99/nspanel-lovelace-ui/wiki/ioBroker-ALIAS-Definitionen keine Beschreibung zur CartThermo hat, sehe ich richtig, oder?

                      Also:
                      Die Card erwartet einen Ordner mit verschiedenen Datenpunkten, wie von @Armilar im Screenshot gezeigt.

                      In dem Beispiel in GitHub sind ein paar Werte definiert:
                      code_text

                                      id: "alias.0.TestKlimaVirtual", 
                                      //id: "alias.0.NSPanel.wohnzimmer.AirConWohn",
                                      minValue: 50, 
                                      maxValue: 250,
                                      stepValue: 5,
                                      iconArray: ['power-standby','air-conditioner','snowflake','fire','alpha-e-circle-outline','fan','water-percent','swap-vertical-bold'],
                                      popupThermoMode1: ['Auto','0','1','2','3'],
                                      popupThermoMode2: ['Auto','0','1','2','3','4','5'],
                                      popupThermoMode3: ['Auto','Manual','Boost',],
                                      popUpThermoName: ["Schwenk-Modus", 'Speed', 'Temperatur'],
                                      icon: 'fan',
                                      //setThermoAlias: ['MODE1','MODE2','MODE3'],
                      

                      Woher weiß ich, dass das iconArray die richtige Reihenfolge hat und wie mappe ich den Modus auf das richtige Icon? Sind die irgendwo im Code hinterlegt, weil jedes HVAC System immer die gleichen Modus hat?

                      Im MODE kann ich aktuell nur Werte vom Typ Number speichern, richtig?
                      Gibt es eine einfache Lösung, um dann in das richtige Objekt der Klimaanlage einen String zu schreiben?

                      DANKE nochmal!!

                      T 1 Reply Last reply Reply Quote 0
                      • T
                        TT-Tom @drloksoft last edited by TT-Tom

                        @drloksoft

                        Fangen wir mal Schritt für Schritt an:

                        welche Daten bekommst du bzw. muss du setzen für den jeweiligen Modus in diesen Datenpunkten. Welchen Typ sind diese Daten?

                        alias.0.AirConWohnMode.set_hvac_mode den aktuellen modus setzt und diesen auch anzeigen kann
                        -- setzen des state mit hass.0.entities.climate.106838462bc1.set_hvac_mode
                        -- und lesen mit hass.0.entities.climate.106838462bc1.state

                        Das IconArray ist dieselbe Reihenfolge, wie deine States im DP "MODE".

                        PS erstelle mir mit deinen Daten dann eine virtuelle Anlage

                        Armilar 1 Reply Last reply Reply Quote 1
                        • Armilar
                          Armilar Most Active Forum Testing @TT-Tom last edited by

                          @tt-tom

                          Bin parallel mal mit einer umfangreicheren Dokumentation der Klimaanlage angefangen:

                          https://github.com/joBr99/nspanel-lovelace-ui/wiki/NSPanel-‐-cardThermo-‐-Klimaanlage

                          Können wir bei Bedarf wachsen lassen oder erweitern... ist noch nicht im Seiten-Menü verankert...

                          D 1 Reply Last reply Reply Quote 0
                          • D
                            drloksoft @Armilar last edited by

                            @armilar @TT-Tom ,

                            Guten morgen!
                            Mich hat gestern ein Anflug einer Erkältung umgehauen ... Männergrippe und so ... oder einfach zu viel in der Klimaanlagenluft gestanden 🙂

                            MODE
                            -- setzen des state mit hass.0.entities.climate.106838462bc1.set_hvac_mode
                            --> ein einfacher String muss gesetzt werden. Optionen: ["off","cool","heat","fan_only","dry","auto"]
                            -- und lesen mit hass.0.entities.climate.106838462bc1.state
                            --> steht dort auch als String

                            Temperatur
                            -- setzen mit hass.0.entities.climate.106838462bc1.set_temperature
                            --> als JSON String. Z.B. {"temperature":24}
                            -- lesen in hass.0.entities.climate.106838462bc1.temperature
                            --> dort als number - zB: 24

                            Ein- und ausschalten
                            Mit hass.0.entities.climate.106838462bc1.turn_off und hass.0.entities.climate.106838462bc1.turn_on kann ich mit einem Boolean Wert auch die Klimaanlage ein- und ausschalten. Alternative auch mit hass.0.entities.climate.106838462bc1.toggle. Wenn ich allerdings den Mode in set_hvac_mode setze, dann geht die Klimaanlage auch an (alles außer off) und aus (off).

                            Swing Mode
                            -- setzen des state mit hass.0.entities.climate.106838462bc1.set_swing_mode
                            --> string, optionen: ["Vertical Swing","Highest","High","Low","Lowest"]
                            -- lesen des state mit hass.0.entities.climate.106838462bc1.swing_mode
                            --> string

                            fan mode
                            -- setzen mit hass.0.entities.climate.106838462bc1.set_fan_mode
                            ---> string, optionen: ["Quiet","low","medium","high","auto"]
                            -- lesen mit hass.0.entities.climate.106838462bc1.fan_mode
                            --> string

                            Brauchst Du noch etwas?

                            fa9f1ef6-4e01-4abb-a5a8-8153caf6954b-image.png
                            41d06bc7-54ae-434a-a51b-0eed3a89bd2e-image.png

                            Armilar 1 Reply Last reply Reply Quote 0
                            • Armilar
                              Armilar Most Active Forum Testing @drloksoft last edited by Armilar

                              @drloksoft

                              Okay, fangen wir bei der cardThermo - Definition an...

                              Das müsste die beschriebene Funktionalität im Frontend sein, korrekt?
                              5f80d09a-83a9-4217-b3f7-bf9b5d214beb-Nextion_Editor_6p6EkkG17M.gif

                              let TestKlimaVirtual: PageType =
                              {
                                  'type': 'cardThermo',
                                  'heading': 'Test Klimaanlage',
                                  'items': [{  
                                              id: 'alias.0.TestKlimaVirtual', 
                                              //id: "alias.0.NSPanel.wohnzimmer.AirConWohn",
                                              minValue: 50, // Anpassen an die minimal Mögliche Temperatur (aktuell 5°)
                                              maxValue: 250, // Anpassen an die maximal mögliche Temperatur (aktuell 25°)
                                              stepValue: 5,
                                              popupThermoMode1: ['Vertical Swing','Highest','High','Low','Lowest'],
                                              popupThermoMode2: ['Quiet','low','medium','high','auto'],
                                              popUpThermoName: ['Swing Mode', 'Fan Mode'],
                                              setThermoAlias: ['popupKlima_Mode_1','popupKlima_Mode_2'],
                                              icon: 'fan',
                                           }]
                              };
                              

                              Mein Testdatenpunkt für "Mode" hat folgende States:

                              {
                                "common": {
                                  "name": "Mode",
                                  "desc": "Manuell erzeugt",
                                  "role": "state",
                                  "type": "number",
                                  "read": true,
                                  "write": true,
                                  "def": 0,
                                  "states": {
                                    "0": "OFF",
                                    "1": "COOL",
                                    "2": "HEAT",
                                    "3": "FAN_ONLY",
                                    "4": "DRY",
                                    "5": "AUTO"
                                  }
                                },
                                "type": "state",
                                "_id": "0_userdata.0.Test.Klimaanlage.Mode",
                                "acl": {
                                  "object": 1636,
                                  "state": 1636,
                                  "owner": "system.user.admin",
                                  "ownerGroup": "system.group.administrator"
                                },
                                "from": "system.adapter.admin.0",
                                "user": "system.user.admin",
                                "ts": 1729510343814
                              }
                              

                              ebenso der Alias-DP "Mode":

                              {
                                "_id": "alias.0.TestKlimaVirtual.MODE",
                                "common": {
                                  "name": "MODE",
                                  "role": "level.mode.airconditioner",
                                  "type": "number",
                                  "read": true,
                                  "write": true,
                                  "alias": {
                                    "id": "0_userdata.0.Test.Klimaanlage.Mode"
                                  },
                                  "states": {
                                    "0": "OFF",
                                    "1": "COOL",
                                    "2": "HEAT",
                                    "3": "FAN_ONLY",
                                    "4": "DRY",
                                    "5": "AUTO"
                                  }
                                },
                                "native": {},
                                "type": "state",
                                "acl": {
                                  "object": 1636,
                                  "state": 1636,
                                  "owner": "system.user.admin",
                                  "ownerGroup": "system.group.administrator"
                                },
                                "from": "system.adapter.admin.0",
                                "user": "system.user.admin",
                                "ts": 1729511052706
                              }
                              

                              Meine Testdatenpunkte sind immer noch die gleichen:
                              a4ce43ac-aac9-4091-80c2-3ec9110b0414-image.png

                              1 Reply Last reply Reply Quote 1
                              • D
                                drloksoft last edited by

                                @armilar ja, genau, so sollte es im Frontend aussehen. Einziges Makel aus meiner Sicht ist, dass wenn der Zustand OFF ist, noch immer das icon von AC in grün angezeigt wird. Das verwirrt ein wenig. Die beiden pfeile unten rechts, sind die ein refresh icon?

                                Wenn ich analog zu Dir Testdatenpunkte mit einem MODE in numbers erstelle, erhalte ich das gleiche Ergebnis.

                                Armilar 2 Replies Last reply Reply Quote 0
                                • Armilar
                                  Armilar Most Active Forum Testing @drloksoft last edited by Armilar

                                  @drloksoft

                                  Die beiden Pfeile schalten den Swing-Mode On/Off

                                  Wir könnten das Script noch ändern, in dem die Farben bei ausgeschalteter Anlage ausgegraut sind... Aber das machen wir ganz am Ende

                                  Das ist der Alias...
                                  f5dc0b85-c349-44c9-b7cc-5c15a3d89396-image.png

                                  bekommst du das nachgebaut?

                                  Wenn ich analog zu Dir Testdatenpunkte mit einem MODE in numbers erstelle, erhalte ich das gleiche Ergebnis.

                                  Number ist korrekt. Wir mappen danach per Script von den virtuellen Datenpunkten in den HASS Adapter... Da können wir alles so konvertieren, wie es HA benötigt.

                                  Zunächst erstmal das Virtuelle Device nachbauen...

                                  1 Reply Last reply Reply Quote 1
                                  • Armilar
                                    Armilar Most Active Forum Testing @drloksoft last edited by Armilar

                                    @drloksoft

                                    Mit dem folgenden Teil sollte die Sysnchronisation zwischen Mode und Setpoint bereits funktionieren (ggfs. Datenpunkte in 0_userdata checken)

                                    Einfach neues JS-Script erzeugen und reinkopieren...

                                    const vMode = ['off', 'cool', 'heat', 'fan_only', 'dry', 'auto'];
                                    
                                    // Synchronisation Mode (HASS --> ioBroker)
                                    on({ id: [].concat(['hass.0.entities.climate.106838462bc1.state']), change: 'ne' }, async (obj) => {
                                        setStateDelayed('0_userdata.0.Test.Klimaanlage.Mode', { val: (vMode.indexOf(obj.state ? obj.state.val : '')), ack: false }, parseInt(((0) || '').toString(), 10), false);
                                    });
                                    
                                    // Modeänderung aus NSPanel (ioBroker --> HASS)
                                    on({ id: [].concat(['0_userdata.0.Test.Klimaanlage.Mode']), change: 'ne' }, async (obj) => {
                                        setStateDelayed('hass.0.entities.climate.106838462bc1.set_hvac_mode', { val: (vMode[(obj.state ? obj.state.val : '')]), ack: false }, parseInt(((0) || '').toString(), 10), false);
                                    });
                                    
                                    // Synchronisation der SOLL-Temperatur (HASS --> ioBroker)
                                    on({ id: [].concat(['hass.0.entities.climate.106838462bc1.temperature']), change: 'ne' }, async (obj) => {
                                         setStateDelayed('0_userdata.0.Test.Klimaanlage.Soll_Temperatur', { val: (obj.state ? obj.state.val : ''), ack: false }, parseInt(((0) || '').toString(), 10), false);
                                    });
                                    
                                    // Senden der Solltemperatur (ioBroker an HASS)
                                    on({ id: [].concat(['0_userdata.0.Test.Klimaanlage.Soll_Temperatur']), change: 'ne' }, async (obj) => {
                                        setStateDelayed('hass.0.entities.climate.106838462bc1.set_temperature', { val: (['{"temperature":',(obj.state ? obj.state.val : ''),'}'].join('')), ack: false }, parseInt(((0) || '').toString(), 10), false);
                                    });
                                    

                                    Fehlt aktuell noch die Auswertung des Swing-/Fan-Mode und die Sonderbehandlung für On/Off

                                    Funktioniert das bis hierher?

                                    EDIT: Noch kurz einen DP ausgetauscht... Kanns halt nicht testen 😉

                                    EDIT 2: Mapping von .state erfolgt ja auch aus Array... habs noch geändert

                                    D 1 Reply Last reply Reply Quote 1
                                    • D
                                      drloksoft @Armilar last edited by

                                      @armilar super! Danke! Ich gucke es mir an und baue es nach. Melde mich umgehend.

                                      D 1 Reply Last reply Reply Quote 0
                                      • D
                                        drloksoft @drloksoft last edited by drloksoft

                                        @Armilar, soweit funktioniert es! Ich habe nun den Alias für das Test-Gerät in die NSPanel.ts übernommen und das JavaScript aktiviert. Auch wenn ich den MODE in der VIS ändere, bekomme ich sekunden später den neuen MODE im NSPANEL. Großartig!

                                        Der Power State ist natürlih noch nicht synchron. Aber das könnte ich ja auch mit dem JavaScript syncronisieren, oder?

                                        T Armilar 2 Replies Last reply Reply Quote 0
                                        • T
                                          TT-Tom @drloksoft last edited by

                                          @drloksoft
                                          Mich hat auch der Männerschnupfen erwischt, aber wie ich sehe war @Armilar ja ganz fleißig. Ich schau gelegentlich mal rein.

                                          Armilar 1 Reply Last reply Reply Quote 0
                                          • Armilar
                                            Armilar Most Active Forum Testing @TT-Tom last edited by

                                            @tt-tom ganz gute Besserung 😊

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            637
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

                                            lovelace ui nspanel sonoff
                                            260
                                            7128
                                            4290784
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo