TL; DR
Monitorear el cambio en el nivel de la señal de Wi-Fi de los dispositivos IoT ubicados permanentemente alrededor de la casa le permite hacer un sensor de movimiento volumétrico completamente software (falta hardware dedicado) en el apartamento, que muestra con bastante precisión la presencia de personas en movimiento activo (de hecho, no durmiendo).
Antecedentes
Hay un "apartamento de especialista en TI" ordinario con un sistema de "hogar inteligente" basado en Home Assistant:
Interruptores de luz caseros basados en ESP8266 + MSP430
Varios sensores de temperatura / humedad, CO2 y calidad del aire.
Controlador de ventilador de baño / inodoro
un par de Sonoff Mini para el resto.
Comunicación entre dispositivos: a través de Wi-Fi + MQTT. Para minimizar el impacto de los ESP de baja velocidad en la red Wi-Fi "en funcionamiento", se lanza una red Wi-Fi separada para IoT en una Raspberry Pi 3 separada, basada en el hostapd estándar . En total, hay 12 dispositivos en la red Wi-Fi de IoT .
Se lanzó un bróker MQTT en RPi y Home Assistant en el "servidor doméstico".
Idea
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") . - .
Empíricamente, podemos asumir que la Distancia de la señal IW> 1 (horizontal verde) corresponde a la actividad de las personas en la habitación. Pero es probable que este límite sea diferente para otras configuraciones de sala y recuentos de dispositivos.
resultados
El sistema ha estado funcionando de esta forma durante más de dos años y muestra de forma bastante fiable la actividad dentro del apartamento, con una mínima influencia de los vecinos.
Mi implementación del algoritmo está disponible en github (https://github.com/k-korn/misc-scripts/tree/main/iwmon), pero es bastante específico (Perl + Zabbix + visualización en Grafana) y, por lo tanto, una solución lista para usar "plug y jugar "todavía no puede servir.