TL; DR
Memantau perubahan level sinyal Wi-Fi dari perangkat IoT yang secara permanen berada di sekitar rumah memungkinkan Anda membuat sensor gerak volumetrik yang sepenuhnya perangkat lunak (perangkat keras khusus hilang) di apartemen, yang cukup akurat menunjukkan keberadaan orang yang bergerak aktif (sebenarnya, tidak tidur).
Latar Belakang
Ada "apartemen spesialis IT" biasa dengan sistem "rumah pintar" berdasarkan Asisten Rumah:
Sakelar lampu buatan sendiri berdasarkan ESP8266 + MSP430
Beberapa sensor untuk suhu / kelembaban, CO2 dan kualitas udara.
Pengontrol kipas kamar mandi / toilet
sepasang Sonoff Mini untuk sisanya.
Komunikasi antar perangkat - melalui Wi-Fi + MQTT. Untuk meminimalkan dampak ESP kecepatan rendah pada jaringan Wi-Fi yang "berfungsi", jaringan Wi-Fi terpisah untuk IoT diluncurkan pada Raspberry Pi 3 terpisah, berdasarkan hostapd standar . Secara total, ada 12 perangkat di jaringan Wi-Fi IoT .
Broker MQTT diluncurkan pada RPi, dan Home Assistant diluncurkan pada "server rumah".
Ide
Wi-Fi . / RSSI, . , wi-fi - .
- , , " " - .
iw dev wlan0 station dump, :
Station 60:01:94:21:f8:4c (on wlan0) inactive time: 8000 ms rx bytes: 11269629 rx packets: 91423 tx bytes: 6159821 tx packets: 70707 tx failed: 0 signal: -53 [-53] dBm tx bitrate: 1.0 MBit/s rx bitrate: 54.0 MBit/s ... connected time: 763375 seconds Station 18:fe:34:98:dc:81 (on wlan0) inactive time: 4000 ms rx bytes: 11388688 rx packets: 92101 tx bytes: 6143200 tx packets: 70205 tx failed: 39 signal: -40 [-40] dBm tx bitrate: 1.0 MBit/s rx bitrate: 18.0 MBit/s ... connected time: 763378 seconds
RSSI ("signal: -40 [-40] dBm") , iw - .
iw RSSI - :
, "" +/- 10 dBm. , "" .
:
(" ")
, " "
, . - , .
4 :
~4:30. , - . , - , " " .
" " - .
500 RSSI iw dev wlan0 station dump.
, Raspberry Pi .
1024 " ":
$RSSI = -65; # iw dev dump
$baseline = ($RSSI + 1023 * $baseline) / 1024;
256 " ".
" " "" "" wi-fi .
:
("IW Signal Distance") . - .
Secara empiris, kita dapat mengasumsikan bahwa IW Signal Distance> 1 (hijau horizontal) sesuai dengan aktivitas orang di dalam ruangan. Tapi batas ini mungkin berbeda untuk konfigurasi ruangan dan jumlah perangkat lainnya.
hasil
Sistem telah beroperasi dalam bentuk ini selama lebih dari dua tahun, dan cukup andal menunjukkan aktivitas di dalam apartemen, dengan pengaruh minimal dari tetangga.
Implementasi algoritme saya tersedia di github (https://github.com/k-korn/misc-scripts/tree/main/iwmon), tetapi cukup spesifik (Perl + Zabbix + visualisasi di Grafana) - dan karenanya solusi siap pakai "plug dan bermain "masih tidak bisa melayani.