Skip to content

Commit

Permalink
only publish homeassistant autoconfig once
Browse files Browse the repository at this point in the history
  • Loading branch information
gluap committed Jun 12, 2020
1 parent 251539e commit 8e091fe
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 17 deletions.
3 changes: 3 additions & 0 deletions README.rst
Expand Up @@ -245,6 +245,9 @@ be accessed via the EnerVu App.

Changelog
=========
**2020-06-12 0.1.12**
- Only publish homeassistant autoconfig information once

**2020-06-01 0.1.11**
- for cleaner restarts pass exceptions out and set up the full communication freshly when MQTT or ess crashes

Expand Down
2 changes: 1 addition & 1 deletion pyess/__init__.py
Expand Up @@ -3,4 +3,4 @@

#__all__ = ['cli', 'ess']

__version__ ="0.1.11"
__version__ ="0.1.12"
28 changes: 12 additions & 16 deletions pyess/essmqtt.py
Expand Up @@ -83,23 +83,19 @@ def prepare_description(sensor):
return description


async def announce_loop(client, once=False, sensors=None):
async def announce_loop(client, sensors=None):
if sensors is None:
return
while True:
for sensor in sensors:
try:
await client.publish(f"homeassistant/sensor/{sensor.replace('/', '')}/config",
json.dumps(prepare_description(sensor)))
except (asyncio_mqtt.error.MqttCodeError, TimeoutError): # pragma: no cover
logger.warning("Lost MQTT connection to mqtt errorcode in announce loop, send loop will exit")
except: # pragma: no cover
logger.exception(f"Lost MQTT connection to unexpected error code, restarting", exc_info=True)
raise
if not once:
await asyncio.sleep(120)
else:
return

for sensor in sensors:
try:
await client.publish(f"homeassistant/sensor/{sensor.replace('/', '')}/config",
json.dumps(prepare_description(sensor)), retain=True, qos=2)
except (asyncio_mqtt.error.MqttCodeError, TimeoutError): # pragma: no cover
logger.warning("Lost MQTT connection to mqtt errorcode in announce loop, send loop will exit")
except: # pragma: no cover
logger.exception(f"Lost MQTT connection to unexpected error code, restarting", exc_info=True)
raise


def main(arguments=None):
Expand Down Expand Up @@ -210,7 +206,7 @@ async def launch_main_loop(args, ess, handle_control, switch_active, switch_fast
asyncio.create_task(handle_control(client, switch_active, "ess/control/active"))
if args.hass_autoconfig_sensors is not None:
asyncio.ensure_future(
announce_loop(client, once=args.once, sensors=args.hass_autoconfig_sensors.split(",")))
announce_loop(client, sensors=args.hass_autoconfig_sensors.split(",")))

await send_loop(ess, client, once=args.once, interval_seconds=args.interval_seconds,
common_divisor=args.common_divisor)
Expand Down

0 comments on commit 8e091fe

Please sign in to comment.