Skip to content
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Hardware
  4. Sonoff NSPanel

NEWS

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

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

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

Sonoff NSPanel

Geplant Angeheftet Gesperrt Verschoben Hardware
1.5k Beiträge 78 Kommentatoren 636.8k Aufrufe 80 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • T TS

    Hallo, ich nutze nun auch ganz begeistert das NS Panel mit dem Script hier!
    Eine Frage hätte ich - Ist es grundsätzlich möglich, den Screensaver zu ändern, oder ist die Optik "in Stein gemeißelt"?
    Der Grund für meine Frage ist,

    Ich möchte gerne die Hardware Tasten für andere Dinge nutzen, also nicht für die verbauten Relays. Schön wäre, wenn im Screensaver direkt über den Tasten kleine Felder sind, wo Variablen drin stehen, die man im Script betiteln kann. Somit weiß jeder Benutzer, was die Tasten machen.
    Zweiter Punkt; ich hätte gerne, dass der Screensaver wie bei Weather Forecast alle paar Sekunden mal umschaltet. So zwischen Zeit+Wetteranzeige und meinem Familienkalender. Das fände zumindest ich ganz schön!
    Kann man in die Richtung was basteln oder geht das aufgrund irgendwelcher Beschränkungen nicht zu machen?

    J Offline
    J Offline
    joBr99
    schrieb am zuletzt editiert von
    #1331

    @ts said in Sonoff NSPanel:

    Eine Frage hätte ich - Ist es grundsätzlich möglich, den Screensaver zu ändern, oder ist die Optik "in Stein gemeißelt"?

    In der Firmware gibt es oben links und rechts zwei Icons, die du sprechend belegen kannst, ob das im ioBroker Skript implementiert ist kann ich dir nicht beantworten.

    e68f5f11-eb6f-41fe-a71a-91868e69cbd1-image.png

    Dabei sind diese Icons in der Firmware enthalten: Icon Sheet

    Bzgl. Kalender du kannst statt dem Wetter Benachrichtigungen anzeigen, da könnte man also den nächsten Termin anzeigen.

    T 1 Antwort Letzte Antwort
    0
    • J joBr99

      @ts said in Sonoff NSPanel:

      Eine Frage hätte ich - Ist es grundsätzlich möglich, den Screensaver zu ändern, oder ist die Optik "in Stein gemeißelt"?

      In der Firmware gibt es oben links und rechts zwei Icons, die du sprechend belegen kannst, ob das im ioBroker Skript implementiert ist kann ich dir nicht beantworten.

      e68f5f11-eb6f-41fe-a71a-91868e69cbd1-image.png

      Dabei sind diese Icons in der Firmware enthalten: Icon Sheet

      Bzgl. Kalender du kannst statt dem Wetter Benachrichtigungen anzeigen, da könnte man also den nächsten Termin anzeigen.

      T Offline
      T Offline
      TS
      schrieb am zuletzt editiert von
      #1332

      @jobr99 sagte in Sonoff NSPanel:

      Bzgl. Kalender du kannst statt dem Wetter Benachrichtigungen anzeigen, da könnte man also den nächsten Termin anzeigen.

      Super, danke dir.
      Das habe ich jetzt hinbekommen und so passt mir das. erstmal😬

      K 1 Antwort Letzte Antwort
      0
      • T tklein

        Wie könnte ich am besten den Status von PIR/Präsensmelder visualisieren? Die Werte können true/false sein

        Von welchem Typ sollte das alias sein? Typ Bewegung klappt bei mir momentan nicht.

        Gibt es ein Icon für PIRs/Bewegung?

        T Offline
        T Offline
        tklein
        schrieb am zuletzt editiert von
        #1333

        @tklein ich habe es mittlerweile so umgesetzt:

        var Pir_innen: PageGrid =
        {
            "type": "cardGrid",
            "heading": "Pir Innen",
            "useColor": true,
            "subPage": true,
            "parent": Overview_Sensors,
            "items": [
                <PageItem>{ id: "alias.0.Sensoren.PIR_Küche", name: "Küche", interpolateColor: true, icon: "motion-sensor", offColor: MSGreen, onColor: MSRed},
                <PageItem>{ id: "alias.0.Sensoren.PIR_Bad", name: "Bad", interpolateColor: true, icon: "motion-sensor", offColor: MSGreen, onColor: MSRed},
                <PageItem>{ id: "alias.0.Sensoren.PIR_Flur_oben", name: "Flur oben", interpolateColor: true, icon: "motion-sensor", offColor: MSGreen, onColor: MSRed},
                <PageItem>{ id: "alias.0.Sensoren.PIR_Schlafzimmer", name: "Schlafzimmer", interpolateColor: true, icon: "motion-sensor", offColor: MSGreen, onColor: MSRed},
                <PageItem>{ id: "alias.0.Sensoren.PIR_Ankleide", name: "Ankleide", interpolateColor: true, icon: "motion-sensor", offColor: MSGreen, onColor: MSRed},
                <PageItem>{ id: "alias.0.Sensoren.PIR_Gäste_WC", name: "Gäste WC", interpolateColor: true, icon: "motion-sensor", offColor: MSGreen, onColor: MSRed}
                
            ]
        };
        
        

        Die entsprechenden Aliase habe ich als Steckdose angelegt.

        So sieht es auf dem Display aus. Bei Küche war der Wert "true"

        6aca80da-20cc-4a0c-9069-d86a675c0cda-grafik.png

        Kann ich die Icon je nach Zustand (false/true) im display wechseln lassen? Z.B. von motion-sensor nach motion-sensor-off.
        Bei Verwendung von icon2 gibt es bei mir immer eine Fehlermeldung

        K K 2 Antworten Letzte Antwort
        0
        • T tklein

          @tklein ich habe es mittlerweile so umgesetzt:

          var Pir_innen: PageGrid =
          {
              "type": "cardGrid",
              "heading": "Pir Innen",
              "useColor": true,
              "subPage": true,
              "parent": Overview_Sensors,
              "items": [
                  <PageItem>{ id: "alias.0.Sensoren.PIR_Küche", name: "Küche", interpolateColor: true, icon: "motion-sensor", offColor: MSGreen, onColor: MSRed},
                  <PageItem>{ id: "alias.0.Sensoren.PIR_Bad", name: "Bad", interpolateColor: true, icon: "motion-sensor", offColor: MSGreen, onColor: MSRed},
                  <PageItem>{ id: "alias.0.Sensoren.PIR_Flur_oben", name: "Flur oben", interpolateColor: true, icon: "motion-sensor", offColor: MSGreen, onColor: MSRed},
                  <PageItem>{ id: "alias.0.Sensoren.PIR_Schlafzimmer", name: "Schlafzimmer", interpolateColor: true, icon: "motion-sensor", offColor: MSGreen, onColor: MSRed},
                  <PageItem>{ id: "alias.0.Sensoren.PIR_Ankleide", name: "Ankleide", interpolateColor: true, icon: "motion-sensor", offColor: MSGreen, onColor: MSRed},
                  <PageItem>{ id: "alias.0.Sensoren.PIR_Gäste_WC", name: "Gäste WC", interpolateColor: true, icon: "motion-sensor", offColor: MSGreen, onColor: MSRed}
                  
              ]
          };
          
          

          Die entsprechenden Aliase habe ich als Steckdose angelegt.

          So sieht es auf dem Display aus. Bei Küche war der Wert "true"

          6aca80da-20cc-4a0c-9069-d86a675c0cda-grafik.png

          Kann ich die Icon je nach Zustand (false/true) im display wechseln lassen? Z.B. von motion-sensor nach motion-sensor-off.
          Bei Verwendung von icon2 gibt es bei mir immer eine Fehlermeldung

          K Offline
          K Offline
          kptkip
          schrieb am zuletzt editiert von
          #1334

          @tklein
          Wie sehen bei Dir die Geräte-Werte/Typen aus?

          Ich versuche einen ähnlichen Effekt zu erzielen. Momentan baue ich ein Grid mit Radiosender-Schaltern für mein Sonos. Generell tun die Schalter, aber den Aktiv-Status bekomme ich nicht hin.

          Ich habe ein beispielhaftes Device mal hier abgebildet:
          Bildschirmfoto 2022-09-08 um 11.32.49.png
          Die Idee:

          • Der erste Wert setzt den Sonos-Fovouriten auf ein String (definiert unter "fx" am ende der Zeile)
          • der zweite Wert soll den Status (spielt/spielt nicht) abbilden. Dazu habe ich ein Custom-field vom typ boolean eingerichtet und unter "State" eingebunden.

          Im Javascript sieht das so aus:

          <PageItem>{ id: "alias.0.NSPanel-Küche.Radio_CT", icon: "radio", offColor: Gray, onColor: LightBlue, name: "RadioCT", interpolateColor: true},
          

          Ist da ein Denkfehler drin - evtl. im Typ des Werts im Gerät?

          T K 2 Antworten Letzte Antwort
          0
          • K kptkip

            @tklein
            Wie sehen bei Dir die Geräte-Werte/Typen aus?

            Ich versuche einen ähnlichen Effekt zu erzielen. Momentan baue ich ein Grid mit Radiosender-Schaltern für mein Sonos. Generell tun die Schalter, aber den Aktiv-Status bekomme ich nicht hin.

            Ich habe ein beispielhaftes Device mal hier abgebildet:
            Bildschirmfoto 2022-09-08 um 11.32.49.png
            Die Idee:

            • Der erste Wert setzt den Sonos-Fovouriten auf ein String (definiert unter "fx" am ende der Zeile)
            • der zweite Wert soll den Status (spielt/spielt nicht) abbilden. Dazu habe ich ein Custom-field vom typ boolean eingerichtet und unter "State" eingebunden.

            Im Javascript sieht das so aus:

            <PageItem>{ id: "alias.0.NSPanel-Küche.Radio_CT", icon: "radio", offColor: Gray, onColor: LightBlue, name: "RadioCT", interpolateColor: true},
            

            Ist da ein Denkfehler drin - evtl. im Typ des Werts im Gerät?

            T Offline
            T Offline
            tklein
            schrieb am zuletzt editiert von
            #1335

            @kptkip sorry, aber bei Tastern bin ich noch nicht angelangt.
            Die Typen von deinem Alias sollten so wie es aussieht vom Typ boolean sein. Sind die das bei dir

            Mein Presence Alias ist vom Typ "Steckdose" keine Ahnung, ob das eleganter geht. Aber mit dem Typ "Info" und "Bewegung" hat es bei mir nicht geklappt.

            2c70e456-35b4-49d3-9a0f-d64fb694b045-grafik.png

            K 1 Antwort Letzte Antwort
            0
            • T tklein

              @kptkip sorry, aber bei Tastern bin ich noch nicht angelangt.
              Die Typen von deinem Alias sollten so wie es aussieht vom Typ boolean sein. Sind die das bei dir

              Mein Presence Alias ist vom Typ "Steckdose" keine Ahnung, ob das eleganter geht. Aber mit dem Typ "Info" und "Bewegung" hat es bei mir nicht geklappt.

              2c70e456-35b4-49d3-9a0f-d64fb694b045-grafik.png

              K Offline
              K Offline
              kptkip
              schrieb am zuletzt editiert von
              #1336

              @tklein
              Danke, Matthias für den Screenshot.
              Ich nehme an, dass das Script, den "Hauptwert" deines Geräts (true/false) ausliest und daraus die Icon-Farbe mittels onColor und offColor wechselt. Ich hatte mir den Steckdosen-Typ auch angeschaut und vermutet, dass der Wert aus "ACTUAL" käme - offensichtlich nicht 😉

              Leider brauche ich den "Info"-Typ, um den String-Wert in den SONOS-Datenpunkt zu schicken.

              Aber mal ne andere Frage:
              Aktualisiert das Script die Werte denn auf dem Panel, auch wenn das Panel an ist (in Echtzeit)? Ich sehe Änderungen (z.B. im cardMedia) nur nach einem Neuladen des Screens - entweder durch Blättern oder beim Reaktivieren nach dem Screensaver.

              N T 2 Antworten Letzte Antwort
              0
              • K kptkip

                @tklein
                Danke, Matthias für den Screenshot.
                Ich nehme an, dass das Script, den "Hauptwert" deines Geräts (true/false) ausliest und daraus die Icon-Farbe mittels onColor und offColor wechselt. Ich hatte mir den Steckdosen-Typ auch angeschaut und vermutet, dass der Wert aus "ACTUAL" käme - offensichtlich nicht 😉

                Leider brauche ich den "Info"-Typ, um den String-Wert in den SONOS-Datenpunkt zu schicken.

                Aber mal ne andere Frage:
                Aktualisiert das Script die Werte denn auf dem Panel, auch wenn das Panel an ist (in Echtzeit)? Ich sehe Änderungen (z.B. im cardMedia) nur nach einem Neuladen des Screens - entweder durch Blättern oder beim Reaktivieren nach dem Screensaver.

                N Offline
                N Offline
                niiccooo1
                schrieb am zuletzt editiert von
                #1337

                @kptkip
                @Armilar wollte sich das mit der Aktualisierung der cardMedia nach seinen Trip anschauen.
                Er ist zuversichtlich, dass das geht. (Post)

                1 Antwort Letzte Antwort
                0
                • K kptkip

                  @tklein
                  Danke, Matthias für den Screenshot.
                  Ich nehme an, dass das Script, den "Hauptwert" deines Geräts (true/false) ausliest und daraus die Icon-Farbe mittels onColor und offColor wechselt. Ich hatte mir den Steckdosen-Typ auch angeschaut und vermutet, dass der Wert aus "ACTUAL" käme - offensichtlich nicht 😉

                  Leider brauche ich den "Info"-Typ, um den String-Wert in den SONOS-Datenpunkt zu schicken.

                  Aber mal ne andere Frage:
                  Aktualisiert das Script die Werte denn auf dem Panel, auch wenn das Panel an ist (in Echtzeit)? Ich sehe Änderungen (z.B. im cardMedia) nur nach einem Neuladen des Screens - entweder durch Blättern oder beim Reaktivieren nach dem Screensaver.

                  T Offline
                  T Offline
                  tklein
                  schrieb am zuletzt editiert von
                  #1338

                  @kptkip evt. etwas umständlich, aber warum keinen DP mit true/false. Bei Trigger auf Wechsel sendest du dann einen Strin an die passende Stelle/DP?

                  1 Antwort Letzte Antwort
                  0
                  • T TS

                    @jobr99 sagte in Sonoff NSPanel:

                    Bzgl. Kalender du kannst statt dem Wetter Benachrichtigungen anzeigen, da könnte man also den nächsten Termin anzeigen.

                    Super, danke dir.
                    Das habe ich jetzt hinbekommen und so passt mir das. erstmal😬

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

                    @ts sagte in Sonoff NSPanel:

                    @jobr99 sagte in Sonoff NSPanel:

                    Bzgl. Kalender du kannst statt dem Wetter Benachrichtigungen anzeigen, da könnte man also den nächsten Termin anzeigen.

                    Super, danke dir.
                    Das habe ich jetzt hinbekommen und so passt mir das. erstmal😬

                    Würdest Du mir einen Screenshot und ggf. die Konfiguration zur Verfügung stellen?

                    NSPanel Dokumentation im GitHub Wiki:

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

                    T 1 Antwort Letzte Antwort
                    0
                    • T tklein

                      @tklein ich habe es mittlerweile so umgesetzt:

                      var Pir_innen: PageGrid =
                      {
                          "type": "cardGrid",
                          "heading": "Pir Innen",
                          "useColor": true,
                          "subPage": true,
                          "parent": Overview_Sensors,
                          "items": [
                              <PageItem>{ id: "alias.0.Sensoren.PIR_Küche", name: "Küche", interpolateColor: true, icon: "motion-sensor", offColor: MSGreen, onColor: MSRed},
                              <PageItem>{ id: "alias.0.Sensoren.PIR_Bad", name: "Bad", interpolateColor: true, icon: "motion-sensor", offColor: MSGreen, onColor: MSRed},
                              <PageItem>{ id: "alias.0.Sensoren.PIR_Flur_oben", name: "Flur oben", interpolateColor: true, icon: "motion-sensor", offColor: MSGreen, onColor: MSRed},
                              <PageItem>{ id: "alias.0.Sensoren.PIR_Schlafzimmer", name: "Schlafzimmer", interpolateColor: true, icon: "motion-sensor", offColor: MSGreen, onColor: MSRed},
                              <PageItem>{ id: "alias.0.Sensoren.PIR_Ankleide", name: "Ankleide", interpolateColor: true, icon: "motion-sensor", offColor: MSGreen, onColor: MSRed},
                              <PageItem>{ id: "alias.0.Sensoren.PIR_Gäste_WC", name: "Gäste WC", interpolateColor: true, icon: "motion-sensor", offColor: MSGreen, onColor: MSRed}
                              
                          ]
                      };
                      
                      

                      Die entsprechenden Aliase habe ich als Steckdose angelegt.

                      So sieht es auf dem Display aus. Bei Küche war der Wert "true"

                      6aca80da-20cc-4a0c-9069-d86a675c0cda-grafik.png

                      Kann ich die Icon je nach Zustand (false/true) im display wechseln lassen? Z.B. von motion-sensor nach motion-sensor-off.
                      Bei Verwendung von icon2 gibt es bei mir immer eine Fehlermeldung

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

                      @tklein sagte in Sonoff NSPanel:

                      @tklein ich habe es mittlerweile so umgesetzt:

                      var Pir_innen: PageGrid =
                      {
                          "type": "cardGrid",
                          "heading": "Pir Innen",
                          "useColor": true,
                          "subPage": true,
                          "parent": Overview_Sensors,
                          "items": [
                              <PageItem>{ id: "alias.0.Sensoren.PIR_Küche", name: "Küche", interpolateColor: true, icon: "motion-sensor", offColor: MSGreen, onColor: MSRed},
                              <PageItem>{ id: "alias.0.Sensoren.PIR_Bad", name: "Bad", interpolateColor: true, icon: "motion-sensor", offColor: MSGreen, onColor: MSRed},
                              <PageItem>{ id: "alias.0.Sensoren.PIR_Flur_oben", name: "Flur oben", interpolateColor: true, icon: "motion-sensor", offColor: MSGreen, onColor: MSRed},
                              <PageItem>{ id: "alias.0.Sensoren.PIR_Schlafzimmer", name: "Schlafzimmer", interpolateColor: true, icon: "motion-sensor", offColor: MSGreen, onColor: MSRed},
                              <PageItem>{ id: "alias.0.Sensoren.PIR_Ankleide", name: "Ankleide", interpolateColor: true, icon: "motion-sensor", offColor: MSGreen, onColor: MSRed},
                              <PageItem>{ id: "alias.0.Sensoren.PIR_Gäste_WC", name: "Gäste WC", interpolateColor: true, icon: "motion-sensor", offColor: MSGreen, onColor: MSRed}
                              
                          ]
                      };
                      
                      

                      Die entsprechenden Aliase habe ich als Steckdose angelegt.

                      So sieht es auf dem Display aus. Bei Küche war der Wert "true"

                      6aca80da-20cc-4a0c-9069-d86a675c0cda-grafik.png

                      Kann ich die Icon je nach Zustand (false/true) im display wechseln lassen? Z.B. von motion-sensor nach motion-sensor-off.
                      Bei Verwendung von icon2 gibt es bei mir immer eine Fehlermeldung

                      Probier es mal mit Alias Typ Schloss und den passenden Feldern. Das könnte gehen.

                      UPDATE: Alias TYP Schloss / Verschluss und dort nur den Indikator ACTUAL auf den Datenpunkt verlinken. Dann bekommst Du genau das was Du willst.

                      NSPanel Dokumentation im GitHub Wiki:

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

                      T 1 Antwort Letzte Antwort
                      0
                      • K kptkip

                        @tklein
                        Wie sehen bei Dir die Geräte-Werte/Typen aus?

                        Ich versuche einen ähnlichen Effekt zu erzielen. Momentan baue ich ein Grid mit Radiosender-Schaltern für mein Sonos. Generell tun die Schalter, aber den Aktiv-Status bekomme ich nicht hin.

                        Ich habe ein beispielhaftes Device mal hier abgebildet:
                        Bildschirmfoto 2022-09-08 um 11.32.49.png
                        Die Idee:

                        • Der erste Wert setzt den Sonos-Fovouriten auf ein String (definiert unter "fx" am ende der Zeile)
                        • der zweite Wert soll den Status (spielt/spielt nicht) abbilden. Dazu habe ich ein Custom-field vom typ boolean eingerichtet und unter "State" eingebunden.

                        Im Javascript sieht das so aus:

                        <PageItem>{ id: "alias.0.NSPanel-Küche.Radio_CT", icon: "radio", offColor: Gray, onColor: LightBlue, name: "RadioCT", interpolateColor: true},
                        

                        Ist da ein Denkfehler drin - evtl. im Typ des Werts im Gerät?

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

                        @kptkip sagte in Sonoff NSPanel:

                        @tklein
                        Wie sehen bei Dir die Geräte-Werte/Typen aus?

                        Ich versuche einen ähnlichen Effekt zu erzielen. Momentan baue ich ein Grid mit Radiosender-Schaltern für mein Sonos. Generell tun die Schalter, aber den Aktiv-Status bekomme ich nicht hin.

                        Ich habe ein beispielhaftes Device mal hier abgebildet:
                        Bildschirmfoto 2022-09-08 um 11.32.49.png
                        Die Idee:

                        • Der erste Wert setzt den Sonos-Fovouriten auf ein String (definiert unter "fx" am ende der Zeile)
                        • der zweite Wert soll den Status (spielt/spielt nicht) abbilden. Dazu habe ich ein Custom-field vom typ boolean eingerichtet und unter "State" eingebunden.

                        Im Javascript sieht das so aus:

                        <PageItem>{ id: "alias.0.NSPanel-Küche.Radio_CT", icon: "radio", offColor: Gray, onColor: LightBlue, name: "RadioCT", interpolateColor: true},
                        

                        Ist da ein Denkfehler drin - evtl. im Typ des Werts im Gerät?

                        Probier es mal mit dem Alias Typ Schloss: Alias TYP Schloss / Verschluss und dort den Indikator ACTUAL auf den Datenpunkt verlinken mit dem Boolean (true/false) und SET zum starten des Favoriten.
                        Das müsste Dir helfen 😉

                        NSPanel Dokumentation im GitHub Wiki:

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

                        K 1 Antwort Letzte Antwort
                        0
                        • T Offline
                          T Offline
                          TT-Tom
                          schrieb am zuletzt editiert von TT-Tom
                          #1342

                          @Kuckuckmann @Armilar

                          Hi,

                          ich habe das Abfallscript jetzt soweit erweitert, das es die notwendigen Datenpunkte überprüft und ggf. erstellt. Im Kopf müssen die Werte/Parameter eingestellt werden. man kann auch die Prüfung deaktivieren. Bitte das Script mal testen, wenn es funktioniert kommt es dann in die FAQ.

                          /*
                          Version 3.0 von TT-Tom
                          das Script erstellt die Datenpunkte und Alias für den Abfallkalender im Sonoff NSPanel
                          Es wird der iCal Adapter benötigt und eine URL mit Terminen vom Entsorger bzw. eine .ics-Datei mit den Terminen.
                          gleichzeitig triggert das Script auf dem bereitgestellten JSON im iCal adapter und füllt die 0_userdata.0 Datenpunkte
                          Weitere Informationen findest du in der FAQ auf Github https://github.com/joBr99/nspanel-lovelace-ui/wiki
                          */
                          
                          const idAbfalliCal = 'ical.1'; // iCal Instanz zum Abfallkalender
                          const idUserdataAbfallVerzeichnis = 'Abfallkalender'; // Name des Datenpunktverzeichnis unter 0_userdata.0 -> Strandard = Abfallkalender
                          const idAliasPanelVerzeichnis = 'NSPanel1'; //Name des PanelVerzeichnis unter alias.0. Standard = NSPanel_1
                          const idAliasAbfallVerzeichnis = 'Abfall'; //Name Verzeichnis unterhalb der idPanelverzeichnis  Standard = Abfall
                          
                          const idZeichenLoeschen = 14; // x Zeichen links vom String abziehen, wenn vor dem Eventname noch Text steht z.B. Strassenname; Standard = 0
                          const idRestmuellName = 'Hausmüll'; // Schwarze Tonne
                          const idWertstoffName = 'Gelber Sack'; // Gelbe Tonne / Sack
                          const idPappePapierName = 'Papier';  // Blaue Tonne
                          const idBioabfaelleName = 'Biomüll'; // Braune Tonne
                          
                          const idDPPruefung = true; // mit "false" wird die Prüfung der Datenpunkte in 0_userdata.0 und alias.0 ausgesetzt
                          
                          
                          
                          // ------------------------- Trigger zum füllen der 0_userdata Datenpunkte aus dem json vom ical Adapter -------------------------------
                          var i, Muell_JSON, Event2, Color = 0;
                          
                          // Trigger auf iCal Instanz zur Json Tabelle
                          on({ id: idAbfalliCal + '.data.table', change: "ne" }, async function () {
                          
                             for (i = 1; i <= 4; i++) {
                                 Muell_JSON = getState(idAbfalliCal + '.data.table').val;
                          //        setStateDelayed((['0_userdata.0.' + idUserdataAbfallVerzeichnis + '.', parseFloat(i) + 1, '.date'].join('')), getAttr(Muell_JSON, (String(i) + '.date')), false, parseInt(((0) || "").toString(), 10), false);
                                 setState('0_userdata.0.' + idUserdataAbfallVerzeichnis + '.'+ parseFloat(i) + '.date', getAttr(Muell_JSON, (String(i-1) + '.date')));
                                 Event2 = subsequenceFromStartLast(getAttr(Muell_JSON, (String(i-1) + '.event')), idZeichenLoeschen);
                          //        setStateDelayed((['0_userdata.0.' + idUserdataAbfallVerzeichnis + '.', parseFloat(i) + 1, '.event'].join('')), Event2, false, parseInt(((0) || "").toString(), 10), false);
                                 setState('0_userdata.0.' + idUserdataAbfallVerzeichnis + '.'+ parseFloat(i) + '.event', Event2);
                                 if (Event2 == idRestmuellName) {
                                     Color = 33840;
                                 } else if (Event2 == idBioabfaelleName) {
                                     Color = 2016;
                                 } else if (Event2 == idPappePapierName) {
                                     Color = 31;
                                 } else if (Event2 == idWertstoffName) {
                                     Color = 65504;
                                 }
                          //        setStateDelayed((['0_userdata.0.' + idUserdataAbfallVerzeichnis + '.', parseFloat(i) + 1, '.color'].join('')), Color, false, parseInt(((0) || "").toString(), 10), false);
                                 setState('0_userdata.0.' + idUserdataAbfallVerzeichnis + '.'+ parseFloat(i) + '.color', Color);
                             }
                          });
                          
                          function subsequenceFromStartLast(sequence, at1) {
                             var start = at1;
                             var end = sequence.length;
                             return sequence.slice(start, end);
                          };
                          // ------------------------------------- Ende Trigger ------------------------------------
                          
                          // ------------------------------------- Funktionen zur Prüfung und Erstellung der Datenpunkte in 0_userdata.0 und alias.0 -----------------------
                          if (idDPPruefung) {
                             checkUserdataState();
                             checkAliasFolder();
                             checkAliasChannel();
                             checkAliasState();
                          };
                          // Prüfung und ggf. Erstellung der Datenpunkte unter 0_userdata.0
                          function checkUserdataState() {
                             for (i = 1; i <= 4; i++) {
                                 if (!existsState('0_userdata.0.' + idUserdataAbfallVerzeichnis + '.' + parseFloat(i) + '.date')) {
                                     log(i + '.date nicht vorhanden, wurde erstellt');
                                     createState('0_userdata.0.' + idUserdataAbfallVerzeichnis + '.' + parseFloat(i) + '.date', '',
                                         {
                                             name: parseFloat(i) + '.date',
                                             role: 'state',
                                             type: 'string',
                                             read: true,
                                             write: true,
                                             def: ''
                                         });
                                 };
                                 if (!existsState('0_userdata.0.' + idUserdataAbfallVerzeichnis + '.' + parseFloat(i) + '.event')) {
                                     log(i + '.event nicht vorhanden, wurde erstellt');
                                     createState('0_userdata.0.' + idUserdataAbfallVerzeichnis + '.' + parseFloat(i) + '.event', '',
                                         {
                                             name: parseFloat(i) + '.event',
                                             role: 'state',
                                             type: 'string',
                                             read: true,
                                             write: true,
                                             def: ''
                                         });
                                 };
                                 if (!existsState('0_userdata.0.' + idUserdataAbfallVerzeichnis + '.' + parseFloat(i) + '.color')) {
                                     log(i + '.color nicht vorhanden, wurde erstellt');
                                     createState('0_userdata.0.' + idUserdataAbfallVerzeichnis + '.' + parseFloat(i) + '.color', '',
                                         {
                                             name: parseFloat(i) + '.color',
                                             role: 'state',
                                             type: 'number',
                                             read: true,
                                             write: true,
                                             def: 0
                                         });
                                 };
                             };
                          };
                          // Prüfung das Alias states vorhanden sind ggf. anlegen
                          function checkAliasState() {
                             for (i = 1; i <= 4; i++) {
                                 if (!existsState('alias.0.' + idAliasPanelVerzeichnis + '.' + idAliasAbfallVerzeichnis + '.event' + i + '.INFO')) {
                                     log('Alias State event' + i + '.INFO nicht vorhanden');
                                     createAliasState('alias.0.' + idAliasPanelVerzeichnis + '.' + idAliasAbfallVerzeichnis + '.event' + i + '.INFO', '0_userdata.0.' + idUserdataAbfallVerzeichnis + '.' + parseFloat(i) + '.date', 'string', 'INFO', 'weather.title');
                                 }else{log('irgendwasgefunden')};
                                 if (!existsState('alias.0.' + idAliasPanelVerzeichnis + '.' + idAliasAbfallVerzeichnis + '.event' + i + '.LEVEL')) {
                                     log('Alias State event' + i + '.LEVEL nicht vorhanden')
                                     createAliasState('alias.0.' + idAliasPanelVerzeichnis + '.' + idAliasAbfallVerzeichnis + '.event' + i + '.LEVEL', '0_userdata.0.' + idUserdataAbfallVerzeichnis + '.' + parseFloat(i) + '.color', 'number', 'LEVEL', 'value.warning');
                                 };
                                 if (!existsState('alias.0.' + idAliasPanelVerzeichnis + '.' + idAliasAbfallVerzeichnis + '.event' + i + '.TITLE')) {
                                     log('Alias State event' + i + '.TITLE nicht vorhanden')
                                     createAliasState('alias.0.' + idAliasPanelVerzeichnis + '.' + idAliasAbfallVerzeichnis + '.event' + i + '.TITLE', '0_userdata.0.' + idUserdataAbfallVerzeichnis + '.' + parseFloat(i) + '.event', 'string', 'TITLE', 'weather.title.short');
                                 };
                             };
                          
                          };
                          // Erstellt ein State unter Alias.0
                          function createAliasState(idDst, idSrc, typeAlias, nameAlias, role) {
                             var obj = {};
                             obj.type = 'state';
                             obj.common = getObject(idSrc).common;
                             obj.common.alias = {};
                             obj.common.alias.id = idSrc;
                             obj.common.type = typeAlias;
                             obj.common.name = nameAlias;
                             obj.common.role = role;
                             obj.native = {};
                             setObject(idDst, obj, function () {
                                 setState(idSrc, getState(idSrc).val, true);
                             });
                          };
                          // Prüfung das Alias Channel vorhanden sind ggf. anlegen
                          function checkAliasChannel() {
                             for (i = 1; i <= 4; i++) {
                                 if (!existsObject('alias.0.' + idAliasPanelVerzeichnis + '.' + idAliasAbfallVerzeichnis + '.event' + i)) {
                                     log('Alias Channel ' + idAliasAbfallVerzeichnis + '.event' + i + ' nicht vorhanden');
                                     createAliasChannel('alias.0.' + idAliasPanelVerzeichnis + '.' + idAliasAbfallVerzeichnis + '.event' + i, idAliasAbfallVerzeichnis + '.event' + i, 'warning');
                                 }
                             }
                          };
                          // Erstellt ein Channel unter Alias.0
                          function createAliasChannel(idDst, nameAlias, role) {
                             var obj = {};
                             obj.type = 'channel';
                             obj.common = {};
                             obj.common.name = {};
                             obj.common.name.de = nameAlias;
                             obj.common.role = role;
                             obj.native = {};
                             setObject(idDst, obj);
                          };
                          // Prüfung das Alias Folder vorhanden sind ggf. anlegen
                          function checkAliasFolder() {
                             if (!existsObject('alias.0.' + idAliasPanelVerzeichnis)) {
                                 log('Alias Folder ' + idAliasPanelVerzeichnis + ' nicht vorhanden');
                                 createAliasFolder('alias.0.' + idAliasPanelVerzeichnis, idAliasPanelVerzeichnis);
                             };
                          }
                          // erstellt ein Folder unter Alias.0
                          function createAliasFolder(idDst, nameAlias) {
                             var obj = {};
                             obj.type = 'folder';
                             obj.common = {};
                             obj.common.name = nameAlias;
                             obj.native = {};
                             setObject(idDst, obj);
                          };
                          // --------------------------- Ende Funktionen Datenpunkte ------------------------------------------------
                          
                          
                          
                          

                          Gruß Tom
                          https://github.com/tt-tom17
                          Wenn meine Hilfe erfolgreich war, benutze bitte das Voting unten rechts im Beitrag

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

                          NSPanel Adapter Wiki
                          https://github.com/ticaki/ioBroker.nspanel-lovelace-ui/wiki

                          J 1 Antwort Letzte Antwort
                          0
                          • K Kuckuckmann

                            @tklein sagte in Sonoff NSPanel:

                            @tklein ich habe es mittlerweile so umgesetzt:

                            var Pir_innen: PageGrid =
                            {
                                "type": "cardGrid",
                                "heading": "Pir Innen",
                                "useColor": true,
                                "subPage": true,
                                "parent": Overview_Sensors,
                                "items": [
                                    <PageItem>{ id: "alias.0.Sensoren.PIR_Küche", name: "Küche", interpolateColor: true, icon: "motion-sensor", offColor: MSGreen, onColor: MSRed},
                                    <PageItem>{ id: "alias.0.Sensoren.PIR_Bad", name: "Bad", interpolateColor: true, icon: "motion-sensor", offColor: MSGreen, onColor: MSRed},
                                    <PageItem>{ id: "alias.0.Sensoren.PIR_Flur_oben", name: "Flur oben", interpolateColor: true, icon: "motion-sensor", offColor: MSGreen, onColor: MSRed},
                                    <PageItem>{ id: "alias.0.Sensoren.PIR_Schlafzimmer", name: "Schlafzimmer", interpolateColor: true, icon: "motion-sensor", offColor: MSGreen, onColor: MSRed},
                                    <PageItem>{ id: "alias.0.Sensoren.PIR_Ankleide", name: "Ankleide", interpolateColor: true, icon: "motion-sensor", offColor: MSGreen, onColor: MSRed},
                                    <PageItem>{ id: "alias.0.Sensoren.PIR_Gäste_WC", name: "Gäste WC", interpolateColor: true, icon: "motion-sensor", offColor: MSGreen, onColor: MSRed}
                                    
                                ]
                            };
                            
                            

                            Die entsprechenden Aliase habe ich als Steckdose angelegt.

                            So sieht es auf dem Display aus. Bei Küche war der Wert "true"

                            6aca80da-20cc-4a0c-9069-d86a675c0cda-grafik.png

                            Kann ich die Icon je nach Zustand (false/true) im display wechseln lassen? Z.B. von motion-sensor nach motion-sensor-off.
                            Bei Verwendung von icon2 gibt es bei mir immer eine Fehlermeldung

                            Probier es mal mit Alias Typ Schloss und den passenden Feldern. Das könnte gehen.

                            UPDATE: Alias TYP Schloss / Verschluss und dort nur den Indikator ACTUAL auf den Datenpunkt verlinken. Dann bekommst Du genau das was Du willst.

                            T Offline
                            T Offline
                            tklein
                            schrieb am zuletzt editiert von
                            #1343

                            @kuckuckmann besten dank. mit dem icon2 habe ich es jetzt auch hinbekommen. Sieht für mich schon gut aus.

                            <PageItem>{ id: "alias.0.Sensoren.PIR_Küche", name: "Küche", interpolateColor: true, icon: "motion-sensor", icon2: "motion-sensor-off", offColor: MSGreen, onColor: MSRed},
                            
                            K 1 Antwort Letzte Antwort
                            0
                            • T tklein

                              @kuckuckmann besten dank. mit dem icon2 habe ich es jetzt auch hinbekommen. Sieht für mich schon gut aus.

                              <PageItem>{ id: "alias.0.Sensoren.PIR_Küche", name: "Küche", interpolateColor: true, icon: "motion-sensor", icon2: "motion-sensor-off", offColor: MSGreen, onColor: MSRed},
                              
                              K Offline
                              K Offline
                              Kuckuckmann
                              schrieb am zuletzt editiert von
                              #1344

                              @tklein sagte in Sonoff NSPanel:

                              @kuckuckmann besten dank. mit dem icon2 habe ich es jetzt auch hinbekommen. Sieht für mich schon gut aus.

                              <PageItem>{ id: "alias.0.Sensoren.PIR_Küche", name: "Küche", interpolateColor: true, icon: "motion-sensor", icon2: "motion-sensor-off", offColor: MSGreen, onColor: MSRed},
                              

                              Freut mich 🙂

                              NSPanel Dokumentation im GitHub Wiki:

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

                              1 Antwort Letzte Antwort
                              0
                              • T Offline
                                T Offline
                                tklein
                                schrieb am zuletzt editiert von tklein
                                #1345

                                Hi,

                                hat sonst noch jemand das Problem, dass er bei der PageThermo die Temperatur durch Klick nicht erhöhen kann?
                                Minimieren klappt bei mir. Will nicht hoffen, dass das Display an der Stelle kein Touch erkennt.

                                var Badezimmer_Thermostat: PageThermo = 
                                {
                                    "type": "cardThermo",
                                    "heading": "Badezimmer Thermostat",
                                    "useColor": true,
                                    "subPage": false,
                                    "parent": undefined,
                                    "items": [<PageItem>{ id: "alias.0.Thermostate.Bad_Thermostat", minValue: 0, maxValue: 40}]
                                };
                                

                                8cb10c3a-d3bf-4d80-8276-cbca7f2d4d64-grafik.png

                                T 1 Antwort Letzte Antwort
                                0
                                • T tklein

                                  Hi,

                                  hat sonst noch jemand das Problem, dass er bei der PageThermo die Temperatur durch Klick nicht erhöhen kann?
                                  Minimieren klappt bei mir. Will nicht hoffen, dass das Display an der Stelle kein Touch erkennt.

                                  var Badezimmer_Thermostat: PageThermo = 
                                  {
                                      "type": "cardThermo",
                                      "heading": "Badezimmer Thermostat",
                                      "useColor": true,
                                      "subPage": false,
                                      "parent": undefined,
                                      "items": [<PageItem>{ id: "alias.0.Thermostate.Bad_Thermostat", minValue: 0, maxValue: 40}]
                                  };
                                  

                                  8cb10c3a-d3bf-4d80-8276-cbca7f2d4d64-grafik.png

                                  T Offline
                                  T Offline
                                  tklein
                                  schrieb am zuletzt editiert von tklein
                                  #1346

                                  @tklein said in Sonoff NSPanel:

                                  Hi,

                                  hat sonst noch jemand das Problem, dass er bei der PageThermo die Temperatur durch Klick nicht erhöhen kann?
                                  Minimieren klappt bei mir. Will nicht hoffen, dass das Display an der Stelle kein Touch erkennt.

                                  Ich sehe gerade, dass der Mode eine Pflichtangabe sein muss. Was soll da drinstehen? Mich wundert, dass das Switch/Power kein Pflichtfeld ist.

                                  K 1 Antwort Letzte Antwort
                                  0
                                  • T tklein

                                    @tklein said in Sonoff NSPanel:

                                    Hi,

                                    hat sonst noch jemand das Problem, dass er bei der PageThermo die Temperatur durch Klick nicht erhöhen kann?
                                    Minimieren klappt bei mir. Will nicht hoffen, dass das Display an der Stelle kein Touch erkennt.

                                    Ich sehe gerade, dass der Mode eine Pflichtangabe sein muss. Was soll da drinstehen? Mich wundert, dass das Switch/Power kein Pflichtfeld ist.

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

                                    @tklein
                                    Probier mal bei Mode das gleiche wie bei SET.
                                    Ansonsten poste mal einen Screen von den DP deines Thermostates.
                                    Aber eigentlich ist ACTUAL für die Temperatureinstellung, würde ich sagen.

                                    NSPanel Dokumentation im GitHub Wiki:

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

                                    T 1 Antwort Letzte Antwort
                                    0
                                    • K Kuckuckmann

                                      @tklein
                                      Probier mal bei Mode das gleiche wie bei SET.
                                      Ansonsten poste mal einen Screen von den DP deines Thermostates.
                                      Aber eigentlich ist ACTUAL für die Temperatureinstellung, würde ich sagen.

                                      T Offline
                                      T Offline
                                      tklein
                                      schrieb am zuletzt editiert von
                                      #1348

                                      @kuckuckmann

                                      3145a518-6b79-40ba-aebc-bd8cc99b9b34-grafik.png

                                      und

                                      1d71f54d-0d54-4cd2-ba03-493339328b83-grafik.png

                                      K 1 Antwort Letzte Antwort
                                      0
                                      • T tklein

                                        @kuckuckmann

                                        3145a518-6b79-40ba-aebc-bd8cc99b9b34-grafik.png

                                        und

                                        1d71f54d-0d54-4cd2-ba03-493339328b83-grafik.png

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

                                        @tklein
                                        Ich glaube fast das könnte ein Bug sein. Ich kann die Temp. auch nicht nach oben korrigieren.

                                        NSPanel Dokumentation im GitHub Wiki:

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

                                        T 2 Antworten Letzte Antwort
                                        0
                                        • K Kuckuckmann

                                          @tklein
                                          Ich glaube fast das könnte ein Bug sein. Ich kann die Temp. auch nicht nach oben korrigieren.

                                          T Offline
                                          T Offline
                                          tklein
                                          schrieb am zuletzt editiert von
                                          #1350

                                          @kuckuckmann said in Sonoff NSPanel:

                                          @tklein
                                          Ich glaube fast das könnte ein Bug sein. Ich kann die Temp. auch nicht nach oben korrigieren.

                                          müssen eh enegiekosten sparen, also dann lieber nur nach unten 🙂

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


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          341

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe