Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Einfach Werte addieren und über MQTT senden

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Einfach Werte addieren und über MQTT senden

    This topic has been deleted. Only users with topic management privileges can see it.
    • K
      KemnaMOL last edited by

      Klingt zu einfach:
      2 PV-Werte vom Modbus addieren und über MQTT publizieren.
      Unter MQTT kann ich manuell keine eigenen Werte anlegen.
      Dies ist mein kläglicher Versuch:
      68c76526-b919-4458-be74-716fe4810137-grafik.png

      T 1 Reply Last reply Reply Quote 0
      • T
        TT-Tom @KemnaMOL last edited by

        @kemnamol

        Wie sieht deine Struktur unter mqtt.0 denn aus. Du musst auch zwei Parameter über geben, "Topic" und "Message".

        Wenn es den Datenpunkt unter mqtt.0 schon gibt, nutze "steuere" statt "aktualisiere"

        K 1 Reply Last reply Reply Quote 0
        • K
          KemnaMOL @TT-Tom last edited by KemnaMOL

          @tt-tom Nein, den Datenpunkt gibt es noch nicht. Dieser soll von einem ext. System übernommen werden.
          Wo genau übergebe ich denn die beiden Werte?
          cbb9565b-36a1-4248-b575-aca725a95dc5-grafik.png

          mickym 1 Reply Last reply Reply Quote 0
          • mickym
            mickym Most Active @KemnaMOL last edited by mickym

            @kemnamol Entweder Du beschreibst einen existierenden Datenpunkt unter mqtt mit steuere oder Du nutzt sendTo - dann brauchst Du aber nur den Wert und das topic schicken.

            So wird das nie funktionieren -

            Wenn Du sendTo verwenden willst, dann ein topic und einen Wert

            b97f84e1-2bd0-45ce-95e9-aa50ef27829c-image.png

            In diesem Fall musst Du halt in die Nachricht deine Summe schreiben.

            K 1 Reply Last reply Reply Quote 0
            • K
              KemnaMOL @mickym last edited by

              @mickym wie gezeigt möchte ich natürlich sendTo nutzen.
              Ich habe schon viel Programmiert, aber Blocky und iobroker sind mir noch völlig unbekannt.
              Schön wäre ein Tip zum WIE genau. Was ich machen möchte weiss ich ja.
              Bei mir gibt es keine Felder topic und message. Und der Wert muss ja auch erst noch berechnet werden.

              mickym 2 Replies Last reply Reply Quote 0
              • mickym
                mickym Most Active @KemnaMOL last edited by mickym

                @kemnamol Du machst das Zahnrad auf und setzt 2 Parameter:

                244f2a8d-2b37-4c7c-9f8a-d3a8dac99836-image.png

                Den ersten nennst Du topic und den zweiten message.

                In die Nachricht bildest Du Deine Summe.

                Die Summe bildest Du, wie Du es gemacht hast .

                660cfe28-c651-4e6c-b600-0fb1c925c47b-image.png

                Wie gesagt wenn der Datenpunkt schon existiert kannst Du ihn auch normal mit steuere beschreiben (dann aber ohne SendTo).

                Hier mal das gesamte Blockly zum Import:

                <xml xmlns="https://developers.google.com/blockly/xml">
                 <block type="sendto_custom" id="ls8@a?b_FZd{/PwZ%,li" x="-112" y="63">
                   <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">test/summe</field>
                     </shadow>
                   </value>
                   <value name="ARG1">
                     <shadow type="text" id="kYzE4%b}Px*fTaC#_m53">
                       <field name="TEXT">Meine Nachricht</field>
                     </shadow>
                     <block type="math_arithmetic" id="6%Qj0~h*+5|7jaq|t_y~">
                       <field name="OP">ADD</field>
                       <value name="A">
                         <shadow type="math_number" id="3XO)ktY#yJL5QxHJ/?N[">
                           <field name="NUM">1</field>
                         </shadow>
                         <block type="get_value" id="0cZ{.rOAJs%;1h=qnsBf">
                           <field name="ATTR">val</field>
                           <field name="OID">0_userdata.0.Test.Temperaturen.Bad.Temperatur</field>
                         </block>
                       </value>
                       <value name="B">
                         <shadow type="math_number" id="pB9[:oNkH.asXMt~Ekjl">
                           <field name="NUM">1</field>
                         </shadow>
                         <block type="get_value" id="@/s2@/iLjeVA-78bU_f?">
                           <field name="ATTR">val</field>
                           <field name="OID">0_userdata.0.Test.Temperaturen.Wohnzimmer.Temperatur</field>
                         </block>
                       </value>
                     </block>
                   </value>
                 </block>
                </xml>
                

                Wenn Du die originale Doku zum Mqtt-Adapter anschaust, dann muss das Objekt die beiden Eigenschaften topic und message enthalten:

                95a2c4fc-b995-4762-8590-93d1e6f0b115-image.png

                aus: https://github.com/ioBroker/ioBroker.mqtt

                Ergebnisse brauchst Du nicht anhaken - weil nichts zurückkommt von dem SendTo.

                1 Reply Last reply Reply Quote 1
                • mickym
                  mickym Most Active @KemnaMOL last edited by

                  @kemnamol sagte in Einfach Werte addieren und über MQTT senden:

                  Bei mir gibt es keine Felder topic und message. Und der Wert muss ja auch erst noch berechnet werden.

                  Ich berechne die Summe doch direkt beim Konstruieren der Nachricht, wie Du aus meinem Screenshot entnehmen kannst.

                  K 1 Reply Last reply Reply Quote 0
                  • K
                    KemnaMOL @mickym last edited by

                    @mickym Vielen Dank! Wieder eine Menge gelernt.
                    Leider wird kein neuer Datenpunkt erzeugt. Fehler sind im log auch nicht zu sehen.
                    Ich hätte erwartet dass es grafisch einfacher ist. Vielleicht sollte ich es doch mal direkt in JS probieren.
                    6b0b1069-a150-4ef7-8948-75bda1f962bb-grafik.png

                    mickym 1 Reply Last reply Reply Quote 0
                    • mickym
                      mickym Most Active @KemnaMOL last edited by

                      @kemnamol Vielleicht nur mal den Browser refreshen - das hilft oder neu auf und zu machen.

                      K 1 Reply Last reply Reply Quote 0
                      • K
                        KemnaMOL @mickym last edited by

                        @mickym Raspi neu gestartet, anderen Browser benutz, nix...

                        mickym 1 Reply Last reply Reply Quote 0
                        • mickym
                          mickym Most Active @KemnaMOL last edited by

                          @kemnamol sagte in Einfach Werte addieren und über MQTT senden:

                          @mickym Raspi neu gestartet, anderen Browser benutz, nix...

                          Schalte mal um auf JS und vergleiche mal:

                          sendTo("mqtt.1", "sendMessage2Client", {
                             "topic": 'test/summe',
                             "message": parseFloat(getState("0_userdata.0.Test.Temperaturen.Bad.Temperatur").val) + getState("0_userdata.0.Test.Temperaturen.Wohnzimmer.Temperatur").val
                          });
                          
                          

                          Wenn es da bis auf die Datenpunkte und topic Abweichungen gibt, dann ggf. korrigieren. Ansonsten weiß ich auch nicht.

                          K 1 Reply Last reply Reply Quote 0
                          • K
                            KemnaMOL @mickym last edited by KemnaMOL

                            @mickym erschreckend gleich:

                            sendTo("mqtt.0", "sendMessage2Client", {
                               "topic": 'Deye-PV/PV-ges',
                               "message": parseFloat(getState("modbus.1.holdingRegisters.40673_PV1_input_power").val) + getState("modbus.1.holdingRegisters.40674_PV2_input_power").val
                            });
                            

                            Aber bei dir ist mqtt.1
                            Muss ich zum senden einen extra client installieren?

                            mickym 1 Reply Last reply Reply Quote 0
                            • mickym
                              mickym Most Active @KemnaMOL last edited by

                              @kemnamol Nein musst Du nicht. - Alternativ legst Du den Datenpunkt manuell an und beschreibst ihn normal mit steuere.

                              K 1 Reply Last reply Reply Quote 0
                              • K
                                KemnaMOL @mickym last edited by

                                @mickym das hatte ich versucht, geht aber nicht. Das + ist unter mqtt ausgegraut
                                Ordner kann ich auch nicht anlegen.

                                mickym 1 Reply Last reply Reply Quote 0
                                • mickym
                                  mickym Most Active @KemnaMOL last edited by

                                  @kemnamol Expertenmodus einschalten und dann auf mqtt.0 Ebene Cursor

                                  Dann Datenpunkt wie folgt anlegen:

                                  351bbeaf-7eee-4f3b-a608-3ce4402d3e16-image.png

                                  K 1 Reply Last reply Reply Quote 0
                                  • K
                                    KemnaMOL @mickym last edited by

                                    @mickym Danke, das geht. Darauf kommt man aber auch wieder niemals alleine.
                                    Mal schnell bisschen iobroker machen. 😧
                                    Allerdings hat er das nur einmalig berechnet. Muss ich die Eingangswerte auf Änderung abfragen, oder geht das auch einfacher?

                                    mickym 1 Reply Last reply Reply Quote 0
                                    • mickym
                                      mickym Most Active @KemnaMOL last edited by

                                      @kemnamol Ich würde beide auf Änderung abfragen und den jeweils anderen wert dazu zählen.

                                      K 1 Reply Last reply Reply Quote 0
                                      • K
                                        KemnaMOL @mickym last edited by

                                        @mickym said in Einfach Werte addieren und über MQTT senden:

                                        vielen, vielen Dank! So funktioniert das endlich Top!
                                        Nur ist heute wieder keine Zeit mehr für ernsthaftes Programmieren. Immer diese Spieltrieb.🤦

                                        U 1 Reply Last reply Reply Quote 0
                                        • U
                                          uschi08 @KemnaMOL last edited by

                                          @kemnamol

                                          darf ich mich einmal hier einklinken, ich versuche auch gerade via MQTT aus dem iobroker Daten zur PV und Strom zu senden. Klappt nicht.

                                          Der MQTT Wert in der Deklaration des evcc wird erkannt, abonniert und sogar im iobroker angelegt.
                                          ABER ich bekomme keine Werte übergtragen wenn ich Werte in den Datenpunkt schreibe- nicht manuell und nicht via script.
                                          Ausgelesen werden die Daten zur Steuerung des evcc unter side und loadpunkt auch 1a.

                                          lediglich das zurückschreiben geht nicht:
                                          hier meine Deklaration des Grids:

                                          meters:

                                          • name: grid1
                                            type: custom
                                            power: #
                                            source: mqtt
                                            topic: mqtt/0/evcc/Neuer_Zustand

                                          Meldung:
                                          [mqtt ] DEBUG 2023/07/04 06:18:32 mqtt/0/evcc/Neuer_Zustand wait for initial value

                                          Wärst du so nett und würdest einmal deine Grid-Konfiguration posten.
                                          Du übergibst ja wahrscheinlich auch Grid und PV ?

                                          K 1 Reply Last reply Reply Quote 0
                                          • K
                                            KemnaMOL @uschi08 last edited by KemnaMOL

                                            @uschi08 ich glaube, du verwechselst den Pfad mit den Daten die EVCC selber sendet.
                                            Ich habe zum Testen das Programm MQTT-Explorer auf dem PC.
                                            Ich habe einmal die PV-Daten vom Deye mit den vorher in iobroker addieren Werten.
                                            Du könntest diese aber auch getrennt einlesen, EVCC addiert diese.
                                            10881660-82be-4c31-be77-7e621e8b92cd-grafik.png
                                            Als 2. PV habe ich aber noch einen Huawei.

                                            - type: custom
                                              name: Deye
                                              power:
                                                source: mqtt
                                                topic: Deye/Deye-PV-ges
                                                timeout: 70s
                                            

                                            Grid hole ich von einem Shelly 3EM und die Akkudaten direkt (auch per MQTT) vom Daly-BMS.
                                            Aber da kannst du ja auch 1:1 die entsprechenden Daten vom DEYE nehmen.

                                            - name: battery
                                              type: custom
                                              power:
                                                source: mqtt
                                                topic: daly/Pack_Power
                                                scale: -1
                                                # scale: 0.001 # floating point factor applied to result, e.g. for Wh to kWh conversion
                                                timeout: 70s
                                              soc:
                                                source: mqtt
                                                topic: daly/Pack_SOC
                                                timeout: 70s
                                            

                                            Ich habe den zu übergebenden Wert (im Experpenmodus!) manuell im iobroker angelegt:
                                            fdea1210-34b6-4d26-b5fa-74551733f29d-grafik.png
                                            Viel Erfolg.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            560
                                            Online

                                            31.7k
                                            Users

                                            79.6k
                                            Topics

                                            1.3m
                                            Posts

                                            4
                                            23
                                            1057
                                            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