Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Off Topic
    4. Microcontroller
    5. Tasmota ESPHome Presence Sensor LD2410

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Tasmota ESPHome Presence Sensor LD2410

    This topic has been deleted. Only users with topic management privileges can see it.
    • liv-in-sky
      liv-in-sky @Ralla66 last edited by

      @ralla66

      hast du den eigentlich eingerichtet - ich kann ihn nun im sonoff adapter sehen und auch in der gui - der sensor ist eingetragen - aber es gibt keine daten - rx und tx kabel schon getauscht - bringt auch nix - ich nutze einen 2410B - muss ich den irgendwie umstellen auf seriell?

      Ralla66 3 Replies Last reply Reply Quote 0
      • Ralla66
        Ralla66 Most Active @liv-in-sky last edited by Ralla66

        @liv-in-sky

        nach dem starten des Esp muß der Hardware Serial an RX aktiviert / eingeschaltet werden.
        Dies sollte mit Eingabe von SerialSend 0 in der Tasmota Console gehen, siehe Doku Serial Tasmota da ich hier auch irren kann. Beachte das Leerzeichen .
        Dann sollte was in der Tasmota Console zu lesen sein.
        Je nach Ausgabe des Sensors muß der SerialDelimiter in der Console ausgeführt werden.
        Eingabe in der Tasmota Console mit Leerzeichen für
        Ascii : SerialDelimiter 128
        Hex : SerialDelimiter 254
        SerialDelimiter Deaktivieren : SerialDelimiter 255

        Wenn der Sensor dann Daten liefert kannst du das aktivieren nach dem booten automatisch per Rule bestimmen.
        Ob Daten des Sensor geliefert werden kannst du in der Tasmota Console prüfen.

        Beispiel mit SerialDelimiter 128 :

        send.png

        1 Reply Last reply Reply Quote 0
        • Ralla66
          Ralla66 Most Active @liv-in-sky last edited by Ralla66

          @liv-in-sky

          Test des RX GPIO mit SerialDelimiter 255 ohne Sensor,
          GPIO RX am ESP kurz nach GND gebrückt/getaktet ergibt dies :

          send RX Test.jpg

          1 Reply Last reply Reply Quote 0
          • Ralla66
            Ralla66 Most Active @liv-in-sky last edited by

            @liv-in-sky

            wenn läuft, Rule 1 anlegen mit :
            Rule1 1
            Rule1 ON System#Boot DO SerialSend 0 ENDON

            RX Rule.jpg

            Tasmota Rules

            liv-in-sky 1 Reply Last reply Reply Quote 0
            • liv-in-sky
              liv-in-sky @Ralla66 last edited by

              @ralla66 leider geht überhaupt nix - auch mit deinen tollen tipps bekomme ich es nicht ans laufen - im moment versuche ich esphome - da sieht es aber auch noch nicht besser aus 😞

              ich bin nicht mal sicher, on diese bluetooth version überhaupt dafür nutzbar ist - obwohl man eine baudrate (über die app) einstellen kann - in der app sind es 256000 und die baudrate von tasmota ist 255900 - keine ahnung , ob das das selbe ist

              Ralla66 1 Reply Last reply Reply Quote 0
              • Ralla66
                Ralla66 Most Active @liv-in-sky last edited by Ralla66

                @liv-in-sky

                wenn der Test RX nach GND am ESP geht fehlt wohl das Signal vom Sensor.
                Mal bitte das Datasheet deines Sensors hier verlinken.
                Immer wieder gerne genommen falsche unsaubere Spannungsversorgung
                durch Netzteile vom Wühltisch 🙂
                Ratsam sind auch immer min 1A, keine 500 ma USB Verbinder vom PC.
                Spannungsversorgung des Sensors nicht vom Wemos oder NodeMcu beziehen.
                Hat dein LD2410 an Pin 3 den Anschluß Vo Sensor Output ?

                liv-in-sky 2 Replies Last reply Reply Quote 0
                • liv-in-sky
                  liv-in-sky @Ralla66 last edited by

                  @ralla66

                  ich muss jetzt baumfällen gehen - werd am wochenende deine tipps checken - nochmals danke

                  Ralla66 1 Reply Last reply Reply Quote 0
                  • Ralla66
                    Ralla66 Most Active @liv-in-sky last edited by Ralla66

                    @liv-in-sky

                    ok, Baudrate kannste ändern, max 115200 bps
                    RX baud.jpg

                    bis denne

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

                      @ralla66

                      Zusatz, wenn Out vorhanden sollte auch möglich sein :
                      Out mit ADC am ESP verbinden. Generic 18, A0 -> ADC Input.
                      Dann sollten im Tasmota Main Menü Werte von 0 bis 1024 bei Motion Detection
                      angezeigt werden.
                      Wäre zu prüfen welche Spannung Out ausgibt,bei 5 Volt halt Widerstand zwischen
                      Out und ADC.
                      Bin Weg --------------------------------------------------->>

                      RX pin.jpg

                      liv-in-sky 2 Replies Last reply Reply Quote 0
                      • liv-in-sky
                        liv-in-sky @Ralla66 last edited by

                        @ralla66 sagte in Tasmota Gitpod Sensor LD2410 BinFile:

                        Spannungsversorgung des Sensors nicht vom Wemos oder NodeMcu beziehen

                        das war ein wertvoller tipp - zumindest bekomme ich jetzt was gesendet

                        wenn ich jetzt noch wüßte, was ich damit anfangen kann - es gibt auch den pin "out" - dachte den könnte ich in tasmota einbinden - aber der ändert sich nicht - so richtig checken tue ich das teil nicht 🙂

                        1 Reply Last reply Reply Quote 0
                        • liv-in-sky
                          liv-in-sky @Ralla66 last edited by liv-in-sky

                          @ralla66 sagte in Tasmota Gitpod Sensor LD2410 BinFile:

                          Out mit ADC am ESP verbinden. Generic 18, A0 -> ADC Input

                          brauch ich da hardware dazu - oder kann ich das direkt anschliessen

                          habe es gefunden

                          1 Reply Last reply Reply Quote 0
                          • liv-in-sky
                            liv-in-sky @Ralla66 last edited by liv-in-sky

                            @ralla66

                            ahh - dieser A0 ist ein brauchbarer wert - was für eine schwere geburt - vielen dank (heißt nicht, dass nicht noch mehr fragen kommen könnten 🙂 )

                            Ralla66 1 Reply Last reply Reply Quote 0
                            • Ralla66
                              Ralla66 Most Active @liv-in-sky last edited by Ralla66

                              @liv-in-sky

                              prima soweit,
                              an Out des Sensors wird ja nur bei keine Bewegung erkannt kein Pegel ausgegeben
                              also 0 Volt.
                              Bei Bewegung erkannt gibt dieser Out Pin 3,3 oder 5 Volt aus.

                              Dann sollte das auch mit einem Button in Generic 18 gehen ( außer GPIO 0 und 2 ).
                              Der Taster im Schema ist ja dein Out.
                              Button beschaltung
                              Somit würdest du dann im Sonoff Adapter per Mqtt ein true oder false im Datenpunkt bekommen.

                              ADC gibt dir Werte aus, wobei 0 = 0 Volt sind und 1024 halt 3,3 Volt.
                              A0 genannt in der Tasmota Generic Config und einzelner besonderer Pin an einer
                              NodMCU.

                              1 Reply Last reply Reply Quote 0
                              • liv-in-sky
                                liv-in-sky last edited by

                                hat schon jmd mit esphome getestet und evtl ein fertiges yaml ? ich bekomm da nicht wirklich was zum laufen

                                bei tasmota ist z.b das problem, daß ich -obwohl "serialsend 0" eingegeben wird, ich die app aufrufen muss, mich mit dem sensor verbinden muss (ich habe die bluetooth version), damit er dann auch in tasmota zu arbeiten beginnt.

                                ps. falls sich jmd den sensor bestellt, braucht man die bluetooth version, um über die app den sensor einstellen zu können - nimmt man nur den sensor - also ohne"B" braucht man auch ein entwicklerboard, um die einstellungen testen zu können - bei tasmota - ob esphome letztlich über mqtt einstellungen zuläßt, weiß ich nicht

                                BananaJoe 1 Reply Last reply Reply Quote 0
                                • BananaJoe
                                  BananaJoe Most Active @liv-in-sky last edited by

                                  @liv-in-sky es gibt ja auch die Bluetooth-Version von Tasmota ... um z.B. diese Thermometer etc. abzufragen:
                                  https://tasmota.github.io/docs/Bluetooth_ESP32/#encryption-and-bind_key
                                  und die Befehle dazu https://tasmota.github.io/docs/Commands/#neopool

                                  So teuer sind die Sensoren ansonsten scheinbar nicht ...

                                  liv-in-sky 1 Reply Last reply Reply Quote 0
                                  • liv-in-sky
                                    liv-in-sky @BananaJoe last edited by

                                    @bananajoe

                                    du meinst, den sensor über bluetooth abfragen (ohne app) - das geht leider nicht. die haben eine sehr kurze (4- 5m ) reichweite - dh ich müßte in jedem zimmer einen bluetooth empfänger haben, der die daten des sensors empfangen kann. wie diese empfänger dann eingerichtet werden müssen, damit sie den sensor verstehen, weiß ch nicht

                                    ich habe auch so themometer , die über einen bluetooth empfänger (im stockwerk) abgefragt werden - da mußte ich aber einiges konfigurieren mit esphome

                                    1 Reply Last reply Reply Quote 0
                                    • liv-in-sky
                                      liv-in-sky last edited by liv-in-sky

                                      bin wieder einen schritt weiter - nutze jetzt einen esp32, da startet der sensor sofort

                                      @BananaJoe wenn ich in dem esp32 das bluetooth einschalte, werden mir sofort die thermometer aufgelistet - der radarsensor wird da nicht gezeigt - also über tasmota mit bt würde das nicht funktionieren

                                      jetzt muss ich nur noch die sensibilität hinbekommen - langsam geht was 🙂

                                      1 Reply Last reply Reply Quote 0
                                      • liv-in-sky
                                        liv-in-sky last edited by liv-in-sky

                                        @Zarello
                                        @crunchip

                                        bin mit dem sensor ein schrittchen weiter: esphome mit esp32 - die presence (motion) wird jetzt angezeigt - auch nach einem neustart des sensors

                                        Image 010.png

                                        esphome ist jetzt nicht gerade mein favourite - aber hier mal die yaml, die ich nutze. was nicht so toll ist, ist die reaktionszeit. als presence melder brauchbar - als trigger beim raumbetreten weniger - es sei den, wir finden noch ein paar einstellungen.
                                        bei den yaml's müssen die gpio' eingestellt werden, je nach version des esp's (zeile 171 nicht vergessen).

                                        esphome:
                                         name: "ld2410m1"
                                         platform : esp32
                                         board: esp32dev
                                        
                                         
                                         includes:
                                           - uart_read_line_sensor_ld2410v3.h
                                         on_boot:
                                           priority: -100
                                           then:
                                             - script.execute: get_config
                                        
                                        # Enable logging
                                        logger:
                                         baud_rate: 0
                                         logs:
                                           sensor: INFO # DEBUG level with uart_target_output = overload!
                                           binary_sensor: INFO
                                           text_sensor: INFO
                                        
                                        # Enable Home Assistant API
                                        api:
                                        
                                        ota:
                                         
                                        
                                        wifi:
                                         ssid: "Dragonxxxxxx1"
                                         password: "xxxxxxxxxxxxxxxyy"
                                         use_address: 192.168.178.86
                                        
                                        
                                        
                                        substitutions:
                                         device_name: dev-sensor
                                        
                                        mqtt:
                                         broker: 192.168.178.59
                                         port: 1506
                                         topic_prefix: ld2410motion/motion1
                                         
                                         
                                        web_server:
                                         port: 80
                                         version: 2
                                         include_internal: true
                                         ota: false
                                        
                                        captive_portal:
                                        
                                        uart:
                                         id: uart_bus
                                         tx_pin:
                                           number: GPIO1
                                         rx_pin: 
                                           number: GPIO3
                                         baud_rate: 256000
                                         parity: NONE
                                         stop_bits: 1
                                        
                                        switch:
                                         - platform: safe_mode
                                           name: use_safe_mode
                                           
                                         - platform: template
                                           name: configmode
                                           id: configmode
                                           optimistic: true
                                           # assumed_state: false
                                           turn_on_action:
                                             # - switch.turn_off: engineering_mode
                                             - lambda: 'static_cast<LD2410 *>(ld2410)->setConfigMode(true);'
                                             - delay: 100ms
                                             - script.execute: clear_targets
                                           turn_off_action:
                                             - lambda: 'static_cast<LD2410 *>(ld2410)->setConfigMode(false);'
                                        
                                         - platform: template
                                           name: show_target_stats
                                           id: show_stats
                                           optimistic: true
                                           internal: true
                                           turn_off_action:
                                             - script.execute: clear_targets
                                        
                                        text_sensor:
                                         - platform: template
                                           name: uptime_human_readable
                                           id: uptime_human_readable
                                           icon: mdi:clock-start
                                           update_interval: 60s
                                        
                                        sensor:
                                         - platform: uptime
                                           name: uptime_sensor
                                           id: uptime_sensor
                                           update_interval: 60s
                                           internal: true
                                           on_raw_value:
                                             then:
                                               - text_sensor.template.publish:
                                                   id: uptime_human_readable
                                                   state: !lambda |-
                                                             int seconds = round(id(uptime_sensor).raw_state);
                                                             int days = seconds / (24 * 3600);
                                                             seconds = seconds % (24 * 3600);
                                                             int hours = seconds / 3600;
                                                             seconds = seconds % 3600;
                                                             int minutes = seconds /  60;
                                                             seconds = seconds % 60;
                                                             return (
                                                               (days ? to_string(days)+":" : "00:") +
                                                               (hours ? to_string(hours)+":" : "00:") +
                                                               (minutes ? to_string(minutes)+":" : "00:") +
                                                               (to_string(seconds))
                                                             ).c_str();
                                        
                                         - platform: custom # currently crashes ESP32
                                           lambda: |-
                                             auto uart_component = static_cast<LD2410 *>(ld2410);
                                             //return {uart_component->movingTargetDistance,uart_component->movingTargetEnergy,uart_component->stillTargetDistance,uart_component->stillTargetEnergy,uart_component->detectDistance};
                                             return {};
                                           sensors:
                                           
                                         - platform: template
                                           name: movingTargetDistance
                                           id: movingTargetDistance
                                           unit_of_measurement: "cm"
                                           accuracy_decimals: 0
                                           internal: true
                                           
                                         - platform: template
                                           name: movingTargetEnergy
                                           id: movingTargetEnergy
                                           unit_of_measurement: "%"
                                           accuracy_decimals: 0
                                           internal: true
                                           
                                         - platform: template
                                           name: stillTargetDistance
                                           id: stillTargetDistance
                                           unit_of_measurement: "cm"
                                           accuracy_decimals: 0
                                           internal: true
                                           
                                         - platform: template
                                           name: stillTargetEnergy
                                           id: stillTargetEnergy
                                           unit_of_measurement: "%"
                                           accuracy_decimals: 0
                                           internal: true
                                           
                                         - platform: template
                                           name: detectDistance
                                           id: detectDistance
                                           unit_of_measurement: "cm"
                                           accuracy_decimals: 0
                                           internal: true
                                           
                                        custom_component:
                                         - lambda: |-
                                             return {new LD2410(id(uart_bus))};
                                           components:
                                             - id: ld2410
                                             
                                        binary_sensor:
                                         - platform: gpio
                                           name: mmwave_presence_ld2410
                                           id: mmwave_presence_ld2410
                                           pin: GPIO36
                                           device_class: motion
                                           on_state:
                                             then:
                                               - if: 
                                                   condition: 
                                                     - binary_sensor.is_off: mmwave_presence_ld2410
                                                   then: 
                                                     - delay: 150ms
                                                     - script.execute: clear_targets
                                        
                                        number:  
                                         - platform: template
                                           name: configMaxDistance
                                           id: maxconfigDistance
                                           unit_of_measurement: "M"
                                           min_value: 0.75
                                           max_value: 6
                                           step: 0.75
                                           update_interval: never
                                           optimistic: true
                                           set_action:
                                             - switch.turn_on: configmode
                                             - delay: 50ms
                                             - lambda: |-
                                                 auto uart_component = static_cast<LD2410 *>(ld2410);
                                                 uart_component->setMaxDistancesAndNoneDuration(x/0.75,x/0.75,id(noneDuration).state);
                                             - delay: 50ms
                                             - lambda: 'static_cast<LD2410 *>(ld2410)->queryParameters();'
                                             - delay: 50ms
                                             - switch.turn_off: configmode
                                        
                                         - platform: template
                                           name: "sensitivity_threshold_(%)"
                                           id: allSensitivity
                                           min_value: 10
                                           max_value: 100
                                           step: 5
                                           mode: box
                                           update_interval: never
                                           optimistic: true
                                           set_action:
                                             - switch.turn_on: configmode
                                             - delay: 50ms
                                             - lambda: |-
                                                 auto uart_component = static_cast<LD2410 *>(ld2410);
                                                 uart_component->setAllSensitivity(x);
                                             - delay: 50ms
                                             - lambda: 'static_cast<LD2410 *>(ld2410)->queryParameters();'
                                             - delay: 50ms
                                             - switch.turn_off: configmode
                                             
                                         - platform: template
                                           name: "motion_hold_(sec)"
                                           id: noneDuration
                                           min_value: 0
                                           # max_value: 32767
                                           max_value: 900
                                           step: 1
                                           mode: box
                                           update_interval: never
                                           optimistic: true
                                           set_action:
                                             - switch.turn_on: configmode
                                             - delay: 50ms
                                             - lambda: |-
                                                 auto uart_component = static_cast<LD2410 *>(ld2410);
                                                 uart_component->setMaxDistancesAndNoneDuration(id(maxconfigDistance).state, id(maxconfigDistance).state, x);
                                             - delay: 50ms
                                             - lambda: 'static_cast<LD2410 *>(ld2410)->queryParameters();'
                                             - delay: 50ms
                                             - switch.turn_off: configmode
                                        button:
                                         - platform: restart
                                           name: "reset/restart_ESP/MCU"
                                           entity_category: diagnostic
                                           on_press:
                                             - switch.turn_on: configmode
                                             - delay: 50ms
                                             - lambda: 'static_cast<LD2410 *>(ld2410)->factoryReset();'
                                             - delay: 150ms
                                             - lambda: 'static_cast<LD2410 *>(ld2410)->reboot();'
                                             - delay: 150ms
                                        
                                        script:
                                         - id: get_config
                                           then:
                                             - switch.turn_on: configmode
                                             - delay: 500ms
                                             - lambda: 'static_cast<LD2410 *>(ld2410)->queryParameters();'
                                             - delay: 500ms
                                             - switch.turn_off: configmode
                                             
                                         - id: clear_targets
                                           then:
                                             - lambda: |-
                                                 //id(hasTarget).publish_state(0);
                                                 //id(hasMovingTarget).publish_state(0);
                                                 //id(hasStillTarget).publish_state(0);
                                                 id(movingTargetDistance).publish_state(0);
                                                 id(movingTargetEnergy).publish_state(0);
                                                 id(stillTargetDistance).publish_state(0);
                                                 id(stillTargetEnergy).publish_state(0);
                                                 id(detectDistance).publish_state(0);
                                        

                                        und die def datei:

                                        uart_read_line_sensor_ld2410v3.h

                                        PS: dummerweise kommt es immer wieder zu kurzen fehlmedlungen bei dem presence dp

                                        1 Reply Last reply Reply Quote 1
                                        • liv-in-sky
                                          liv-in-sky last edited by liv-in-sky

                                          muss noch ein paar infos geben:

                                          • man bekommt daten über mqtt, aber man keine settings ausführen - ich weiß nicht, wie man das ins yaml einfügen kann 😞
                                          • um den sensor "grob" zu setzen, geht man über die api mit dem browser
                                          <ip-adresse>:80
                                          

                                          Image 012.png

                                          von hier: https://community.home-assistant.io/t/mmwave-wars-one-sensor-module-to-rule-them-all/453260

                                          Zarello 1 Reply Last reply Reply Quote 0
                                          • Zarello
                                            Zarello @liv-in-sky last edited by

                                            @liv-in-sky Ich habe die Zeit gefunden und etwas ein wenig was hinbekommen:
                                            LD2410-ESP8266-Breadboard.jpg

                                            Ich hatte am Anfang etwas Murks mit RX und TX gebaut, aber jetzt funktioniert's.
                                            In ESP-Home habe ich erstmal den vorhandenen Sensor verwendet:

                                            uart:
                                              id: uart1
                                              tx_pin: TX
                                              rx_pin: RX
                                              baud_rate: 256000
                                              parity: NONE
                                              stop_bits: 1
                                            
                                            ld2410:
                                              timeout: 150s
                                              max_move_distance : 6m
                                              max_still_distance: 6m
                                              g0_move_threshold: 50
                                              g0_still_threshold: 50
                                              g1_move_threshold: 50
                                              g1_still_threshold: 50
                                              g2_move_threshold: 50
                                              g2_still_threshold: 51
                                              g3_move_threshold: 50
                                              g3_still_threshold: 51
                                              g4_move_threshold: 50
                                              g4_still_threshold: 51
                                              g5_move_threshold: 50
                                              g5_still_threshold: 51
                                              g6_move_threshold: 40
                                              g6_still_threshold: 41
                                              g7_move_threshold: 40
                                              g7_still_threshold: 41
                                              g8_move_threshold: 40
                                              g8_still_threshold: 41
                                            
                                            sensor:
                                              - platform: ld2410
                                                moving_distance:
                                                  name : Moving Distance
                                                still_distance:
                                                  name: Still Distance
                                                moving_energy:
                                                  name: Move Energy
                                                still_energy:
                                                  name: Still Energy
                                                detection_distance:
                                                  name: Detection Distance
                                            
                                            binary_sensor:
                                              - platform: ld2410
                                                has_target:
                                                  name: Presence
                                                has_moving_target:
                                                  name: Moving Target
                                                has_still_target:
                                                  name: Still Target
                                            


                                            Das funktioniert soweit erstmal (zum Teil). Was nicht funktioniert sind die Werte für "Still Target" und "Presence". Diese sind bei mir immer ON.
                                            Außerdem ist es natürlich schade, dass man die Schwellwerte so im YAML angibt, dass soll natürlich über die Schnittstelle vom ioBroker eingestellt werden können.

                                            d42820f5-96ee-4c15-bf3f-66fa33e672b2-grafik.png

                                            Als nächstes werde ich mal Dein YAML ausprobieren.

                                            liv-in-sky 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            935
                                            Online

                                            31.7k
                                            Users

                                            79.6k
                                            Topics

                                            1.3m
                                            Posts

                                            17
                                            187
                                            26917
                                            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