úterý 1. března 2016

Odečet IEC62025 elekrtoměru z příkazové řádky, pro openwrt

Elektroměr má nastavenu navazovací i komunikační rychlost na 2400bd, odpověď se nijak neparsuje, počítá se s tím, že odečet bude do 10s hotový. Pro mne je důležitá pouze hodnota registru 1.8.L1 a mám nastaven pevný počet desetiných míst před i po desetiné čárce, proto si do výsledku beru pouze znaky 0-9.

#!/bin/sh
PORT=$1

readingThread() {
  dd if=$PORT of=/root/dump.txt &
  P=$!
  sleep 10
  kill -9 $P
}

writingThread() {
  echo -en '/?!\x0d\x0a' > $PORT
  sleep 1
  echo -en '\x06030\x0d\x0a' > $PORT
}

setup() {
  stty -F $PORT intr undef quit undef erase undef kill undef eof undef start undef stop undef susp undef rprnt undef werase undef lnext undef flush undef min 1 time 5 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke
}

setup
readingThread &
sleep 1
writingThread
sleep 11
cat dump.txt | grep -e '1.8.L1' | sed -e 's/^.*(//' -e 's/[^0-9]//g'

Žádné komentáře:

Okomentovat