Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. ESPHome json per mqtt senden

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    ESPHome json per mqtt senden

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

      Hallo zusammen ich versuche von meinem Growatt modstick auf dem ESPHome läuft werte direkt an mein VenusOS zu senden.
      so sieht meine config aus ```
      substitutions:
      devicename: "esphome-growatt-01"
      upper_devicename: "ESPHome Growatt 01"

      esphome:
      name: $devicename
      platform: ESP8266
      board: esp07s

      Enable logging

      logger:
      baud_rate: 0

      Enable Home Assistant API

      #api:

      password: "01234"

      mqtt:
      broker: 192.168.1.12
      port: 1884
      username: Nils
      password: !secret mqtt_password

      ota:
      password: "01234"

      wifi:
      ssid: !secret wifi_ssid
      password: !secret wifi_password

      Enable fallback hotspot (captive portal) in case wifi connection fails

      ap:
      ssid: "GGrowatt"
      password: "oLjULFvNXq1l"

      Enable Web server

      web_server:
      port: 80

      captive_portal:

      #time:

      - platform: homeassistant

      id: homeassistant_time

      output:

      Blue Led

      - id: light_bl
        platform: gpio
        pin: 16
      

      Green Led

      - id: light_gr
        platform: gpio
        pin: 0
      

      Red Led

      - id: light_rd
        platform: gpio
        pin: 2
      

      uart:
      id: mod_bus
      tx_pin: 1
      rx_pin: 3
      baud_rate: 115200

      modbus:
      id: modbus1
      uart_id: mod_bus

      modbus_controller:
      - id: growatt

      the Modbus device addr

        address: 0x1
        modbus_id: modbus1
        update_interval: 10s
        setup_priority: -10  
      

      sensor:
      - platform: modbus_controller
      name: "${devicename} DcPower"
      address: 5
      register_type: "read"
      unit_of_measurement: W
      device_class: power
      icon: mdi:flash
      value_type: U_DWORD
      accuracy_decimals: 1
      filters:
      - multiply: 0.1

      - platform: modbus_controller
        name: "${devicename} DcVoltage"
        address: 3
        register_type: "read"
        unit_of_measurement: V
        device_class: voltage
        icon: mdi:flash
        value_type: U_WORD
        accuracy_decimals: 1
        filters:
        - multiply: 0.1
        
      - platform: modbus_controller
        name: "${devicename} DcInputCurrent"
        address: 4
        register_type: "read"
        unit_of_measurement: A
        device_class: current
        icon: mdi:flash
        value_type: U_WORD
        accuracy_decimals: 1
        filters:
        - multiply: 0.1
        
      - platform: modbus_controller
        name: "${devicename} AcFrequency"
        address: 37
        register_type: "read"
        unit_of_measurement: Hz
        icon: mdi:flash
        value_type: U_WORD
        accuracy_decimals: 1
        filters:
        - multiply: 0.01
      
      - platform: modbus_controller
        name: "${devicename} AcVoltage"
        id: pv_voltage
        address: 38
        register_type: "read"
        unit_of_measurement: V
        device_class: voltage
        icon: mdi:flash
        value_type: U_WORD
        accuracy_decimals: 1
        filters:
        - multiply: 0.1
      
      - platform: modbus_controller
        name: "${devicename} AcOutputCurrent"
        id: pv_current
        address: 39
        register_type: "read"
        unit_of_measurement: A
        device_class: current
        icon: mdi:flash
        value_type: U_WORD
        accuracy_decimals: 1
        filters:
        - multiply: 0.1
        
      - platform: modbus_controller
        name: "${devicename} AcPower"
        id: pv_power
        address: 40
        register_type: "read"
        unit_of_measurement: W
        device_class: power
        icon: mdi:flash
        value_type: U_DWORD
        accuracy_decimals: 1
        filters:
        - multiply: 0.1
        on_value:
          then:
          - mqtt.publish_json:
              topic: "Growatt/mic2000/meters"
              payload: |
                  {
                  "pv": {
                    "power": id(pv_power).state,
                    "voltage": id(pv_voltage).state,
                    "current": id(pv_current).state,
                    "energy_forward": id(pv_energy_forward).state,
                    "L1": {
                      "power": id(pv_power).state,
                      "voltage": id(pv_voltage).state,
                      "current": id(pv_current).state,
                      "energy_forward": id(pv_energy_forward).state
                    }
                  }}
      
      
      
        
      - platform: modbus_controller
        name: "${devicename} EnergyToday"
        address: 53
        register_type: "read"
        unit_of_measurement: kWh
        device_class: energy
        icon: mdi:flash
        value_type: U_DWORD
        accuracy_decimals: 1
        filters:
        - multiply: 0.1
        
      - platform: modbus_controller
        name: "${devicename} EnergyTotal"
        id: pv_energy_forward
        address: 55
        register_type: "read"
        unit_of_measurement: kWh
        state_class: total_increasing
        device_class: energy
        icon: mdi:flash
        value_type: U_DWORD
        accuracy_decimals: 2
        filters:
        - multiply: 0.1
        
      - platform: modbus_controller
        name: "${devicename} Temperature"
        address: 93
        register_type: "read"
        unit_of_measurement: C
        device_class: temperature
        icon: mdi:thermometer
        value_type: U_WORD
        accuracy_decimals: 1
        filters:
        - multiply: 0.1
      
      - platform: mqtt_subscribe
        name: "mqtttest"
        id: mqtttest
        topic: the/topic 
        on_value:
          then:
            - lambda: |-
                esphome::modbus_controller::ModbusController *controller = id(growatt);
                uint16_t reg = 3; // Register: Max output active power (in %)
                float value = id(mqtttest).state;
                uint16_t register_value = static_cast<uint16_t>(value);
                modbus_controller::ModbusCommandItem setOutputPower_command = modbus_controller::ModbusCommandItem::create_write_single_command(controller, reg, register_value);
                controller->queue_command(setOutputPower_command);
      
                
      
      #- platform: mqtt_subscribe
      #  name: "mqtttest"
      #  id: mqtttest
      #  topic: the/topic 
      #  on_value: 
      #    lambda: |-
      #      id(poweroutput).state;
      

      #neu test power factor 02/2023
      number:
      - platform: modbus_controller
      name: "${devicename} Max Output Active Power"
      id: poweroutput
      address: 3
      value_type: U_WORD
      min_value: 0
      max_value: 100
      entity_category: config
      step: 1

      ich habe folgenden abschnitt hinzugefügt
      

      on_value:
      then:
      - mqtt.publish_json:
      topic: "Growatt/mic2000/meters"
      payload: |
      {
      "pv": {
      "power": id(pv_power).state,
      "voltage": id(pv_voltage).state,
      "current": id(pv_current).state,
      "energy_forward": id(pv_energy_forward).state,
      "L1": {
      "power": id(pv_power).state,
      "voltage": id(pv_voltage).state,
      "current": id(pv_current).state,
      "energy_forward": id(pv_energy_forward).state
      }
      }}

      Vorweg vorher lief es über Node Red ohne Probleme
      Die payload soll folgendermaßen aussehen
      

      msg.payload = {
      "pv": {
      "power": msg.payload["P"],
      "voltage": msg.payload["V"],
      "current": msg.payload["I"],
      "energy_forward": msg.payload["W"],
      "L1": {
      "power": msg.payload["P"],
      "voltage": msg.payload["V"],
      "current": msg.payload["I"],
      "energy_forward": msg.payload["W"],
      }
      }
      }

      return msg;

      
      Evtl hat jemand einen tip
      S 1 Reply Last reply Reply Quote 0
      • mickym
        mickym Most Active last edited by

        Warum machst Du es dann nicht weiter über NodeRed?

        J 1 Reply Last reply Reply Quote 0
        • J
          Jacke @mickym last edited by

          @mickym Node red läuft auf einem zusätzlichen gerät. warum die Daten per Mqtt an den IoBroker senden dort in Node red dann wieder per Mqtt an das VenusOS senden.
          Ich habe nur leider wenig ahnung von ESPHome und yaml. Es ist merh ein Trial & Error.

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

            @jacke Du sendest nicht. Das VenusOS ist ein mqtt-Broker und kann beliebig viele mqtt-Clients bedienen. Du kannst Dir ja dann NodeRed auf dem zusätzlichen Gerät sparen, wenn Du NodeRed als Logikmaschine im iobroker verwendest.

            J 1 Reply Last reply Reply Quote 0
            • J
              Jacke @mickym last edited by Jacke

              @mickym ich schicke es ja nicht am das Venus sondern am einem zusätzlichen Treiber auf dem VenusOS dieser subscribed ein topic von einem Broker uns sendet die Daten an das dbus system.
              Ich bin noch ziemlich unerfahren in node red aber ist der Venus Treiber dann nicht Client?
              Mir fällt gerade auf das ich im esp Home den iobroker als Broker angebe also benötige ich ihn doch noch. Besser wäre ohne.
              Ich habe den esp Code hinbekommen das richtige Stichwort was mir geholfen hat war adruino json library.
              So sieht der richtige code aus

                    on_value:
                      then:
                        - mqtt.publish_json:
                            topic: "Growatt/mic2000/meters"
                            payload: |-
                                root["pv"]["power"] = id(pv_power).state;
                                root["pv"]["voltage"] = id(pv_voltage).state;
                                root["pv"]["current"] = id(pv_current).state;
                                root["pv"]["energy_forward"] = id(pv_energy_forward).state;
                                root["pv"]["L1"]["power"] = id(pv_power).state;
                                root["pv"]["L1"]["voltage"] = id(pv_voltage).state;
                                root["pv"]["L1"]["current"] = id(pv_current).state;
                                root["pv"]["L1"]["energy_forward"] = id(pv_energy_forward).state;
              
              mickym 1 Reply Last reply Reply Quote 0
              • mickym
                mickym Most Active @Jacke last edited by

                @jacke Für das ESP Home brauchst Du einen mqtt-Broker. Ich hätte Dir aber eher einen externen Broker, wie mosquitto empfohlen. Aber kannst Du immer noch machen,

                J 1 Reply Last reply Reply Quote 0
                • J
                  Jacke @mickym last edited by

                  @mickym ich hätte es halt gerne komplett ohne zusätzliche Hardware. Also nur den Growatt stick mit ESHome und das Vensu OS ich weiß nicht ob ich den MQTT vom VenusOS benutzen kann?
                  Aber das gehört bestimmt ins Victron forum?

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

                    @jacke Ja ich kann Dir da nicht helfen. Aber ich glaube auch nicht dass Du das VenusOS als normalen Mqtt-Broker nutzen kannst.

                    1 Reply Last reply Reply Quote 0
                    • S
                      succo_J @Jacke last edited by

                      @jacke
                      Ich vermute mal, du willst die Daten im Victron-System abbilden.
                      Dann müssen die noch auch dem Venus-OS von MQTT auf dbus umgeschrieben werden.
                      Hier habe ich zB. etwas dazu gefunden: https://github.com/Louisvdw/dbus-serialbattery/discussions/258#discussioncomment-5482398

                      Ansonsten, ja - auf dem Venus-OS läuft ein vollständiger MQTT-Broker. Noch ist es mosquitto, bald soll es FlashMQ werden.

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

                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      549
                      Online

                      31.7k
                      Users

                      79.8k
                      Topics

                      1.3m
                      Posts

                      3
                      9
                      813
                      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