#!/bin/sh # This is the script calling the metering program for various electricity # metering units. The return value is saved into a log file for each metering # unit, together with a date/time stamp. This script gets regularly called # as a cron job. # define logging root # lg=/home/chris/BTUmetering lg=MAINPROGROOT # serial device serdev=$(readlink -e /dev/serial/by-id/*EMETERSERIALDEVICE*) # serial number list of Landis&GYR measurement units. adrlist=("94529486" "94529485" "94529479" "94529480" "94529484" "94529481" "94529482" "94529487" "94529483" "94529488" "99828529" "99828528" "38751745" "40183481" "38751742") loglist=("EAHU2" "EAHU1" "MDB1" "MDB6E" "MDB7E" "MDB2" "MDB3" "EAHU3" "MDB4" "EAHU4" "MDB6" "EAHU6" "MDB3-S14" "E-MDB3-S14" "EAHU3-S14") # go through the list for (( i=0 ; $i<${#adrlist[*]} ; i++)) do adr=${adrlist[$i]} logfile=$lg/log/emeter_$adr.log # generate time and response from water meter # response is kWh, V1, V2, V3, I1, I2 I3, +kVAhr, -kVAhr tm=$(date +"%D %T") $lg/e_meter/getresponse_emeter -t 5000 -d $serdev "/?$adr!" \ | awk -f $lg/e_meter/getpower.awk >$lg/etmp retval=$? rb=$(cat $lg/etmp) # See if something silly happened; in that case, uncomment that line if [[ $retval -ne 0 ]] ; then echo "# $tm $rb" >>$logfile else echo $tm $rb >>$logfile fi done