Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. TomDuke

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    • Profile
    • Following 0
    • Followers 0
    • Topics 1
    • Posts 17
    • Best 1
    • Groups 1

    TomDuke

    @TomDuke

    1
    Reputation
    6
    Profile views
    17
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    TomDuke Follow
    Starter

    Best posts made by TomDuke

    • RE: SONOFF NSPanel mit Lovelace UI

      @armilar

      erst mal ein frohes neues Jahr an alle !!

      Hab da mal ne Frage, laut der Tasmotakonsole ist die Uhrzeit korrekt,
      aber das Display geht 3Min nach, wie kann ich das korrigieren ?

      posted in Hardware
      TomDuke
      TomDuke

    Latest posts made by TomDuke

    • RE: SONOFF NSPanel mit Lovelace UI

      @mameier1234 sagte in SONOFF NSPanel mit Lovelace UI:

      @tomduke Warum muss denn die Fritzbox noch da sein ? Wenn es um Dect Smarthome usw. geht, dann richte die Fritzbox doch einfach als IP-Client im Netz des Speedport ein.

      Beispiel: Speedport: 192.168.1.254 und Fritzbox (als Client, nicht als Router!) 192.168.1.253

      Schon ist alles wieder in einem Netz und gut..

      Über die Fritz!Box laufen meine AVM Telefone und die Repeater von AVM, daneben noch die ganzen anderen SmartHome Geräte und die FB ist halt komfortabler zu bedienen,
      wenn es gehen würde, hätte ich nur die FB, aber die kann leider kein Hybrid der Telekom
      Und ich müsste alles neu einrichten, unter anderem das PiHole usw.

      posted in Hardware
      TomDuke
      TomDuke
    • RE: SONOFF NSPanel mit Lovelace UI

      @ilovegym sagte in SONOFF NSPanel mit Lovelace UI:

      @tomduke

      Was dir hilft, ist das aendern des SUBNET's. Du hast bei allen sehr wahrscheinlich den Standard /24 ( also 255.255.255.0 ) eingetragen, in der config, richtig?

      Damit kennen sich die Devices nur im Bereich xxx.xxx.xxx.1 - xxx.xxx.xxx.254, 0 ist das Gateway, 255 der Broadcast.
      Ein Verbindung von 10.xxxx.xxx.xxx zu 192.xxx.xxx.xxx ist vom Design her recht schlecht, ums mal nett zu formulieren, denn du musst deinem netzwerk ja dann alles von 10.x.x.x bis 192.x.x.x erlauben, was von der Sicherheit und vom Routing her absolut uebel ist.. sowas macht man nicht.

      Was du machen kannst, ist, wenn du Linux hast, eigene Routings fuer das Subnet anlegen, aber dann auf beiden Rechnern, also der Rechner in 192.x.x.x muss ein Routing bekommen auf 10.x.x.x und der Rechner in 10.x.x.x muss ein Routing bekommen auf 192.x.x.x ..

      Die Frage ist, warum wurde das so designed? Was hat man sich dabei gedacht?
      Der Speedport kann meines Wissens kein Routing, die Fritzbox erst recht nicht.

      Mein Tipp:
      Les dich in Netzwerk Grundlagen ein, dann den Bereich Subnetting, da gibts viele gute Beispiele im Netz.
      Anschliessend configurierst du das so, dass beide Netze in einem Bereich mit Subnet /23 zu erreichen sind, da ist dann Platz fuer 500 Devices, sollte reichen.
      Also 192.168.0.x am Speedport, und 192.168.1.x an der Fritzbox, macht bei beiden Devices ein /23 als Subnet und das Routing und alles geht.

      Ok, darüber hab ich noch nicht nachgedacht, aber das klingt nach einer super Lösung,
      werde das gleich mal umsetzen, also Speedport 192.168.0.X und Fritz!Box 192.168.1.X

      Danke für den Tip

      posted in Hardware
      TomDuke
      TomDuke
    • RE: SONOFF NSPanel mit Lovelace UI

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

      Hallo @tomduke

      deine Internen IP Adressen brauchst du nicht X-en. Habe deinen Aufbau jetzt noch nicht ganz verstanden.
      Warum baust du ein neues Netzwerk auf? Als was läuft die Fritz!Box jetzt in deinem Netzwerk?
      kannst du den schon vom Fritz!Box Netzwerk ins Speedport kommunizieren ?

      Ja ich kann von der Fritz!Box ins Netz des Speedport kommunizieren

      posted in Hardware
      TomDuke
      TomDuke
    • RE: SONOFF NSPanel mit Lovelace UI

      Hallo zusammen,
      hab da ein kleines Problem,
      habe einen neuen Router bekommen(Hybridanschluss)
      meine Fritz!Box läuft weiter hinter dem Speedport, mit eigenem IP Segment(10.xx.xx.xx),
      jetzt habe ich das NSPanel im Wlan des Speedports angemeldet(neue IP192.xx.xx.xx)
      MQTT läuft über dem Raspberry, also IP Bereich der Fritz!Box, MQTT meldet jetzt natürlich keine Verbindung zum NSPanel
      Was kann ich da machen?

      Gruß Tom

      posted in Hardware
      TomDuke
      TomDuke
    • RE: SONOFF NSPanel mit Lovelace UI

      @armilar sagte in SONOFF NSPanel mit Lovelace UI:

      @tomduke

      Erstelle kurz ein Blockly

      f266ac6f-d6f8-498d-8d42-9b9e9ddfb677-image.png

      <xml xmlns="https://developers.google.com/blockly/xml">
        <block type="schedule" id="6Yu`)QwfE4qpNfmr268P" x="87" y="37">
          <field name="SCHEDULE">* * * * * *</field>
          <statement name="STATEMENT">
            <block type="debug" id="l?5O/}11]yr#/m#;`2FP">
              <field name="Severity">log</field>
              <value name="TEXT">
                <shadow type="text" id=";K3bqfLSLWG6r5B(k/C{">
                  <field name="TEXT">test</field>
                </shadow>
                <block type="time_get" id="(NH7-ko5K-Lstw6QrhtK">
                  <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation>
                  <field name="OPTION">hh:mm:ss.sss</field>
                </block>
              </value>
            </block>
          </statement>
        </block>
      </xml>
      

      Dann vergleiche es mit der Uhrzeit

      Ok, damit geht es, danke

      posted in Hardware
      TomDuke
      TomDuke
    • RE: SONOFF NSPanel mit Lovelace UI

      @Armilar

      auf meinem Raspberry, dort läuft mein ioBroker, ist die Zeit auch korrekt,
      habs mit Date ausgelesen, Neustart vom Pi hat auch nichts gebracht

      posted in Hardware
      TomDuke
      TomDuke
    • RE: SONOFF NSPanel mit Lovelace UI

      @armilar

      erst mal ein frohes neues Jahr an alle !!

      Hab da mal ne Frage, laut der Tasmotakonsole ist die Uhrzeit korrekt,
      aber das Display geht 3Min nach, wie kann ich das korrigieren ?

      posted in Hardware
      TomDuke
      TomDuke
    • RE: SONOFF NSPanel mit Lovelace UI

      @armilar

      22:19:00.013	warn	javascript.0 (16857) at SendToPanel (script.js.common.NSPanelTS_ts:2432:13)
      22:19:00.013	warn	javascript.0 (16857) at SendTime (script.js.common.NSPanelTS_ts:2600:9)
      22:19:00.013	warn	javascript.0 (16857) at Object.<anonymous> (script.js.common.NSPanelTS_ts:1515:9)
      22:19:00.015	info	javascript.0 (16857) script.js.common.NSPanelTS_ts: setForeignState(id=mqtt.0.SmartHome.NSPanel_1.cmnd.CustomSend, state={"val":"time~22:19","ack":false,"ts":1672348740014,"q":0,"from":"system.adapter.javascript.0","lc":1672348740014,"c":"script.js.common.NSPanelTS_ts"})
      22:19:00.015	info	javascript.0 (16857) script.js.common.NSPanelTS_ts: getState(id=alias.0.Recklinghausen.ICON, timerId=undefined) => {"val":38,"ack":true,"ts":1672347901286,"q":0,"from":"system.adapter.accuweather.0","user":"system.user.admin","lc":1672340698212}
      22:19:00.015	info	javascript.0 (16857) script.js.common.NSPanelTS_ts: getState(id=alias.0.Recklinghausen.TEMP, timerId=undefined) => {"val":7.3,"ack":true,"ts":1672347901287,"q":0,"from":"system.adapter.accuweather.0","user":"system.user.admin","lc":1672347901287}
      22:19:00.015	info	javascript.0 (16857) script.js.common.NSPanelTS_ts: getState(id=accuweather.0.Daily.Day1.Day.PrecipitationProbability, timerId=undefined) => {"val":81,"ack":true,"ts":1672340700584,"q":0,"from":"system.adapter.accuweather.0","user":"system.user.admin","lc":1672303497603}
      22:19:00.016	info	javascript.0 (16857) script.js.common.NSPanelTS_ts: getState(id=accuweather.0.Current.WindSpeed, timerId=undefined) => {"val":26.5,"ack":true,"ts":1672347901288,"q":0,"from":"system.adapter.accuweather.0","user":"system.user.admin","lc":1672347901288}
      22:19:00.016	info	javascript.0 (16857) script.js.common.NSPanelTS_ts: getState(id=accuweather.0.Current.UVIndex, timerId=undefined) => {"val":0,"ack":true,"ts":1672347901289,"q":0,"from":"system.adapter.accuweather.0","user":"system.user.admin","lc":1672322700304}
      22:19:00.016	info	javascript.0 (16857) script.js.common.NSPanelTS_ts: getState(id=accuweather.0.Current.RelativeHumidity, timerId=undefined) => {"val":71,"ack":true,"ts":1672347901288,"q":0,"from":"system.adapter.accuweather.0","user":"system.user.admin","lc":1672347901288}
      22:19:00.016	info	javascript.0 (16857) script.js.common.NSPanelTS_ts: getState(id=accuweather.0.Daily.Day1.Day.PrecipitationProbability, timerId=undefined) => {"val":81,"ack":true,"ts":1672340700584,"q":0,"from":"system.adapter.accuweather.0","user":"system.user.admin","lc":1672303497603}
      22:19:00.016	info	javascript.0 (16857) script.js.common.NSPanelTS_ts: getState(id=accuweather.0.Daily.Day1.Day.PrecipitationProbability, timerId=undefined) => {"val":81,"ack":true,"ts":1672340700584,"q":0,"from":"system.adapter.accuweather.0","user":"system.user.admin","lc":1672303497603}
      22:19:00.016	info	javascript.0 (16857) script.js.common.NSPanelTS_ts: getState(id=accuweather.0.Current.WindSpeed, timerId=undefined) => {"val":26.5,"ack":true,"ts":1672347901288,"q":0,"from":"system.adapter.accuweather.0","user":"system.user.admin","lc":1672347901288}
      22:19:00.016	info	javascript.0 (16857) script.js.common.NSPanelTS_ts: getState(id=accuweather.0.Current.WindSpeed, timerId=undefined) => {"val":26.5,"ack":true,"ts":1672347901288,"q":0,"from":"system.adapter.accuweather.0","user":"system.user.admin","lc":1672347901288}
      22:19:00.016	info	javascript.0 (16857) script.js.common.NSPanelTS_ts: getState(id=accuweather.0.Current.UVIndex, timerId=undefined) => {"val":0,"ack":true,"ts":1672347901289,"q":0,"from":"system.adapter.accuweather.0","user":"system.user.admin","lc":1672322700304}
      22:19:00.017	info	javascript.0 (16857) script.js.common.NSPanelTS_ts: getState(id=accuweather.0.Current.UVIndex, timerId=undefined) => {"val":0,"ack":true,"ts":1672347901289,"q":0,"from":"system.adapter.accuweather.0","user":"system.user.admin","lc":1672322700304}
      22:19:00.017	info	javascript.0 (16857) script.js.common.NSPanelTS_ts: getState(id=accuweather.0.Current.RelativeHumidity, timerId=undefined) => {"val":71,"ack":true,"ts":1672347901288,"q":0,"from":"system.adapter.accuweather.0","user":"system.user.admin","lc":1672347901288}
      22:19:00.017	info	javascript.0 (16857) script.js.common.NSPanelTS_ts: getState(id=accuweather.0.Current.RelativeHumidity, timerId=undefined) => {"val":71,"ack":true,"ts":1672347901288,"q":0,"from":"system.adapter.accuweather.0","user":"system.user.admin","lc":1672347901288}
      22:19:00.017	info	javascript.0 (16857) script.js.common.NSPanelTS_ts: getState(id=mqtt.0.SmartHome.NSPanel_1.stat.POWER1, timerId=undefined) => {"val":"OFF","ack":true,"ts":1672310670039,"q":0,"from":"system.adapter.mqtt.0","user":"system.user.admin","lc":1672310669949}
      22:19:00.017	info	javascript.0 (16857) script.js.common.NSPanelTS_ts: getState(id=mqtt.0.SmartHome.NSPanel_1.stat.POWER1, timerId=undefined) => {"val":"OFF","ack":true,"ts":1672310670039,"q":0,"from":"system.adapter.mqtt.0","user":"system.user.admin","lc":1672310669949}
      22:19:00.017	info	javascript.0 (16857) script.js.common.NSPanelTS_ts: getState(id=mqtt.0.SmartHome.NSPanel_1.stat.POWER2, timerId=undefined) => {"val":"OFF","ack":true,"ts":1672333707248,"q":0,"from":"system.adapter.mqtt.0","user":"system.user.admin","lc":1672333707127}
      22:19:00.017	info	javascript.0 (16857) script.js.common.NSPanelTS_ts: getState(id=mqtt.0.SmartHome.NSPanel_1.stat.POWER2, timerId=undefined) => {"val":"OFF","ack":true,"ts":1672333707248,"q":0,"from":"system.adapter.mqtt.0","user":"system.user.admin","lc":1672333707127}
      22:19:00.019	warn	javascript.0 (16857) at SendToPanel (script.js.common.NSPanelTS_ts:2432:13)
      22:19:00.019	warn	javascript.0 (16857) at HandleScreensaverColors (script.js.common.NSPanelTS_ts:6251:9)
      22:19:00.019	warn	javascript.0 (16857) at HandleScreensaverUpdate (script.js.common.NSPanelTS_ts:6165:13)
      22:19:00.019	warn	javascript.0 (16857) at Object.<anonymous> (script.js.common.NSPanelTS_ts:1516:9)
      22:19:00.020	info	javascript.0 (16857) script.js.common.NSPanelTS_ts: setForeignState(id=mqtt.0.SmartHome.NSPanel_1.cmnd.CustomSend, state={"val":"color~0~65535~65535~65535~19017~65535~65535~65535~65535~65535~64750~42639~26095~42639~65535~65535~65535~65535~65535~65535~65535~65535","ack":false,"ts":1672348740020,"q":0,"from":"system.adapter.javascript.0","lc":1672348740020,"c":"script.js.common.NSPanelTS_ts"})
      22:19:00.020	info	javascript.0 (16857) script.js.common.NSPanelTS_ts: getState(id=0_userdata.0.NSPanel.1.Config.MRIcons.alternateMRIconSize.1, timerId=undefined) => {"val":false,"ack":true,"ts":1671973226792,"q":0,"c":"script.js.common.NSPanelTS_ts","from":"system.adapter.javascript.0","user":"system.user.admin","lc":1671973226792}
      22:19:00.020	info	javascript.0 (16857) script.js.common.NSPanelTS_ts: getState(id=0_userdata.0.NSPanel.1.Config.MRIcons.alternateMRIconSize.2, timerId=undefined) => {"val":false,"ack":true,"ts":1671973227354,"q":0,"c":"script.js.common.NSPanelTS_ts","from":"system.adapter.javascript.0","user":"system.user.admin","lc":1671973227354}
      22:19:00.022	warn	javascript.0 (16857) at SendToPanel (script.js.common.NSPanelTS_ts:2432:13)
      22:19:00.022	warn	javascript.0 (16857) at HandleScreensaverUpdate (script.js.common.NSPanelTS_ts:6181:13)
      22:19:00.022	warn	javascript.0 (16857) at Object.<anonymous> (script.js.common.NSPanelTS_ts:1516:9)
      22:19:00.023	info	javascript.0 (16857) script.js.common.NSPanelTS_ts: setForeignState(id=mqtt.0.SmartHome.NSPanel_1.cmnd.CustomSend, state={"val":"weatherUpdate~~7.3 °C~Regen~~81 %~Wind~~26.5 km/h~UV~~0 ~Luft~~71 %~~~~17299~~17299~~~","ack":false,"ts":1672348740023,"q":0,"from":"system.adapter.javascript.0","lc":1672348740023,"c":"script.js.common.NSPanelTS_ts"})
      22:19:30.008	info	javascript.0 (16857) script.js.common.NSPanelTS_ts: setForeignState(id=0_userdata.0.NSPanel.1.ScreensaverInfo.weatherForecast, state={"val":false,"ack":false,"ts":1672348770007,"q":0,"from":"system.adapter.javascript.0","lc":1672233690009,"c":"script.js.common.NSPanelTS_ts"})
      
      posted in Hardware
      TomDuke
      TomDuke
    • RE: SONOFF NSPanel mit Lovelace UI

      @armilar sagte in SONOFF NSPanel mit Lovelace UI:

      @tomduke

      Sorry, hat etwas länger gedauert...

      alles gut, sitze auch nicht ständig am Mac, bin ja froh das du mir hilfst

      posted in Hardware
      TomDuke
      TomDuke
    • RE: SONOFF NSPanel mit Lovelace UI

      @armilar

      let Icons = new IconsSelector();
      let timeoutSlider: any;
      let manually_Update = false;
      const autoCreateAlias = true;                   //Für diese Option muss der Haken in setObjects in deiner javascript.X. Instanz gesetzt sein.  
      const weatherAdapterInstance: string = 'accuweather.0.';  //Möglich 'accuweather.0.' oder 'daswetter.0.'
      const weatherScreensaverTempMinMax: string = 'MinMax';      // Mögliche Werte: 'Min', 'Max' oder 'MinMax'
      
      const NSPanel_Path = '0_userdata.0.NSPanel.1.';
      const NSPanel_Alarm_Path = '0_userdata.0.NSPanel.'; //Neuer Pfad für gemeinsame Nutzung durch mehrere Panels (bei Nutzung der cardAlarm)
      
      let AliasPath: string = 'alias.0.' + NSPanel_Path.substring(13, NSPanel_Path.length);
      const Debug = false;
      
      // Variablen zur Steuerung der Wettericons auf dem Screensaver (Steuerung in 0_userdata.0.XPANELX.ScreensaverInfo)
      // Wenn weatherForecastTimer auf true, dann Wechsel zwischen Datenpunkten und Wettervorhersage (30 Sekunden nach Minute (Zeit))
      // Wenn weatherForecastTimer auf false, dann Möglichkeit über weatherForecast, ob Datenpunkte oder Wettervorhersage (true = WeatherForecast/false = Datenpunkte)
      let weatherForecast: boolean; // Änderung zum Video --> Einstellung siehe Wiki
      
      const HMIOff:           RGB = { red:  68, green: 115, blue: 158 };     // Blau-Off - Original Entity Off
      const HMIOn:            RGB = { red:   3, green: 169, blue: 244 };     // Blau-On
      const HMIDark:          RGB = { red:  29, green:  29, blue:  29 };     // Original Background Color
      const Off:              RGB = { red: 253, green: 128, blue:   0 };     // Orange-Off - schönere Farbübergänge
      const On:               RGB = { red: 253, green: 216, blue:  53 };
      const MSRed:            RGB = { red: 251, green: 105, blue:  98 };
      const MSYellow:         RGB = { red: 255, green: 235, blue: 156 };
      const MSGreen:          RGB = { red: 121, green: 222, blue: 121 };
      const Red:              RGB = { red: 255, green:   0, blue:   0 };
      const White:            RGB = { red: 255, green: 255, blue: 255 };
      const Yellow:           RGB = { red: 255, green: 255, blue:   0 };
      const Green:            RGB = { red:   0, green: 255, blue:   0 };
      const Blue:             RGB = { red:   0, green:   0, blue: 255 };
      const DarkBlue:         RGB = { red:   0, green:   0, blue: 136 };
      const Gray:             RGB = { red: 136, green: 136, blue: 136 };
      const Black:            RGB = { red:   0, green:   0, blue:   0 };
      const colorSpotify:     RGB = { red:  30, green: 215, blue:  96 };
      const colorAlexa:       RGB = { red:  49, green: 196, blue: 243 };
      const colorRadio:       RGB = { red: 255, green: 127, blue:   0 };
      const BatteryFull:      RGB = { red:  96, green: 176, blue:  62 };
      const BatteryEmpty:     RGB = { red: 179, green:  45, blue:  25 };
      
      //Dynamische Indikatoren
      const colorScale0:      RGB = { red:   99, green: 190, blue: 123 };
      const colorScale1:      RGB = { red:  129, green: 199, blue: 126 };
      const colorScale2:      RGB = { red:  161, green: 208, blue: 127 };
      const colorScale3:      RGB = { red:  129, green: 217, blue: 126 };
      const colorScale4:      RGB = { red:  222, green: 226, blue: 131 };
      const colorScale5:      RGB = { red:  254, green: 235, blue: 132 };
      const colorScale6:      RGB = { red:  255, green: 210, blue: 129 };
      const colorScale7:      RGB = { red:  251, green: 185, blue: 124 };
      const colorScale8:      RGB = { red:  251, green: 158, blue: 117 };
      const colorScale9:      RGB = { red:  248, green: 131, blue: 111 };
      const colorScale10:     RGB = { red:  248, green: 105, blue: 107 };
      
      //Screensaver Default Theme Colors
      const scbackground:     RGB = { red:   0, green:    0, blue:   0};
      const scbackgroundInd1: RGB = { red: 255, green:   0,  blue:   0};
      const scbackgroundInd2: RGB = { red: 121, green: 222,  blue: 121};
      const scbackgroundInd3: RGB = { red: 255, green: 255,  blue:   0};
      const sctime:           RGB = { red: 255, green:  255, blue: 255};
      const sctimeAMPM:       RGB = { red: 255, green:  255, blue: 255};
      const scdate:           RGB = { red: 255, green:  255, blue: 255};
      const sctMainIcon:      RGB = { red: 255, green:  255, blue: 255};
      const sctMainText:      RGB = { red: 255, green:  255, blue: 255};
      const sctForecast1:     RGB = { red: 255, green:  255, blue: 255};
      const sctForecast2:     RGB = { red: 255, green:  255, blue: 255};
      const sctForecast3:     RGB = { red: 255, green:  255, blue: 255};
      const sctForecast4:     RGB = { red: 255, green:  255, blue: 255};
      const sctF1Icon:        RGB = { red: 255, green:  235, blue: 156};
      const sctF2Icon:        RGB = { red: 255, green:  235, blue: 156};
      const sctF3Icon:        RGB = { red: 255, green:  235, blue: 156};
      const sctF4Icon:        RGB = { red: 255, green:  235, blue: 156};
      const sctForecast1Val:  RGB = { red: 255, green:  255, blue: 255};
      const sctForecast2Val:  RGB = { red: 255, green:  255, blue: 255};
      const sctForecast3Val:  RGB = { red: 255, green:  255, blue: 255};
      const sctForecast4Val:  RGB = { red: 255, green:  255, blue: 255};
      const scbar:            RGB = { red: 255, green:  255, blue: 255};
      const sctMainIconAlt:   RGB = { red: 255, green:  255, blue: 255};
      const sctMainTextAlt:   RGB = { red: 255, green:  255, blue: 255};
      const sctTimeAdd:       RGB = { red: 255, green:  255, blue: 255};
      
      //Auto-Weather-Colors
      const swClearNight:     RGB = { red: 150, green: 150, blue: 100};
      const swCloudy:         RGB = { red:  75, green:  75, blue:  75};
      const swExceptional:    RGB = { red: 255, green:  50, blue:  50};
      const swFog:            RGB = { red: 150, green: 150, blue: 150};
      const swHail:           RGB = { red: 200, green: 200, blue: 200};
      const swLightning:      RGB = { red: 200, green: 200, blue:  0};
      const swLightningRainy: RGB = { red: 200, green: 200, blue: 150};
      const swPartlycloudy:   RGB = { red: 150, green: 150, blue: 150};
      const swPouring:        RGB = { red:  50, green:  50, blue: 255};
      const swRainy:          RGB = { red: 100, green: 100, blue: 255};
      const swSnowy:          RGB = { red: 150, green: 150, blue: 150};
      const swSnowyRainy:     RGB = { red: 150, green: 150, blue: 255};
      const swSunny:          RGB = { red: 255, green: 255, blue:   0};
      const swWindy:          RGB = { red: 150, green: 150, blue: 150};
      
      let vwIconColor = [];
      
      
      //-- Anfang der Beispiele für Seitengestaltung -- Selbstdefinierte Aliase erforderlich ----------------
      
      let Licht1: PageGrid =
      {
          "type": "cardGrid",
          "heading": "DECKENLAMPEN",
          "useColor": true,
          "subPage": false,
          "parent": undefined,
          "items": [
              <PageItem>{ id: "alias.0.Hue.Deckenlampe_Flur", name: "Flur", interpolateColor: false},
              <PageItem>{ id: "alias.0.Hue.Deckenlampe_Küche", name: "Küche", minValueBrightness: 0, maxValueBrightness: 50, interpolateColor: false},
              <PageItem>{ id: "alias.0.Hue.Deckenlampe_Bad", name: "Badezimmer", minValueBrightness: 0, maxValueBrightness: 20, interpolateColor: false},
              //<PageItem>{ id: "alias.0.Hue.Weihnachtsbaum_.ON_ACTUAL", name: "Weihnachtsbaum", minValueColorTemp: 500, maxValueColorTemp: 6500, interpolateColor: true}
          ]
      };
      
      //Only DEV --> Test
      //let CardChartExample: PageChart =
      //{
      //    "type": "cardChart",
      //   "heading": "Stromzähler L1+L2+L3",
      //    "useColor": true,
      //    "subPage": false,
      //    "parent": undefined,
      //    "items": [<PageItem>{ 
      //                id: 'alias.0.NSPanel_1.cardChart', 
      //                yAxis: 'Leistung [kW]', 
      //                yAxisTicks: [2,4,6,8,10,2,4,6,8,20,2], 
                      onColor: Yellow
      //             }]
      //};
      
      let CardPowerExample: PagePower =
      {
          "type": "cardPower",
          "heading": "cardPower Emulator",
          "useColor": true,
          "subPage": false,
          "parent": undefined,
          "items": [
              <PageItem>{ id: 'alias.0.NSPanel_1.Power.PowerCard' },
          ]
      };
      
      //let Test_Licht2: PageEntities =
      //{
      //    "type": "cardEntities",
      //    "heading": "Color Aliase 2",
      //    "useColor": true,
      //    "subPage": false,
      //    "parent": undefined,
      //    "items": [
      //        //Beispiel für RGB Light mit neuem PageItem-Parameter colormode: "xy" alternativ colormode: "rgb" oder weglassen
      //        //Steuert im z.B. DeConz Adapter unter Lampen die Farben per CIE (XY)
      //        <PageItem>{ id: "alias.0.NSPanel_2.WZ_E14_Fenster_rechts", name: "Fensterbank rechts", minValueBrightness: 0, maxValueBrightness: 100, minValueColorTemp: 500, maxValueColorTemp: 150, interpolateColor: true, colormode: "xy"},
      //        <PageItem>{ id: "alias.0.NSPanel_1.TestFarbtemperatur", name: "Farbtemperatur", interpolateColor: true},
      //    ]
      //};
      
      //let Temperatur: PageEntities =
      //{
      //    "type": "cardEntities",
      //    "heading": "Innentemperatur",
      //    "useColor": true,
      //    "subPage": false,
      //    "parent": undefined,
      //    "items": [
      //       <PageItem>{ id: "alias.0.Hue.Temperatur.ACTUAL",name: "Innentemperatur", icon: "thermometer", onColor: White },
      //        <PageItem>{ id: "alias.0.NSPanel_1.TestLautstärke", offColor: MSRed, onColor: MSGreen, name: "Echo Spot Büro", minValue: 0, maxValue: 100 },
      //        <PageItem>{ id: "alias.0.NSPanel_1.TestFeuchtigkeit", name: "Luftfeuchte außen", icon: "water-percent", unit: "%H", onColor: White },
      //        //<PageItem>{ id: "alias.0.NSPanel_1.TestInfo", name: "Windstärke", icon: "wind-power-outline", offColor: MSRed, onColor: MSGreen, unit: "bft", minValue: 0, maxValue: 12, interpolateColor: true, useColor: true },
      //        <PageItem>{ id: "alias.0.NSPanel_1.Ventilator.Fan_1",name: "Ventilator", icon: "fan", onColor: On, offColor: HMIOff, modeList: ['Low', 'Medium', 'High', 'Move', 'Sleep', 'Auto', 'Manual']},
      //    ]
      //};
      
      //let Buero_Seite_1: PageEntities =
      //{
      //    "type": "cardEntities",
      //    "heading": "Büro",
      //    "useColor": true,
      //    "subPage": false,
      //    "parent": undefined,
      //    "items": [
      //        <PageItem>{ id: "alias.0.NSPanel_1.Schreibtischlampe", interpolateColor: true},
      //        <PageItem>{ id: "alias.0.NSPanel_1.Deckenbeleuchtung", interpolateColor: true},
      //        <PageItem>{ id: "alias.0.NSPanel_1.Testlampe2", name: "Filamentlampe", minValueBrightness: 0, maxValueBrightness: 70, interpolateColor: true},
      //        <PageItem>{ id: "alias.0.NSPanel_1.Luftreiniger", icon: "power", icon2: "power",offColor: MSRed, onColor: MSGreen}
      //    ]
      //};
      
      //let Fenster_1: PageEntities =
      //{
      //    "type": "cardEntities",
      //    "heading": "Fenster und Türen",
      //    "useColor": true,
      //    "subPage": false,
      //    "parent": undefined,
      //    "items": [
      //        <PageItem>{ id: "alias.0.NSPanel_1.TestFenster", offColor: MSRed, onColor: MSGreen, name: "Büro Fenster"},
      //        <PageItem>{ id: "alias.0.NSPanel_1.Haustuer", offColor: MSRed, onColor: MSGreen, name: "Haustür"},
      //        <PageItem>{ id: "alias.0.NSPanel_1.TestBlind", icon: "blinds-horizontal", offColor: White, onColor: Yellow, name: "Büro", secondRow: "Hier Text für 2. Zeile"},
      //        <PageItem>{ id: "alias.0.NSPanel_1.TestDoorlock", offColor: MSRed, onColor: MSGreen, name: "Türschloss"},
      //    ]
      //};
      //<PageItem>{ id: "alias.0.NS-Panel.Buero.Rollade", icon: "blinds-horizontal", offColor: White, onColor: Yellow, name: "Büro", secondRow: "Hier Text für 2. Zeile"},
      let Button_1: PageEntities =
      {
          "type": "cardEntities",
          "heading": "Button Aliase",
          "useColor": true,
          "subPage": false,
          "parent": undefined,
          "items": [
              <PageItem>{ id: "alias.0.NSPanel_1.TestTastensensor", name: "Tastensensor (FFN)"},
              <PageItem>{ id: "alias.0.NSPanel_1.Radio.NDR2", icon: "radio", name: "Taste (NDR2)", onColor: colorRadio},
              <PageItem>{ id: "alias.0.NSPanel_1.TestVentil1", icon: "valve-open", icon2: "valve-closed",offColor: MSRed, onColor: MSGreen, name: "Test-Ventil 1"},
              <PageItem>{ id: "alias.0.NSPanel_1.Radio.NDR2", icon: 'alarm-light', name: "Alert mit Zielseite", offColor: MSGreen, onColor: MSRed, targetPage: 'Abfall', buttonText: 'Popup'},
          ]
      };
      
      //let Subpages_1: PageEntities =
      //{
      //    "type": "cardEntities",
      //    "heading": "Test Subpages",
      //    "useColor": true,
      //    "subPage": false,
      //    "parent": undefined,
      //    "items": [
      //        <PageItem>{ navigate: true, id: "Abfall", onColor: White, name: "Abfallkalender"},
      //        <PageItem>{ navigate: true, id: "WLAN", onColor: White, name: "Gäste WLAN"},
      //    ]
      //};
      
      //        //Subpage 1 von Subpages_1
      //        let Abfall: PageEntities =
      //        {
      //            "type": "cardEntities",
      //            "heading": "Abfallkalender",
      //            "useColor": true,
      //            "subPage": true,
      //            "parent": Subpages_1,
      //            "items": [
      //                <PageItem>{ id: "alias.0.NSPanel_1.Abfall.event1",icon: "trash-can"},
      //                <PageItem>{ id: "alias.0.NSPanel_1.Abfall.event2",icon: "trash-can"},
      //                <PageItem>{ id: "alias.0.NSPanel_1.Abfall.event3",icon: "trash-can"},
      //                <PageItem>{ id: "alias.0.NSPanel_1.Abfall.event4",icon: "trash-can"}
      //            ]
      //        };
      
              //Subpage 2 von Subpages_1
      //        let WLAN: PageQR = 
      //        {
      //            "type": "cardQR",
      //            "heading": "Gäste WLAN",
      //            "useColor": true,
      //            "subPage": true,
      //            "parent": Subpages_1,
      //            "items": [<PageItem>{ id: "alias.0.NSPanel_1.Guest_Wifi", hidePassword: true }]
      //        };
      
      //let Buero_Seite_2: PageGrid =
      //{
      //    "type": "cardGrid",
      //    "heading": "Büro 2",
      //    "useColor": true,
      //    "subPage": false,
      //    "parent": undefined,
      //    "items": [
      //        <PageItem>{ id: "alias.0.Hue.HUE_Deckenlampe_Flur", name: "Deckenlampe Flur"},
      //        <PageItem>{ id: "alias.0.NSPanel_1.Deckenbeleuchtung", name: "Deckenlampe"},
      //        <PageItem>{ id: "alias.0.NSPanel_1.TestFenster", offColor: MSRed, onColor: MSGreen, name: "Büro Fenster"},
      //        <PageItem>{ id: "alias.0.NSPanel_1.Luftreiniger", icon: "power", offColor: MSRed, onColor: MSGreen},
      //        <PageItem>{ id: "alias.0.NSPanel_1.TestBlind", icon: "projector-screen", onColor: White, name: "Beamer", secondRow: "auch Text"},
      //        <PageItem>{ id: "alias.0.NSPanel_1.Radio.Bob", icon: "play", onColor: White, name: "TuneIn"}
      //    ]
      //};
      
      //let Radiosender: PageGrid =
      //{
      //    "type": "cardGrid",
      //    "heading": "Büro 2",
      //    "useColor": true,
      //    "subPage": false,
      //    "parent": undefined,
      //    "items": [
      //        <PageItem>{ id: "alias.0.NSPanel_1.Radio.Bob", icon: "radio", name: "Radio BOB", onColor: colorRadio},
      //        <PageItem>{ id: "alias.0.NSPanel_1.Countdown", icon: "timer-outline", name: "Timer", onColor: White}
      //    ]
      //};
      
      //let WLED: PageGrid =
      //{
      //    "type": "cardGrid",
      //    "heading": "WLED Stripes WZ",
      //    "useColor": true,
      //    "subPage": false,
      //    "parent": undefined,
      //    "items": [
      //        <PageItem>{ id: "alias.0.NSPanel_1.WLED.Example.On", name: "Power", icon: "power", onColor: HMIOn, offColor: HMIOff},
      //        <PageItem>{ id: "alias.0.NSPanel_1.WLED.Example.Sync", name: "Sync", icon: "sync", onColor: HMIOn, offColor: White},
      //        <PageItem>{ id: "alias.0.NSPanel_1.WLED.Example.Segments", icon: "heart-outline", name: "Presets", onColor: White, modeList: ['Preset 0', 'Add Preset']},
      //        <PageItem>{ id: "alias.0.NSPanel_1.WLED.Example.Colors", icon: "palette", name: "Colors", onColor: White, 
      //                    modeList: ['Default', '* Color 1', '* Color Gradient', '* Colors 1&2', '* Colors Only', '* Random Cycle', 'Analogus','April Night', 'Aqua Flash', 'Atlantica', 'Aurora', 
      //                               'Beach', 'Beech', 'Blink Red', 'Breeze', 'C9', 'C9 New', 'Candy', 'Candy2', 'Cloud', 
      //                               'Cyane', 'Departure', 'Drywet', 'Fairy Reaf', 'Fire', 'Forest', 'etc'
      //                              ]},
      //        <PageItem>{ id: "alias.0.NSPanel_1.WLED.Example.Effects", icon: "emoticon-outline", name: "Effects", onColor: White, 
      //                    modeList: ['Solid', 'Android', 'Aurora', 'Blends', 'Blink', 'Blink Rainbow', 'Bouncing Balls','Bpm', 'Breathe', 'Candle', 'Candle Multi', 
      //                               'Candy Cane', 'Chase', 'Chase 1', 'Chase 2', 'Chase 3', 'Chase Flash', 'Chase Flash Rnd', 'Chase Rainbow', 'Chase Random', 
      //                               'Chunchun', 'Colorful', 'Colorloop', 'Colortwinkles', 'Colorwaves', 'Dancing Shadows', 'etc'
      //                              ]},
      //        <PageItem>{ id: "alias.0.NSPanel_1.WLED.Example.Segments", icon: "layers", name: "Segments", onColor: White, modeList: ['Segment 0', 'Add Segment']},
      //    ]
      //};
      
      let SensorGrid: PageGrid =
      {
          "type": "cardGrid",
          "heading": "Sensor Werte",
          "useColor": true,
          "subPage": false,
          "parent": undefined,
          "items": [
              <PageItem>{ id: "alias.0.NSPanel_1.TestTemperatur", name: "Außentemp. °C", offColor: MSRed, onColor: MSGreen, useValue: true },
              <PageItem>{ id: "alias.0.NSPanel_1.TestFeuchtigkeit", name: "Luftfeuchte %", offColor: MSYellow, onColor: MSYellow , useValue: true },
              <PageItem>{ id: "alias.0.NSPanel_1.Taupunkt", name: "Taupunkt °C", offColor: MSRed, onColor: MSGreen, useValue: true },
              <PageItem>{ id: "alias.0.NSPanel_1.UV_Index", name: "UV Index", offColor: White , onColor: White, useValue: true },
              <PageItem>{ id: "alias.0.NSPanel_1.Windstaerke", name: "Windstärke bft", offColor: White , onColor: White, useValue: true },
              <PageItem>{ id: "alias.0.NSPanel_1.Luftdruck", name: "Luftdruck hPa", offColor: White , onColor: White, useValue: true }
          ]
      };
      
      // NEW: Neue Definition von Medien-Aliasen
      // adapterPlayerInstance = alexa2.0. or spotify-premium.0. or sonos.0. or chromecast.0.
      let Alexa: PageMedia = 
      {
          'type': 'cardMedia',
          'heading': 'Alexa',
          'useColor': true,
          'subPage': false,
          'parent': undefined,
          'items': [<PageItem>{   
                      id: AliasPath + 'Media.PlayerAlexa', 
                      adapterPlayerInstance: 'alexa2.0.',
                      mediaDevice: 'G0XXXXXXXXXXXXXX', //Eigene Seriennummer des primären Alexa-Device einstellen
                      speakerList: ['Überall','Gartenhaus','Esszimmer','Heimkino','Echo Dot Küche','Echo Spot Buero'],
                      //analog alexa2 Music-Provider
                      playList: ['Spotify-Playlist.PartyPlaylist',
                                 'Amazon-Music-Playlist.Mein Discovery Mix',
                                 'My-Library-Playlist.2020',
                                 'My-Library-Playlist.2021',
                                 'TuneIn.Radio Bob Rock',
                                 'TuneIn.NDR2',
                                 'Spotify-Playlist.Sabaton Radio',
                                 'Spotify-Playlist.Rock Party',
                                 'Spotify-Playlist.This Is Nightwish',
                                 'Spotify-Playlist.Metal Christmas'],
                      equalizerList: ['Bassboost','Klassik','Dance', 'Deep', 'Electronic', 'Flat', 'Hip-Hop', 'Rock', 
                                      'Metal', 'Jazz', 'Latin', 'Tonstärke', 'Lounge', 'Piano'],
                      colorMediaIcon: colorAlexa,
                      colorMediaArtist: Yellow,
                      colorMediaTitle: Yellow,
                      autoCreateALias : true
                   }]
      };
      
      let Sonos: PageMedia = 
      {
          'type': 'cardMedia',
          'heading': 'Sonos',
          'useColor': true,
          'subPage': false,
          'parent': undefined,
          'items': [<PageItem>{   
                      id: AliasPath + 'Media.PlayerSonos', 
                      adapterPlayerInstance: "sonos.0.",
                      mediaDevice: "10_55_28_132",
                      speakerList: ['Küche'],
                      colorMediaIcon: colorSpotify,
                      colorMediaArtist: Yellow,
                      colorMediaTitle: Yellow,
                      autoCreateALias : true
                   }]
      };
      
      let SpotifyPremium: PageMedia = 
      {
          "type": "cardMedia",
          "heading": "Spotify",
          "useColor": true,
          "subPage": false,
          "parent": undefined,
          "items": [<PageItem>{ 
                      id: AliasPath + 'Media.PlayerSpotifyPremium', 
                      adapterPlayerInstance: "spotify-premium.0.",
                      speakerList: ['Küche'],
                      //Favoriten Playlists aus Spotify in Liste eintragen 
                      playList: ['Toms Lieblingssongs','80er','#BeatsRadio','Italo Disco 80s','Ben Böhmer live above Cappadocia in Turkey for Cercle'],
                      repeatList: ['off','context','track'],
                      equalizerList: ['Bassboost','Klassik','Dance', 'Deep', 'Electronic', 'Flat', 'Hip-Hop', 'Rock', 
                                      'Metal', 'Jazz', 'Latin', 'Tonstärke', 'Lounge', 'Piano'],
                      colorMediaIcon: colorSpotify,
                      colorMediaArtist: Yellow,
                      colorMediaTitle: Yellow,
                      autoCreateALias : true
                   }]
      };
      
      let SqueezeboxRPC: PageMedia = 
      {
          "type": "cardMedia",
          "heading": "SqueezeboxRPC",
          "useColor": true,
          "subPage": false,
          "parent": undefined,
          "items": [<PageItem>{ 
                      id: "alias.0.Media.LMS.SqueezePlay", 
                      adapterPlayerInstance: "squeezeboxrpc.0.Players.SqueezePlay.",
                      speakerList: ['SqueezePlay']
                   }]
      };
      
      let Buero_Themostat: PageThermo = 
      {
          "type": "cardThermo",
          "heading": "Test Thermostat",
          "useColor": true,
          "subPage": false,
          "parent": undefined,
          "items": [<PageItem>{ id: "alias.0.NSPanel_1.Thermostat_Buero", minValue: 50, maxValue: 300 }]
      };
      
      let Buero_Klimaanlage: PageThermo = 
      {
          "type": "cardThermo",
          "heading": "Test Klimaanlage",
          "useColor": true,
          "subPage": false,
          "parent": undefined,
          "items": [<PageItem>{   
                      id: "alias.0.NSPanel_1.TestKlimaanlage", 
                      minValue: 50, 
                      maxValue: 250,
                      popupThermoMode1: ['Auto','0','1','2','3'],
                      popupThermoMode2: ['Auto','0','1','2','3','4','5'],
                      popupThermoMode3: ['Auto','Manual','Boost',],
                      popUpThermoName: ["Schwenk-Modus", 'Speed', 'Temperatur'],
                      icon: 'fan',
                      setThermoAlias: ['MODE1','MODE2','MODE3'],
                      setThermoDestTemp2: 'ACTUAL2'
                   }]
      };
      
      let Buero_Alarm: PageAlarm = 
      {
          "type": "cardAlarm",
          "heading": "Alarm",
          "useColor": true,
          "subPage": false,
          "parent": undefined,
          "items": [<PageItem>{ id: "alias.0.Alarm" }]
      };
      
      let button1Page: PageGrid =
      {
          'type': 'cardGrid',
          'heading': 'Radio',
          'useColor': true,
          'subPage': false,
          'parent': undefined,
          'items': [
              <PageItem>{ id: 'alias.0.NSPanel_1.Radio.FFN', icon: 'radio', name: 'FFN', onColor: colorRadio},
              <PageItem>{ id: 'alias.0.NSPanel_1.Radio.Antenne' , icon: 'radio', name: 'Antenne Nds.', onColor: colorRadio},
              <PageItem>{ id: 'alias.0.NSPanel_1.Radio.NDR2', icon: 'radio', name: 'NDR2', onColor: colorRadio},
              <PageItem>{ id: 'alias.0.NSPanel_1.Radio.Bob', icon: 'radio', name: 'Radio BOB', onColor: colorRadio},
              <PageItem>{ id: 'alias.0.NSPanel_1.Radio.Spotify', icon: 'spotify', name: 'Party Playlist', onColor: colorSpotify},
              <PageItem>{ id: 'alias.0.NSPanel_1.Radio.Alexa', icon: 'playlist-music', name: 'Playlist 2021', onColor: colorAlexa}
          ]
      };
      
      let button2Page: PageEntities =
      {
          'type': 'cardEntities',
          'heading': 'Flur',
          'useColor': true,
          'subPage': false,
          'parent': undefined,
          'items': [
              <PageItem>{ id: "alias.0.Hue.Deckenlampe_Flur", name: "Flur", interpolateColor: false},
          ]
      };
      
      //-- ENDE der Beispiele für Seitengestaltung -- Selbstdefinierte Aliase erforderlich ------------------
      
      
      /********************************************************************************************************** */
      //Service Pages mit Auto-Alias (Nachfolgende Seiten werden mit Alias automatisch angelegt)
      /********************************************************************************************************** */
      
      let Service: PageEntities =
      {
          "type": "cardEntities",
          "heading": "NSPanel Service",
          "useColor": true,
          "subPage": false,
          "parent": undefined, 
          "items": [
              <PageItem>{ id: AliasPath + 'autoUpdate', name: "Auto-Updates" ,icon: "update", offColor: MSRed, onColor: MSGreen},
              <PageItem>{ navigate: true, id: "NSPanel_Infos", icon: "information-outline", onColor: White, name: "NSPanel Infos"},
              <PageItem>{ navigate: true, id: "NSPanel_Firmware_Info", icon: "update", onColor: White, name: "Firmware Infos"},
              <PageItem>{ navigate: true, id: "NSPanel_Einstellungen", icon: "wrench-outline", onColor: White, name: "Screensaver"}
          ]
      };
      
              //Subpage 1 von Subpages_2
              let NSPanel_Infos: PageEntities =
              {
                  "type": "cardEntities",
                  "heading": "NSPanel Infos",
                  "useColor": true,
                  "subPage": true,
                  "parent": Service,
                  "items": [
                      <PageItem>{ id: AliasPath + 'Tasmota.Hardware', name: 'Hardware', icon: 'memory', offColor: MSYellow, onColor: MSYellow, useColor: true},
                      <PageItem>{ id: AliasPath + 'Sensor.ESP32.Temperature', name: "ESP Temperatur", icon: "thermometer", unit: "°C", offColor: MSYellow, onColor: MSYellow, useColor: true},
                      <PageItem>{ id: AliasPath + 'Tasmota.Uptime', name: "Uptime", icon: "timeline-clock-outline", offColor: MSYellow, onColor: MSYellow, useColor: true},
                      <PageItem>{ id: AliasPath + 'Tasmota.Wifi.RSSI', name: "Wifi-Signal", icon: "signal-distance-variant", unit: "dBm", offColor: MSYellow, onColor: MSYellow, useColor: true}
                  ]
              };
      
              //Subpage 2 von Subpages_2
              let NSPanel_Einstellungen: PageEntities =
              {
                  'type': 'cardEntities',
                  'heading': 'Screensaver',
                  'useColor': true,
                  'subPage': true,
                  'parent': Service,
                  'items': [
                      <PageItem>{ id: AliasPath + 'Dimmode.brightnessDay', name: 'Brightness Tag', icon: 'brightness-5', offColor: MSYellow, onColor: MSYellow, useColor: true, minValue: 5, maxValue: 10},
                      <PageItem>{ id: AliasPath + 'Dimmode.brightnessNight', name: 'Brightness Nacht', icon: 'brightness-4', offColor: MSYellow, onColor: MSYellow, useColor: true, minValue: 0, maxValue: 4},
                      <PageItem>{ id: AliasPath + 'Dimmode.hourDay', name: 'Stunde Tag', icon: 'sun-clock', offColor: MSYellow, onColor: MSYellow, useColor: true, minValue: 0, maxValue: 23},
                      <PageItem>{ id: AliasPath + 'Dimmode.hourNight', name: 'Stunde Nacht', icon: 'sun-clock-outline', offColor: MSYellow, onColor: MSYellow, useColor: true, minValue: 0, maxValue: 23}
                  ]
              };
      
              //Subpage 3 von Subpages_2
              let NSPanel_Firmware_Info: PageEntities =
              {
                  'type': 'cardEntities',
                  'heading': 'Firmware-Updates',
                  'useColor': true,
                  'subPage': true,
                  'parent': Service,
                  'items': [
                      <PageItem>{ id: AliasPath + 'Tasmota.Version', name: 'Tasmota Firmware', offColor: MSYellow, onColor: MSYellow, useColor: true},
                      <PageItem>{ id: AliasPath + 'Display.TFTVersion', name: 'TFT-Firmware', offColor: MSYellow, onColor: MSYellow, useColor: true},
                      <PageItem>{ id: AliasPath + 'Display.BerryDriver', name: 'Berry-Treiber', offColor: MSYellow, onColor: MSYellow, useColor: true},
                      <PageItem>{ id: AliasPath + 'Display.Model', name: 'NSPanel Version', offColor: MSYellow, onColor: MSYellow, useColor: true}
                  ]
              };
      
      posted in Hardware
      TomDuke
      TomDuke
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
    The ioBroker Community 2014-2023
    logo