Bewegungsmelder Frage

  • Danke für die Antwort:

    Ich habe alles so gemacht wie beschrieben, nur habe ich ein Master/Slave System und das Srcipt erstellt die Datei auf dem Master.

    Nun habe ich die Datei auf den Slave kopiert, aber auch kein Erfolg

    Dann habe ich in der Zigbee Instanz den kompletten Pfad eingegeben zu der including.js und siehe da....

    scheint so als ob ich jetzt weiter machen kann...

    Danke für die Hilfe.

  • Moin Moin...

    Ich habe meinen Sensor im Raum auf 12 Uhr und ca. 240cm Höhe, im 45° Winkel angebracht und habe Probleme das der "rote Punkt" sehr viel springt und je näher ich dem Senor komme um so weiter links, im Treppen Bereich (ist auch eine Treppe) werde ich angezeigt. Auf dem 2. Bild stehe ich immer noch mittig im Flur.

    Wo soll ich den Sensor denn am besten anbringen?



    // ---- Vorgabewerte für Kalibrierung ----
    const calibrationDefaults = {
    raumX: 240, // ① Raum breite z.B. 200 cm
    raumY: 450, // ① Raum länge z.B. 400 cm
    sensorX: 120, // ① Sensor Position von links in cm z.B. 100 cm
    sensorY: 440, // ① Sensor Position von unten in cm z.B. 400 cm
    sensorZ: 180     // ① z.B. 180° wenn er oben wäre und nach unten überwachen soll
    };

    const debounceMs = 3000; // ① Verzögerung bis Zone false wird (ms)
    const EMPTY_THRESHOLD_M = 0.01; // ② Max. Abstand (1 cm) für leere Slots
    const zones = [
    { name:'Flur', color:'orange', x1:85, x2:235, y1:10, y2:440 },
    { name:'Treppe', color:'cyan', x1:5, x2:75, y1:10, y2:440 },
       // { name:'vorne rechts', color:'green', x1:131, x2:188, y1:10, y2:210 },
    ];

  • Moin Moin …

    Ich habe meinen Sensor auf 12 Uhr, ca. 240 cm Höhe und 45 ° Neigung angebracht. Der rote Punkt springt stark; je näher ich komme, desto weiter links (Treppe) werde ich angezeigt.

    Das Problem lässt sich super-easy mit ChatGPT analysieren.

    Ohne das wird mehr als schwer.

    Man muss verstehen wie ein Radarsensor funktioniert.

    Was es bedeutet, mitRadarwellen zu messen.

    Wo die hin gehhen. Wie die hingehen.

    Was passiert wenn die auf was treffen u.s.w.


    ChatGPT gefragt:

    "ich hab ein LD2450 mit einem esp32c6. Dort ist diese Script in iobroker als javasript integriert

    (dann den code posten)

    Dann habe ich deine Frage reinkopiert.

    Das ist die Antwort:



    CHATGPT:

    Warum der Punkt springt & „nach links zieht“

    1. Pitch-Fehler
      Die LD2450 rechnet mit waagerechter Antenne. Bei 240 cm Höhe und 45 ° Neigung kippst du das ganze Koordinatensystem.
      Effekt: Je näher die Person steht, desto stärker driftet der Punkt seitlich.
    2. Übersteiler Winkel
      • Zentralstrahl trifft den Boden schon nach 2,4 m (240 cm / tan 45°).
      • Nähere Ziele nur noch im Randbereich ⇒ schwächeres Signal ⇒ Jitter.
    3. Treppen-Reflexionen
      Metallgeländer und Stufen erzeugen Mehrwege-Echos; der Tracker springt zwischen Echo-Peaks.

    Besser aufhängen – zwei erprobte Varianten

    Variante Höhe Neigung (↓) Warum das hilft
    A Decken-Sweet-Spot 220 – 240 cm 25 – 30 ° Zentralstrahl trifft Boden erst ≈ 4 m entfernt → kaum Totzone.
    B Brust-/Kopfhöhe 130 – 150 cm 15 – 20 ° Frontale Sicht → beste Mikro­bewegungs-Erkennung (stöß­anfälliger).
    Zitat
    Praxis-Regel
    Tilt ≈ arctan(H / YMitte)
    Bei H = 240 cm und YMitte ≈ 225 cm ergibt das ≈ 27 °.

    Montage-Checkliste

    1. Exakte Ausrichtung – Sensoroberkante parallel zur Flurwand, Pitch zuletzt einstellen.
    2. Wand statt Decke (falls Treppe stört) – ≥ 20 cm Abstand zu den Stufen.
    3. Reflexionen dämpfen – 20 × 40 cm Sperrholzblende hinter/unter dem Modul.
    4. Kabelzug entkoppeln – Gummi­puffer oder 3-D-Halter gegen Vibrationen.

    Schritt-für-Schritt-Vorgehen

    1. Neigung von 45 ° auf ≈ 28 ° stellen, Flur ablaufen → Punkt sollte mittig bleiben.
    2. Driftet er noch? → Yaw feinjustieren (siehe Code unten) oder Sensorplatte drehen.
    3. Jitter?
      • Geländer testweise mit Pappe abdecken → wenn ruhiger, Blende montieren.
      • Filter (Moving Avg / Kalman) erhöhen.
    4. Grenzfälle prüfen (Treppenantritt, < 1 m vorm Sensor). Totzone < 1 m? → ok; sonst Tilt + 3 °.

    Kurzantwort:
    LD2450 am besten auf 230 cm Höhe mit ~28 ° Tilt montieren (oder 140 cm / 18 ° für Mikro­bewegungen). Ausrichtung exakt einstellen und kleines Moving-Average-Filter aktivieren – schon ist das Hakeln weg.


    1 · Fein-Yaw als separates Kalibrations-Feld

    Statt die 3,5 ° direkt im Code zu verdrahten, leg sie als State an, damit du sie in VIS anpassen kannst:


    Code
    1. // --- NEU: in „Kalibrierung“ aufnehmen -------------
    2. ensure(PREFIX + 'calibration.yawFine', 0,
    3. {type:'number', read:true, write:true});

    Dann im update() die Zeile

    Code
    1. const sz = rad(val(PREFIX + 'calibration.sensorZ') || 0);

    ersetzen durch

    Code
    1. const sz = rad(
    2. (val(PREFIX + 'calibration.sensorZ') || 0) +
    3. (val(PREFIX + 'calibration.yawFine') || 0) // Fein-Offset
    4. );

    Jetzt kannst du den Winkel bequem in 0,1-°-Schritten nachtrimmen, bis der Punkt exakt mittig läuft.


    2 · Sanftes Low-Pass-Filtering pro Slot

    Der Rohwert-Jitter verschwindet, wenn du pro Slot eine exponentielle Glättung (EMA) machst.

    Direkt oberhalb von function update(){ … } ein globales Objekt anlegen:


    Code
    1. // --- NEU: Filterpuffer -----------------------------------------------
    2. const filters = {
    3. 1:{x:null,y:null}, 2:{x:null,y:null}, 3:{x:null,y:null}
    4. };
    5. const alpha = 0.30; // 0…1 (höher = schneller, niedriger = ruhiger)

    Und im Slot-Loop nach const wY = sy + relY; einsetzen:

    Code
    1. / Glättung -------------------------------------------------------------
    2. const id = p.x.match(/slot([1-3])_x$/)[1]; // '1' | '2' | '3'
    3. if(filters[id].x === null){ // erster Wert -> direkt
    4. filters[id].x = wX; filters[id].y = wY;
    5. }else{
    6. filters[id].x = alpha * wX + (1-alpha) * filters[id].x;
    7. filters[id].y = alpha * wY + (1-alpha) * filters[id].y;
    8. }
    9. const wXf = filters[id].x;
    10. const wYf = filters[id].y;

    Danach alle Verwendungen von wX/wY im Slot-Block auf wXf/wYf umstellen (Zonen-Check, Begrenzen & VIS-Position).


    3 · Kleinst-Schwankungen ganz ausblenden

    Gerade wenn du nah am Sensor stehst, schwanken X/Y manchmal um ±1 cm, obwohl du still­stehst.

    Den Schwellenwert kannst du im bestehenden Parameter einfach etwas höher setzen:


    Code
    1. const EMPTY_THRESHOLD_M = 0.03; // 3 cm statt 1 cm

    Damit werden „Pseudo-Leerwerte“ ignoriert und der Punkt bleibt sichtbar, statt ständig zu verschwinden.


    Ergebnis

    • Yaw-Fehler korrigierbar, ohne neu zu flashen.

    • Sprungfreier Punkt dank EMA-Filter (30 % frisch, 70 % alt).

    • Geringe Flackerei entfällt, weil Mini-Schwankungen <3 cm übersehen werden.

    Zitat
    Tipp: Wenn du noch mehr Ruhe möchtest, reduziere alpha z. B. auf 0,15.

    Bei sehr schnellen Bewegungen (z. B. Rennen) dagegen auf 0,5 erhöhen.

    Einfach die drei Abschnitte einbauen, Skript speichern, kurz neu laden – das war’s. Viel Erfolg beim Testen!

    Ganzes script:


    Einbau-Checkliste

    1. Im Skript-Editor des ioBroker einfügen und speichern.

    2. 1 · Schnellvariante – Wert im Admin setzen
      1. Objekte-Tab öffnen.
      2. Zu javascript.0.arbeitszimmer.calibration.yawFine navigieren

        (wird vom Skript automatisch angelegt).
      3. Doppelklick auf den Wert → Gradzahl eintragen (z. B. 3.5) → Speichern.
      Das Skript reagiert sofort, dein Punkt verschiebt sich live.

      Ideal zum einmaligen Nachjustieren.
    3. Optional alpha anpassen, falls du noch mehr (oder weniger) Glättung möchtest.

    Damit bleiben Firmware & Datenpunkte unverändert – nur die Anzeige wird ruhiger und der Drift lässt sich live nachregeln. Viel Erfolg!