Skip to content

Commit b6867aa

Browse files
authored
Merge pull request #149 from tomquist/add-esphome
add: support intermediate esphome
2 parents b587cdf + 468f49e commit b6867aa

2 files changed

Lines changed: 29 additions & 0 deletions

File tree

HoymilesZeroExport.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -547,6 +547,21 @@ class Shelly3EMPro(Shelly):
547547
def GetPowermeterWatts(self):
548548
return CastToInt(self.GetRpcJson('/EM.GetStatus?id=0')['total_act_power'])
549549

550+
class ESPHome(Powermeter):
551+
def __init__(self, ip: str, port: str, domain: str, id: str):
552+
self.ip = ip
553+
self.port = port
554+
self.domain = domain
555+
self.id = id
556+
557+
def GetJson(self, path):
558+
url = f'http://{self.ip}:{self.port}{path}'
559+
return requests.get(url, timeout=10).json()
560+
561+
def GetPowermeterWatts(self):
562+
ParsedData = self.GetJson(f'/{self.domain}/{self.id}')
563+
return CastToInt(ParsedData['value'])
564+
550565
class Shrdzm(Powermeter):
551566
def __init__(self, ip: str, user: str, password: str):
552567
self.ip = ip
@@ -1016,6 +1031,13 @@ def CreateIntermediatePowermeter(dtu: DTU) -> Powermeter:
10161031
return Shelly1PM(shelly_ip, shelly_user, shelly_pass)
10171032
elif config.getboolean('SELECT_INTERMEDIATE_METER', 'USE_SHELLY_PLUS_1PM_INTERMEDIATE'):
10181033
return ShellyPlus1PM(shelly_ip, shelly_user, shelly_pass)
1034+
elif config.getboolean('SELECT_INTERMEDIATE_METER', 'USE_ESPHOME_INTERMEDIATE'):
1035+
return ESPHome(
1036+
config.get('INTERMEDIATE_ESPHOME', 'ESPHOME_IP_INTERMEDIATE'),
1037+
config.get('INTERMEDIATE_ESPHOME', 'ESPHOME_PORT_INTERMEDIATE', fallback='80'),
1038+
config.get('INTERMEDIATE_ESPHOME', 'ESPHOME_DOMAIN_INTERMEDIATE'),
1039+
config.get('INTERMEDIATE_ESPHOME', 'ESPHOME_ID_INTERMEDIATE')
1040+
)
10191041
elif config.getboolean('SELECT_INTERMEDIATE_METER', 'USE_SHRDZM_INTERMEDIATE'):
10201042
return Shrdzm(
10211043
config.get('INTERMEDIATE_SHRDZM', 'SHRDZM_IP_INTERMEDIATE'),

HoymilesZeroExport_Config.ini

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,7 @@ USE_SHELLY_3EM_INTERMEDIATE = false
130130
USE_SHELLY_3EM_PRO_INTERMEDIATE = false
131131
USE_SHELLY_1PM_INTERMEDIATE = false
132132
USE_SHELLY_PLUS_1PM_INTERMEDIATE = false
133+
USE_ESPHOME_INTERMEDIATE = false
133134
USE_SHRDZM_INTERMEDIATE = false
134135
USE_EMLOG_INTERMEDIATE = false
135136
USE_IOBROKER_INTERMEDIATE = false
@@ -154,6 +155,12 @@ SHELLY_IP_INTERMEDIATE = xxx.xxx.xxx.xxx
154155
SHELLY_USER_INTERMEDIATE =
155156
SHELLY_PASS_INTERMEDIATE =
156157

158+
[INTERMEDIATE_ESPHOME]
159+
ESPHOME_IP_INTERMEDIATE = xxx.xxx.xxx.xxx
160+
ESPHOME_PORT_INTERMEDIATE = 80
161+
ESPHOME_DOMAIN_INTERMEDIATE =
162+
ESPHOME_ID_INTERMEDIATE =
163+
157164
[INTERMEDIATE_SHRDZM]
158165
# --- defines for SHRDZM Smartmeter Modul ---
159166
SHRDZM_IP_INTERMEDIATE = xxx.xxx.xxx.xxx

0 commit comments

Comments
 (0)