1. compile

yum -y install gcc-c++ git libmodbus-devel
cd /opt/
git clone https://github.com/gianfrdp/SDM120C
cd SDM120C/
make
gcc -c -o sdm120c.o sdm120c.c -O2 -Wall -g `pkg-config --cflags libmodbus`
gcc -o sdm120c sdm120c.o -O2 -Wall -g `pkg-config --libs libmodbus`
chmod 4711 sdm120c
cp -pv ./sdm120c /bin/
cd

2. usage

sdm120c -a 1 -P N -b 9600 /dev/ttyUSB0
Voltage: 228.20 V
Current: 0.00 A
Power: 0.00 W
Active Apparent Power: 0.00 VA
Reactive Apparent Power: 0.00 VAR
Power Factor: 1.00
Phase Angle: 0.00 Degree
Frequency: 50.00 Hz
Import Active Energy: 0 Wh
Export Active Energy: 0 Wh
Total Active Energy: 0 Wh
Import Reactive Energy: 6 VARh
Export Reactive Energy: 0 VARh
Total Reactive Energy: 6 VARh
OK
Tip show only voltage and format the output
sdm120c -a 1 -P N -b 9600 -cpmv /dev/ttyUSB0
1_V(229.80*V)
1_C(0.00*A)
1_P(0.00*W)

3. debug

sdm120c -a 1 -P N -b 9600 -cpmv -d3 /dev/ttyUSB0
20210505-17:42:15.558602: sdm120c(39774) debug_flag = 1
20210505-17:42:15.558715: sdm120c(39774) cmdline="sdm120c -a 1 -P N -b 9600 -cpmv -d3 /dev/ttyUSB0"
20210505-17:42:15.558735: sdm120c(39774) szttyDevice: /dev/ttyUSB0
20210505-17:42:15.559316: sdm120c(39774) devLCKfile: </var/lock/LCK..ttyUSB0>
20210505-17:42:15.559337: sdm120c(39774) devLCKfileNew: </var/lock/LCK..ttyUSB0.39774>
20210505-17:42:15.559447: sdm120c(39774) PID: 39774
20210505-17:42:15.559535: sdm120c(39774) Attempting to get lock on Serial Port /dev/ttyUSB0...
20210505-17:42:15.559562: sdm120c(39774) Acquiring shared lock on /var/lock/LCK..ttyUSB0...
20210505-17:42:15.559581: sdm120c(39774) Shared lock on /var/lock/LCK..ttyUSB0 acquired...
20210505-17:42:15.559617: sdm120c(39774) Checking for lock
20210505-17:42:15.559661: sdm120c(39774) errno=0, bRead=2 PID=39774 LckPID=39774
20210505-17:42:15.559675: sdm120c(39774) Checking process 39774 (sdm120c) for lock
20210505-17:42:15.559700: sdm120c(39774) PID: 39774 COMMAND: "sdm120c" LckPID: 39774 LckCOMMAND: "sdm120c" LckPIDcommand "sdm120c" = me
20210505-17:42:15.559713: sdm120c(39774) Appears we got the lock.
20210505-17:42:15.559727: sdm120c(39774) resp_timeout=200000us
20210505-17:42:15.559744: sdm120c(39774) Libmodbus context open (9600N2)
20210505-17:42:15.559758: sdm120c(39774) Byte timeout disabled.
20210505-17:42:15.559771: sdm120c(39774) New response timeout: 0s, 200000us
20210505-17:42:15.561421: sdm120c(39774) 1/1. Register Address 30001 [0000]
20210505-17:42:15.615941: sdm120c(39774) Read time: 54463us
20210505-17:42:15.615983: sdm120c(39774) reg[0/1]=17255 (0x4367)
20210505-17:42:15.616002: sdm120c(39774) reg[1/1]=32768 (0x8000)
1_V(231.50*V)
20210505-17:42:15.616067: sdm120c(39774) 1/1. Register Address 30007 [0006]
20210505-17:42:15.670092: sdm120c(39774) Read time: 53945us
20210505-17:42:15.670154: sdm120c(39774) reg[0/1]=0 (0x0)
20210505-17:42:15.670205: sdm120c(39774) reg[1/1]=0 (0x0)
1_C(0.00*A)
20210505-17:42:15.670265: sdm120c(39774) 1/1. Register Address 30013 [000C]
20210505-17:42:15.724593: sdm120c(39774) Read time: 54265us
20210505-17:42:15.724629: sdm120c(39774) reg[0/1]=0 (0x0)
20210505-17:42:15.724646: sdm120c(39774) reg[1/1]=0 (0x0)
1_P(0.00*W)
20210505-17:42:15.733689: sdm120c(39774) devLCKfile: </var/lock/LCK..ttyUSB0>
20210505-17:42:15.733742: sdm120c(39774) devLCKfileNew: </var/lock/LCK..ttyUSB0.39774>
20210505-17:42:15.733770: sdm120c(39774) Clearing Serial Port Lock (39774)...
20210505-17:42:15.733860: sdm120c(39774) Acquiring exclusive lock on /var/lock/LCK..ttyUSB0...
20210505-17:42:15.733936: sdm120c(39774) Exclusive lock on /var/lock/LCK..ttyUSB0 acquired (0) Success...
20210505-17:42:15.734052: sdm120c(39774) cmdLen=7
20210505-17:42:15.734100: sdm120c(39774) cmdLen=7 COMMAND is not null
20210505-17:42:15.734161: sdm120c(39774) errno=0, bRead=2 LckPID=39774 PID=39774 COMMAND='sdm120c'
20210505-17:42:15.734204: sdm120c(39774) errno=0, bRead=-1 LckPID=39774 PID=0 COMMAND=''
20210505-17:42:15.734322: sdm120c(39774) Clearing Serial Port Lock done

4. references