Navigation

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

    NEWS

    • 15. 05. Wartungsarbeiten am ioBroker Forum

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    Sonoff NSPanel

    This topic has been deleted. Only users with topic management privileges can see it.
    • D
      DocGame @gecko1a last edited by

      @gecko1a Bezüglich des Temperatur-Unterschied Problems hat mir saeft_2003 Tip geholfen:

      @saeft_2003 sagte in Sonoff NSPanel:

      @docgame

      Ja bei mir war das auch so mit den 5 Grad. Probiere mal die Parameter die kommen bei mir ganz gut hin

      {"AdcParam1":[2,28000,18000,13950]}

      Noch ein Tipp mit nspdim 0 und 1 kannst du steuern ob das Display nur gedimmt wird oder ganz ausgeschalten wird. Tagsüber wird es bei mir gedimmt und Nachts oder bei Abwesenheit ist es aus.

      Bei der Temperatur-Steuerpage und dem einbinden der Widgets an ioBroker Datenpunkte gibt es leider keine Fortschritte.

      1 Reply Last reply Reply Quote 0
      • D
        DocGame @hene42 last edited by DocGame

        @hene42 @saeft_2003 Ich habe irgendwie schon immer Probleme beim parsen von Mqtt-Json's.
        Vielleicht sollte man auf Github beim Sonoffadapter ein Issue aufmachen um an die "Virtuellen" States ran zu kommen.
        Die Hardwarebuttons sind ja kein Problem, ist ja aber nicht die Lösung, da hierzu auch ein Schelly2.5 hinter dem Schalter ausgereicht hätte.
        Irgendwie müsste man doch an die Funktionen rankommen. scheinbar geht ja jetzt auch Rollo-Steuerung. (NSPanel Curtain )
        Da ich mit meinem bescheidenen Wissen nur solche simplen Blocklys hinbekomme warte ich einfach mal auf neuste Erkenntnisse.
        NSBlockly.JPG

        T 1 Reply Last reply Reply Quote 0
        • T
          timbo @DocGame last edited by

          Ich habe auch ein NSPanel am laufen und bis auf die Widgets funktioniert das soweit auch.
          Was ich gern hätte, wäre folgendes:

          der linke Schalter schaltet eine Deckenlampe an/aus - alles perfekt. Der rechte Schalter ist momentan so, dass ich den Status im ioBrocker abfrage und damit dann Hue Lampen in dem Zimmer schalte. Funktioniert auch alles, aber da in dem Zimmer auch eine Alexa ist und mit dieser die Hue Lampen auch geschaltet werden können, ist der Status am rechten Schalter des NSpanels natürlich dann nicht synchron. Ich habe mich schon an einem Blockly versucht, aber irgendwie eine Todesschleife hinbekommen und dafür gesorgt, dass die Hue Lampen ca. 5 min an / aus gingen 🙂

          Hat jemand einen Tipp, wie ich das hinbekomme?

          Gruß Timo

          haus-automatisierung 1 Reply Last reply Reply Quote 0
          • haus-automatisierung
            haus-automatisierung Developer Most Active @timbo last edited by

            @timbo sagte in Sonoff NSPanel:

            Hat jemand einen Tipp, wie ich das hinbekomme?

            1. Hast Du den Button in Tasmota vom Relais entkoppelt?
            2. Löse den Status auf dem Display von Tasmota (in der nspanel.be)
            3. Sorge dafür, dass jeder Tastendruck per MQTT gesendet wird
            4. Führe den Status ausschließlich (für bestätigte Änderungen) in ioBroker. Wie das geht, steht hier

            {"switches":[{"outlet":1,"switch":"on"}]}

            Fertig. Siehe auch

            https://haus-automatisierung.com/hardware/sonoff/2022/01/18/sonoff-nspanel-iobroker.html

            1 Reply Last reply Reply Quote 1
            • D
              doc.snyder112 last edited by

              Hallo,
              ich habe mit meinen NSPanel das Problem, daß ich per MQTT keine Befehle an das Panel senden kann. Es sollte ja eigendlich ins topic
              mqtt.0.SmartHome.nspanel_2BEE78.cmnd.NSPSend
              und dort z.B. {"index":2, "type":"delete"} das Senden und das 2. Widget sollte verschwinden.

              In der Tasmota Console klappt das auch wunderbar. Meldungen vom Panel zum Iobroker gehen auch.

              Vielleicht kann mir jemand weiterhelfen.
              Grüße Danilo

              haus-automatisierung 1 Reply Last reply Reply Quote 0
              • haus-automatisierung
                haus-automatisierung Developer Most Active @doc.snyder112 last edited by

                @doc-snyder112 sagte in Sonoff NSPanel:

                ich habe mit meinen NSPanel das Problem, daß ich per MQTT keine Befehle an das Panel senden kann.

                Wie hast Du den Datenpunkt denn angelegt? Ich sende dafür immer einen Befehl aus einem MQTT-Programm (wie MQTT-Explorer) damit dieser in ioBroker angelegt wird. Manuell anlegen klappt nicht, weil Dir dann das native-Attribut für das Topic fehlt.

                BananaJoe Dark Angel 2 Replies Last reply Reply Quote 0
                • BananaJoe
                  BananaJoe Most Active @haus-automatisierung last edited by

                  @haus-automatisierung @doc-snyder112

                  Manuell anlegen im ioBroker klappt nur über die SendTo-Methode, bin ich auch schon drüber gestolpert:

                  // Beispiel für SendTo von https://github.com/ioBroker/ioBroker.mqtt
                  // Test ob ich das zum Anlegen von neuen MQTT-Topics etc. nutzen kann
                  /*
                   * @param {string}  MQTT instance     Specify MQTT instance to send message through (may be either server or client)
                   * @param {string}  action            Action to use (always 'sendMessage2Client' for sending plain messages)
                   * @param {object}  payload         
                   * @param {string}  payload.topic     Topic to publish message on
                   * @param {string}  payload.message   Message to be published on specified topic
                   *
                   */
                  sendTo('mqtt.0', 'sendMessage2Client', {topic: 'znil/Tests/Testnachricht', message: '42'});
                  

                  oder als Blockly:
                  54e7076e-7cb9-4507-80d5-aca8bbc01b23-image.png
                  Export:

                  <xml xmlns="https://developers.google.com/blockly/xml">
                    <block type="sendto_custom" id="BWr5ehE:SME/#2Y:xw7n" x="138" y="163">
                      <mutation xmlns="http://www.w3.org/1999/xhtml" items="topic,message" with_statement="false"></mutation>
                      <field name="INSTANCE">mqtt.0</field>
                      <field name="COMMAND">sendMessage2Client</field>
                      <field name="LOG"></field>
                      <field name="WITH_STATEMENT">FALSE</field>
                      <value name="ARG0">
                        <shadow type="text" id="shDRnRIW0=J[-cD/uTNJ">
                          <field name="TEXT">znil/Tests/TestnachrichtBlockly</field>
                        </shadow>
                      </value>
                      <value name="ARG1">
                        <shadow type="text" id="KvpMsF((eyp:O5@zp#uw">
                          <field name="TEXT">99</field>
                        </shadow>
                      </value>
                    </block>
                  </xml>
                  
                  1 Reply Last reply Reply Quote 0
                  • D
                    doc.snyder112 last edited by

                    Danke für die Tips.

                    Ich hatte allerdings einen Fehler in der MQTT Adapter Konfig.

                    Jetzt Funktioniert es.

                    1 Reply Last reply Reply Quote 1
                    • Leone Mortuo
                      Leone Mortuo last edited by

                      Tach zusammen,

                      ich bastele nun auch seit einigen Tagen an dem Panel rum. Will an der Stelle gerne meine Erfahrungen teilen.
                      Ich bin zwar mit TASMOTA generell schon einige Jahre vertraut, bei dem PANEL hat mir aber sehr die Anleitung dieses Kollegen geholfen:

                      https://haus-automatisierung.com/hardware/sonoff/2022/01/18/sonoff-nspanel-iobroker.html

                      Zum Auslesen, Schalten und Widget setzen hat er bereits ein für meine Begriffe gutes Basisscript zur Verfügung gestellt, das man natürlich noch weiter anpassen muss je nachdem was man haben will. (wird im Video kurz erklärt, hilft vll. beim anfänglichen Verständnis).
                      Ich habe das noch ein wenig für meine Bedürfnisse aufgebohrt, bspw. das die Main-Widgets (Switche) direkt auch einen ordentlichen Namen bekommen und nicht nur Index heißen.

                      Zu meiner Frage an der Stelle:
                      Hat jemand evtl. eine Möglichkeit gefunden bei den Multiswitches den Namen der einzelnen OUTLETS zu ändern?
                      Es ist für mich wenig hilfreich und sinnig, dass ich dann zwar bis zu 4 Outlets habe - diese aber nicht umbenennen kann. habe schon einiges versucht, aber es ist mir leider noch nicht gelungen.
                      Der Parameter "name" in der JSON bspw., egal an welcher position ändert stets nur den Namen des "Haupt"-Switches aber nicht der darunter liegenden Outlets.

                      Hier sind verschiedene Parameter auch im Details aufgelistet und erklärt:

                      https://blakadder.github.io/nspanel/

                      Allerdings wird dort auch behauptet das man den Namen generell nicht ändern kann...was bei mir ja funktioniert.
                      ich hab also noch Hoffnung.

                      unten hier noch mein angepasstes Blockly Script.

                      Grüße John


                      <xml xmlns="https://developers.google.com/blockly/xml">
                      <variables>
                      <variable id="[pN7+pI7mS^v48AI2C">temp</variable> <variable id="cgN3b1dG]l9vJae#x%.|">index</variable> <variable id="H0NS77?9z5:L[t(ay.@">ctype</variable>
                      <variable id="/a:u~VISw+Afcj|JR|8O">type</variable>
                      <variable id="vYE5j0|Ypb@Dn;AYwl.
                      ">var_name</variable>
                      <variable id="}1#OtR3yZ8ZdPNuPzT9">params</variable>
                      <variable id="~[^+suo|DPeoXQ|a#U$O">mqttCmndId</variable>
                      <variable id="aevDUp]R;DeT@4L/rdho">mqttLwtId</variable>
                      <variable id="Hgc9h6j{(_HrOD+W-rN2">widgetIndex</variable>
                      <variable id="ZpE5jt??D}:s}opX$elU">mqttResultId</variable>
                      <variable id="tIM,K-nHxcf0DRJN(Y)C">resultObj</variable>
                      <variable type="timeout" id="waitForBoot">waitForBoot</variable>
                      </variables>
                      <block type="procedures_defcustomnoreturn" id="tBm:we7xW3,X53RAG]ER" x="63" y="13">
                      <mutation statements="false">
                      <arg name="temp" varid="[pN
                      7+pI7mS^v48AI2C"></arg> </mutation> <field name="NAME">setTemperature</field> <field name="SCRIPT">Y29uc3QgdGVtcE9iamVjdCA9IHsKICAgIHRlbXBlcmF0dXJlOiB0ZW1wCn07CmNvbnNvbGUubG9nKCdOU1BTZW5kOiAnICsgSlNPTi5zdHJpbmdpZnkodGVtcE9iamVjdCkpOwpzZXRTdGF0ZShtcXR0Q21uZElkLCBKU09OLnN0cmluZ2lmeSh0ZW1wT2JqZWN0KSk7</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> </block> <block type="procedures_defcustomnoreturn" id="QZ(E*R:#^tJDH@B?4EHF" x="63" y="38"> <mutation statements="false"> <arg name="index" varid="cgN3b1dG]l9vJae#x%.|"></arg> </mutation> <field name="NAME">deleteWidget</field> <field name="SCRIPT">Y29uc3Qgd2lkZ2V0T2JqZWN0ID0gewogICAgaW5kZXg6IGluZGV4LAogICAgdHlwZTogJ2RlbGV0ZScKfTsKY29uc29sZS5sb2coJ05TUFNlbmQ6ICcgKyBKU09OLnN0cmluZ2lmeSh3aWRnZXRPYmplY3QpKTsKc2V0U3RhdGUobXF0dENtbmRJZCwgSlNPTi5zdHJpbmdpZnkod2lkZ2V0T2JqZWN0KSk7</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> </block> <block type="procedures_defcustomnoreturn" id="Z1gw8,0k6N~]9.0I{c!" x="63" y="63">
                      <mutation statements="false">
                      <arg name="index" varid="cgN3b1dG]l9vJae#x%.|"></arg>
                      <arg name="ctype" varid="H0NS77?9z5:L[t(ay.@"></arg> <arg name="type" varid="/a:u~VISw+Afcj|JR|8O"></arg> <arg name="var_name" varid="vYE5j0|Ypb@Dn;AYwl.*"></arg> </mutation> <field name="NAME">createWidget</field> <field name="SCRIPT">Y29uc3Qgd2lkZ2V0T2JqZWN0ID0gewogICAgIkhNSV9yZXNvdXJjZXMiOiBbCiAgICAgICAgewogICAgICAgICAgICAiaW5kZXgiOiBpbmRleCwKICAgICAgICAgICAgImN0eXBlIjogY3R5cGUsCiAgICAgICAgICAgICJpZCI6IGluZGV4LnRvU3RyaW5nKCksCiAgICAgICAgICAgICJ1aWlkIjogdHlwZQogICAgICAgIH0KICAgIF0KfTsKY29uc29sZS5sb2coJ05TUFNlbmQ6ICcgKyBKU09OLnN0cmluZ2lmeSh3aWRnZXRPYmplY3QpKTsKc2V0U3RhdGUobXF0dENtbmRJZCwgSlNPTi5zdHJpbmdpZnkod2lkZ2V0T2JqZWN0KSk7CgovL3NldCBuYW1lCmNvbnN0IHJlbGF0aW9uT2JqZWN0MiA9IHsKICAgICJyZWxhdGlvbiI6IFsKICAgICAgICB7CiAgICAgICAgICAgICJpZCI6IGluZGV4LnRvU3RyaW5nKCksCiAgICAgICAgICAgICJuYW1lIjogdmFyX25hbWUsCiAgICAgICAgICAgICJvbmxpbmUiOiB0cnVlCiAgICAgICAgICAgIAogICAgICAgIH0KICAgIF0KfTsKY29uc29sZS5sb2coJ05TUFNlbmQ6ICcgKyBKU09OLnN0cmluZ2lmeShyZWxhdGlvbk9iamVjdDIpKTsKc2V0U3RhdGUobXF0dENtbmRJZCwgSlNPTi5zdHJpbmdpZnkocmVsYXRpb25PYmplY3QyKSk7</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> </block> <block type="procedures_defcustomnoreturn" id="JjKn(WNnRSx123AsRjB1" x="63" y="88"> <mutation statements="false"> <arg name="index" varid="cgN3b1dG]l9vJae#x%.|"></arg> <arg name="params" varid="}1#OtR*3yZ8ZdPNuPzT9"></arg> </mutation> <field name="NAME">setWidgetParams</field> <field name="SCRIPT">Y29uc3QgcmVsYXRpb25PYmplY3QgPSB7CiAgICAicmVsYXRpb24iOiBbCiAgICAgICAgewogICAgICAgICAgICAiaWQiOiBpbmRleC50b1N0cmluZygpLAogICAgICAgICAgICAib25saW5lIjogdHJ1ZSwKICAgICAgICAgICAgInBhcmFtcyI6IHBhcmFtcwogICAgICAgIH0KICAgIF0KfTsKY29uc29sZS5sb2coJ05TUFNlbmQ6ICcgKyBKU09OLnN0cmluZ2lmeShyZWxhdGlvbk9iamVjdCkpOwpzZXRTdGF0ZShtcXR0Q21uZElkLCBKU09OLnN0cmluZ2lmeShyZWxhdGlvbk9iamVjdCkpOwo=</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> </block> <block type="procedures_defcustomnoreturn" id="^xL3c=7]_~zw,h7S7$0W" x="62" y="113"> <mutation statements="false"> <arg name="index" varid="cgN3b1dG]l9vJae#x%.|"></arg> <arg name="var_name" varid="vYE5j0|Ypb@Dn;AYwl.*"></arg> </mutation> <field name="NAME">setWidgetName</field> <field name="SCRIPT">Y29uc3QgcmVsYXRpb25PYmplY3QyID0gewogICAgInJlbGF0aW9uIjogWwogICAgICAgIHsKICAgICAgICAgICAgImlkIjogaW5kZXgsCiAgICAgICAgICAgICJuYW1lIjogdmFyX25hbWUsCiAgICAgICAgICAgICJvbmxpbmUiOiB0cnVlCiAgICAgICAgICAgIAogICAgICAgIH0KICAgIF0KfTsKY29uc29sZS5sb2coJ05TUFNlbmQ6ICcgKyBKU09OLnN0cmluZ2lmeShyZWxhdGlvbk9iamVjdDIpKTsKc2V0U3RhdGUobXF0dENtbmRJZCwgSlNPTi5zdHJpbmdpZnkocmVsYXRpb25PYmplY3QyKSk7</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> </block> <block type="procedures_defnoreturn" id="9zfL=sT{0k2)6;~l)o|}" x="62" y="162"> <field name="NAME">initWidgets</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> <statement name="STACK"> <block type="procedures_callcustomnoreturn" id="_Na?8dXXNdmc^z/;c}u^"> <mutation name="createWidget"> <arg name="index"></arg> <arg name="ctype"></arg> <arg name="type"></arg> <arg name="var_name"></arg> </mutation> <value name="ARG0"> <block type="math_number" id="qhMlPMISbd_t30tPg)u">
                      <field name="NUM">1</field>
                      </block>
                      </value>
                      <value name="ARG1">
                      <block type="text" id="fB@CZ9L7Tx)5Ae[S-/Kr">
                      <field name="TEXT">group</field>
                      </block>
                      </value>
                      <value name="ARG2">
                      <block type="math_number" id="+]TF(%Eq^^u%CHD5z.{">
                      <field name="NUM">1</field>
                      </block>
                      </value>
                      <value name="ARG3">
                      <block type="text" id="1kafWi;p!WwUnO..ME">
                      <field name="TEXT">Couche</field>
                      </block>
                      </value>
                      <next>
                      <block type="procedures_callcustomnoreturn" id="g#9!6tcf^x/rHwKM,;+H">
                      <mutation name="createWidget">
                      <arg name="index"></arg>
                      <arg name="ctype"></arg>
                      <arg name="type"></arg>
                      <arg name="var_name"></arg>
                      </mutation>
                      <value name="ARG0">
                      <block type="math_number" id="-t;%S;D7C(q;HRaU/,G?">
                      <field name="NUM">2</field>
                      </block>
                      </value>
                      <value name="ARG1">
                      <block type="text" id="OFP_{UxCUjXj/nZAvr8z">
                      <field name="TEXT">group</field>
                      </block>
                      </value>
                      <value name="ARG2">
                      <block type="math_number" id="XK$T@k8Br_M:``LnN7ge">
                      <field name="NUM">4</field>
                      </block>
                      </value>
                      <value name="ARG3">
                      <block type="text" id="]pUdyT3TVb9y]J*P~Zc"> <field name="TEXT">Garten</field> </block> </value> <next> <block type="controls_for" id="Zj7J8U}-2jtZ_@X*S("> <field name="VAR" id="Hgc9h6j{(_HrOD+W-rN2">widgetIndex</field> <value name="FROM"> <shadow type="math_number" id="*?tw.{_R[c0jlY6V[[%("> <field name="NUM">3</field> </shadow> </value> <value name="TO"> <shadow type="math_number" id="zy3_@3T]3S-l^%-,r%4n"> <field name="NUM">8</field> </shadow> </value> <value name="BY"> <shadow type="math_number" id=":KMFw#)jV[xkn6C%-7}~"> <field name="NUM">1</field> </shadow> </value> <statement name="DO"> <block type="procedures_callcustomnoreturn" id="EmNj8nlDc1$gu({hJA9,"> <mutation name="deleteWidget"> <arg name="index"></arg> </mutation> <value name="ARG0"> <block type="variables_get" id="t(|9o:Gv,o,[eX!/lkro"> <field name="VAR" id="Hgc9h6j{(_HrOD+W-rN2">widgetIndex</field> </block> </value> </block> </statement> </block> </next> </block> </next> </block> </statement> </block> <block type="comment" id="yJ9?Mh}-G^y1Lg}W!ror" x="63" y="638"> <field name="COMMENT">Full topic in Tasmota: SmartHome/%topic%/%prefix%/</field> <next> <block type="variables_set" id="!ZL27~%4XS^GIsp$,TjP"> <field name="VAR" id="~[^+suo|DPeoXQ|a#U$O">mqttCmndId</field> <value name="VALUE"> <block type="field_oid" id="RZOc)Pb(~=CW],;60V*M"> <field name="oid">mqtt.0.NSPANEL.tasmota_7DD4EC.cmnd.NSPSend</field> </block> </value> <next> <block type="variables_set" id="bun(psdk1Bh4bV(-d^Fw"> <field name="VAR" id="aevDUp]R;DeT@4L/rdho">mqttLwtId</field> <value name="VALUE"> <block type="field_oid" id="t)%4COMDb9PoSEOuE_c">
                      <field name="oid">mqtt.0.NSPANEL.tasmota_7DD4EC.tele.LWT</field>
                      </block>
                      </value>
                      <next>
                      <block type="variables_set" id="rITtEbJ
                      XnsZ%(|)AxGY">
                      <field name="VAR" id="ZpE5jt??D}:s}opX$elU">mqttResultId</field>
                      <value name="VALUE">
                      <block type="field_oid" id="8VYgu@Y0QKWL:0wP;^Iw">
                      <field name="oid">mqtt.0.NSPANEL.tasmota_7DD4EC.tele.RESULT</field>
                      </block>
                      </value>
                      <next>
                      <block type="procedures_callnoreturn" id="5B,M{6073Jx7.7S{}4]G">
                      <mutation name="initWidgets"></mutation>
                      <next>
                      <block type="on_ext" id="IHkIGB_aJ=={[#xJH3Cl">
                      <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
                      <field name="CONDITION">any</field>
                      <field name="ACK_CONDITION">true</field>
                      <value name="OID0">
                      <shadow type="field_oid" id=":%Z+6DxleqY],NLY3Y">
                      <field name="oid">default</field>
                      </shadow>
                      <block type="variables_get" id="7RP1(a[;d4fV2Du[vo+[">
                      <field name="VAR" id="ZpE5jt??D}:s}opX$elU">mqttResultId</field>
                      </block>
                      </value>
                      <statement name="STATEMENT">
                      <block type="variables_set" id="GQp/+B[#cS7
                      ;jJ)bKdg">
                      <field name="VAR" id="tIM,K-nHxcf0DRJN(Y)C">resultObj</field>
                      <value name="VALUE">
                      <block type="convert_json2object" id="6OUSmanN;zWzb;C0f3m{">
                      <value name="VALUE">
                      <block type="on_source" id="h-A5c/u;9ucgT|K/ntg%">
                      <field name="ATTR">state.val</field>
                      </block>
                      </value>
                      </block>
                      </value>
                      <next>
                      <block type="controls_if" id="=1^,PC#~rRZtbF{VZjR">
                      <value name="IF0">
                      <block type="get_attr" id="K1s;#/e2g8YZT/Lu}c_?">
                      <value name="PATH">
                      <shadow type="text" id="Hkv+uAyP3^#W~h]99@t">
                      <field name="TEXT">NSPanel</field>
                      </shadow>
                      </value>
                      <value name="OBJECT">
                      <block type="variables_get" id="K31i70L$$?X50OY?$nY{">
                      <field name="VAR" id="tIM,K-nHxcf0DRJN(Y)C">resultObj</field>
                      </block>
                      </value>
                      </block>
                      </value>
                      <statement name="DO0">
                      <block type="variables_set" id="64^z.-QNoJQ_+6LM5mU9">
                      <field name="VAR" id="Hgc9h6j{(_HrOD+W-rN2">widgetIndex</field>
                      <value name="VALUE">
                      <block type="get_attr" id="BHJGBbK,iqHZO^-F@k-q">
                      <value name="PATH">
                      <shadow type="text" id="U$LR3~OE
                      i9S]:NRb.pY">
                      <field name="TEXT">NSPanel.id</field>
                      </shadow>
                      </value>
                      <value name="OBJECT">
                      <block type="variables_get" id="r^]pHhk+Xo5t1AKb-O,j">
                      <field name="VAR" id="tIM,K-nHxcf0DRJN(Y)C">resultObj</field>
                      </block>
                      </value>
                      </block>
                      </value>
                      <next>
                      <block type="comment" id="BWRRa8Il{h-N;zD@jUf=">
                      <field name="COMMENT">Für welches Widget ist der Befehl?</field>
                      <next>
                      <block type="controls_if" id="X}Xt@.~;{y]=C/(R@vo,">
                      <mutation elseif="1"></mutation>
                      <value name="IF0">
                      <block type="logic_compare" id="PzVs
                      ;ol!KBLj^t)q|">
                      <field name="OP">EQ</field>
                      <value name="A">
                      <block type="variables_get" id="n~Bg9~[gqs[,X-E8M}o"> <field name="VAR" id="Hgc9h6j{(_HrOD+W-rN2">widgetIndex</field> </block> </value> <value name="B"> <block type="math_number" id="Oy8gy}|^Q+y-Tg+a.3cx"> <field name="NUM">1</field> </block> </value> </block> </value> <statement name="DO0"> <block type="comment" id="Awlzupeq7qdMK5AGOi]$"> <field name="COMMENT">Ist es ein Switch-Befehl?</field> <next> <block type="controls_if" id="y=G2tAb|R1EZP-vzy0|%"> <value name="IF0"> <block type="get_attr" id="TTx_Jvq)XqxKQ/xbl1Ub"> <value name="PATH"> <shadow type="text" id="Szg@1uiFGYgs*N3_Q!2k"> <field name="TEXT">NSPanel.params.switch</field> </shadow> </value> <value name="OBJECT"> <block type="variables_get" id="jy4?,JKnm#6S.:3iI[S5"> <field name="VAR" id="tIM,K-nHxcf0DRJN(Y)C">resultObj</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="EeIf8hXqw_zP/[c3iWh~"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.Hilfsobjekte.dump3</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_compare" id="|8Bl3@O7mOZ%*g*n1QYT"> <field name="OP">EQ</field> <value name="A"> <block type="get_attr" id="X{!@:/Ael+hT^7v10DWK"> <value name="PATH"> <shadow type="text" id="K-MPcd~az/E.B1,4hG3u"> <field name="TEXT">NSPanel.params.switch</field> </shadow> </value> <value name="OBJECT"> <block type="variables_get" id="r[3fNz]UId/UyCmdav6]"> <field name="VAR" id="tIM,K-nHxcf0DRJN(Y)C">resultObj</field> </block> </value> </block> </value> <value name="B"> <block type="text" id="2IHj$68WOMw=Ts}c+r0H"> <field name="TEXT">on</field> </block> </value> </block> </value> </block> </statement> </block> </next> </block> </statement> <value name="IF1"> <block type="logic_compare" id="Cg6gGRghF.uMe,Bz0(lH"> <field name="OP">EQ</field> <value name="A"> <block type="variables_get" id="O3ish0VOZxQxQ{$n..8H"> <field name="VAR" id="Hgc9h6j{(_HrOD+W-rN2">widgetIndex</field> </block> </value> <value name="B"> <block type="math_number" id="eRbWjErChVYi8A_$)ATO"> <field name="NUM">2</field> </block> </value> </block> </value> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </statement> <next> <block type="comment" id="LG9pn}J^;=p3%/.[/ZQH"> <field name="COMMENT">LWT überwachen, wenn Gerät wieder online</field> <next> <block type="on_ext" id="7hBsLcs|]|+gKB9{k:
                      ">
                      <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
                      <field name="CONDITION">ne</field>
                      <field name="ACK_CONDITION">true</field>
                      <value name="OID0">
                      <shadow type="field_oid" id="OS$aDgD5RMCV0Dw:dOB">
                      <field name="oid">default</field>
                      </shadow>
                      <block type="variables_get" id="S1onAM.%F86D0Y0T:/n,">
                      <field name="VAR" id="aevDUp]R;DeT@4L/rdho">mqttLwtId</field>
                      </block>
                      </value>
                      <statement name="STATEMENT">
                      <block type="controls_if" id="1Zl(bF]sLz$:B:(g2Wvy">
                      <value name="IF0">
                      <block type="logic_compare" id="wOI#M-K)ebeVKAPQJDs"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="09hBZ8={I/z11+RQ0[k)"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="text" id="2;SK_QQLlb0L!915(
                      ^">
                      <field name="TEXT">Online</field>
                      </block>
                      </value>
                      </block>
                      </value>
                      <statement name="DO0">
                      <block type="debug" id="cbdJqZauF,H18x{(8Lt8">
                      <field name="Severity">log</field>
                      <value name="TEXT">
                      <shadow type="text" id="as^JY._XYLiLpq_J[Y|M">
                      <field name="TEXT">Gerät wieder online - übertrage Widgets in 5 Sekunden</field>
                      </shadow>
                      </value>
                      <next>
                      <block type="timeouts_settimeout" id="U4S^h#fW?VrNElhm!/9R">
                      <field name="NAME">waitForBoot</field>
                      <field name="DELAY">5</field>
                      <field name="UNIT">sec</field>
                      <statement name="STATEMENT">
                      <block type="procedures_callnoreturn" id="#~G1[gfyht#w+ybY9hMt">
                      <mutation name="initWidgets"></mutation>
                      </block>
                      </statement>
                      </block>
                      </next>
                      </block>
                      </statement>
                      </block>
                      </statement>
                      <next>
                      <block type="comment" id=")-n:BsiU4!-O$,NIY#M=">
                      <field name="COMMENT">Wenn Änderung bestätigt: Feedback an Widget 1</field>
                      <next>
                      <block type="on_ext" id="gi)(I1mFU6#J#Q7EDD$"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">any</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="dVKBso]cCaN;9Na@3Efh"> <field name="oid">javascript.0.Hilfsobjekte.dump3</field> </shadow> </value> <statement name="STATEMENT"> <block type="procedures_callcustomnoreturn" id="GK@I-l{LOT1f3#6Z1tLr"> <mutation name="setWidgetParams"> <arg name="index"></arg> <arg name="params"></arg> </mutation> <value name="ARG0"> <block type="math_number" id="ql^P-/mY]ALrMTB,]oth"> <field name="NUM">1</field> </block> </value> <value name="ARG1"> <block type="convert_json2object" id="CaBI06^Vk={UOVWiy]Dh"> <value name="VALUE"> <block type="text_join" id="/gQwArXf4nPPNqJG{fDe"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id="hB*x2{kHp8p(w9Da8dP0"> <field name="TEXT">{"switch":"</field> </block> </value> <value name="ADD1"> <block type="logic_ternary" id="^:%04E8=-(Qtga4+wnY."> <value name="IF"> <block type="on_source" id="Waa2QArV=XkB~r:BK2t">
                      <field name="ATTR">state.val</field>
                      </block>
                      </value>
                      <value name="THEN">
                      <block type="text" id="{C0x/oMSSFhsp2gl]9qt">
                      <field name="TEXT">on</field>
                      </block>
                      </value>
                      <value name="ELSE">
                      <block type="text" id="ZgwcG{)XCUZBoGo`xN39">
                      <field name="TEXT">off</field>
                      </block>
                      </value>
                      </block>
                      </value>
                      <value name="ADD2">
                      <block type="text" id="(/k^gB{DV7E{Fq)Uedr8">
                      <field name="TEXT">"}</field>
                      </block>
                      </value>
                      </block>
                      </value>
                      </block>
                      </value>
                      </block>
                      </statement>
                      </block>
                      </next>
                      </block>
                      </next>
                      </block>
                      </next>
                      </block>
                      </next>
                      </block>
                      </next>
                      </block>
                      </next>
                      </block>
                      </next>
                      </block>
                      </next>
                      </block>
                      </next>
                      </block>
                      </xml>

                      M haus-automatisierung 2 Replies Last reply Reply Quote 0
                      • M
                        mrjeschke @Leone Mortuo last edited by

                        @leone-mortuo
                        Ich probiere auch schon seit Tagen die Outlets-Namen zu ändern.
                        Bis jetzt ebenfalls ohne Erfolg. Weder über die Konsole noch über die
                        nspanel.be klappt das.
                        Die Widgets selbst erzeuge ich in der nspanel.be. Gefällt mir besser als
                        das mit einem Blockly zu machen.

                        Leone Mortuo 1 Reply Last reply Reply Quote 0
                        • Leone Mortuo
                          Leone Mortuo @mrjeschke last edited by

                          @maik-0

                          ein Mitstreiter, das ist doch schon mal prima 🙂

                          hatte ich auch schon überlegt, wenn die erst mal erstellt sind brauche ich die Dynamik eines script eigentlich nicht mehr zwingend. ist das allerdings dann auch "Bootfest" ? falls mal der Strom weg is...

                          Das mit den Outlets kostet mich momentan den letzten Nerv, hatte sogar schon überlegt die org. Firmware drauf zu spielen in der Hoffnung das man es dann ändern kann und vll. ne Info zu den Parameter bekommt. im netz konnte ich noch garnix dazu finden .

                          M 1 Reply Last reply Reply Quote 0
                          • M
                            mrjeschke @Leone Mortuo last edited by

                            @leone-mortuo
                            Wenn du die Widget mit dem Blockly erzeugst, dürften sie nach dem
                            booten weg sein. Wenn du sie aber über die nspanel.be erstellst,
                            werden sie beim booten neu erstellt.
                            Diese Datei wird ja beim Start automatisch ausgeführt.

                            1 Reply Last reply Reply Quote 0
                            • haus-automatisierung
                              haus-automatisierung Developer Most Active @Leone Mortuo last edited by

                              @leone-mortuo sagte in Sonoff NSPanel:

                              Hat jemand evtl. eine Möglichkeit gefunden bei den Multiswitches den Namen der einzelnen OUTLETS zu ändern?

                              Nach Doku geht das mit den relations. Dort kann ein Name übergeben werden. Habe ich aber im Detail nicht weiter getestet. Das Video war so schon lang genug 😄

                              {"relation":[{"ctype":"device","id":"1001383218","name":"NSPane..","online":true,"params":{"switches":[{"switch":"off","outlet":0},{"switch":"off","outlet":1}]}}]}
                              
                              Leone Mortuo 2 Replies Last reply Reply Quote 0
                              • Leone Mortuo
                                Leone Mortuo @haus-automatisierung last edited by Leone Mortuo

                                @haus-automatisierung

                                das ist richtig 🙂
                                Allerdings wird dabei immer nur das, ich nenn das mal Hauptwidget umbenannt. Also von Index1 nach XYZ z.b.

                                0825bade-b2b1-4892-89d6-57c6bec5f652-image.png

                                Die Bezeichnung OUTLET der "darunter" liegenden Switches bleibt davon aber (leider) immer unberührt.

                                Ich habe auch schon mit den unterschiedlichsten Kombinationen experimentiert.
                                Bspw. die definition "name" innerhalb der Parameter anzugeben, für das jeweilige Outlet. auch dann wird aber das Hauptwidget umbenannt.

                                also das geht z.B. nicht:

                                params":{"switches":[{"name":"test","outlet":0},{"switch":"off","outlet":1}]}}]}
                                

                                @Maik-0
                                du hast recht, das Script ist aber auch darauf ausgelegt bei einem Neustart die Konfig nochmal neu zu pushen. das würde sich also nix nehmen... am Ende is es wohl Geschmackssache 😄 - ich weiß noch ned was mir mehr nützt. wie ich das in der nspanel.be genau mache müsste ich mir aber jetzt auch erst wieder genauer ansehen 🤓

                                M 1 Reply Last reply Reply Quote 0
                                • M
                                  mrjeschke @Leone Mortuo last edited by

                                  @leone-mortuo
                                  Das in die nspanel.de einzubauen ist relativ simpel.
                                  Steht dort auch beschrieben.
                                  Bei meinem Test sieht das z.B. so aus.

                                  
                                    var widget = {
                                    1: ["Wohnen", "group", 1],
                                    2: ["Küche", "group", 1],
                                    3: ["Flur", "group", 1],
                                    4: ["Licht", "group", 4],
                                    5: [],
                                    6: [],
                                    7: [],
                                    8: [],
                                  }
                                  

                                  Mir ist das mit dem Blockly etwas zu umständlich, aber jeder wie er mag.

                                  M Leone Mortuo 2 Replies Last reply Reply Quote 0
                                  • M
                                    mameier1234 @mrjeschke last edited by mameier1234

                                    Ich experimentiere seit gestern auch mit der Anleitung von Hausautomisierung.com ... Wirklich gut erklärt.

                                    Die Möglichkeit mit den Namen der Widgets habe ich auch hinbekommen.. alles über das Blockly .

                                    Mein Problem ist jetzt aktuell, dass der Status eines geschalteten Widgets nicht bleibt..

                                    Wenn ich den Widgettype 1 verwende (switch horizintal) , dann bleibt dieser stabil an oder aus...

                                    Der Type 6 (vertikal) spring aber immer wieder automatisch auf aus...

                                    Auch LightBulb (52) schaltet einwandfrei , springt aber wieder auf aus... d.H, wenn ich die Lampe ausschalten will, muss ich schnell sein.. .an, und gleich wieder aus, bevor es von alleine auf Aus zurückspringt..

                                    Hat das noch jemand, und eine Idee ??

                                    Edit.. .Gefunden 🙂 Ich hatte das Feedback nicht angepasst.. nur wie im Beispiel für das erste Widget...

                                    1 Reply Last reply Reply Quote 1
                                    • Leone Mortuo
                                      Leone Mortuo @mrjeschke last edited by

                                      @maik-0

                                      danke für das Beispiel - das is echt simple oO.
                                      ich werd meine Lösung, wenigstens für die Erstellung vielleicht nochmal überdenken.

                                      1 Reply Last reply Reply Quote 0
                                      • Leone Mortuo
                                        Leone Mortuo @haus-automatisierung last edited by Leone Mortuo

                                        @haus-automatisierung

                                        P.S.: Vielen Dank für das Video btw 👌 hat den Start wesentlich erleichtert 🙂
                                        und klar - versteh ich das man da nicht alles im Detail erklären kann. die Anforderungen sind ja auch unterschiedlich.
                                        die Infos sich selbst einzulesen hast du ja bereit gestellt mehr kann man nicht verlangen.

                                        Um die Knowledge-base hier noch etwas zu erweitern; ich bin gerade bei der Suche nach einer Lösung für die Outlets auf diese ganz spannende Info gestoßen:

                                        es gibt wohl auch uiid 11 um Rollläden anzusteuern. Hier muss aber unbedingt "ctype"=device verwendet werden! nicht group.

                                        sieht dann so aus:
                                        15bc1dc0-0289-47e1-9ad7-0843c9db202a-image.png
                                        3f4f425c-7dfd-435d-bec0-071a92740233-image.png

                                        Quelle: https://blakadder.com/nspanel-hacking/ (in den Kommentaren!)

                                        das Ganze liefert dann ein

                                        {"NSPanel":{"id":"1","params":{"setclose":42}}}
                                        

                                        zurück. Evtl. nutzt es ja jemandem. Grüße.

                                        V 1 Reply Last reply Reply Quote 0
                                        • V
                                          Vocaris @Leone Mortuo last edited by

                                          Hallo. Habe heute auch mit dem Thema begonnen. Das Gerät ist schon geflashed und jetzt schaue ich mir das langsam mal an. Über MQTT kann man ja einiges ansprechen. 2 Fragen habe ich
                                          Kann ich die Thermostate meiner Raspimatic, die ja im IoB per Adapter ei gebunden ist mit dem Panel verbinden und anzeigen lassen.
                                          Uns die zweite Frage. Meine Rolladen sind von Jarolift und über die Everhome Box mit Alexa verbunden. Somit bekomme ich die Geräte nur über den Alexa Adapter in den IoB. Bekomme ich die mit dem Panel a gesprochen?

                                          Leone Mortuo 1 Reply Last reply Reply Quote 0
                                          • Leone Mortuo
                                            Leone Mortuo @Vocaris last edited by

                                            @vocaris

                                            am besten siehst du dir die Dokus etwas weiter oben mal genauer an - dort wird das bereits sehr gut angerissen.

                                            hier nochmal ein Link zum einsteigen dazu:
                                            https://haus-automatisierung.com/hardware/sonoff/2022/01/18/sonoff-nspanel-iobroker.html

                                            Sehr vereinfacht: ja du kannst einen Temperatur-Wert an das Panel übergeben.
                                            Hierzu füllst du den State ".../.../cmnd/NSPSend" in deinem MQTT Adapter mit einem entsprechenden JSON.

                                            In der Form: {"temperature":13,"tempUnit":0} tempunits: 0 = °C 1=°F

                                            hier findest du mögliche Übergaben: https://blakadder.github.io/nspanel/

                                            Zu deiner zweiten Frage: ich weiß das man einfache Schalter über den Alexa-Adapter in IO steuern kann (true/false),
                                            ohne das es einen extra Adapter für das Device gibt.
                                            So kann ich zum Beispiel über: "alexa2.0.Smart-Home-Devices.xxxxyyyy.powerState" meine Tapo-Steckdose schalten.
                                            Wie das jetzt mit deinem Rollladen aussieht kommt wohl drauf an ob und wenn ja was von Alexa an IO übergeben wird.
                                            Grundsätzlich kannst du über ein entsprechendes Blockly Script das durch einen Switch am Pannel getriggert wird jeden beliebigen State schalten oder ändern würde ich mal sagen.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            1.0k
                                            Online

                                            31.6k
                                            Users

                                            79.5k
                                            Topics

                                            1.3m
                                            Posts

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