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

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    SONOFF NSPanel mit Lovelace UI

    This topic has been deleted. Only users with topic management privileges can see it.
    • T
      TimoWald @Armilar last edited by

      @armilar testweise habe ich den Switch erstmal auf eine Lampe gelegt. Aber der datenpunkt ändert sich nicht einmal.

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

        @timowald

        spannend, habe eben einen Test gemacht. Der Switch ist bei mir nicht standardmäßig eingestellt, sondern das Passwort... Wenn der schon im QR-Code ist, kann ich ihn ja auch anzeigen 😊

        Also nach ein zwei Schaltversuchen hat sich der Switch geändert. Der Alias brauchte wohl einen kleinen Anschubser... Jetzt schaltet der aber komplett hin und her...

        M 1 Reply Last reply Reply Quote 1
        • Neuschwansteini
          Neuschwansteini @TT-Tom last edited by Neuschwansteini

          @tt-tom @Armilar

          habe ein Problem mit einem neuen NSPanel, bei dem brauche ich die Relais als echte Schalter. Immer, wenn ich schalte, kommt eine Fehlermeldung, dass Username/Password nicht stimmen, ich habe aber alles gesetzt.. (bei allen anderen 12 gehts, nur das neue hier zickt rum)..
          Hab mir jetzt schon n Wolf gesucht.. also mqtt password und das password vom Panel stimmen. Fehler ist bei Tasmota Firmware 14.4.1 und auch bei 14.5.0.

          Also senden vom Panel zu iobroker geht, stimmen alle Werte, aber wenn ich etwas vom iobroker zum Panel senden moechte zum setzen der Relais, kommt dieser Fehler. Das Panel zeigt auch alle Menues an, das funktioniert. Ich kann nur nicht die Relais vom iobroker aus schalten... was ist das?

          Hier der Fehler:

          avascript.0
          2025-02-21 10:24:02.684	warn	script.js.common.NSPanels.NSP12-FLurOG-4505: AxiosError: Request failed with status code 401 at settle (file:///opt/iobroker/node_modules/@iobroker-javascript.0/axios/lib/core/settle.js:19:12) at IncomingMessage.handleStreamEnd (file:///opt/iobroker/node_modules/@iobroker-javascript.0/axios/lib/adapters/http.js:599:11) at IncomingMessage.emit (node:events:530:35) at IncomingMessage.emit (node:domain:489:12) at endReadableNT (node:internal/streams/readable:1698:12) at processTicksAndRejections (node:internal/process/task_queues:82:21) at Axios.request (file:///opt/iobroker/node_modules/@iobroker-javascript.0/axios/lib/core/Axios.js:45:41) at processTicksAndRejections (node:internal/process/task_queues:95:5) { code: 'ERR_BAD_REQUEST', config: { transitional: { silentJSONParsing: true, forcedJSONParsing: true, clarifyTimeoutError: false }, adapter: [ 'xhr', 'http', 'fetch' ], transformRequest: [ [Function: transformRequest] ], transformResponse: [ [Function: transformResponse] ], timeout: 0, xsrfCookieName: 'XSRF-TOKEN', xsrfHeaderName: 'X-XSRF-TOKEN', maxContentLength: -1, maxBodyLength: -1, env: { FormData: [Function], Blob: [class Blob] }, validateStatus: [Function: validateStatus], headers: Object [AxiosHeaders] { Accept: 'application/json, text/plain, */*', 'Content-Type': undefined, 'User-Agent': 'axios/1.7.9', 'Accept-Encoding': 'gzip, compress, deflate, br' }, method: 'get', url: 'http://10.1.2.21/cm?cmnd=Power2 true', data: undefined }, request: <ref *1> ClientRequest { _events: [Object: null prototype] { error: [Array], abort: [Function (anonymous)], aborted: [Function (anonymous)], connect: [Function (anonymous)], socket: [Function (anonymous)], timeout: [Function (anonymous)], finish: [Function: requestOnFinish] }, _eventsCount: 7, _maxListeners: 100, outputData: [], outputSize: 0, writable: true, destroyed: false, _last: true, chunkedEncoding: false, shouldKeepAlive: false, maxRequestsOnConnectionReached: false, _defaultKeepAlive: true, useChunkedEncodingByDefault: false, sendDate: false, _removedConnection: false, _removedContLen: false, _removedTE: false, strictContentLength: false, _contentLength: 0, _hasBody: true, _trailer: '', finished: true, _headerSent: true, _closed: false, socket: Socket { connecting: false, _hadError: false, _parent: null, _host: null, _closeAfterHandlingError: false, _events: [Object], _readableState: [ReadableState], _writableState: [WritableState], allowHalfOpen: false, _maxListeners: 100, _eventsCount: 7, _sockname: null, _pendingData: null, _pendingEncoding: '', server: null, _server: null, timeout: 5000, parser: null, _httpMessage: [Circular *1], [Symbol(async_id_symbol)]: 1973004, [Symbol(kHandle)]: [TCP], [Symbol(lastWriteQueueSize)]: 0, [Symbol(timeout)]: Timeout { _idleTimeout: 5000, _idlePrev: [TimersList], _idleNext: [TimersList], _idleStart: 1218737, _onTimeout: [Function: bound ], _timerArgs: undefined, _repeat: null, _destroyed: false, [Symbol(refed)]: false, [Symbol(kHasPrimitive)]: false, [Symbol(asyncId)]: 1973003, [Symbol(triggerId)]: 1973002 }, [Symbol(kBuffer)]: null, [Symbol(kBufferCb)]: null, [Symbol(kBufferGen)]: null, [Symbol(shapeMode)]: true, [Symbol(kCapture)]: false, [Symbol(kSetNoDelay)]: true, [Symbol(kSetKeepAlive)]: true, [Symbol(kSetKeepAliveInitialDelay)]: 60, [Symbol(kBytesRead)]: 0, [Symbol(kBytesWritten)]: 0 }, _header: 'GET /cm?cmnd=Power2%20true HTTP/1.1\r\n' + 'Accept: application/json, text/plain, */*\r\n' + 'User-Agent: axios/1.7.9\r\n' + 'Accept-Encoding: gzip, compress, deflate, br\r\n' + 'sentry-trace: 8ce1f1707915453ba4d2928e78a95a22-afbb86bd9e495b9b\r\n' + 'baggage: sentry-environment=production,sentry-release=iobroker.javascript%408.9.1,sentry-public_key=f3b9740caaee4ee69eb68019d71526ff,sentry-trace_id=8ce1f1707915453ba4d2928e78a95a22\r\n' + 'Host: 10.1.2.21\r\n' + 'Connection: keep-alive\r\n' + '\r\n', _keepAliveTimeout: 0, _onPendingData: [Function: nop], agent: Agent { _events: [Object: null prototype], _eventsCount: 2, _maxListeners: undefined, defaultPort: 80, protocol: 'http:', options: [Object: null prototype], requests: [Object: null prototype] {}, sockets: [Object: null prototype], freeSockets: [Object: null prototype] {}, keepAliveMsecs: 1000, keepAlive: true, maxSockets: Infinity, maxFreeSockets: 256, scheduling: 'lifo', maxTotalSockets: Infinity, totalSocketCount: 1, [Symbol(shapeMode)]: false, [Symbol(kCapture)]: false }, socketPath: undefined, method: 'GET', maxHeaderSize: undefined, insecureHTTPParser: undefined, joinDuplicateHeaders: undefined, path: '/cm?cmnd=Power2%20true', _ended: true, res: IncomingMessage { _events: [Object], _readableState: [ReadableState], _maxListeners: 100, socket: [Socket], httpVersionMajor: 1, httpVersionMinor: 1, httpVersion: '1.1', complete: true, rawHeaders: [Array], rawTrailers: [], joinDuplicateHeaders: undefined, aborted: false, upgrade: false, url: '', method: null, statusCode: 401, statusMessage: 'Unauthorized', client: [Socket], _consuming: true, _dumped: false, req: [Circular *1], _eventsCount: 4, responseUrl: 'http://10.1.2.21/cm?cmnd=Power2%20true', redirects: [], [Symbol(shapeMode)]: true, [Symbol(kCapture)]: false, [Symbol(kHeaders)]: [Object], [Symbol(kHeadersCount)]: 16, [Symbol(kTrailers)]: null, [Symbol(kTrailersCount)]: 0 }, aborted: false, timeoutCb: [Function: emitRequestTimeout], upgradeOrConnect: false, parser: null, maxHeadersCount: null, reusedSocket: false, host: '10.1.2.21', protocol: 'http:', _redirectable: Writable { _events: [Object], _writableState: [WritableState], _maxListeners: 100, _options: [Object], _ended: true, _ending: true, _redirectCount: 0, _redirects: [], _requestBodyLength: 0, _requestBodyBuffers: [], _eventsCount: 3, _onNativeResponse: [Function (anonymous)], _currentRequest: [Circular *1], _currentUrl: 'http://10.1.2.21/cm?cmnd=Power2%20true', [Symbol(shapeMode)]: true, [Symbol(kCapture)]: false }, [Symbol(shapeMode)]: false, [Symbol(kCapture)]: false, [Symbol(kBytesWritten)]: 0, [Symbol(kNeedDrain)]: false, [Symbol(corked)]: 0, [Symbol(kOutHeaders)]: [Object: null prototype] { accept: [Array], 'user-agent': [Array], 'accept-encoding': [Array], 'sentry-trace': [Array], baggage: [Array], host: [Array] }, [Symbol(errored)]: null, [Symbol(kHighWaterMark)]: 16384, [Symbol(kRejectNonStandardBodyWrites)]: false, [Symbol(kUniqueHeaders)]: null }, response: { status: 401, statusText: 'Unauthorized', headers: Object [AxiosHeaders] { 'content-type': 'application/json', server: 'Tasmota/14.4.1 (ESP32-D0WD-V3)', 'cache-control': 'no-cache, no-store, must-revalidate', pragma: 'no-cache', expires: '-1', 'accept-ranges': 'none', 'transfer-encoding': 'chunked', connection: 'close' }, config: { transitional: [Object], adapter: [Array], transformRequest: [Array], transformResponse: [Array], timeout: 0, xsrfCookieName: 'XSRF-TOKEN', xsrfHeaderName: 'X-XSRF-TOKEN', maxContentLength: -1, maxBodyLength: -1, env: [Object], validateStatus: [Function: validateStatus], headers: [Object [AxiosHeaders]], method: 'get', url: 'http://10.1.2.21/cm?cmnd=Power2 true', data: undefined }, request: <ref *1> ClientRequest { _events: [Object: null prototype], _eventsCount: 7, _maxListeners: 100, outputData: [], outputSize: 0, writable: true, destroyed: false, _last: true, chunkedEncoding: false, shouldKeepAlive: false, maxRequestsOnConnectionReached: false, _defaultKeepAlive: true, useChunkedEncodingByDefault: false, sendDate: false, _removedConnection: false, _removedContLen: false, _removedTE: false, strictContentLength: false, _contentLength: 0, _hasBody: true, _trailer: '', finished: true, _headerSent: true, _closed: false, socket: [Socket], _header: 'GET /cm?cmnd=Power2%20true HTTP/1.1\r\n' + 'Accept: application/json, text/plain, */*\r\n' + 'User-Agent: axios/1.7.9\r\n' + 'Accept-Encoding: gzip, compress, deflate, br\r\n' + 'sentry-trace: 8ce1f1707915453ba4d2928e78a95a22-afbb86bd9e495b9b\r\n' + 'baggage: sentry-environment=production,sentry-release=iobroker.javascript%408.9.1,sentry-public_key=f3b9740caaee4ee69eb68019d71526ff,sentry-trace_id=8ce1f1707915453ba4d2928e78a95a22\r\n' + 'Host: 10.1.2.21\r\n' + 'Connection: keep-alive\r\n' + '\r\n', _keepAliveTimeout: 0, _onPendingData: [Function: nop], agent: [Agent], socketPath: undefined, method: 'GET', maxHeaderSize: undefined, insecureHTTPParser: undefined, joinDuplicateHeaders: undefined, path: '/cm?cmnd=Power2%20true', _ended: true, res: [IncomingMessage], aborted: false, timeoutCb: [Function: emitRequestTimeout], upgradeOrConnect: false, parser: null, maxHeadersCount: null, reusedSocket: false, host: '10.1.2.21', protocol: 'http:', _redirectable: [Writable], [Symbol(shapeMode)]: false, [Symbol(kCapture)]: false, [Symbol(kBytesWritten)]: 0, [Symbol(kNeedDrain)]: false, [Symbol(corked)]: 0, [Symbol(kOutHeaders)]: [Object: null prototype], [Symbol(errored)]: null, [Symbol(kHighWaterMark)]: 16384, [Symbol(kRejectNonStandardBodyWrites)]: false, [Symbol(kUniqueHeaders)]: null }, data: { WARNING: 'Need user=<username>&password=<password>' } }, status: 401}
          

          T 1 Reply Last reply Reply Quote 0
          • T
            ticaki Developer @Neuschwansteini last edited by

            @neuschwansteini

            Die Relais werden über http geschaltet. Hast du in der Oberfläche vom Tasmota ein web passwort gesetzt, wenn ja dann ergänze das. Suche nach tasmota_web_admin_ in der script Konfigurationssection.

            Neuschwansteini 1 Reply Last reply Reply Quote 2
            • Neuschwansteini
              Neuschwansteini @ticaki last edited by

              @ticaki sagte in SONOFF NSPanel mit Lovelace UI:

              @neuschwansteini

              Die Relais werden über http geschaltet. Hast du in der Oberfläche vom Tasmota ein web passwort gesetzt, wenn ja dann ergänze das. Suche nach tasmota_web_admin_ in der script Konfigurationssection.

              Danke! Das wars, obwohl im Panel das Password gesetzt war, und im Skript auch. Hab beides jetzt rausgenommen, jetzt gehts.
              Setz ich im Script das Pw und im Panel, gibts die Meldung. Script Version 4.5.0.5

              T 1 Reply Last reply Reply Quote 0
              • T
                ticaki Developer @Neuschwansteini last edited by ticaki

                @neuschwansteini

                Dann ersetzt hier mal {einValue} -> Value und schaue obs dann geht:

                http://{get_current_tasmota_ip_address()}/cm?user={tasmota_web_admin_user}&password={tasmota_web_admin_password}&cmnd=Status0
                

                Wenn das nicht geht schaue ich mal rein, ob sich da was geändert hat 🙂

                hoffe es ist soweit selbst erklärend.

                T 1 Reply Last reply Reply Quote 0
                • T
                  TimoWald @ticaki last edited by

                  @ticaki Bei mir seht es so aus. Was ist daran falsch?

                  b1d594e0-0508-46c6-b3de-d07aae3b023f-grafik.png

                  ad19c506-5dd1-4bbe-a1c6-ce745df7aca7-grafik.png

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

                    @timowald
                    das heisst nicht SET sonder SWITCH

                    https://github.com/joBr99/nspanel-lovelace-ui/wiki/ioBroker---FAQ-&-Anleitungen#5-qr-code-page

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

                      @tt-tom Das legt er automatisch an. Ich lege einen Gerätetyp Info an und er macht Steckdose draus.
                      Habe es nochmal neu angelegt. Geht aber trotzdem noch nicht.
                      ed53941c-f266-48e2-b652-cfb60b0771de-grafik.png

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

                        @timowald

                        lass den Gerätemanager sein

                        lösche den alias.0 und den 0_userdata.0 Eintrag.
                        dein Pageitem sollte so aussehen

                        { id: 'alias.0.NSPanel.GuestWifi', hidePassword: false, autoCreateALias: true }
                        

                        das Script dann neu starten und die Datenpunkte werden automatisch angelegt.

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

                          @tt-tom Prima, obwohl ich das schon öffters gemacht habe funktionierte es nicht. Aber jetzt schon. Dachte ich muss immer über Geräte gehen. Danke!

                          1 Reply Last reply Reply Quote 1
                          • M
                            Max_yeah last edited by Max_yeah

                            Habt ihr eine Idee warum meine Charts ins negative gehen?

                            PXL_20250221_203352932.jpg

                            das schreibt das script in den datenpunkt:

                            1418.8~2366.5~1739.3~1291.9^0:00~1603.9~1590.1~1084~688.6^4:00~2162.6~1087.1~1114.2~1232.8^8:00~203.3~23~15.1~91.3^12:00~-25~113.2~35.6~24.3^16:00~20.8~65.2~138.1~17.6^20:00
                            

                            und das ist meine card config:

                            let CardChartExample: PageType =
                            {
                                "type": "cardChart",
                                "heading": "Test Diagram",
                                "subPage": false,
                                "items": [{ 
                                            id: 'alias.0.NSPanel.Diagramme.TestChart', 
                                            yAxis: 'Leistung [W]', 
                                            yAxisTicks: [], // leave empty for automatic calculation of the y-axis
                                            onColor: Yellow
                                         }]
                            };
                            
                            M Armilar 2 Replies Last reply Reply Quote 0
                            • M
                              Max_yeah @Max_yeah last edited by

                              @TT-Tom ich hab auch mal das script von deiner github Seite getestet, da sind die Balken zwar im positiven Bereich, jedoch stimmen die Werte nicht.

                              1 Reply Last reply Reply Quote 0
                              • M
                                Max_yeah @Armilar last edited by

                                @armilar Nochmal zu dem QR Card, ich habe jetzt mal wie beschrieben den SWITCH gelöscht und auf hidepassword auf true gestellt, jedoch wird jetzt ein nicht funktionierender Schalter angezeigt, den ich ja aber garnicht haben will.

                                Ich hätte gerne ohne Schalter und ohne Passwort. Ist das möglich?

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

                                  @max_yeah

                                  @armilar Nochmal zu dem QR Card, ich habe jetzt mal wie beschrieben den SWITCH gelöscht und auf hidepassword auf true gestellt, jedoch wird jetzt ein nicht funktionierender Schalter angezeigt, den ich ja aber garnicht haben will.

                                  Ich hätte gerne ohne Schalter und ohne Passwort. Ist das möglich?

                                  Muss ich bei Gelegenheit mal im Emulator testen... Gib mir ein paar Tage...

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

                                    @max_yeah

                                    das schreibt das script in den datenpunkt:

                                    1418.8~2366.5~1739.3~1291.9^0:00~1603.9~1590.1~1084~688.6^4:00~2162.6~1087.1~1114.2~1232.8^8:00~203.3~23~15.1~91.3^12:00~-25~113.2~35.6~24.3^16:00~20.8~65.2~138.1~17.6^20:00
                                    

                                    Da ist etwas nicht korrekt. Welches Skript ist das?

                                    Die HMI verträgt keine Fließkommazahlen. Ein Komma sollte nicht im String vorkommen - die letzte Stelle ist die Zahl hinter dem Komma. Ggfs. ein Math.round() verwenden um das Komma zu eliminieren.

                                    Die cardChart hat ebenfalls seit geraumer Zeit einen Bug und kann nicht mit so großen Werten umgehen. Eine Darstellung in KW ( /1000) würde jedoch passen

                                    EDIT: Fumanchi hatte sich bereits vor einiger Zeit angeboten, die cardChart und cardLChart zu verbessern, ist aber bislang nicht dazu gekommen...

                                    M 1 Reply Last reply Reply Quote 1
                                    • M
                                      Max_yeah @Armilar last edited by

                                      @armilar
                                      Ist das history js script von hier.
                                      https://github.com/joBr99/nspanel-lovelace-ui/wiki/cardchart

                                      Aber ja kann sein das es bei mir große zahlen und mit noch Komma Stelle. Ich werde das mal prüfen morgen ob eine Rundung und ein wandeln auf kW hilft.

                                      Danke und gute Nacht.

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

                                        @max_yeah

                                        ungetestet, aber mach mal aus:

                                        var value = (Math.round(result.result[j].val * 10) / 10);
                                        

                                        das

                                        var value = Math.round(result.result[j].val / 1000);
                                        

                                        Math.round(val * 10) / 10 baut dir die nicht benötigte Nachkommastelle ein. Math.round(val) rundet auf Ganzzahlen und W in kW ist ( / 1000). Könnte aufgrund der in der HMI verwendeten Kommaerzeugung auch ein ( / 100) sein... Musste ausprobieren...

                                        M 1 Reply Last reply Reply Quote 1
                                        • M
                                          Max_yeah @Armilar last edited by

                                          @armilar ja perfekt. Das war die richtige Zeile Code. Vielen Dank.
                                          Für meine Werte in Watt sind die 100 der richtige Faktor.
                                          Es gilt zu wissen das auch die Werte nach dem gleichen Prinzip wie die Skala übergeben werden müssen.
                                          Um die Nachkommastelle darstellen zu können muss man den Wert mit 10 multiplizieren. (nur noch mal für andere die Hilfe brauchen und das lesen)
                                          Die letzte Stelle ist die Nachkommastelle.
                                          Das wäre dann die richte Rechnung:

                                          var value = Math.round(result.result[j].val * 10);
                                          

                                          Wichtig ist das man vor dem Runden multipliziert um nicht zu viel details zu verlieren.
                                          Für meine Werte die im 1000er Bereich sind (Watt) habe ich jetzt folgende Rechnung gemacht:

                                          var value = Math.round(result.result[j].val / 1000 * 10);
                                          

                                          Ich denke man sollte das script ein bisschen erweitern indem man am die Berechnung für den value korrigiert, und vielleicht noch die Möglichkeit bietet einen Multiplikator anzugeben um hohe Werte, die scheinbar Probleme machen, umwandeln zu können.

                                          zb. so:

                                          var value = Math.round(result.result[j].val / multi * 10);
                                          

                                          Oder eben auf diese Zeile aufmerksam machen, denn das script muss ja die werte nehmen wie sie aus der history kommen, und eine Änderung der Potenz ist nur an dieser stelle möglich.

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

                                            @max_yeah

                                            super das es funktioniert...

                                            Ich geb den Tipp mit dem Umrechnungsfaktor an @TT-Tom weiter 😉

                                            Ist mit der Nachkommastelle eh ein Bug im cardChart History-Skript...

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            988
                                            Online

                                            31.7k
                                            Users

                                            79.7k
                                            Topics

                                            1.3m
                                            Posts

                                            lovelace ui nspanel sonoff
                                            261
                                            7149
                                            4767540
                                            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