Uživatelské nástroje

Nástroje pro tento web

Action disabled: source

wifi_jako_senzor

Wifi jako senzor

Wifi jde využít k měření různých hodnot v závislosti na míře pohlcování signálu materiálem, který dáte mezi vysílač a přijímač. Následující skript v BASHi měří míru zisku přijímače ve stejném principu, jako tomu je u ochrany pohovky před psem. Vykresluje ovšem graf na standardní výstup.

V podstatě jediným měnitelným parametrem je proměnná M_NASTAVENE. Ta stanovuje z kolika naměřených cyklů se spočítá medián, který se poté vykreslí. Čím vyšší je číslo, tím přesnější je výsledná hodnota, ale měření jednoho cyklu trvá déle. Nízká hodnota znamená rychlou odezvu, ale nižší odolnost vůči šumu. Skript je nutné spouštět jako ROOT.

Dá se použít pro měření hladiny vody, pro měření vzdálenosti vysílače od přijímače, pro detekování přítomnost nějaké osoby v místnosti, měření vlhkosti. Využít se prostě dá na všechny materiály, které dobře pohlcují radiový signál o frekvenci wifi.

#!/bin/bash
 
# Nastavení - změňte na vlastní hodnoty
WIFI_ZARIZENI="wlp0s29f7u4"		# Ozančení použitého wifi zařízení.
SSID="wifi-scan"			# SSID wifi AP.
HESLO_WIFI="heslo"			# Heslo na wifi.
M_NASTAVENE=30				# Počet jednotlivých měření při kontrole.
 
 
systemctl stop NetworkManager.service && echo "NM stop OK"	# Vypne Network Managera
sleep 1
 
rfkill unblock all && echo "rfkill OK"				# Zapne wifi
sleep 1
 
ip link set $WIFI_ZARIZENI up && echo "Link UP"			# Zapne wifi
sleep 1
 
iw $WIFI_ZARIZENI connect $SSID keys 0:$HESLO_WIFI && echo "Připojení k wifi OK"	# Připojí k wifi AP
sleep 1
 
clear
 
while true; do							# Hlavní cyklus, kde jeden průběh se rovná jedné hodnotě mediánu.
 
DB_P=""
 
	for c in $(seq $M_NASTAVENE); do			# Cyklus, který se stará o nasbírání jednotlivých měření, ze kterých se později počítá medián.
 
		DATA_POLE=( $(cat /proc/net/wireless | grep "$WIFI_ZARIZENI") )
		DB=${DATA_POLE[3]}
		DB=${DB:1:2}
		DB_P="$DB_P$DB\n"
		sleep 0.05					# Hodnota je nastavena na nejnižší možnou, kdy se ještě síla naměřeného zisku mění.
	done
 
	# Výpočet mediánu z naměřených a sebraných hodnot z předešlého for cyklu.
	# K výpočtu se využívá program awk, do kterého se pošlou hodnoty z proměnné BD_P, oddělené enterem.
	DP="$(echo -e -n $DB_P | sort -n | awk ' { a[g++]=$1; } END { print a[int(g/2)]; }')"
 
	DC=$((DP-30))					# Vykreslení hodnoty mediánu.
		for i in $(seq $DC); do
			echo -n '▬';
		done
		echo " -"$DP
done
 
exit 0

Sledování pohybu v bytě pomocí wifi

Pokud si do skriptu dopíšete ukládání výsledné hodnoty do csv s časem, a pokud vysílač umístíte na jednu stranu bytu a přijímač na druhou, tak můžete zaznamenávat pohyb osob po bytě. Grafický výstup takovéhoto skriptu je vidět v tabulce níže. Výstupní hodnoty, ze kterých se tabulka kreslí, jsou vyjádřením rozdílu s hodnotou předcházející. Zaznamenáváme tedy změnu signálu, ne jeho aktuální úroveň (žlutá barva jsou hodnoty nízké, zelená vysoké).

wifi_jako_senzor.txt · Poslední úprava: 6. 02. 2016 autor: honya