I bought 50A PWM solar controller from ebay for power my shack. Controller have RS-232, so let’s it connect to raspi and read voltage!
File with protocol details and example:
Device photo:
#!/usr/bin/python import serial, sys ser = serial.Serial('/dev/ttyUSB0', 9600) command = "\x01\x10\x00\x00\x00\x00\x2B" ser.open() # !!! in new version PySerial need comment ser.flushInput() #clear buffer ser.write(command) #send prepared command #time.sleep(1) #maybe solve problems skip=ser.read(2) #skip first two bytes byte3=ser.read(1) byte4=ser.read(1) ser.close() value1=ord(byte3) value2=ord(byte4) voltage=(value2 * 256 + value1) / 100 voltage_modulo=(value2 * 256 + value1) % 100 #print(repr(byte3)) #print(repr(byte4)) sys.stdout.write(str(voltage)) sys.stdout.write('.') sys.stdout.write(str(voltage_modulo)