Rollease Acmeda Automate Pulse hub integration

  1. I have two hubs, both v1. My scenes include rollers from both hubs.
  2. I have eleven scenes. Two screen shots attached.
  3. I am using the demo app to get these results.

Thanks for your help

Thanks @gregbm, I’ve just checked-in a new version to my fork that should be more tolerant to unexpected response formats and will provide better exception information. Would you mind giving it a go?

Also, I should point out that the Home Assistant integration isn’t making use of Rooms or Scenes. I’d be interested in knowing if people would find that useful somehow.

Output attached

I personally don’t care about rooms or scenes

@gregbm, that’s the conclusion I came to, home-assistand only needs the blinds from my perspective.
Would you mind using https://pastebin.com/ or similar to share the output so I don’t have to re-type the message :wink:
Also, after connecting, do you get the correct list of blinds when you issue the “list” command and have you tried moving the blinds from the demo?

Awesome work.

I finally got it working from your fork. I get all the covers and even battery sensors.
The only problem I can only close the blinds, up is greyed.
I dont think we need scenes or rooms, all that can be done through home assistant anyways.

Until the integration is available in the main Home Assistant release, I’ve posted information on how to add it as a custom integration here:

This works for the hass.io appliance too.

@stavroz, great to hear it works! Sorry that it was a bit painful, hopefully the instructions on how to add it as a custom-component will help others. As per how home-assistant works with “covers”, up/down will be greyed out if it thinks the blind is fully opened/closed - is that the case?

No, it seems to think they are all open, so they will close ok. Also, if i use the slider they will just close all the way.

That’s strange, so despite setting a closed amount it always closes to 100%?

Thats correct. Not sure but mine were never setup to be able to close half way though. Maybe thats the issue?

Oh really? So in the app they’re either completely open or completely closed?

yes, thats correct. although there is a 50% button that doesnt work…

@stavroz, do your blinds have physical limit switches by any chance? The ones I have don’t but instead you have to calibrate the top and bottom position. It could be that the blind information returned by the hub does reveal the capabilities of the blind somehow.

Out of interest, what is the “Type” of the blind returned by the demo app “list” command? Here is mind:

Hub 1: Name: VNUGIESUNR
Roller 1: Name: Blind 1 ID: xxxxx Serial: 562002 Room: All Blinds Type: 3 Closed %: 44 Battery %: 100 Flags: 10110100
Roller 2: Name: Blind 2 ID: xxxxx Serial: 562001 Room: All Blinds Type: 3 Closed %: 0 Battery %: 100 Flags: 10110100
Roller 3: Name: Blind 3 ID: xxxxx Serial: 562002 Room: All Blinds Type: 3 Closed %: 0 Battery %: 100 Flags: 00000000
Roller 4: Name: Blind 4 ID: xxxxx Serial: 562003 Room: All Blinds Type: 3 Closed %: 100 Battery %: 100 Flags: 10110100
Room Name: All Blinds ID: 73B2 Icon: 1
Room Name: ROOM ID: D1B6 Icon: 6
Scene Name: Outer closed ID: E12A Icon: 0
Scene Name: Right door open ID: 73FD Icon: 0
Scene Name: Left door open ID: 71E3 Icon: 0
Scene Name: Sunset ID: 2C91 Icon: 6
Scene Name: SCENE test blah ID: 0FE9 Icon: 0
Scene Name: SCENE ID: D46D Icon: 0

OK, now I get:

2020-04-18 07:11:47 ERROR (MainThread) [root] 192.168.1.167: Exception raised when parsing response: b'00000003c10100009106536d6172745f4964315f793aaf000101050000000000000010000100050002080062643731a9e14a300f000100010e00030044656e0002080062643731447442cd0f000100060e0007004b69746368656e0002080062643731e1f8c4d40f000100030e000b0044696e696e6720526f6f6d0002080062643731ddada4000f000100010e0010004c6976696e6720526f6f6d204465636b00020800626437315f9d101d0f000100010e0010004c6976696e6720526f6f6d2045617374ff21'
Traceback (most recent call last):
  File "/usr/local/lib/python3.7/site-packages/aiopulse/hub.py", line 503, in response_parse
    Hub.respmap[mtype].execute(self, message)
  File "/usr/local/lib/python3.7/site-packages/aiopulse/hub.py", line 400, in execute
    self.function(target, message)
  File "/usr/local/lib/python3.7/site-packages/aiopulse/hub.py", line 441, in rec_message
    self.msgmap[mtype].execute(self, message[ptr:])
  File "/usr/local/lib/python3.7/site-packages/aiopulse/hub.py", line 400, in execute
    self.function(target, message)
  File "/usr/local/lib/python3.7/site-packages/aiopulse/hub.py", line 250, in response_roomlist
    room_id, ptr = utils.unpack_string(message, ptr)
  File "/usr/local/lib/python3.7/site-packages/aiopulse/utils.py", line 28, in unpack_string
    str_new.decode("utf-8"),
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa9 in position 4: invalid start byte
2020-04-18 07:11:48 WARNING (MainThread) [aiopulse.hub] 192.168.1.167: Received unknown response type: b'05000091', trying to decode anyway. Message: b'06536d6172745f4964315f793a9a02210106000000000000001000010009010106002e96c87200010002080062643731a9e14a300f000100040e00090044656e205368616465020102003102780206003030313030310301010010040103005f2703010106001ec29e5200010002080062643731447442cd0f000100040e000d004b69746368656e205368616465020102003102780206003030313030320301010010040103005f270301010600a440349300010002080062643731e1f8c4d40f000100040e000d0044696e696e6720526f6f6d2031020102003102780206003030313030330301010010040103005f270301010600a471f32e00010002080062643731e1f8c4d40f000100040e000d0044696e696e6720526f6f6d2032020102003102780206003030313030370301010010040103005f2703010106002dfb7e7000010002080062643731e1f8c4d40f000100040e000d0044696e696e6720526f6f6d2033020102003102780206003030313030340301010010040103005f2703010106000c100e1b00010002080062643731ddada4000f000100040e0010004c6976696e6720526f6f6d204465636b020102003102780206003030313030350301010010040103005f270301010600d6d4303f000100020800626437315f9d101d0f000100040e0010004c6976696e6720526f6f6d2045617374020102003102780206003030313030360301010010040103005f27030101060031e1ccac000100020800626437315f9d101d0f000100040e0010004c6976696e6720526f6f6d2045617374020102000102780206003030313030380301010010040103005f270301010600b541646d00010002080062643731a9e14a300f000100040e00090044656e205368616465020102000102780206003030313030390301010010040103005f2703ff2a'
2020-04-18 07:11:48 ERROR (MainThread) [root] 192.168.1.167: Exception raised when parsing response: b'00000003ac0500009106536d6172745f4964315f793a9a02210106000000000000001000010009010106002e96c87200010002080062643731a9e14a300f000100040e00090044656e205368616465020102003102780206003030313030310301010010040103005f2703010106001ec29e5200010002080062643731447442cd0f000100040e000d004b69746368656e205368616465020102003102780206003030313030320301010010040103005f270301010600a440349300010002080062643731e1f8c4d40f000100040e000d0044696e696e6720526f6f6d2031020102003102780206003030313030330301010010040103005f270301010600a471f32e00010002080062643731e1f8c4d40f000100040e000d0044696e696e6720526f6f6d2032020102003102780206003030313030370301010010040103005f2703010106002dfb7e7000010002080062643731e1f8c4d40f000100040e000d0044696e696e6720526f6f6d2033020102003102780206003030313030340301010010040103005f2703010106000c100e1b00010002080062643731ddada4000f000100040e0010004c6976696e6720526f6f6d204465636b020102003102780206003030313030350301010010040103005f270301010600d6d4303f000100020800626437315f9d101d0f000100040e0010004c6976696e6720526f6f6d2045617374020102003102780206003030313030360301010010040103005f27030101060031e1ccac000100020800626437315f9d101d0f000100040e0010004c6976696e6720526f6f6d2045617374020102000102780206003030313030380301010010040103005f270301010600b541646d00010002080062643731a9e14a300f000100040e00090044656e205368616465020102000102780206003030313030390301010010040103005f2703ff2a'
Traceback (most recent call last):
  File "/usr/local/lib/python3.7/site-packages/aiopulse/hub.py", line 510, in response_parse
    self.rec_message(message)
  File "/usr/local/lib/python3.7/site-packages/aiopulse/hub.py", line 441, in rec_message
    self.msgmap[mtype].execute(self, message[ptr:])
  File "/usr/local/lib/python3.7/site-packages/aiopulse/hub.py", line 400, in execute
    self.function(target, message)
  File "/usr/local/lib/python3.7/site-packages/aiopulse/hub.py", line 329, in response_rollerlist
    room_id, ptr = utils.unpack_string(message, ptr)
  File "/usr/local/lib/python3.7/site-packages/aiopulse/utils.py", line 28, in unpack_string
    str_new.decode("utf-8"),
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa9 in position 4: invalid start byte
2020-04-18 07:11:48 WARNING (MainThread) [aiopulse.hub] 192.168.1.167: Received unknown response type: b'71000091', trying to decode anyway. Message: b'06536d6172745f4964315f793a5f0033010a0000000000000010000100021002080062643731606b26610f000100020e0007004d6f726e696e671302010007520202006f941002080062643731a21d8b8a0f000100010e0007004576656e696e671302010007520202006f94ffe5'
2020-04-18 07:11:48 ERROR (MainThread) [root] 192.168.1.167: Exception raised when parsing response: b'000000037100009106536d6172745f4964315f793a5f0033010a0000000000000010000100021002080062643731606b26610f000100020e0007004d6f726e696e671302010007520202006f941002080062643731a21d8b8a0f000100010e0007004576656e696e671302010007520202006f94ffe5'
Traceback (most recent call last):
  File "/usr/local/lib/python3.7/site-packages/aiopulse/hub.py", line 510, in response_parse
    self.rec_message(message)
  File "/usr/local/lib/python3.7/site-packages/aiopulse/hub.py", line 441, in rec_message
    self.msgmap[mtype].execute(self, message[ptr:])
  File "/usr/local/lib/python3.7/site-packages/aiopulse/hub.py", line 400, in execute
    self.function(target, message)
  File "/usr/local/lib/python3.7/site-packages/aiopulse/hub.py", line 266, in response_scenelist
    scene_id, ptr = utils.unpack_string(message, ptr)
  File "/usr/local/lib/python3.7/site-packages/aiopulse/utils.py", line 28, in unpack_string
    str_new.decode("utf-8"),
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa2 in position 4: invalid start byte

I now worked out how to set the ‘favourite’, also upper and lower limits on my blind with the remote. ‘UP’ is still greyed.

I dont know if I can run the demo app. Im running home assistant in a docker.

Interesting to see the hub is lit blue meaning it has a permanent connection to HA…

Weird things happen when i try to use the app.

i have this in the logs.

2020-04-18 11:19:48 WARNING (MainThread) [aiopulse.hub] 192.168.1.18: Handshake failed
2020-04-18 11:19:55 WARNING (MainThread) [aiopulse.hub] 192.168.1.18: Received unknown response type: b’06000091’, trying to decode anyway. Message: b’06536d6172745f4964315f793a…

@fantangelo, thanks for the dump - I’ve worked it out. The room/scene/roller ID’s are not stings so I’ve changed how they’re parsed. I’ve just committed an update to the aiopulse API if you can give the demo one more go. If this works for you I’ll update the Home Assistant integration.

@stavroz, can you run the demo on another machine and provide the debug dumps? Any OS with python 3 should be fine.

I have re-run the following in hass.io terminal and then tried to re-add the integration but I still get the same error.

curl https://codeload.github.com/atmurray/home-assistant/tar.gz/acmeda | tar -xz --strip=3 home-assistant-acmeda/homeassistant/components/acmeda

Not sure how to run the aiopulse demo?
thanks

@atmurray I have run the new demo file. See output below.
The app nows exits after the third roller (there are nine on the hub).

$ python3 demo.py

discover
Starting hub discovery
DEBUG:aiopulse.transport:Connection established
DEBUG:aiopulse.transport:UDP datagram received
INFO:aiopulse.hub:192.168.0.8: Discovered hub on port 12414
DEBUG:aiopulse.transport:UDP datagram received
DEBUG:aiopulse.transport:Connection established
INFO:aiopulse.hub:192.168.0.8: Handshake complete
DEBUG:aiopulse.hub:192.168.0.8: Disconnecting
DEBUG:aiopulse.transport:Socket closed
DEBUG:aiopulse.transport:192.168.0.8: TCP buffer cleared.
DEBUG:aiopulse.transport:192.168.0.8: TCP connection closed.
INFO:aiopulse.hub:192.168.0.8: Disconnected
Hub added to prompt
INFO:aiopulse.hub:192.168.0.43: Discovered hub on port 12414
DEBUG:aiopulse.transport:Connection established
INFO:aiopulse.hub:192.168.0.43: Handshake complete
DEBUG:aiopulse.hub:192.168.0.43: Disconnecting
DEBUG:aiopulse.transport:Socket closed
DEBUG:aiopulse.transport:192.168.0.43: TCP buffer cleared.
DEBUG:aiopulse.transport:192.168.0.43: TCP connection closed.
INFO:aiopulse.hub:192.168.0.43: Disconnected
Hub added to prompt
INFO:aiopulse.hub:Discovery complete
DEBUG:aiopulse.transport:UDP connection closed
DEBUG:aiopulse.transport:Socket closed
connect
INFO:aiopulse.hub:192.168.0.8: Connecting
INFO:aiopulse.hub:192.168.0.43: Connecting
DEBUG:aiopulse.transport:Connection established
INFO:aiopulse.hub:192.168.0.8: Handshake complete
DEBUG:aiopulse.hub:192.168.0.8: Hub update command sent
DEBUG:aiopulse.hub:192.168.0.8: Starting response parser
DEBUG:aiopulse.transport:Connection established
WARNING:aiopulse.hub:192.168.0.8: Received unknown response type: b’61000091’, trying to decode anyway. Message: b’06536d6172745f4964315f793a4f001600030000000000000053020800303030303030333954020800303430323030313355020800303048464c50423156020c0046304645364235454342384157020b0031
39322e3136382e302e38ff2b’
INFO:aiopulse.hub:192.168.0.8: Parsing hub info
DEBUG:aiopulse.hub:192.168.0.8: Received response: b’03000091’ acknowledge content: b’’
DEBUG:aiopulse.hub:192.168.0.8: Received response: b’01000091’ scene list content: b’\x06Smart_Id1_y:\xaf\x00\x01\x01\x05\x00\x00\x00\x00\x00\x00\x00\x10\x00\x01\x00\x06\x00\x02\x08\x008CA6\x04\x0c7(\x0f\x00\x01\x00\x05\x0e\x00\x05\x00Seven\x00\x02\x08\x007265\x04\r\x02\x11\x0f
x00\x01\x00\x01\x0e\x00\x05\x00Three\x00\x02\x08\x0096EA\x04\r\x07\x1b\x0f\x00\x01\x00\x03\x0e\x00\x07\x00Bedroom\x00\x02\x08\x006FD2\x06\x0c*\r\x0f\x00\x01\x00\n\x0e\x00\x05\x00South\x00\x02\x08\x006063\x06\x0c,\x0f\x0f\x00\x01\x00\x06\x0e\x00\x04\x00East\x00\x02\x08\x00E044\t
x10)\x0e\x0f\x00\x01\x00\x0b\x0e\x00\x06\x00Office\xff\x03’
INFO:aiopulse.hub:192.168.0.8: Parsing room list
Hub updated
INFO:aiopulse.hub:192.168.0.43: Handshake completeDEBUG:aiopulse.hub:192.168.0.43: Hub update command sentDEBUG:aiopulse.hub:192.168.0.43: Starting response parser
DEBUG:aiopulse.hub:192.168.0.8: Received response: b’04000091’ 04000091 content: b’\x06Smart_Id1_y:c\x02!\x01\x06\x00\x00\x00\x00\x00\x00\x00\x10\x00\x01\x00\t\x01\x01\x06\x00e7\xdfJ\x00\x01\x00\x02\x08\x006063\x06\x0c,\x0f\x0f\x00\x01\x00\x04\x0e\x00\x07\x00SHADE 1\x02\x01\x02
x001\x02x\x02\x06\x00534001\x03\x01\x01\x00\x19\x04\x01\x03\x00\x03\x14\x00\x01\x01\x06\x00X6\xcc\xf8\x00\x01\x00\x02\x08\x006063\x06\x0c,\x0f\x0f\x00\x01\x00\x04\x0e\x00\x07\x00SHADE 2\x02\x01\x02\x001\x02x\x02\x06\x00534002\x03\x01\x01\x00\x19\x04\x01\x03\x00\x03\x14\x00\x01\x
01\x06\x00\x9e\x05\x8a}\x00\x01\x00\x02\x08\x007265\x04\r\x02\x11\x0f\x00\x01\x00\x04\x0e\x00\x07\x00SHADE 3\x02\x01\x02\x001\x02x\x02\x06\x00534003\x03\x01\x01\x00\x19\x04\x01\x03\x00\x03\x11\xb4\x01\x01\x06\x00\xe1\xe23\x07\x00\x01\x00\x02\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x00\x01\x00\x04\x0e\x00\x07\x00SHADE 4\x02\x01\x02\x001\x02x\x02\x06\x00534004\x03\x01\x01\x00\x19\x04\x01\x03\x00\x03\x0f\x00\x01\x01\x06\x00\x17\xb5\x06\t\x00\x01\x00\x02\x08\x006FD2\x06\x0c*\r\x0f\x00\x01\x00\x04\x0e\x00\x07\x00SHADE 5\x02\x01\x02\x001\x02x\x02\x06\x00534005\x03\x01\x01\x00\x19\x04\x01\x03\x00\x03\x0f\xb4\x01\x01\x06\x00\x18,8\x04\x00\x01\x00\x02\x08\x006FD2\x06\x0c*\r\x0f\x00\x01\x00\x04\x0e\x00\x07\x00SHADE 6\x02\x01\x02\x001\x02x\x02\x06\x00534006\x03\x01\x01\x00\x19\x04\x01\x03\x00\x03\x0f\x00\x01\x01\x06\x00\xfb\xd9&\x1b
\x00\x01\x00\x02\x08\x008CA6\x04\x0c7(\x0f\x00\x01\x00\x04\x0e\x00\x07\x00SHADE 7\x02\x01\x02\x001\x02x\x02\x06\x00534007\x03\x01\x01\x00\x19\x04\x01\x03\x00\x03\x0f\xb4\x01\x01\x06\x00k\xb4\xa5u\x00\x01\x00\x02\x08\x006FD2\x06\x0c*\r\x0f\x00\x01\x00\x04\x0e\x00\x07\x00SHADE 8\x02\x01\x02\x001\x02x\x02\x06\x00534008\x03\x01\x01\x00\x19\x04\x01\x03\x00\x03\x0f\x00\x01\x01\x06\x00\xa2\xc1;*\x00\x01\x00\x02\x08\x0096EA\x04\r\x07\x1b\x0f\x00\x01\x00\x04\x0e\x00\x07\x00SHADE 0\x02\x01\x02\x001\x02x\x02\x06\x00534009\x03\x01\x01\x00\x19\x04\x01\x03\x00\x03\x14\x00\xff\xcd’INFO:aiopulse.hub:192.168.0.8: Parsing roller listHub updatedDEBUG:aiopulse.hub:192.168.0.43: Received response: b’62000091’ 62000091 content: b’\x06Smart_Id1_y:P\x00\x16\x00\x03\x00\x00\x00\x00\x00\x00\x00S\x02\x08\x0000000039T\x02\x08\x0004020013U\x02\x08\x0000HFLPB1V\x02\x0c\x00F0FE6B3E40B4W\x02\x0c\x00192.168.0.43\xff5’INFO:aiopulse.hub:192.168.0.43: Parsing hub infoDEBUG:aiopulse.hub:192.168.0.43: Received response: b’03000091’ acknowledge content: b’‘DEBUG:aiopulse.hub:192.168.0.43: Received response: b’57000091’ roller name change content: b’\x06Smart_Id1_y:E\x00\x01\x01\x05\x00\x00\x00\x00\x00\x00\x00\x10\x00\x01\x00\x02\x00\x02\x08\x00E044\t\x10)\x0e\x0f\x00\x01\x00\x0b\x0e\x00\x06\x00Office\x00\x02\x08\x006063\x06\x0c,\x0f\x0f\x00\x01\x00\x06\x0e\x00\x04\x00East\xff\xa6’INFO:aiopulse.hub:192.168.0.43: Parsing room listHub updatedDEBUG:aiopulse.hub:192.168.0.43: Received response: b’65000091’ timer list content: b’\x06Smart_Id1_y:S\x00!\x01\x06\x00\x00\x00\x00\x00\x00\x00\x10\x00\x01\x00\x01\x01\x01\x06\x00ss\xf1Q\x00\x01\x00\x02\x08\x00E044\t\x10)\x0e\x0f\x00\x01\x00\x04\x0e\x00\x07\x00SHADE 9\x02\x01\x02\x001\x02x\x02\x06\x00779001\x03\x01\x01\x00\x19\x04\x01\x03\x00\x03\x18\xb4\xffm’INFO:aiopulse.hub:192.168.0.43: Parsing roller list
Hub updated
DEBUG:aiopulse.hub:192.168.0.8: Received response: b’03000091’ acknowledge content: b’\x06Smart_Id1_y:\xca\x013\x01\n\x00\x00\x00\x00\x00\x00\x00\x10\x00\x01\x00\n\x10\x02\x08\x00477C\x14\t)\x0e\x0f\x00\x01\x00\x02\x0e\x00\t\x00East Open\x13\x02\x01\x00\x04R\x02\x02\x001]\x10\x02\x08\x0068BB\x14\t,\x15\x0f\x00\x01\x00\x02\x0e\x00\n\x00South Open\x13\x02\x01\x00\x04R\x02\x02\x001]\x10\x02\x08\x004CC5\x19\x0e!\x03\x0f\x00\x01\x00\x02\x0e\x00\x0c\x00Office Opens\x13\x02\x01\x00\x00R\x02\x02\x001]R\x02\x02\x00h\x13\x10\x02\x08\x0023AB\x19\x0e!“\x0f\x00\x01\x00\x00\x0e\x00\r\x00Office Closes\x13\x02\x01\x00\x00R\x02\x02\x001]R\x02\x02\x00h\x13\x10\x02\x08\x00B71C\x1b\x0b\x06#\x0f\x00\x01\x00\x02\x0e\x00\n\x00Three Open\x13\x02\x01\x00\x01R\x02\x02\x001]\x10\x02\x08\x008922\x1c\x0e\x13,\x0f\x00\x01\x00\x02\x0e\x00\t\x00Four Open\x13\x02\x01\x00\x01R\x02\x02\x001]\x10\x02\x08\x0018D2\x1c\x0e\x16\x11\x0f\x00\x01\x00\x02\x0e\x00\n\x00Seven Open\x13\x02\x01\x00\x01R\x02\x02\x001]\x10\x02\x08\x00604D\x1e\x0f\x0e0\x0f\x00\x01\x00\x02\x0e\x00\n\x00Eight Open\x13\x02\x01\x00\x01R\x02\x02\x001]\x10\x02\x08\x00BD62\x0f\t\x10”\x0f\x00\x01\x00\x00\x0e\x00\x0b\x00Eight Close\x13\x02\x01\x00\x01R\x02\x02\x001]\x10\x02\x08\x002654\t\r$\x0b\x0f\x00\x01\x00\x04\x0e\x00\t\x00Not Sunny\x13\x02\x01\x00\x05R\x02\x02\x001]R\x02\x02\x00h\x13\xff\xad’
INFO:aiopulse.hub:192.168.0.8: Parsing scene list
Hub updated
WARNING:aiopulse.hub:192.168.0.8: Received unknown response type: b’4e000091’, trying to decode anyway. Message: b’06536d6172745f4964315f793a3c0033010b0000000000000010000100011002080046373632091034280f000100000e000b004561737420436c6f736573130201000452020200315dff01’
INFO:aiopulse.hub:192.168.0.8: Parsing scene list
Hub updated
DEBUG:aiopulse.hub:192.168.0.43: Received response: b’01000091’ scene list content: b’\x06Smart_Id1_y:\xa5\x003\x01\n\x00\x00\x00\x00\x00\x00\x00\x10\x00\x01\x00\x03\x10\x02\x08\x0023AB\x19\x0e!“\x0f\x00\x01\x00\x00\x0e\x00\r\x00Office Closes\x13\x02\x01\x00\x01R\x02\x02\x001]R\x02\x02\x00h\x13\x10\x02\x08\x004CC5\x19\x0e!\x03\x0f\x00\x01\x00\x02\x0e\x00\x0c\x00Office Opens\x13\x02\x01\x00\x01R\x02\x02\x001]R\x02\x02\x00h\x13\x10\x02\x08\x002654\t\r$\x0b\x0f\x00\x01\x00\x04\x0e\x00\t\x00Not Sunny\x13\x02\x01\x00\x00R\x02\x02\x001]R\x02\x02\x00h\x13\xff\xda’
INFO:aiopulse.hub:192.168.0.43: Parsing scene list
Hub updated
WARNING:aiopulse.hub:192.168.0.8: Received unknown response type: b’76000091’, trying to decode anyway. Message: b’06536d6172745f4964315f793a640041010f00000000000000100001000120020800344643451408382e0f000100030e0016004f666669636520636c6f736573206174206e6967687421020100013b020100153c02010037220204007f0000003d020100001002080032334142190e2122ffac’
INFO:aiopulse.hub:192.168.0.8: Parsing timer list
WARNING:aiopulse.hub:192.168.0.43: Received unknown response type: b’76000091’, trying to decode anyway. Message: b’06536d6172745f4964315f793a640041010f00000000000000100001000120020800344643451408382e0f000100030e0016004f666669636520636c6f736573206174206e6967687421020100013b020100153c02010037220204007f0000003d020100001002080032334142190e2122ffac’
INFO:aiopulse.hub:192.168.0.43: Parsing timer list
DEBUG:aiopulse.hub:192.168.0.43: Received response: b’03000016’ ping content: b’’
DEBUG:aiopulse.hub:192.168.0.43: Received hub ping response
DEBUG:aiopulse.hub:192.168.0.8: Received response: b’03000016’ ping content: b’’
DEBUG:aiopulse.hub:192.168.0.8: Received hub ping response
list
Listing hubs…
Hub 1: Name: WXSPONEFLS
Roller 1: Name: SHADE 1 ID: 1100767770469 Serial: 534001 Room: East Type: 4 Closed %: 20 Battery %: 100 Flags: 00000000
Roller 2: Name: SHADE 2 ID: 1103685760600 Serial: 534002 Room: East Type: 4 Closed %: 20 Battery %: 100 Flags: 00000000
Roller 3: Name: SHADE 3 ID: 1101617825182 Serial: 534003 Room: Three Type: 4 Closed %: 17 Battery %: 100 Flags: 10110100
ERROR:asyncio:Future exception was never retrieved
future: <Future finished exception=AttributeError(”‘NoneType’ object has no attribute ‘name’")>
Traceback (most recent call last):
File “/usr/lib/python3.8/concurrent/futures/thread.py”, line 57, in run
result = self.fn(*self.args, **self.kwargs)
File “/usr/lib/python3.8/cmd.py”, line 138, in cmdloop
stop = self.onecmd(line)
File “/usr/lib/python3.8/cmd.py”, line 217, in onecmd
return func(arg)
File “demo.py”, line 114, in do_list
print(“Roller {}: {}”.format(rid, roller))
File “/config/custom_components/aiopulse/elements.py”, line 34, in str
self.room.name,
AttributeError: ‘NoneType’ object has no attribute ‘name’
custom_components $
*1 [bash] Sat 04-18 10:42

ok, I have installed and run the demo program. There are no errors and it discovers the hub but not the devices.

➜  aiopulse python3 demo.py
> discover
Starting hub discovery
> DEBUG:aiopulse.transport:Connection established
DEBUG:aiopulse.transport:UDP datagram received
INFO:aiopulse.hub:192.168.1.167: Discovered hub on port 12414
DEBUG:aiopulse.transport:Connection established
INFO:aiopulse.hub:192.168.1.167: Handshake complete
DEBUG:aiopulse.hub:192.168.1.167: Disconnecting
DEBUG:aiopulse.transport:Socket closed
DEBUG:aiopulse.transport:192.168.1.167: TCP buffer cleared.
DEBUG:aiopulse.transport:192.168.1.167: TCP connection closed.
INFO:aiopulse.hub:192.168.1.167: Disconnected
Hub added to prompt
INFO:aiopulse.hub:Discovery complete
DEBUG:aiopulse.transport:UDP connection closed
DEBUG:aiopulse.transport:Socket closed
list
Listing hubs...
Hub 1: Name: QCNMNHJYHW
> Traceback (most recent call last):
  File "demo.py", line 189, in <module>
    asyncio.run(main())
  File "/usr/lib/python3.8/asyncio/runners.py", line 43, in run
    return loop.run_until_complete(main)
  File "/usr/lib/python3.8/asyncio/base_events.py", line 603, in run_until_complete
    self.run_forever()
  File "/usr/lib/python3.8/asyncio/base_events.py", line 570, in run_forever
    self._run_once()
  File "/usr/lib/python3.8/asyncio/base_events.py", line 1823, in _run_once
    event_list = self._selector.select(timeout)
  File "/usr/lib/python3.8/selectors.py", line 468, in select
    fd_event_list = self._selector.poll(timeout, max_ev)
KeyboardInterrupt
Error in atexit._run_exitfuncs:
Traceback (most recent call last):
  File "/usr/lib/python3.8/concurrent/futures/thread.py", line 40, in _python_exit
    t.join()
  File "/usr/lib/python3.8/threading.py", line 1011, in join
    self._wait_for_tstate_lock()
  File "/usr/lib/python3.8/threading.py", line 1027, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt

@fantangelo you need to use the “connect” command to discover the blinds