To jest mój skrypt na zbieranie danych z licznika OR-WE-504 może cie zainteresuje ja się komunikuje slotem tcp/ip na i z modułu już rs485
#!/bin/bash
czas=`date +"%H:%M:%S"`
dane=`sed 's/^[ ]*//' //mnt/www/dane/wyswietlacz.txt`
if ping -c 1 192.168.1.254 > /dev/null
then
exec 3<> /dev/tcp/192.168.1.254/4001
echo -en "\x01\x03\x00\x00\x00\x0B\x04\x0D" >&3
head -c 40 <&3 > /mnt/www/header.hex
BYTES=( `hexdump -v -e ' 1/1 "%02X " ' /mnt/www/header.hex` )
HEX="${BYTES[0]}${BYTES[1]}${BYTES[2]}${BYTES[3]}${BYTES[4]}${BYTES[5]}${BYTES[6]}${BYTES[7]}${BYTES[8]}${BYTES[9]}${BYTES[10]}${BYTES[11]}${BYTES[12]}${BYTES[13]}${BYTES[14]}${BYTES[15]}${BYTES[16]}${BYTES[17]}${BYTES[18]}${BYTES[19]}${BYTES[20]}${BYTES[21]}${BYTES[22]}${BYTES[23]}${BYTES[24]}${BYTES[25]}${BYTES[26]}${BYTES[27]}"
DATA_LENGTH=`echo "obase=10; ibase=16; ${BYTES[3]}${BYTES[4]}" | bc`
# head -v -c "${DATA_LENGTH}" <&3
exec 3>&- # Close for write
exec 3<&- # Close for read
#echo adres ${BYTES[0]}
#echo rozkaz ${BYTES[1]}
#echo ilosc danych ${BYTES[2]}
#napiecie
DATA_LENGTH=`echo "obase=10; ibase=16; ${BYTES[3]}${BYTES[4]}" | bc`
DATA_LENGTH=${DATA_LENGTH:0:3}.${DATA_LENGTH:3:1}
echo Napięcie: ${DATA_LENGTH} V
#koniec
#aperaz
DATA_LENGTH=`echo "obase=10000; ibase=16; ${BYTES[5]}${BYTES[6]}" | bc`
DATA_LENGTH=${DATA_LENGTH:0:4}.${DATA_LENGTH:4:1}
echo Amperaz: ${DATA_LENGTH} A
#koniec
#czestotliwosc
DATA_LENGTH=`echo "obase=10000; ibase=16; ${BYTES[7]}${BYTES[8]}" | bc`
DATA_LENGTH=${DATA_LENGTH:0:4}.${DATA_LENGTH:4:1}
echo Czestotliwosc: ${DATA_LENGTH} HZ
#koniec
#Moc czynna
DATA_LENGTH=`echo "obase=10; ibase=16; ${BYTES[9]}${BYTES[10]}" | bc`
echo Moc czynna: ${DATA_LENGTH} W
#koniec
#Moc bierana
DATA_LENGTH=`echo "obase=10; ibase=16; ${BYTES[11]}${BYTES[12]}" | bc`
echo Moc bierna: ${DATA_LENGTH} var
#koniec
#Moc pozorna
DATA_LENGTH=`echo "obase=10; ibase=16; ${BYTES[13]}${BYTES[14]}" | bc`
echo Moc pozorna: ${DATA_LENGTH} va
#koniec
#współczynnik mocy
DATA_LENGTH=`echo "obase=10; ibase=16; ${BYTES[15]}${BYTES[16]}" | bc`
echo Wspolczynik mocy: ${DATA_LENGTH} P
#koniec
#stan licznika
DATA_LENGTH=`echo "obase=10; ibase=16; ${BYTES[17]}${BYTES[18]}${BYTES[19]}${BYTES[20]}" | bc`
DATA_LENGTH=${DATA_LENGTH:0:5}.${DATA_LENGTH:5:1}
echo Stan licznika ${DATA_LENGTH} Kwh
#koniec
#Energia bierna
DATA_LENGTH=`echo "obase=10; ibase=16; ${BYTES[21]}${BYTES[22]}${BYTES[23]}${BYTES[24]}" | bc`
DATA_LENGTH=${DATA_LENGTH:0:5}${DATA_LENGTH:5:1}
echo Bierny stan licznika ${DATA_LENGTH} varh
#koniec
fi