Here's the few steps to install the SDM10C com application for Arch ARM devices :
install first libmodbus (with: configure, make, make install)
Also do a pacman -Sy automake autoconf pkg-config
Add into the firsts lines of SDM120C's make file
Code: Select all
export PKG_CONFIG_PATH=/usr/lib/pkgconfig:/usr/local/lib/pkgconfig
export LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib
ln -s /srv/http/metern/comapps/SDM120C/sdm120c /usr/bin/sdm120c
I use this pooling script (poolSDM485.sh) :
Code: Select all
#!/bin/bash
ADDRESS="$1"
BAUD_RATE="$2"
DEVICE="$3"
count=0
trap 'echo bye;rm /tmp/485live.txt;rm /tmp/485metern.txt; exit' EXIT SIGHUP SIGINT SIGQUIT SIGTERM
while [ true ]; do
VOLTAGE=""
CURRENT=""
POWER=""
CURRENT=""
POWERFACTOR=""
FRQ=""
RET=""
CMD="sdm120c -a ${ADDRESS} -b ${BAUD_RATE} -p -v -c -f -g -e -i -t -q ${DEVICE}"
VALUE=`$CMD`
VOLTAGE=$(echo ${VALUE} | cut -d\ -f1)
CURRENT=$(echo ${VALUE} | cut -d\ -f2)
POWER=$(echo ${VALUE} | cut -d\ -f3)
POWERFACTOR=$(echo ${VALUE} | cut -d\ -f4)
FRQ=$(echo ${VALUE} | cut -d\ -f5)
ENERGYIMPORT=$(echo ${VALUE} | cut -d\ -f6)
ENERGYEXPORT=$(echo ${VALUE} | cut -d\ -f7)
ENERGYTOT=$(echo ${VALUE} | cut -d\ -f8)
RET=$(echo ${VALUE} | cut -d\ -f9)
if [ "$RET" == "OK" ]; then
count=0
ID=$ADDRESS
echo -e "$ID($VOLTAGE*V)\n$ID($CURRENT*A)\nTOT($POWER*W)\n$ID($POWERFACTOR*F)\n$ID($FRQ*Hz)" > /tmp/485live.txt
echo -e "EIMP($ENERGYIMPORT*Wh)\nEEXP($ENERGYEXPORT*Wh)" > /tmp/485metern.txt
else
count=$(expr $count + 1)
if [ $count -ge 100 ]; then
rm /tmp/485live.txt
rm /tmp/485metern.txt
count=0
fi
# echo -e "$ID(0*V)\n$ID(0*A)\nTOT(0*W)\n$ID(0*F)\n$ID(0*Hz)" > /tmp/485live.txt
# timestamp=$(date +"%Y-%m-%d %H:%M:%S")
# echo "$timestamp $VALUE" >> /tmp/485meter.err
fi
sleep 0.5
done
ln -s /srv/http/metern/comapps/SDM120C/poolSDM485.sh /usr/bin/poolSDM485
You may start this daemon via metern/scripts/comappsdaemon.php.
Eg to request the values
Code: Select all
more /tmp/485metern.txt | egrep "^EIMP\(" | grep "*Wh)"
more /tmp/485live.txt | egrep "^1\(" | grep "*Hz)"
..
