Sensor kehadiran lembut di Linux AP + ESP8266

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.












All Articles