{"id":10442,"date":"2026-08-15T14:39:50","date_gmt":"2026-08-15T12:39:50","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/narzedzia\/mmwave-presence-zone-planner\/"},"modified":"2026-08-15T14:49:05","modified_gmt":"2026-08-15T12:49:05","slug":"mmwave-presence-zone-planner","status":"publish","type":"page","link":"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/mmwave-presence-zone-planner\/","title":{"rendered":"Planer stref obecno\u015bci mmWave"},"content":{"rendered":"<div class=\"gtm-analyser-container\" style=\"background: var(--bg-panel, #1e1e24); padding: 25px; border-radius: 8px; border: 1px solid var(--border, #2a2a35);\">\n<p style=\"color: var(--text-secondary, #a0a0b0); margin-bottom: 20px;\">Czujnik obecno\u015bci konfiguruje si\u0119 bramkami, a bramka to siedemdziesi\u0105t pi\u0119\u0107 centymetr\u00f3w zasi\u0119gu radaru z w\u0142asn\u0105 czu\u0142o\u015bci\u0105. To, co z tego wychodzi &#8211; jak g\u0142\u0119boko, jak szeroko i ile z tego le\u017cy poza pokojem &#8211; jest geometri\u0105, a warto j\u0105 zna\u0107, zanim czujnik przyklei si\u0119 do \u015bciany.<\/p>\n<div style=\"display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 12px; margin-bottom: 18px;\">\n<div>\n            <label for=\"mw-sensor\" style=\"color: var(--text-secondary, #a0a0b0); display: block; font-size: 0.85rem; margin-bottom: 5px;\">Czujnik<\/label><br \/>\n            <select id=\"mw-sensor\" class=\"form-control\" style=\"width: 100%; padding: 10px; background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); color: var(--text-primary, #e8e8ee); border-radius: 6px; box-sizing: border-box;\"><option value=\"ld2410\" selected>LD2410 \/ LD2410B<\/option><option value=\"ld2450\">LD2450<\/option><\/select>\n        <\/div>\n<div>\n            <label for=\"mw-bewegung\" style=\"color: var(--text-secondary, #a0a0b0); display: block; font-size: 0.85rem; margin-bottom: 5px;\">Ostatnia bramka dla ruchu<\/label><br \/>\n            <select id=\"mw-bewegung\" class=\"form-control\" style=\"width: 100%; padding: 10px; background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); color: var(--text-primary, #e8e8ee); border-radius: 6px; box-sizing: border-box;\"><\/select>\n        <\/div>\n<div>\n            <label for=\"mw-ruhe\" style=\"color: var(--text-secondary, #a0a0b0); display: block; font-size: 0.85rem; margin-bottom: 5px;\">Ostatnia bramka dla bezruchu<\/label><br \/>\n            <select id=\"mw-ruhe\" class=\"form-control\" style=\"width: 100%; padding: 10px; background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); color: var(--text-primary, #e8e8ee); border-radius: 6px; box-sizing: border-box;\"><\/select>\n        <\/div>\n<div>\n            <label for=\"mw-emp-nah\" style=\"color: var(--text-secondary, #a0a0b0); display: block; font-size: 0.85rem; margin-bottom: 5px;\">Czu\u0142o\u015b\u0107, bramki 0\u20133<\/label><br \/>\n            <input id=\"mw-emp-nah\" type=\"number\" min=\"0\" max=\"100\" step=\"5\" value=\"40\" class=\"form-control\" style=\"width: 100%; padding: 10px; background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); color: var(--text-primary, #e8e8ee); border-radius: 6px; box-sizing: border-box;\">\n        <\/div>\n<div>\n            <label for=\"mw-emp-fern\" style=\"color: var(--text-secondary, #a0a0b0); display: block; font-size: 0.85rem; margin-bottom: 5px;\">Czu\u0142o\u015b\u0107, bramki 4\u20138<\/label><br \/>\n            <input id=\"mw-emp-fern\" type=\"number\" min=\"0\" max=\"100\" step=\"5\" value=\"30\" class=\"form-control\" style=\"width: 100%; padding: 10px; background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); color: var(--text-primary, #e8e8ee); border-radius: 6px; box-sizing: border-box;\">\n        <\/div>\n<div>\n            <label for=\"mw-nachlauf\" style=\"color: var(--text-secondary, #a0a0b0); display: block; font-size: 0.85rem; margin-bottom: 5px;\">Czas podtrzymania (s)<\/label><br \/>\n            <input id=\"mw-nachlauf\" type=\"number\" min=\"0\" max=\"600\" step=\"1\" value=\"30\" class=\"form-control\" style=\"width: 100%; padding: 10px; background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); color: var(--text-primary, #e8e8ee); border-radius: 6px; box-sizing: border-box;\">\n        <\/div>\n<div>\n            <label for=\"mw-raumtiefe\" style=\"color: var(--text-secondary, #a0a0b0); display: block; font-size: 0.85rem; margin-bottom: 5px;\">G\u0142\u0119boko\u015b\u0107 pokoju (m)<\/label><br \/>\n            <input id=\"mw-raumtiefe\" type=\"number\" min=\"0.5\" max=\"20\" step=\"0.1\" value=\"4.5\" class=\"form-control\" style=\"width: 100%; padding: 10px; background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); color: var(--text-primary, #e8e8ee); border-radius: 6px; box-sizing: border-box;\">\n        <\/div>\n<div>\n            <label for=\"mw-hoehe\" style=\"color: var(--text-secondary, #a0a0b0); display: block; font-size: 0.85rem; margin-bottom: 5px;\">Wysoko\u015b\u0107 monta\u017cu (m)<\/label><br \/>\n            <input id=\"mw-hoehe\" type=\"number\" min=\"0.5\" max=\"5\" step=\"0.1\" value=\"1.4\" class=\"form-control\" style=\"width: 100%; padding: 10px; background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); color: var(--text-primary, #e8e8ee); border-radius: 6px; box-sizing: border-box;\">\n        <\/div>\n<\/p><\/div>\n<p>    <button id=\"mw-btn\" class=\"button\" style=\"background: var(--accent, #7ee787); color: #0b1114; border: none; padding: 12px 24px; border-radius: 6px; font-weight: 700; cursor: pointer;\">Zaplanuj stref\u0119<\/button><\/p>\n<div id=\"mw-ausgabe\" style=\"margin-top: 22px;\"><\/div>\n<\/div>\n<p><script>\n(function () {\n    'use strict';<\/p>\n<p>    const T = {\"einleitung\":\"Czujnik obecno\u015bci konfiguruje si\u0119 bramkami, a bramka to siedemdziesi\u0105t pi\u0119\u0107 centymetr\u00f3w zasi\u0119gu radaru z w\u0142asn\u0105 czu\u0142o\u015bci\u0105. To, co z tego wychodzi - jak g\u0142\u0119boko, jak szeroko i ile z tego le\u017cy poza pokojem - jest geometri\u0105, a warto j\u0105 zna\u0107, zanim czujnik przyklei si\u0119 do \u015bciany.\",\"label_sensor\":\"Czujnik\",\"label_bewegung\":\"Ostatnia bramka dla ruchu\",\"label_ruhe\":\"Ostatnia bramka dla bezruchu\",\"label_emp_nah\":\"Czu\u0142o\u015b\u0107, bramki 0\u20133\",\"label_emp_fern\":\"Czu\u0142o\u015b\u0107, bramki 4\u20138\",\"label_nachlauf\":\"Czas podtrzymania (s)\",\"label_raumtiefe\":\"G\u0142\u0119boko\u015b\u0107 pokoju (m)\",\"label_hoehe\":\"Wysoko\u015b\u0107 monta\u017cu (m)\",\"knopf\":\"Zaplanuj stref\u0119\",\"tor\":\"bramka\",\"h_reichweite\":\"Co jest obj\u0119te\",\"zeile_bewegung\":\"Zasi\u0119g dla ruchu\",\"zeile_ruhe\":\"Zasi\u0119g dla bezruchu\",\"zeile_breite\":\"Szeroko\u015b\u0107 na zewn\u0119trznym brzegu\",\"zeile_flaeche\":\"Obj\u0119ta powierzchnia\",\"h_tore\":\"Bramka po bramce\",\"spalte_tor\":\"Bramka\",\"spalte_bereich\":\"Zakres\",\"spalte_bewegung\":\"Ruch\",\"spalte_ruhe\":\"Bezruch\",\"spalte_empfindlichkeit\":\"Czu\u0142o\u015b\u0107\",\"h_hinweise\":\"Co oznacza ta konfiguracja\",\"hinweis_ruhe_untergrenze\":\"LD2410 nie wykrywa bezruchu w dw\u00f3ch pierwszych bramkach - bli\u017cej ni\u017c 1,5 m wida\u0107 tylko to, co si\u0119 porusza. Warto\u015b\u0107 podniesiono do pierwszej istniej\u0105cej bramki.\",\"hinweis_durch_die_wand\":\"Ustawiony zasi\u0119g wychodzi poza tyln\u0105 \u015bcian\u0119. P\u0142yta gipsowa i drewno s\u0105 przy 24 GHz przezroczyste, czujnik zamelduje wi\u0119c korytarz, s\u0105siad\u00f3w albo przeje\u017cd\u017caj\u0105cy samoch\u00f3d jako obecno\u015b\u0107.\",\"hinweis_raum_nicht_gedeckt\":\"Ustawiony zasi\u0119g ko\u0144czy si\u0119 wyra\u017anie przed tyln\u0105 \u015bcian\u0105. Kto usi\u0105dzie spokojnie z ty\u0142u pokoju, le\u017cy poza stref\u0105.\",\"hinweis_ueber_nennweite\":\"To le\u017cy poza zasi\u0119giem gwarantowanym w karcie katalogowej. Zwykle co\u015b si\u0119 tam jeszcze wykrywa, ale ju\u017c nie do\u015b\u0107 niezawodnie, by prze\u0142\u0105czy\u0107 \u015bwiat\u0142o.\",\"hinweis_fern_empfindlich\":\"Wysoka czu\u0142o\u015b\u0107 na dalekich bramkach to najcz\u0119stsza przyczyna \u015bwiat\u0142a, kt\u00f3re nigdy nie ga\u015bnie. Wentylator sufitowy, firanka w przeci\u0105gu i deszcz na szybie odzywaj\u0105 si\u0119 na tych odleg\u0142o\u015bciach.\",\"hinweis_zu_unempfindlich\":\"Czu\u0142o\u015b\u0107 poni\u017cej pi\u0119tnastu praktycznie wy\u0142\u0105cza ten zakres. Kto czyta bez ruchu, nie zostanie znaleziony.\",\"hinweis_nachlauf_kurz\":\"Czas podtrzymania poni\u017cej pi\u0119ciu sekund powoduje miganie \u015bwiat\u0142a, gdy tylko radar na chwil\u0119 zgubi nieruchom\u0105 osob\u0119.\",\"hinweis_nachlauf_lang\":\"Czas podtrzymania powy\u017cej pi\u0119ciu minut zamienia wykrywanie obecno\u015bci w wy\u0142\u0105cznik czasowy.\",\"hinweis_hoch_montiert\":\"Powy\u017cej dw\u00f3ch metr\u00f3w czujnik patrzy na czubek g\u0142owy zamiast w poprzek klatki piersiowej - najgorszy przypadek dla wykrycia spokojnego oddechu.\",\"hinweis_tief_montiert\":\"Poni\u017cej osiemdziesi\u0119ciu centymetr\u00f3w czujnik widzi g\u0142\u00f3wnie nogi i meble, a kto siedzi bez ruchu, znika za kanap\u0105.\",\"hinweis_ld2450_zonen\":\"LD2450 \u015bledzi do trzech cel\u00f3w ze wsp\u00f3\u0142rz\u0119dnymi i potrafi odfiltrowa\u0107 prostok\u0105tne obszary programowo. Model bramek poni\u017cej opisuje jego zasi\u0119g; prostok\u0105ty konfiguruje si\u0119 osobno.\",\"dezimal\":\",\"};<\/p>\n<p>    \/\/ --- Sensordaten ---------------------------------------------------------\n    \/\/ torlaenge: Laenge eines Entfernungstors in Metern.\n    \/\/ tore: Anzahl der Tore, gezaehlt ab null.\n    \/\/ ruheAb: unterhalb dieses Tors gibt es keine Ruheerkennung.\n    \/\/ nennweite: laut Datenblatt zugesicherte Reichweite in Metern.\n    \/\/ winkel: waagerechter Erfassungswinkel in Grad.\n    const SENSOREN = {\n        ld2410: { torlaenge: 0.75, tore: 9, ruheAb: 2, nennweite: 6.0, winkel: 120 },\n        ld2450: { torlaenge: 0.75, tore: 9, ruheAb: 0, nennweite: 6.0, winkel: 120 }\n    };<\/p>\n<p>    function zahl(wert, ersatz) {\n        const n = Number(wert);\n        return isFinite(n) ? n : ersatz;\n    }<\/p>\n<p>    \/** Aeussere Entfernung eines Tors in Metern. *\/\n    function torweite(sensor, tor) {\n        const s = SENSOREN[sensor] || SENSOREN.ld2410;\n        const t = Math.max(0, Math.min(s.tore - 1, Math.round(zahl(tor, 0))));\n        return (t + 1) * s.torlaenge;\n    }<\/p>\n<p>    \/** Breite des erfassten Streifens in einer Entfernung. *\/\n    function breite(sensor, entfernung) {\n        const s = SENSOREN[sensor] || SENSOREN.ld2410;\n        const halb = (s.winkel \/ 2) * Math.PI \/ 180;\n        return 2 * Math.max(0, zahl(entfernung, 0)) * Math.tan(halb);\n    }<\/p>\n<p>    \/** Grundflaeche des erfassten Kreisausschnitts. *\/\n    function flaeche(sensor, entfernung) {\n        const s = SENSOREN[sensor] || SENSOREN.ld2410;\n        const bogen = s.winkel * Math.PI \/ 180;\n        const r = Math.max(0, zahl(entfernung, 0));\n        return 0.5 * bogen * r * r;\n    }<\/p>\n<p>    function planen(e) {\n        const ein = e || {};\n        const name = SENSOREN[ein.sensor] ? ein.sensor : 'ld2410';\n        const s = SENSOREN[name];<\/p>\n<p>        const torBewegung = Math.max(0, Math.min(s.tore - 1, Math.round(zahl(ein.torBewegung, s.tore - 1))));\n        const torRuheRoh  = Math.max(0, Math.min(s.tore - 1, Math.round(zahl(ein.torRuhe, s.tore - 1))));\n        const torRuhe     = Math.max(s.ruheAb, torRuheRoh);\n        const empNah      = Math.max(0, Math.min(100, zahl(ein.empNah, 40)));\n        const empFern     = Math.max(0, Math.min(100, zahl(ein.empFern, 30)));\n        const nachlauf    = Math.max(0, zahl(ein.nachlauf, 30));\n        const raumtiefe   = Math.max(0, zahl(ein.raumtiefe, 0));\n        const hoehe       = Math.max(0, zahl(ein.hoehe, 0));<\/p>\n<p>        const weiteBewegung = torweite(name, torBewegung);\n        const weiteRuhe     = torweite(name, torRuhe);\n        const maxWeite      = Math.max(weiteBewegung, weiteRuhe);<\/p>\n<p>        const tore = [];\n        for (let t = 0; t < s.tore; t++) {\n            const bis = (t + 1) * s.torlaenge;\n            tore.push({\n                tor: t,\n                von: t * s.torlaenge,\n                bis: bis,\n                bewegung: t <= torBewegung,\n                ruhe: t >= s.ruheAb && t <= torRuhe,\n                empfindlichkeit: t <= 3 ? empNah : empFern,\n                ueberRaum: raumtiefe > 0 && bis > raumtiefe\n            });\n        }<\/p>\n<p>        const hinweise = [];\n        if (s.ruheAb > 0 && torRuheRoh < s.ruheAb) { hinweise.push('ruhe_untergrenze'); }\n        if (raumtiefe > 0 && maxWeite > raumtiefe + 0.4) { hinweise.push('durch_die_wand'); }\n        if (raumtiefe > 0 && maxWeite < raumtiefe - 0.4) { hinweise.push('raum_nicht_gedeckt'); }\n        if (maxWeite > s.nennweite) { hinweise.push('ueber_nennweite'); }\n        if (empFern >= 60) { hinweise.push('fern_empfindlich'); }\n        if (empNah <= 15 || empFern <= 15) { hinweise.push('zu_unempfindlich'); }\n        if (nachlauf < 5) { hinweise.push('nachlauf_kurz'); }\n        if (nachlauf > 300) { hinweise.push('nachlauf_lang'); }\n        if (hoehe > 2.2) { hinweise.push('hoch_montiert'); }\n        if (hoehe > 0 && hoehe < 0.8) { hinweise.push('tief_montiert'); }\n        if (name === 'ld2450') { hinweise.push('ld2450_zonen'); }\n\n        return {\n            sensor: name,\n            torBewegung: torBewegung,\n            torRuhe: torRuhe,\n            weiteBewegung: weiteBewegung,\n            weiteRuhe: weiteRuhe,\n            breiteAmRand: breite(name, maxWeite),\n            flaeche: flaeche(name, maxWeite),\n            tore: tore,\n            hinweise: hinweise\n        };\n    }\n\n    \/\/ --- Pruefpunkt ----------------------------------------------------------\n    window.LW_TEST = window.LW_TEST || {};\n    window.LW_TEST.MW = { planen: planen, torweite: torweite, breite: breite, flaeche: flaeche, sensoren: SENSOREN };\n\n    \/\/ --- Oberflaeche ---------------------------------------------------------\n\n    const btn = document.getElementById('mw-btn');\n    const out = document.getElementById('mw-ausgabe');\n    const sensorWahl = document.getElementById('mw-sensor');\n    const bewegungWahl = document.getElementById('mw-bewegung');\n    const ruheWahl = document.getElementById('mw-ruhe');\n    if (!btn || !out || !sensorWahl || !bewegungWahl || !ruheWahl) { return; }\n\n    function el(tag, stil, text) {\n        const e = document.createElement(tag);\n        if (stil) { e.setAttribute('style', stil); }\n        if (text !== undefined) { e.textContent = text; }\n        return e;\n    }\n    function wert(id) { const e = document.getElementById(id); return e ? e.value : ''; }\n    function komma(n, stellen) {\n        return Number(n).toFixed(stellen === undefined ? 2 : stellen).replace('.', T.dezimal);\n    }\n\n    function toreFuellen() {\n        const s = SENSOREN[sensorWahl.value] || SENSOREN.ld2410;\n        [bewegungWahl, ruheWahl].forEach(function (feld) {\n            const vorher = feld.value;\n            feld.innerHTML = '';\n            for (let t = 0; t < s.tore; t++) {\n                const o = document.createElement('option');\n                o.value = String(t);\n                o.textContent = T.tor + ' ' + t + ' \u2013 ' + komma((t + 1) * s.torlaenge) + ' m';\n                feld.appendChild(o);\n            }\n            feld.value = vorher !== '' &#038;&#038; Number(vorher) < s.tore ? vorher : String(s.tore - 2);\n        });\n    }\n    toreFuellen();\n    sensorWahl.addEventListener('change', toreFuellen);\n\n    const UEBERSCHRIFT = 'font-family: \\'Nunito Sans\\', sans-serif; font-weight: 700; color: var(--text-primary, #e8e8ee); font-size: 0.92rem; margin: 18px 0 8px;';\n    const ZELLE = 'padding: 4px 14px 4px 0; color: var(--text-secondary, #a0a0b0); font-size: 0.86rem;';\n    const ZELLE_WERT = 'padding: 4px 14px 4px 0; color: var(--text-primary, #e8e8ee); font-size: 0.86rem; font-family: monospace;';\n\n    btn.addEventListener('click', function () {\n        const erg = planen({\n            sensor: sensorWahl.value,\n            torBewegung: bewegungWahl.value,\n            torRuhe: ruheWahl.value,\n            empNah: wert('mw-emp-nah'),\n            empFern: wert('mw-emp-fern'),\n            nachlauf: wert('mw-nachlauf'),\n            raumtiefe: wert('mw-raumtiefe'),\n            hoehe: wert('mw-hoehe')\n        });\n\n        out.innerHTML = '';\n        out.appendChild(el('div', UEBERSCHRIFT, T.h_reichweite));\n        const g = el('div', 'display: grid; grid-template-columns: auto auto; gap: 0 18px; align-items: baseline;');\n        function zeile(name, w) { g.appendChild(el('div', ZELLE, name)); g.appendChild(el('div', ZELLE_WERT, w)); }\n        zeile(T.zeile_bewegung, komma(erg.weiteBewegung) + ' m');\n        zeile(T.zeile_ruhe, komma(erg.weiteRuhe) + ' m');\n        zeile(T.zeile_breite, komma(erg.breiteAmRand) + ' m');\n        zeile(T.zeile_flaeche, komma(erg.flaeche, 1) + ' m\u00b2');\n        out.appendChild(g);\n\n        out.appendChild(el('div', UEBERSCHRIFT, T.h_tore));\n        const tab = el('div', 'display: grid; grid-template-columns: auto auto auto auto auto; gap: 0 16px; align-items: baseline;');\n        [T.spalte_tor, T.spalte_bereich, T.spalte_bewegung, T.spalte_ruhe, T.spalte_empfindlichkeit].forEach(function (k) {\n            tab.appendChild(el('div', ZELLE + ' font-weight: 700; color: var(--text-primary, #e8e8ee);', k));\n        });\n        erg.tore.forEach(function (t) {\n            const rand = t.ueberRaum ? ' color: #ffa94d;' : '';\n            tab.appendChild(el('div', ZELLE_WERT + rand, String(t.tor)));\n            tab.appendChild(el('div', ZELLE_WERT + rand, komma(t.von) + '\u2013' + komma(t.bis) + ' m'));\n            tab.appendChild(el('div', ZELLE_WERT + (t.bewegung ? ' color: var(--accent, #7ee787);' : ' color: var(--text-secondary, #a0a0b0);'), t.bewegung ? '\u2713' : '\u00b7'));\n            tab.appendChild(el('div', ZELLE_WERT + (t.ruhe ? ' color: var(--accent, #7ee787);' : ' color: var(--text-secondary, #a0a0b0);'), t.ruhe ? '\u2713' : '\u00b7'));\n            tab.appendChild(el('div', ZELLE_WERT, String(t.empfindlichkeit)));\n        });\n        out.appendChild(tab);\n\n        if (erg.hinweise.length) {\n            out.appendChild(el('div', UEBERSCHRIFT, T.h_hinweise));\n            const liste = el('ul', 'margin: 0 0 0 18px; padding: 0; color: var(--text-secondary, #a0a0b0); font-size: 0.87rem; line-height: 1.65;');\n            erg.hinweise.forEach(function (h) { liste.appendChild(el('li', '', T['hinweis_' + h])); });\n            out.appendChild(liste);\n        }\n    });\n})();\n<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Zamienia bramki odleg\u0142o\u015bci i czu\u0142o\u015b\u0107 ka\u017cdej z nich w obszar, kt\u00f3ry LD2410 albo LD2450 naprawd\u0119 obserwuje &#8211; wraz z miejscem, w kt\u00f3rym si\u0119ga przez \u015bcian\u0119 do s\u0105siedniego pokoju.<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":9284,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"template-tool-base.php","meta":{"footnotes":""},"tags":[92193,92202],"class_list":["post-10442","page","type-page","status-publish","hentry","tag-home-assistant-pl","tag-smart-home-de-pl"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Planer stref obecno\u015bci mmWave - Lukas Wojcik - Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/mmwave-presence-zone-planner\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Planer stref obecno\u015bci mmWave - Lukas Wojcik - Blog\" \/>\n<meta property=\"og:description\" content=\"Zamienia bramki odleg\u0142o\u015bci i czu\u0142o\u015b\u0107 ka\u017cdej z nich w obszar, kt\u00f3ry LD2410 albo LD2450 naprawd\u0119 obserwuje - wraz z miejscem, w kt\u00f3rym si\u0119ga przez \u015bcian\u0119 do s\u0105siedniego pokoju.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/mmwave-presence-zone-planner\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:modified_time\" content=\"2026-08-15T12:49:05+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/og-default.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/narzedzia\\\/mmwave-presence-zone-planner\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/narzedzia\\\/mmwave-presence-zone-planner\\\/\",\"name\":\"Planer stref obecno\u015bci mmWave - Lukas Wojcik - Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"datePublished\":\"2026-08-15T12:39:50+00:00\",\"dateModified\":\"2026-08-15T12:49:05+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/narzedzia\\\/mmwave-presence-zone-planner\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/narzedzia\\\/mmwave-presence-zone-planner\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/narzedzia\\\/mmwave-presence-zone-planner\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Toolbox\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/toolbox-3\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Planer stref obecno\u015bci mmWave\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\",\"name\":\"Lukas Wojcik - Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\",\"name\":\"luky\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"width\":424,\"height\":636,\"caption\":\"luky\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\"},\"sameAs\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Planer stref obecno\u015bci mmWave - Lukas Wojcik - Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/mmwave-presence-zone-planner\/","og_locale":"en_US","og_type":"article","og_title":"Planer stref obecno\u015bci mmWave - Lukas Wojcik - Blog","og_description":"Zamienia bramki odleg\u0142o\u015bci i czu\u0142o\u015b\u0107 ka\u017cdej z nich w obszar, kt\u00f3ry LD2410 albo LD2450 naprawd\u0119 obserwuje - wraz z miejscem, w kt\u00f3rym si\u0119ga przez \u015bcian\u0119 do s\u0105siedniego pokoju.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/mmwave-presence-zone-planner\/","og_site_name":"Lukas Wojcik - Blog","article_modified_time":"2026-08-15T12:49:05+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/og-default.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/mmwave-presence-zone-planner\/","url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/mmwave-presence-zone-planner\/","name":"Planer stref obecno\u015bci mmWave - Lukas Wojcik - Blog","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"datePublished":"2026-08-15T12:39:50+00:00","dateModified":"2026-08-15T12:49:05+00:00","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/mmwave-presence-zone-planner\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/mmwave-presence-zone-planner\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/mmwave-presence-zone-planner\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Toolbox","item":"https:\/\/www.lukaswojcik.com\/blog\/toolbox-3\/"},{"@type":"ListItem","position":3,"name":"Planer stref obecno\u015bci mmWave"}]},{"@type":"WebSite","@id":"https:\/\/www.lukaswojcik.com\/blog\/#website","url":"https:\/\/www.lukaswojcik.com\/blog\/","name":"Lukas Wojcik - Blog","description":"","publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.lukaswojcik.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9","name":"luky","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","width":424,"height":636,"caption":"luky"},"logo":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg"},"sameAs":["https:\/\/www.lukaswojcik.com\/blog"]}]}},"_links":{"self":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages\/10442","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/comments?post=10442"}],"version-history":[{"count":1,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages\/10442\/revisions"}],"predecessor-version":[{"id":10460,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages\/10442\/revisions\/10460"}],"up":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages\/9284"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=10442"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=10442"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}