diff --git a/SunGather/registers-sungrow.yaml b/SunGather/registers-sungrow.yaml index 0bca996..5fa42bf 100644 --- a/SunGather/registers-sungrow.yaml +++ b/SunGather/registers-sungrow.yaml @@ -1,4 +1,4 @@ -version: 0.2.0 +version: 0.2.1 vendor: Sungrow registers: - read: @@ -1144,6 +1144,7 @@ registers: value: "Restarting" - response: 0x4000 value: "EMS Run" + default: "Unknown" models: ["SH5K-20","SH3K6","SH4K6","SH5K-V13","SH5K-30","SH3K6-30","SH4K6-30","SH5.0RS","SH3.6RS","SH4.6RS","SH6.0RS","SH10RT","SH10RT-V112","SH8.0RT","SH6.0RT","SH5.0RT"] - name: "running_state" level: 2 diff --git a/SunGather/sungather.py b/SunGather/sungather.py index 5770f23..477bda5 100644 --- a/SunGather/sungather.py +++ b/SunGather/sungather.py @@ -233,14 +233,18 @@ class SungrowInverter(): # We convert a system response to a human value if register.get('datarange'): + match = False for value in register.get('datarange'): if value['response'] == rr.registers[num]: register_value = value['value'] - - + match = True + if not match: + default = register.get('default') + logging.debug(f"No matching value for {register_value} in datarange of {register_name}, using default {default}") + register_value = default if register.get('accuracy'): - register_value = round(register_value * register.get('accuracy'),2) + register_value = round(register_value * register.get('accuracy'), 2) # Set the final register value with adjustments above included self.latest_scrape[register_name] = register_value