Skip to content

Commit 6530a8c

Browse files
authored
Resolve a few bugs (#22)
* Change step to 500 as with 50 it is very difficult to find 0 * Update release version * Protect against serial number being not set * Prevent values lower than min or higher than max
1 parent 6913d62 commit 6530a8c

File tree

3 files changed

+18
-4
lines changed

3 files changed

+18
-4
lines changed

.github/workflows/docker-image.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ on:
1313
- "main"
1414

1515
env:
16-
RELEASE: 3.0.2
16+
RELEASE: 3.0.3
1717

1818
jobs:
1919
docker:

sofar-hyd-ep.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -276,7 +276,7 @@
276276
"name": "Desired Power",
277277
"min": -5000,
278278
"max": 5000,
279-
"step": 50,
279+
"step": 500,
280280
"initial": 0,
281281
"mode": "slider",
282282
"value_template": "{{ value_json.desired_power }}",
@@ -762,7 +762,9 @@
762762
"state_class": "measurement",
763763
"entity_category": "diagnostic",
764764
"value_template": "{{ value_json.battery_soc }}"
765-
}
765+
},
766+
"min": 0,
767+
"max": 100
766768
},
767769
{
768770
"name": "battery_soh",

sofar2mqtt-v2.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,14 @@ def read_and_publish(self):
225225
# Inverter will return maximum 16-bit integer value when data not available (eg. grid usage when grid down)
226226
if value == 65535:
227227
value = 0
228+
if 'min' in register:
229+
if value < register['min']:
230+
logging.error(f"Value for {register['name']}: {str(value)} is lower than min allowed value: {register['min']}. Ignoring value")
231+
continue
232+
if 'max' in register:
233+
if value > register['max']:
234+
logging.error(f"Value for {register['name']}: {str(value)} is greater than max allowed value: {register['max']}. Ignoring value")
235+
continue
228236
if 'function' in register:
229237
if register['function'] == 'multiply':
230238
value = value * register['factor']
@@ -283,14 +291,18 @@ def publish_state(self):
283291
time.sleep(self.refresh_interval)
284292

285293
def publish_mqtt_discovery(self):
294+
if 'serial_number' not in self.data:
295+
logging.error("Serial number could not be determined, skipping publish")
296+
return False
297+
286298
sn = self.data['serial_number']
287299
payload = {
288300
"device": {
289301
"identifiers": [f"sofar2mqtt_python_bridge_{sn}"],
290302
"manufacturer": "Sofar2Mqtt-Python",
291303
"model": "Bridge",
292304
"name": "Sofar2Mqtt Python Bridge",
293-
"sw_version": "1.35.3"
305+
"sw_version": "3.0.3"
294306
},
295307
"device_class": "connectivity",
296308
"entity_category": "diagnostic",

0 commit comments

Comments
 (0)