Navigation

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

    NEWS

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

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

    Sonoff NSPanel

    This topic has been deleted. Only users with topic management privileges can see it.
    • K
      Kuckuckmann @tklein last edited by

      @tklein sagte in Sonoff NSPanel:

      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?

      Hi @tklein,

      ein Präsensmelder gibt dir ja zurück, dass sich jemand quasi bewegt. Das kann man nutzen um etwas automatisiert zu schalten. In welchem Zusammenhang willst Du das mit dem Panel nutzen?

      Vlt. kannst Du das gewünschte Szenario noch genauer beschreiben?

      LG

      T 1 Reply Last reply Reply Quote 0
      • K
        Kuckuckmann @TS last edited by

        @ts sagte in Sonoff NSPanel:

        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?

        Hi @TS ,

        in Stein gemeißelt ist grundsätzlich nichts, aber es gibt Einschränkungen. Um Informationen anzeigen zu können mus es auf der entsprechenden Maske (hier der Screensaver) entsprechende Felder geben. Das können @Armilar und @joBr99 ggf. beantworten.

        Bzgl. des Beschreibungsfeldes der HW Buttons kannst Du mal im Github ein Ticket aufmachen.
        https://github.com/joBr99/nspanel-lovelace-ui/issues

        Was aus Deinem Familienkalender möchtest Du denn anzeigen? Du hast da max. 4 Felder um was anzuzeigen. Also statt Weatherforcast die Kalendereinträge.

        Vlt. kannst Du dazu noch ein weniger genauer Beschreiben?

        LG

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

          @tt-tom sagte in Sonoff NSPanel:

          @kuckuckmann

          habe im Wiki mal etwas angepasst beim AbfallKalender, bitte mal prüfen. Werde das Script weiter bearbeiten.
          Ziel soll sein das beim ersten Start alle Datenpunkte und Alias angelegt werden.

          off topic: wie geht hier im Forum das mit der PN oder gibt es nur den Chat?

          Danke Dir 🙂

          Schau mal oben rechts neben dem Kreissymbol mit deinen Buchstaben drin, da ist eine Sprechblase, da steht jetzt bestimmt was in rot drauf. Das ist der Chat.

          1 Reply Last reply Reply Quote 0
          • T
            TS @Kuckuckmann last edited by

            @kuckuckmann sagte in Sonoff NSPanel:

            @ts sagte in Sonoff NSPanel:

            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?

            Hi @TS ,

            in Stein gemeißelt ist grundsätzlich nichts, aber es gibt Einschränkungen. Um Informationen anzeigen zu können mus es auf der entsprechenden Maske (hier der Screensaver) entsprechende Felder geben. Das können @Armilar und @joBr99 ggf. beantworten.

            Bzgl. des Beschreibungsfeldes der HW Buttons kannst Du mal im Github ein Ticket aufmachen.
            https://github.com/joBr99/nspanel-lovelace-ui/issues

            Was aus Deinem Familienkalender möchtest Du denn anzeigen? Du hast da max. 4 Felder um was anzuzeigen. Also statt Weatherforcast die Kalendereinträge.

            Vlt. kannst Du dazu noch ein weniger genauer Beschreiben?

            LG

            Ein umschalten zwischen "Zeit+Wetter Anzeige" und "card-Kalender" wäre gut. Also einfach eine Listen Ansicht von einem definierten Kalender.

            K 1 Reply Last reply Reply Quote 0
            • T
              tklein @Kuckuckmann last edited by

              @kuckuckmann said in Sonoff NSPanel:

              @tklein sagte in Sonoff NSPanel:

              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?

              Hi @tklein,

              ein Präsensmelder gibt dir ja zurück, dass sich jemand quasi bewegt. Das kann man nutzen um etwas automatisiert zu schalten. In welchem Zusammenhang willst Du das mit dem Panel nutzen?

              Vlt. kannst Du das gewünschte Szenario noch genauer beschreiben?

              LG

              Genau. Derzeit werden bei Bewegung in Verbindung mit Lichtstärke bzw. Jalousieposition die Deckenlampe eingeschaltet.

              Ich hätte gerne ein View, bei der mir angezeigt wird, wie der einzelne Status ist. Grün wenn keine Bewegung, rot bei Bewegung.
              Das Motionicon vom Panel in Verbindung nutze ich, allerdings mit einem Bewegungs bzw. Info Alias klappt aber nicht bei mir.

              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_2", name: "Küche", interpolateColor: true, icon: "motion"},
                      <PageItem>{ id: "alias.0.Sensoren.PIR_Bad_2", name: "Bad", interpolateColor: true, icon: "motion"},
                      <PageItem>{ id: "alias.0.Sensoren.PIR_Flur_unten", name: "Flur unten", interpolateColor: true},
                      <PageItem>{ id: "alias.0.Sensoren.PIR_Schlafzimmer", name: "Schlafzimmer", interpolateColor: true},
                      <PageItem>{ id: "alias.0.Sensoren.PIR_Bad", name: "Bad", interpolateColor: true},
                      <PageItem>{ id: "alias.0.Sensoren.PIR_Gäste_WC", name: "Gäste WC", interpolateColor: true}
                      
                  ]
              };
              

              Frage: Kann ich auf der Naviebene 2 von der ersten Subpage zu einer zweiten Subpage mittels Arrow wechseln? Ähnlich wie auf der Naviebene 1?

              1 Reply Last reply Reply Quote 0
              • K
                Kuckuckmann @TS last edited by

                @ts
                Hey @TS ,

                es gibt bis dato aber keine Calender View. Ich glaube nicht, dass dies so einfach machbar ist.
                Wie ich vorher schon schrieb, diesen Wunsch am besten auch auf Github als Ticket eröffnen.

                Ich muss gestehen, da vertraue ich auf die Fachkundigen Kollegen wie @Armilar und @joBr99 .

                LG

                1 Reply Last reply Reply Quote 0
                • J
                  joBr99 @TS last edited by

                  @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 Reply Last reply Reply Quote 0
                  • T
                    TS @joBr99 last edited by

                    @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 Reply Last reply Reply Quote 0
                    • T
                      tklein @tklein last edited by

                      @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 Replies Last reply Reply Quote 0
                      • K
                        kptkip @tklein last edited by

                        @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 Replies Last reply Reply Quote 0
                        • T
                          tklein @kptkip last edited by

                          @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 Reply Last reply Reply Quote 0
                          • K
                            kptkip @tklein last edited by

                            @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 Replies Last reply Reply Quote 0
                            • N
                              niiccooo1 @kptkip last edited by

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

                              1 Reply Last reply Reply Quote 0
                              • T
                                tklein @kptkip last edited by

                                @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 Reply Last reply Reply Quote 0
                                • K
                                  Kuckuckmann @TS last edited by

                                  @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?

                                  T 1 Reply Last reply Reply Quote 0
                                  • K
                                    Kuckuckmann @tklein last edited by 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 1 Reply Last reply Reply Quote 0
                                    • K
                                      Kuckuckmann @kptkip last edited by

                                      @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 😉

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

                                        @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 ------------------------------------------------
                                        
                                        
                                        
                                        

                                        J 1 Reply Last reply Reply Quote 0
                                        • T
                                          tklein @Kuckuckmann last edited by

                                          @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 Reply Last reply Reply Quote 0
                                          • K
                                            Kuckuckmann @tklein last edited by

                                            @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 🙂

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            534
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

                                            78
                                            1548
                                            390480
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo