|
15 | 15 | # along with this program. If not, see <http://www.gnu.org/licenses/>. |
16 | 16 |
|
17 | 17 | __author__ = "Tobias Kraft" |
18 | | -__version__ = "1.91" |
| 18 | +__version__ = "1.92" |
19 | 19 |
|
20 | 20 | import requests |
21 | 21 | import time |
@@ -817,6 +817,18 @@ def GetJson(self): |
817 | 817 | def GetPowermeterWatts(self): |
818 | 818 | return CastToInt(self.GetJson()['data'][0]['tuples'][0][1]) |
819 | 819 |
|
| 820 | +class AmisReader(Powermeter): |
| 821 | + def __init__(self, ip: str): |
| 822 | + self.ip = ip |
| 823 | + |
| 824 | + def GetJson(self, path): |
| 825 | + url = f'http://{self.ip}{path}' |
| 826 | + return session.get(url, timeout=10).json() |
| 827 | + |
| 828 | + def GetPowermeterWatts(self): |
| 829 | + ParsedData = self.GetJson(f'/rest') |
| 830 | + return CastToInt(ParsedData['saldo']) |
| 831 | + |
820 | 832 | class DTU(Powermeter): |
821 | 833 | def __init__(self, inverter_count: int): |
822 | 834 | self.inverter_count = inverter_count |
@@ -1187,6 +1199,10 @@ def CreatePowermeter() -> Powermeter: |
1187 | 1199 | config.get('SCRIPT', 'SCRIPT_USER'), |
1188 | 1200 | config.get('SCRIPT', 'SCRIPT_PASS') |
1189 | 1201 | ) |
| 1202 | + elif config.getboolean('SELECT_POWERMETER', 'USE_AMIS_READER'): |
| 1203 | + return AmisReader( |
| 1204 | + config.get('AMIS_READER', 'AMIS_READER_IP') |
| 1205 | + ) |
1190 | 1206 | else: |
1191 | 1207 | raise Exception("Error: no powermeter defined!") |
1192 | 1208 |
|
@@ -1262,6 +1278,10 @@ def CreateIntermediatePowermeter(dtu: DTU) -> Powermeter: |
1262 | 1278 | config.get('INTERMEDIATE_VZLOGGER', 'VZL_PORT_INTERMEDIATE'), |
1263 | 1279 | config.get('INTERMEDIATE_VZLOGGER', 'VZL_UUID_INTERMEDIATE') |
1264 | 1280 | ) |
| 1281 | + elif config.getboolean('SELECT_INTERMEDIATE_METER', 'USE_AMIS_READER_INTERMEDIATE'): |
| 1282 | + return AmisReader( |
| 1283 | + config.get('INTERMEDIATE_AMIS_READER', 'AMIS_READER_IP_INTERMEDIATE') |
| 1284 | + ) |
1265 | 1285 | else: |
1266 | 1286 | return dtu |
1267 | 1287 |
|
|
0 commit comments