Man вики
Advertisement
#!/bin/bash
# Параметр счетчика, указанный на счетчике (импульсов на киловат*час)
A=12800
# Номер порта gpio (задается первым аргументом)
[ $1 -ge 0 ] || exit 1
gpio=$1

# Имитируемая мощность нагрузки (в Ваттах) задаётся вторым аргументом,
# если не задано то 500 Ватт
P=$2
[ $2 -ge 0 ] 2>/dev/null || P=500
# Число импульсов задаётся 3-м аргументом, если не задано, то 1000
impX=$3
[ $3 -ge 0 ] 2>/dev/null || impX=1000

# Расчет времени интервала
t=`echo "3600000/$A/$P"|bc -l`
echo "Имметируем нагрузку $P Ватт. Отправляем на GPIO$gpio $impX импульсов длинной $t сек"
# Инициализация gpio
echo $gpio > /sys/class/gpio/export 2 > /dev/null
echo "out" > /sys/class/gpio/gpio$gpio/direction

step=1
while [ "$step" -le $impX ]
do
echo "1" > /sys/class/gpio/gpio$gpio/value && sleep $t
echo "0" > /sys/class/gpio/gpio$gpio/value && sleep $t
step=$(( $step + 1 ))

done
  1. !/bin/bash
  2. Параметр счетчика, указанный на счетчике (импульсов на киловат*час)

A=12800

  1. Номер порта gpio (задается первым аргументом)

[ $1 -ge 0 ] || exit 1 gpio=$1

  1. Инициализация gpio

echo $gpio > /sys/class/gpio/export 2 > /dev/null echo "in" > /sys/class/gpio/gpio$gpio/direction


echo "" > /var/log/pool.log

while : do a=0 step=1 while [ $step -le $2 ] do val=`cat /sys/class/gpio/gpio$gpio/value` if [ $a != $val ] then a=$val timestamp=`date +"%s.%N"` [ "$step" != "1" ] || timestamp0=$timestamp echo "$timestamp;$val" step=$(( $step + 1 )) fi done

  1. Считаем среднюю мощность за период

echo "3600000/(($timestamp-$timestamp0)/($step-2)*$A)"|bc -l echo done

Advertisement