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

NEWS

  • Wartung am 15.11. – Forum ab 22:00 Uhr nicht erreichbar
    BluefoxB
    Bluefox
    11
    2
    204

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

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

Sonoff NSPanel

Sonoff NSPanel

Scheduled Pinned Locked Moved Hardware
1.5k Posts 78 Posters 636.1k Views 80 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.
  • H holgerwolf

    @a200 Das ist in den DP für den Screensaver ein wenig anders. Da muss der komplette Objektnamen rein. Also in der Art:

    firstScreensaverEntity: { ScreensaverEntity: "zigbee.0.00158d0002c77840.temperature", ScreensaverEntityIcon: "thermometer", ScreensaverEntityText: "Horreo", ScreensaverEntityUnitText: "°C" },
    
    ArmilarA Offline
    ArmilarA Offline
    Armilar
    Most Active Forum Testing
    wrote on last edited by
    #479

    @holgerwolf

    dachte ich auch erst. Aber das scheint bei @a200 ein Objektname zu sein. Nur eben unter javascript.0.

    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
    • a200A a200

      @armilar

      {
        "common": {
          "name": "Temperatur Außen",
          "type": "number",
          "role": "state",
          "unit": "°C",
          "custom": {
            "influxdb.1": {
              "enabled": true,
              "changesOnly": false,
              "debounce": "1000",
              "retention": "31536000",
              "changesRelogInterval": 0,
              "changesMinDelta": 0,
              "storageType": "",
              "aliasId": ""
            }
          }
        },
        "native": {
          "name": "Temperatur Außen",
          "type": "number",
          "role": "state",
          "unit": "°C"
        },
        "type": "state",
        "from": "system.adapter.javascript.0",
        "user": "system.user.admin",
        "ts": 1606557292061,
        "_id": "javascript.0.Wetterstation.Aussentemperatur",
        "acl": {
          "object": 1636,
          "state": 1636,
          "owner": "system.user.admin",
          "ownerGroup": "system.group.administrator"
        }
      }
      

      Bis jetzt war die Rolle des Datenpunktes für die Darstellung ausschlaggebend. Ich vermute, dass ich auch hier den richtigen Typ auswählen muss.

      Wahrscheinlich wäre es eh sinnvoll zu den Screenshots auch die Datenpunkte zeigen oder wenigstens die Rolle und die benötigte Zustände (SET/GET/ACTUAL) dazu schreiben. Beispielsweise wird mir der DP: alias.0.MyNSPanel.Einstellungen.brightnessDay als Zahl angezeigt. Ich habe verstanden, dass der sowohl SET als auch ACTUAL braucht, aber die Rolle scheint immer noch falsch zu sein.

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

      @a200 sagte in Sonoff NSPanel:

      @armilar

      {
        "common": {
          "name": "Temperatur Außen",
          "type": "number",
          "role": "state",
          "unit": "°C",
          "custom": {
            "influxdb.1": {
              "enabled": true,
              "changesOnly": false,
              "debounce": "1000",
              "retention": "31536000",
              "changesRelogInterval": 0,
              "changesMinDelta": 0,
              "storageType": "",
              "aliasId": ""
            }
          }
        },
        "native": {
          "name": "Temperatur Außen",
          "type": "number",
          "role": "state",
          "unit": "°C"
        },
        "type": "state",
        "from": "system.adapter.javascript.0",
        "user": "system.user.admin",
        "ts": 1606557292061,
        "_id": "javascript.0.Wetterstation.Aussentemperatur",
        "acl": {
          "object": 1636,
          "state": 1636,
          "owner": "system.user.admin",
          "ownerGroup": "system.group.administrator"
        }
      }
      

      Bis jetzt war die Rolle des Datenpunktes für die Darstellung ausschlaggebend. Ich vermute, dass ich auch hier den richtigen Typ auswählen muss.

      Wahrscheinlich wäre es eh sinnvoll zu den Screenshots auch die Datenpunkte zeigen oder wenigstens die Rolle und die benötigte Zustände (SET/GET/ACTUAL) dazu schreiben. Beispielsweise wird mir der DP: alias.0.MyNSPanel.Einstellungen.brightnessDay als Zahl angezeigt. Ich habe verstanden, dass der sowohl SET als auch ACTUAL braucht, aber die Rolle scheint immer noch falsch zu sein.

      Leg mal einen Alias vom Typ Info an, der auf diesen Datenpunkt sieht. Kannst auch mit den regulären Aliasen arbeiten. Der hat nur den Wert ACTUAL

      Das würde dann in etwa so aussehen:
      firstScreensaverEntity: { ScreensaverEntity: "alias.0.Aussentemperatur.ACTUAL", ScreensaverEntityIcon: "thermometer", ScreensaverEntityText: "Temp", ScreensaverEntityUnitText: "°C" },

      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.

      a200A 1 Reply Last reply
      0
      • ArmilarA Armilar

        @a200 sagte in Sonoff NSPanel:

        @armilar

        {
          "common": {
            "name": "Temperatur Außen",
            "type": "number",
            "role": "state",
            "unit": "°C",
            "custom": {
              "influxdb.1": {
                "enabled": true,
                "changesOnly": false,
                "debounce": "1000",
                "retention": "31536000",
                "changesRelogInterval": 0,
                "changesMinDelta": 0,
                "storageType": "",
                "aliasId": ""
              }
            }
          },
          "native": {
            "name": "Temperatur Außen",
            "type": "number",
            "role": "state",
            "unit": "°C"
          },
          "type": "state",
          "from": "system.adapter.javascript.0",
          "user": "system.user.admin",
          "ts": 1606557292061,
          "_id": "javascript.0.Wetterstation.Aussentemperatur",
          "acl": {
            "object": 1636,
            "state": 1636,
            "owner": "system.user.admin",
            "ownerGroup": "system.group.administrator"
          }
        }
        

        Bis jetzt war die Rolle des Datenpunktes für die Darstellung ausschlaggebend. Ich vermute, dass ich auch hier den richtigen Typ auswählen muss.

        Wahrscheinlich wäre es eh sinnvoll zu den Screenshots auch die Datenpunkte zeigen oder wenigstens die Rolle und die benötigte Zustände (SET/GET/ACTUAL) dazu schreiben. Beispielsweise wird mir der DP: alias.0.MyNSPanel.Einstellungen.brightnessDay als Zahl angezeigt. Ich habe verstanden, dass der sowohl SET als auch ACTUAL braucht, aber die Rolle scheint immer noch falsch zu sein.

        Leg mal einen Alias vom Typ Info an, der auf diesen Datenpunkt sieht. Kannst auch mit den regulären Aliasen arbeiten. Der hat nur den Wert ACTUAL

        Das würde dann in etwa so aussehen:
        firstScreensaverEntity: { ScreensaverEntity: "alias.0.Aussentemperatur.ACTUAL", ScreensaverEntityIcon: "thermometer", ScreensaverEntityText: "Temp", ScreensaverEntityUnitText: "°C" },

        a200A Offline
        a200A Offline
        a200
        wrote on last edited by
        #481

        @armilar Das habe ich auch schon versucht.
        29af520d-48d5-45c9-bda2-057b7b13598d-grafik.png

        Habe sogar meinen Zigbee bemüht:

            firstScreensaverEntity: { ScreensaverEntity: "zigbee.0.00158d000233faf1.temperature", ScreensaverEntityIcon: "thermometer", ScreensaverEntityText: "Luft", ScreensaverEntityUnitText: "°C" },
            secondScreensaverEntity: { ScreensaverEntity: "alias.0.MyNSPanel.Wetter.Temp.ACTUAL", ScreensaverEntityIcon: "thermometer", ScreensaverEntityText: "Regen", ScreensaverEntityUnitText: "°C" },
            thirdScreensaverEntity: { ScreensaverEntity: "alias.0.MyNSPanel.Wetter.Temp", ScreensaverEntityIcon: "thermometer", ScreensaverEntityText: "Wind", ScreensaverEntityUnitText: "°C" },
            fourthScreensaverEntity: { ScreensaverEntity: "zigbee.0.00158d000233faf1.temperature", ScreensaverEntityIcon: "solar-power", ScreensaverEntityText: "UV", ScreensaverEntityUnitText: "" },
        

        IoBroker auf QNAP TS-451, Raspi und NUC

        H 1 Reply Last reply
        0
        • a200A a200

          @armilar Das habe ich auch schon versucht.
          29af520d-48d5-45c9-bda2-057b7b13598d-grafik.png

          Habe sogar meinen Zigbee bemüht:

              firstScreensaverEntity: { ScreensaverEntity: "zigbee.0.00158d000233faf1.temperature", ScreensaverEntityIcon: "thermometer", ScreensaverEntityText: "Luft", ScreensaverEntityUnitText: "°C" },
              secondScreensaverEntity: { ScreensaverEntity: "alias.0.MyNSPanel.Wetter.Temp.ACTUAL", ScreensaverEntityIcon: "thermometer", ScreensaverEntityText: "Regen", ScreensaverEntityUnitText: "°C" },
              thirdScreensaverEntity: { ScreensaverEntity: "alias.0.MyNSPanel.Wetter.Temp", ScreensaverEntityIcon: "thermometer", ScreensaverEntityText: "Wind", ScreensaverEntityUnitText: "°C" },
              fourthScreensaverEntity: { ScreensaverEntity: "zigbee.0.00158d000233faf1.temperature", ScreensaverEntityIcon: "solar-power", ScreensaverEntityText: "UV", ScreensaverEntityUnitText: "" },
          
          H Offline
          H Offline
          holgerwolf
          wrote on last edited by holgerwolf
          #482

          @a200

          firstScreensaverEntity: { ScreensaverEntity: "zigbee.0.00158d0002c77840.temperature", ScreensaverEntityIcon: "thermometer", ScreensaverEntityText: "Horreo", ScreensaverEntityUnitText: "°C" },
              secondScreensaverEntity: { ScreensaverEntity: "accuweather.0.Daily.Day1.Day.RainProbability", ScreensaverEntityIcon: "weather-pouring", ScreensaverEntityText: "Regen", ScreensaverEntityUnitText: "%" },
              thirdScreensaverEntity: { ScreensaverEntity: "mqtt.0.openWB.lp.1.%Soc", ScreensaverEntityIcon: "car-electric", ScreensaverEntityText: "SoC", ScreensaverEntityUnitText: "%" },
              fourthScreensaverEntity: { ScreensaverEntity: "javascript.0.Photovoltaik.Leistung_DC_komplett", ScreensaverEntityIcon: "solar-power", ScreensaverEntityText: "PV", ScreensaverEntityUnitText: "W" },
          

          Sehr seltsam, die gehen bei mir alle.
          Hast du denn Fehlermeldungen im Log?

          a200A 1 Reply Last reply
          0
          • ArmilarA Armilar

            @wheinz44 sagte in Sonoff NSPanel:

            Guten Morgen an alle,
            an und für sich habe ich mit Tasmota und IOBroker keine Probleme, aber dieses NSPanel schaft mich.
            Außer Uhrzeit und Datum, ein paar Seiten mit Überschrift (die Ich ändern kann) funktioniert bei meinem NSPanel nichts.Mittlerweile kenne ich fast alle 466 Posts auswndig, und habe alle Anleitungen durchgearbeitet.
            Ich vermute das es an meine Aliase scheitert. Wenn wer eine Idee hat, Screenshots kann ich bei fragen am Abend schicken. Danke im voraus, wheinz44

            Mit welcher Version ist das Panel geflashed? Wir sind mit der Version 1.9.1 der TFT-Firmware angefangen. Die Skripte im Thread gehören jetzt zur Version ab 2.7.X. Da wurden die Trennzeichen (Delimiter) zum Panel nochmals ausgetauscht, so dass das erste Skript mit der ersten Version 1.9.1 nicht kompatibel ist. Und umgekehrt ein altes Skript nicht mehr zur aktuellen Firmware passt.
            Meine Vermutung ist, dass die Firmware auf den neuesten Stand gebracht werden muss. Genauer kann ich das erst sagen, wenn du einen beim Blättern durch die Seiten kurz einen Screenshot aus der Tasmota-Konsole machst.
            Als Voraussetzung sollte der letzte Code aus dem Thread und die neueste Version auf dem Panel installiert sein.

            Da die Uhrzeit übermittelt wird und die Seiten korrekt betitelt sind, läuft in der Kommunikation alles perfekt.

            Also liegt es in der Tat am Alias oder der TFT-Version. Das Skript ist so aufgebaut, dass das Panel "komplett" ohne Programmierung konfiguriert und erweitert werden kann. D.h. jeder Schalter, Lampe, Dimmer, Slider, etc. "ist immer nur eine Zeile" im oberen Teil der Konfiguration. Mit dem Alias werden bereits alle Funktionen des zu steuernden Objektes bereitgestellt.

            Zuerst würde ich mal die TFT-Version und den BerryDriver aktualisieren, damit wir sicher sind, das wirklich die letzte Firmware drauf ist. Dazu in der Tasmota-Konsole folgende Befehle ausführen (Könnte beliebig oft wiederholt werden, soll heißen - damit zerschießt man sich nichts):

            http://nspanel.pky.eu/lui.tft
            

            und

            Backlog UpdateDriverVersion https://raw.githubusercontent.com/joBr99/nspanel-lovelace-ui/main/tasmota/autoexec.be
            

            Jetzt sollte das Panel auf dem neuesten Stand sein.

            Kommen wir jetzt zur Seiten-Konfiguration:

            Beispiel:

            var BeispielSeite: PageEntities =
            {
                "type": "cardEntities",
                "heading": "Beispiel Überschrift",
                "useColor": true,
                //"subPage": false,
                "items": [
                    <PageItem>{ id: "alias.0.NSPanel_1.MeineBeispielLampe"},
                ]
            };
            

            Das ist eine Beispielseite mit einer Lampe (Steuerelemente als synonym für Schalter, Lampe, Dimmer, Info, etc.):

            • "BeispielSeite" - ist der Aufrufname der Seite im "Config-Block" unter den Steuerelementen - "funktioniert bei dir ja schon"
            • "type" - kann folgende Werte annehmen: (cardEntities = 4 Steuerelemente untereinander, cardGrid = 2 x 3 Steuerelemente, cardMedia = Mediaplayer (Alexa, etc.), cardThermo (beliebiger Thermostat), und cardAlarm (Falls Alarmanlage vorhanden (funktional für heute/morgen geplant).
            • "subPage" - ist hier auskommentiert, da es erst eine Funktion ist, die in dieser Woche erst in den Code kommt.
            • "PageItem" - Hierzu "muss" ein funktionierender "Alias" angelegt werden (kommen wir später zu)
              Der Rest ist in diesem Beispiel selbsterklärend und wenn der Alias funktioniert, so wird auch bereits im Panel ein Schalter mit einem Lampensymbol angezeigt. Voraussetzung ist, dass die Seite auch wie folgt im Config-Block erscheint:

            22e553ba-5d63-416c-a35d-2d2ebd607ccc-image.png

            Jetzt weitere Steuerelemente nach belieben hinzufügen, indem weitere Aliase "angelegt" werden. Und "jede Zeile" ist immer nur "ein Alias".

            P.S.: Wenn ein Alias nicht gefunden werden kann, dann löscht das Skript dieses Steuerelement und es ist nicht auf der Seite im NSPanel zu sehen.

            Achtung: Ein Datenpunkt ist "kein" Alias...
            ... "1" Alias nimmt "alle" relevanten Datenpunkte eines Objektes (z.B. MediaPlayer - Play, Pause, Stop, Volume, Title, etc.) auf. Daher benötigt dieses Skript immer nur eine Zeile pro Objekt und nicht alle einzelnen Datenpunkte.

            Kommen wir jetzt zum Alias:
            Ich lege die Aliase mit dem Geräte-Manager an (für mich die eleganteste Form - Es gibt auch haufenweise Skripte im Forum, die z.T. funktionieren - zum Teil aber auch nicht. Daher nehmt den Manager für diese Aufgabe, wenn ihr noch keine Erfahrungen mit dem Alias habt). Als Alternative kann man auch den Alias-Manager benutzen, den ich persönlich aber für "Alias-Anfänger" als zu komplex und unübersichtlich erachte. Später, d.h. beim Mediaplayer-Alias ist er durch seine Auto-Erstellung im Vorteil, doch zunächst legt doch erst einmal die kleineren Aliase mit dem Geräte-Manager an.

            Wo finde ich den Geräte-Manager?

            Der Geräte-Manager ist der Adapter unter "Geräte verwalten" (Siehe nachfolgendes Bild aus den Adaptern)!

            815955a2-41c2-40d8-ae8f-cbe631d6638c-image.png

            Wenn der Adapter installiert ist, dann sollte er im ioBroker-Hauptmenü ebenfalls zu sehen sein. Ansonsten ganz unten im Menü auf bearbeiten gehen und anhaken.

            08836d16-7ba9-400a-9265-9220fd2e209b-image.png

            Die Konfiguration im Geräte-Manager ist eigentlich ganz einfach und im Post vom 6.Mai 2022 - 21:51 beschrieben.

            Wenn ihr einen Alias erzeugt habt, dann taucht er auch unter Obekte auf (Im folgenden Beispiel ein Dimmer mit 3 Tradfri-Lampen im DeConz-Zigbee Adapter). D.h. die Lampen sind einer DeConz-Licht-Gruppe zusammengefasst und können über den Datenpunkt "on" an- und ausgeschaltet werden. Des Weiteren über den Datenpunkt "level" in der Helligkeit (Brightness) gesteuert werden.

            Wir legen jetzt Mal schnell einen Alias an, der beide Datenpunkte "on" und "level" der Lampe(n) zusammenfasst. Hierzu müssen wir analog der Beschreibung vom 6. Mai 2022 vorgehen, jetzt aber den Alias-Typ "Dimmer" wählen, den DeConz-Datenpunkt "on" in die Alias-Zeilen ON_SET und ON_ACTUAL eintragen und den DeConz-Datenpunkt "level" in die Zeilen ACTUAL und SET eintragen + speichern.
            d6268440-2c6f-47cb-ba26-2078688d6815-image.png

            Wenn dieser Alias jetzt angelegt ist, dann sieht man im Panel einen Schalter mit einer Lampe und wenn man auf den Namen klickt, sieht man die Detailseite zur Steuerung der Helligkeit.

            Ich hoffe es klappt und herzlich willkommen im Thread

            J Offline
            J Offline
            joBr99
            wrote on last edited by joBr99
            #483

            @armilar said in Sonoff NSPanel:

            @wheinz44 sagte in Sonoff NSPanel:

            Guten Morgen an alle,
            an und für sich habe ich mit Tasmota und IOBroker keine Probleme, aber dieses NSPanel schaft mich.
            Außer Uhrzeit und Datum, ein paar Seiten mit Überschrift (die Ich ändern kann) funktioniert bei meinem NSPanel nichts.Mittlerweile kenne ich fast alle 466 Posts auswndig, und habe alle Anleitungen durchgearbeitet.
            Ich vermute das es an meine Aliase scheitert. Wenn wer eine Idee hat, Screenshots kann ich bei fragen am Abend schicken. Danke im voraus, wheinz44

            Mit welcher Version ist das Panel geflashed? Wir sind mit der Version 1.9.1 der TFT-Firmware angefangen. Die Skripte im Thread gehören jetzt zur Version ab 2.7.X. Da wurden die

            :
            :
            ausführen (Könnte beliebig oft wiederholt werden, soll heißen - damit zerschießt man sich nichts):

            http://nspanel.pky.eu/lui.tft
            

            und

            Backlog UpdateDriverVersion https://raw.githubusercontent.com/joBr99/nspanel-lovelace-ui/main/tasmota/autoexec.be
            

            Jetzt sollte das Panel auf dem neuesten Stand sein.

            :
            :

            ch hoffe es klappt und herzlich willkommen im Thread

            die lui.tft ist die aktuelle Entwicklungsversion (EU) zu der sollte man als user nicht unbedingt updaten

            die aktuellen links/commands zu den Releases stehen immer in den Release Notes auf GitHub, für 2.8:

            EU Version: 
            FlashNextion http://nspanel.pky.eu/lovelace-ui/github/nspanel-v2.8.1.tft
            
            US Landscape Version: 
            FlashNextion http://nspanel.pky.eu/lovelace-ui/github/nspanel-us-l-v2.8.1.tft
            
            US Portrait Version: 
            FlashNextion http://nspanel.pky.eu/lovelace-ui/github/nspanel-us-p-v2.8.1.tft
            

            Alternativ gibt es auch Links, die immer zum aktuellen Release zeigen, aber das kann unter Umständen inkompatibel mit dem aktuellen ioBroker Skript sein. Falls das aktuelle Release inkompatibel ist, schreibe ich das immer als Hinweis mit in die Release Notes.

            EU Version: FlashNextion http://nspanel.pky.eu/lui-release.tft
            
            US Version Portrait: FlashNextion http://nspanel.pky.eu/lui-us-p-release.tft
            
            US Version Landscape: FlashNextion http://nspanel.pky.eu/lui-us-l-release.tft
            

            Zum updaten vom Berry Treiber kann man den folgenden command verwenden oder einfach den Inhalt von der autoexec.be mit dem aktuellen von GitHub tauschen. (So oft kommen da keine Updates, mit GetDriverVersion in der Tasmota Konsole bekommt man die aktuell installierte Version angezeigt, wenn da 4 kommt ist der Berry Treiber aktuell)

            Backlog UpdateDriverVersion https://raw.githubusercontent.com/joBr99/nspanel-lovelace-ui/main/tasmota/autoexec.be; Restart 1

            ArmilarA 1 Reply Last reply
            0
            • J Offline
              J Offline
              joBr99
              wrote on last edited by joBr99
              #484

              @Armilar

              https://github.com/Armilar/nspanel-lovelace-ui/blob/e7d96e04389a9ef54a24ab3688f118c0f4eb5714/ioBroker/NsPanelTs.ts#L576

              Ich hab in meinem AppDaemon Backend ne Variable für die aktuell zum Skript passende Version, also in etwa so:

                     desired_display_firmware_version = 34
                     version     = "v2.8.1"        
                     desired_display_firmware_url = f"http://nspanel.pky.eu/lovelace-ui/github/nspanel-{version}.tft"
              

              Wenn das Panel auf der startup seite ist, dann sendet es event,startup,34,eu in regelmäßigen Abständen, bis die Seite gewechselt wird.

              Ich überprüfe dann ob desired_display_firmware_version > version_aus_startup_event und wenn das true ist, stoß ich meine Funktion zum updaten an.

              Für den Berry Treiber mach ich es ähnlich, nur da frage ich aktiv nach der Version mit GetDriverVersion.

              Wenn du mit dem autoupdate immer zur lui.tft updatest, hast du also die Gefahr, dass irgendwas kaputt ist, wenn du den link zu http://nspanel.pky.eu/lui-release.tft tauschst hast du es schon mal etwas entschärft, wenn du sicher sein willst, dass Skript und Firmware zusammenpassen würd ich die URLs aus den Release Notes nehmen.

              (wenn ich irgendwo quatsch schreibe, dann weil ich mir das typeskript nicht genau genug angeschaut hab 😉 )

              ArmilarA 1 Reply Last reply
              0
              • J joBr99

                @armilar said in Sonoff NSPanel:

                @wheinz44 sagte in Sonoff NSPanel:

                Guten Morgen an alle,
                an und für sich habe ich mit Tasmota und IOBroker keine Probleme, aber dieses NSPanel schaft mich.
                Außer Uhrzeit und Datum, ein paar Seiten mit Überschrift (die Ich ändern kann) funktioniert bei meinem NSPanel nichts.Mittlerweile kenne ich fast alle 466 Posts auswndig, und habe alle Anleitungen durchgearbeitet.
                Ich vermute das es an meine Aliase scheitert. Wenn wer eine Idee hat, Screenshots kann ich bei fragen am Abend schicken. Danke im voraus, wheinz44

                Mit welcher Version ist das Panel geflashed? Wir sind mit der Version 1.9.1 der TFT-Firmware angefangen. Die Skripte im Thread gehören jetzt zur Version ab 2.7.X. Da wurden die

                :
                :
                ausführen (Könnte beliebig oft wiederholt werden, soll heißen - damit zerschießt man sich nichts):

                http://nspanel.pky.eu/lui.tft
                

                und

                Backlog UpdateDriverVersion https://raw.githubusercontent.com/joBr99/nspanel-lovelace-ui/main/tasmota/autoexec.be
                

                Jetzt sollte das Panel auf dem neuesten Stand sein.

                :
                :

                ch hoffe es klappt und herzlich willkommen im Thread

                die lui.tft ist die aktuelle Entwicklungsversion (EU) zu der sollte man als user nicht unbedingt updaten

                die aktuellen links/commands zu den Releases stehen immer in den Release Notes auf GitHub, für 2.8:

                EU Version: 
                FlashNextion http://nspanel.pky.eu/lovelace-ui/github/nspanel-v2.8.1.tft
                
                US Landscape Version: 
                FlashNextion http://nspanel.pky.eu/lovelace-ui/github/nspanel-us-l-v2.8.1.tft
                
                US Portrait Version: 
                FlashNextion http://nspanel.pky.eu/lovelace-ui/github/nspanel-us-p-v2.8.1.tft
                

                Alternativ gibt es auch Links, die immer zum aktuellen Release zeigen, aber das kann unter Umständen inkompatibel mit dem aktuellen ioBroker Skript sein. Falls das aktuelle Release inkompatibel ist, schreibe ich das immer als Hinweis mit in die Release Notes.

                EU Version: FlashNextion http://nspanel.pky.eu/lui-release.tft
                
                US Version Portrait: FlashNextion http://nspanel.pky.eu/lui-us-p-release.tft
                
                US Version Landscape: FlashNextion http://nspanel.pky.eu/lui-us-l-release.tft
                

                Zum updaten vom Berry Treiber kann man den folgenden command verwenden oder einfach den Inhalt von der autoexec.be mit dem aktuellen von GitHub tauschen. (So oft kommen da keine Updates, mit GetDriverVersion in der Tasmota Konsole bekommt man die aktuell installierte Version angezeigt, wenn da 4 kommt ist der Berry Treiber aktuell)

                Backlog UpdateDriverVersion https://raw.githubusercontent.com/joBr99/nspanel-lovelace-ui/main/tasmota/autoexec.be; Restart 1

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

                @jobr99

                Stimmt, war die DEV - läuft bei mir aber auch einwandfrei mit dem Screensaver

                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
                • J joBr99

                  @Armilar

                  https://github.com/Armilar/nspanel-lovelace-ui/blob/e7d96e04389a9ef54a24ab3688f118c0f4eb5714/ioBroker/NsPanelTs.ts#L576

                  Ich hab in meinem AppDaemon Backend ne Variable für die aktuell zum Skript passende Version, also in etwa so:

                         desired_display_firmware_version = 34
                         version     = "v2.8.1"        
                         desired_display_firmware_url = f"http://nspanel.pky.eu/lovelace-ui/github/nspanel-{version}.tft"
                  

                  Wenn das Panel auf der startup seite ist, dann sendet es event,startup,34,eu in regelmäßigen Abständen, bis die Seite gewechselt wird.

                  Ich überprüfe dann ob desired_display_firmware_version > version_aus_startup_event und wenn das true ist, stoß ich meine Funktion zum updaten an.

                  Für den Berry Treiber mach ich es ähnlich, nur da frage ich aktiv nach der Version mit GetDriverVersion.

                  Wenn du mit dem autoupdate immer zur lui.tft updatest, hast du also die Gefahr, dass irgendwas kaputt ist, wenn du den link zu http://nspanel.pky.eu/lui-release.tft tauschst hast du es schon mal etwas entschärft, wenn du sicher sein willst, dass Skript und Firmware zusammenpassen würd ich die URLs aus den Release Notes nehmen.

                  (wenn ich irgendwo quatsch schreibe, dann weil ich mir das typeskript nicht genau genug angeschaut hab 😉 )

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

                  @jobr99 sagte in Sonoff NSPanel:

                  @Armilar

                  https://github.com/Armilar/nspanel-lovelace-ui/blob/e7d96e04389a9ef54a24ab3688f118c0f4eb5714/ioBroker/NsPanelTs.ts#L576

                  Ich hab in meinem AppDaemon Backend ne Variable für die aktuell zum Skript passende Version, also in etwa so:

                         desired_display_firmware_version = 34
                         version     = "v2.8.1"        
                         desired_display_firmware_url = f"http://nspanel.pky.eu/lovelace-ui/github/nspanel-{version}.tft"
                  

                  Wenn das Panel auf der startup seite ist, dann sendet es event,startup,34,eu in regelmäßigen Abständen, bis die Seite gewechselt wird.

                  Ich überprüfe dann ob desired_display_firmware_version > version_aus_startup_event und wenn das true ist, stoß ich meine Funktion zum updaten an.

                  Für den Berry Treiber mach ich es ähnlich, nur da frage ich aktiv nach der Version mit GetDriverVersion.

                  Wenn du mit dem autoupdate immer zur lui.tft updatest, hast du also die Gefahr, dass irgendwas kaputt ist, wenn du den link zu http://nspanel.pky.eu/lui-release.tft tauschst hast du es schon mal etwas entschärft, wenn du sicher sein willst, dass Skript und Firmware zusammenpassen würd ich die URLs aus den Release Notes nehmen.

                  (wenn ich irgendwo quatsch schreibe, dann weil ich mir das typeskript nicht genau genug angeschaut hab 😉 )

                  Nee, passt schon - obwohl ich es eigentlich genauso mache.

                  beim BerryDriver wird ein "GetDriverVersion" an das Panel gesendet. Die Antwort wird in einen Datenpunkt geschrieben

                  function get_current_berry_driver_version() {
                      require("request")((['http://',get_current_tasmota_ip_address(),'/cm?cmnd=GetDriverVersion'].join('')), async function (error, response, result) {
                          createState(NSPanel_Path + "Berry_Driver.currentVersion");
                          setIfExists(NSPanel_Path + 'Berry_Driver.currentVersion', getAttr(result, 'nlui_driver_version'));
                      });
                  }
                  

                  Mit der Firmwareversion ist es genauso - also auch Startup auslösen und die Version einsammeln

                  setState(config.panelSendTopic, 'pageType~pageStartup');
                  

                  und Daten einsammeln über:

                  on({ id: config.panelRecvTopic }, function (obj) {
                      if (obj.state.val.startsWith('\{"CustomRecv":')) {
                          var json = JSON.parse(obj.state.val);
                          var split = json.CustomRecv.split(",");
                          if (split[0] == "event" && split[1] == "startup") {
                              createState(NSPanel_Path + 'Display_Firmware.currentVersion',{ type:'string'});
                              createState(NSPanel_Path + 'NSPanel_Version',{ type:'string'});
                              setIfExists(NSPanel_Path + 'Display_Firmware.currentVersion',split[2]);
                              setIfExists(NSPanel_Path + 'NSPanel_Version',split[3]);
                          }
                      }
                  });
                  

                  Die Onlineversionsnummer (Tasmota, Berry, TFT) hole ich direkt bei Github ab.

                  Dann wird asynchron ein Vergleich durchgeführt und bei bedarf ein Update gemacht...

                  Aber die http://nspanel.pky.eu/lui-release.tft wird noch ersetzt - passt. Und aus den Release Notes nehme ich sie auch raus.

                  Wäre schön, wenn nicht ein Startup durchgeführt werden müsste, denn das versetzt das Panel beim Abfragen der aktuellen Version immer für einen kurzen Moment in den "Waiting for Connection".

                  P.S.: Die Versionsabfrage aus dem Github funktioniert eigentlich ähnlich:
                  Die Variable aus deinem Script wird vom GitHub extrahiert:

                  function check_online_display_firmware() {
                      exec('curl https://raw.githubusercontent.com/joBr99/nspanel-lovelace-ui/main/apps/nspanel-lovelace-ui/nspanel-lovelace-ui.py', function (error, result, stderr){
                          if (result) {
                              let desired_display_firmware_version = result.substring((result.indexOf("desired_display_firmware_version =") + 34), result.indexOf("desired_display_firmware_version =") + 38).replace(/\s+/g, '');
                              createState(NSPanel_Path + "Display_Firmware.onlineVersion");
                              setIfExists(NSPanel_Path + 'Display_Firmware.onlineVersion', desired_display_firmware_version);
                          }
                      });
                  }
                  

                  Und dann fällt es dir wie Schuppen aus den Augen 😉 Die Version ins Script schreiben. Jo - warum einfach, wenn's auch kompliziert geht 😀

                  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.

                  J 1 Reply Last reply
                  0
                  • H holgerwolf

                    @a200

                    firstScreensaverEntity: { ScreensaverEntity: "zigbee.0.00158d0002c77840.temperature", ScreensaverEntityIcon: "thermometer", ScreensaverEntityText: "Horreo", ScreensaverEntityUnitText: "°C" },
                        secondScreensaverEntity: { ScreensaverEntity: "accuweather.0.Daily.Day1.Day.RainProbability", ScreensaverEntityIcon: "weather-pouring", ScreensaverEntityText: "Regen", ScreensaverEntityUnitText: "%" },
                        thirdScreensaverEntity: { ScreensaverEntity: "mqtt.0.openWB.lp.1.%Soc", ScreensaverEntityIcon: "car-electric", ScreensaverEntityText: "SoC", ScreensaverEntityUnitText: "%" },
                        fourthScreensaverEntity: { ScreensaverEntity: "javascript.0.Photovoltaik.Leistung_DC_komplett", ScreensaverEntityIcon: "solar-power", ScreensaverEntityText: "PV", ScreensaverEntityUnitText: "W" },
                    

                    Sehr seltsam, die gehen bei mir alle.
                    Hast du denn Fehlermeldungen im Log?

                    a200A Offline
                    a200A Offline
                    a200
                    wrote on last edited by a200
                    #487

                    @holgerwolf sagte in Sonoff NSPanel:

                    @a200

                    firstScreensaverEntity: { ScreensaverEntity: "zigbee.0.00158d0002c77840.temperature", ScreensaverEntityIcon: "thermometer", ScreensaverEntityText: "Horreo", ScreensaverEntityUnitText: "°C" },
                        secondScreensaverEntity: { ScreensaverEntity: "accuweather.0.Daily.Day1.Day.RainProbability", ScreensaverEntityIcon: "weather-pouring", ScreensaverEntityText: "Regen", ScreensaverEntityUnitText: "%" },
                        thirdScreensaverEntity: { ScreensaverEntity: "mqtt.0.openWB.lp.1.%Soc", ScreensaverEntityIcon: "car-electric", ScreensaverEntityText: "SoC", ScreensaverEntityUnitText: "%" },
                        fourthScreensaverEntity: { ScreensaverEntity: "javascript.0.Photovoltaik.Leistung_DC_komplett", ScreensaverEntityIcon: "solar-power", ScreensaverEntityText: "PV", ScreensaverEntityUnitText: "W" },
                    

                    Sehr seltsam, die gehen bei mir alle.
                    Hast du denn Fehlermeldungen im Log?

                    Die Darstellung der Objekte ist ja Rollen abhängig. Welche Rollen sind bei dir diesen DP zugewiesen? Ich vermute dort das Problem.

                    Die Logfiles (debug) geben nicht viel her.

                    18:28:08.485	info	javascript.0 (20526) script.js.Prod.NSPanel.NsPanelTs_ts: pageType~cardEntities
                    18:28:08.485	info	javascript.0 (20526) script.js.Prod.NSPanel.NsPanelTs_ts: entityUpd~Büro~0|1~light~alias.0.MyNSPanel.Steckdosen.KG-Buero~~62251~Drucker~0~shutter~alias.0.MyNSPanel.Rolladen.KG_Buero~~63142~Fenster~
                    

                    Screensaver erzeugt gar keine Logs.

                    IoBroker auf QNAP TS-451, Raspi und NUC

                    ArmilarA 1 Reply Last reply
                    0
                    • ArmilarA Armilar

                      @jobr99 sagte in Sonoff NSPanel:

                      @Armilar

                      https://github.com/Armilar/nspanel-lovelace-ui/blob/e7d96e04389a9ef54a24ab3688f118c0f4eb5714/ioBroker/NsPanelTs.ts#L576

                      Ich hab in meinem AppDaemon Backend ne Variable für die aktuell zum Skript passende Version, also in etwa so:

                             desired_display_firmware_version = 34
                             version     = "v2.8.1"        
                             desired_display_firmware_url = f"http://nspanel.pky.eu/lovelace-ui/github/nspanel-{version}.tft"
                      

                      Wenn das Panel auf der startup seite ist, dann sendet es event,startup,34,eu in regelmäßigen Abständen, bis die Seite gewechselt wird.

                      Ich überprüfe dann ob desired_display_firmware_version > version_aus_startup_event und wenn das true ist, stoß ich meine Funktion zum updaten an.

                      Für den Berry Treiber mach ich es ähnlich, nur da frage ich aktiv nach der Version mit GetDriverVersion.

                      Wenn du mit dem autoupdate immer zur lui.tft updatest, hast du also die Gefahr, dass irgendwas kaputt ist, wenn du den link zu http://nspanel.pky.eu/lui-release.tft tauschst hast du es schon mal etwas entschärft, wenn du sicher sein willst, dass Skript und Firmware zusammenpassen würd ich die URLs aus den Release Notes nehmen.

                      (wenn ich irgendwo quatsch schreibe, dann weil ich mir das typeskript nicht genau genug angeschaut hab 😉 )

                      Nee, passt schon - obwohl ich es eigentlich genauso mache.

                      beim BerryDriver wird ein "GetDriverVersion" an das Panel gesendet. Die Antwort wird in einen Datenpunkt geschrieben

                      function get_current_berry_driver_version() {
                          require("request")((['http://',get_current_tasmota_ip_address(),'/cm?cmnd=GetDriverVersion'].join('')), async function (error, response, result) {
                              createState(NSPanel_Path + "Berry_Driver.currentVersion");
                              setIfExists(NSPanel_Path + 'Berry_Driver.currentVersion', getAttr(result, 'nlui_driver_version'));
                          });
                      }
                      

                      Mit der Firmwareversion ist es genauso - also auch Startup auslösen und die Version einsammeln

                      setState(config.panelSendTopic, 'pageType~pageStartup');
                      

                      und Daten einsammeln über:

                      on({ id: config.panelRecvTopic }, function (obj) {
                          if (obj.state.val.startsWith('\{"CustomRecv":')) {
                              var json = JSON.parse(obj.state.val);
                              var split = json.CustomRecv.split(",");
                              if (split[0] == "event" && split[1] == "startup") {
                                  createState(NSPanel_Path + 'Display_Firmware.currentVersion',{ type:'string'});
                                  createState(NSPanel_Path + 'NSPanel_Version',{ type:'string'});
                                  setIfExists(NSPanel_Path + 'Display_Firmware.currentVersion',split[2]);
                                  setIfExists(NSPanel_Path + 'NSPanel_Version',split[3]);
                              }
                          }
                      });
                      

                      Die Onlineversionsnummer (Tasmota, Berry, TFT) hole ich direkt bei Github ab.

                      Dann wird asynchron ein Vergleich durchgeführt und bei bedarf ein Update gemacht...

                      Aber die http://nspanel.pky.eu/lui-release.tft wird noch ersetzt - passt. Und aus den Release Notes nehme ich sie auch raus.

                      Wäre schön, wenn nicht ein Startup durchgeführt werden müsste, denn das versetzt das Panel beim Abfragen der aktuellen Version immer für einen kurzen Moment in den "Waiting for Connection".

                      P.S.: Die Versionsabfrage aus dem Github funktioniert eigentlich ähnlich:
                      Die Variable aus deinem Script wird vom GitHub extrahiert:

                      function check_online_display_firmware() {
                          exec('curl https://raw.githubusercontent.com/joBr99/nspanel-lovelace-ui/main/apps/nspanel-lovelace-ui/nspanel-lovelace-ui.py', function (error, result, stderr){
                              if (result) {
                                  let desired_display_firmware_version = result.substring((result.indexOf("desired_display_firmware_version =") + 34), result.indexOf("desired_display_firmware_version =") + 38).replace(/\s+/g, '');
                                  createState(NSPanel_Path + "Display_Firmware.onlineVersion");
                                  setIfExists(NSPanel_Path + 'Display_Firmware.onlineVersion', desired_display_firmware_version);
                              }
                          });
                      }
                      

                      Und dann fällt es dir wie Schuppen aus den Augen 😉 Die Version ins Script schreiben. Jo - warum einfach, wenn's auch kompliziert geht 😀

                      J Offline
                      J Offline
                      joBr99
                      wrote on last edited by joBr99
                      #488

                      @Armilar

                      Wäre schön, wenn nicht ein Startup durchgeführt werden müsste, denn das versetzt das Panel beim Abfragen der aktuellen Version immer für einen kurzen Moment in den "Waiting for Connection".

                      Die Idee war, dass vor dem aktualisieren ja sowieso das TypeSkript/AppDaemon Skript aktualisiert werden muss und da ist es nicht schlecht, wenn man das Panel wieder in einem definierten Zustand hat. Deshalb hab ich auch die Versionsnummer im Skript, die Version vom Skript passt ja immer zu einer Firmware Version. Immer die aktuelle Firmware passt ggf. nicht zum Skript.

                      ArmilarA 1 Reply Last reply
                      0
                      • J joBr99

                        @Armilar

                        Wäre schön, wenn nicht ein Startup durchgeführt werden müsste, denn das versetzt das Panel beim Abfragen der aktuellen Version immer für einen kurzen Moment in den "Waiting for Connection".

                        Die Idee war, dass vor dem aktualisieren ja sowieso das TypeSkript/AppDaemon Skript aktualisiert werden muss und da ist es nicht schlecht, wenn man das Panel wieder in einem definierten Zustand hat. Deshalb hab ich auch die Versionsnummer im Skript, die Version vom Skript passt ja immer zu einer Firmware Version. Immer die aktuelle Firmware passt ggf. nicht zum Skript.

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

                        @jobr99 sagte in Sonoff NSPanel:

                        @Armilar

                        Wäre schön, wenn nicht ein Startup durchgeführt werden müsste, denn das versetzt das Panel beim Abfragen der aktuellen Version immer für einen kurzen Moment in den "Waiting for Connection".

                        Die Idee war, dass vor dem aktualisieren ja sowieso das TypeSkript/AppDaemon Skript aktualisiert werden muss und da ist es nicht schlecht, wenn man das Panel wieder in einem definierten Zustand hat. Deshalb hab ich auch die Versionsnummer im Skript, die Version vom Skript passt ja immer zu einer Firmware Version. Immer die aktuelle Firmware passt ggf. nicht zum Skript.

                        siehe oben - bin erst beim Einkaufen drauf gekommen, was du mir wirklich sagen willst 😉 . Ist absolut richtig

                        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.

                        a200A 1 Reply Last reply
                        0
                        • a200A a200

                          @holgerwolf sagte in Sonoff NSPanel:

                          @a200

                          firstScreensaverEntity: { ScreensaverEntity: "zigbee.0.00158d0002c77840.temperature", ScreensaverEntityIcon: "thermometer", ScreensaverEntityText: "Horreo", ScreensaverEntityUnitText: "°C" },
                              secondScreensaverEntity: { ScreensaverEntity: "accuweather.0.Daily.Day1.Day.RainProbability", ScreensaverEntityIcon: "weather-pouring", ScreensaverEntityText: "Regen", ScreensaverEntityUnitText: "%" },
                              thirdScreensaverEntity: { ScreensaverEntity: "mqtt.0.openWB.lp.1.%Soc", ScreensaverEntityIcon: "car-electric", ScreensaverEntityText: "SoC", ScreensaverEntityUnitText: "%" },
                              fourthScreensaverEntity: { ScreensaverEntity: "javascript.0.Photovoltaik.Leistung_DC_komplett", ScreensaverEntityIcon: "solar-power", ScreensaverEntityText: "PV", ScreensaverEntityUnitText: "W" },
                          

                          Sehr seltsam, die gehen bei mir alle.
                          Hast du denn Fehlermeldungen im Log?

                          Die Darstellung der Objekte ist ja Rollen abhängig. Welche Rollen sind bei dir diesen DP zugewiesen? Ich vermute dort das Problem.

                          Die Logfiles (debug) geben nicht viel her.

                          18:28:08.485	info	javascript.0 (20526) script.js.Prod.NSPanel.NsPanelTs_ts: pageType~cardEntities
                          18:28:08.485	info	javascript.0 (20526) script.js.Prod.NSPanel.NsPanelTs_ts: entityUpd~Büro~0|1~light~alias.0.MyNSPanel.Steckdosen.KG-Buero~~62251~Drucker~0~shutter~alias.0.MyNSPanel.Rolladen.KG_Buero~~63142~Fenster~
                          

                          Screensaver erzeugt gar keine Logs.

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

                          @a200 Das ist einfach nur ein Datenpunkt. Und solange da Daten drin sind hat er die Daten anzuzeigen. Übrigens funktioniert das schon seit Monaten perfekt... hab es grad mal umgestellt - läuft

                          if (config.firstScreensaverEntity !== null && config.firstScreensaverEntity.ScreensaverEntity != null && existsState(config.firstScreensaverEntity.ScreensaverEntity)) {
                              updateArray.push(config.firstScreensaverEntity.ScreensaverEntity)
                          }
                          

                          Da wird also folgendes abgefragt:
                          -Ist der wenn der Inhalt der Entitäten ungleich "null" ist und das Objekt existiert - dann zeige es an.

                          Somit kommt mindestens eine Bedingung falsch zurück.

                          @a200 sagte in Sonoff NSPanel:

                          @holgerwolf sagte in Sonoff NSPanel:

                          @a200

                          firstScreensaverEntity: { ScreensaverEntity: "zigbee.0.00158d0002c77840.temperature", ScreensaverEntityIcon: "thermometer", ScreensaverEntityText: "Horreo", ScreensaverEntityUnitText: "°C" },
                              secondScreensaverEntity: { ScreensaverEntity: "accuweather.0.Daily.Day1.Day.RainProbability", ScreensaverEntityIcon: "weather-pouring", ScreensaverEntityText: "Regen", ScreensaverEntityUnitText: "%" },
                              thirdScreensaverEntity: { ScreensaverEntity: "mqtt.0.openWB.lp.1.%Soc", ScreensaverEntityIcon: "car-electric", ScreensaverEntityText: "SoC", ScreensaverEntityUnitText: "%" },
                              fourthScreensaverEntity: { ScreensaverEntity: "javascript.0.Photovoltaik.Leistung_DC_komplett", ScreensaverEntityIcon: "solar-power", ScreensaverEntityText: "PV", ScreensaverEntityUnitText: "W" },
                          

                          Sehr seltsam, die gehen bei mir alle.
                          Hast du denn Fehlermeldungen im Log?

                          Die Darstellung der Objekte ist ja Rollen abhängig. Welche Rollen sind bei dir diesen DP zugewiesen? Ich vermute dort das Problem.

                          Die Logfiles (debug) geben nicht viel her.

                          18:28:08.485	info	javascript.0 (20526) script.js.Prod.NSPanel.NsPanelTs_ts: pageType~cardEntities
                          18:28:08.485	info	javascript.0 (20526) script.js.Prod.NSPanel.NsPanelTs_ts: entityUpd~Büro~0|1~light~alias.0.MyNSPanel.Steckdosen.KG-Buero~~62251~Drucker~0~shutter~alias.0.MyNSPanel.Rolladen.KG_Buero~~63142~Fenster~
                          

                          Screensaver erzeugt gar keine Logs.

                          Warum machst du nicht einfach ein log rein?

                          if (config.firstScreensaverEntity !== null && config.firstScreensaverEntity.ScreensaverEntity != null && existsState(config.firstScreensaverEntity.ScreensaverEntity)) {
                              updateArray.push(config.firstScreensaverEntity.ScreensaverEntity)
                              console.log(updateArray[0]);
                          }
                          

                          liefert bei mir

                                  else {
                                      //In Config definierte Zustände wenn weatherForecast = false
                                      payloadString += GetScreenSaverEntityString(config.firstScreensaverEntity);
                                      console.log(payloadString);
                                      payloadString += GetScreenSaverEntityString(config.secondScreensaverEntity);
                                      payloadString += GetScreenSaverEntityString(config.thirdScreensaverEntity);
                                      payloadString += GetScreenSaverEntityString(config.fourthScreensaverEntity);
                                  }
                          

                          8fab1bf8-35c3-4ad4-b30a-4ea928b08201-image.png

                          weatherUpdate~~21.2 °C~Luft~~45 %~

                          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
                          • ArmilarA Armilar

                            @jobr99 sagte in Sonoff NSPanel:

                            @Armilar

                            Wäre schön, wenn nicht ein Startup durchgeführt werden müsste, denn das versetzt das Panel beim Abfragen der aktuellen Version immer für einen kurzen Moment in den "Waiting for Connection".

                            Die Idee war, dass vor dem aktualisieren ja sowieso das TypeSkript/AppDaemon Skript aktualisiert werden muss und da ist es nicht schlecht, wenn man das Panel wieder in einem definierten Zustand hat. Deshalb hab ich auch die Versionsnummer im Skript, die Version vom Skript passt ja immer zu einer Firmware Version. Immer die aktuelle Firmware passt ggf. nicht zum Skript.

                            siehe oben - bin erst beim Einkaufen drauf gekommen, was du mir wirklich sagen willst 😉 . Ist absolut richtig

                            a200A Offline
                            a200A Offline
                            a200
                            wrote on last edited by a200
                            #491

                            @armilar @holgerwolf Ich glaube ich habe die Stelle gefunden.

                            if aus der Zeile 2 wird hier nie true.
                            Ich nutze kein "weatherEntity" aber dann ist entweder weatherEntity = null oder der DP ist nicht vorhanden. Damit wird der unterer Teil des Screensavers nicht eingeblendet. Also muss ich weatherEntity definieren! Und wenn ich dort einen Temp-DP eingebe, dann funktioniert es auch, auch wenn das Icon aus "GetAccuWeatherIcon" natürlich nicht gefunden wird. Also wenigstens die Zwei DP für Temp + Wetter-Icon müssen gesetzt werden. Dann ist wieder alles gut. Danke!

                            function HandleScreensaverUpdate(): void {
                                if (screensaverEnabled && config.weatherEntity != null && existsObject(config.weatherEntity)) {
                                    var icon = getState(config.weatherEntity + ".ICON").val;
                             
                                    let temperature: string =
                                        existsState(config.weatherEntity + ".ACTUAL") ? getState(config.weatherEntity + ".ACTUAL").val :
                                            existsState(config.weatherEntity + ".TEMP") ? getState(config.weatherEntity + ".TEMP").val : "null";
                             
                                    let payloadString =
                                        "weatherUpdate~" + Icons.GetIcon(GetAccuWeatherIcon(parseInt(icon))) + "~"
                                        + temperature + " " + config.temperatureUnit + "~"
                             
                            /*-------------------------------------------------------------------------------------------------------------------------------------*/
                                    if (weatherForecast == true) {
                                        // Accu-Weather Forecast Tag 2 - Tag 5 -- Wenn weatherForecast = true
                                        for (let i = 2; i < 6; i++) {
                                            let TempMax = getState("accuweather.0.Summary.TempMax_d" + i).val;
                                            let DayOfWeek = getState("accuweather.0.Summary.DayOfWeek_d" + i).val;
                                            let WeatherIcon = GetAccuWeatherIcon(getState("accuweather.0.Summary.WeatherIcon_d" + i).val);
                                            payloadString += DayOfWeek + "~" + Icons.GetIcon(WeatherIcon) + "~" + TempMax + " °C~";
                                        }
                                    } 
                                    else {
                                        //In Config definierte Zustände wenn weatherForecast = false
                                        payloadString += GetScreenSaverEntityString(config.firstScreensaverEntity);
                                        payloadString += GetScreenSaverEntityString(config.secondScreensaverEntity);
                                        payloadString += GetScreenSaverEntityString(config.thirdScreensaverEntity);
                                        payloadString += GetScreenSaverEntityString(config.fourthScreensaverEntity);
                                    }
                            /*-------------------------------------------------------------------------------------------------------------------------------------*/
                                    SendToPanel(<Payload>{ payload: payloadString });
                                }
                            }
                            

                            IoBroker auf QNAP TS-451, Raspi und NUC

                            1 Reply Last reply
                            0
                            • W Offline
                              W Offline
                              wheinz44
                              wrote on last edited by
                              #492

                              Hallo Leute,
                              ihr seit wirklich spitze, werd jetzt mal alles durcharbeiten, und bei weiteren frage meld ich mich.
                              Danke Danke

                              1 Reply Last reply
                              0
                              • W Offline
                                W Offline
                                wheinz44
                                wrote on last edited by
                                #493

                                Guten Morgen, bin die Anleitung von Armilar durchgegangen, hat aber nichts genützt,
                                erst als ich den neuen Ts-Script verwendet habe hats geklappt.
                                Ein paar Baustellen sind noch offen, aber darum werde ich mich kümmer, wenn die Arbeitswoche vorbei ist.
                                Danke nochmals, und macht weiter so.
                                Hier wird noch RICHTIG geholfen.
                                LG wheinz44

                                1 Reply Last reply
                                0
                                • S Offline
                                  S Offline
                                  Stwer2203
                                  wrote on last edited by
                                  #494

                                  ich komm leider einfach nicht weiter und hoffe auf Hilfe

                                  Folgende Fehlermeldung spuckt er aus:

                                  javascript.0 (405) script.js.common.NS_Panel compile failed: at script.js.common.NS_Panel:5918
                                  

                                  Kann mir einer erklären, was ich falsch mache

                                  a200A 1 Reply Last reply
                                  0
                                  • S Stwer2203

                                    ich komm leider einfach nicht weiter und hoffe auf Hilfe

                                    Folgende Fehlermeldung spuckt er aus:

                                    javascript.0 (405) script.js.common.NS_Panel compile failed: at script.js.common.NS_Panel:5918
                                    

                                    Kann mir einer erklären, was ich falsch mache

                                    a200A Offline
                                    a200A Offline
                                    a200
                                    wrote on last edited by a200
                                    #495

                                    @stwer2203 Leider lässt sich das nicht pauschal beantworten. Aber lass uns prüfen:

                                    • Hast du die Datei icon_mapping.ts in global Verzeichnis abgelegt und aktiviert? (script.js.global.icon_mapping_ts)
                                    • Ich persönlich nutze schiebe nichts ins common, sondern habe meine Unterverzeichnisse. Das hilft bei der Orientierung. Also habe ich die Unterverzeichnisse Prod und NSPanel. Dort habe ich die Datei NsPanelTs.ts abgelegt: Es sieht dann so aus: script.js.Prod.NSPanel.NsPanelTs_ts
                                    • Der Inhalt der NsPanelTs.ts kommt aus: https://github.com/Armilar/nspanel-lovelace-ui/blob/main/ioBroker/NsPanelTs.ts

                                    Ich würde die Dateinamen genauso übernehmen. Was bei dir nicht der Fall ist.

                                    Check das mal aus und wir können weiter schauen. Mir wurde hier auch viel geholfen, also keine Sorge, dich kriegen wir auch "verarztet". 😊

                                    IoBroker auf QNAP TS-451, Raspi und NUC

                                    S 1 Reply Last reply
                                    0
                                    • a200A a200

                                      @stwer2203 Leider lässt sich das nicht pauschal beantworten. Aber lass uns prüfen:

                                      • Hast du die Datei icon_mapping.ts in global Verzeichnis abgelegt und aktiviert? (script.js.global.icon_mapping_ts)
                                      • Ich persönlich nutze schiebe nichts ins common, sondern habe meine Unterverzeichnisse. Das hilft bei der Orientierung. Also habe ich die Unterverzeichnisse Prod und NSPanel. Dort habe ich die Datei NsPanelTs.ts abgelegt: Es sieht dann so aus: script.js.Prod.NSPanel.NsPanelTs_ts
                                      • Der Inhalt der NsPanelTs.ts kommt aus: https://github.com/Armilar/nspanel-lovelace-ui/blob/main/ioBroker/NsPanelTs.ts

                                      Ich würde die Dateinamen genauso übernehmen. Was bei dir nicht der Fall ist.

                                      Check das mal aus und wir können weiter schauen. Mir wurde hier auch viel geholfen, also keine Sorge, dich kriegen wir auch "verarztet". 😊

                                      S Offline
                                      S Offline
                                      Stwer2203
                                      wrote on last edited by
                                      #496

                                      @a200

                                      Hast du die Datei icon_mapping.ts in global Verzeichnis abgelegt und aktiviert? (script.js.global.icon_mapping_ts).

                                      ja, war und ist das Script

                                      Ich persönlich nutze schiebe nichts ins common, sondern habe meine Unterverzeichnisse. Das hilft bei der Orientierung. Also habe ich die Unterverzeichnisse Prod und NSPanel. Dort habe ich die Datei NsPanelTs.ts abgelegt: Es sieht dann so aus: script.js.Prod.NSPanel.NsPanelTs_ts

                                      ich habe im common meine Unterverzeichnisse, aber habe es jetzt genauso wie du

                                      Der Inhalt der NsPanelTs.ts kommt aus: https://github.com/Armilar/nspanel-lovelace-ui/blob/main/ioBroker/NsPanelTs.ts.

                                      das war auch und die mqtt Pfade angepasst

                                      weiterhin bleibt:

                                      13:45:54.626	info	javascript.0 (3155) Stop script script.js.Prod.NSPanel.NsPanelTs
                                      13:45:55.037	info	javascript.0 (3155) script.js.Prod.NSPanel.NsPanelTs: compiling TypeScript source...
                                      13:45:58.202	info	javascript.0 (3155) script.js.Prod.NSPanel.NsPanelTs: TypeScript compilation successful
                                      13:45:58.225	error	javascript.0 (3155) script.js.Prod.NSPanel.NsPanelTs compile failed: at script.js.Prod.NSPanel.NsPanelTs:782
                                      
                                      a200A 1 Reply Last reply
                                      0
                                      • S Stwer2203

                                        @a200

                                        Hast du die Datei icon_mapping.ts in global Verzeichnis abgelegt und aktiviert? (script.js.global.icon_mapping_ts).

                                        ja, war und ist das Script

                                        Ich persönlich nutze schiebe nichts ins common, sondern habe meine Unterverzeichnisse. Das hilft bei der Orientierung. Also habe ich die Unterverzeichnisse Prod und NSPanel. Dort habe ich die Datei NsPanelTs.ts abgelegt: Es sieht dann so aus: script.js.Prod.NSPanel.NsPanelTs_ts

                                        ich habe im common meine Unterverzeichnisse, aber habe es jetzt genauso wie du

                                        Der Inhalt der NsPanelTs.ts kommt aus: https://github.com/Armilar/nspanel-lovelace-ui/blob/main/ioBroker/NsPanelTs.ts.

                                        das war auch und die mqtt Pfade angepasst

                                        weiterhin bleibt:

                                        13:45:54.626	info	javascript.0 (3155) Stop script script.js.Prod.NSPanel.NsPanelTs
                                        13:45:55.037	info	javascript.0 (3155) script.js.Prod.NSPanel.NsPanelTs: compiling TypeScript source...
                                        13:45:58.202	info	javascript.0 (3155) script.js.Prod.NSPanel.NsPanelTs: TypeScript compilation successful
                                        13:45:58.225	error	javascript.0 (3155) script.js.Prod.NSPanel.NsPanelTs compile failed: at script.js.Prod.NSPanel.NsPanelTs:782
                                        
                                        a200A Offline
                                        a200A Offline
                                        a200
                                        wrote on last edited by
                                        #497

                                        @stwer2203

                                        1. jetzt sehe ich noch einen Unterschied. Das Sktipt hat eine Endung .ts bei dir nicht.
                                        2. Die Zeilennummer bei der Fehlermeldung ist anders.
                                        3. Hast du den Bereich angepasst?:
                                        export const config: Config = {
                                            panelRecvTopic: "mqtt.1.SmartHome.nspanel_C829B4.tele.RESULT",       //anpassen
                                            panelSendTopic: "mqtt.1.SmartHome.nspanel_C829B4.cmnd.CustomSend",   //anpassen
                                        

                                        IoBroker auf QNAP TS-451, Raspi und NUC

                                        ArmilarA 1 Reply Last reply
                                        0
                                        • a200A a200

                                          @stwer2203

                                          1. jetzt sehe ich noch einen Unterschied. Das Sktipt hat eine Endung .ts bei dir nicht.
                                          2. Die Zeilennummer bei der Fehlermeldung ist anders.
                                          3. Hast du den Bereich angepasst?:
                                          export const config: Config = {
                                              panelRecvTopic: "mqtt.1.SmartHome.nspanel_C829B4.tele.RESULT",       //anpassen
                                              panelSendTopic: "mqtt.1.SmartHome.nspanel_C829B4.cmnd.CustomSend",   //anpassen
                                          
                                          ArmilarA Offline
                                          ArmilarA Offline
                                          Armilar
                                          Most Active Forum Testing
                                          wrote on last edited by
                                          #498

                                          @a200 sagte in Sonoff NSPanel:

                                          @stwer2203

                                          1. jetzt sehe ich noch einen Unterschied. Das Sktipt hat eine Endung .ts bei dir nicht.
                                          2. Die Zeilennummer bei der Fehlermeldung ist anders.
                                          3. Hast du den Bereich angepasst?:
                                          export const config: Config = {
                                              panelRecvTopic: "mqtt.1.SmartHome.nspanel_C829B4.tele.RESULT",       //anpassen
                                              panelSendTopic: "mqtt.1.SmartHome.nspanel_C829B4.cmnd.CustomSend",   //anpassen
                                          

                                          Der Dateiname ist völlig egal - kannst das Skript hinlegen wo du willst und auch Schneewittchen nennen.

                                          Wenn es einen "compile failed" gibt, dann steh in der Regel auch etwas mehr im Protokoll und an irgendeiner Stelle im Code ist es seitlich rot. Ich bräuchte diese Informationen ma kurz 😉

                                          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
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          122

                                          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