NickWaterton / Roomba980-Python

Python program and library to control iRobot Roomba 980 Vacuum Cleaner
MIT License
361 stars 103 forks source link

It seems that .split(',') is missing to support GET call with multiple regions #104

Open SerhiiAksiutin opened 2 years ago

SerhiiAksiutin commented 2 years ago

Example: GET /api/local/action/cleanRoom?pmap_id=DXXXXXXXXXXXXXXXQ&regions=18,23

Expected: for region in command.get('regions', []).split(','): Logs:

[2022-02-07 04:02:58,955][ INFO](Roomba.M6 Jet.api   ) received: {'command': 'start', 'pmap_id': 'DXXXXXXXXXXXXXXXQ', 'regions': '18,23'}
[2022-02-07 04:02:58,956][ INFO](Roomba.M6 Jet       ) pmaps: [{'DXXXXXXXXXXXXXXXQ': '2XXXXXXXXXXX3'}]
[2022-02-07 04:02:58,957][ INFO](Roomba.M6 Jet       ) region: 18
[2022-02-07 04:02:58,958][ INFO](Roomba.M6 Jet       ) command.get('regions', []).split(",")): ['18', '23']
[2022-02-07 04:02:58,959][ INFO](Roomba.M6 Jet       ) type of command.get('regions', []).split(',')): <class 'list'>
[2022-02-07 04:02:58,962][ INFO](Roomba.M6 Jet       ) region: 23
[2022-02-07 04:02:58,967][ INFO](Roomba.M6 Jet       ) myCommand: {'command': 'start', 'ordered': 1, 'pmap_id': 'DXXXXXXXXXXXXXXXQ', 'regions': [{'region_id': '18', 'type': 'rid'}, {'region_id': '23', 'type': 'rid'}], 'user_pmapv_id': '2XXXXXXXXXXX3'}

Actual: https://github.com/NickWaterton/Roomba980-Python/blob/9759a13a6f4ee2526e30995cf134b5bfe0649d09/roomba/roomba.py#L899 Logs:

[2022-02-07 04:20:18,292][ INFO](Roomba.M6 Jet.api   ) received: {'command': 'start', 'pmap_id': 'DXXXXXXXXXXXXXXXQ', 'regions': '18,23'}
[2022-02-07 04:20:18,293][ INFO](Roomba.M6 Jet       ) pmaps: [{'DXXXXXXXXXXXXXXXQ': '2XXXXXXXXXXX3'}]
[2022-02-07 04:20:18,293][ INFO](Roomba.M6 Jet       ) region: 1
[2022-02-07 04:20:18,293][ INFO](Roomba.M6 Jet       ) command.get('regions', []) is 18,23
[2022-02-07 04:20:18,294][ INFO](Roomba.M6 Jet       ) type of command.get('regions', []) is <class 'str'>
[2022-02-07 04:20:18,295][ INFO](Roomba.M6 Jet       ) region: 8
[2022-02-07 04:20:18,296][ INFO](Roomba.M6 Jet       ) command.get('regions', []) is 18,23
[2022-02-07 04:20:18,297][ INFO](Roomba.M6 Jet       ) type of command.get('regions', []) is <class 'str'>
[2022-02-07 04:20:18,300][ INFO](Roomba.M6 Jet       ) region: ,
[2022-02-07 04:20:18,300][ INFO](Roomba.M6 Jet       ) command.get('regions', []) is 18,23
[2022-02-07 04:20:18,301][ INFO](Roomba.M6 Jet       ) type of command.get('regions', []).split())) is <class 'str'>
[2022-02-07 04:20:18,301][ INFO](Roomba.M6 Jet       ) region: 2
[2022-02-07 04:20:18,302][ INFO](Roomba.M6 Jet       ) command.get('regions', []) is 18,23
[2022-02-07 04:20:18,303][ INFO](Roomba.M6 Jet       ) type of command.get('regions', []) is <class 'str'>
[2022-02-07 04:20:18,305][ INFO](Roomba.M6 Jet       ) region: 3
[2022-02-07 04:20:18,306][ INFO](Roomba.M6 Jet       ) command.get('regions', []) is 18,23
[2022-02-07 04:20:18,307][ INFO](Roomba.M6 Jet       ) type of command.get('regions', []) is <class 'str'>
[2022-02-07 04:20:18,309][ INFO](Roomba.M6 Jet       ) myCommand is {'command': 'start', 'ordered': 1, 'pmap_id': 'DXXXXXXXXXXXXXXXQ', 'regions': [{'region_id': '1', 'type': 'rid'}, {'region_id': '8', 'type': 'rid'}, {'region_id': '2', 'type': 'rid'}, {'region_id': '3', 'type': 'rid'}], 'user_pmapv_id': '2XXXXXXXXXXX3'}