How to use the pymodbus.payload.BinaryPayloadDecoder.fromRegisters function in pymodbus

To help you get started, we’ve selected a few pymodbus examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github cbalint13 / tinnymodbus / tools / examples / sensors-i2c-read.py View on Github external
decoder = BinaryPayloadDecoder.fromRegisters(result.registers, endian=Endian.Big)
print decoder.decode_16bit_int(), " running mode\n"

print

print "0x03 0x0001\n"
result  = client.read_holding_registers(address=0x0001, count=0x02, unit=idslave)
decoder = BinaryPayloadDecoder.fromRegisters(result.registers, endian=Endian.Big)
x = decoder.decode_32bit_int();
print ''.join(chr((x>>8*(4-byte-1))&0xFF) for byte in range(4)) , " software version \n"

print

print "0x03 0x0002\n"
result  = client.read_holding_registers(address=0x0002, count=0x01, unit=idslave)
decoder = BinaryPayloadDecoder.fromRegisters(result.registers, endian=Endian.Big)
print decoder.decode_16bit_int(), " slave address\n"

print

print "0x03 0x0003\n"
result  = client.read_holding_registers(address=0x0003, count=0x02, unit=idslave)
decoder = BinaryPayloadDecoder.fromRegisters(result.registers, endian=Endian.Big)
print decoder.decode_32bit_float(), " V (internal)\n"

print

print "0x03 0x0004\n"
result  = client.read_holding_registers(address=0x0004, count=0x02, unit=idslave)
decoder = BinaryPayloadDecoder.fromRegisters(result.registers, endian=Endian.Big)
print decoder.decode_32bit_float(), " C (internal)\n"
github snaptec / openWB / modules / wr2_victron / victron.py View on Github external
import socket
import ConfigParser
import struct
import binascii
from pymodbus.constants import Endian
from pymodbus.payload import BinaryPayloadDecoder
ipaddress = str(sys.argv[1])
mid = int(sys.argv[2])
from pymodbus.client.sync import ModbusTcpClient
client = ModbusTcpClient(ipaddress, port=502)
connection = client.connect()


#mppt watt
resp= client.read_holding_registers(789,1,unit=mid)
decoder = BinaryPayloadDecoder.fromRegisters(resp.registers,byteorder=Endian.Big,wordorder=Endian.Big)
mpp_watt1 = str(decoder.decode_16bit_uint())
mpp_watt2 = int(mpp_watt1) / 10 * -1
f = open('/var/www/html/openWB/ramdisk/pv2watt', 'w')
f.write(str(mpp_watt2))
f.close()

client.close()
github snaptec / openWB / modules / wr_plenticore / read_kostalplenticore.py View on Github external
FRegister_250 = BinaryPayloadDecoder.fromRegisters(reg_250.registers, byteorder=Endian.Big, wordorder=Endian.Little)
FRegister_252 = BinaryPayloadDecoder.fromRegisters(reg_252.registers, byteorder=Endian.Big, wordorder=Endian.Little)
FRegister_320 = BinaryPayloadDecoder.fromRegisters(reg_320.registers, byteorder=Endian.Big, wordorder=Endian.Little)
FRegister_322 = BinaryPayloadDecoder.fromRegisters(reg_322.registers, byteorder=Endian.Big, wordorder=Endian.Little)
FRegister_324 = BinaryPayloadDecoder.fromRegisters(reg_324.registers, byteorder=Endian.Big, wordorder=Endian.Little)
FRegister_326 = BinaryPayloadDecoder.fromRegisters(reg_326.registers, byteorder=Endian.Big, wordorder=Endian.Little)
FRegister_514 = BinaryPayloadDecoder.fromRegisters(reg_514.registers, byteorder=Endian.Big, wordorder=Endian.Little)
FRegister_575 = BinaryPayloadDecoder.fromRegisters(reg_575.registers, byteorder=Endian.Big, wordorder=Endian.Little)
FRegister_582 = BinaryPayloadDecoder.fromRegisters(reg_582.registers, byteorder=Endian.Big, wordorder=Endian.Little)

# ggf. ausgelesene Register WR 2 dekodieren
if ipaddress2 != "none":
    FRegister2_100 = BinaryPayloadDecoder.fromRegisters(reg2_100.registers, byteorder=Endian.Big, wordorder=Endian.Little)
    FRegister2_320 = BinaryPayloadDecoder.fromRegisters(reg2_320.registers, byteorder=Endian.Big, wordorder=Endian.Little)
    FRegister2_322 = BinaryPayloadDecoder.fromRegisters(reg2_322.registers, byteorder=Endian.Big, wordorder=Endian.Little)
    FRegister2_324 = BinaryPayloadDecoder.fromRegisters(reg2_324.registers, byteorder=Endian.Big, wordorder=Endian.Little)
    FRegister2_326 = BinaryPayloadDecoder.fromRegisters(reg2_326.registers, byteorder=Endian.Big, wordorder=Endian.Little)
    FRegister2_514 = BinaryPayloadDecoder.fromRegisters(reg2_514.registers, byteorder=Endian.Big, wordorder=Endian.Little)
    FRegister2_575 = BinaryPayloadDecoder.fromRegisters(reg2_575.registers, byteorder=Endian.Big, wordorder=Endian.Little)
    FRegister2_582 = BinaryPayloadDecoder.fromRegisters(reg2_582.registers, byteorder=Endian.Big, wordorder=Endian.Little)

# dekodierte Register WR 1 in entsprechende Typen umwandeln
Total_DC_power1 = int(FRegister_100.decode_32bit_float())
Actual_batt_ch_disch_power1 = int(FRegister_582.decode_16bit_int())
Total_yield1 = int(FRegister_320.decode_32bit_float())
Daily_yield1 = round((FRegister_322.decode_32bit_float()/1000),2)
Yearly_yield1 = round((FRegister_324.decode_32bit_float()/1000),2)
Monthly_yield1 = round((FRegister_326.decode_32bit_float()/1000),2)
Inverter_generation_power_actual1 = int(FRegister_575.decode_16bit_int())
Battery_actual_SOC1 = int(FRegister_514.decode_16bit_int())
# Werte aus EM300/KSEM
Current_phase_1_powermeter = round(FRegister_222.decode_32bit_float(),2)
github cbalint13 / tinnymodbus / tools / examples / sensors-1w-read.py View on Github external
print (decoder.decode_16bit_int(), " maximum devices \n")

print ("")

print ("0x04 0x0001\n")
result  = client.read_input_registers(address=0x0001, count=0x01, unit=idslave)
decoder = BinaryPayloadDecoder.fromRegisters(result.registers, byteorder=Endian.Big, wordorder=Endian.Big)
value = decoder.decode_16bit_int()
print (value, " devices found\n")

# iterate sensors
for idx in range(0, value):

  print ("  id: %i 0x04 0x%04x" % (idx, 0x0100+idx))
  result  = client.read_input_registers(address=0x0100+idx, count=0x04, unit=idslave)
  decoder = BinaryPayloadDecoder.fromRegisters(result.registers, byteorder=Endian.Big, wordorder=Endian.Big)
  print ("  %08x" % decoder.decode_64bit_uint())

  print ("  id: %i 0x04 0x%04x" % (idx, 0x0200+idx))
  result  = client.read_input_registers(address=0x0200+idx, count=0x02, unit=idslave)
  decoder = BinaryPayloadDecoder.fromRegisters(result.registers, byteorder=Endian.Big, wordorder=Endian.Big)
  print (" ", decoder.decode_32bit_float(), " Celsius\n")

print ("")

client.close()
github snaptec / openWB / modules / wr_plenticore / read_kostalplenticore.py View on Github external
reg2_324 = client2.read_holding_registers(324,2,unit=71)
    # Plenticore Register 326: Monthly_yield [Wh]
    # ist PV Monatsertrag
    reg2_326 = client2.read_holding_registers(326,2,unit=71)

# ausgelesene Register WR 1 dekodieren
FRegister_100 = BinaryPayloadDecoder.fromRegisters(reg_100.registers, byteorder=Endian.Big, wordorder=Endian.Little)
FRegister_150 = BinaryPayloadDecoder.fromRegisters(reg_150.registers, byteorder=Endian.Big, wordorder=Endian.Little)
FRegister_220 = BinaryPayloadDecoder.fromRegisters(reg_220.registers, byteorder=Endian.Big, wordorder=Endian.Little)
FRegister_222 = BinaryPayloadDecoder.fromRegisters(reg_222.registers, byteorder=Endian.Big, wordorder=Endian.Little)
FRegister_224 = BinaryPayloadDecoder.fromRegisters(reg_224.registers, byteorder=Endian.Big, wordorder=Endian.Little)
FRegister_230 = BinaryPayloadDecoder.fromRegisters(reg_230.registers, byteorder=Endian.Big, wordorder=Endian.Little)
FRegister_232 = BinaryPayloadDecoder.fromRegisters(reg_232.registers, byteorder=Endian.Big, wordorder=Endian.Little)
FRegister_234 = BinaryPayloadDecoder.fromRegisters(reg_234.registers, byteorder=Endian.Big, wordorder=Endian.Little)
FRegister_240 = BinaryPayloadDecoder.fromRegisters(reg_240.registers, byteorder=Endian.Big, wordorder=Endian.Little)
FRegister_242 = BinaryPayloadDecoder.fromRegisters(reg_242.registers, byteorder=Endian.Big, wordorder=Endian.Little)
FRegister_244 = BinaryPayloadDecoder.fromRegisters(reg_244.registers, byteorder=Endian.Big, wordorder=Endian.Little)
FRegister_250 = BinaryPayloadDecoder.fromRegisters(reg_250.registers, byteorder=Endian.Big, wordorder=Endian.Little)
FRegister_252 = BinaryPayloadDecoder.fromRegisters(reg_252.registers, byteorder=Endian.Big, wordorder=Endian.Little)
FRegister_320 = BinaryPayloadDecoder.fromRegisters(reg_320.registers, byteorder=Endian.Big, wordorder=Endian.Little)
FRegister_322 = BinaryPayloadDecoder.fromRegisters(reg_322.registers, byteorder=Endian.Big, wordorder=Endian.Little)
FRegister_324 = BinaryPayloadDecoder.fromRegisters(reg_324.registers, byteorder=Endian.Big, wordorder=Endian.Little)
FRegister_326 = BinaryPayloadDecoder.fromRegisters(reg_326.registers, byteorder=Endian.Big, wordorder=Endian.Little)
FRegister_514 = BinaryPayloadDecoder.fromRegisters(reg_514.registers, byteorder=Endian.Big, wordorder=Endian.Little)
FRegister_575 = BinaryPayloadDecoder.fromRegisters(reg_575.registers, byteorder=Endian.Big, wordorder=Endian.Little)
FRegister_582 = BinaryPayloadDecoder.fromRegisters(reg_582.registers, byteorder=Endian.Big, wordorder=Endian.Little)

# ggf. ausgelesene Register WR 2 dekodieren
if ipaddress2 != "none":
    FRegister2_100 = BinaryPayloadDecoder.fromRegisters(reg2_100.registers, byteorder=Endian.Big, wordorder=Endian.Little)
    FRegister2_320 = BinaryPayloadDecoder.fromRegisters(reg2_320.registers, byteorder=Endian.Big, wordorder=Endian.Little)
    FRegister2_322 = BinaryPayloadDecoder.fromRegisters(reg2_322.registers, byteorder=Endian.Big, wordorder=Endian.Little)