Skip to content
  • Home
  • 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

Community Forum

  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.2k

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

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

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.
  • T TT-Tom

    @foradh-0

    Einstellung ist im Service Menu unter Screensaver / Brightness / Helligkeit aktiv

    Bzw. Hier ScreensaverInfo.activeBrightness
    Gilt aber allgemein. Muss also mit dem Blockly umschalten.

    F Offline
    F Offline
    Foradh 0
    schrieb am zuletzt editiert von Foradh 0
    #4034

    @tt-tom
    Die Einstellung ScreensaverInfo.activeBrightness hat bei mir keine Auswirkung auf die Helligkeit der popupNotify

    Allerdings bin ich durch deinen Hinweis auf die Benachrichtungen über ScreensaverInfo und nicht über popupNotify gestoßen.
    Diese Anzeige der Benachrichtigung gefällt mir für meinen Fall besser.
    Allerdings habe ich auch hier ein paar Probleme...Ich habe mein Blockly entsprechend angepasst und es wird nun der Datenpunkt ScreensaverInfo.popupNotifyText gefüllt. Die Anzeige funktioniert ebenfalls einwandfrei, auch ist das Display nach wie vor korrekt gedimmt und springt nicht auf 100% Helligkeit.
    Doch wenn ich nun die Benachrichtigung mit Klick auf das Display beende bleiben die Datenpunkte wie ScreensaverInfo.popupNotifyText mit dem Text bestehen.
    Wenn dann eine neue Benachrichtigung mit dem gleichen Text erscheinen soll wird dieser nicht getriggert und auch nichts im Display angezeigt.
    Mein Ziel ist es die Benachrichtigungen so einzustellen, dass die Nachricht und evtl. auch die Farbe des Hintergrund geändert wird, bis man die Benachrichtigung auf dem Display quittiert, dadurch die Datenpunkte wieder geleert werden und auch das Display wieder in die normale Hintergrundfarbe wechselt.

    F 1 Antwort Letzte Antwort
    0
    • ArmilarA Armilar

      @danny_v1

      Auch das habe ich eben bei mir getestet und kann es bei mir nicht reproduzieren.

      Hier wäre noch interessant, welche Scriptversion benutzt und welche TFT du geflashed hast.

      Die Seiten dennoch posten

      D Offline
      D Offline
      danny_v1
      schrieb am zuletzt editiert von
      #4035

      @armilar said in SONOFF NSPanel mit Lovelace UI:

      @danny_v1

      Auch das habe ich eben bei mir getestet und kann es bei mir nicht reproduzieren.

      Hier wäre noch interessant, welche Scriptversion benutzt und welche TFT du geflashed hast.

      Die Seiten dennoch posten

      So hier erstmal das Blockly für das Popup:

      <xml xmlns="https://developers.google.com/blockly/xml">
        <variables>
          <variable id="R~BQm7Yu#BbrO:@1hYG`">Liste</variable>
        </variables>
        <block type="on_ext" id="a%DPZsY5iws70Ed},E3%" x="13" y="63">
          <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
          <field name="CONDITION">ne</field>
          <field name="ACK_CONDITION"></field>
          <value name="OID0">
            <shadow type="field_oid" id="4aHqOyyla%kbv^{3?XSm">
              <field name="oid">alias.0.TreppeFlur.Hauster.ACTUAL</field>
            </shadow>
          </value>
          <statement name="STATEMENT">
            <block type="controls_if" id="oq}K|1j:OEY(cV!ddU/Z">
              <value name="IF0">
                <block type="logic_operation" id="KTvGE~~ixhmj^$rBSGx.">
                  <field name="OP">AND</field>
                  <value name="A">
                    <block type="logic_compare" id="+IZdNsnGc]vRnyG~70mr">
                      <field name="OP">EQ</field>
                      <value name="A">
                        <block type="get_value" id="+pMs-~9I+y/64)d~0A!T">
                          <field name="ATTR">val</field>
                          <field name="OID">alias.0.TreppeFlur.Hauster.ACTUAL</field>
                        </block>
                      </value>
                      <value name="B">
                        <block type="logic_boolean" id="_:QS0Z*UtbpGMIxVZZw9">
                          <field name="BOOL">TRUE</field>
                        </block>
                      </value>
                    </block>
                  </value>
                  <value name="B">
                    <block type="logic_compare" id="WvQAzcpIid+b,^Bm;v[L">
                      <field name="OP">LT</field>
                      <value name="A">
                        <block type="get_value" id="HpF~iQ%$,m7y./^Qm@!/">
                          <field name="ATTR">val</field>
                          <field name="OID">0_userdata.0.Zaehlen.FensterTueren.FensterTueren</field>
                        </block>
                      </value>
                      <value name="B">
                        <block type="math_number" id="qd6,D/U8{75gR5x)C=64">
                          <field name="NUM">0</field>
                        </block>
                      </value>
                    </block>
                  </value>
                </block>
              </value>
              <statement name="DO0">
                <block type="variables_set" id="JsX_CdG{}Eux,aOKN{sD">
                  <field name="VAR" id="R~BQm7Yu#BbrO:@1hYG`">Liste</field>
                  <value name="VALUE">
                    <block type="get_value" id=":3{K0p`SJGO`tq28$J3y">
                      <field name="ATTR">val</field>
                      <field name="OID">0_userdata.0.Zaehlen.FensterTueren.OffenListe</field>
                    </block>
                  </value>
                  <next>
                    <block type="control" id="pt9rokdru:_awWj{=+Sn">
                      <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                      <field name="OID">0_userdata.0.NSPanel.Panel4.popupNotify.popupNotifySleepTimeout</field>
                      <field name="WITH_DELAY">FALSE</field>
                      <value name="VALUE">
                        <block type="math_number" id="8RqH)Q9*YmKF9k6^rcj%">
                          <field name="NUM">20</field>
                        </block>
                      </value>
                      <next>
                        <block type="control" id="CO=U[yf[y5/O9NzSOIHX">
                          <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                          <field name="OID">0_userdata.0.NSPanel.Panel4.popupNotify.popupNotifyButton1Text</field>
                          <field name="WITH_DELAY">FALSE</field>
                          <value name="VALUE">
                            <block type="text" id="I6iZt6FYoe[%(SuE$!;T">
                              <field name="TEXT"></field>
                            </block>
                          </value>
                          <next>
                            <block type="control" id="`^[q=o-`gN{tVQvj/GKG">
                              <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                              <field name="OID">0_userdata.0.NSPanel.Panel4.popupNotify.popupNotifyButton2Text</field>
                              <field name="WITH_DELAY">FALSE</field>
                              <value name="VALUE">
                                <block type="text" id=":R~uc4Yb`ONXPsDfXTz1">
                                  <field name="TEXT">OK</field>
                                </block>
                              </value>
                              <next>
                                <block type="control" id="#O@ugcHc+a{3=8VcI!PP">
                                  <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                  <field name="OID">0_userdata.0.NSPanel.Panel4.popupNotify.popupNotifyHeading</field>
                                  <field name="WITH_DELAY">FALSE</field>
                                  <value name="VALUE">
                                    <block type="text" id="e7NgkZ~cXsUx7Qq.;-63">
                                      <field name="TEXT">Offene Fenster</field>
                                    </block>
                                  </value>
                                  <next>
                                    <block type="control" id="KUV{;XK+g?7`G2PjnweE">
                                      <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                      <field name="OID">0_userdata.0.NSPanel.Panel4.popupNotify.popupNotifyIcon</field>
                                      <field name="WITH_DELAY">FALSE</field>
                                      <value name="VALUE">
                                        <block type="text" id="QQq9iq,C#++?!]j|S2Xw">
                                          <field name="TEXT">window-open-variant</field>
                                        </block>
                                      </value>
                                      <next>
                                        <block type="control" id="ShFP`}0@,p_~~%/(T%Nt">
                                          <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                          <field name="OID">0_userdata.0.NSPanel.Panel4.popupNotify.popupNotifyFontIdText</field>
                                          <field name="WITH_DELAY">FALSE</field>
                                          <value name="VALUE">
                                            <block type="math_number" id=",Bh7Y]k^cVEZzF7(Np*W">
                                              <field name="NUM">0</field>
                                            </block>
                                          </value>
                                          <next>
                                            <block type="control" id="[B)HT?8r~8aok{b%oy.5">
                                              <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                              <field name="OID">0_userdata.0.NSPanel.Panel4.popupNotify.popupNotifyText</field>
                                              <field name="WITH_DELAY">FALSE</field>
                                              <value name="VALUE">
                                                <block type="variables_get" id="?V%b^4o}NO/5B`g*aU1=">
                                                  <field name="VAR" id="R~BQm7Yu#BbrO:@1hYG`">Liste</field>
                                                </block>
                                              </value>
                                            </block>
                                          </next>
                                        </block>
                                      </next>
                                    </block>
                                  </next>
                                </block>
                              </next>
                            </block>
                          </next>
                        </block>
                      </next>
                    </block>
                  </next>
                </block>
              </statement>
            </block>
          </statement>
        </block>
      </xml>
      

      und hier die Seiten:

                  let Wohnzimmer1 = <PageGrid>
      
                  {
                      "type": "cardGrid",
                      "heading": "Wohnzimmer 1",
                      "useColor": true,
                      "subPage": true,
                      "parent": Obergeschoss,
                      'prev': undefined,
                      'next': 'Wohnzimmer2',
                      'home': 'Obergeschoss',
                      "items": [
                              <PageItem>{ navigate: true, id: "Deckenlampen_WZ", icon: "ceiling-light-multiple", onColor: White, name: "Deckenlampen"},
                              <PageItem>{ navigate: true, id: "Lampen_WZ", icon: "floor-lamp", onColor: White, name: "Lampen"},
                              <PageItem>{ navigate: true, id: "Lampen2_WZ", icon: "floor-lamp", onColor: White, name: "Lampen sonstige"},
                              <PageItem>{ navigate: true, id: "Themostat_WZ", icon: "temperature-celsius", onColor: White, name: "Temperaturen"},
                              <PageItem>{ navigate: true, id: "Status_WZ", icon: "state-machine", onColor: White, name: "Status"},
                              <PageItem>{ navigate: true, id: "Alexa_WZ", icon: "music", onColor: White, name: "Alexa"}
                      ]
      
                  };
      
                  let Wohnzimmer2= <PageGrid>
      
                  {
                      "type": "cardGrid",
                      "heading": "Wohnzimmer 2",
                      "useColor": true,
                      "subPage": true,
                      "parent": Obergeschoss,
                      'prev': undefined,
                      'next': 'Wohnzimmer1',
                      'home': 'Obergeschoss',
                      "items": [
                              <PageItem>{ navigate: true, id: "Szenen_WZ", icon: "ceiling-light-multiple", onColor: White, name: "Szenen"},
                              <PageItem>{ navigate: true, id: "WLED", icon: "led-strip-variant", onColor: White, name: "WLED"},
                              <PageItem>{ id: "alias.0.TIMER1", icon: "timer-outline", name: "Timer", onColor: White}
                      ]
      
                  };
                              let Deckenlampen_WZ= <PageEntities>
      
                              {
                                  "type": "cardEntities",
                                  "heading": "Deckenlampen",
                                  "useColor": true,
                                  "subPage": true,
                                  "parent": Wohnzimmer1,
                                  "items": [
                                          <PageItem>{ id: "alias.0.Wohnzimmer.Deckenlampe.SofaRGB.Gruppe", name: "Sofa RGB", icon: "ceiling-light-multiple", minValueBrightness: 0, maxValueBrightness: 100, minValueColorTemp: 150, maxValueColorTemp: 500, interpolateColor: true, colormode: "xy"},
                                          <PageItem>{ id: "alias.0.Wohnzimmer.Deckenlampe.Gross.GruppeNSP", name: "Gross", icon: "ceiling-light-multiple", minValueColorTemp: 153, maxValueColorTemp: 370, interpolateColor: true}
                                           
                                  ]
      
                              };
      
      

      Folgende Versionen verwende ich:
      TypeScript v4.3.1.3
      Nextion 53 / v4.3.1
      Berry Driver 9
      Tasmota 13.2.0
      Javascriptadapter 7.1.4

      T 1 Antwort Letzte Antwort
      0
      • D danny_v1

        @armilar said in SONOFF NSPanel mit Lovelace UI:

        @danny_v1

        Auch das habe ich eben bei mir getestet und kann es bei mir nicht reproduzieren.

        Hier wäre noch interessant, welche Scriptversion benutzt und welche TFT du geflashed hast.

        Die Seiten dennoch posten

        So hier erstmal das Blockly für das Popup:

        <xml xmlns="https://developers.google.com/blockly/xml">
          <variables>
            <variable id="R~BQm7Yu#BbrO:@1hYG`">Liste</variable>
          </variables>
          <block type="on_ext" id="a%DPZsY5iws70Ed},E3%" x="13" y="63">
            <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
            <field name="CONDITION">ne</field>
            <field name="ACK_CONDITION"></field>
            <value name="OID0">
              <shadow type="field_oid" id="4aHqOyyla%kbv^{3?XSm">
                <field name="oid">alias.0.TreppeFlur.Hauster.ACTUAL</field>
              </shadow>
            </value>
            <statement name="STATEMENT">
              <block type="controls_if" id="oq}K|1j:OEY(cV!ddU/Z">
                <value name="IF0">
                  <block type="logic_operation" id="KTvGE~~ixhmj^$rBSGx.">
                    <field name="OP">AND</field>
                    <value name="A">
                      <block type="logic_compare" id="+IZdNsnGc]vRnyG~70mr">
                        <field name="OP">EQ</field>
                        <value name="A">
                          <block type="get_value" id="+pMs-~9I+y/64)d~0A!T">
                            <field name="ATTR">val</field>
                            <field name="OID">alias.0.TreppeFlur.Hauster.ACTUAL</field>
                          </block>
                        </value>
                        <value name="B">
                          <block type="logic_boolean" id="_:QS0Z*UtbpGMIxVZZw9">
                            <field name="BOOL">TRUE</field>
                          </block>
                        </value>
                      </block>
                    </value>
                    <value name="B">
                      <block type="logic_compare" id="WvQAzcpIid+b,^Bm;v[L">
                        <field name="OP">LT</field>
                        <value name="A">
                          <block type="get_value" id="HpF~iQ%$,m7y./^Qm@!/">
                            <field name="ATTR">val</field>
                            <field name="OID">0_userdata.0.Zaehlen.FensterTueren.FensterTueren</field>
                          </block>
                        </value>
                        <value name="B">
                          <block type="math_number" id="qd6,D/U8{75gR5x)C=64">
                            <field name="NUM">0</field>
                          </block>
                        </value>
                      </block>
                    </value>
                  </block>
                </value>
                <statement name="DO0">
                  <block type="variables_set" id="JsX_CdG{}Eux,aOKN{sD">
                    <field name="VAR" id="R~BQm7Yu#BbrO:@1hYG`">Liste</field>
                    <value name="VALUE">
                      <block type="get_value" id=":3{K0p`SJGO`tq28$J3y">
                        <field name="ATTR">val</field>
                        <field name="OID">0_userdata.0.Zaehlen.FensterTueren.OffenListe</field>
                      </block>
                    </value>
                    <next>
                      <block type="control" id="pt9rokdru:_awWj{=+Sn">
                        <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                        <field name="OID">0_userdata.0.NSPanel.Panel4.popupNotify.popupNotifySleepTimeout</field>
                        <field name="WITH_DELAY">FALSE</field>
                        <value name="VALUE">
                          <block type="math_number" id="8RqH)Q9*YmKF9k6^rcj%">
                            <field name="NUM">20</field>
                          </block>
                        </value>
                        <next>
                          <block type="control" id="CO=U[yf[y5/O9NzSOIHX">
                            <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                            <field name="OID">0_userdata.0.NSPanel.Panel4.popupNotify.popupNotifyButton1Text</field>
                            <field name="WITH_DELAY">FALSE</field>
                            <value name="VALUE">
                              <block type="text" id="I6iZt6FYoe[%(SuE$!;T">
                                <field name="TEXT"></field>
                              </block>
                            </value>
                            <next>
                              <block type="control" id="`^[q=o-`gN{tVQvj/GKG">
                                <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                <field name="OID">0_userdata.0.NSPanel.Panel4.popupNotify.popupNotifyButton2Text</field>
                                <field name="WITH_DELAY">FALSE</field>
                                <value name="VALUE">
                                  <block type="text" id=":R~uc4Yb`ONXPsDfXTz1">
                                    <field name="TEXT">OK</field>
                                  </block>
                                </value>
                                <next>
                                  <block type="control" id="#O@ugcHc+a{3=8VcI!PP">
                                    <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                    <field name="OID">0_userdata.0.NSPanel.Panel4.popupNotify.popupNotifyHeading</field>
                                    <field name="WITH_DELAY">FALSE</field>
                                    <value name="VALUE">
                                      <block type="text" id="e7NgkZ~cXsUx7Qq.;-63">
                                        <field name="TEXT">Offene Fenster</field>
                                      </block>
                                    </value>
                                    <next>
                                      <block type="control" id="KUV{;XK+g?7`G2PjnweE">
                                        <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                        <field name="OID">0_userdata.0.NSPanel.Panel4.popupNotify.popupNotifyIcon</field>
                                        <field name="WITH_DELAY">FALSE</field>
                                        <value name="VALUE">
                                          <block type="text" id="QQq9iq,C#++?!]j|S2Xw">
                                            <field name="TEXT">window-open-variant</field>
                                          </block>
                                        </value>
                                        <next>
                                          <block type="control" id="ShFP`}0@,p_~~%/(T%Nt">
                                            <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                            <field name="OID">0_userdata.0.NSPanel.Panel4.popupNotify.popupNotifyFontIdText</field>
                                            <field name="WITH_DELAY">FALSE</field>
                                            <value name="VALUE">
                                              <block type="math_number" id=",Bh7Y]k^cVEZzF7(Np*W">
                                                <field name="NUM">0</field>
                                              </block>
                                            </value>
                                            <next>
                                              <block type="control" id="[B)HT?8r~8aok{b%oy.5">
                                                <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                <field name="OID">0_userdata.0.NSPanel.Panel4.popupNotify.popupNotifyText</field>
                                                <field name="WITH_DELAY">FALSE</field>
                                                <value name="VALUE">
                                                  <block type="variables_get" id="?V%b^4o}NO/5B`g*aU1=">
                                                    <field name="VAR" id="R~BQm7Yu#BbrO:@1hYG`">Liste</field>
                                                  </block>
                                                </value>
                                              </block>
                                            </next>
                                          </block>
                                        </next>
                                      </block>
                                    </next>
                                  </block>
                                </next>
                              </block>
                            </next>
                          </block>
                        </next>
                      </block>
                    </next>
                  </block>
                </statement>
              </block>
            </statement>
          </block>
        </xml>
        

        und hier die Seiten:

                    let Wohnzimmer1 = <PageGrid>
        
                    {
                        "type": "cardGrid",
                        "heading": "Wohnzimmer 1",
                        "useColor": true,
                        "subPage": true,
                        "parent": Obergeschoss,
                        'prev': undefined,
                        'next': 'Wohnzimmer2',
                        'home': 'Obergeschoss',
                        "items": [
                                <PageItem>{ navigate: true, id: "Deckenlampen_WZ", icon: "ceiling-light-multiple", onColor: White, name: "Deckenlampen"},
                                <PageItem>{ navigate: true, id: "Lampen_WZ", icon: "floor-lamp", onColor: White, name: "Lampen"},
                                <PageItem>{ navigate: true, id: "Lampen2_WZ", icon: "floor-lamp", onColor: White, name: "Lampen sonstige"},
                                <PageItem>{ navigate: true, id: "Themostat_WZ", icon: "temperature-celsius", onColor: White, name: "Temperaturen"},
                                <PageItem>{ navigate: true, id: "Status_WZ", icon: "state-machine", onColor: White, name: "Status"},
                                <PageItem>{ navigate: true, id: "Alexa_WZ", icon: "music", onColor: White, name: "Alexa"}
                        ]
        
                    };
        
                    let Wohnzimmer2= <PageGrid>
        
                    {
                        "type": "cardGrid",
                        "heading": "Wohnzimmer 2",
                        "useColor": true,
                        "subPage": true,
                        "parent": Obergeschoss,
                        'prev': undefined,
                        'next': 'Wohnzimmer1',
                        'home': 'Obergeschoss',
                        "items": [
                                <PageItem>{ navigate: true, id: "Szenen_WZ", icon: "ceiling-light-multiple", onColor: White, name: "Szenen"},
                                <PageItem>{ navigate: true, id: "WLED", icon: "led-strip-variant", onColor: White, name: "WLED"},
                                <PageItem>{ id: "alias.0.TIMER1", icon: "timer-outline", name: "Timer", onColor: White}
                        ]
        
                    };
                                let Deckenlampen_WZ= <PageEntities>
        
                                {
                                    "type": "cardEntities",
                                    "heading": "Deckenlampen",
                                    "useColor": true,
                                    "subPage": true,
                                    "parent": Wohnzimmer1,
                                    "items": [
                                            <PageItem>{ id: "alias.0.Wohnzimmer.Deckenlampe.SofaRGB.Gruppe", name: "Sofa RGB", icon: "ceiling-light-multiple", minValueBrightness: 0, maxValueBrightness: 100, minValueColorTemp: 150, maxValueColorTemp: 500, interpolateColor: true, colormode: "xy"},
                                            <PageItem>{ id: "alias.0.Wohnzimmer.Deckenlampe.Gross.GruppeNSP", name: "Gross", icon: "ceiling-light-multiple", minValueColorTemp: 153, maxValueColorTemp: 370, interpolateColor: true}
                                             
                                    ]
        
                                };
        
        

        Folgende Versionen verwende ich:
        TypeScript v4.3.1.3
        Nextion 53 / v4.3.1
        Berry Driver 9
        Tasmota 13.2.0
        Javascriptadapter 7.1.4

        T Offline
        T Offline
        TT-Tom
        schrieb am zuletzt editiert von TT-Tom
        #4036

        @danny_v1

        deine Navigation Config in den Seiten musst du richtig anpassen. Schaue dir dazu mal die Beschreibung im Wiki an. Könnte eine Ursache sein.
        hast du mal deine Javascript Instanz mal neu gestartet?

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

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

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

        D 1 Antwort Letzte Antwort
        0
        • T TT-Tom

          @danny_v1

          deine Navigation Config in den Seiten musst du richtig anpassen. Schaue dir dazu mal die Beschreibung im Wiki an. Könnte eine Ursache sein.
          hast du mal deine Javascript Instanz mal neu gestartet?

          D Offline
          D Offline
          danny_v1
          schrieb am zuletzt editiert von danny_v1
          #4037

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

          @danny_v1

          deine Navigation Config in den Seiten musst du richtig anpassen. Schaue dir dazu mal die Beschreibung im Wiki an. Könnte eine Ursache sein.

          Ja das habe ich eigentlich nach der Beschreibung gemacht. steh da gerade etwas auf dem Schlauch, bzw sehe den Fehler nicht. Fällt dir in der Config was auf was nicht passt?

          Edit: das einzige was mir aufgefallen ist, ist der Parameter targetPage, aber laut Wiki sollten beide Varianten funktionieren

          T 1 Antwort Letzte Antwort
          0
          • D danny_v1

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

            @danny_v1

            deine Navigation Config in den Seiten musst du richtig anpassen. Schaue dir dazu mal die Beschreibung im Wiki an. Könnte eine Ursache sein.

            Ja das habe ich eigentlich nach der Beschreibung gemacht. steh da gerade etwas auf dem Schlauch, bzw sehe den Fehler nicht. Fällt dir in der Config was auf was nicht passt?

            Edit: das einzige was mir aufgefallen ist, ist der Parameter targetPage, aber laut Wiki sollten beide Varianten funktionieren

            T Offline
            T Offline
            TT-Tom
            schrieb am zuletzt editiert von TT-Tom
            #4038

            @danny_v1

            der Teil ist nicht ganz konform

                            "parent": Obergeschoss,
                            'prev': undefined,
                            'next': 'Wohnzimmer2',
                            'home': 'Obergeschoss',
            

            Wichtig!
            Wenn 'prev' eine Seite zugewiesen wurde, wird 'parent' nicht ausgewertet. Das gleiche gilt auch für 'next' und 'home'.

            siehe dir mal im Wiki das Bild an, das erklärt es ganz gut.

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

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

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

            D 1 Antwort Letzte Antwort
            0
            • T TT-Tom

              @danny_v1

              der Teil ist nicht ganz konform

                              "parent": Obergeschoss,
                              'prev': undefined,
                              'next': 'Wohnzimmer2',
                              'home': 'Obergeschoss',
              

              Wichtig!
              Wenn 'prev' eine Seite zugewiesen wurde, wird 'parent' nicht ausgewertet. Das gleiche gilt auch für 'next' und 'home'.

              siehe dir mal im Wiki das Bild an, das erklärt es ganz gut.

              D Offline
              D Offline
              danny_v1
              schrieb am zuletzt editiert von
              #4039

              @tt-tom Ok, danke für die Erklärung, jetzt sehe ich den Fehler.

              Das einzige was ich noch nicht 100% versteh ist der Unterschied zwischen parent und home. Im Bild sehe ich, wenn ich über navigate in eine höher Ebene gesprungen bin das der Rücksprung mit parent erfolgt. Aber ich könnte genauso gut home verwenden? Das einzige worin die beiden sich unterscheiden ist die Position des icons oder?

              T 1 Antwort Letzte Antwort
              0
              • D danny_v1

                @tt-tom Ok, danke für die Erklärung, jetzt sehe ich den Fehler.

                Das einzige was ich noch nicht 100% versteh ist der Unterschied zwischen parent und home. Im Bild sehe ich, wenn ich über navigate in eine höher Ebene gesprungen bin das der Rücksprung mit parent erfolgt. Aber ich könnte genauso gut home verwenden? Das einzige worin die beiden sich unterscheiden ist die Position des icons oder?

                T Offline
                T Offline
                TT-Tom
                schrieb am zuletzt editiert von
                #4040

                @danny_v1

                Mit Home springst du in die mainpages also die erste Zeile.

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

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

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

                D 1 Antwort Letzte Antwort
                0
                • T TT-Tom

                  @danny_v1

                  Mit Home springst du in die mainpages also die erste Zeile.

                  D Offline
                  D Offline
                  danny_v1
                  schrieb am zuletzt editiert von
                  #4041

                  @tt-tom Dann wäre aber das Bild im Wiki falsch, da wird ja mit home aus der Subpage "Wohnzimmer 3" in die Subpage "Erdgeschoss" gesprungen.

                  T 1 Antwort Letzte Antwort
                  0
                  • D danny_v1

                    @tt-tom Dann wäre aber das Bild im Wiki falsch, da wird ja mit home aus der Subpage "Wohnzimmer 3" in die Subpage "Erdgeschoss" gesprungen.

                    T Offline
                    T Offline
                    TT-Tom
                    schrieb am zuletzt editiert von
                    #4042

                    @danny_v1

                    oh Sorry, ja du hast recht, das war mal der Ursprung. Das Bild stimmt natürlich. Mit den Parametern werden auch die Standrad Icon bestimmt Pfeil hoch , Links, Rechts und Haus. Wobei du diese auch überschreiben kannst. Parameter die auf undefined stehen, kannst du weg lassen. Damit wird es übersichtlicher.

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

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

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

                    D 1 Antwort Letzte Antwort
                    0
                    • T TT-Tom

                      @danny_v1

                      oh Sorry, ja du hast recht, das war mal der Ursprung. Das Bild stimmt natürlich. Mit den Parametern werden auch die Standrad Icon bestimmt Pfeil hoch , Links, Rechts und Haus. Wobei du diese auch überschreiben kannst. Parameter die auf undefined stehen, kannst du weg lassen. Damit wird es übersichtlicher.

                      D Offline
                      D Offline
                      danny_v1
                      schrieb am zuletzt editiert von
                      #4043

                      @tt-tom Ok dann hab ich es nun glaub ich endlich verstanden, manches dauert halt doch etwas länger. Vielen Dank!

                      T 1 Antwort Letzte Antwort
                      0
                      • D danny_v1

                        @tt-tom Ok dann hab ich es nun glaub ich endlich verstanden, manches dauert halt doch etwas länger. Vielen Dank!

                        T Offline
                        T Offline
                        TT-Tom
                        schrieb am zuletzt editiert von
                        #4044

                        @danny_v1

                        Ja das Script ist schon sehr mächtig geworden und hat dadurch sehr viele Einstellungsmöglichkeiten. Ich muss auch öfter nochmal in den Code sehen, um nicht falsches zu schreiben. Aber wie du siehst passiert mir das auch hin und wieder. Weiter viel Spass

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

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

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

                        D 2 Antworten Letzte Antwort
                        0
                        • T TT-Tom

                          @danny_v1

                          Ja das Script ist schon sehr mächtig geworden und hat dadurch sehr viele Einstellungsmöglichkeiten. Ich muss auch öfter nochmal in den Code sehen, um nicht falsches zu schreiben. Aber wie du siehst passiert mir das auch hin und wieder. Weiter viel Spass

                          D Offline
                          D Offline
                          danny_v1
                          schrieb am zuletzt editiert von
                          #4045

                          @tt-tom ja das stimmt das Skript ist echt riesig, wäre schön wenn man das aufteilen könnte.
                          So das man die ganze Seitenkonfiguration in einer extra Datei hätte. Hätte auch den Vorteil, dass man bei einem Update nur das eigentliche Skript tauscht und die Seiten-Konfig nicht anfassen muss.

                          1 Antwort Letzte Antwort
                          0
                          • E Offline
                            E Offline
                            eMd
                            schrieb am zuletzt editiert von
                            #4046

                            Ich denke mal das wird bestimmt bald ein Adapter werden um alles ein wenig zu vereinfachen 😉😉😉

                            Master: Intel NUC 16GB/500GB
                            Slave: Raspberry Pi 3 + Homematicmodul
                            Shelly, Google Home, Zigbee Aqara, Sonoff

                            Meine VIS: https://youtu.be/JMYr2KYlpME

                            1 Antwort Letzte Antwort
                            0
                            • ArmilarA Armilar

                              @Bergi84

                              kam keine Antwort mehr...

                              Ich habe die Änderungen in die v4.3.1.6 gesetzt...

                              fe09ab24-9edc-4164-9123-95b87b4f1ab0-image.png

                              Wer die Funktionalität der erweiterten Alias-Gerätetypen in der Navi verwenden möchte, kann den unteren Teil des NSPanelTs.ts austauschen.

                              Siehe Post von @Bergi84

                              @all
                              Übrigens hab ich gleich auch noch einen Verbesserungswunsch den ich hier zur Diskussion stellen wollte. Und zwar geht es darum dass ich gerne hätte wenn ich zB auf auf einer GridPage auf die Temperatur vom zB. Wohnzimmer drücke dass sich dann eine subPage öffnet. Durch hinzufügen entsprechenden cases in der Funktion CreateEntity in der switch abfrage für die dynamischen navi icons hab ich das mal ausprobiert und in meinem Fall funktioniert das.

                              geänderte Config damit es auch funktioniert:

                              let NSPanel_Temp = <PageGrid>
                              {
                                  'type': 'cardGrid',
                                  'heading': 'Temperaturen',
                                  'useColor': true,
                                  'items': [
                                      <PageItem>{ navigate: true, targetPage: 'NSPanel_TestSub', id: 'alias.0.devices.TempSchlafzimmer', unit: '°C', name: 'Schlafzimmer', offColor: MSRed, onColor: MSGreen, useValue: true, colorScale: {'val_min': 20, 'val_max': 25, 'val_best': 23} },
                                  ]
                              };
                              

                              Ansonsten hat das Update keine Auswirkungen auf bisherige Funktionalität...

                              B Offline
                              B Offline
                              Bergi84
                              schrieb am zuletzt editiert von Bergi84
                              #4047

                              @Bergi84

                              kam keine Antwort mehr...

                              Ich habe die Änderungen in die v4.3.1.6 gesetzt...

                              fe09ab24-9edc-4164-9123-95b87b4f1ab0-image.png

                              Wer die Funktionalität der erweiterten Alias-Gerätetypen in der Navi verwenden möchte, kann den unteren Teil des NSPanelTs.ts austauschen.

                              Siehe Post von @Bergi84

                              @all
                              Übrigens hab ich gleich auch noch einen Verbesserungswunsch den ich hier zur Diskussion stellen wollte. Und zwar geht es darum dass ich gerne hätte wenn ich zB auf auf einer GridPage auf die Temperatur vom zB. Wohnzimmer drücke dass sich dann eine subPage öffnet. Durch hinzufügen entsprechenden cases in der Funktion CreateEntity in der switch abfrage für die dynamischen navi icons hab ich das mal ausprobiert und in meinem Fall funktioniert das.

                              geänderte Config damit es auch funktioniert:

                              let NSPanel_Temp = <PageGrid>
                              {
                                  'type': 'cardGrid',
                                  'heading': 'Temperaturen',
                                  'useColor': true,
                                  'items': [
                                      <PageItem>{ navigate: true, targetPage: 'NSPanel_TestSub', id: 'alias.0.devices.TempSchlafzimmer', unit: '°C', name: 'Schlafzimmer', offColor: MSRed, onColor: MSGreen, useValue: true, colorScale: {'val_min': 20, 'val_max': 25, 'val_best': 23} },
                                  ]
                              };
                              

                              Ansonsten hat das Update keine Auswirkungen auf bisherige Funktionalität...

                              Sorry das ich nicht geantwortet habe. Mir fehlt leider ein wenig die zeit mich um das regelmäßig zu kümmern. Verzeihung.

                              Danke für die Änderung, Somit kann ich das Script ohne Modifikation einsetzen.

                              1 Antwort Letzte Antwort
                              0
                              • ArmilarA Armilar

                                @bergi84

                                Wenn ich ein Notify Popup verwende, wie bekomme ich mit das der Nutzer auf das schließen X in der rechten oberen Ecke gedrückt hat oder der timeout abgelaufen ist. Für die unteren zwei Buttons kann ich ja auf den State "popupNotify.popupNotifyAction" triggern. Das Problem ist ja das mein Trigger scharf bleibt und wenn zufällig ein anderes Notify Popup reinspringt dann passiert irgend was.

                                weil die HMI bei dem "x" ein bExit sendet und bei den beiden Buttons ein Event mit b1 oder b2, welches ausgewertet werden kann:

                                396b9563-11da-4081-921c-9fd4a1f3952f-image.png

                                Somit wird nicht explizit ein "false" gesendet, wenn das "x" gedrückt wird. Das popUp wird durch die HMI beendet.

                                Warum kann man nur dann die Schriftart des Textes im Popup ändern wenn man auf Layout 2 umschaltet? Das funktioniert mit dem Standard Layout prinzipiell auch und die Standard Schriftart des Popups ist arg klein und ich kann keine Icons im Text verwenden.

                                Weil die HMI vor einiger Zeit bereits eine neue zusätzliche Version des popupNotify bekam. Sollte eigentlich die alte ablösen. Wir wollten die alte Version jedoch weiter benutzen (wird aber nicht mehr weiterentwickelt) und haben die daher Layout 1und 2 genannt. In der älteren Version berücksichtigt die Nextion HMI keine Schriftarten...

                                B Offline
                                B Offline
                                Bergi84
                                schrieb am zuletzt editiert von
                                #4048

                                @armilar said in SONOFF NSPanel mit Lovelace UI:

                                @bergi84

                                Wenn ich ein Notify Popup verwende, wie bekomme ich mit das der Nutzer auf das schließen X in der rechten oberen Ecke gedrückt hat oder der timeout abgelaufen ist. Für die unteren zwei Buttons kann ich ja auf den State "popupNotify.popupNotifyAction" triggern. Das Problem ist ja das mein Trigger scharf bleibt und wenn zufällig ein anderes Notify Popup reinspringt dann passiert irgend was.

                                weil die HMI bei dem "x" ein bExit sendet und bei den beiden Buttons ein Event mit b1 oder b2, welches ausgewertet werden kann:

                                396b9563-11da-4081-921c-9fd4a1f3952f-image.png

                                Somit wird nicht explizit ein "false" gesendet, wenn das "x" gedrückt wird. Das popUp wird durch die HMI beendet.

                                Das meine ich ja. Wenn ich das Popup verwende bekomme ich eben nicht mit das es geschlossen wurde. Und das ist ungünstig da ja mein Subscribe auf ACTION auch nicht gelöscht wird und sobald ein anderes Popup wie zB Tasmota update hinein springt und ich dort auf Ja drücke wird auch das andere Script fälschlicherweise getriggert. Ich glaube es wäre besser das über ACTION als String die Werte 'true', 'false', 'exit' und 'timeout' kommuniziert werden. Mir ist natürlich klar das dass nicht einfach ist weil es inkompatibel ist.

                                Warum kann man nur dann die Schriftart des Textes im Popup ändern wenn man auf Layout 2 umschaltet? Das funktioniert mit dem Standard Layout prinzipiell auch und die Standard Schriftart des Popups ist arg klein und ich kann keine Icons im Text verwenden.

                                Weil die HMI vor einiger Zeit bereits eine neue zusätzliche Version des popupNotify bekam. Sollte eigentlich die alte ablösen. Wir wollten die alte Version jedoch weiter benutzen (wird aber nicht mehr weiterentwickelt) und haben die daher Layout 1und 2 genannt. In der älteren Version berücksichtigt die Nextion HMI keine Schriftarten...

                                Ich möchte kurz erklären für was ich das verwende. Ich hab mir im ioBroker ein Warningsystem geschrieben das unter anderem überwacht ob alle nötigen Sensoren verfügbar sind und ob der Batteriestand bei batteriebetriebenen Geräten über einen gewissen Grenzwert ist. Alle Warnung werden in einer Liste gesammelt. Da es in der NSPanel UI keine geeignete Page für sowas gibt verwende ich das Layout 1 des Notify Popups. Ich zeige pro Seite 3 Warnungen an und verwende eben auch Symbole damit es auf einen Blick erkennbar ist, was das Problem ist gefolgt von dem überwachten State. Wenn es mehr als 3 Warnungen gibt nutze ich die unteren zwei Tasten zum blättern. Damit die Symbole angezeigt werden muss entsprechend die richtige Schriftart gewählt werden. Die aktuelle Firmware des Nextion Displays entscheidet anhand der Anwesenheit des ICON ob es Layout 1 oder Layout 2 verwendet. Die gewählte Schriftart wird auf beide Layouts angewendet. Das hab ich auch schon ausprobiert in dem ich die Variabel v_popupNotifyFontIdText inde folgendem Codeabschnitt vor das If gezogen habe.

                                            notification = 'entityUpdateDetail' + '~'
                                                + getState(popupNotifyInternalName).val + '~'
                                                + getState(popupNotifyHeading).val + '~'
                                                + v_popupNotifyHeadingColor + '~'
                                                + getState(popupNotifyButton1Text).val + '~'
                                                + v_popupNotifyButton1TextColor + '~'
                                                + getState(popupNotifyButton2Text).val + '~'
                                                + v_popupNotifyButton2TextColor + '~'
                                                + getState(popupNotifyText).val + '~'
                                                + v_popupNotifyTextColor + '~'
                                                + getState(popupNotifySleepTimeout).val;
                                
                                            if (getState(popupNotifyLayout).val == 2) {
                                                notification = notification + '~'
                                                + v_popupNotifyFontIdText + '~'
                                                + Icons.GetIcon(v_popupNotifyIcon) + '~'
                                                + v_popupNotifyIconColor;
                                            }
                                
                                D T 2 Antworten Letzte Antwort
                                0
                                • B Bergi84

                                  @armilar said in SONOFF NSPanel mit Lovelace UI:

                                  @bergi84

                                  Wenn ich ein Notify Popup verwende, wie bekomme ich mit das der Nutzer auf das schließen X in der rechten oberen Ecke gedrückt hat oder der timeout abgelaufen ist. Für die unteren zwei Buttons kann ich ja auf den State "popupNotify.popupNotifyAction" triggern. Das Problem ist ja das mein Trigger scharf bleibt und wenn zufällig ein anderes Notify Popup reinspringt dann passiert irgend was.

                                  weil die HMI bei dem "x" ein bExit sendet und bei den beiden Buttons ein Event mit b1 oder b2, welches ausgewertet werden kann:

                                  396b9563-11da-4081-921c-9fd4a1f3952f-image.png

                                  Somit wird nicht explizit ein "false" gesendet, wenn das "x" gedrückt wird. Das popUp wird durch die HMI beendet.

                                  Das meine ich ja. Wenn ich das Popup verwende bekomme ich eben nicht mit das es geschlossen wurde. Und das ist ungünstig da ja mein Subscribe auf ACTION auch nicht gelöscht wird und sobald ein anderes Popup wie zB Tasmota update hinein springt und ich dort auf Ja drücke wird auch das andere Script fälschlicherweise getriggert. Ich glaube es wäre besser das über ACTION als String die Werte 'true', 'false', 'exit' und 'timeout' kommuniziert werden. Mir ist natürlich klar das dass nicht einfach ist weil es inkompatibel ist.

                                  Warum kann man nur dann die Schriftart des Textes im Popup ändern wenn man auf Layout 2 umschaltet? Das funktioniert mit dem Standard Layout prinzipiell auch und die Standard Schriftart des Popups ist arg klein und ich kann keine Icons im Text verwenden.

                                  Weil die HMI vor einiger Zeit bereits eine neue zusätzliche Version des popupNotify bekam. Sollte eigentlich die alte ablösen. Wir wollten die alte Version jedoch weiter benutzen (wird aber nicht mehr weiterentwickelt) und haben die daher Layout 1und 2 genannt. In der älteren Version berücksichtigt die Nextion HMI keine Schriftarten...

                                  Ich möchte kurz erklären für was ich das verwende. Ich hab mir im ioBroker ein Warningsystem geschrieben das unter anderem überwacht ob alle nötigen Sensoren verfügbar sind und ob der Batteriestand bei batteriebetriebenen Geräten über einen gewissen Grenzwert ist. Alle Warnung werden in einer Liste gesammelt. Da es in der NSPanel UI keine geeignete Page für sowas gibt verwende ich das Layout 1 des Notify Popups. Ich zeige pro Seite 3 Warnungen an und verwende eben auch Symbole damit es auf einen Blick erkennbar ist, was das Problem ist gefolgt von dem überwachten State. Wenn es mehr als 3 Warnungen gibt nutze ich die unteren zwei Tasten zum blättern. Damit die Symbole angezeigt werden muss entsprechend die richtige Schriftart gewählt werden. Die aktuelle Firmware des Nextion Displays entscheidet anhand der Anwesenheit des ICON ob es Layout 1 oder Layout 2 verwendet. Die gewählte Schriftart wird auf beide Layouts angewendet. Das hab ich auch schon ausprobiert in dem ich die Variabel v_popupNotifyFontIdText inde folgendem Codeabschnitt vor das If gezogen habe.

                                              notification = 'entityUpdateDetail' + '~'
                                                  + getState(popupNotifyInternalName).val + '~'
                                                  + getState(popupNotifyHeading).val + '~'
                                                  + v_popupNotifyHeadingColor + '~'
                                                  + getState(popupNotifyButton1Text).val + '~'
                                                  + v_popupNotifyButton1TextColor + '~'
                                                  + getState(popupNotifyButton2Text).val + '~'
                                                  + v_popupNotifyButton2TextColor + '~'
                                                  + getState(popupNotifyText).val + '~'
                                                  + v_popupNotifyTextColor + '~'
                                                  + getState(popupNotifySleepTimeout).val;
                                  
                                              if (getState(popupNotifyLayout).val == 2) {
                                                  notification = notification + '~'
                                                  + v_popupNotifyFontIdText + '~'
                                                  + Icons.GetIcon(v_popupNotifyIcon) + '~'
                                                  + v_popupNotifyIconColor;
                                              }
                                  
                                  D Offline
                                  D Offline
                                  danny_v1
                                  schrieb am zuletzt editiert von
                                  #4049

                                  @bergi84

                                  kannst du das mit dem Warnsystem mal reinstellen wie du das umgesetzt hast.
                                  Sowas habe ich auch noch vor.
                                  Hab das schon mit geöffneten Fenstern beim verlassen das Hauses (auf einem Panel neben der Haustür) umgesetzt , aber so 100% zufrieden bin ich mit dem Layout noch nicht.

                                  1 Antwort Letzte Antwort
                                  0
                                  • B Bergi84

                                    @armilar said in SONOFF NSPanel mit Lovelace UI:

                                    @bergi84

                                    Wenn ich ein Notify Popup verwende, wie bekomme ich mit das der Nutzer auf das schließen X in der rechten oberen Ecke gedrückt hat oder der timeout abgelaufen ist. Für die unteren zwei Buttons kann ich ja auf den State "popupNotify.popupNotifyAction" triggern. Das Problem ist ja das mein Trigger scharf bleibt und wenn zufällig ein anderes Notify Popup reinspringt dann passiert irgend was.

                                    weil die HMI bei dem "x" ein bExit sendet und bei den beiden Buttons ein Event mit b1 oder b2, welches ausgewertet werden kann:

                                    396b9563-11da-4081-921c-9fd4a1f3952f-image.png

                                    Somit wird nicht explizit ein "false" gesendet, wenn das "x" gedrückt wird. Das popUp wird durch die HMI beendet.

                                    Das meine ich ja. Wenn ich das Popup verwende bekomme ich eben nicht mit das es geschlossen wurde. Und das ist ungünstig da ja mein Subscribe auf ACTION auch nicht gelöscht wird und sobald ein anderes Popup wie zB Tasmota update hinein springt und ich dort auf Ja drücke wird auch das andere Script fälschlicherweise getriggert. Ich glaube es wäre besser das über ACTION als String die Werte 'true', 'false', 'exit' und 'timeout' kommuniziert werden. Mir ist natürlich klar das dass nicht einfach ist weil es inkompatibel ist.

                                    Warum kann man nur dann die Schriftart des Textes im Popup ändern wenn man auf Layout 2 umschaltet? Das funktioniert mit dem Standard Layout prinzipiell auch und die Standard Schriftart des Popups ist arg klein und ich kann keine Icons im Text verwenden.

                                    Weil die HMI vor einiger Zeit bereits eine neue zusätzliche Version des popupNotify bekam. Sollte eigentlich die alte ablösen. Wir wollten die alte Version jedoch weiter benutzen (wird aber nicht mehr weiterentwickelt) und haben die daher Layout 1und 2 genannt. In der älteren Version berücksichtigt die Nextion HMI keine Schriftarten...

                                    Ich möchte kurz erklären für was ich das verwende. Ich hab mir im ioBroker ein Warningsystem geschrieben das unter anderem überwacht ob alle nötigen Sensoren verfügbar sind und ob der Batteriestand bei batteriebetriebenen Geräten über einen gewissen Grenzwert ist. Alle Warnung werden in einer Liste gesammelt. Da es in der NSPanel UI keine geeignete Page für sowas gibt verwende ich das Layout 1 des Notify Popups. Ich zeige pro Seite 3 Warnungen an und verwende eben auch Symbole damit es auf einen Blick erkennbar ist, was das Problem ist gefolgt von dem überwachten State. Wenn es mehr als 3 Warnungen gibt nutze ich die unteren zwei Tasten zum blättern. Damit die Symbole angezeigt werden muss entsprechend die richtige Schriftart gewählt werden. Die aktuelle Firmware des Nextion Displays entscheidet anhand der Anwesenheit des ICON ob es Layout 1 oder Layout 2 verwendet. Die gewählte Schriftart wird auf beide Layouts angewendet. Das hab ich auch schon ausprobiert in dem ich die Variabel v_popupNotifyFontIdText inde folgendem Codeabschnitt vor das If gezogen habe.

                                                notification = 'entityUpdateDetail' + '~'
                                                    + getState(popupNotifyInternalName).val + '~'
                                                    + getState(popupNotifyHeading).val + '~'
                                                    + v_popupNotifyHeadingColor + '~'
                                                    + getState(popupNotifyButton1Text).val + '~'
                                                    + v_popupNotifyButton1TextColor + '~'
                                                    + getState(popupNotifyButton2Text).val + '~'
                                                    + v_popupNotifyButton2TextColor + '~'
                                                    + getState(popupNotifyText).val + '~'
                                                    + v_popupNotifyTextColor + '~'
                                                    + getState(popupNotifySleepTimeout).val;
                                    
                                                if (getState(popupNotifyLayout).val == 2) {
                                                    notification = notification + '~'
                                                    + v_popupNotifyFontIdText + '~'
                                                    + Icons.GetIcon(v_popupNotifyIcon) + '~'
                                                    + v_popupNotifyIconColor;
                                                }
                                    
                                    T Offline
                                    T Offline
                                    TT-Tom
                                    schrieb am zuletzt editiert von
                                    #4050

                                    @bergi84

                                    Ein Tipp zum Trigger. Ich prüfe zusätzlich den internen Namen des PopupNotify. Das komplette Script findest du in meinem Github (Fahrplan).

                                     const internalName: string = getState(DP_NSPanel + 'popupNotify.popupNotifyInternalName').val;
                                                if (internalName.includes('Delay')) {
                                                    if (internalName == 'DelayFahrplanScript') {
                                                        console.log('jetzt kommmt Text 2' + Info + '%');
                                    

                                    Damit weist du von welchem popupNotify der Action kommt.

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

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

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

                                    1 Antwort Letzte Antwort
                                    0
                                    • L L4rs

                                      @tt-tom Ist hier auch so, der Raspberry steht auf Europa/Berlin, die Uhrzeit ist aktuell, ioBroker steht ebenfalls auf Deutsch mit dem Datumsformat DD.MM.YYYY und der JS_Adapter verwendet die Systemeinstellungen.

                                      Das Blockly liefert bei mir aber auch den falschen Wert. 02.11.2023 -> 11.02.23.

                                      Gruß, Lars

                                      T Offline
                                      T Offline
                                      TT-Tom
                                      schrieb am zuletzt editiert von
                                      #4051

                                      @l4rs

                                      Hi Lars,

                                      Ich habe hier mal das Problem ins Forum gepostet. Muss mich mit @Armilar noch abstimmen.

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

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

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

                                      1 Antwort Letzte Antwort
                                      0
                                      • B Offline
                                        B Offline
                                        Bergi84
                                        schrieb am zuletzt editiert von
                                        #4052

                                        @danny_v1
                                        puh das ist aber viel verstreuter Code und sicher noch nicht fehlerfrei. Ich versuch mal zumindest den NSPanel teil zu erklären und poste.

                                        Also damit die Liste aufgeht habe ich einen passenden Button Channel in den Objekten unter userdata angelegt:

                                        let mainConfig =  <PageGrid>
                                        {
                                            'type': 'cardGrid',
                                            'heading': 'Einstellungen',
                                            'useColor': true,
                                            'items': [
                                                <PageItem>{ id: '0_userdata.0.NSPanel.1.warning.showAlertInfo', icon: 'alert', name: 'Warnings', offColor: Yellow, onColor: Yellow},
                                        }
                                        

                                        Ich triggere einfach auf das umschalten und zeige anschließen das Notify an. Die Daten sind in mehrere Listen von den jeweiligen Überwachungsscripten aufgeteilt. Und jede liste ist als JSON in einem State der ebenfalls unter userdata gespeichert ist abgelegt. Bei jeder Änderung einer dieser Listen sammle ich alle daten ein sortiere Sie und aktualisiere die Anzeige. Das mach folgender code:

                                        // warn system
                                        createState(NSPanel_Path + 'warning.cnt');
                                        createState(NSPanel_Path + 'warning.aktiv');
                                        
                                        let warnPageNo;
                                        let warnPageCnt;
                                        let warnSubscribeHandler;
                                        let warningList :warningItem[];
                                        let warnItemsPerPage = 4;
                                        
                                        let warningListIds = [
                                            {id: '0_userdata.0.sensorSuperVisor.missingSensors', icon: 'connection', prefix: 'Verloren: ', postfix: ' vor '},
                                            {id: '0_userdata.0.batteryMonitor.batterLow', icon: 'battery-alert-variant-outline', prefix: 'Batterie schwach: ', postfix: ' vor '}
                                        ]
                                        function updateWarnings(aObj: iobJS.ChangedStateObject<any,any>)
                                        {
                                            warningList = [];
                                        
                                            warningListIds.forEach(listEle => {
                                                JSON.parse(getState(listEle.id).val).forEach((e :warningItem) => {
                                                    e.source = listEle.id; warningList.push(e);
                                                });
                                            });
                                        
                                            console.log(JSON.stringify(warningListIds));
                                            console.log(JSON.stringify(warningList));
                                        
                                            let listLen = warningList.length;
                                        
                                            warningList.sort((a, b) => a.time - b.time);
                                        
                                            warnPageCnt = (listLen == 0) ? 1 : ((listLen + warnItemsPerPage-1) / warnItemsPerPage | 0);
                                        
                                            console.log('warnPageCnt: ' + warnPageCnt + ', listLen: ' + listLen);
                                        
                                            setState(NSPanel_Path + 'warning.cnt', warningList.length);
                                            setState(NSPanel_Path + 'warning.aktiv', (warningList.length) > 0);
                                        }
                                        updateWarnings(null);
                                        warningListIds.forEach(e => on({id: e.id, change: 'any'}, updateWarnings));
                                        
                                        function showAlert(aObj: iobJS.ChangedStateObject<any,any>)
                                        {
                                            warnPageNo = 0;
                                            console.log('show Alert: ' + aObj.state.val);
                                        
                                            warnSubscribeHandler = on({id: '0_userdata.0.NSPanel.1.popupNotify.popupNotifyAction', change: 'any'}, switchPage);
                                            showAlarmPage();
                                        
                                            if(Debug) {
                                                console.log('show Alarmpage');
                                            }
                                        }
                                        
                                        function switchPage(aObj: iobJS.ChangedStateObject<any,any>)
                                        {
                                            if(aObj.state.val) {
                                                if(warningList.length != 0 && warnPageCnt != warnPageNo + 1) {
                                                    warnPageNo = warnPageNo + 1;
                                                }
                                            }
                                            else
                                            {
                                                if(warnPageCnt != 0) {
                                                    warnPageNo = warnPageNo - 1;
                                                }
                                            }
                                            showAlarmPage();
                                        
                                            if(Debug) {
                                                console.log('switch Alarmpage');
                                            }
                                        }
                                        on({id: '0_userdata.0.NSPanel.1.warning.showAlertInfo.SET', change: 'any'}, showAlert);
                                        
                                        function showAlarmPage()
                                        {
                                            let itemIndex = 0;
                                            let timeNow = Date.now();
                                        
                                            let popupText :string[] = [];
                                        
                                            if(warningList.length > 0)
                                            {
                                                for(let i = warnPageNo * warnItemsPerPage; i < (warnPageNo + 1)* warnItemsPerPage; i++) {
                                                    if(i < warningList.length) {
                                                        let deltaTime = (timeNow - warningList[i].time)/1000 | 0;
                                                        let deltaTimeStr :string;
                                        
                                                        if(deltaTime < 60) {
                                                            deltaTimeStr = deltaTime + 's';
                                                        } else {
                                                            deltaTime = deltaTime/60 | 0;
                                                            if(deltaTime < 60) {
                                                                deltaTimeStr = deltaTime + 'm';
                                                            } else {
                                                                deltaTime = deltaTime/60 | 0;
                                                                if(deltaTime < 24) {
                                                                    deltaTimeStr = deltaTime + 'h';
                                                                } else {
                                                                    deltaTime = deltaTime/24 | 0;
                                                                    deltaTimeStr = deltaTime + 'd';
                                                                }
                                                            }
                                                        }
                                        
                                                        let sourceList = warningListIds.find(e => e.id == warningList[i].source);
                                        
                                                        popupText.push(Icons.GetIcon(sourceList.icon) + ' ' + sourceList.prefix + warningList[i].objId + sourceList.postfix + deltaTimeStr);
                                                    }
                                                }
                                            }
                                            else
                                            {
                                                popupText.push('No Warnings');
                                            }
                                        
                                            setStateAsync(popupNotifyHeading, <iobJS.State>{ val: 'Warnungsliste (' + (warnPageNo + 1) + '/' + warnPageCnt + ')', ack: false });
                                            setStateAsync(popupNotifyHeadingColor, <iobJS.State>{ val: rgb_dec565(Yellow).toString(), ack: false });
                                            setStateAsync(popupNotifyButton1Text, <iobJS.State>{ val: warnPageNo != 0 ? 'up' : '', ack: false });
                                            setStateAsync(popupNotifyButton1TextColor, <iobJS.State>{ val: rgb_dec565(White).toString(), ack: false });
                                            setStateAsync(popupNotifyButton2Text, <iobJS.State>{ val: (warnPageNo + 1) != warnPageCnt ? 'down' : '', ack: false });
                                            setStateAsync(popupNotifyButton2TextColor, <iobJS.State>{ val: rgb_dec565(White).toString(), ack: false });
                                            setStateAsync(popupNotifySleepTimeout, <iobJS.State>{ val: getState('0_userdata.0.NSPanel.1.Config.Screensaver.timeoutScreensaver').val, ack: false });
                                            setStateAsync(popupNotifyInternalName, <iobJS.State>{ val: '', ack: false });
                                            setStateAsync(popupNotifyLayout, <iobJS.State>{ val: 1, ack: false });
                                            setStateAsync(popupNotifyFontIdText, <iobJS.State>{ val: 1, ack: false });
                                            setStateAsync(popupNotifyText, <iobJS.State>{ val: popupText.join('\r\n\r\n'), ack: false });
                                        }
                                        
                                        type warningItem = {
                                            objId: string,
                                            time: number,
                                            source: (string | undefined)
                                        };
                                        

                                        @TT-Tom
                                        Danke das war genau der hinweis den ich gebraucht habe.

                                        draexlerD 1 Antwort Letzte Antwort
                                        0
                                        • B Bergi84

                                          @danny_v1
                                          puh das ist aber viel verstreuter Code und sicher noch nicht fehlerfrei. Ich versuch mal zumindest den NSPanel teil zu erklären und poste.

                                          Also damit die Liste aufgeht habe ich einen passenden Button Channel in den Objekten unter userdata angelegt:

                                          let mainConfig =  <PageGrid>
                                          {
                                              'type': 'cardGrid',
                                              'heading': 'Einstellungen',
                                              'useColor': true,
                                              'items': [
                                                  <PageItem>{ id: '0_userdata.0.NSPanel.1.warning.showAlertInfo', icon: 'alert', name: 'Warnings', offColor: Yellow, onColor: Yellow},
                                          }
                                          

                                          Ich triggere einfach auf das umschalten und zeige anschließen das Notify an. Die Daten sind in mehrere Listen von den jeweiligen Überwachungsscripten aufgeteilt. Und jede liste ist als JSON in einem State der ebenfalls unter userdata gespeichert ist abgelegt. Bei jeder Änderung einer dieser Listen sammle ich alle daten ein sortiere Sie und aktualisiere die Anzeige. Das mach folgender code:

                                          // warn system
                                          createState(NSPanel_Path + 'warning.cnt');
                                          createState(NSPanel_Path + 'warning.aktiv');
                                          
                                          let warnPageNo;
                                          let warnPageCnt;
                                          let warnSubscribeHandler;
                                          let warningList :warningItem[];
                                          let warnItemsPerPage = 4;
                                          
                                          let warningListIds = [
                                              {id: '0_userdata.0.sensorSuperVisor.missingSensors', icon: 'connection', prefix: 'Verloren: ', postfix: ' vor '},
                                              {id: '0_userdata.0.batteryMonitor.batterLow', icon: 'battery-alert-variant-outline', prefix: 'Batterie schwach: ', postfix: ' vor '}
                                          ]
                                          function updateWarnings(aObj: iobJS.ChangedStateObject<any,any>)
                                          {
                                              warningList = [];
                                          
                                              warningListIds.forEach(listEle => {
                                                  JSON.parse(getState(listEle.id).val).forEach((e :warningItem) => {
                                                      e.source = listEle.id; warningList.push(e);
                                                  });
                                              });
                                          
                                              console.log(JSON.stringify(warningListIds));
                                              console.log(JSON.stringify(warningList));
                                          
                                              let listLen = warningList.length;
                                          
                                              warningList.sort((a, b) => a.time - b.time);
                                          
                                              warnPageCnt = (listLen == 0) ? 1 : ((listLen + warnItemsPerPage-1) / warnItemsPerPage | 0);
                                          
                                              console.log('warnPageCnt: ' + warnPageCnt + ', listLen: ' + listLen);
                                          
                                              setState(NSPanel_Path + 'warning.cnt', warningList.length);
                                              setState(NSPanel_Path + 'warning.aktiv', (warningList.length) > 0);
                                          }
                                          updateWarnings(null);
                                          warningListIds.forEach(e => on({id: e.id, change: 'any'}, updateWarnings));
                                          
                                          function showAlert(aObj: iobJS.ChangedStateObject<any,any>)
                                          {
                                              warnPageNo = 0;
                                              console.log('show Alert: ' + aObj.state.val);
                                          
                                              warnSubscribeHandler = on({id: '0_userdata.0.NSPanel.1.popupNotify.popupNotifyAction', change: 'any'}, switchPage);
                                              showAlarmPage();
                                          
                                              if(Debug) {
                                                  console.log('show Alarmpage');
                                              }
                                          }
                                          
                                          function switchPage(aObj: iobJS.ChangedStateObject<any,any>)
                                          {
                                              if(aObj.state.val) {
                                                  if(warningList.length != 0 && warnPageCnt != warnPageNo + 1) {
                                                      warnPageNo = warnPageNo + 1;
                                                  }
                                              }
                                              else
                                              {
                                                  if(warnPageCnt != 0) {
                                                      warnPageNo = warnPageNo - 1;
                                                  }
                                              }
                                              showAlarmPage();
                                          
                                              if(Debug) {
                                                  console.log('switch Alarmpage');
                                              }
                                          }
                                          on({id: '0_userdata.0.NSPanel.1.warning.showAlertInfo.SET', change: 'any'}, showAlert);
                                          
                                          function showAlarmPage()
                                          {
                                              let itemIndex = 0;
                                              let timeNow = Date.now();
                                          
                                              let popupText :string[] = [];
                                          
                                              if(warningList.length > 0)
                                              {
                                                  for(let i = warnPageNo * warnItemsPerPage; i < (warnPageNo + 1)* warnItemsPerPage; i++) {
                                                      if(i < warningList.length) {
                                                          let deltaTime = (timeNow - warningList[i].time)/1000 | 0;
                                                          let deltaTimeStr :string;
                                          
                                                          if(deltaTime < 60) {
                                                              deltaTimeStr = deltaTime + 's';
                                                          } else {
                                                              deltaTime = deltaTime/60 | 0;
                                                              if(deltaTime < 60) {
                                                                  deltaTimeStr = deltaTime + 'm';
                                                              } else {
                                                                  deltaTime = deltaTime/60 | 0;
                                                                  if(deltaTime < 24) {
                                                                      deltaTimeStr = deltaTime + 'h';
                                                                  } else {
                                                                      deltaTime = deltaTime/24 | 0;
                                                                      deltaTimeStr = deltaTime + 'd';
                                                                  }
                                                              }
                                                          }
                                          
                                                          let sourceList = warningListIds.find(e => e.id == warningList[i].source);
                                          
                                                          popupText.push(Icons.GetIcon(sourceList.icon) + ' ' + sourceList.prefix + warningList[i].objId + sourceList.postfix + deltaTimeStr);
                                                      }
                                                  }
                                              }
                                              else
                                              {
                                                  popupText.push('No Warnings');
                                              }
                                          
                                              setStateAsync(popupNotifyHeading, <iobJS.State>{ val: 'Warnungsliste (' + (warnPageNo + 1) + '/' + warnPageCnt + ')', ack: false });
                                              setStateAsync(popupNotifyHeadingColor, <iobJS.State>{ val: rgb_dec565(Yellow).toString(), ack: false });
                                              setStateAsync(popupNotifyButton1Text, <iobJS.State>{ val: warnPageNo != 0 ? 'up' : '', ack: false });
                                              setStateAsync(popupNotifyButton1TextColor, <iobJS.State>{ val: rgb_dec565(White).toString(), ack: false });
                                              setStateAsync(popupNotifyButton2Text, <iobJS.State>{ val: (warnPageNo + 1) != warnPageCnt ? 'down' : '', ack: false });
                                              setStateAsync(popupNotifyButton2TextColor, <iobJS.State>{ val: rgb_dec565(White).toString(), ack: false });
                                              setStateAsync(popupNotifySleepTimeout, <iobJS.State>{ val: getState('0_userdata.0.NSPanel.1.Config.Screensaver.timeoutScreensaver').val, ack: false });
                                              setStateAsync(popupNotifyInternalName, <iobJS.State>{ val: '', ack: false });
                                              setStateAsync(popupNotifyLayout, <iobJS.State>{ val: 1, ack: false });
                                              setStateAsync(popupNotifyFontIdText, <iobJS.State>{ val: 1, ack: false });
                                              setStateAsync(popupNotifyText, <iobJS.State>{ val: popupText.join('\r\n\r\n'), ack: false });
                                          }
                                          
                                          type warningItem = {
                                              objId: string,
                                              time: number,
                                              source: (string | undefined)
                                          };
                                          

                                          @TT-Tom
                                          Danke das war genau der hinweis den ich gebraucht habe.

                                          draexlerD Nicht stören
                                          draexlerD Nicht stören
                                          draexler
                                          schrieb am zuletzt editiert von
                                          #4053

                                          Will das hier nicht kappern ;-) Aber vielleicht kann ja jemand zwei Panels brauchen bzw. scheut das flashen.

                                          https://forum.iobroker.net/topic/69548/verkaufe-zwei-sonoff-nspanel

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


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          246

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          Themen

                                          1.3m

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

                                          • Du hast noch kein Konto? Registrieren

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