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 @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
                                    • U
                                      uschi08 @KemnaMOL last edited by uschi08

                                      @kemnamol
                                      Danke dir. Mal sehen, ob es hinhaut, aber so habe ich eine Fehlerquelle ausgeschlossen.

                                      edit: geht net..ich bekomme keine Werte aus dem IoBroker, empfangen tut er sie.
                                      Darf ich fragen wie deine MQTT-Adapterkonfig aussieht?
                                      So, oder hast du andere Werte gesetzt?

                                      Screenshot 2023-07-06 080843.jpg

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

                                        @kemnamol wie gesagt, nutze am besten am PC den MQTT-Explorer. Da kannst du alle Daten sehen ohne im trüben zu stochern.
                                        Meine config:
                                        d4834f70-d91e-475e-931d-6239af38f56c-grafik.png

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

                                          @kemnamol

                                          Danke.
                                          Die Maske beim Senden der eigenen States war es.
                                          Ich hatte nochmal ne zweite Instanz aufgemacht, da waren die Defaultwerte dann auch korrekt und zudem der Port wieder auf 1883.
                                          Merci
                                          Ole

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

                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          950
                                          Online

                                          31.7k
                                          Users

                                          79.7k
                                          Topics

                                          1.3m
                                          Posts

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