@@ -27,6 +27,7 @@ def __init__(self, mac, ip, port=49476):
2727 self ._mac = mac
2828 self ._listener = PlugListener (ip , port )
2929 self ._listener .subscribe ('message' , self ._on_message )
30+ self ._listener .subscribe ('exception' , self ._on_exception )
3031 self ._seen = set ()
3132
3233 def connect (self ):
@@ -43,6 +44,10 @@ async def disconnect(self):
4344 await self ._listener .disconnect ()
4445
4546 async def _on_message (self , _ , message ):
47+ """Translates the raw message and emits the resulting messages, if any.
48+
49+ Also synthesises 'now_relaying_for' messages as needed.
50+ """
4651 evs = None
4752 try :
4853 evs = translate_raw_message (message , self ._mac )
@@ -64,5 +69,6 @@ async def _on_message(self, _, message):
6469 for name , ev in evs .items ():
6570 await self .emit (name , ev )
6671
67- # FIXME - we'll want to use mac:role for the unique ID in HA, so a reassigned
68- # sensor shows up differently
72+ async def _on_exception (self , _ , e ):
73+ """Propagates exceptions from the plug listener."""
74+ await self .emit ('exception' , e )
0 commit comments