Skip to content
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Node-Red
  5. Shelly addon über Node Red auf einer NAS mit iobroker

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.1k

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

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

Shelly addon über Node Red auf einer NAS mit iobroker

Geplant Angeheftet Gesperrt Verschoben Node-Red
74 Beiträge 6 Kommentatoren 13.7k Aufrufe 7 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.
  • mickymM mickym

    @ronnyempire Schau mal grundsätzlich hier: https://shelly-api-docs.shelly.cloud/gen2/ComponentsAndServices/Mqtt

    So nun zu Deinen jetzigen Datenpunkten.

    Zum Auslesen ist das ja ziemlich simple - Du liest einfach den output Parameter aus.

    444e8d72-d69c-4dce-9185-734da0d0621a-image.png

    Du lässt den Datenpunkt einfach triggern und liest dann den Datenpunkt aus und selektierst das Attribut. Schreiben tust Du im Prinzip über das command topic.

    Wenn Du es über einen Datenpunkt machen willst, den Du auch in der VIS bedienen kannst, dann musst Du selbst einen Datenpunkt erstellten. - Ich kann Dich schon durch den Prozess führen - auch wenn ich das Puzzeln nicht besonders mag.

    Also wenn Du es über einen Datenpunkt machen willst, dann kopiere mir mal den Wert von switch:0 hier in codetags rein und ich simuliere das dann bei mir über einen Datenpunkt und führe Dich durch den Prozess.

    Code-Tags.gif

    R Offline
    R Offline
    Ronnyempire
    schrieb am zuletzt editiert von
    #13

    @mickym Alles klar, also VIS muss nicht unbedingt sein. Mir ist nur wichtig, dass meine Blockly Skripte weiter funktionieren. Ich musste ja vom Shelly Adapter auf den Mqtt Adapter umstellen, damit ich die Temperatur richtig auslesen kann.

    {"id":0, "source":"HTTP", "output":true, "apower":1189.5, "voltage":226.2, "current":5.269, "aenergy":{"total":16468.090,"by_minute":[19845.818,19817.516,19857.311],"minute_ts":1692544679},"temperature":{"tC":67.5, "tF":153.4}}
    
    mickymM 2 Antworten Letzte Antwort
    0
    • R Ronnyempire

      @mickym Alles klar, also VIS muss nicht unbedingt sein. Mir ist nur wichtig, dass meine Blockly Skripte weiter funktionieren. Ich musste ja vom Shelly Adapter auf den Mqtt Adapter umstellen, damit ich die Temperatur richtig auslesen kann.

      {"id":0, "source":"HTTP", "output":true, "apower":1189.5, "voltage":226.2, "current":5.269, "aenergy":{"total":16468.090,"by_minute":[19845.818,19817.516,19857.311],"minute_ts":1692544679},"temperature":{"tC":67.5, "tF":153.4}}
      
      mickymM Offline
      mickymM Offline
      mickym
      Most Active
      schrieb am zuletzt editiert von mickym
      #14

      @ronnyempire sagte in Shelly addon über Node Red auf einer NAS mit iobroker:

      {"id":0, "source":"HTTP", "output":true, "apower":1189.5, "voltage":226.2, "current":5.269, "aenergy":{"total":16468.090,"by_minute":[19845.818,19817.516,19857.311],"minute_ts":1692544679},"temperature":{"tC":67.5, "tF":153.4}}

      So nur für Dich zur Info - ich habe jetzt mal 2 Datenpunkte unter 0_userdata.0 angelegt - Du brauchst aber für Dein Relais Schalter nur einen Datenpunkt vom Typ Boolean - ich hab den schalter genannt. der shelly1pm repräsentiert Deinen Datenpunkt des Shelly1PMs im Mqtt.

      f3811419-1972-4674-a099-ef0694b76bad-image.png

      Mit diesem Blockly setzt Du den Wert Deines Datenpunktes - Schalter, sobald vom mqtt ein neuer Status kommt.

      b53ddebc-faa3-4164-9cda-a33533a5fb89-image.png

      <xml xmlns="https://developers.google.com/blockly/xml">
       <block type="on" id="*7X?[f+XtD0vAcAVMqFY" x="-362" y="-487">
         <field name="OID">0_userdata.0.Test.shelly1pm</field>
         <field name="CONDITION">ne</field>
         <field name="ACK_CONDITION">true</field>
         <statement name="STATEMENT">
           <block type="update" id="zd@Eas).84:(^VE{[m6a">
             <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
             <field name="OID">0_userdata.0.Test.schalter</field>
             <field name="WITH_DELAY">FALSE</field>
             <value name="VALUE">
               <block type="get_attr" id="J@ZUCDah{NrYy`??WN4m">
                 <value name="PATH">
                   <shadow type="text" id="b72GuGuAr)l8T8KB*dXu">
                     <field name="TEXT">output</field>
                   </shadow>
                 </value>
                 <value name="OBJECT">
                   <block type="on_source" id="t=b1rMSd+C%zd(y%1WA*">
                     <field name="ATTR">state.val</field>
                   </block>
                 </value>
               </block>
             </value>
           </block>
         </statement>
       </block>
      </xml>
      

      Du musst halt die Pfade zu Deinen Datenpunkten anpassen.

      Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

      1 Antwort Letzte Antwort
      0
      • mickymM Offline
        mickymM Offline
        mickym
        Most Active
        schrieb am zuletzt editiert von mickym
        #15

        So hier ist dann auch der umgekehrte Weg. Wenn Du also in Deinen selbst erstellten DP mit steuer also ACK=False schreibst, dann wird der untere Ast selektiert:

        04b8728c-efa4-409c-b6cf-69b453ae80a6-image.png

        <xml xmlns="https://developers.google.com/blockly/xml">
          <variables>
            <variable id="IWCFnZr0b.`3kTR;i}9f">Schalter1</variable>
          </variables>
          <block type="on" id="*7X?[f+XtD0vAcAVMqFY" x="-387" y="-537">
            <field name="OID">0_userdata.0.Test.shelly1pm</field>
            <field name="CONDITION">ne</field>
            <field name="ACK_CONDITION">true</field>
            <statement name="STATEMENT">
              <block type="update" id="zd@Eas).84:(^VE{[m6a">
                <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                <field name="OID">0_userdata.0.Test.schalter</field>
                <field name="WITH_DELAY">FALSE</field>
                <value name="VALUE">
                  <block type="get_attr" id="J@ZUCDah{NrYy`??WN4m">
                    <value name="PATH">
                      <shadow type="text" id="b72GuGuAr)l8T8KB*dXu">
                        <field name="TEXT">output</field>
                      </shadow>
                    </value>
                    <value name="OBJECT">
                      <block type="on_source" id="t=b1rMSd+C%zd(y%1WA*">
                        <field name="ATTR">state.val</field>
                      </block>
                    </value>
                  </block>
                </value>
              </block>
            </statement>
            <next>
              <block type="on" id="-_0G]27pLb=[)%L(@5@k">
                <field name="OID">0_userdata.0.Test.schalter</field>
                <field name="CONDITION">ne</field>
                <field name="ACK_CONDITION">false</field>
                <statement name="STATEMENT">
                  <block type="controls_if" id="!o=;)%+mI6a6QPg):2(:">
                    <mutation else="1"></mutation>
                    <value name="IF0">
                      <block type="on_source" id="P{B9%6M?Av5.^+!.fJsT">
                        <field name="ATTR">state.val</field>
                      </block>
                    </value>
                    <statement name="DO0">
                      <block type="variables_set" id="b$zi{jmUA:O:=~-DP(7A">
                        <field name="VAR" id="IWCFnZr0b.`3kTR;i}9f">Schalter1</field>
                        <value name="VALUE">
                          <block type="text" id="fJO_.5wQ}*3;H:0(MyD{">
                            <field name="TEXT">on</field>
                          </block>
                        </value>
                      </block>
                    </statement>
                    <statement name="ELSE">
                      <block type="variables_set" id="}UCd#8ZqgBgO(X$p3Qvf">
                        <field name="VAR" id="IWCFnZr0b.`3kTR;i}9f">Schalter1</field>
                        <value name="VALUE">
                          <block type="text" id="c^h^9kn,x1~YJ;cfSub^">
                            <field name="TEXT">off</field>
                          </block>
                        </value>
                      </block>
                    </statement>
                    <next>
                      <block type="sendto_custom" id="ls8@a?b_FZd{/PwZ%,li">
                        <mutation xmlns="http://www.w3.org/1999/xhtml" items="topic,message" with_statement="false"></mutation>
                        <field name="INSTANCE">mqtt.1</field>
                        <field name="COMMAND">sendMessage2Client</field>
                        <field name="LOG"></field>
                        <field name="WITH_STATEMENT">FALSE</field>
                        <value name="ARG0">
                          <shadow type="text" id="$,O^*f*}($?[H8_(d*+U">
                            <field name="TEXT">shellyplus1pm-80646fe3f840/command/switch:0</field>
                          </shadow>
                        </value>
                        <value name="ARG1">
                          <shadow type="text" id="kYzE4%b}Px*fTaC#_m53">
                            <field name="TEXT">Meine Nachricht</field>
                          </shadow>
                          <block type="variables_get" id="FQbgf[f./6MlUVZ},6Lg">
                            <field name="VAR" id="IWCFnZr0b.`3kTR;i}9f">Schalter1</field>
                          </block>
                        </value>
                      </block>
                    </next>
                  </block>
                </statement>
              </block>
            </next>
          </block>
        </xml>
        
        

        Unter Deinen mqtt- Datenpunkten sollte dann auch der command Ast auftauchen:

        c2093855-44ee-4c82-a926-6e6904546433-image.png

        Sobald der Datenpunkt unten erstellt ist, kannst Du diesen anstelle von SendTo auch mit steuere direkt in den Datenpunkt schreiben.

        So nun habe ich aber genug gepuzzelt - ich hasse puzzeln. 😉

        ===============================================================

        Eine Alternative ist DOCH ein Alias zu nutzen (s. nächster Post)

        Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

        mickymM 1 Antwort Letzte Antwort
        0
        • mickymM mickym

          So hier ist dann auch der umgekehrte Weg. Wenn Du also in Deinen selbst erstellten DP mit steuer also ACK=False schreibst, dann wird der untere Ast selektiert:

          04b8728c-efa4-409c-b6cf-69b453ae80a6-image.png

          <xml xmlns="https://developers.google.com/blockly/xml">
            <variables>
              <variable id="IWCFnZr0b.`3kTR;i}9f">Schalter1</variable>
            </variables>
            <block type="on" id="*7X?[f+XtD0vAcAVMqFY" x="-387" y="-537">
              <field name="OID">0_userdata.0.Test.shelly1pm</field>
              <field name="CONDITION">ne</field>
              <field name="ACK_CONDITION">true</field>
              <statement name="STATEMENT">
                <block type="update" id="zd@Eas).84:(^VE{[m6a">
                  <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                  <field name="OID">0_userdata.0.Test.schalter</field>
                  <field name="WITH_DELAY">FALSE</field>
                  <value name="VALUE">
                    <block type="get_attr" id="J@ZUCDah{NrYy`??WN4m">
                      <value name="PATH">
                        <shadow type="text" id="b72GuGuAr)l8T8KB*dXu">
                          <field name="TEXT">output</field>
                        </shadow>
                      </value>
                      <value name="OBJECT">
                        <block type="on_source" id="t=b1rMSd+C%zd(y%1WA*">
                          <field name="ATTR">state.val</field>
                        </block>
                      </value>
                    </block>
                  </value>
                </block>
              </statement>
              <next>
                <block type="on" id="-_0G]27pLb=[)%L(@5@k">
                  <field name="OID">0_userdata.0.Test.schalter</field>
                  <field name="CONDITION">ne</field>
                  <field name="ACK_CONDITION">false</field>
                  <statement name="STATEMENT">
                    <block type="controls_if" id="!o=;)%+mI6a6QPg):2(:">
                      <mutation else="1"></mutation>
                      <value name="IF0">
                        <block type="on_source" id="P{B9%6M?Av5.^+!.fJsT">
                          <field name="ATTR">state.val</field>
                        </block>
                      </value>
                      <statement name="DO0">
                        <block type="variables_set" id="b$zi{jmUA:O:=~-DP(7A">
                          <field name="VAR" id="IWCFnZr0b.`3kTR;i}9f">Schalter1</field>
                          <value name="VALUE">
                            <block type="text" id="fJO_.5wQ}*3;H:0(MyD{">
                              <field name="TEXT">on</field>
                            </block>
                          </value>
                        </block>
                      </statement>
                      <statement name="ELSE">
                        <block type="variables_set" id="}UCd#8ZqgBgO(X$p3Qvf">
                          <field name="VAR" id="IWCFnZr0b.`3kTR;i}9f">Schalter1</field>
                          <value name="VALUE">
                            <block type="text" id="c^h^9kn,x1~YJ;cfSub^">
                              <field name="TEXT">off</field>
                            </block>
                          </value>
                        </block>
                      </statement>
                      <next>
                        <block type="sendto_custom" id="ls8@a?b_FZd{/PwZ%,li">
                          <mutation xmlns="http://www.w3.org/1999/xhtml" items="topic,message" with_statement="false"></mutation>
                          <field name="INSTANCE">mqtt.1</field>
                          <field name="COMMAND">sendMessage2Client</field>
                          <field name="LOG"></field>
                          <field name="WITH_STATEMENT">FALSE</field>
                          <value name="ARG0">
                            <shadow type="text" id="$,O^*f*}($?[H8_(d*+U">
                              <field name="TEXT">shellyplus1pm-80646fe3f840/command/switch:0</field>
                            </shadow>
                          </value>
                          <value name="ARG1">
                            <shadow type="text" id="kYzE4%b}Px*fTaC#_m53">
                              <field name="TEXT">Meine Nachricht</field>
                            </shadow>
                            <block type="variables_get" id="FQbgf[f./6MlUVZ},6Lg">
                              <field name="VAR" id="IWCFnZr0b.`3kTR;i}9f">Schalter1</field>
                            </block>
                          </value>
                        </block>
                      </next>
                    </block>
                  </statement>
                </block>
              </next>
            </block>
          </xml>
          
          

          Unter Deinen mqtt- Datenpunkten sollte dann auch der command Ast auftauchen:

          c2093855-44ee-4c82-a926-6e6904546433-image.png

          Sobald der Datenpunkt unten erstellt ist, kannst Du diesen anstelle von SendTo auch mit steuere direkt in den Datenpunkt schreiben.

          So nun habe ich aber genug gepuzzelt - ich hasse puzzeln. 😉

          ===============================================================

          Eine Alternative ist DOCH ein Alias zu nutzen (s. nächster Post)

          mickymM Offline
          mickymM Offline
          mickym
          Most Active
          schrieb am zuletzt editiert von mickym
          #16

          Ah ich sehe man kann doch unterschiedliche IDs zum Lesen und Schreiben in EINEM ALIAS verwenden, dann probieren wir das ohne Blockly. So also alles zurück - es funktioniert mit einem ALIAS.

          a757b0f8-c1c1-466c-a46d-fe35a129e83d-image.png

          Zum Lesen musst Du Deinen status Datenpunkt eingeben.

          mqtt.0.shellyplus1pm-80646fe3f840.status.switch:0
          

          Zum Schreiben den manuell erstellten Datenpunkt unter command.

          mqtt.0.shellyplus1pm-80646fe3f840.command.switch:0
          

          Die Lesen Konvertierungsfunktion ist dann wie gehabt:

          JSON.parse(val).output
          

          Die Schreiben Konvertierungsfunktion:

          val ? "on" : "off"
          

          Damit kannst Du dann ganz normal mit dem ALIAS über steuere und Blockly/VIS EIN und AUS-Schalten und liest den Status gleichzeitig über die Lesefunktion ein.

          Ich wusste selbst nicht, dass das inzwischen aufgebohrt wurde. Aber damit geht alles über EINEN Alias

          Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

          R 1 Antwort Letzte Antwort
          0
          • R Ronnyempire

            @mickym Alles klar, also VIS muss nicht unbedingt sein. Mir ist nur wichtig, dass meine Blockly Skripte weiter funktionieren. Ich musste ja vom Shelly Adapter auf den Mqtt Adapter umstellen, damit ich die Temperatur richtig auslesen kann.

            {"id":0, "source":"HTTP", "output":true, "apower":1189.5, "voltage":226.2, "current":5.269, "aenergy":{"total":16468.090,"by_minute":[19845.818,19817.516,19857.311],"minute_ts":1692544679},"temperature":{"tC":67.5, "tF":153.4}}
            
            mickymM Offline
            mickymM Offline
            mickym
            Most Active
            schrieb am zuletzt editiert von mickym
            #17

            @ronnyempire

            So ich hab es auch noch mal mit einem Blockly getestet zum EIN- und AUSSCHALTEN und EINEM Alias

            52ef01f4-5c49-4221-93a7-732f459a79ae-image.png

            also mit steuere und das funktioniert!

            Den unteren Teil kannst vergessen, den habe ich nur genommen, um Deinen Shelly1PM zu simulieren.

            Um manuell übrigens den Datenpunkt im mqtt zu erstellen, musst Du den Expertenmodus einschalten.

            Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

            1 Antwort Letzte Antwort
            0
            • mickymM mickym

              Ah ich sehe man kann doch unterschiedliche IDs zum Lesen und Schreiben in EINEM ALIAS verwenden, dann probieren wir das ohne Blockly. So also alles zurück - es funktioniert mit einem ALIAS.

              a757b0f8-c1c1-466c-a46d-fe35a129e83d-image.png

              Zum Lesen musst Du Deinen status Datenpunkt eingeben.

              mqtt.0.shellyplus1pm-80646fe3f840.status.switch:0
              

              Zum Schreiben den manuell erstellten Datenpunkt unter command.

              mqtt.0.shellyplus1pm-80646fe3f840.command.switch:0
              

              Die Lesen Konvertierungsfunktion ist dann wie gehabt:

              JSON.parse(val).output
              

              Die Schreiben Konvertierungsfunktion:

              val ? "on" : "off"
              

              Damit kannst Du dann ganz normal mit dem ALIAS über steuere und Blockly/VIS EIN und AUS-Schalten und liest den Status gleichzeitig über die Lesefunktion ein.

              Ich wusste selbst nicht, dass das inzwischen aufgebohrt wurde. Aber damit geht alles über EINEN Alias

              R Offline
              R Offline
              Ronnyempire
              schrieb am zuletzt editiert von Ronnyempire
              #18

              @mickym said in Shelly addon über Node Red auf einer NAS mit iobroker:

              val ? "on" : "off"

              Ich danke dir herzlich für deine Mühen, jedoch bekomme ich es bei mir nicht zum laufen. Es erscheint beim Wert immer nur "null" und ein ändern bringt gar keinen effekt.

              state.png

              {
                "common": {
                  "name": "SwitchPool",
                  "desc": "Manuell erzeugt",
                  "role": "state",
                  "type": "boolean",
                  "read": true,
                  "write": true,
                  "def": "",
                  "alias": {
                    "id": {
                      "read": "mqtt.1.shellyplus1pm-80646fe3f840.status.switch:0",
                      "write": "mqtt.1.shellyplus1pm-80646fe3f840.command.switch:0"
                    },
                    "read": "JSON.parse(val).output",
                    "write": "val ? \"on\" : \"off\""
                  }
                },
                "type": "state",
                "native": {},
                "_id": "alias.0.SwitchPool",
                "from": "system.adapter.admin.0",
                "user": "system.user.admin",
                "ts": 1692625966200
              
              mickymM 1 Antwort Letzte Antwort
              0
              • R Ronnyempire

                @mickym said in Shelly addon über Node Red auf einer NAS mit iobroker:

                val ? "on" : "off"

                Ich danke dir herzlich für deine Mühen, jedoch bekomme ich es bei mir nicht zum laufen. Es erscheint beim Wert immer nur "null" und ein ändern bringt gar keinen effekt.

                state.png

                {
                  "common": {
                    "name": "SwitchPool",
                    "desc": "Manuell erzeugt",
                    "role": "state",
                    "type": "boolean",
                    "read": true,
                    "write": true,
                    "def": "",
                    "alias": {
                      "id": {
                        "read": "mqtt.1.shellyplus1pm-80646fe3f840.status.switch:0",
                        "write": "mqtt.1.shellyplus1pm-80646fe3f840.command.switch:0"
                      },
                      "read": "JSON.parse(val).output",
                      "write": "val ? \"on\" : \"off\""
                    }
                  },
                  "type": "state",
                  "native": {},
                  "_id": "alias.0.SwitchPool",
                  "from": "system.adapter.admin.0",
                  "user": "system.user.admin",
                  "ts": 1692625966200
                
                mickymM Offline
                mickymM Offline
                mickym
                Most Active
                schrieb am zuletzt editiert von mickym
                #19

                @ronnyempire Ist das bei Dir nicht mqtt.0 ? - anstelle von mqtt.1 ? Ich habs unten mal ausgebessert - da nur bei mir die 1. Instanz und nicht die 0. ist.

                Du müsstest im Log auch Warnungen haben, wenn die Quelldatenpunkte nicht gefunden werden. Hast Du den Datenpunkt:

                mqtt.0.shellyplus1pm-80646fe3f840.command.switch:0
                

                auch erstellt?

                Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                R 1 Antwort Letzte Antwort
                0
                • mickymM mickym

                  @ronnyempire Ist das bei Dir nicht mqtt.0 ? - anstelle von mqtt.1 ? Ich habs unten mal ausgebessert - da nur bei mir die 1. Instanz und nicht die 0. ist.

                  Du müsstest im Log auch Warnungen haben, wenn die Quelldatenpunkte nicht gefunden werden. Hast Du den Datenpunkt:

                  mqtt.0.shellyplus1pm-80646fe3f840.command.switch:0
                  

                  auch erstellt?

                  R Offline
                  R Offline
                  Ronnyempire
                  schrieb am zuletzt editiert von
                  #20

                  @mickym said in Shelly addon über Node Red auf einer NAS mit iobroker:

                  mqtt.0.shellyplus1pm-80646fe3f840.command.switch:0

                  Ok ich habe es angepasst, aber immer noch kein effekt. Der Datenpunt war schon da unter command

                  {
                    "_id": "mqtt.0.shellyplus1pm-80646fe3f840.command.switch:0",
                    "common": {
                      "name": "shellyplus1pm-80646fe3f840/command/switch:0",
                      "write": true,
                      "read": true,
                      "role": "variable",
                      "desc": "mqtt server variable",
                      "type": "boolean"
                    },
                    "native": {
                      "topic": "shellyplus1pm-80646fe3f840/command/switch:0"
                    },
                    "type": "state",
                    "from": "system.adapter.admin.0",
                    "user": "system.user.admin",
                    "ts": 1692626757693
                  }
                  
                  mickymM 1 Antwort Letzte Antwort
                  0
                  • R Ronnyempire

                    @mickym said in Shelly addon über Node Red auf einer NAS mit iobroker:

                    mqtt.0.shellyplus1pm-80646fe3f840.command.switch:0

                    Ok ich habe es angepasst, aber immer noch kein effekt. Der Datenpunt war schon da unter command

                    {
                      "_id": "mqtt.0.shellyplus1pm-80646fe3f840.command.switch:0",
                      "common": {
                        "name": "shellyplus1pm-80646fe3f840/command/switch:0",
                        "write": true,
                        "read": true,
                        "role": "variable",
                        "desc": "mqtt server variable",
                        "type": "boolean"
                      },
                      "native": {
                        "topic": "shellyplus1pm-80646fe3f840/command/switch:0"
                      },
                      "type": "state",
                      "from": "system.adapter.admin.0",
                      "user": "system.user.admin",
                      "ts": 1692626757693
                    }
                    
                    mickymM Offline
                    mickymM Offline
                    mickym
                    Most Active
                    schrieb am zuletzt editiert von
                    #21

                    @ronnyempire na ok. Dann halt erstmal schauen ob es grundsätzlich funktioniert ohne Alias.

                    Schreibe doch mal „on“ oder „off“ ohne Bestätigung in den command Datenpunkt und schau ob das Relais schaltet.

                    Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                    R 1 Antwort Letzte Antwort
                    0
                    • mickymM mickym

                      @ronnyempire na ok. Dann halt erstmal schauen ob es grundsätzlich funktioniert ohne Alias.

                      Schreibe doch mal „on“ oder „off“ ohne Bestätigung in den command Datenpunkt und schau ob das Relais schaltet.

                      R Offline
                      R Offline
                      Ronnyempire
                      schrieb am zuletzt editiert von
                      #22

                      @mickym Danke dir, dass war der entscheidende Hinweis. Der Datenpunkt war als Logikwert hinterlegt. Ich habe es auf Zeichenkette geändert und jetzt geht es. 🙂

                      mickymM 1 Antwort Letzte Antwort
                      0
                      • R Ronnyempire

                        @mickym Danke dir, dass war der entscheidende Hinweis. Der Datenpunkt war als Logikwert hinterlegt. Ich habe es auf Zeichenkette geändert und jetzt geht es. 🙂

                        mickymM Offline
                        mickymM Offline
                        mickym
                        Most Active
                        schrieb am zuletzt editiert von
                        #23

                        @ronnyempire ok das heißt jetzt geht auch der ganze Zyklus mit Lesen und Schreiben? Und du kannst mit Blockly steuere über den Alias schalten?

                        Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                        R 1 Antwort Letzte Antwort
                        0
                        • mickymM mickym

                          @ronnyempire ok das heißt jetzt geht auch der ganze Zyklus mit Lesen und Schreiben? Und du kannst mit Blockly steuere über den Alias schalten?

                          R Offline
                          R Offline
                          Ronnyempire
                          schrieb am zuletzt editiert von
                          #24

                          @mickym Ja korrekt, skript läuft einwandfrei durch, danke dir

                          mickymM 1 Antwort Letzte Antwort
                          0
                          • R Ronnyempire

                            @mickym Ja korrekt, skript läuft einwandfrei durch, danke dir

                            mickymM Offline
                            mickymM Offline
                            mickym
                            Most Active
                            schrieb am zuletzt editiert von
                            #25

                            @ronnyempire na dann viel Spaß. Ich began schon an mir zu zweifeln. 😂

                            Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                            1 Antwort Letzte Antwort
                            0
                            • mickymM mickym

                              @merbes sagte in Shelly addon über Node Red auf einer NAS mit iobroker:

                              Leider wird wird der Wert der IDs so angezeigt, dass die graphische Auswertung keinen Sinn macht.
                              Der Wert lautet beispielsweise:
                              {"id": 100,"tC":53.5, "tF":128.3}

                              Wenn der Shelly diese Information liefert, brauchst Du deswegen immer noch kein NodeRed - so toll ich dieses Tool auch finde. Du kannst einen Alias definieren und den Wert direkt extrahieren.

                              Erstelle also unter alias.0 einen Datenpunkt, wo immer Du den auch haben möchtest.

                              95663366-1deb-48ba-a5c9-34661a2c702a-image.png

                              771896cf-8899-49ed-9694-e93891a35a1e-image.png

                              Wenn Du den erstellt hast, klicke rechts auf den Bleistift.

                              Ich hab nun mal testweise einen Datenpunkt mit Deinem JSON angelegt:
                              f4a6bfbb-7dc9-465a-8127-b1030b1a2fb9-image.png

                              Du musst dann aber auf den original Datenpunkt verweisen, der in Deinem MQTT- Adapter vorhanden ist.

                              Du klickst also auf die 3 Punkte in Deinem Alias und verweist auf den Datenpunkt wo der JSON mit der Temperatur enthalten ist.

                              0aa48b7c-bdef-408d-9181-3ee042f3c978-image.png

                              b35e058f-145e-4b21-89e6-ed2e71edd021-image.png

                              Wie gesagt bei Dir steht dann mqtt.0 etc drin.

                              Solange Du noch keinen originalen Datenpunkt ausgewählt hast, bekommst Du entsprechende Warnungen im Protokoll:

                              378b1a98-2dbf-4ab4-a255-88ee6beb5dea-image.png

                              Da Du beim Anlegen des Alias gesagt hast, dass Du einen Datentyp "number" hast wird noch eine null drin stehen.

                              Nun erstellst Du im Alias folgende Konvertierungsfunktion:

                              4a5d99ff-8741-490f-9582-4c08e6f79df6-image.png

                              Unter common kannst Du dann noch eine Einheit hinzufügen:

                              13b5cfab-c1e1-4bec-b383-5a3491447b1a-image.png

                              Und vola:

                              16909c86-6c78-408a-900e-723977c13c92-image.png

                              Dein Datenpunkt enthält die Temperatur mit der Einheit.

                              Also Daten aus einem JSON String - kann man das auch mit dem Alias extrahieren - dafür braucht es kein Node-Red.

                              G Offline
                              G Offline
                              garbleflux
                              schrieb am zuletzt editiert von
                              #26

                              @mickym
                              Hallo mickym,

                              herzlichen Dank für die tolle Erklärung und das Beispiel. Mit Deiner Hilfe habe ich es jetzt nach unendlich vielen Versuchen geschafft, die Werte der neuen Shelly-Plus-Generation aus dem JSON-String zu extrahieren und kann damit die Datenpunkte für die weitere Auswertung/Steuerung nutzen. 👍 👍 👍 👍 👍 👍

                              Wenn man's weiß, ist das ja ganz einfach
                              VG Michael

                              L 1 Antwort Letzte Antwort
                              1
                              • G garbleflux

                                @mickym
                                Hallo mickym,

                                herzlichen Dank für die tolle Erklärung und das Beispiel. Mit Deiner Hilfe habe ich es jetzt nach unendlich vielen Versuchen geschafft, die Werte der neuen Shelly-Plus-Generation aus dem JSON-String zu extrahieren und kann damit die Datenpunkte für die weitere Auswertung/Steuerung nutzen. 👍 👍 👍 👍 👍 👍

                                Wenn man's weiß, ist das ja ganz einfach
                                VG Michael

                                L Offline
                                L Offline
                                Laser
                                schrieb am zuletzt editiert von
                                #27

                                @mickym Ich habe ein ähnliches Problem und bekomme die Konvertierungsfunktion nicht hin. Iobroker hängt teilweise minutenlang.
                                Dannpunkt vorhanden:
                                {"sn":{"Time":"2023-12-03T10:49:52","MHZ19B":{"Model":"B","CarbonDioxide":741,"Temperature":24.0},"TempUnit":"C"},"ver":1}
                                Meine Funktion:
                                e73323c6-1fc9-48eb-819f-839f7bd04bc5-image.png
                                Es wird kein Datenpunkt generiert.

                                mickymM 1 Antwort Letzte Antwort
                                0
                                • L Laser

                                  @mickym Ich habe ein ähnliches Problem und bekomme die Konvertierungsfunktion nicht hin. Iobroker hängt teilweise minutenlang.
                                  Dannpunkt vorhanden:
                                  {"sn":{"Time":"2023-12-03T10:49:52","MHZ19B":{"Model":"B","CarbonDioxide":741,"Temperature":24.0},"TempUnit":"C"},"ver":1}
                                  Meine Funktion:
                                  e73323c6-1fc9-48eb-819f-839f7bd04bc5-image.png
                                  Es wird kein Datenpunkt generiert.

                                  mickymM Offline
                                  mickymM Offline
                                  mickym
                                  Most Active
                                  schrieb am zuletzt editiert von mickym
                                  #28

                                  @laser Na Datenpunkt generiert ist etwas missverständlich - es liegt auch daran, dass Du den Pfad nicht richtig definierst.

                                  die Konvertierung muss lauten:

                                  JSON.parse(val).sn.MHZ19B.CarbonDioxide
                                  

                                  Wenn Du so was nicht auf den ersten Block siehst empfehle ich Dir den JSON Formatter:
                                  https://jsonformatter.org/

                                  Wenn Du Deinen JSON links einträgst und dann auf Format Beauty klickst, bekommst die Hierarchie schön zu sehen.

                                  ab156422-4c98-44fd-a086-1268b9474d47-image.png

                                  Wenn Du auf den Filter gehst, kannst Du direkt überprüfen, ob Du den Pfad richtig eingegeben hast:

                                  eb7ad360-f6ea-4a62-8880-df5c6206d70c-image.png

                                  Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                                  L 1 Antwort Letzte Antwort
                                  1
                                  • mickymM mickym

                                    @laser Na Datenpunkt generiert ist etwas missverständlich - es liegt auch daran, dass Du den Pfad nicht richtig definierst.

                                    die Konvertierung muss lauten:

                                    JSON.parse(val).sn.MHZ19B.CarbonDioxide
                                    

                                    Wenn Du so was nicht auf den ersten Block siehst empfehle ich Dir den JSON Formatter:
                                    https://jsonformatter.org/

                                    Wenn Du Deinen JSON links einträgst und dann auf Format Beauty klickst, bekommst die Hierarchie schön zu sehen.

                                    ab156422-4c98-44fd-a086-1268b9474d47-image.png

                                    Wenn Du auf den Filter gehst, kannst Du direkt überprüfen, ob Du den Pfad richtig eingegeben hast:

                                    eb7ad360-f6ea-4a62-8880-df5c6206d70c-image.png

                                    L Offline
                                    L Offline
                                    Laser
                                    schrieb am zuletzt editiert von
                                    #29

                                    @mickym Danke, das funktioniert. Mit dem richtigen Pfad. Es wird kein neuer Datenpunkt generiert, sondern im Vorhandenen wird der selektierte Wert eingetragen.

                                    L 1 Antwort Letzte Antwort
                                    1
                                    • L Laser

                                      @mickym Danke, das funktioniert. Mit dem richtigen Pfad. Es wird kein neuer Datenpunkt generiert, sondern im Vorhandenen wird der selektierte Wert eingetragen.

                                      L Offline
                                      L Offline
                                      Laser
                                      schrieb am zuletzt editiert von
                                      #30

                                      @mickym muß ich noch etwas tun, damit der Wert im Alias-Datenpunkt automatisch aktualisiert wird?
                                      Wenn ich den MQTT Adapter neu starte , wird aktualisiert.

                                      mickymM 1 Antwort Letzte Antwort
                                      0
                                      • L Laser

                                        @mickym muß ich noch etwas tun, damit der Wert im Alias-Datenpunkt automatisch aktualisiert wird?
                                        Wenn ich den MQTT Adapter neu starte , wird aktualisiert.

                                        mickymM Offline
                                        mickymM Offline
                                        mickym
                                        Most Active
                                        schrieb am zuletzt editiert von
                                        #31

                                        @laser Nein - der Datenpunkt wird immer mit dem Originaldatenpunkt aktualisiert. Wenn dieser nicht aktualisiert wird, dann wird es der Alias auch nicht. Mit dem Adapterneustart - wird halt alles neu initialisiert. Aber wenn was nicht aktualisiert wird, liegt es an der Quelle und nicht am Alias.

                                        Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                                        L 1 Antwort Letzte Antwort
                                        1
                                        • mickymM mickym

                                          @laser Nein - der Datenpunkt wird immer mit dem Originaldatenpunkt aktualisiert. Wenn dieser nicht aktualisiert wird, dann wird es der Alias auch nicht. Mit dem Adapterneustart - wird halt alles neu initialisiert. Aber wenn was nicht aktualisiert wird, liegt es an der Quelle und nicht am Alias.

                                          L Offline
                                          L Offline
                                          Laser
                                          schrieb am zuletzt editiert von Laser
                                          #32

                                          @mickym Das liegt an der Tasmota - MQTT- Übertragung. Der Zeit- Stempel wird auch nicht aktualisiert. War halt ein Versuch, über Tasmota etwas zu messen. Muß im Tasmota etwas suchen, evtl. ist dort die Update zeit zu hoch eingestellt. Steht aber auf 5 Sec.

                                          mickymM 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

                                          336

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          Themen

                                          1.3m

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

                                          • Du hast noch kein Konto? Registrieren

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