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 mit Lovelace UI

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 mit Lovelace UI

Geplant Angeheftet Gesperrt Verschoben Hardware
lovelace uinspanelsonoff
7.8k Beiträge 272 Kommentatoren 6.7m Aufrufe 254 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.
  • ArmilarA Armilar

    @ronny130286 sagte in SONOFF NSPanel mit Lovelace UI:

    vielleicht wäre es auch denkbar die ScreensaverEntityValue anzuzeigen auch ohne einen ScreensaverEntity der einen Status anzeigt

    Da kann auch eine Waschmaschine oder ein Toaster rein 😉

    EDIT:
    Beispiel mit Fenstersensor und Temperatursensor:

    mrIcon2ScreensaverEntity: { ScreensaverEntity: 'deconz.0.Sensors.5.open', 
                                ScreensaverEntityIconOn: 'heat-wave', 
                                ScreensaverEntityIconOff: null, 
                                ScreensaverEntityValue: 'deconz.0.Sensors.65.temperature',
                                ScreensaverEntityValueDecimalPlace : 1,
                                ScreensaverEntityValueUnit: '°', 
                                ScreensaverEntityOnColor: MSRed, 
                                ScreensaverEntityOffColor: MSGreen },
    
    R Offline
    R Offline
    ronny130286
    schrieb am zuletzt editiert von ronny130286
    #2218

    @armilar

    ich habs mir zurecht gebaut: die Funktion CheckConfigParameters() muss man anpassen, da ansonsten eine Meldung in der Console erscheint => passiert auch sonst imnmer wenn man den wert auf null setzt

    if (existsObject(config.mrIcon1ScreensaverEntity.ScreensaverEntity) == false && config.mrIcon1ScreensaverEntity.ScreensaverEntity != null) {
                console.warn('mrIcon1ScreensaverEntity data point in the config not available - please adjust');
            } 
            if (existsObject(config.mrIcon2ScreensaverEntity.ScreensaverEntity) == false && config.mrIcon2ScreensaverEntity.ScreensaverEntity != null) {
                console.warn('mrIcon2ScreensaverEntity data point in the config not available - please adjust');
            } 
    

    und hier die HandleScreensaverStatusIcons() Funktion, damit kann man dann ScreensaverEntityValue anzeigen lassen ohne ScreensaverEntity einzutragen

    function HandleScreensaverStatusIcons() : void {
        try {
            let payloadString = '';
            let hwBtn1Col: any = config.mrIcon1ScreensaverEntity.ScreensaverEntityOffColor;
            if (config.mrIcon1ScreensaverEntity.ScreensaverEntity != null) {
                if (typeof (getState(config.mrIcon1ScreensaverEntity.ScreensaverEntity).val) == 'string') {
                    let hwBtn1: string = getState(config.mrIcon1ScreensaverEntity.ScreensaverEntity).val;
                    if (hwBtn1 == 'ON') {
                        hwBtn1Col = config.mrIcon1ScreensaverEntity.ScreensaverEntityOnColor;
                    }
                    if (getState(config.mrIcon1ScreensaverEntity.ScreensaverEntity).val) {
                        payloadString += Icons.GetIcon(config.mrIcon1ScreensaverEntity.ScreensaverEntityIconOn);
                    } else {
                        if (config.mrIcon1ScreensaverEntity.ScreensaverEntityIconOff != null) {
                            payloadString += Icons.GetIcon(config.mrIcon1ScreensaverEntity.ScreensaverEntityIconOff);
                        } else {
                            payloadString += Icons.GetIcon(config.mrIcon1ScreensaverEntity.ScreensaverEntityIconOn);
                        }
                    } 
                    if (config.mrIcon1ScreensaverEntity.ScreensaverEntityValue != null) {
                        payloadString += (getState(config.mrIcon1ScreensaverEntity.ScreensaverEntityValue).val).toFixed(config.mrIcon1ScreensaverEntity.ScreensaverEntityValueDecimalPlace);
                        payloadString += config.mrIcon1ScreensaverEntity.ScreensaverEntityValueUnit;                        
                    }
                    payloadString += '~' + rgb_dec565(hwBtn1Col) + '~';
                } else if (typeof (getState(config.mrIcon1ScreensaverEntity.ScreensaverEntity).val) == 'boolean') {
                    let hwBtn1: boolean = getState(config.mrIcon1ScreensaverEntity.ScreensaverEntity).val;
                    if (hwBtn1) {
                        hwBtn1Col = config.mrIcon1ScreensaverEntity.ScreensaverEntityOnColor;
                    }
                    if (getState(config.mrIcon1ScreensaverEntity.ScreensaverEntity).val) {
                        payloadString += Icons.GetIcon(config.mrIcon1ScreensaverEntity.ScreensaverEntityIconOn);
                    } else {
                        if (config.mrIcon1ScreensaverEntity.ScreensaverEntityIconOff != null) {
                            payloadString += Icons.GetIcon(config.mrIcon1ScreensaverEntity.ScreensaverEntityIconOff);
                        } else {
                            payloadString += Icons.GetIcon(config.mrIcon1ScreensaverEntity.ScreensaverEntityIconOn);
                        }
                    } 
                    if (config.mrIcon1ScreensaverEntity.ScreensaverEntityValue != null) {
                        payloadString += (getState(config.mrIcon1ScreensaverEntity.ScreensaverEntityValue).val).toFixed(config.mrIcon1ScreensaverEntity.ScreensaverEntityValueDecimalPlace);
                        payloadString += config.mrIcon1ScreensaverEntity.ScreensaverEntityValueUnit;                        
                    }
                    payloadString += '~' + rgb_dec565(hwBtn1Col) + '~';
                }
            } else if (config.mrIcon1ScreensaverEntity.ScreensaverEntity == null && config.mrIcon1ScreensaverEntity.ScreensaverEntityValue != null){
                
                if(config.mrIcon1ScreensaverEntity.ScreensaverEntityOnColor != null){
                    hwBtn1Col = config.mrIcon1ScreensaverEntity.ScreensaverEntityOnColor;
                }
                if(config.mrIcon1ScreensaverEntity.ScreensaverEntityIconOn != null){
                    payloadString += Icons.GetIcon(config.mrIcon1ScreensaverEntity.ScreensaverEntityIconOn);
                }
                
                if (config.mrIcon1ScreensaverEntity.ScreensaverEntityValue != null) {
                    payloadString += (getState(config.mrIcon1ScreensaverEntity.ScreensaverEntityValue).val).toFixed(config.mrIcon1ScreensaverEntity.ScreensaverEntityValueDecimalPlace);
                    payloadString += config.mrIcon1ScreensaverEntity.ScreensaverEntityValueUnit;                        
                }
                payloadString += '~' + rgb_dec565(hwBtn1Col) + '~';
            }
            else {
                hwBtn1Col = Black;
                payloadString += '~~';
            }
    
            let hwBtn2Col: any = config.mrIcon2ScreensaverEntity.ScreensaverEntityOffColor;
            if (config.mrIcon2ScreensaverEntity.ScreensaverEntity != null) {
                if (typeof (getState(config.mrIcon2ScreensaverEntity.ScreensaverEntity).val) == 'string') {
                    let hwBtn2: string = getState(config.mrIcon2ScreensaverEntity.ScreensaverEntity).val;
                    if (hwBtn2 == 'ON') {
                        hwBtn2Col = config.mrIcon2ScreensaverEntity.ScreensaverEntityOnColor;
                    }
                    if (getState(config.mrIcon2ScreensaverEntity.ScreensaverEntity).val) {
                        payloadString += Icons.GetIcon(config.mrIcon2ScreensaverEntity.ScreensaverEntityIconOn);
                    } else {
                        if (config.mrIcon2ScreensaverEntity.ScreensaverEntityIconOff != null) {
                            payloadString += Icons.GetIcon(config.mrIcon2ScreensaverEntity.ScreensaverEntityIconOff);
                        } else {
                            payloadString += Icons.GetIcon(config.mrIcon2ScreensaverEntity.ScreensaverEntityIconOn);
                        }
                    } 
                    if (config.mrIcon2ScreensaverEntity.ScreensaverEntityValue != null) {
                        payloadString += (getState(config.mrIcon2ScreensaverEntity.ScreensaverEntityValue).val).toFixed(config.mrIcon2ScreensaverEntity.ScreensaverEntityValueDecimalPlace);
                        payloadString += config.mrIcon2ScreensaverEntity.ScreensaverEntityValueUnit;                        
                    }
                    payloadString += '~' + rgb_dec565(hwBtn2Col) + '~';
                } else if (typeof (getState(config.mrIcon2ScreensaverEntity.ScreensaverEntity).val) == 'boolean') {
                    let hwBtn2: boolean = getState(config.mrIcon2ScreensaverEntity.ScreensaverEntity).val;
                    if (hwBtn2) {
                        hwBtn2Col = config.mrIcon2ScreensaverEntity.ScreensaverEntityOnColor;
                    }
                    if (getState(config.mrIcon2ScreensaverEntity.ScreensaverEntity).val) {
                        payloadString += Icons.GetIcon(config.mrIcon2ScreensaverEntity.ScreensaverEntityIconOn);
                    } else {
                        if (config.mrIcon2ScreensaverEntity.ScreensaverEntityIconOff != null) {
                            payloadString += Icons.GetIcon(config.mrIcon2ScreensaverEntity.ScreensaverEntityIconOff);
                        } else {
                            payloadString += Icons.GetIcon(config.mrIcon2ScreensaverEntity.ScreensaverEntityIconOn);
                        }
                    } 
                    if (config.mrIcon2ScreensaverEntity.ScreensaverEntityValue != null) {
                        payloadString += (getState(config.mrIcon2ScreensaverEntity.ScreensaverEntityValue).val).toFixed(config.mrIcon2ScreensaverEntity.ScreensaverEntityValueDecimalPlace);
                        payloadString += config.mrIcon2ScreensaverEntity.ScreensaverEntityValueUnit;                        
                    }
                    payloadString += '~' + rgb_dec565(hwBtn2Col) + '~';
                }
            } else if (config.mrIcon2ScreensaverEntity.ScreensaverEntity == null && config.mrIcon2ScreensaverEntity.ScreensaverEntityValue != null){
                
                if(config.mrIcon2ScreensaverEntity.ScreensaverEntityOnColor != null){
                    hwBtn2Col = config.mrIcon2ScreensaverEntity.ScreensaverEntityOnColor;
                }
    
                if(config.mrIcon2ScreensaverEntity.ScreensaverEntityIconOn != null){
                    payloadString += Icons.GetIcon(config.mrIcon2ScreensaverEntity.ScreensaverEntityIconOn);
                }
                
                if (config.mrIcon2ScreensaverEntity.ScreensaverEntityValue != null) {
                    payloadString += (getState(config.mrIcon2ScreensaverEntity.ScreensaverEntityValue).val).toFixed(config.mrIcon2ScreensaverEntity.ScreensaverEntityValueDecimalPlace);
                    payloadString += config.mrIcon2ScreensaverEntity.ScreensaverEntityValueUnit;                        
                }
                payloadString += '~' + rgb_dec565(hwBtn2Col) + '~';
            } else {
                hwBtn2Col = Black;
                payloadString += '~~';
            }
    
            let alternateScreensaverMFRIcon1Size = getState(NSPanel_Path + 'Config.MRIcons.alternateMRIconSize.1').val
            let alternateScreensaverMFRIcon2Size = getState(NSPanel_Path + 'Config.MRIcons.alternateMRIconSize.2').val
            //Alternate MRIcon Size
            if (alternateScreensaverMFRIcon1Size) {
                payloadString += '1~';
            } else {
                payloadString += '~';
            }
            if (alternateScreensaverMFRIcon2Size) {
                payloadString += '1~';
            } else {
                payloadString += '~';
            }
    
            SendToPanel(<Payload>{ payload: 'statusUpdate~' + payloadString });
    
        } catch (err) {
            console.log('HandleScreensaverStatusIcons: ' + err.message);
        }
    }
    
    1 Antwort Letzte Antwort
    1
    • ArmilarA Offline
      ArmilarA Offline
      Armilar
      Most Active Forum Testing
      schrieb am zuletzt editiert von
      #2219

      @ronny130286

      Habe es mal in die 4.0.0 übernommen, da es eine sinnvolle Erweiterung für alle ist 😊

      Installationsanleitung, Tipps, Alias-Definitionen, FAQ für das Sonoff NSPanel mit lovelace UI unter ioBroker
      https://github.com/joBr99/nspanel-lovelace-ui/wiki

      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

      GarganoG 1 Antwort Letzte Antwort
      0
      • ArmilarA Armilar

        @ronny130286

        Habe es mal in die 4.0.0 übernommen, da es eine sinnvolle Erweiterung für alle ist 😊

        GarganoG Offline
        GarganoG Offline
        Gargano
        schrieb am zuletzt editiert von
        #2220

        @armilar Gibt es die 4.0.0 schon zum Testen ?

        ArmilarA 1 Antwort Letzte Antwort
        0
        • GarganoG Gargano

          @armilar Gibt es die 4.0.0 schon zum Testen ?

          ArmilarA Offline
          ArmilarA Offline
          Armilar
          Most Active Forum Testing
          schrieb am zuletzt editiert von
          #2221

          @gargano

          Nee, die ist noch nicht öffentlich

          Installationsanleitung, Tipps, Alias-Definitionen, FAQ für das Sonoff NSPanel mit lovelace UI unter ioBroker
          https://github.com/joBr99/nspanel-lovelace-ui/wiki

          Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

          GarganoG 1 Antwort Letzte Antwort
          0
          • ArmilarA Armilar

            @gargano

            Nee, die ist noch nicht öffentlich

            GarganoG Offline
            GarganoG Offline
            Gargano
            schrieb am zuletzt editiert von
            #2222

            @armilar Kannst Du schon absehen, wann Du die öffentlich machen kannst ?
            Bis jetzt habe ich noch nicht so viel Zeit in den NSPanel investiert, außer den DHT20-I2C anzuschließen.
            Ich wollte auf die 4.0.0 warten.
            Aber jetzt ist Wohnzimmer fertig gestrichen und U-Putz Dose für den NS-Panel gesetzt, also alles fertig für den Einsatz.

            ArmilarA 1 Antwort Letzte Antwort
            0
            • GarganoG Gargano

              @armilar Kannst Du schon absehen, wann Du die öffentlich machen kannst ?
              Bis jetzt habe ich noch nicht so viel Zeit in den NSPanel investiert, außer den DHT20-I2C anzuschließen.
              Ich wollte auf die 4.0.0 warten.
              Aber jetzt ist Wohnzimmer fertig gestrichen und U-Putz Dose für den NS-Panel gesetzt, also alles fertig für den Einsatz.

              ArmilarA Offline
              ArmilarA Offline
              Armilar
              Most Active Forum Testing
              schrieb am zuletzt editiert von Armilar
              #2223

              @gargano

              ich denke in ca. 2 Wochen... Ein paar Features wandern noch rein... und die TFT 4.0.0 muss ja auch noch fertig sein... Ist ja alles aktuell DEV

              Installationsanleitung, Tipps, Alias-Definitionen, FAQ für das Sonoff NSPanel mit lovelace UI unter ioBroker
              https://github.com/joBr99/nspanel-lovelace-ui/wiki

              Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

              1 Antwort Letzte Antwort
              0
              • ArmilarA Armilar

                @missi

                der Datenpunkt "Button" oder auch als Glocke dargestellt, in denn Objekten würde ich gerne als Icon auf das Panel bringen.

                Geht bestimmt. Mir ist diese Woche meine Glaskugel kaputt gegangen 😉

                Was für ein Button? wo ist der? in einer App? Falls ja welche?

                Der Button löst die 100 % Ladung des E Autos aus, wie kann ich den Button als Alies realisieren ?

                In welchem Adapter? mit welchen Datenpunkten?

                es ist ja nicht Quasi ein Licht mit true and False?

                Mit den Datenpunkten wird man es besser verstehen. Momentan weiß ich nicht einmal ob es ein boolscher Wert ist, der einfach nur ein anderes Symbol (Glocke) als eine Lampe braucht oder ob es ein numerischer Wert oder etwas völlig anderes ist?

                Die Icons kann man ja z.B. bei true/false in einem Alias socket separat mit icon: zuweisen.

                Also etwas mehr Infos für die Lösung 😊

                missiM Offline
                missiM Offline
                missi
                schrieb am zuletzt editiert von
                #2224

                @armilar ladung.jpg

                habe in dem Adapter diese Werte, bei Klicken der "Glocke" wird eine 100 % Ladung ausgelöst, für längere Fahrten etz.

                Akku Stand etz habe ich schon ins Panel bekommen, auf der Auto Card würde diese Option noch nett sein.

                ArmilarA 1 Antwort Letzte Antwort
                0
                • missiM missi

                  @armilar ladung.jpg

                  habe in dem Adapter diese Werte, bei Klicken der "Glocke" wird eine 100 % Ladung ausgelöst, für längere Fahrten etz.

                  Akku Stand etz habe ich schon ins Panel bekommen, auf der Auto Card würde diese Option noch nett sein.

                  ArmilarA Offline
                  ArmilarA Offline
                  Armilar
                  Most Active Forum Testing
                  schrieb am zuletzt editiert von Armilar
                  #2225

                  @missi

                  Alias Taste draufsetzen...

                  Exemplarisch das PageItem:

                  <PageItem>{ id: 'alias.0.NSPanel_1.ChargeMaxRange', icon: 'alert', name: '100% Ladung', onColor: White, buttonText: 'starten'},
                  

                  Das die Funktion dem Akku nicht gut tut weißt du aber, oder? 😉

                  Installationsanleitung, Tipps, Alias-Definitionen, FAQ für das Sonoff NSPanel mit lovelace UI unter ioBroker
                  https://github.com/joBr99/nspanel-lovelace-ui/wiki

                  Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                  D 1 Antwort Letzte Antwort
                  1
                  • ArmilarA Armilar

                    @missi

                    Alias Taste draufsetzen...

                    Exemplarisch das PageItem:

                    <PageItem>{ id: 'alias.0.NSPanel_1.ChargeMaxRange', icon: 'alert', name: '100% Ladung', onColor: White, buttonText: 'starten'},
                    

                    Das die Funktion dem Akku nicht gut tut weißt du aber, oder? 😉

                    D Offline
                    D Offline
                    DaPeace
                    schrieb am zuletzt editiert von
                    #2226

                    @armilar wie läuft denn das mit dem ICON beim daswetter-adapter? Ich hab hier nur eine ICON-Url als DP oder übersehe ich was? Hab bisher den accuweather verwendet aber das mit der API hat nicht zuverlässig funktioniert. Jetzt habe ich auf dem Display einne großen Kreis mit Ausrufezeichen was sicher nicht ok ist 😕

                    ArmilarA 1 Antwort Letzte Antwort
                    0
                    • ArmilarA Armilar

                      Sonnenaufgang und Sonnenuntergang im Panel anzeigen

                      Gestern gab es eine Anfrage im Github zur Anzeige des Sonnenuntergangs und des Sonnenaufgangs im NSPanel-Screensaver, statt des Windes oder sonstiger Infos...

                      Das ist grundsätzlich schon mal über die Datenpunkte der Wetteradapter möglich:

                      1. accuweather:

                        accuweather.0.Daily.Day1.Sunrise
                        accuweather.0.Daily.Day1.Sunset
                        
                      2. daswetter:

                        daswetter.0.NextDaysDetailed.Location_1.Day_1.sun_in
                        daswetter.0.NextDaysDetailed.Location_1.Day_1.sun_out
                        
                      3. In z.B. Blockly über Astrofunktionen ermitteln

                      Ihr werdet aber schnell feststellen, dass alle 3 Varianten nur über den gleichen Tag gelten. D.h. wenn Ihr nur wissen wollt, wann ist oder wann war denn heute der Sonnenaufgang und wann ist oder wann war denn der Sonnenuntergang, dann seit ihr bereits am Ziel.

                      Dann nur den Wert zusammen mit 2 Symbolen, z.B.:
                      weather-sunset-up
                      und
                      weather-sunset-up
                      in zwei der 4 möglichen Parameter unter firstScreensaverEntity - fourthScreensaverEntity eintragen und schon sieht man die Sonnenparameter...

                      Wenn ihr allerdings sagt, "was interessiert mich der Sonnenaufgang von vor 6 Stunden", dann wird es etwas kniffeliger, da alle 3 Varianten diese Infos zum nächsten Sonnenaufgang (d.h. in der Zeitspanne ab Sonnenuntergang bis 00:00 Uhr) nicht hergeben.

                      Über einen Trick kann das nächste auftretende Event mit der korrekten Zeit dennoch ermittelt werden:

                      dc6b0c1a-d22f-4111-a935-9e27028f2641-image.png

                      <xml xmlns="https://developers.google.com/blockly/xml">
                        <variables>
                          <variable id="lGekM1LmQ*+O~ztvyTc:">weatherAdapter</variable>
                          <variable id="Xv1p5y_ZlH)(!`r+@M2-">weatherAdapterPath</variable>
                          <variable id="ovz}S,QCqYs3J.((Fkpv">sunEvents</variable>
                          <variable id="P#6vyNW5F+sI$Qrr0?h*">index</variable>
                          <variable id="@5Qnz.4pO[WaGGMl~t:7">actualDateTime</variable>
                          <variable id="M87_jtL0%axzS#nEf}@8">i</variable>
                          <variable id="vV)QwBgKYRse|Gs4[[fT">icon</variable>
                        </variables>
                        <block type="comment" id="tAg0=MyLBUI#S44Z_+:f" x="-1087" y="-263">
                          <field name="COMMENT">daswetter oder accuweather</field>
                          <next>
                            <block type="variables_set" id="YQ~W/]6j7]GiW;M2o9[r">
                              <field name="VAR" id="lGekM1LmQ*+O~ztvyTc:">weatherAdapter</field>
                              <value name="VALUE">
                                <block type="text" id="u_YZ`*9~|0fRI?YXCj/%">
                                  <field name="TEXT">accuweather</field>
                                </block>
                              </value>
                              <next>
                                <block type="variables_set" id="Z?=.#aeK1/gFw=42J0o:" disabled="true">
                                  <field name="VAR" id="lGekM1LmQ*+O~ztvyTc:">weatherAdapter</field>
                                  <value name="VALUE">
                                    <block type="text" id="T3[xm$GuP81)^^bN6xX0">
                                      <field name="TEXT">daswetter</field>
                                    </block>
                                  </value>
                                  <next>
                                    <block type="create" id="LQe;P09bd0~(hUFLWqkj">
                                      <field name="NAME">0_userdata.0.Sunevent.next</field>
                                      <value name="VALUE">
                                        <block type="time_get" id="fm;5H}Iuc`$TS-j$gkg@">
                                          <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation>
                                          <field name="OPTION">hh:mm</field>
                                        </block>
                                      </value>
                                      <next>
                                        <block type="create" id="$f98Y1:{]9c8-PcWZ23!">
                                          <field name="NAME">0_userdata.0.Sunevent.icon</field>
                                          <value name="VALUE">
                                            <block type="text" id="-9a[$n}WeQ+X|%@KAUu-">
                                              <field name="TEXT">weather-sunset-down</field>
                                            </block>
                                          </value>
                                          <next>
                                            <block type="controls_if" id="aWT)^_,X01O*My5%qRJ{">
                                              <mutation elseif="1"></mutation>
                                              <value name="IF0">
                                                <block type="logic_compare" id="$Mb~iPxz|;qAazg6_fIV">
                                                  <field name="OP">EQ</field>
                                                  <value name="A">
                                                    <block type="variables_get" id="b6C?CY-;)B_L@?.@vKa~">
                                                      <field name="VAR" id="lGekM1LmQ*+O~ztvyTc:">weatherAdapter</field>
                                                    </block>
                                                  </value>
                                                  <value name="B">
                                                    <block type="text" id="+f=YQ9/k@aZ@5$,BLA@e">
                                                      <field name="TEXT">accuweather</field>
                                                    </block>
                                                  </value>
                                                </block>
                                              </value>
                                              <statement name="DO0">
                                                <block type="variables_set" id=".N1$ZK~J8:gTg-b-]xkM">
                                                  <field name="VAR" id="Xv1p5y_ZlH)(!`r+@M2-">weatherAdapterPath</field>
                                                  <value name="VALUE">
                                                    <block type="text" id="5rPYs{N{Bb;y~9/sZ{EI">
                                                      <field name="TEXT">accuweather.0.Daily.</field>
                                                    </block>
                                                  </value>
                                                  <next>
                                                    <block type="variables_set" id="dnjel3yq(6oygmqQ!dkj">
                                                      <field name="VAR" id="ovz}S,QCqYs3J.((Fkpv">sunEvents</field>
                                                      <value name="VALUE">
                                                        <block type="lists_create_with" id="`GS-e7_NuO%[Gi$L^G1M">
                                                          <mutation items="3"></mutation>
                                                          <value name="ADD0">
                                                            <block type="convert_from_date" id=",f;2ZyAlw._@P3tT3Tb|">
                                                              <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation>
                                                              <field name="OPTION">object</field>
                                                              <value name="VALUE">
                                                                <block type="get_value_var" id="/F1?*lb5i^.IP:$5F=LK">
                                                                  <field name="ATTR">val</field>
                                                                  <value name="OID">
                                                                    <shadow type="text" id="!!|bLOmb_b!O#F;z,[G_">
                                                                      <field name="TEXT"></field>
                                                                    </shadow>
                                                                    <block type="text_join" id="6V7[[(izxMt?BX/#E-VY">
                                                                      <mutation items="2"></mutation>
                                                                      <value name="ADD0">
                                                                        <block type="variables_get" id="l(|D)96pya:zZtC,Bo,5">
                                                                          <field name="VAR" id="Xv1p5y_ZlH)(!`r+@M2-">weatherAdapterPath</field>
                                                                        </block>
                                                                      </value>
                                                                      <value name="ADD1">
                                                                        <block type="text" id="HL[Fg8Lk8vc9cm:J0RQL">
                                                                          <field name="TEXT">Day1.Sunrise</field>
                                                                        </block>
                                                                      </value>
                                                                    </block>
                                                                  </value>
                                                                </block>
                                                              </value>
                                                            </block>
                                                          </value>
                                                          <value name="ADD1">
                                                            <block type="convert_from_date" id="`o9IZceriS8T*x|vHjT-">
                                                              <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation>
                                                              <field name="OPTION">object</field>
                                                              <value name="VALUE">
                                                                <block type="get_value_var" id="qlPvcXBEFIN6Q(])Zf1e">
                                                                  <field name="ATTR">val</field>
                                                                  <value name="OID">
                                                                    <shadow type="text" id="$b77uH(SKw/C:zsy6b]N">
                                                                      <field name="TEXT"></field>
                                                                    </shadow>
                                                                    <block type="text_join" id=";Z{TEONc%`vj2ab$0r-N">
                                                                      <mutation items="2"></mutation>
                                                                      <value name="ADD0">
                                                                        <block type="variables_get" id="^75~_ZO02c+8M3fLD:@=">
                                                                          <field name="VAR" id="Xv1p5y_ZlH)(!`r+@M2-">weatherAdapterPath</field>
                                                                        </block>
                                                                      </value>
                                                                      <value name="ADD1">
                                                                        <block type="text" id="g!jaz;vh[`?/iH6I)dn4">
                                                                          <field name="TEXT">Day1.Sunset</field>
                                                                        </block>
                                                                      </value>
                                                                    </block>
                                                                  </value>
                                                                </block>
                                                              </value>
                                                            </block>
                                                          </value>
                                                          <value name="ADD2">
                                                            <block type="convert_from_date" id="q`kX3qBPbX9#rWrk_gPZ">
                                                              <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation>
                                                              <field name="OPTION">object</field>
                                                              <value name="VALUE">
                                                                <block type="get_value_var" id="{.t=[v{K;as@4JHH;=)5">
                                                                  <field name="ATTR">val</field>
                                                                  <value name="OID">
                                                                    <shadow type="text" id="dM@45=mm0NJBe+8y0;]w">
                                                                      <field name="TEXT"></field>
                                                                    </shadow>
                                                                    <block type="text_join" id="iyvr3._s~OG$~y(52u]i">
                                                                      <mutation items="2"></mutation>
                                                                      <value name="ADD0">
                                                                        <block type="variables_get" id="+8k+4nl/L?8#d#JMD(-T">
                                                                          <field name="VAR" id="Xv1p5y_ZlH)(!`r+@M2-">weatherAdapterPath</field>
                                                                        </block>
                                                                      </value>
                                                                      <value name="ADD1">
                                                                        <block type="text" id="s}AkJj4}7Oa],!~M[N;j">
                                                                          <field name="TEXT">Day2.Sunrise</field>
                                                                        </block>
                                                                      </value>
                                                                    </block>
                                                                  </value>
                                                                </block>
                                                              </value>
                                                            </block>
                                                          </value>
                                                        </block>
                                                      </value>
                                                    </block>
                                                  </next>
                                                </block>
                                              </statement>
                                              <value name="IF1">
                                                <block type="logic_compare" id="rQU!WF~q(bitAh|M@g(q">
                                                  <field name="OP">EQ</field>
                                                  <value name="A">
                                                    <block type="variables_get" id="Gt+G^3Virtg[[n;5oAv/">
                                                      <field name="VAR" id="lGekM1LmQ*+O~ztvyTc:">weatherAdapter</field>
                                                    </block>
                                                  </value>
                                                  <value name="B">
                                                    <block type="text" id="{K!=g%4{7M#N1CY/|a|~">
                                                      <field name="TEXT">daswetter</field>
                                                    </block>
                                                  </value>
                                                </block>
                                              </value>
                                              <statement name="DO1">
                                                <block type="variables_set" id="-=_U;)7lZQegY1jdg)cK">
                                                  <field name="VAR" id="Xv1p5y_ZlH)(!`r+@M2-">weatherAdapterPath</field>
                                                  <value name="VALUE">
                                                    <block type="text" id="n8)9D;BD~G8U+^?#_B|P">
                                                      <field name="TEXT">daswetter.0.NextDaysDetailed.Location_1.</field>
                                                    </block>
                                                  </value>
                                                  <next>
                                                    <block type="variables_set" id="X{sXpUN}p#QmbxFmw8fv">
                                                      <field name="VAR" id="ovz}S,QCqYs3J.((Fkpv">sunEvents</field>
                                                      <value name="VALUE">
                                                        <block type="lists_create_with" id="KGhvO0)OHqNc(0A=1fIv">
                                                          <mutation items="3"></mutation>
                                                          <value name="ADD0">
                                                            <block type="convert_from_date" id="qP;eIvR3D-L6?/0e~AXW">
                                                              <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation>
                                                              <field name="OPTION">object</field>
                                                              <value name="VALUE">
                                                                <block type="get_value_var" id="P^:@OuzJ|9V+/da%9hXY">
                                                                  <field name="ATTR">val</field>
                                                                  <value name="OID">
                                                                    <shadow type="text" id="%lm`:~Ng5g0ye#u8LpY3">
                                                                      <field name="TEXT"></field>
                                                                    </shadow>
                                                                    <block type="text_join" id="lP*QSKhZ3NyG=nieqAYp">
                                                                      <mutation items="2"></mutation>
                                                                      <value name="ADD0">
                                                                        <block type="variables_get" id="02;ViSq8#:bNa!aoQCy0">
                                                                          <field name="VAR" id="Xv1p5y_ZlH)(!`r+@M2-">weatherAdapterPath</field>
                                                                        </block>
                                                                      </value>
                                                                      <value name="ADD1">
                                                                        <block type="text" id="`8uIK)lkeXa)uORJ,q!c">
                                                                          <field name="TEXT">Day_1.sun_in</field>
                                                                        </block>
                                                                      </value>
                                                                    </block>
                                                                  </value>
                                                                </block>
                                                              </value>
                                                            </block>
                                                          </value>
                                                          <value name="ADD1">
                                                            <block type="convert_from_date" id="(gZ)2;Qk@ba/C75gsU(m">
                                                              <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation>
                                                              <field name="OPTION">object</field>
                                                              <value name="VALUE">
                                                                <block type="get_value_var" id="Az`4rq*tGHQfkSu6z;@L">
                                                                  <field name="ATTR">val</field>
                                                                  <value name="OID">
                                                                    <shadow type="text" id="lvj~LN:O%tQP$Qv{oRA6">
                                                                      <field name="TEXT"></field>
                                                                    </shadow>
                                                                    <block type="text_join" id="EdueeQ@fX0;$/wF/+%K]">
                                                                      <mutation items="2"></mutation>
                                                                      <value name="ADD0">
                                                                        <block type="variables_get" id="lY{eT5lh9QBfS;j1cPbo">
                                                                          <field name="VAR" id="Xv1p5y_ZlH)(!`r+@M2-">weatherAdapterPath</field>
                                                                        </block>
                                                                      </value>
                                                                      <value name="ADD1">
                                                                        <block type="text" id="6!Cnq-;oAG0]8jB2fI-*">
                                                                          <field name="TEXT">Day_1.sun_out</field>
                                                                        </block>
                                                                      </value>
                                                                    </block>
                                                                  </value>
                                                                </block>
                                                              </value>
                                                            </block>
                                                          </value>
                                                          <value name="ADD2">
                                                            <block type="convert_from_date" id="#6jO_%HDJ*x;|=VR=XC,">
                                                              <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation>
                                                              <field name="OPTION">object</field>
                                                              <value name="VALUE">
                                                                <block type="get_value_var" id="A!;q:Z6*Z6R*pZ+x.GF0">
                                                                  <field name="ATTR">val</field>
                                                                  <value name="OID">
                                                                    <shadow type="text">
                                                                      <field name="TEXT"></field>
                                                                    </shadow>
                                                                    <block type="text_join" id=",,Lm/%RWi7xv*{rwFt%b">
                                                                      <mutation items="2"></mutation>
                                                                      <value name="ADD0">
                                                                        <block type="variables_get" id="_rR;kn|US.%R:mRkJ]Dc">
                                                                          <field name="VAR" id="Xv1p5y_ZlH)(!`r+@M2-">weatherAdapterPath</field>
                                                                        </block>
                                                                      </value>
                                                                      <value name="ADD1">
                                                                        <block type="text" id="0ij}w8n2_H7id81iN(Di">
                                                                          <field name="TEXT">Day_2.sun_in</field>
                                                                        </block>
                                                                      </value>
                                                                    </block>
                                                                  </value>
                                                                </block>
                                                              </value>
                                                            </block>
                                                          </value>
                                                        </block>
                                                      </value>
                                                    </block>
                                                  </next>
                                                </block>
                                              </statement>
                                              <next>
                                                <block type="schedule" id="ErsW?NofKCD(:Q0`V~Ma">
                                                  <field name="SCHEDULE">* * * * *</field>
                                                  <statement name="STATEMENT">
                                                    <block type="variables_set" id="K.7g^mfGF[8pxWc_@F!(">
                                                      <field name="VAR" id="P#6vyNW5F+sI$Qrr0?h*">index</field>
                                                      <value name="VALUE">
                                                        <block type="math_number" id="Jp}00bvJvG3NJb$=.Ey_">
                                                          <field name="NUM">0</field>
                                                        </block>
                                                      </value>
                                                      <next>
                                                        <block type="variables_set" id="@DQ2yP;Bfwk)m|BTja24">
                                                          <field name="VAR" id="@5Qnz.4pO[WaGGMl~t:7">actualDateTime</field>
                                                          <value name="VALUE">
                                                            <block type="time_get" id="3C!5:__oTnJHZkT=CdHT">
                                                              <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation>
                                                              <field name="OPTION">object</field>
                                                            </block>
                                                          </value>
                                                          <next>
                                                            <block type="controls_forEach" id="h|7J%UAbmOJ^U%@?Q9E_">
                                                              <field name="VAR" id="M87_jtL0%axzS#nEf}@8">i</field>
                                                              <value name="LIST">
                                                                <block type="variables_get" id="[F{0YG]6%@js31kZ0yCS">
                                                                  <field name="VAR" id="ovz}S,QCqYs3J.((Fkpv">sunEvents</field>
                                                                </block>
                                                              </value>
                                                              <statement name="DO">
                                                                <block type="math_change" id="k5Wkbq)pJ3rxMf())#LW">
                                                                  <field name="VAR" id="P#6vyNW5F+sI$Qrr0?h*">index</field>
                                                                  <value name="DELTA">
                                                                    <shadow type="math_number" id="Valeu~1_|nc^q`qSXq!j">
                                                                      <field name="NUM">1</field>
                                                                    </shadow>
                                                                  </value>
                                                                  <next>
                                                                    <block type="controls_if" id="W$w0W1#f4(n=}tSWu~Db">
                                                                      <value name="IF0">
                                                                        <block type="logic_compare" id="S3M3iWnzs]~v?|E!k%S}">
                                                                          <field name="OP">LT</field>
                                                                          <value name="A">
                                                                            <block type="variables_get" id="T+]nVz*-7{N=wNZ]#u$,">
                                                                              <field name="VAR" id="@5Qnz.4pO[WaGGMl~t:7">actualDateTime</field>
                                                                            </block>
                                                                          </value>
                                                                          <value name="B">
                                                                            <block type="variables_get" id="Jn@V}yHRDy..QpfoHlNS">
                                                                              <field name="VAR" id="M87_jtL0%axzS#nEf}@8">i</field>
                                                                            </block>
                                                                          </value>
                                                                        </block>
                                                                      </value>
                                                                      <statement name="DO0">
                                                                        <block type="controls_flow_statements" id="{kN12BKUd3`*w.r~H3NA">
                                                                          <field name="FLOW">BREAK</field>
                                                                        </block>
                                                                      </statement>
                                                                    </block>
                                                                  </next>
                                                                </block>
                                                              </statement>
                                                              <next>
                                                                <block type="control_ex" id="{Cq0X~RE]fq)Q:*9t1j@">
                                                                  <field name="TYPE">false</field>
                                                                  <field name="CLEAR_RUNNING">FALSE</field>
                                                                  <value name="OID">
                                                                    <shadow type="field_oid" id="kHf`Hf9Pk]W9Cee(4nWQ">
                                                                      <field name="oid">Object ID</field>
                                                                    </shadow>
                                                                    <block type="text" id="gTFZ[557_KhO%}Q3Riao">
                                                                      <field name="TEXT">0_userdata.0.Sunevent.next</field>
                                                                    </block>
                                                                  </value>
                                                                  <value name="VALUE">
                                                                    <shadow type="logic_boolean" id="X4-?Cs.mI+_n:pp^(mSU">
                                                                      <field name="BOOL">TRUE</field>
                                                                    </shadow>
                                                                    <block type="convert_from_date" id="DFWkKAZ=CxL%QJ`va3aU">
                                                                      <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation>
                                                                      <field name="OPTION">hh:mm</field>
                                                                      <value name="VALUE">
                                                                        <block type="variables_get" id="S=2,(W$!zu=~@Om4W^BI">
                                                                          <field name="VAR" id="M87_jtL0%axzS#nEf}@8">i</field>
                                                                        </block>
                                                                      </value>
                                                                    </block>
                                                                  </value>
                                                                  <value name="DELAY_MS">
                                                                    <shadow type="math_number" id="`U*0`cyy(+!x/av];hxs">
                                                                      <field name="NUM">0</field>
                                                                    </shadow>
                                                                  </value>
                                                                  <next>
                                                                    <block type="debug" id=";5aowQ7k1/*[)rn[/*,E">
                                                                      <field name="Severity">log</field>
                                                                      <value name="TEXT">
                                                                        <shadow type="text" id="8E;^oHb[00iVTwq$?/e}">
                                                                          <field name="TEXT">test</field>
                                                                        </shadow>
                                                                        <block type="variables_get" id="m^Sy9v.}u6FnVn_~~Qmd">
                                                                          <field name="VAR" id="P#6vyNW5F+sI$Qrr0?h*">index</field>
                                                                        </block>
                                                                      </value>
                                                                      <next>
                                                                        <block type="controls_if" id="(Bd^RAxt-HWlq@,Q?J2K">
                                                                          <mutation else="1"></mutation>
                                                                          <value name="IF0">
                                                                            <block type="logic_compare" id="43|7RBEH08AoepX,AkSq">
                                                                              <field name="OP">EQ</field>
                                                                              <value name="A">
                                                                                <block type="variables_get" id="{qmY@S`FE2]4E~3ec}52">
                                                                                  <field name="VAR" id="P#6vyNW5F+sI$Qrr0?h*">index</field>
                                                                                </block>
                                                                              </value>
                                                                              <value name="B">
                                                                                <block type="math_number" id="LRiZXf)MUC#Y+dRC_,)J">
                                                                                  <field name="NUM">2</field>
                                                                                </block>
                                                                              </value>
                                                                            </block>
                                                                          </value>
                                                                          <statement name="DO0">
                                                                            <block type="variables_set" id="rPqQ-`A{E#0y{7h@?lY^">
                                                                              <field name="VAR" id="vV)QwBgKYRse|Gs4[[fT">icon</field>
                                                                              <value name="VALUE">
                                                                                <block type="text" id="!q.lWsImqxu|0Pk*I;=t">
                                                                                  <field name="TEXT">weather-sunset-down</field>
                                                                                </block>
                                                                              </value>
                                                                            </block>
                                                                          </statement>
                                                                          <statement name="ELSE">
                                                                            <block type="variables_set" id="1m=87T*7*X$4a!U0{/_H">
                                                                              <field name="VAR" id="vV)QwBgKYRse|Gs4[[fT">icon</field>
                                                                              <value name="VALUE">
                                                                                <block type="text" id="36zG[DTfbdr}z02tRcKU">
                                                                                  <field name="TEXT">weather-sunset-up</field>
                                                                                </block>
                                                                              </value>
                                                                            </block>
                                                                          </statement>
                                                                          <next>
                                                                            <block type="control_ex" id="2OVi=tZ}O0b0jI/lRivB">
                                                                              <field name="TYPE">false</field>
                                                                              <field name="CLEAR_RUNNING">FALSE</field>
                                                                              <value name="OID">
                                                                                <shadow type="field_oid">
                                                                                  <field name="oid">Object ID</field>
                                                                                </shadow>
                                                                                <block type="text" id="/,dXm2wWk#mhaC+%[gM]">
                                                                                  <field name="TEXT">0_userdata.0.Sunevent.icon</field>
                                                                                </block>
                                                                              </value>
                                                                              <value name="VALUE">
                                                                                <shadow type="logic_boolean" id="0=re$F9YZu+U7R)7J--p">
                                                                                  <field name="BOOL">TRUE</field>
                                                                                </shadow>
                                                                                <block type="variables_get" id="uM|GIUVV|MHPcc35Tqdz">
                                                                                  <field name="VAR" id="vV)QwBgKYRse|Gs4[[fT">icon</field>
                                                                                </block>
                                                                              </value>
                                                                              <value name="DELAY_MS">
                                                                                <shadow type="math_number" id="|$7R_dM7IwX.2X8Mx^o7">
                                                                                  <field name="NUM">0</field>
                                                                                </shadow>
                                                                              </value>
                                                                            </block>
                                                                          </next>
                                                                        </block>
                                                                      </next>
                                                                    </block>
                                                                  </next>
                                                                </block>
                                                              </next>
                                                            </block>
                                                          </next>
                                                        </block>
                                                      </next>
                                                    </block>
                                                  </statement>
                                                </block>
                                              </next>
                                            </block>
                                          </next>
                                        </block>
                                      </next>
                                    </block>
                                  </next>
                                </block>
                              </next>
                            </block>
                          </next>
                        </block>
                      </xml>
                      

                      Für den Fall, dass jemand Interesse hat...

                      P Offline
                      P Offline
                      PaNoRu84
                      schrieb am zuletzt editiert von PaNoRu84
                      #2227

                      @armilar
                      Ich habe versucht sunrise und sunset zu nutzen, das Panel zeigt dann aber nichts an an der Stelle an.
                      Ich hatte die Vermutung, dass es am DatenFormat ZEIT liegt. Was soll z.B. Decimalstellen für Zeit bewirken.
                      Ich konnte aber nirgendwo finden, wie man einen anderen Datentyp außer Zahl einstellen kann.

                      Kannst du vielleicht eine Beispiel entity posten? 🙂

                      DANKE

                      1 Antwort Letzte Antwort
                      0
                      • ArmilarA Offline
                        ArmilarA Offline
                        Armilar
                        Most Active Forum Testing
                        schrieb am zuletzt editiert von
                        #2228

                        @panoru84

                        na klar 😉

                        Ich denke im Moment schon zu viel in der 4.0.0... da ist das Standard 😂

                        nachfolgend bis zum nächsten Release:

                        firstScreensaverEntity:   { ScreensaverEntity: 'accuweather.0.Daily.Day1.Sunrise',
                                                        ScreensaverEntityFactor: null,
                                                        ScreensaverEntityDecimalPlaces: null,
                                                        ScreensaverEntityIcon: 'weather-sunset-up', 
                                                        ScreensaverEntityText: 'Auf', 
                                                        ScreensaverEntityUnitText: '', 
                                                        ScreensaverEntityIconColor: MSYellow 
                                                      },
                            secondScreensaverEntity:   { ScreensaverEntity: 'accuweather.0.Daily.Day1.Sunset',
                                                        ScreensaverEntityFactor: null,
                                                        ScreensaverEntityDecimalPlaces: null,
                                                        ScreensaverEntityIcon: 'weather-sunset-down', 
                                                        ScreensaverEntityText: 'Unter', 
                                                        ScreensaverEntityUnitText: '', 
                                                        ScreensaverEntityIconColor: MSYellow 
                                                      },
                        

                        Damit war es tatsächlich nicht getan 😉

                        Die bitte auch noch austauschen:

                        function HandleScreensaverUpdate(): void {
                            try {
                                let arrayEntityType = [];
                                let arrayEntityIntNameEntity = [];
                                let arrayEntityIcon = [];
                                let arrayEntityIconColor = [];
                                let arrayEntityDisplayName = [];
                                let arrayEntityOptionalValue = [];
                        
                                //Create MainIcon
                                if (screensaverEnabled && config.weatherEntity != null && existsObject(config.weatherEntity)) {
                                    let icon = getState(config.weatherEntity + '.ICON').val;
                                    let temperature =
                                        existsState(config.weatherEntity + '.ACTUAL') ? getState(config.weatherEntity + '.ACTUAL').val :
                                            existsState(config.weatherEntity + '.TEMP') ? getState(config.weatherEntity + '.TEMP').val : 'null';
                                    let temperatureUnit = getState(NSPanel_Path + 'Config.temperatureUnit').val;
                                    arrayEntityOptionalValue[0] = temperature + ' ' + temperatureUnit;
                                    if (weatherAdapterInstance == 'daswetter.0.') {
                                        arrayEntityIcon [0] = Icons.GetIcon(GetDasWetterIcon(parseInt(icon)));
                                        arrayEntityIconColor[0] = GetDasWetterIconColor(parseInt(icon));
                                    } else if (weatherAdapterInstance == 'accuweather.0.') {
                                        arrayEntityIcon [0] = Icons.GetIcon(GetAccuWeatherIcon(parseInt(icon)));
                                        arrayEntityIconColor[0] = GetAccuWeatherIconColor(parseInt(icon));
                                    }
                        
                                    arrayEntityType[0] = '';
                                    arrayEntityIntNameEntity[0] = '';
                                    arrayEntityDisplayName[0] = '';
                                    arrayEntityOptionalValue[0] = temperature + ' ' + temperatureUnit;
                        
                                    if (weatherForecast) {
                                        // AccuWeather Forecast Tag 2 - Tag 5 -- Wenn weatherForecast = true
                                        for (let i = 2; i < 6; i++) {
                        
                                            let TempMin = 0;
                                            let TempMax = 0;
                                            let DayOfWeek = 0;
                                            let WeatherIcon = '0';
                        
                                            if (weatherAdapterInstance == 'daswetter.0.') {
                                                TempMin = getState('daswetter.0.NextDays.Location_1.Day_' + i + '.Minimale_Temperatur_value').val;
                                                TempMax = getState('daswetter.0.NextDays.Location_1.Day_' + i + '.Maximale_Temperatur_value').val;
                                                DayOfWeek = (getState('daswetter.0.NextDays.Location_1.Day_' + i + '.Tag_value').val).substring(0,2);
                                                WeatherIcon = GetDasWetterIcon(getState('daswetter.0.NextDays.Location_1.Day_' + i + '.Wetter_Symbol_id').val);
                                                vwIconColor[i-1] = GetDasWetterIconColor(getState('daswetter.0.NextDays.Location_1.Day_' + i + '.Wetter_Symbol_id').val);
                                            } else if (weatherAdapterInstance == 'accuweather.0.') {
                                                TempMin = getState('accuweather.0.Summary.TempMin_d' + i).val;
                                                TempMax = getState('accuweather.0.Summary.TempMax_d' + i).val;
                                                DayOfWeek = getState('accuweather.0.Summary.DayOfWeek_d' + i).val;
                                                WeatherIcon = GetAccuWeatherIcon(getState('accuweather.0.Summary.WeatherIcon_d' + i).val);
                                                vwIconColor[i-1] = GetAccuWeatherIconColor(getState('accuweather.0.Summary.WeatherIcon_d' + i).val);
                                            } 
                                            let tempMinMaxString: string = '';
                                            if (weatherScreensaverTempMinMax == 'Min') {
                                                tempMinMaxString = TempMin + temperatureUnit;
                                            } else if (weatherScreensaverTempMinMax == 'Max') {
                                                tempMinMaxString = TempMax + temperatureUnit;
                                            } else if (weatherScreensaverTempMinMax == 'MinMax') {
                                                tempMinMaxString = Math.round(TempMin) + '° ' + Math.round(TempMax) + '°';
                                            }
                                            arrayEntityType[i-1] = ''; 
                                            arrayEntityIntNameEntity[i-1] = '';
                                            arrayEntityIcon[i-1] = Icons.GetIcon(WeatherIcon);
                                            arrayEntityIconColor[i-1] = vwIconColor[i-1];
                                            arrayEntityDisplayName[i-1] = DayOfWeek;
                                            arrayEntityOptionalValue[i-1] = tempMinMaxString;
                                        }
                                    } else {
                                        arrayEntityType[1] = '';
                                        arrayEntityType[2] = '';
                                        arrayEntityType[3] = '';
                                        arrayEntityType[4] = ''; 
                                        arrayEntityIntNameEntity[1] = '';
                                        arrayEntityIntNameEntity[2] = '';
                                        arrayEntityIntNameEntity[3] = '';
                                        arrayEntityIntNameEntity[4] = '';
                                        if (typeof getState(config.firstScreensaverEntity.ScreensaverEntity).val == 'string') {
                                            if (!isNaN(Date.parse(getState(config.firstScreensaverEntity.ScreensaverEntity).val))) {
                                                arrayEntityOptionalValue[1] = formatDate(getDateObject(getState(config.firstScreensaverEntity.ScreensaverEntity).val), 'hh:mm');
                                            } else {
                                                arrayEntityOptionalValue[1] = getState(config.firstScreensaverEntity.ScreensaverEntity).val;
                                            }                
                                        } else {
                                            arrayEntityOptionalValue[1] = (getState(config.firstScreensaverEntity.ScreensaverEntity).val * config.firstScreensaverEntity.ScreensaverEntityFactor).toFixed(config.firstScreensaverEntity.ScreensaverEntityDecimalPlaces) + config.firstScreensaverEntity.ScreensaverEntityUnitText;
                                        }
                                        if (typeof getState(config.secondScreensaverEntity.ScreensaverEntity).val == 'string') {
                                            if (!isNaN(Date.parse(getState(config.secondScreensaverEntity.ScreensaverEntity).val))) {
                                                arrayEntityOptionalValue[2] = formatDate(getDateObject(getState(config.secondScreensaverEntity.ScreensaverEntity).val), 'hh:mm');
                                            } else {
                                                arrayEntityOptionalValue[2] = getState(config.secondScreensaverEntity.ScreensaverEntity).val;
                                            }                
                                        } else {
                                            arrayEntityOptionalValue[2] = (getState(config.secondScreensaverEntity.ScreensaverEntity).val * config.secondScreensaverEntity.ScreensaverEntityFactor).toFixed(config.secondScreensaverEntity.ScreensaverEntityDecimalPlaces) + config.secondScreensaverEntity.ScreensaverEntityUnitText;
                                        }
                                        if (typeof getState(config.thirdScreensaverEntity.ScreensaverEntity).val == 'string') {
                                            if (!isNaN(Date.parse(getState(config.thirdScreensaverEntity.ScreensaverEntity).val))) {
                                                arrayEntityOptionalValue[3] = formatDate(getDateObject(getState(config.thirdScreensaverEntity.ScreensaverEntity).val), 'hh:mm');
                                            } else {
                                                arrayEntityOptionalValue[3] = getState(config.thirdScreensaverEntity.ScreensaverEntity).val;
                                            }                
                                        } else {
                                            arrayEntityOptionalValue[3] = (getState(config.thirdScreensaverEntity.ScreensaverEntity).val * config.thirdScreensaverEntity.ScreensaverEntityFactor).toFixed(config.thirdScreensaverEntity.ScreensaverEntityDecimalPlaces) + config.thirdScreensaverEntity.ScreensaverEntityUnitText;
                                        }
                                        if (typeof getState(config.fourthScreensaverEntity.ScreensaverEntity).val == 'string') {
                                            if (!isNaN(Date.parse(getState(config.fourthScreensaverEntity.ScreensaverEntity).val))) {
                                                arrayEntityOptionalValue[4] = formatDate(getDateObject(getState(config.fourthScreensaverEntity.ScreensaverEntity).val), 'hh:mm');
                                            } else {
                                                arrayEntityOptionalValue[4] = getState(config.fourthScreensaverEntity.ScreensaverEntity).val;
                                            }                
                                        } else {
                                            arrayEntityOptionalValue[4] = (getState(config.fourthScreensaverEntity.ScreensaverEntity).val * config.fourthScreensaverEntity.ScreensaverEntityFactor).toFixed(config.fourthScreensaverEntity.ScreensaverEntityDecimalPlaces) + config.fourthScreensaverEntity.ScreensaverEntityUnitText;
                                        }
                                        arrayEntityIcon[1] = Icons.GetIcon(config.firstScreensaverEntity.ScreensaverEntityIcon);
                                        arrayEntityIcon[2] = Icons.GetIcon(config.secondScreensaverEntity.ScreensaverEntityIcon);
                                        arrayEntityIcon[3] = Icons.GetIcon(config.thirdScreensaverEntity.ScreensaverEntityIcon);
                                        arrayEntityIcon[4] = Icons.GetIcon(config.fourthScreensaverEntity.ScreensaverEntityIcon);
                                        arrayEntityDisplayName[1] = config.firstScreensaverEntity.ScreensaverEntityText;
                                        arrayEntityDisplayName[2] = config.secondScreensaverEntity.ScreensaverEntityText;
                                        arrayEntityDisplayName[3] = config.thirdScreensaverEntity.ScreensaverEntityText;
                                        arrayEntityDisplayName[4] = config.fourthScreensaverEntity.ScreensaverEntityText;
                                        GetScreenSaverEntityColor(config.firstScreensaverEntity, 1, sctF1Icon);
                                        arrayEntityIconColor[1] = vwIconColor[1];
                                        GetScreenSaverEntityColor(config.secondScreensaverEntity, 2, sctF2Icon);
                                        arrayEntityIconColor[2] = vwIconColor[2];
                                        GetScreenSaverEntityColor(config.thirdScreensaverEntity, 3, sctF3Icon);
                                        arrayEntityIconColor[3] = vwIconColor[3];
                                        GetScreenSaverEntityColor(config.fourthScreensaverEntity, 4, sctF4Icon);    
                                        arrayEntityIconColor[4] = vwIconColor[4];
                                    }
                        
                                    //AltLayout
                                    if (getState(NSPanel_Path + 'Config.Screensaver.alternativeScreensaverLayout').val) {           
                                        arrayEntityType[5] = ''; 
                                        arrayEntityIntNameEntity[5] = '';
                                        arrayEntityIcon[5] = Icons.GetIcon(config.fourthScreensaverEntity.ScreensaverEntityIcon);
                                        arrayEntityIconColor[5] = rgb_dec565(White);
                                        arrayEntityDisplayName[5] = '';
                                        arrayEntityOptionalValue[5] = getState(config.fourthScreensaverEntity.ScreensaverEntity).val + ' ' + config.fourthScreensaverEntity.ScreensaverEntityUnitText ;
                                    }
                        
                                    HandleScreensaverColors();
                        
                                    let payloadString = '';
                                    let max_index = 5;
                                    if (getState(NSPanel_Path + 'Config.Screensaver.alternativeScreensaverLayout').val) {
                                        max_index = 6;
                                    }
                                    
                                    for (let j = 0; j < max_index; j++) {
                                        payloadString +=    arrayEntityType[j] + '~' +
                                                            arrayEntityIntNameEntity[j] + '~' +
                                                            arrayEntityIcon[j] + '~' +
                                                            arrayEntityIconColor[j] + '~' +
                                                            arrayEntityDisplayName[j] + '~' +
                                                            arrayEntityOptionalValue[j] + '~';
                                    }
                        
                                    if (Debug) console.log('weatherUpdate~' + payloadString);
                        
                                    SendToPanel(<Payload>{ payload: 'weatherUpdate~' + payloadString });
                        
                                    HandleScreensaverStatusIcons();
                        
                                }
                            } catch (err) {
                                console.log('HandleScreensaverUpdate: ' + err.message);
                            }
                        }
                        

                        Habe noch kurzfristig eine Änderung gemacht (muss dann wohl 2 Wochen noch halten). Aber erst anfixen und dann nicht liefern geht irgendwie auch nicht 😉 )

                        Installationsanleitung, Tipps, Alias-Definitionen, FAQ für das Sonoff NSPanel mit lovelace UI unter ioBroker
                        https://github.com/joBr99/nspanel-lovelace-ui/wiki

                        Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                        1 Antwort Letzte Antwort
                        0
                        • D DaPeace

                          @armilar wie läuft denn das mit dem ICON beim daswetter-adapter? Ich hab hier nur eine ICON-Url als DP oder übersehe ich was? Hab bisher den accuweather verwendet aber das mit der API hat nicht zuverlässig funktioniert. Jetzt habe ich auf dem Display einne großen Kreis mit Ausrufezeichen was sicher nicht ok ist 😕

                          ArmilarA Offline
                          ArmilarA Offline
                          Armilar
                          Most Active Forum Testing
                          schrieb am zuletzt editiert von Armilar
                          #2229

                          @DaPeace

                          gleiches Thema, nur die Datenpunkte austauschen...

                          ist in der 4.0.0 bereits mit automatischem Wechsel auf das nächste Event enthalten
                          2ee0d64e-0c35-498b-97d2-fbc57fae7066-image.png

                          Installationsanleitung, Tipps, Alias-Definitionen, FAQ für das Sonoff NSPanel mit lovelace UI unter ioBroker
                          https://github.com/joBr99/nspanel-lovelace-ui/wiki

                          Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                          D 1 Antwort Letzte Antwort
                          1
                          • ArmilarA Armilar

                            @DaPeace

                            gleiches Thema, nur die Datenpunkte austauschen...

                            ist in der 4.0.0 bereits mit automatischem Wechsel auf das nächste Event enthalten
                            2ee0d64e-0c35-498b-97d2-fbc57fae7066-image.png

                            D Offline
                            D Offline
                            DaPeace
                            schrieb am zuletzt editiert von
                            #2230

                            @armilar Das hab ich jetzt bei der 3.9 gemacht und hab eben den Kreis mit Ausrufezeichen als großes Icon.

                            Folgende Anpassnung:
                            const weatherAdapterInstance: string = 'daswetter.0.';
                            weatherEntity: 'alias.0.Wetter', // Dieser Alias wird automatisch für den gewählten Wetter erstellt und kann entsprechend angepasst werden

                            und entsprechend bei dem Alias die Punkte neu gesetzt und zwar so:
                            Bild 14.02.23 um 20.21.jpeg

                            ArmilarA 1 Antwort Letzte Antwort
                            0
                            • D DaPeace

                              @armilar Das hab ich jetzt bei der 3.9 gemacht und hab eben den Kreis mit Ausrufezeichen als großes Icon.

                              Folgende Anpassnung:
                              const weatherAdapterInstance: string = 'daswetter.0.';
                              weatherEntity: 'alias.0.Wetter', // Dieser Alias wird automatisch für den gewählten Wetter erstellt und kann entsprechend angepasst werden

                              und entsprechend bei dem Alias die Punkte neu gesetzt und zwar so:
                              Bild 14.02.23 um 20.21.jpeg

                              ArmilarA Offline
                              ArmilarA Offline
                              Armilar
                              Most Active Forum Testing
                              schrieb am zuletzt editiert von Armilar
                              #2231

                              @dapeace

                              Alles richtig soweit. Mit der iconURL kann Skript aber nichts anfangen. Muss der numerische Wert sein...

                              fde15938-225a-440e-be7b-63ba8f2ff308-image.png

                              6a5dac9c-bc9b-41cf-b610-88474dbcab24-image.png

                              Den Rest brauchst du für das Panel nicht füllen, es sei denn du nutzt es auch in anderen Datenpunkten oder anderen Skripten

                              Installationsanleitung, Tipps, Alias-Definitionen, FAQ für das Sonoff NSPanel mit lovelace UI unter ioBroker
                              https://github.com/joBr99/nspanel-lovelace-ui/wiki

                              Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                              1 Antwort Letzte Antwort
                              0
                              • ArmilarA Armilar

                                @tom_w

                                Kommt auf die Version an. Es gab Situationen, in denen das Updaten der 4 Icons und der Außentemperatur angehalten wurde, wenn nur einmal auf den Screensaver geklickt wurde.

                                Sollte aber mit dem bExit-Hotfix ab der v3.9.0.2 behoben sein

                                T Offline
                                T Offline
                                Tom_W
                                schrieb am zuletzt editiert von
                                #2232

                                @armilar
                                Wurde es eigentlich mal geändert mit dem Wetter Alias? Habe gerade festgestellt dass ich zwei Aliase habe, einen in Alias Ordner vom NS Panel (den erinnere ich mich selbst erstellt zu haben) und einen direkt alias.0.wetter.
                                Ich vermute das war mein Problem. Irgendwie ging an mir vorüber dass er da einen automatisch macht.

                                Gruß

                                1 Antwort Letzte Antwort
                                0
                                • ArmilarA Offline
                                  ArmilarA Offline
                                  Armilar
                                  Most Active Forum Testing
                                  schrieb am zuletzt editiert von
                                  #2233

                                  @tom_w

                                  Ja, wird vieles mittlerweile automatisch erstellt 😉

                                  Ansonsten einfach den anderen in der Config eintragen...

                                  Installationsanleitung, Tipps, Alias-Definitionen, FAQ für das Sonoff NSPanel mit lovelace UI unter ioBroker
                                  https://github.com/joBr99/nspanel-lovelace-ui/wiki

                                  Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                                  1 Antwort Letzte Antwort
                                  0
                                  • V Vocaris

                                    @elluminatus sagte in SONOFF NSPanel mit Lovelace UI:

                                    Hallo und guten Abend, ich bin seit drei Tagen stolzer Besitzer eines NSPanels und habe es aufgrund des tollen Video und des super Wikis geschafft das Panel mit dem Screensaver aufzusetzen, bisher allerdings noch ohne Seiten.

                                    Nun möchte ich gerne schauen, wie ich das NSPanel bei mir einsetzen kann. Als erste Seite möchte ich gerne die Thermostat Seite erstellen.

                                    Hier zu meiner Frage, kann man das NSPanel anstelle eines Thermostaten im Haus einsetzen, es würde ja hervorragend an den höheren Platz über den normalen Schaltern an die Wand passen? Und wenn ja wie definiere ich dann einen Thermostat Alias? Hier stehe ich gerade irgendwie auf dem Schlauch. Ich möchte das Panel gerne zusammen mit einer Homematic IP Fussbodenheizung mit motorischen Ventilen (beides noch nicht vorhanden) und Adapter heatingcontrol einsetzen . Welches Gerät muss ich bspw. beim Alias unter Set einsetzen?

                                    Falls ich hier die Frage am falschen Ort im Forum gestellt habe bitte ich dies zu entshuldigen.
                                    Danke für Eure Hinweise.

                                    Gruß Elluminatus

                                    Hallo @Elluminatus ,
                                    also ich habe bei mir auch HM Themostate im Hause. Dieses sind per CCU mit dem zuständigen HKV verbunden und steuert dort dann die Motoren.
                                    Du kannst jedes Themostat auch in das NS Panel einbinden..ABER... es ersetzt dir nicht das physische HM Thermostat. Das wird du benötigen.

                                    1. der Thermo. soll ja die jeweilige Raumthemperatur messen und entsprechend agieren. Wenn du alle Stellmotoren mit der Refrenzthemperatur des Raums schaltes in dem das NSP ist wäre dir nicht geholfen.
                                    2. du brauchst ja zum Erstellen eines Alias für das NSP ein "Gerät". Dafür musst du jedes HM Thermostat in den ioB bringen. In dem Fall via des HM Adapters.
                                      Wenn wir die Basis haben, dann kannst du folgendes machen:
                                    3. Grid für dein NSP. Bei mir ist es eine Subpage der Hauspteiste Buero
                                    //Subpage 1 von Buero
                                    var Buero_Thermostat: PageThermo = 
                                    {
                                        "type": "cardThermo",
                                        "heading": "Thermostat Büro",
                                        "useColor": true,
                                        "subPage": true,
                                        "parent": Buero,
                                        "items": [
                                            <PageItem>{ id: "alias.0.NS-Panel.Buero.Thermostat", minValue: 100, maxValue: 300 }]
                                    };
                                    

                                    Wenn es bei dir eine Hauptseite sein soll, dann bei subpage: false eingeben und bei parent: undefined
                                    Den Alias muss du natürlich ersetzen.
                                    Zum Alias:
                                    Du erstellst dir einen Alias mit der Auswahl Thermostat.
                                    Für die einzelnen Punkte verzweigst du dann zum entsprechenden Thermostat in deinem HM RPC Adapter.
                                    86831682-743f-4528-97c5-becbc6185df8-image.png
                                    Hier mal ein kl. Einblick, wie ein Thermostat im HM RPC Adapter angezeigt wird.
                                    7ea8731c-7cc1-4a25-822f-60a2c3b7efa2-image.png
                                    So kannst du dir dann von jedem Thermo. die Daten im NSP anzeigen lassen und ggf. abändern.
                                    Aber um das zu realisieren benötigst du erst einmal die HM Hardware sowie dessen Einbindung via RPC Adapter in den ioB. Ergo braucht du eine CCU oder eine Raspberrymatic. Letzteres setze ich ein. Die HM Geräte können ja auch ohne CCU miteinander kommunizieren (Direktverbindung). Aber dann kannst du sie nicht via ioB ansprechen.
                                    Ich hoffe ich konnte dir insoweit helfen.

                                    M Offline
                                    M Offline
                                    Mercyful 0
                                    schrieb am zuletzt editiert von Mercyful 0
                                    #2234

                                    @vocaris said in SONOFF NSPanel mit Lovelace UI:

                                    //Subpage 1 von Buero
                                    var Buero_Thermostat: PageThermo =
                                    {
                                    "type": "cardThermo",
                                    "heading": "Thermostat Büro",
                                    "useColor": true,
                                    "subPage": true,
                                    "parent": Buero,
                                    "items": [
                                    <PageItem>{ id: "alias.0.NS-Panel.Buero.Thermostat", minValue: 100, maxValue: 300 }]
                                    };

                                    Wenn es bei dir eine Hauptseite sein soll, dann bei subpage: false eingeben und bei parent: undefined
                                    Den Alias muss du natürlich ersetzen.

                                    So kannst du dir dann von jedem Thermo. die Daten im NSP anzeigen lassen und ggf. abändern.
                                    Aber um das zu realisieren benötigst du erst einmal die HM Hardware sowie dessen Einbindung via RPC Adapter in den ioB. Ergo braucht du eine CCU oder eine Raspberrymatic. Letzteres setze ich ein. Die HM Geräte können ja auch ohne CCU miteinander kommunizieren (Direktverbindung). Aber dann kannst du sie nicht via ioB ansprechen.
                                    Ich hoffe ich konnte dir insoweit helfen.

                                    Ich möchte da gern mal einsteigen und auch eine Frage stellen:
                                    Ich habe vor das NSP für die Fußbodenheizung zu nutzen. Es sind normale Stellmotoren verbaut die NC (normal closed) sind. Diese werden zur Zeit über die einfachen Thermostaten geregelt.
                                    Nun möchte ich gern dass der linke Taster die Heizung aus oder ein schaltet und auf dem Display möchte ich gern
                                    einen Regler haben (so ähnlich wie im Auslieferungszustand des NSP) der entsprechend der Temperatur den Stellmotor öffnet oder schließt. Der rechte Taster soll einfach nur stumpf das Licht aus- oder einschalten.
                                    Ich sehe den Vorteil darin, dass ich diese Kombi aus Lichtschalter unten und Heizungsthermostaten oben aus der Schalter Serie entfernen kann und dafür das NSP nutze.
                                    Wie stelle ich das am Besten an? Die Seite für Thermo habe ich erstellt, aber das sieht so erstmal schlicht aus und die
                                    Logik dahinter (Speichern der Temperatur und ab wann der Stellmotor geöffnet oder geschlossen werden soll) ist mir im Moment auch noch fern. Hat das schon mal jemand gemacht?
                                    Danke und Gruß
                                    Mercy

                                    1 Antwort Letzte Antwort
                                    0
                                    • ArmilarA Offline
                                      ArmilarA Offline
                                      Armilar
                                      Most Active Forum Testing
                                      schrieb am zuletzt editiert von
                                      #2235

                                      @mercyful-0 sagte in SONOFF NSPanel mit Lovelace UI:

                                      Ich möchte da gern mal einsteigen und auch eine Frage stellen:
                                      Ich habe vor das NSP für die Fußbodenheizung zu nutzen. Es sind normale Stellmotoren verbaut die NC (normal closed) sind. Diese werden zur Zeit über die einfachen Thermostaten geregelt.
                                      Nun möchte ich gern dass der linke Taster die Heizung aus oder ein schaltet und auf dem Display möchte ich gern
                                      einen Regler haben (so ähnlich wie im Auslieferungszustand des NSP) der entsprechend der Temperatur den Stellmotor öffnet oder schließt. Der rechte Taster soll einfach nur stumpf das Licht aus- oder einschalten.
                                      Ich sehe den Vorteil darin, dass ich diese Kombi aus Lichtschalter unten und Heizungsthermostaten oben aus der Schalter Serie entfernen kann und dafür das NSP nutze.
                                      Wie stelle ich das am Besten an? Die Seite für Thermo habe ich erstellt, aber das sieht so erstmal schlicht aus und die
                                      Logik dahinter (Speichern der Temperatur und ab wann der Stellmotor geöffnet oder geschlossen werden soll) ist mir im Moment auch noch fern. Hat das schon mal jemand gemacht?
                                      Danke und Gruß
                                      Mercy

                                      Zunächst einmal ist die Thermostatseite eine Backendseite, die mit Datenpunkten des ioBroker über ALIASE verbunden ist. Sie visualisiert Zustände (z.B. die Raumtemperatur) und schaltet Zustände (wie z.B. die SetPoint-Temperatur). Das NSPanel hat hierbei keine Logik, außer die eingestellten Zustände an den ioBroker zu übermitteln.

                                      Wenn "irgendeine Logik" jetzt ein Relais schalten soll, so muss die Werteverarbeitung in einem externen Bklockly, JavaScript oder TypeScript erfolgen.

                                      Beispiel: Du stellst die Setpoint-Temperatur (Zieltemperatur) im Panel ein. Anhand der Raumtemperatur (gemessen am Panel NTC oder irgendeinem anderen Raumthermometer) errechnest du, die Temperatur und schaltest ein Relay des NSPanel oder irgendeinen anderen Datenpunkt im ioBroker

                                      So ganz habe ich dein Anliegen aber noch nicht verstanden... Du möchtest mit dem linken Button die Heizung an/aus schalten? Soll denn das Relais zum Button genutzt werden, oder wird der Button entkoppelt mit einem Datenpunkt genutzt?

                                      Wie sehen die Datenpunkte aus, die die Stellmotoren steuern sollen?

                                      und auf dem Display möchte ich gern
                                      einen Regler haben (so ähnlich wie im Auslieferungszustand des NSP) der entsprechend der Temperatur den Stellmotor öffnet oder schließt.

                                      Es stehen nur die aktuell beschriebenen Steuerelemente der cardThermo zur Verfügung. Keine Kreise oder sonstige optische Features aus dem Original-Panel.

                                      Installationsanleitung, Tipps, Alias-Definitionen, FAQ für das Sonoff NSPanel mit lovelace UI unter ioBroker
                                      https://github.com/joBr99/nspanel-lovelace-ui/wiki

                                      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                                      M 1 Antwort Letzte Antwort
                                      0
                                      • ArmilarA Armilar

                                        @mercyful-0 sagte in SONOFF NSPanel mit Lovelace UI:

                                        Ich möchte da gern mal einsteigen und auch eine Frage stellen:
                                        Ich habe vor das NSP für die Fußbodenheizung zu nutzen. Es sind normale Stellmotoren verbaut die NC (normal closed) sind. Diese werden zur Zeit über die einfachen Thermostaten geregelt.
                                        Nun möchte ich gern dass der linke Taster die Heizung aus oder ein schaltet und auf dem Display möchte ich gern
                                        einen Regler haben (so ähnlich wie im Auslieferungszustand des NSP) der entsprechend der Temperatur den Stellmotor öffnet oder schließt. Der rechte Taster soll einfach nur stumpf das Licht aus- oder einschalten.
                                        Ich sehe den Vorteil darin, dass ich diese Kombi aus Lichtschalter unten und Heizungsthermostaten oben aus der Schalter Serie entfernen kann und dafür das NSP nutze.
                                        Wie stelle ich das am Besten an? Die Seite für Thermo habe ich erstellt, aber das sieht so erstmal schlicht aus und die
                                        Logik dahinter (Speichern der Temperatur und ab wann der Stellmotor geöffnet oder geschlossen werden soll) ist mir im Moment auch noch fern. Hat das schon mal jemand gemacht?
                                        Danke und Gruß
                                        Mercy

                                        Zunächst einmal ist die Thermostatseite eine Backendseite, die mit Datenpunkten des ioBroker über ALIASE verbunden ist. Sie visualisiert Zustände (z.B. die Raumtemperatur) und schaltet Zustände (wie z.B. die SetPoint-Temperatur). Das NSPanel hat hierbei keine Logik, außer die eingestellten Zustände an den ioBroker zu übermitteln.

                                        Wenn "irgendeine Logik" jetzt ein Relais schalten soll, so muss die Werteverarbeitung in einem externen Bklockly, JavaScript oder TypeScript erfolgen.

                                        Beispiel: Du stellst die Setpoint-Temperatur (Zieltemperatur) im Panel ein. Anhand der Raumtemperatur (gemessen am Panel NTC oder irgendeinem anderen Raumthermometer) errechnest du, die Temperatur und schaltest ein Relay des NSPanel oder irgendeinen anderen Datenpunkt im ioBroker

                                        So ganz habe ich dein Anliegen aber noch nicht verstanden... Du möchtest mit dem linken Button die Heizung an/aus schalten? Soll denn das Relais zum Button genutzt werden, oder wird der Button entkoppelt mit einem Datenpunkt genutzt?

                                        Wie sehen die Datenpunkte aus, die die Stellmotoren steuern sollen?

                                        und auf dem Display möchte ich gern
                                        einen Regler haben (so ähnlich wie im Auslieferungszustand des NSP) der entsprechend der Temperatur den Stellmotor öffnet oder schließt.

                                        Es stehen nur die aktuell beschriebenen Steuerelemente der cardThermo zur Verfügung. Keine Kreise oder sonstige optische Features aus dem Original-Panel.

                                        M Offline
                                        M Offline
                                        Mercyful 0
                                        schrieb am zuletzt editiert von Mercyful 0
                                        #2236

                                        @armilar said in SONOFF NSPanel mit Lovelace UI:

                                        @mercyful-0 sagte in SONOFF NSPanel mit Lovelace UI:

                                        Ich möchte da gern mal einsteigen und auch eine Frage stellen:
                                        Ich habe vor das NSP für die Fußbodenheizung zu nutzen. Es sind normale Stellmotoren verbaut die NC (normal closed) sind. Diese werden zur Zeit über die einfachen Thermostaten geregelt.
                                        Nun möchte ich gern dass der linke Taster die Heizung aus oder ein schaltet und auf dem Display möchte ich gern
                                        einen Regler haben (so ähnlich wie im Auslieferungszustand des NSP) der entsprechend der Temperatur den Stellmotor öffnet oder schließt. Der rechte Taster soll einfach nur stumpf das Licht aus- oder einschalten.
                                        Ich sehe den Vorteil darin, dass ich diese Kombi aus Lichtschalter unten und Heizungsthermostaten oben aus der Schalter Serie entfernen kann und dafür das NSP nutze.
                                        Wie stelle ich das am Besten an? Die Seite für Thermo habe ich erstellt, aber das sieht so erstmal schlicht aus und die
                                        Logik dahinter (Speichern der Temperatur und ab wann der Stellmotor geöffnet oder geschlossen werden soll) ist mir im Moment auch noch fern. Hat das schon mal jemand gemacht?
                                        Danke und Gruß
                                        Mercy

                                        Zunächst einmal ist die Thermostatseite eine Backendseite, die mit Datenpunkten des ioBroker über ALIASE verbunden ist. Sie visualisiert Zustände (z.B. die Raumtemperatur) und schaltet Zustände (wie z.B. die SetPoint-Temperatur). Das NSPanel hat hierbei keine Logik, außer die eingestellten Zustände an den ioBroker zu übermitteln.

                                        Wenn "irgendeine Logik" jetzt ein Relais schalten soll, so muss die Werteverarbeitung in einem externen Bklockly, JavaScript oder TypeScript erfolgen.

                                        Beispiel: Du stellst die Setpoint-Temperatur (Zieltemperatur) im Panel ein. Anhand der Raumtemperatur (gemessen am Panel NTC oder irgendeinem anderen Raumthermometer) errechnest du, die Temperatur und schaltest ein Relay des NSPanel oder irgendeinen anderen Datenpunkt im ioBroker

                                        So ganz habe ich dein Anliegen aber noch nicht verstanden... Du möchtest mit dem linken Button die Heizung an/aus schalten? Soll denn das Relais zum Button genutzt werden, oder wird der Button entkoppelt mit einem Datenpunkt genutzt?

                                        Wie sehen die Datenpunkte aus, die die Stellmotoren steuern sollen?

                                        und auf dem Display möchte ich gern
                                        einen Regler haben (so ähnlich wie im Auslieferungszustand des NSP) der entsprechend der Temperatur den Stellmotor öffnet oder schließt.

                                        Es stehen nur die aktuell beschriebenen Steuerelemente der cardThermo zur Verfügung. Keine Kreise oder sonstige optische Features aus dem Original-Panel.

                                        Hallo Armilar!
                                        Vielen Dank für deine Ausführungen. Ich werde mal versuchen zu erklären was ich möchte.


                                        Lichtschalter.jpg

                                        Ich habe mal ein Foto der verbauten Einheiten angehängt.
                                        Dort ist unter 1 ein Schalter der die Fußbodenheizung aus- oder einschaltet. Diese Funktion soll der linke Taster auf dem NSP übernehmen. Ich gehe davon aus dass ich diesen nur mit dem Stellmotor verbinden muss. Die 2 soll auf dem NSP abgebildet werden , sprich ich stelle eine Temperatur ein und der interne Fühler soll das Relais schalten an dem der Stellmotor dran hängt. Als Goodie würde ich den rechten Taster auf dem NSP für den Lichtschalter nutzen wollen.
                                        Auch da gehe ich davon aus diese nur an das NSP anzuschliessen.
                                        Die Stellmotoren sind strunzen doof, die bekommen Strom und öffnen den Heizkreislauf, nimmst man Strom weg, gehen die zu.
                                        Daher ist für mich die Frage ob das so realisierbar ist.
                                        Klar ist es nett wenn ich die Datenpunkte im ioBroker auswerten und in eine Automatisierung machen kann, aber das ist Stand jetzt nicht geplant.
                                        Ich hoffe das mein Anliegen klarer ist.
                                        Liebe Grüße
                                        Mercy

                                        ArmilarA 1 Antwort Letzte Antwort
                                        0
                                        • M Mercyful 0

                                          @armilar said in SONOFF NSPanel mit Lovelace UI:

                                          @mercyful-0 sagte in SONOFF NSPanel mit Lovelace UI:

                                          Ich möchte da gern mal einsteigen und auch eine Frage stellen:
                                          Ich habe vor das NSP für die Fußbodenheizung zu nutzen. Es sind normale Stellmotoren verbaut die NC (normal closed) sind. Diese werden zur Zeit über die einfachen Thermostaten geregelt.
                                          Nun möchte ich gern dass der linke Taster die Heizung aus oder ein schaltet und auf dem Display möchte ich gern
                                          einen Regler haben (so ähnlich wie im Auslieferungszustand des NSP) der entsprechend der Temperatur den Stellmotor öffnet oder schließt. Der rechte Taster soll einfach nur stumpf das Licht aus- oder einschalten.
                                          Ich sehe den Vorteil darin, dass ich diese Kombi aus Lichtschalter unten und Heizungsthermostaten oben aus der Schalter Serie entfernen kann und dafür das NSP nutze.
                                          Wie stelle ich das am Besten an? Die Seite für Thermo habe ich erstellt, aber das sieht so erstmal schlicht aus und die
                                          Logik dahinter (Speichern der Temperatur und ab wann der Stellmotor geöffnet oder geschlossen werden soll) ist mir im Moment auch noch fern. Hat das schon mal jemand gemacht?
                                          Danke und Gruß
                                          Mercy

                                          Zunächst einmal ist die Thermostatseite eine Backendseite, die mit Datenpunkten des ioBroker über ALIASE verbunden ist. Sie visualisiert Zustände (z.B. die Raumtemperatur) und schaltet Zustände (wie z.B. die SetPoint-Temperatur). Das NSPanel hat hierbei keine Logik, außer die eingestellten Zustände an den ioBroker zu übermitteln.

                                          Wenn "irgendeine Logik" jetzt ein Relais schalten soll, so muss die Werteverarbeitung in einem externen Bklockly, JavaScript oder TypeScript erfolgen.

                                          Beispiel: Du stellst die Setpoint-Temperatur (Zieltemperatur) im Panel ein. Anhand der Raumtemperatur (gemessen am Panel NTC oder irgendeinem anderen Raumthermometer) errechnest du, die Temperatur und schaltest ein Relay des NSPanel oder irgendeinen anderen Datenpunkt im ioBroker

                                          So ganz habe ich dein Anliegen aber noch nicht verstanden... Du möchtest mit dem linken Button die Heizung an/aus schalten? Soll denn das Relais zum Button genutzt werden, oder wird der Button entkoppelt mit einem Datenpunkt genutzt?

                                          Wie sehen die Datenpunkte aus, die die Stellmotoren steuern sollen?

                                          und auf dem Display möchte ich gern
                                          einen Regler haben (so ähnlich wie im Auslieferungszustand des NSP) der entsprechend der Temperatur den Stellmotor öffnet oder schließt.

                                          Es stehen nur die aktuell beschriebenen Steuerelemente der cardThermo zur Verfügung. Keine Kreise oder sonstige optische Features aus dem Original-Panel.

                                          Hallo Armilar!
                                          Vielen Dank für deine Ausführungen. Ich werde mal versuchen zu erklären was ich möchte.


                                          Lichtschalter.jpg

                                          Ich habe mal ein Foto der verbauten Einheiten angehängt.
                                          Dort ist unter 1 ein Schalter der die Fußbodenheizung aus- oder einschaltet. Diese Funktion soll der linke Taster auf dem NSP übernehmen. Ich gehe davon aus dass ich diesen nur mit dem Stellmotor verbinden muss. Die 2 soll auf dem NSP abgebildet werden , sprich ich stelle eine Temperatur ein und der interne Fühler soll das Relais schalten an dem der Stellmotor dran hängt. Als Goodie würde ich den rechten Taster auf dem NSP für den Lichtschalter nutzen wollen.
                                          Auch da gehe ich davon aus diese nur an das NSP anzuschliessen.
                                          Die Stellmotoren sind strunzen doof, die bekommen Strom und öffnen den Heizkreislauf, nimmst man Strom weg, gehen die zu.
                                          Daher ist für mich die Frage ob das so realisierbar ist.
                                          Klar ist es nett wenn ich die Datenpunkte im ioBroker auswerten und in eine Automatisierung machen kann, aber das ist Stand jetzt nicht geplant.
                                          Ich hoffe das mein Anliegen klarer ist.
                                          Liebe Grüße
                                          Mercy

                                          ArmilarA Offline
                                          ArmilarA Offline
                                          Armilar
                                          Most Active Forum Testing
                                          schrieb am zuletzt editiert von Armilar
                                          #2237

                                          @mercyful-0

                                          Sehr viel klarer

                                          Fasse mal zusammen:

                                          • Stellmotoren werden über 230V versorgt und könnten an einen der 230V Ausgänge des NSPanel angeschlossen werden
                                          • Heizungs(an/aus)schalter kann sowohl die physische linke Taste übernehmen, als auch in der cardThermo ein On/Off Button. Oder beides.
                                          • Licht kann natürlich auf die rechte Taste (somit über das rechte Relais). Alternativ aber auch entkoppelt zu einem Datenpunkt.

                                          Bis hier kein Problem. Das Original Panel wird temperaturseitig in der Cloud gesteuert. D.h. es hat eine Logik, die die Temperatur des internen Fühlers nach China sendet. Ebenfalls wird über den Kreis deine Solltemperatur (Setpoint) nach China gesendet. Wenn jetzt die Raum-Temperatur mit einem Offset überschritten wird, dann sitzt bei Sonoff ein Chinese, macht den den Schalter aus (wird aber wohl eine Cloud-Funktion sein 😉 ) und sendet die Daten an das Panel zu dir nach Hause. Da geht dann halt auch das Relais aus. Umgekehrt natürlich auch, wenn es zu kalt wird, schaltet irgendetwas in China das Relais wieder an.

                                          Diese Funktionalität ist aber im Tasmota nicht mehr vorhanden und muss jetzt durch eine Steuerlogik im ioBroker ersetzt werden.

                                          Klar ist es nett wenn ich die Datenpunkte im ioBroker auswerten und in eine Automatisierung machen kann, aber das ist Stand jetzt nicht geplant.

                                          Also ohne eine zusätzliche Logik geht das nicht.

                                          Die ist aber im Prinzip sehr einfach zu realisieren.

                                          Über z.B.

                                          0_userdata.0.Heizungoderähnlich.Stellmotor.DeinRaum.
                                          

                                          legst du 4 Datenpunkte an:

                                          • Raumtemperatur (numerisch): Bei Verwendung des internen NTC ist Datenpunkt bereits vorhanden
                                          • Zieltemperatur (numerisch)
                                          • Offset (numerisch)
                                          • Schalter (boolean)

                                          Dann eine einfache Blockly-Logik schreiben, das den Cloud-Chinesen ersetzt.

                                          Wenn Schalter an, dann

                                          • Wenn Raumtemperatur - Offset < Zieltemperatur, dann Relay 1 an (Relay1 - Datenpunkt im NSPanel vorhanden)
                                          • Wenn Raumtemperatur + Offset > Zieltemperatur, dann Relay 1 aus
                                            (Relay1 - Datenpunkt im NSPanel vorhanden)

                                          Sonst wenn Schalter aus, dann Relay1 aus.

                                          Das wars. Der linke Schalter sollte per Rule entkoppelt werden. Der linke Schalter, falls mit einem herkömmlichen Verbraucher (Lampe) ohne Dauerstrom betrieben, dann per Rule nicht entkoppelt. Falls HUE-Lampe, dann ebenfalls entkoppelt.

                                          Kann also auch noch erweitert werden. Wenn Uhrzeit zwischen XX:XX und XX:XX, dann Heizung aus.
                                          Der Temperatur-Logik durch das externe Script sind für deine Anwendungsbereiche, im Gegensatz zu deinen aktuellen Thermostaten, keine Grenzen gesetzt

                                          Das wärs auch schon. Mit der zusätzlichen einfachen Schaltlogik wird es möglich sein, deine aktuellen Komponenten Raumthermostat und Lichtschalter zu ersetzen.

                                          Klar könnte man diese einfache Temperaturlogik jetzt auch in das NSPanel-TypeScript übernehmen. Ist aber wahrscheinlich für alle User flexibler, wenn die Datenpunkte im ioBroker separat gesteuert werden.

                                          @Kuckuckmann vielleicht könnte man für eine einfache Temperatursteuerung (Thermostatersatz) mit Relais-Steuerung über 230V (Elektro-Heizkörper oder Stellmotor 230V) mal ein kurzes Beispiel für die Wiki erstellen?

                                          Installationsanleitung, Tipps, Alias-Definitionen, FAQ für das Sonoff NSPanel mit lovelace UI unter ioBroker
                                          https://github.com/joBr99/nspanel-lovelace-ui/wiki

                                          Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

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


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          771

                                          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