Merge pull request #54 from michbeck100/feature/running_state

#53 - adds support for bit masks
This commit is contained in:
bohdan-s
2022-07-07 13:58:56 +10:00
committed by GitHub
2 changed files with 51 additions and 5 deletions
+46 -4
View File
@@ -1108,12 +1108,54 @@ registers:
- response: 0x4000
value: "EMS Run"
models: ["SH5K-20","SH3K6","SH4K6","SH5K-V13","SH5K-30","SH3K6-30","SH4K6-30","SH5.0RS","SH3.6RS","SH4.6RS","SH6.0RS","SH10RT","SH8.0RT","SH6.0RT","SH5.0RT"]
- name: "running_state"
- name: "running_state"
level: 2
address: 13001
datatype: "U16"
models: ["SH5K-20","SH3K6","SH4K6","SH5K-V13","SH5K-30","SH3K6-30","SH4K6-30","SH5.0RS","SH3.6RS","SH4.6RS","SH6.0RS","SH10RT","SH8.0RT","SH6.0RT","SH5.0RT"]
- name: "daily_pv_generation"
models: ["SH5K-20","SH3K6","SH4K6","SH5K-V13","SH5K-30","SH3K6-30","SH4K6-30","SH5.0RS","SH3.6RS","SH4.6RS","SH6.0RS","SH10RT","SH8.0RT","SH6.0RT","SH5.0RT"]
- name: "power_generated_from_pv"
level: 2
address: 13001
datatype: "U16"
mask: 1
models: ["SH5K-20","SH3K6","SH4K6","SH5K-V13","SH5K-30","SH3K6-30","SH4K6-30","SH5.0RS","SH3.6RS","SH4.6RS","SH6.0RS","SH10RT","SH8.0RT","SH6.0RT","SH5.0RT"]
- name: "battery_charging"
level: 2
address: 13001
datatype: "U16"
mask: 2
models: ["SH5K-20","SH3K6","SH4K6","SH5K-V13","SH5K-30","SH3K6-30","SH4K6-30","SH5.0RS","SH3.6RS","SH4.6RS","SH6.0RS","SH10RT","SH8.0RT","SH6.0RT","SH5.0RT"]
- name: "battery_discharging"
level: 2
address: 13001
datatype: "U16"
mask: 4
models: ["SH5K-20","SH3K6","SH4K6","SH5K-V13","SH5K-30","SH3K6-30","SH4K6-30","SH5.0RS","SH3.6RS","SH4.6RS","SH6.0RS","SH10RT","SH8.0RT","SH6.0RT","SH5.0RT"]
- name: "load_active"
level: 2
address: 13001
datatype: "U16"
mask: 8
models: ["SH5K-20","SH3K6","SH4K6","SH5K-V13","SH5K-30","SH3K6-30","SH4K6-30","SH5.0RS","SH3.6RS","SH4.6RS","SH6.0RS","SH10RT","SH8.0RT","SH6.0RT","SH5.0RT"]
- name: "feed_into_grid"
level: 2
address: 13001
datatype: "U16"
mask: 16
models: ["SH5K-20","SH3K6","SH4K6","SH5K-V13","SH5K-30","SH3K6-30","SH4K6-30","SH5.0RS","SH3.6RS","SH4.6RS","SH6.0RS","SH10RT","SH8.0RT","SH6.0RT","SH5.0RT"]
- name: "import_from_grid"
level: 2
address: 13001
datatype: "U16"
mask: 32
models: ["SH5K-20","SH3K6","SH4K6","SH5K-V13","SH5K-30","SH3K6-30","SH4K6-30","SH5.0RS","SH3.6RS","SH4.6RS","SH6.0RS","SH10RT","SH8.0RT","SH6.0RT","SH5.0RT"]
- name: "power_generated_from_load"
level: 2
address: 13001
datatype: "U16"
mask: 128
models: ["SH5K-20","SH3K6","SH4K6","SH5K-V13","SH5K-30","SH3K6-30","SH4K6-30","SH5.0RS","SH3.6RS","SH4.6RS","SH6.0RS","SH10RT","SH8.0RT","SH6.0RT","SH5.0RT"]
- name: "daily_pv_generation"
level: 2
address: 13002
datatype: "U16"
@@ -1153,7 +1195,7 @@ registers:
datatype: "S32"
unit: "W"
models: ["SH5K-20","SH3K6","SH4K6","SH5K-V13","SH5K-30","SH3K6-30","SH4K6-30","SH5.0RS","SH3.6RS","SH4.6RS","SH6.0RS","SH10RT","SH8.0RT","SH6.0RT","SH5.0RT"]
- name: "daily_battery_charge_from_pv"
- name: "daily_battery_charge_from_pv"
level: 1
address: 13012
datatype: "U16"
+5 -1
View File
@@ -208,6 +208,9 @@ class SungrowInverter():
if register.get('datatype') == "U16":
if register_value == 0xFFFF:
register_value = 0
if register.get('mask'):
# Filter the value through the mask.
register_value = 1 if register_value & register.get('mask') != 0 else 0
elif register.get('datatype') == "S16":
if register_value == 0xFFFF or register_value == 0x7FFF:
register_value = 0
@@ -234,12 +237,13 @@ class SungrowInverter():
if value['response'] == rr.registers[num]:
register_value = value['value']
if register.get('accuracy'):
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
break
return True
def validateRegister(self, check_register):