Advertisement
Guest User

Untitled

a guest
Jul 19th, 2019
227
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.42 KB | None | 0 0
  1. # Reading PZEM-004t power sensor (new version v3.0) through Modbus-RTU protocol over TTL UART
  2. # Run as:
  3. # python3 pzem_004t.py
  4.  
  5. # To install dependencies:
  6. # pip install modbus-tk
  7. # pip install pyserial
  8.  
  9. import serial
  10. import modbus_tk.defines as cst
  11. from modbus_tk import modbus_rtu
  12.  
  13. # Connect to the slave
  14. serial = serial.Serial(
  15. port='/dev/PZEM_sensor',
  16. baudrate=9600,
  17. bytesize=8,
  18. parity='N',
  19. stopbits=1,
  20. xonxoff=0
  21. )
  22.  
  23. master = modbus_rtu.RtuMaster(serial)
  24. master.set_timeout(2.0)
  25. master.set_verbose(True)
  26.  
  27. data = master.execute(1, cst.READ_INPUT_REGISTERS, 0, 10)
  28.  
  29. voltage = data[0] / 10.0 # [V]
  30. current = (data[1] + (data[2] << 16)) / 1000.0 # [A]
  31. power = (data[3] + (data[4] << 16)) / 10.0 # [W]
  32. energy = data[5] + (data[6] << 16) # [Wh]
  33. frequency = data[7] / 10.0 # [Hz]
  34. powerFactor = data[8] / 100.0
  35. alarm = data[9] # 0 = no alarm
  36.  
  37. print('Voltage [V]: ', voltage)
  38. print('Current [A]: ', current)
  39. print('Power [W]: ', power) # active power (V * I * power factor)
  40. print('Energy [Wh]: ', energy)
  41. print('Frequency [Hz]: ', frequency)
  42. print('Power factor []: ', powerFactor)
  43. print('Alarm : ', alarm)
  44.  
  45. # Changing power alarm value to 100 W
  46. # master.execute(1, cst.WRITE_SINGLE_REGISTER, 1, output_value=100)
  47.  
  48. try:
  49. master.close()
  50. if slave.is_open:
  51. slave.close()
  52. except:
  53. pass
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement