Query script fixes & updates

This commit is contained in:
mj 2022-01-12 22:02:27 +01:00
parent 12dca6c778
commit 45895f179e

View File

@ -22,10 +22,14 @@ Read only CO2 register from sensor 123, baudrate 4800:
{argv[0]} 123 4800 read CO2
Read CO2, T_SHT4x and RH_SCD4x from sensor 222, default baudrate:
{argv[0]} 222 read CO2 T_SHT4x RH_SCD4x
Read register 30010 from sensor 247, default baudrate:
{argv[0]} 247 read 30010
Read registers 30011, 30012, 30020 from sensor 247, baudrate 19200:
{argv[0]} 247 19200 read 30011 30012 30020
Turn LED off for sensor 247, baud 115200:
{argv[0]} 247 115200 write 0 LED_on_register
Set brightness of all connected sensors to 50%:
{argv[0]} 0 write 50 LED_brightness_register
{argv[0]} 247 115200 write LED_on 0
Set brightness of all connected sensors to 50%, default baudrate (broadcast message):
{argv[0]} 0 write LED_brightness 50
''')
# default values
@ -84,7 +88,7 @@ if action != 'read' and action != 'write' and action != 'all' and action != 'res
print(f'Unknown action {action}')
exit(-4)
if action == 'write' and value == None:
print(f'Action "write" needs value"')
print(f'Action "write" needs value')
exit(-5)
if action == 'write' and len(register_number) + len(register_name) != 1:
print(f'Action "write" needs exactly one register to write to')
@ -106,13 +110,16 @@ if action == 'write':
print(f'Value to be written: {value}')
# open device
s = Sensor(address=addr, baudrate=baudrate)
all_registers = Sensor.input_registers.copy()
all_registers.update(Sensor.holding_registers)
all_register_numbers = {}
for name, number in all_registers.items():
all_register_numbers[number] = name
if action == 'read' or action == 'all':
print('---- Register readout ----')
for register in register_name + register_number:
if isinstance(register, str):
reg_name = register
all_registers = Sensor.input_registers.copy()
all_registers.update(Sensor.holding_registers)
if reg_name in all_registers:
reg_number = all_registers[reg_name]
else:
@ -120,13 +127,13 @@ if action == 'read' or action == 'all':
exit(-7)
else:
reg_number = register
reg_name = ''
# try reverse lookup
reg_name = all_register_numbers[reg_number] if reg_number in all_register_numbers else ''
try:
result = s.read_register(reg_number)
result = int(s.read_register(reg_number))
except:
print(f'{reg_number : <10} {"N/A" : <10} Failed to read register')
continue
print(f'{reg_number : <10} {int(result) : <10} {reg_name}')
result = 'N/A'
print(f'{reg_number : <10} {result : <10} {reg_name}')
elif action == 'write':
if len(register_name) > 0:
if register_name[0] not in Sensor.holding_registers: